pull songs and albums at the same time for artist details

This commit is contained in:
dkanada 2020-04-28 22:41:13 +09:00
commit a4963583e0
5 changed files with 19 additions and 40 deletions

View file

@ -389,6 +389,7 @@ public class MusicPlayerRemote {
if (musicService != null) { if (musicService != null) {
return musicService.getAudioSessionId(); return musicService.getAudioSessionId();
} }
return -1; return -1;
} }

View file

@ -2,9 +2,6 @@ package com.kabouzeid.gramophone.model;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import androidx.annotation.NonNull;
import com.kabouzeid.gramophone.util.MusicUtil;
import org.jellyfin.apiclient.model.dto.BaseItemDto; 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 static final String UNKNOWN_ARTIST_DISPLAY_NAME = "Unknown Artist";
public List<Album> albums; public List<Album> albums;
public List<String> genres; public List<Song> songs;
public String id; public String id;
public String name; public String name;
public long duration; public long duration;
public int albumCount;
public int songCount;
public Artist(BaseItemDto itemDto) { public Artist(BaseItemDto itemDto) {
this.id = itemDto.getId(); this.id = itemDto.getId();
this.name = itemDto.getName(); this.name = itemDto.getName();
this.duration = itemDto.getRunTimeTicks() / 10000; 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.albums = new ArrayList<>();
this.genres = itemDto.getGenres(); this.songs = new ArrayList<>();
} }
public Artist() { public Artist() {
this.albums = new ArrayList<>(); this.albums = new ArrayList<>();
this.songs = new ArrayList<>();
} }
public String getId() { public String getId() {
@ -47,11 +41,7 @@ public class Artist implements Parcelable {
} }
public int getSongCount() { public int getSongCount() {
int songCount = 0; return songs.size();
for (Album album : albums) {
songCount += album.getSongCount();
}
return songCount;
} }
public int getAlbumCount() { public int getAlbumCount() {
@ -59,10 +49,6 @@ public class Artist implements Parcelable {
} }
public List<Song> getSongs() { public List<Song> getSongs() {
List<Song> songs = new ArrayList<>();
for (Album album : albums) {
songs.addAll(album.songs);
}
return songs; return songs;
} }

View file

@ -28,19 +28,12 @@ public class Genre implements Parcelable {
@Override @Override
public int hashCode() { public int hashCode() {
int result = id; return id;
result = 31 * result + name.hashCode();
result = 31 * result + songCount;
return result;
} }
@Override @Override
public String toString() { public String toString() {
return "Genre{" + return Integer.toString(id);
"id=" + id +
", name='" + name + '\'' +
", songCount=" + songCount + '\'' +
'}';
} }
@Override @Override

View file

@ -127,19 +127,16 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
public void onLoadMedia(List<?> media) { public void onLoadMedia(List<?> media) {
artist.albums = (List<Album>) media; artist.albums = (List<Album>) media;
setArtist(artist); setArtist(artist);
}
});
QueryUtil.getSongs(query, new MediaCallback() { ItemQuery querys = new ItemQuery();
@Override querys.setArtistIds(new String[]{artist.id});
public void onLoadMedia(List<?> media) { QueryUtil.getSongs(querys, new MediaCallback() {
for (Album album : artist.albums) { @Override
for (Song song : (List<Song>) media) { public void onLoadMedia(List<?> media) {
if (song.albumId.equals(album.id)) album.songs.add(song); artist.songs = (List<Song>) media;
} setArtist(artist);
}
setArtist(artist);
}
});
} }
}); });
} }

View file

@ -37,7 +37,9 @@ public class GenresFragment extends AbsLibraryPagerRecyclerViewFragment<GenreAda
@Override @Override
protected GenreAdapter createAdapter() { protected GenreAdapter createAdapter() {
List<Genre> dataSet = getAdapter() == null ? new ArrayList<>() : getAdapter().getDataSet(); List<Genre> 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 @Override