From 966a14b08ac45c4c322f05207ef8f6b74fcadc42 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Sat, 5 Sep 2015 14:27:28 -0700 Subject: Add changed date/duration to playlists details dialog --- .../github/daneren2005/dsub/domain/Playlist.java | 66 ++++++++++++++++++---- .../dsub/fragments/SelectPlaylistFragment.java | 11 +++- .../dsub/service/parser/PlaylistsParser.java | 6 +- 3 files changed, 69 insertions(+), 14 deletions(-) (limited to 'app/src/main/java/github/daneren2005') diff --git a/app/src/main/java/github/daneren2005/dsub/domain/Playlist.java b/app/src/main/java/github/daneren2005/dsub/domain/Playlist.java index 99b85ce9..7d480607 100644 --- a/app/src/main/java/github/daneren2005/dsub/domain/Playlist.java +++ b/app/src/main/java/github/daneren2005/dsub/domain/Playlist.java @@ -19,9 +19,13 @@ package github.daneren2005.dsub.domain; import java.io.Serializable; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.Collections; import java.util.Comparator; +import java.util.Date; import java.util.List; +import java.util.Locale; /** * @author Sindre Mehus @@ -33,8 +37,10 @@ public class Playlist implements Serializable { private String owner; private String comment; private String songCount; - private String created; private Boolean pub; + private Date created; + private Date changed; + private Integer duration; public Playlist() { @@ -43,14 +49,16 @@ public class Playlist implements Serializable { this.id = id; this.name = name; } - public Playlist(String id, String name, String owner, String comment, String songCount, String created, String pub) { + public Playlist(String id, String name, String owner, String comment, String songCount, String pub, String created, String changed, Integer duration) { this.id = id; this.name = name; this.owner = (owner == null) ? "" : owner; this.comment = (comment == null) ? "" : comment; this.songCount = (songCount == null) ? "" : songCount; - this.created = (created == null) ? "" : created; this.pub = (pub == null) ? null : (pub.equals("true")); + setCreated(created); + setChanged(changed); + this.duration = duration; } public String getId() { @@ -93,14 +101,6 @@ public class Playlist implements Serializable { this.songCount = songCount; } - public String getCreated() { - return this.created; - } - - public void setCreated(String created) { - this.created = created; - } - public Boolean getPublic() { return this.pub; } @@ -108,6 +108,50 @@ public class Playlist implements Serializable { this.pub = pub; } + public Date getCreated() { + return created; + } + + public void setCreated(String created) { + if (created != null) { + try { + this.created = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH).parse(created); + } catch (ParseException e) { + this.created = null; + } + } else { + this.created = null; + } + } + public void setCreated(Date created) { + this.created = created; + } + + public Date getChanged() { + return changed; + } + public void setChanged(String changed) { + if (changed != null) { + try { + this.changed = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH).parse(changed); + } catch (ParseException e) { + this.changed = null; + } + } else { + this.changed = null; + } + } + public void setChanged(Date changed) { + this.changed = changed; + } + + public Integer getDuration() { + return duration; + } + public void setDuration(Integer duration) { + this.duration = duration; + } + @Override public String toString() { return name; diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java index a2f1aabd..543dcb26 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectPlaylistFragment.java @@ -210,6 +210,11 @@ public class SelectPlaylistFragment extends SelectRecyclerFragment { headers.add(R.string.details_song_count); details.add(playlist.getSongCount()); + if(playlist.getDuration() != null) { + headers.add(R.string.details_length); + details.add(Util.formatDuration(playlist.getDuration())); + } + if(playlist.getPublic() != null) { headers.add(R.string.details_public); details.add(Boolean.toString(playlist.getPublic())); @@ -217,7 +222,11 @@ public class SelectPlaylistFragment extends SelectRecyclerFragment { if(playlist.getCreated() != null) { headers.add(R.string.details_created); - details.add(Util.formatDate(context, playlist.getCreated())); + details.add(Util.formatDate(playlist.getCreated())); + } + if(playlist.getChanged() != null) { + headers.add(R.string.details_updated); + details.add(Util.formatDate(playlist.getChanged())); } Util.showDetailsDialog(context, R.string.details_title_playlist, headers, details); diff --git a/app/src/main/java/github/daneren2005/dsub/service/parser/PlaylistsParser.java b/app/src/main/java/github/daneren2005/dsub/service/parser/PlaylistsParser.java index 69e5af64..71a6b65e 100644 --- a/app/src/main/java/github/daneren2005/dsub/service/parser/PlaylistsParser.java +++ b/app/src/main/java/github/daneren2005/dsub/service/parser/PlaylistsParser.java @@ -52,9 +52,11 @@ public class PlaylistsParser extends AbstractParser { String owner = get("owner"); String comment = get("comment"); String songCount = get("songCount"); - String created = get("created"); String pub = get("public"); - result.add(new Playlist(id, name, owner, comment, songCount, created, pub)); + String created = get("created"); + String changed = get("changed"); + Integer duration = getInteger("duration"); + result.add(new Playlist(id, name, owner, comment, songCount, pub, created, changed, duration)); } else if ("error".equals(tag)) { handleError(); } -- cgit v1.2.3 From 2e5e6558d6643297df075c4f79f093d3084bfbc0 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Sat, 5 Sep 2015 14:33:12 -0700 Subject: Add 5.2/5.3 to nice version display --- app/src/main/java/github/daneren2005/dsub/domain/Version.java | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'app/src/main/java/github/daneren2005') diff --git a/app/src/main/java/github/daneren2005/dsub/domain/Version.java b/app/src/main/java/github/daneren2005/dsub/domain/Version.java index 6b82ea99..97246ecf 100644 --- a/app/src/main/java/github/daneren2005/dsub/domain/Version.java +++ b/app/src/main/java/github/daneren2005/dsub/domain/Version.java @@ -90,6 +90,10 @@ public class Version implements Comparable, Serializable { return "4.9"; case 11: return "5.1"; + case 12: + return "5.2"; + case 13: + return "5.3"; } } return ""; -- cgit v1.2.3 From c4c5298f4248e81deec4f3106dd36e1779f51199 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Sat, 5 Sep 2015 14:43:50 -0700 Subject: #541 Support reverse chronological order for 5.3+ --- .../java/github/daneren2005/dsub/service/RESTMusicService.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'app/src/main/java/github/daneren2005') 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 78a7ec51..c1eaa5cd 100644 --- a/app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java +++ b/app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java @@ -579,8 +579,14 @@ public class RESTMusicService implements MusicService { names.add("toYear"); int decade = Integer.parseInt(extra); - values.add(decade); - values.add(decade + 10); + // Reverse chronological order only supported in 5.3+ + if(ServerInfo.checkServerVersion(context, "1.13", getInstance(context))) { + values.add(decade + 10); + values.add(decade); + } else { + values.add(decade); + values.add(decade + 10); + } } // Add folder if it was set and is non null -- cgit v1.2.3 From b62f08ce2eb1a2d04392995d18c5c89aa478a158 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Sat, 5 Sep 2015 14:53:37 -0700 Subject: #540 Add top tracks for stock Subsonic on 5.3+ --- app/src/main/java/github/daneren2005/dsub/domain/ServerInfo.java | 3 +++ .../github/daneren2005/dsub/fragments/SelectDirectoryFragment.java | 4 ++-- .../main/java/github/daneren2005/dsub/service/RESTMusicService.java | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) (limited to 'app/src/main/java/github/daneren2005') 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 07a86db4..cb871008 100644 --- a/app/src/main/java/github/daneren2005/dsub/domain/ServerInfo.java +++ b/app/src/main/java/github/daneren2005/dsub/domain/ServerInfo.java @@ -210,4 +210,7 @@ public class ServerInfo implements Serializable { public static boolean canAlbumListPerFolder(Context context) { return ServerInfo.checkServerVersion(context, "1.11") && !ServerInfo.isMadsonic(context) && !Util.isTagBrowsing(context); } + public static boolean hasTopSongs(Context context) { + return ServerInfo.isMadsonic(context) || ServerInfo.checkServerVersion(context, "1.13"); + } } 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 c138b04e..430aaa3c 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectDirectoryFragment.java @@ -228,7 +228,7 @@ public class SelectDirectoryFragment extends SubsonicFragment implements Section } else if(artist && !showAll) { menuInflater.inflate(R.menu.select_album, menu); - if(!ServerInfo.isMadsonic(context)) { + if(!ServerInfo.hasTopSongs(context)) { menu.removeItem(R.id.menu_top_tracks); } if(!ServerInfo.checkServerVersion(context, "1.11") || (id != null && "root".equals(id))) { @@ -555,7 +555,7 @@ public class SelectDirectoryFragment extends SubsonicFragment implements Section new LoadTask(refresh) { @Override protected MusicDirectory load(MusicService service) throws Exception { - return service.getTopTrackSongs(name, 20, context, this); + return service.getTopTrackSongs(name, 50, context, this); } }.execute(); } 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 c1eaa5cd..4597ed69 100644 --- a/app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java +++ b/app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java @@ -1192,7 +1192,8 @@ public class RESTMusicService implements MusicService { parameterNames.add("size"); parameterValues.add(size); - Reader reader = getReader(context, progressListener, "getTopTrackSongs", null, parameterNames, parameterValues); + String method = ServerInfo.isMadsonic(context, getInstance(context)) ? "getTopTrackSongs" : "getTopSongs"; + Reader reader = getReader(context, progressListener, method, null, parameterNames, parameterValues); try { return new RandomSongsParser(context, getInstance(context)).parse(reader, progressListener); } finally { -- cgit v1.2.3 From 1f0bbb6a2443b47501a5d3aad9de939a8e377d7b Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Sat, 5 Sep 2015 14:58:47 -0700 Subject: #537 Add a custom user agent --- app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java | 1 + 1 file changed, 1 insertion(+) (limited to 'app/src/main/java/github/daneren2005') 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 4597ed69..b70a2458 100644 --- a/app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java +++ b/app/src/main/java/github/daneren2005/dsub/service/RESTMusicService.java @@ -1874,6 +1874,7 @@ public class RESTMusicService implements MusicService { if(url.indexOf("getCoverArt") == -1 && url.indexOf("stream") == -1 && url.indexOf("getAvatar") == -1) { request.addHeader("Accept-Encoding", "gzip"); } + request.addHeader("User-Agent", Constants.REST_CLIENT_ID); // Set credentials to get through apache proxies that require authentication. int instance = prefs.getInt(Constants.PREFERENCES_KEY_SERVER_INSTANCE, 1); -- cgit v1.2.3