From a1ae9a2360ca67252bcb14981307778fca010036 Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 5 May 2020 12:58:46 +0900 Subject: [PATCH] improve image caching and fix several crashes --- .../adapter/AlbumCoverPagerAdapter.java | 3 +- .../gramophone/adapter/SearchAdapter.java | 9 +++-- .../adapter/album/AlbumAdapter.java | 3 +- .../adapter/album/HorizontalAlbumAdapter.java | 3 +- .../adapter/artist/ArtistAdapter.java | 4 +- .../adapter/song/ArtistSongAdapter.java | 14 +++---- .../adapter/song/PlaylistSongAdapter.java | 3 +- .../gramophone/adapter/song/SongAdapter.java | 6 ++- .../gramophone/glide/CustomGlideRequest.java | 24 +++++++++--- .../glide/audiocover/AudioFileCover.java | 1 - .../helper/menu/SongMenuHelper.java | 6 ++- .../com/kabouzeid/gramophone/model/Album.java | 33 +++++++++++++++-- .../kabouzeid/gramophone/model/Artist.java | 23 ++++++++++-- .../com/kabouzeid/gramophone/model/Song.java | 24 +++++++++--- .../gramophone/service/MusicService.java | 2 +- .../notification/PlayingNotificationImpl.java | 2 +- .../PlayingNotificationImpl24.java | 3 +- .../ui/activities/AlbumDetailActivity.java | 37 +++++++++++++------ .../ui/activities/ArtistDetailActivity.java | 30 ++++++++++----- .../ui/activities/MainActivity.java | 6 +-- .../fragments/player/AbsPlayerFragment.java | 6 ++- .../gramophone/util/NavigationUtil.java | 15 +------- .../gramophone/widgets/AppWidgetBig.java | 2 +- .../gramophone/widgets/AppWidgetCard.java | 2 +- .../gramophone/widgets/AppWidgetClassic.java | 2 +- .../gramophone/widgets/AppWidgetSmall.java | 2 +- 26 files changed, 178 insertions(+), 87 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumCoverPagerAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumCoverPagerAdapter.java index 83446301..7a57869c 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumCoverPagerAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/AlbumCoverPagerAdapter.java @@ -117,7 +117,8 @@ public class AlbumCoverPagerAdapter extends CustomFragmentStatePagerAdapter { } private void loadAlbumCover() { - CustomGlideRequest.Builder.from(Glide.with(getContext()), song.albumId) + CustomGlideRequest.Builder + .from(Glide.with(getContext()), song.primary) .generatePalette(getActivity()).build() .into(new CustomPaletteTarget(albumCover) { @Override diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/SearchAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/SearchAdapter.java index c0449384..9903e5af 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/SearchAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/SearchAdapter.java @@ -69,15 +69,16 @@ public class SearchAdapter extends RecyclerView.Adapter implements MaterialCab songTitle.setText(song.title); songInfo.setText(song.albumName); - CustomGlideRequest.Builder.from(Glide.with(activity), song.albumId) - .build() - .into(albumArt); + CustomGlideRequest.Builder + .from(Glide.with(activity), song.primary) + .build().into(albumArt); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { albumArt.setTransitionName(activity.getString(R.string.transition_album_art)); @@ -101,11 +102,8 @@ public class ArtistSongAdapter extends ArrayAdapter implements MaterialCab @Override public boolean onMenuItemClick(MenuItem item) { if (item.getItemId() == R.id.action_go_to_album) { - Pair[] albumPairs = new Pair[]{ - Pair.create(albumArt, activity.getResources().getString(R.string.transition_album_art)) - }; - - NavigationUtil.goToAlbum(activity, song.albumId, albumPairs); + Pair[] albumPairs = new Pair[]{Pair.create(albumArt, activity.getResources().getString(R.string.transition_album_art))}; + NavigationUtil.goToAlbum(activity, new Album(song), albumPairs); return true; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/song/PlaylistSongAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/song/PlaylistSongAdapter.java index ac999912..d8ff204d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/song/PlaylistSongAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/song/PlaylistSongAdapter.java @@ -11,6 +11,7 @@ import android.view.View; import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.interfaces.CabHolder; +import com.kabouzeid.gramophone.model.Album; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; @@ -83,7 +84,7 @@ public class PlaylistSongAdapter extends AbsOffsetSongAdapter { protected boolean onSongMenuItemClick(MenuItem item) { if (item.getItemId() == R.id.action_go_to_album) { Pair[] albumPairs = new Pair[]{Pair.create(image, activity.getString(R.string.transition_album_art))}; - NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition() - 1).albumId, albumPairs); + NavigationUtil.goToAlbum(activity, new Album(dataSet.get(getAdapterPosition() - 1)), albumPairs); return true; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/song/SongAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/song/SongAdapter.java index f6bba9eb..8549278a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/song/SongAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/song/SongAdapter.java @@ -25,6 +25,7 @@ import com.kabouzeid.gramophone.helper.SortOrder; import com.kabouzeid.gramophone.helper.menu.SongMenuHelper; import com.kabouzeid.gramophone.helper.menu.SongsMenuHelper; import com.kabouzeid.gramophone.interfaces.CabHolder; +import com.kabouzeid.gramophone.model.Album; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.util.MusicUtil; import com.kabouzeid.gramophone.util.NavigationUtil; @@ -132,7 +133,8 @@ public class SongAdapter extends AbsMultiSelectAdapter(); } + public Album(Song song) { + this.id = song.albumId; + this.title = song.albumName; + this.year = song.year; + + this.artistId = song.artistId; + this.artistName = song.artistName; + + this.primary = song.primary; + } + public Album() { this.songs = new ArrayList<>(); } @@ -90,6 +113,8 @@ public class Album implements Parcelable { dest.writeString(artistId); dest.writeString(artistName); + + dest.writeString(primary); } protected Album(Parcel in) { @@ -101,6 +126,8 @@ public class Album implements Parcelable { this.artistId = in.readString(); this.artistName = in.readString(); + + this.primary = in.readString(); } public static final Creator CREATOR = new Creator() { 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 2ebed6b6..d4272840 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/Artist.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/Artist.java @@ -5,6 +5,7 @@ import android.os.Parcelable; import org.jellyfin.apiclient.model.dto.BaseItemDto; import org.jellyfin.apiclient.model.dto.GenreDto; +import org.jellyfin.apiclient.model.entities.ImageType; import java.util.ArrayList; import java.util.List; @@ -16,12 +17,14 @@ public class Artist implements Parcelable { public String id; public String name; - public long duration; + + public String primary; public Artist(BaseItemDto itemDto) { this.id = itemDto.getId(); this.name = itemDto.getName(); - this.duration = itemDto.getRunTimeTicks() / 10000; + + this.primary = itemDto.getImageTags().containsKey(ImageType.Primary) ? id : null; this.genres = new ArrayList<>(); this.albums = new ArrayList<>(); @@ -34,6 +37,16 @@ public class Artist implements Parcelable { } } + public Artist(Album album) { + this.id = album.artistId; + this.name = album.artistName; + } + + public Artist(Song song) { + this.id = song.artistId; + this.name = song.artistName; + } + public Artist() { this.albums = new ArrayList<>(); this.songs = new ArrayList<>(); @@ -87,7 +100,8 @@ public class Artist implements Parcelable { public void writeToParcel(Parcel dest, int flags) { dest.writeString(id); dest.writeString(name); - dest.writeLong(duration); + + dest.writeString(primary); } protected Artist(Parcel in) { @@ -97,7 +111,8 @@ public class Artist implements Parcelable { this.id = in.readString(); this.name = in.readString(); - this.duration = in.readLong(); + + this.primary = in.readString(); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { 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 96c09449..56a63ae6 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/Song.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/Song.java @@ -17,9 +17,10 @@ public class Song implements Parcelable { public final String albumId; public final String albumName; - public final String artistId; - public final String artistName; + public String artistId; + public String artistName; + public String primary; public boolean favorite; public Song(BaseItemDto itemDto) { @@ -27,14 +28,20 @@ public class Song implements Parcelable { this.title = itemDto.getName(); this.trackNumber = itemDto.getIndexNumber() != null ? itemDto.getIndexNumber() : 0; this.year = itemDto.getProductionYear() != null ? itemDto.getProductionYear() : 0; - this.duration = itemDto.getRunTimeTicks() / 10000; + this.duration = itemDto.getRunTimeTicks() != null ? itemDto.getRunTimeTicks() / 10000 : 0; this.albumId = itemDto.getAlbumId(); this.albumName = itemDto.getAlbum(); - this.artistId = itemDto.getAlbumArtists().get(0).getId(); - this.artistName = itemDto.getAlbumArtists().get(0).getName(); + if (itemDto.getAlbumArtists().size() != 0) { + this.artistId = itemDto.getAlbumArtists().get(0).getId(); + this.artistName = itemDto.getAlbumArtists().get(0).getName(); + } else if (itemDto.getArtistItems().size() != 0) { + this.artistId = itemDto.getArtistItems().get(0).getId(); + this.artistName = itemDto.getArtistItems().get(0).getName(); + } + this.primary = itemDto.getAlbumPrimaryImageTag() != null ? albumId : null; this.favorite = itemDto.getUserData() != null && itemDto.getUserData().getIsFavorite(); } @@ -51,6 +58,7 @@ public class Song implements Parcelable { this.artistId = artistId; this.artistName = artistName; + this.primary = null; this.favorite = false; } @@ -91,6 +99,9 @@ public class Song implements Parcelable { dest.writeString(this.artistId); dest.writeString(this.artistName); + + dest.writeString(this.primary); + dest.writeString(Boolean.toString(favorite)); } protected Song(Parcel in) { @@ -106,7 +117,8 @@ public class Song implements Parcelable { this.artistId = in.readString(); this.artistName = in.readString(); - this.favorite = false; + this.primary = in.readString(); + this.favorite = Boolean.valueOf(in.readString()); } public static final Creator CREATOR = new Creator() { diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java index 4cb4253f..1f54a148 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java @@ -581,7 +581,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP if (PreferenceUtil.getInstance(this).getShowAlbumCover()) { final Point screenSize = Util.getScreenSize(MusicService.this); final BitmapRequestBuilder request = CustomGlideRequest.Builder - .from(Glide.with(MusicService.this), song.albumId) + .from(Glide.with(MusicService.this), song.primary) .asBitmap().build(); if (PreferenceUtil.getInstance(this).getBlurAlbumCover()) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl.java b/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl.java index 01ef2714..4bbefbcc 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl.java @@ -88,7 +88,7 @@ public class PlayingNotificationImpl extends PlayingNotification { if (target != null) { Glide.clear(target); } - target = CustomGlideRequest.Builder.from(Glide.with(service), song.albumId) + target = CustomGlideRequest.Builder.from(Glide.with(service), song.primary) .generatePalette(service).build() .into(new SimpleTarget(bigNotificationImageSize, bigNotificationImageSize) { @Override diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl24.java b/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl24.java index a24966ee..1e46b940 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl24.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/notification/PlayingNotificationImpl24.java @@ -50,7 +50,8 @@ public class PlayingNotificationImpl24 extends PlayingNotification { final PendingIntent deleteIntent = PendingIntent.getService(service, 0, intent, 0); final int bigNotificationImageSize = service.getResources().getDimensionPixelSize(R.dimen.notification_big_image_size); - service.runOnUiThread(() -> CustomGlideRequest.Builder.from(Glide.with(service), song.albumId) + service.runOnUiThread(() -> CustomGlideRequest.Builder + .from(Glide.with(service), song.primary) .generatePalette(service).build() .into(new SimpleTarget(bigNotificationImageSize, bigNotificationImageSize) { @Override 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 dda11a2a..c85224a6 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 @@ -1,11 +1,14 @@ package com.kabouzeid.gramophone.ui.activities; import android.graphics.PorterDuff; +import android.os.Build; import android.os.Bundle; + import androidx.annotation.NonNull; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.appcompat.widget.Toolbar; + import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -15,6 +18,8 @@ import android.widget.TextView; import com.afollestad.materialcab.MaterialCab; import com.afollestad.materialdialogs.util.DialogUtils; import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestListener; +import com.bumptech.glide.request.target.Target; import com.github.ksoichiro.android.observablescrollview.ObservableRecyclerView; import com.kabouzeid.appthemehelper.util.ColorUtil; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; @@ -24,12 +29,14 @@ import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog; import com.kabouzeid.gramophone.dialogs.SleepTimerDialog; import com.kabouzeid.gramophone.glide.CustomGlideRequest; import com.kabouzeid.gramophone.glide.CustomPaletteTarget; +import com.kabouzeid.gramophone.glide.palette.BitmapPaletteWrapper; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.interfaces.MediaCallback; import com.kabouzeid.gramophone.interfaces.PaletteColorHolder; import com.kabouzeid.gramophone.misc.SimpleObservableScrollViewCallbacks; import com.kabouzeid.gramophone.model.Album; +import com.kabouzeid.gramophone.model.Artist; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.kabouzeid.gramophone.util.MusicUtil; @@ -46,7 +53,6 @@ import butterknife.ButterKnife; public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder { public static final String EXTRA_ALBUM = "extra_album"; - public static final String EXTRA_ALBUM_ID = "extra_album_id"; private Album album; @@ -94,15 +100,11 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements setUpToolBar(); setUpViews(); + if (Build.VERSION.SDK_INT > 21) postponeEnterTransition(); Album album = getIntent().getExtras().getParcelable(EXTRA_ALBUM); - String id = getIntent().getExtras().getString(EXTRA_ALBUM_ID); + setAlbum(album); - if (album != null) { - setAlbum(album); - id = album.getId(); - } - - QueryUtil.getAlbum(id, new MediaCallback() { + QueryUtil.getAlbum(album.id, new MediaCallback() { @Override public void onLoadMedia(List media) { Album album = (Album) media.get(0); @@ -153,7 +155,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements setUpSongsAdapter(); artistTextView.setOnClickListener(v -> { if (album != null) { - NavigationUtil.goToArtist(AlbumDetailActivity.this, album.getArtistId()); + NavigationUtil.goToArtist(AlbumDetailActivity.this, new Artist(album)); } }); @@ -161,8 +163,21 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements } private void loadAlbumCover() { - CustomGlideRequest.Builder.from(Glide.with(this), getAlbum().id) + CustomGlideRequest.Builder + .from(Glide.with(this), getAlbum().primary) .generatePalette(this).build() + .listener(new RequestListener() { + @Override + public boolean onException(Exception e, Object model, Target target, boolean isFirstResource) { + return false; + } + + @Override + public boolean onResourceReady(BitmapPaletteWrapper resource, Object model, Target target, boolean dataSource, boolean isFirstResource) { + if (Build.VERSION.SDK_INT > 21) startPostponedEnterTransition(); + return false; + } + }) .dontAnimate() .into(new CustomPaletteTarget(albumArtImageView) { @Override @@ -261,7 +276,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements super.onBackPressed(); return true; case R.id.action_go_to_artist: - NavigationUtil.goToArtist(this, getAlbum().getArtistId()); + NavigationUtil.goToArtist(this, new Artist(album)); return true; } return super.onOptionsItemSelected(item); 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 eb591e41..be593a87 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 @@ -1,6 +1,7 @@ package com.kabouzeid.gramophone.ui.activities; import android.graphics.PorterDuff; +import android.os.Build; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; @@ -21,6 +22,8 @@ import java.util.List; import com.afollestad.materialcab.MaterialCab; import com.afollestad.materialdialogs.util.DialogUtils; import com.bumptech.glide.Glide; +import com.bumptech.glide.request.RequestListener; +import com.bumptech.glide.request.target.Target; import com.github.ksoichiro.android.observablescrollview.ObservableListView; import com.kabouzeid.appthemehelper.util.ColorUtil; import com.kabouzeid.appthemehelper.util.MaterialValueHelper; @@ -31,6 +34,7 @@ import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog; import com.kabouzeid.gramophone.dialogs.SleepTimerDialog; import com.kabouzeid.gramophone.glide.CustomGlideRequest; import com.kabouzeid.gramophone.glide.CustomPaletteTarget; +import com.kabouzeid.gramophone.glide.palette.BitmapPaletteWrapper; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.interfaces.CabHolder; import com.kabouzeid.gramophone.interfaces.MediaCallback; @@ -49,7 +53,6 @@ import org.jellyfin.apiclient.model.querying.ItemQuery; public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder { public static final String EXTRA_ARTIST = "extra_artist"; - public static final String EXTRA_ARTIST_ID = "extra_artist_id"; @BindView(R.id.list) ObservableListView songListView; @@ -115,15 +118,11 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement setUpToolbar(); setUpViews(); + if (Build.VERSION.SDK_INT > 21) postponeEnterTransition(); Artist artist = getIntent().getExtras().getParcelable(EXTRA_ARTIST); - String id = getIntent().getExtras().getString(EXTRA_ARTIST_ID); + setArtist(artist); - if (artist != null) { - setArtist(artist); - id = artist.getId(); - } - - QueryUtil.getArtist(id, new MediaCallback() { + QueryUtil.getArtist(artist.id, new MediaCallback() { @Override public void onLoadMedia(List media) { Artist artist = (Artist) media.get(0); @@ -210,8 +209,21 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement } private void loadArtistImage() { - CustomGlideRequest.Builder.from(Glide.with(this), artist.id) + CustomGlideRequest.Builder + .from(Glide.with(this), artist.primary) .generatePalette(this).build() + .listener(new RequestListener() { + @Override + public boolean onException(Exception e, Object model, Target target, boolean isFirstResource) { + return false; + } + + @Override + public boolean onResourceReady(BitmapPaletteWrapper resource, Object model, Target target, boolean dataSource, boolean isFirstResource) { + if (Build.VERSION.SDK_INT > 21) startPostponedEnterTransition(); + return false; + } + }) .dontAnimate() .into(new CustomPaletteTarget(artistImage) { @Override diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index 8be9d529..9828a17f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -202,9 +202,9 @@ public class MainActivity extends AbsSlidingMusicPanelActivity { ((TextView) navigationDrawerHeader.findViewById(R.id.title)).setText(song.title); ((TextView) navigationDrawerHeader.findViewById(R.id.text)).setText(MusicUtil.getSongInfoString(song)); - CustomGlideRequest.Builder.from(Glide.with(this), song.albumId) - .build() - .into(((ImageView) navigationDrawerHeader.findViewById(R.id.image))); + CustomGlideRequest.Builder + .from(Glide.with(this), song.primary) + .build().into(((ImageView) navigationDrawerHeader.findViewById(R.id.image))); } else { if (navigationDrawerHeader != null) { navigationView.removeHeaderView(navigationDrawerHeader); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java index a9ff8afc..34b3c54f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/AbsPlayerFragment.java @@ -15,6 +15,8 @@ import com.kabouzeid.gramophone.dialogs.SongDetailDialog; import com.kabouzeid.gramophone.dialogs.SongShareDialog; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.interfaces.PaletteColorHolder; +import com.kabouzeid.gramophone.model.Album; +import com.kabouzeid.gramophone.model.Artist; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.ui.fragments.AbsMusicServiceFragment; import com.kabouzeid.gramophone.util.MusicUtil; @@ -67,10 +69,10 @@ public abstract class AbsPlayerFragment extends AbsMusicServiceFragment implemen SongDetailDialog.create(song).show(getFragmentManager(), "SONG_DETAIL"); return true; case R.id.action_go_to_album: - NavigationUtil.goToAlbum(getActivity(), song.albumId); + NavigationUtil.goToAlbum(getActivity(), new Album(song)); return true; case R.id.action_go_to_artist: - NavigationUtil.goToArtist(getActivity(), song.artistId); + NavigationUtil.goToArtist(getActivity(), new Artist(song)); return true; } return false; diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java index df69802b..eee3fb0b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/NavigationUtil.java @@ -11,6 +11,7 @@ import com.kabouzeid.gramophone.model.Album; import com.kabouzeid.gramophone.model.Artist; import com.kabouzeid.gramophone.model.Genre; import com.kabouzeid.gramophone.model.Playlist; +import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.ui.activities.AlbumDetailActivity; import com.kabouzeid.gramophone.ui.activities.ArtistDetailActivity; import com.kabouzeid.gramophone.ui.activities.GenreDetailActivity; @@ -46,20 +47,6 @@ public class NavigationUtil { startActivitySharedElements(activity, intent, sharedElements); } - public static void goToArtist(@NonNull final Activity activity, final String artist, @Nullable Pair... sharedElements) { - final Intent intent = new Intent(activity, ArtistDetailActivity.class); - intent.putExtra(ArtistDetailActivity.EXTRA_ARTIST_ID, artist); - - startActivitySharedElements(activity, intent, sharedElements); - } - - public static void goToAlbum(@NonNull final Activity activity, final String album, @Nullable Pair... sharedElements) { - final Intent intent = new Intent(activity, AlbumDetailActivity.class); - intent.putExtra(AlbumDetailActivity.EXTRA_ALBUM_ID, album); - - startActivitySharedElements(activity, intent, sharedElements); - } - public static void startActivitySharedElements(@NonNull final Activity activity, Intent intent, @Nullable Pair... sharedElements) { if (sharedElements != null && sharedElements.length > 0) { // noinspection unchecked diff --git a/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetBig.java b/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetBig.java index a829360e..193d03df 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetBig.java +++ b/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetBig.java @@ -94,7 +94,7 @@ public class AppWidgetBig extends BaseAppWidget { if (target != null) { Glide.clear(target); } - target = CustomGlideRequest.Builder.from(Glide.with(appContext), song.albumId) + target = CustomGlideRequest.Builder.from(Glide.with(appContext), song.primary) .asBitmap().build() .into(new SimpleTarget(widgetImageSize, widgetImageSize) { @Override diff --git a/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetCard.java b/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetCard.java index 0142c372..db425f7a 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetCard.java +++ b/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetCard.java @@ -98,7 +98,7 @@ public class AppWidgetCard extends BaseAppWidget { if (target != null) { Glide.clear(target); } - target = CustomGlideRequest.Builder.from(Glide.with(service), song.albumId) + target = CustomGlideRequest.Builder.from(Glide.with(service), song.primary) .generatePalette(service).build() .centerCrop() .into(new SimpleTarget(imageSize, imageSize) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetClassic.java b/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetClassic.java index 66a99845..d98e29cb 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetClassic.java +++ b/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetClassic.java @@ -91,7 +91,7 @@ public class AppWidgetClassic extends BaseAppWidget { if (target != null) { Glide.clear(target); } - target = CustomGlideRequest.Builder.from(Glide.with(appContext), song.albumId) + target = CustomGlideRequest.Builder.from(Glide.with(appContext), song.primary) .generatePalette(service).build() .centerCrop() .into(new SimpleTarget(imageSize, imageSize) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetSmall.java b/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetSmall.java index 01ec80f9..02c87272 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetSmall.java +++ b/app/src/main/java/com/kabouzeid/gramophone/widgets/AppWidgetSmall.java @@ -97,7 +97,7 @@ public class AppWidgetSmall extends BaseAppWidget { if (target != null) { Glide.clear(target); } - target = CustomGlideRequest.Builder.from(Glide.with(appContext), song.albumId) + target = CustomGlideRequest.Builder.from(Glide.with(appContext), song.primary) .generatePalette(service).build() .centerCrop() .into(new SimpleTarget(imageSize, imageSize) {