From 6b08efedf0f212e99b627ebf590fa014b955351a Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Thu, 1 Oct 2015 08:48:07 -0700 Subject: Add ability to star/rate albums in root folder --- .../java/github/daneren2005/dsub/domain/Artist.java | 17 ++++++++++++----- .../github/daneren2005/dsub/domain/MusicDirectory.java | 12 ++++++++++++ .../dsub/fragments/SelectArtistFragment.java | 11 +++++++++++ .../daneren2005/dsub/service/CachedMusicService.java | 14 ++++++++++++-- .../daneren2005/dsub/service/parser/IndexesParser.java | 1 + 5 files changed, 48 insertions(+), 7 deletions(-) (limited to 'app/src/main/java/github/daneren2005') diff --git a/app/src/main/java/github/daneren2005/dsub/domain/Artist.java b/app/src/main/java/github/daneren2005/dsub/domain/Artist.java index f48dd2f9..56e8f92e 100644 --- a/app/src/main/java/github/daneren2005/dsub/domain/Artist.java +++ b/app/src/main/java/github/daneren2005/dsub/domain/Artist.java @@ -35,12 +35,12 @@ public class Artist implements Serializable { private String name; private String index; private boolean starred; + private Integer rating; private int closeness; public String getId() { return id; } - public void setId(String id) { this.id = id; } @@ -48,7 +48,6 @@ public class Artist implements Serializable { public String getName() { return name; } - public void setName(String name) { this.name = name; } @@ -56,7 +55,6 @@ public class Artist implements Serializable { public String getIndex() { return index; } - public void setIndex(String index) { this.index = index; } @@ -64,15 +62,24 @@ public class Artist implements Serializable { public boolean isStarred() { return starred; } - public void setStarred(boolean starred) { this.starred = starred; } + + public int getRating() { + return rating == null ? 0 : rating; + } + public void setRating(Integer rating) { + if(rating == null || rating == 0) { + this.rating = null; + } else { + this.rating = rating; + } + } public int getCloseness() { return closeness; } - public void setCloseness(int closeness) { this.closeness = closeness; } diff --git a/app/src/main/java/github/daneren2005/dsub/domain/MusicDirectory.java b/app/src/main/java/github/daneren2005/dsub/domain/MusicDirectory.java index 3a2b9834..42aa5288 100644 --- a/app/src/main/java/github/daneren2005/dsub/domain/MusicDirectory.java +++ b/app/src/main/java/github/daneren2005/dsub/domain/MusicDirectory.java @@ -197,6 +197,7 @@ public class MusicDirectory implements Serializable { private Bookmark bookmark; private int type = 0; private int closeness; + private transient Artist linkedArtist; public Entry() { @@ -208,6 +209,9 @@ public class MusicDirectory implements Serializable { this.id = artist.getId(); this.title = artist.getName(); this.directory = true; + this.starred = artist.isStarred(); + this.rating = artist.getRating(); + this.linkedArtist = artist; } @TargetApi(Build.VERSION_CODES.GINGERBREAD_MR1) @@ -469,6 +473,10 @@ public class MusicDirectory implements Serializable { public void setStarred(boolean starred) { this.starred = starred; + + if(linkedArtist != null) { + linkedArtist.setStarred(starred); + } } public int getRating() { @@ -480,6 +488,10 @@ public class MusicDirectory implements Serializable { } else { this.rating = rating; } + + if(linkedArtist != null) { + linkedArtist.setRating(rating); + } } public Bookmark getBookmark() { diff --git a/app/src/main/java/github/daneren2005/dsub/fragments/SelectArtistFragment.java b/app/src/main/java/github/daneren2005/dsub/fragments/SelectArtistFragment.java index a9d5afd6..4599d3cb 100644 --- a/app/src/main/java/github/daneren2005/dsub/fragments/SelectArtistFragment.java +++ b/app/src/main/java/github/daneren2005/dsub/fragments/SelectArtistFragment.java @@ -3,6 +3,7 @@ package github.daneren2005.dsub.fragments; import android.annotation.TargetApi; import android.os.Build; import android.os.Bundle; +import android.util.Log; import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.Menu; @@ -20,6 +21,7 @@ import github.daneren2005.dsub.domain.Artist; import github.daneren2005.dsub.domain.Indexes; import github.daneren2005.dsub.domain.MusicDirectory; import github.daneren2005.dsub.domain.MusicFolder; +import github.daneren2005.dsub.domain.ServerInfo; import github.daneren2005.dsub.service.MusicService; import github.daneren2005.dsub.util.Constants; import github.daneren2005.dsub.util.ProgressListener; @@ -97,16 +99,25 @@ public class SelectArtistFragment extends SelectRecyclerFragment impleme Bundle args = new Bundle(); args.putString(Constants.INTENT_EXTRA_NAME_ID, artist.getId()); args.putString(Constants.INTENT_EXTRA_NAME_NAME, artist.getName()); + if ("root".equals(artist.getId())) { args.putSerializable(Constants.FRAGMENT_LIST, (Serializable) entries); } + if(ServerInfo.checkServerVersion(context, "1.13") && !Util.isOffline(context)) { + args.putSerializable(Constants.INTENT_EXTRA_NAME_DIRECTORY, new MusicDirectory.Entry(artist)); + } args.putBoolean(Constants.INTENT_EXTRA_NAME_ARTIST, true); + fragment.setArguments(args); } else { fragment = new SelectArtistFragment(); Bundle args = new Bundle(); args.putString(Constants.INTENT_EXTRA_NAME_ID, artist.getId()); args.putString(Constants.INTENT_EXTRA_NAME_NAME, artist.getName()); + if(ServerInfo.checkServerVersion(context, "1.13") && !Util.isOffline(context)) { + args.putSerializable(Constants.INTENT_EXTRA_NAME_DIRECTORY, new MusicDirectory.Entry(artist)); + } + fragment.setArguments(args); } diff --git a/app/src/main/java/github/daneren2005/dsub/service/CachedMusicService.java b/app/src/main/java/github/daneren2005/dsub/service/CachedMusicService.java index f053c215..8a17d8f3 100644 --- a/app/src/main/java/github/daneren2005/dsub/service/CachedMusicService.java +++ b/app/src/main/java/github/daneren2005/dsub/service/CachedMusicService.java @@ -837,11 +837,21 @@ public class CachedMusicService implements MusicService { @Override public void setRating(final Entry entry, final int rating, Context context, ProgressListener progressListener) throws Exception { musicService.setRating(entry, rating, context, progressListener); - + new GenericEntryUpdater(context, entry) { + @Override + public boolean checkResult(Entry entry, Entry check) { + if (entry.getId().equals(check.getId())) { + check.setRating(entry.getRating()); + return true; + } + + return false; + } + @Override public void updateResult(Entry result) { - result.setRating(rating); + } }.execute(); } diff --git a/app/src/main/java/github/daneren2005/dsub/service/parser/IndexesParser.java b/app/src/main/java/github/daneren2005/dsub/service/parser/IndexesParser.java index 0ac86476..f0cce217 100644 --- a/app/src/main/java/github/daneren2005/dsub/service/parser/IndexesParser.java +++ b/app/src/main/java/github/daneren2005/dsub/service/parser/IndexesParser.java @@ -78,6 +78,7 @@ public class IndexesParser extends MusicDirectoryEntryParser { artist.setName(get("name")); artist.setIndex(index); artist.setStarred(get("starred") != null); + artist.setRating(getInteger("userRating")); // Combine the id's for the two artists if(artistList.containsKey(artist.getName())) { -- cgit v1.2.3