aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorScott Jackson <daneren2005@gmail.com>2015-09-07 15:42:36 -0700
committerScott Jackson <daneren2005@gmail.com>2015-09-07 15:42:36 -0700
commit0853f6721ae5eefb62b06a74d2b47b42a094a05c (patch)
tree016f3952195dc5cf22125312aaa6b5d436a42cc4 /app
parent300ade43e5e58383798da6214e6819572ffef4b8 (diff)
downloaddsub-0853f6721ae5eefb62b06a74d2b47b42a094a05c.tar.gz
dsub-0853f6721ae5eefb62b06a74d2b47b42a094a05c.tar.bz2
dsub-0853f6721ae5eefb62b06a74d2b47b42a094a05c.zip
Add support new Madsonic 6.0+ structure
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/github/daneren2005/dsub/domain/ServerInfo.java3
-rw-r--r--app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java2
-rw-r--r--app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java79
3 files changed, 73 insertions, 11 deletions
diff --git a/app/src/main/java/github/daneren2005/dsub/domain/ServerInfo.java b/app/src/main/java/github/daneren2005/dsub/domain/ServerInfo.java
index a16ba179..6ee62efb 100644
--- a/app/src/main/java/github/daneren2005/dsub/domain/ServerInfo.java
+++ b/app/src/main/java/github/daneren2005/dsub/domain/ServerInfo.java
@@ -220,4 +220,7 @@ public class ServerInfo implements Serializable {
return isStockSubsonic(context, instance) && checkServerVersion(context, "1.13", instance)/* ||
isMadsonic(context, instance) && checkServerVersion(context, "2.0", instance)*/;
}
+ public static boolean hasSimilarArtists(Context context) {
+ return !ServerInfo.isMadsonic(context) || ServerInfo.checkServerVersion(context, "2.0");
+ }
}
diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java
index 430aaa3c..cfbfa2af 100644
--- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java
+++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java
@@ -234,7 +234,7 @@ public class SelectDirectoryFragment extends SubsonicFragment implements Section
if(!ServerInfo.checkServerVersion(context, "1.11") || (id != null && "root".equals(id))) {
menu.removeItem(R.id.menu_radio);
menu.removeItem(R.id.menu_similar_artists);
- } else if(ServerInfo.isMadsonic(context)) {
+ } else if(!ServerInfo.hasSimilarArtists(context)) {
menu.removeItem(R.id.menu_similar_artists);
}
} else {
diff --git a/app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java b/app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java
index b70a2458..97e58d48 100644
--- a/app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java
+++ b/app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java
@@ -346,9 +346,24 @@ public class RESTMusicService implements MusicService {
checkServerVersion(context, "1.4", null);
List<String> parameterNames = Arrays.asList("query", "artistCount", "albumCount", "songCount");
- List<Object> parameterValues = Arrays.<Object>asList(critera.getQuery(), critera.getArtistCount(),
- critera.getAlbumCount(), critera.getSongCount());
- Reader reader = getReader(context, progressListener, Util.isTagBrowsing(context, getInstance(context)) ? "search3" : "search2", null, parameterNames, parameterValues);
+ List<Object> parameterValues = Arrays.<Object>asList(critera.getQuery(), critera.getArtistCount(), critera.getAlbumCount(), critera.getSongCount());
+
+ int instance = getInstance(context);
+ String method;
+ if(ServerInfo.isMadsonic(context, instance) && ServerInfo.checkServerVersion(context, "2.0", instance)) {
+ if(Util.isTagBrowsing(context, instance)) {
+ method = "searchID3";
+ } else {
+ method = "search";
+ }
+ } else {
+ if(Util.isTagBrowsing(context, instance)) {
+ method = "search3";
+ } else {
+ method = "search2";
+ }
+ }
+ Reader reader = getReader(context, progressListener, method, null, parameterNames, parameterValues);
try {
return new SearchResult2Parser(context, getInstance(context)).parse(reader, progressListener);
} finally {
@@ -543,8 +558,18 @@ public class RESTMusicService implements MusicService {
}
}
- Reader reader = getReader(context, progressListener, Util.isTagBrowsing(context, getInstance(context)) ? "getAlbumList2" : "getAlbumList",
- null, names, values, true);
+ String method;
+ if(Util.isTagBrowsing(context, instance)) {
+ if(ServerInfo.isMadsonic(context, instance) && ServerInfo.checkServerVersion(context, "2.0", instance)) {
+ method = "getAlbumListID3";
+ } else {
+ method = "getAlbumList2";
+ }
+ } else {
+ method = "getAlbumList";
+ }
+
+ Reader reader = getReader(context, progressListener, method, null, names, values, true);
try {
return new AlbumListParser(context, getInstance(context)).parse(reader, progressListener);
} finally {
@@ -565,6 +590,7 @@ public class RESTMusicService implements MusicService {
values.add(size);
values.add(offset);
+ int instance = getInstance(context);
if("genres".equals(type)) {
names.add("type");
values.add("byGenre");
@@ -580,7 +606,7 @@ public class RESTMusicService implements MusicService {
int decade = Integer.parseInt(extra);
// Reverse chronological order only supported in 5.3+
- if(ServerInfo.checkServerVersion(context, "1.13", getInstance(context))) {
+ if(ServerInfo.checkServerVersion(context, "1.13", instance) && ServerInfo.isStockSubsonic(context, instance)) {
values.add(decade + 10);
values.add(decade);
} else {
@@ -590,7 +616,6 @@ public class RESTMusicService implements MusicService {
}
// Add folder if it was set and is non null
- int instance = getInstance(context);
if(Util.getAlbumListsPerFolder(context, instance)) {
String folderId = Util.getSelectedMusicFolderId(context, instance);
if(folderId != null) {
@@ -599,7 +624,18 @@ public class RESTMusicService implements MusicService {
}
}
- Reader reader = getReader(context, progressListener, Util.isTagBrowsing(context, instance) ? "getAlbumList2" : "getAlbumList", null, names, values, true);
+ String method;
+ if(Util.isTagBrowsing(context, instance)) {
+ if(ServerInfo.isMadsonic(context, instance) && ServerInfo.checkServerVersion(context, "2.0", instance)) {
+ method = "getAlbumListID3";
+ } else {
+ method = "getAlbumList2";
+ }
+ } else {
+ method = "getAlbumList";
+ }
+
+ Reader reader = getReader(context, progressListener, method, null, names, values, true);
try {
return new AlbumListParser(context, instance).parse(reader, progressListener);
} finally {
@@ -655,7 +691,18 @@ public class RESTMusicService implements MusicService {
}
}
- Reader reader = getReader(context, progressListener, Util.isTagBrowsing(context, instance) ? "getStarred2" : "getStarred", null, names, values, true);
+ String method;
+ if(Util.isTagBrowsing(context, instance)) {
+ if(ServerInfo.isMadsonic(context, instance) && ServerInfo.checkServerVersion(context, "2.0", instance)) {
+ method = "getStarredID3";
+ } else {
+ method = "getStarred2";
+ }
+ } else {
+ method = "getStarred";
+ }
+
+ Reader reader = getReader(context, progressListener, method, null, names, values, true);
try {
return new StarredListParser(context, instance).parse(reader, progressListener);
} finally {
@@ -1517,7 +1564,19 @@ public class RESTMusicService implements MusicService {
public ArtistInfo getArtistInfo(String id, boolean refresh, boolean allowNetwork, Context context, ProgressListener progressListener) throws Exception {
checkServerVersion(context, "1.11", "Getting artist info is not supported");
- Reader reader = getReader(context, progressListener, Util.isTagBrowsing(context, getInstance(context)) ? "getArtistInfo2" : "getArtistInfo", null, Arrays.asList("id", "includeNotPresent"), Arrays.<Object>asList(id, "true"));
+ int instance = getInstance(context);
+ String method;
+ if(Util.isTagBrowsing(context, instance)) {
+ if(ServerInfo.isMadsonic(context, instance) && ServerInfo.checkServerVersion(context, "2.0", instance)) {
+ method = "getArtistInfoID3";
+ } else {
+ method = "getArtistInfo2";
+ }
+ } else {
+ method = "getArtistInfo";
+ }
+
+ Reader reader = getReader(context, progressListener, method, null, Arrays.asList("id", "includeNotPresent"), Arrays.<Object>asList(id, "true"));
try {
return new ArtistInfoParser(context, getInstance(context)).parse(reader, progressListener);
} finally {