From 87da78de824d57f0cd132dabcf9effa3d331faaf Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Mon, 17 Jun 2013 22:29:57 -0700 Subject: Fix using Show Album on songs added in offline mode --- .../daneren2005/dsub/service/RESTMusicService.java | 13 +++++++++++++ .../src/github/daneren2005/dsub/util/Util.java | 18 ++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/subsonic-android/src/github/daneren2005/dsub/service/RESTMusicService.java b/subsonic-android/src/github/daneren2005/dsub/service/RESTMusicService.java index ee8a384c..75867fdc 100644 --- a/subsonic-android/src/github/daneren2005/dsub/service/RESTMusicService.java +++ b/subsonic-android/src/github/daneren2005/dsub/service/RESTMusicService.java @@ -274,6 +274,19 @@ public class RESTMusicService implements MusicService { @Override public MusicDirectory getMusicDirectory(String id, String name, boolean refresh, Context context, ProgressListener progressListener) throws Exception { + SharedPreferences prefs = Util.getPreferences(context); + String cacheLocn = prefs.getString(Constants.PREFERENCES_KEY_CACHE_LOCATION, null); + if(id.indexOf(cacheLocn) != -1) { + String search = Util.parseOfflineIDSearch(context, id, cacheLocn); + SearchCritera critera = new SearchCritera(search, 1, 1, 0); + SearchResult result = searchNew(critera, context, progressListener); + if(result.getArtists().size() == 1) { + id = result.getArtists().get(0).getId(); + } else if(result.getAlbums().size() == 1) { + id = result.getAlbums().get(0).getId(); + } + } + Reader reader = getReader(context, progressListener, "getMusicDirectory", null, "id", id); try { return new MusicDirectoryParser(context).parse(name, reader, progressListener); diff --git a/subsonic-android/src/github/daneren2005/dsub/util/Util.java b/subsonic-android/src/github/daneren2005/dsub/util/Util.java index 3ad4c623..98b9fc42 100644 --- a/subsonic-android/src/github/daneren2005/dsub/util/Util.java +++ b/subsonic-android/src/github/daneren2005/dsub/util/Util.java @@ -378,11 +378,21 @@ public final class Util { name = index == -1 ? name : name.substring(0, index); String[] details = name.split("/"); - String artist = "artist:\"" + details[0] + "\""; String title = details[details.length - 1]; - title = "title:\"" + title.substring(title.indexOf('-') + 1) + "\""; - - name = artist + " AND " + title; + if(index == -1) { + if(details.length > 1) { + String artist = "artist:\"" + details[details.length - 2] + "\""; + String simpleArtist = "artist:\"" + title + "\""; + title = "album:\"" + title + "\""; + name = "(" + artist + " AND " + title + ")" + " OR " + simpleArtist; + } else { + name = "artist:\"" + title + "\""; + } + } else { + String artist = "artist:\"" + details[details.length - 3] + "\""; + title = "title:\"" + title.substring(title.indexOf('-') + 1) + "\""; + name = artist + " AND " + title; + } return name; } -- cgit v1.2.3