package org.openintents.filemanager.search;
import java.io.File;
import org.openintents.intents.FileManagerIntents;
import android.app.IntentService;
import android.content.Intent;
import android.support.v4.content.LocalBroadcastManager;
/**
* Service that asynchronously executes file searches.
*
* @author George Venios.
*
*/
public class SearchService extends IntentService {
/**
* Used to inform the SearchableActivity of search start and end.
*/
private LocalBroadcastManager lbm;
private SearchCore searcher;
public SearchService() {
super("SearchService");
}
@Override
public void onCreate() {
super.onCreate();
lbm = LocalBroadcastManager.getInstance(getApplicationContext());
searcher = new SearchCore(this);
searcher.setURI(SearchResultsProvider.CONTENT_URI);
}
@Override
protected void onHandleIntent(Intent intent) {
// The search query
searcher.setQuery(intent.getStringExtra(FileManagerIntents.EXTRA_SEARCH_QUERY));
// Set initial path. To be searched first!
String path = intent
.getStringExtra(FileManagerIntents.EXTRA_SEARCH_INIT_PATH);
File root;
if (path != null)
root = new File(path);
else
root = new File("/");
// Search started, let Receivers know.
lbm.sendBroadcast(new Intent(FileManagerIntents.ACTION_SEARCH_STARTED));
// Search in current path.
searcher.dropPreviousResults();
searcher.setRoot(root);
searcher.search(root);
// Search is over, let Receivers know.
lbm.sendBroadcast(new Intent(FileManagerIntents.ACTION_SEARCH_FINISHED));
}
}