diff options
author | Scott Jackson <daneren2005@gmail.com> | 2013-11-25 22:35:35 -0800 |
---|---|---|
committer | Scott Jackson <daneren2005@gmail.com> | 2013-11-25 22:35:35 -0800 |
commit | be94e0bbfaa7ff2a23e5aae75e2446855143e49d (patch) | |
tree | 738e83ec43ce548a5a74801e12a9a17a065d96a0 /src/github/daneren2005 | |
parent | e5dbae103f57baa2baafbc552f0dfcb1006513a8 (diff) | |
download | dsub-be94e0bbfaa7ff2a23e5aae75e2446855143e49d.tar.gz dsub-be94e0bbfaa7ff2a23e5aae75e2446855143e49d.tar.bz2 dsub-be94e0bbfaa7ff2a23e5aae75e2446855143e49d.zip |
#191 Use Subsonic's new search provider
Diffstat (limited to 'src/github/daneren2005')
4 files changed, 87 insertions, 24 deletions
diff --git a/src/github/daneren2005/dsub/activity/QueryReceiverActivity.java b/src/github/daneren2005/dsub/activity/QueryReceiverActivity.java index 7a19fcb5..b28d542e 100644 --- a/src/github/daneren2005/dsub/activity/QueryReceiverActivity.java +++ b/src/github/daneren2005/dsub/activity/QueryReceiverActivity.java @@ -44,10 +44,6 @@ public class QueryReceiverActivity extends Activity { String query = getIntent().getStringExtra(SearchManager.QUERY); if (query != null) { - SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this, DSubSearchProvider.AUTHORITY, - DSubSearchProvider.MODE); - suggestions.saveRecentQuery(query, null); - Intent intent = new Intent(QueryReceiverActivity.this, SubsonicFragmentActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_QUERY, query); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); diff --git a/src/github/daneren2005/dsub/activity/SettingsActivity.java b/src/github/daneren2005/dsub/activity/SettingsActivity.java index 49a5f15b..c723cca5 100644 --- a/src/github/daneren2005/dsub/activity/SettingsActivity.java +++ b/src/github/daneren2005/dsub/activity/SettingsActivity.java @@ -111,15 +111,6 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer settings = Util.getPreferences(this); serverCount = settings.getInt(Constants.PREFERENCES_KEY_SERVER_COUNT, 3); - findPreference("clearSearchHistory").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - SearchRecentSuggestions suggestions = new SearchRecentSuggestions(SettingsActivity.this, DSubSearchProvider.AUTHORITY, DSubSearchProvider.MODE); - suggestions.clearHistory(); - Util.toast(SettingsActivity.this, R.string.settings_search_history_cleared); - return false; - } - }); findPreference("clearCache").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { diff --git a/src/github/daneren2005/dsub/activity/VoiceQueryReceiverActivity.java b/src/github/daneren2005/dsub/activity/VoiceQueryReceiverActivity.java index e37696d5..f3a56920 100644 --- a/src/github/daneren2005/dsub/activity/VoiceQueryReceiverActivity.java +++ b/src/github/daneren2005/dsub/activity/VoiceQueryReceiverActivity.java @@ -46,10 +46,6 @@ public class VoiceQueryReceiverActivity extends Activity { String query = getIntent().getStringExtra(SearchManager.QUERY); if (query != null) { - SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this, DSubSearchProvider.AUTHORITY, - DSubSearchProvider.MODE); - suggestions.saveRecentQuery(query, null); - Intent intent = new Intent(VoiceQueryReceiverActivity.this, SubsonicFragmentActivity.class); intent.putExtra(Constants.INTENT_EXTRA_NAME_QUERY, query); intent.putExtra(Constants.INTENT_EXTRA_NAME_AUTOPLAY, true); diff --git a/src/github/daneren2005/dsub/provider/DSubSearchProvider.java b/src/github/daneren2005/dsub/provider/DSubSearchProvider.java index 5ddec0f4..b7164cef 100644 --- a/src/github/daneren2005/dsub/provider/DSubSearchProvider.java +++ b/src/github/daneren2005/dsub/provider/DSubSearchProvider.java @@ -18,19 +18,99 @@ */ package github.daneren2005.dsub.provider; -import android.content.SearchRecentSuggestionsProvider; +import android.app.SearchManager; +import android.content.ContentProvider; +import android.content.ContentValues; +import android.database.Cursor; +import android.database.MatrixCursor; +import android.net.Uri; + +import github.daneren2005.dsub.R; +import github.daneren2005.dsub.domain.Artist; +import github.daneren2005.dsub.domain.MusicDirectory; +import github.daneren2005.dsub.domain.SearchCritera; +import github.daneren2005.dsub.domain.SearchResult; +import github.daneren2005.dsub.service.MusicService; +import github.daneren2005.dsub.service.MusicServiceFactory; /** * Provides search suggestions based on recent searches. * * @author Sindre Mehus */ -public class DSubSearchProvider extends SearchRecentSuggestionsProvider { +public class DSubSearchProvider extends ContentProvider { + private static final String RESOURCE_PREFIX = "android.resource://github.daneren2005.dsub/"; + private static final String[] COLUMNS = {"_id", + SearchManager.SUGGEST_COLUMN_TEXT_1, + SearchManager.SUGGEST_COLUMN_TEXT_2, + SearchManager.SUGGEST_COLUMN_INTENT_DATA, + SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA, + SearchManager.SUGGEST_COLUMN_ICON_1}; + + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { + String query = selectionArgs[0] + "*"; + SearchResult searchResult = search(query); + return createCursor(searchResult); + } + + private SearchResult search(String query) { + MusicService musicService = MusicServiceFactory.getMusicService(getContext()); + if (musicService == null) { + return null; + } + + try { + return musicService.search(new SearchCritera(query, 5, 10, 10), getContext(), null); + } catch (Exception e) { + return null; + } + } + + private Cursor createCursor(SearchResult searchResult) { + MatrixCursor cursor = new MatrixCursor(COLUMNS); + if (searchResult == null) { + return cursor; + } + + for (Artist artist : searchResult.getArtists()) { + String icon = RESOURCE_PREFIX + R.drawable.ic_action_artist; + cursor.addRow(new Object[]{artist.getId(), artist.getName(), null, artist.getId(), artist.getName(), icon}); + } + for (MusicDirectory.Entry album : searchResult.getAlbums()) { + String icon = RESOURCE_PREFIX + R.drawable.ic_action_album; + cursor.addRow(new Object[]{album.getId(), album.getTitle(), album.getArtist(), album.getId(), album.getTitle(), icon}); + } + for (MusicDirectory.Entry song : searchResult.getSongs()) { + String icon = RESOURCE_PREFIX + R.drawable.ic_action_song; + cursor.addRow(new Object[]{song.getId(), song.getTitle(), song.getArtist(), song.getParent(), null, icon}); + } + return cursor; + } + + @Override + public boolean onCreate() { + return false; + } + + @Override + public String getType(Uri uri) { + return null; + } + + @Override + public Uri insert(Uri uri, ContentValues contentValues) { + return null; + } + + @Override + public int delete(Uri uri, String s, String[] strings) { + return 0; + } - public static final String AUTHORITY = DSubSearchProvider.class.getName(); - public static final int MODE = DATABASE_MODE_QUERIES; + @Override + public int update(Uri uri, ContentValues contentValues, String s, String[] strings) { + return 0; + } - public DSubSearchProvider() { - setupSuggestions(AUTHORITY, MODE); - } }
\ No newline at end of file |