aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2013-11-25 22:35:35 -0800
committerScott Jackson <daneren2005@gmail.com>2013-11-25 22:35:35 -0800
commitbe94e0bbfaa7ff2a23e5aae75e2446855143e49d (patch)
tree738e83ec43ce548a5a74801e12a9a17a065d96a0
parente5dbae103f57baa2baafbc552f0dfcb1006513a8 (diff)
downloaddsub-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.pngbin0 -> 716 bytes
-rw-r--r--res/drawable-hdpi/ic_action_artist.pngbin0 -> 685 bytes
-rw-r--r--res/drawable-hdpi/ic_action_song.pngbin0 -> 568 bytes
-rw-r--r--res/drawable-mdpi/ic_action_album.pngbin0 -> 474 bytes
-rw-r--r--res/drawable-mdpi/ic_action_artist.pngbin0 -> 505 bytes
-rw-r--r--res/drawable-mdpi/ic_action_song.pngbin0 -> 431 bytes
-rw-r--r--res/drawable-xhdpi/ic_action_album.pngbin0 -> 1023 bytes
-rw-r--r--res/drawable-xhdpi/ic_action_artist.pngbin0 -> 820 bytes
-rw-r--r--res/drawable-xhdpi/ic_action_song.pngbin0 -> 705 bytes
-rw-r--r--res/xml/settings.xml5
-rw-r--r--src/github/daneren2005/dsub/activity/QueryReceiverActivity.java4
-rw-r--r--src/github/daneren2005/dsub/activity/SettingsActivity.java9
-rw-r--r--src/github/daneren2005/dsub/activity/VoiceQueryReceiverActivity.java4
-rw-r--r--src/github/daneren2005/dsub/provider/DSubSearchProvider.java94
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
new file mode 100644
index 00000000..6058c483
--- /dev/null
+++ b/res/drawable-hdpi/ic_action_album.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_action_artist.png b/res/drawable-hdpi/ic_action_artist.png
new file mode 100644
index 00000000..40c9a7fb
--- /dev/null
+++ b/res/drawable-hdpi/ic_action_artist.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_action_song.png b/res/drawable-hdpi/ic_action_song.png
new file mode 100644
index 00000000..95342f76
--- /dev/null
+++ b/res/drawable-hdpi/ic_action_song.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_action_album.png b/res/drawable-mdpi/ic_action_album.png
new file mode 100644
index 00000000..02674347
--- /dev/null
+++ b/res/drawable-mdpi/ic_action_album.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_action_artist.png b/res/drawable-mdpi/ic_action_artist.png
new file mode 100644
index 00000000..c113cf78
--- /dev/null
+++ b/res/drawable-mdpi/ic_action_artist.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_action_song.png b/res/drawable-mdpi/ic_action_song.png
new file mode 100644
index 00000000..fa9acbde
--- /dev/null
+++ b/res/drawable-mdpi/ic_action_song.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_action_album.png b/res/drawable-xhdpi/ic_action_album.png
new file mode 100644
index 00000000..e4b12908
--- /dev/null
+++ b/res/drawable-xhdpi/ic_action_album.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_action_artist.png b/res/drawable-xhdpi/ic_action_artist.png
new file mode 100644
index 00000000..2dff43ea
--- /dev/null
+++ b/res/drawable-xhdpi/ic_action_artist.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_action_song.png b/res/drawable-xhdpi/ic_action_song.png
new file mode 100644
index 00000000..29fd3a2d
--- /dev/null
+++ b/res/drawable-xhdpi/ic_action_song.png
Binary files differ
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