From a4963583e079dcd47bf945b25ff8b041e9133f98 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 28 Apr 2020 22:41:13 +0900 Subject: [PATCH] pull songs and albums at the same time for artist details --- .../gramophone/helper/MusicPlayerRemote.java | 1 + .../kabouzeid/gramophone/model/Artist.java | 22 ++++--------------- .../com/kabouzeid/gramophone/model/Genre.java | 11 ++-------- .../ui/activities/ArtistDetailActivity.java | 21 ++++++++---------- .../library/pager/GenresFragment.java | 4 +++- 5 files changed, 19 insertions(+), 40 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java b/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java index 1f113aab..266fe5b6 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java +++ b/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java @@ -389,6 +389,7 @@ public class MusicPlayerRemote { if (musicService != null) { return musicService.getAudioSessionId(); } + return -1; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/Artist.java b/app/src/main/java/com/kabouzeid/gramophone/model/Artist.java index 6bf5d51d..98dba694 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/Artist.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/Artist.java @@ -2,9 +2,6 @@ package com.kabouzeid.gramophone.model; import android.os.Parcel; import android.os.Parcelable; -import androidx.annotation.NonNull; - -import com.kabouzeid.gramophone.util.MusicUtil; import org.jellyfin.apiclient.model.dto.BaseItemDto; @@ -15,27 +12,24 @@ public class Artist implements Parcelable { public static final String UNKNOWN_ARTIST_DISPLAY_NAME = "Unknown Artist"; public List albums; - public List genres; + public List songs; public String id; public String name; public long duration; - public int albumCount; - public int songCount; public Artist(BaseItemDto itemDto) { this.id = itemDto.getId(); this.name = itemDto.getName(); this.duration = itemDto.getRunTimeTicks() / 10000; - this.albumCount = itemDto.getAlbumCount() != null ? itemDto.getAlbumCount() : 0; - this.songCount = itemDto.getSongCount() != null ? itemDto.getSongCount() : 0; this.albums = new ArrayList<>(); - this.genres = itemDto.getGenres(); + this.songs = new ArrayList<>(); } public Artist() { this.albums = new ArrayList<>(); + this.songs = new ArrayList<>(); } public String getId() { @@ -47,11 +41,7 @@ public class Artist implements Parcelable { } public int getSongCount() { - int songCount = 0; - for (Album album : albums) { - songCount += album.getSongCount(); - } - return songCount; + return songs.size(); } public int getAlbumCount() { @@ -59,10 +49,6 @@ public class Artist implements Parcelable { } public List getSongs() { - List songs = new ArrayList<>(); - for (Album album : albums) { - songs.addAll(album.songs); - } return songs; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/Genre.java b/app/src/main/java/com/kabouzeid/gramophone/model/Genre.java index b0b6c90c..e09fac1f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/Genre.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/Genre.java @@ -28,19 +28,12 @@ public class Genre implements Parcelable { @Override public int hashCode() { - int result = id; - result = 31 * result + name.hashCode(); - result = 31 * result + songCount; - return result; + return id; } @Override public String toString() { - return "Genre{" + - "id=" + id + - ", name='" + name + '\'' + - ", songCount=" + songCount + '\'' + - '}'; + return Integer.toString(id); } @Override diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java index f108360a..58b100a7 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java @@ -127,19 +127,16 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement public void onLoadMedia(List media) { artist.albums = (List) media; setArtist(artist); + } + }); - QueryUtil.getSongs(query, new MediaCallback() { - @Override - public void onLoadMedia(List media) { - for (Album album : artist.albums) { - for (Song song : (List) media) { - if (song.albumId.equals(album.id)) album.songs.add(song); - } - } - - setArtist(artist); - } - }); + ItemQuery querys = new ItemQuery(); + querys.setArtistIds(new String[]{artist.id}); + QueryUtil.getSongs(querys, new MediaCallback() { + @Override + public void onLoadMedia(List media) { + artist.songs = (List) media; + setArtist(artist); } }); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/GenresFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/GenresFragment.java index bedfb418..e0d89204 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/GenresFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/mainactivity/library/pager/GenresFragment.java @@ -37,7 +37,9 @@ public class GenresFragment extends AbsLibraryPagerRecyclerViewFragment dataSet = getAdapter() == null ? new ArrayList<>() : getAdapter().getDataSet(); - return new GenreAdapter(getLibraryFragment().getMainActivity(), dataSet, R.layout.item_list_no_image); + + GenreAdapter adapter = new GenreAdapter(getLibraryFragment().getMainActivity(), dataSet, R.layout.item_list_no_image); + return adapter; } @Override