diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/Album.java b/app/src/main/java/com/kabouzeid/gramophone/model/Album.java index 3fbf2f2f..13bed06e 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/Album.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/Album.java @@ -13,7 +13,7 @@ import java.util.List; * @author Karim Abou Zeid (kabouzeid) */ public class Album implements Parcelable { - public final List songs; + public List songs; public String id; public String title; diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/Song.java b/app/src/main/java/com/kabouzeid/gramophone/model/Song.java index ce678247..cc33bfc1 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/Song.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/Song.java @@ -3,6 +3,8 @@ package com.kabouzeid.gramophone.model; import android.os.Parcel; import android.os.Parcelable; +import org.jellyfin.apiclient.model.dto.BaseItemDto; + /** * @author Karim Abou Zeid (kabouzeid) */ @@ -21,6 +23,20 @@ public class Song implements Parcelable { public final String artistId; public final String artistName; + public Song(BaseItemDto itemDto) { + this.id = itemDto.getId(); + this.title = itemDto.getName(); + this.trackNumber = itemDto.getIndexNumber(); + this.year = itemDto.getProductionYear(); + this.duration = itemDto.getRunTimeTicks(); + this.data = ""; + this.dateModified = 2; + this.albumId = itemDto.getAlbumId(); + this.albumName = itemDto.getAlbum(); + this.artistId = itemDto.getAlbumArtists().get(0).getId(); + this.artistName = itemDto.getAlbumArtists().get(0).getName(); + } + public Song(String id, String title, int trackNumber, int year, long duration, String data, long dateModified, String albumId, String albumName, String artistId, String artistName) { this.id = id; this.title = title; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index ba25a21e..89869257 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -27,7 +27,6 @@ import com.kabouzeid.gramophone.glide.CustomPaletteTarget; import com.kabouzeid.gramophone.glide.SongGlideRequest; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.interfaces.CabHolder; -import com.kabouzeid.gramophone.interfaces.LoaderIds; import com.kabouzeid.gramophone.interfaces.MediaCallback; import com.kabouzeid.gramophone.interfaces.PaletteColorHolder; import com.kabouzeid.gramophone.misc.SimpleObservableScrollViewCallbacks; @@ -96,7 +95,16 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements QueryUtil.getAlbum(getIntent().getExtras().getString(EXTRA_ALBUM_ID), new MediaCallback() { @Override public void onLoadMedia(List media) { - setAlbum((Album) media.get(0)); + Album album = (Album) media.get(0); + + setAlbum(album); + QueryUtil.getSongs(album.id, new MediaCallback() { + @Override + public void onLoadMedia(List media) { + album.songs = (List) media; + setAlbum(album); + } + }); } }); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/QueryUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/QueryUtil.java index bfab030b..4567836f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/QueryUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/QueryUtil.java @@ -4,6 +4,7 @@ import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.interfaces.MediaCallback; import com.kabouzeid.gramophone.model.Album; import com.kabouzeid.gramophone.model.Artist; +import com.kabouzeid.gramophone.model.Song; import org.jellyfin.apiclient.interaction.Response; import org.jellyfin.apiclient.model.dto.BaseItemDto; @@ -54,6 +55,30 @@ public class QueryUtil { }); } + public static void getSongs(String album, MediaCallback callback) { + ItemQuery query = new ItemQuery(); + query.setIncludeItemTypes(new String[]{"Audio"}); + query.setUserId(App.getApiClient().getCurrentUserId()); + query.setParentId(album); + query.setRecursive(true); + App.getApiClient().GetItemsAsync(query, new Response() { + @Override + public void onResponse(ItemsResult result) { + List songs = new ArrayList<>(); + for (BaseItemDto itemDto : result.getItems()) { + songs.add(new Song(itemDto)); + } + + callback.onLoadMedia(songs); + } + + @Override + public void onError(Exception exception) { + exception.printStackTrace(); + } + }); + } + public static void getArtists(MediaCallback callback) { ItemQuery query = new ItemQuery(); query.setIncludeItemTypes(new String[]{"MusicArtist"});