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 | |
parent | e5dbae103f57baa2baafbc552f0dfcb1006513a8 (diff) | |
download | dsub-be94e0bbfaa7ff2a23e5aae75e2446855143e49d.tar.gz dsub-be94e0bbfaa7ff2a23e5aae75e2446855143e49d.tar.bz2 dsub-be94e0bbfaa7ff2a23e5aae75e2446855143e49d.zip |
#191 Use Subsonic's new search provider
-rw-r--r-- | res/drawable-hdpi/ic_action_album.png | bin | 0 -> 716 bytes | |||
-rw-r--r-- | res/drawable-hdpi/ic_action_artist.png | bin | 0 -> 685 bytes | |||
-rw-r--r-- | res/drawable-hdpi/ic_action_song.png | bin | 0 -> 568 bytes | |||
-rw-r--r-- | res/drawable-mdpi/ic_action_album.png | bin | 0 -> 474 bytes | |||
-rw-r--r-- | res/drawable-mdpi/ic_action_artist.png | bin | 0 -> 505 bytes | |||
-rw-r--r-- | res/drawable-mdpi/ic_action_song.png | bin | 0 -> 431 bytes | |||
-rw-r--r-- | res/drawable-xhdpi/ic_action_album.png | bin | 0 -> 1023 bytes | |||
-rw-r--r-- | res/drawable-xhdpi/ic_action_artist.png | bin | 0 -> 820 bytes | |||
-rw-r--r-- | res/drawable-xhdpi/ic_action_song.png | bin | 0 -> 705 bytes | |||
-rw-r--r-- | res/xml/settings.xml | 5 | ||||
-rw-r--r-- | src/github/daneren2005/dsub/activity/QueryReceiverActivity.java | 4 | ||||
-rw-r--r-- | src/github/daneren2005/dsub/activity/SettingsActivity.java | 9 | ||||
-rw-r--r-- | src/github/daneren2005/dsub/activity/VoiceQueryReceiverActivity.java | 4 | ||||
-rw-r--r-- | src/github/daneren2005/dsub/provider/DSubSearchProvider.java | 94 |
14 files changed, 87 insertions, 29 deletions
diff --git a/res/drawable-hdpi/ic_action_album.png b/res/drawable-hdpi/ic_action_album.png Binary files differnew file mode 100644 index 00000000..6058c483 --- /dev/null +++ b/res/drawable-hdpi/ic_action_album.png diff --git a/res/drawable-hdpi/ic_action_artist.png b/res/drawable-hdpi/ic_action_artist.png Binary files differnew file mode 100644 index 00000000..40c9a7fb --- /dev/null +++ b/res/drawable-hdpi/ic_action_artist.png diff --git a/res/drawable-hdpi/ic_action_song.png b/res/drawable-hdpi/ic_action_song.png Binary files differnew file mode 100644 index 00000000..95342f76 --- /dev/null +++ b/res/drawable-hdpi/ic_action_song.png diff --git a/res/drawable-mdpi/ic_action_album.png b/res/drawable-mdpi/ic_action_album.png Binary files differnew file mode 100644 index 00000000..02674347 --- /dev/null +++ b/res/drawable-mdpi/ic_action_album.png diff --git a/res/drawable-mdpi/ic_action_artist.png b/res/drawable-mdpi/ic_action_artist.png Binary files differnew file mode 100644 index 00000000..c113cf78 --- /dev/null +++ b/res/drawable-mdpi/ic_action_artist.png diff --git a/res/drawable-mdpi/ic_action_song.png b/res/drawable-mdpi/ic_action_song.png Binary files differnew file mode 100644 index 00000000..fa9acbde --- /dev/null +++ b/res/drawable-mdpi/ic_action_song.png diff --git a/res/drawable-xhdpi/ic_action_album.png b/res/drawable-xhdpi/ic_action_album.png Binary files differnew file mode 100644 index 00000000..e4b12908 --- /dev/null +++ b/res/drawable-xhdpi/ic_action_album.png diff --git a/res/drawable-xhdpi/ic_action_artist.png b/res/drawable-xhdpi/ic_action_artist.png Binary files differnew file mode 100644 index 00000000..2dff43ea --- /dev/null +++ b/res/drawable-xhdpi/ic_action_artist.png diff --git a/res/drawable-xhdpi/ic_action_song.png b/res/drawable-xhdpi/ic_action_song.png Binary files differnew file mode 100644 index 00000000..29fd3a2d --- /dev/null +++ b/res/drawable-xhdpi/ic_action_song.png diff --git a/res/xml/settings.xml b/res/xml/settings.xml index be742f0b..99233785 100644 --- a/res/xml/settings.xml +++ b/res/xml/settings.xml @@ -185,11 +185,6 @@ android:summary="@string/settings.screen_lit_summary" android:key="screenLitOnDownload" android:defaultValue="true"/> - - <Preference - android:key="clearSearchHistory" - android:title="@string/settings.clear_search_history" - android:persistent="false"/> </PreferenceCategory> </PreferenceScreen> 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 |