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 fe6979e0..b4490349 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/SearchAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/SearchAdapter.java @@ -83,15 +83,15 @@ public class SearchAdapter extends RecyclerView.Adapter getSongList(@NonNull List artists) { final ArrayList songs = new ArrayList<>(); for (Artist artist : artists) { - songs.addAll(ArtistSongLoader.getArtistSongList(activity, artist.id)); // maybe async in future? + songs.addAll(artist.getSongs()); // maybe async in future? } return songs; } @@ -188,7 +187,7 @@ public class ArtistAdapter extends AbsMultiSelectAdapter albums = new ArrayList<>(); if (songs != null) { for (Song song : songs) { - Album album = get(albums, song.albumId); - if (album == null) { - album = new Album(); - albums.add(album); - } - album.songs.add(song); + getOrCreateAlbum(albums, song.albumId).songs.add(song); } } return albums; } - private static Album get(ArrayList albums, int albumId) { + private static Album getOrCreateAlbum(ArrayList albums, int albumId) { for (Album album : albums) { if (!album.songs.isEmpty() && album.songs.get(0).albumId == albumId) { return album; } } - return null; + Album album = new Album(); + albums.add(album); + return album; } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistAlbumLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistAlbumLoader.java deleted file mode 100644 index fa7902e4..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistAlbumLoader.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.kabouzeid.gramophone.loader; - -import android.content.Context; -import android.provider.MediaStore; -import android.support.annotation.NonNull; - -import com.kabouzeid.gramophone.helper.SortOrder; -import com.kabouzeid.gramophone.model.Album; -import com.kabouzeid.gramophone.model.Song; -import com.kabouzeid.gramophone.util.PreferenceUtil; - -import java.util.ArrayList; - -/** - * @author Karim Abou Zeid (kabouzeid) - */ -public class ArtistAlbumLoader extends AlbumLoader { - - @NonNull - public static ArrayList getAlbums(@NonNull final Context context, final int artistId) { - ArrayList songs = SongLoader.getSongs(SongLoader.makeSongCursor( - context, - MediaStore.Audio.AudioColumns.ARTIST_ID + "=?", - new String[]{String.valueOf(artistId)}, - SortOrder.SongSortOrder.SONG_YEAR + ", " + PreferenceUtil.getInstance(context).getAlbumSongSortOrder() - )); - return splitIntoAlbums(songs); - } -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistLoader.java index b261e3ac..566c64f7 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/ArtistLoader.java @@ -1,14 +1,13 @@ package com.kabouzeid.gramophone.loader; import android.content.Context; -import android.database.Cursor; -import android.provider.BaseColumns; -import android.provider.MediaStore; -import android.provider.MediaStore.Audio.ArtistColumns; +import android.provider.MediaStore.Audio.AudioColumns; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import com.kabouzeid.gramophone.model.Album; import com.kabouzeid.gramophone.model.Artist; +import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.util.PreferenceUtil; import java.util.ArrayList; @@ -17,79 +16,62 @@ import java.util.ArrayList; * @author Karim Abou Zeid (kabouzeid) */ public class ArtistLoader { - - @NonNull - public static ArrayList getAllArtists(@NonNull Context context) { - Cursor cursor = makeArtistCursor(context, null, null); - return getArtists(cursor); + public static String getSongLoaderSortOrder(Context context) { + return PreferenceUtil.getInstance(context).getArtistSortOrder() + ", " + PreferenceUtil.getInstance(context).getArtistAlbumSortOrder() + ", " + PreferenceUtil.getInstance(context).getAlbumSongSortOrder(); } @NonNull - public static ArrayList getArtists(@NonNull Context context, String query) { - Cursor cursor = makeArtistCursor(context, ArtistColumns.ARTIST + " LIKE ?", new String[]{"%" + query + "%"}); - return getArtists(cursor); + public static ArrayList getAllArtists(@NonNull final Context context) { + ArrayList songs = SongLoader.getSongs(SongLoader.makeSongCursor( + context, + null, + null, + getSongLoaderSortOrder(context)) + ); + return splitIntoArtists(AlbumLoader.splitIntoAlbums(songs)); } @NonNull - public static Artist getArtist(@NonNull Context context, int artistId) { - Cursor cursor = makeArtistCursor(context, BaseColumns._ID + "=?", new String[]{String.valueOf(artistId)}); - return getArtist(cursor); + public static ArrayList getArtists(@NonNull final Context context, String query) { + ArrayList songs = SongLoader.getSongs(SongLoader.makeSongCursor( + context, + AudioColumns.ARTIST + " LIKE ?", + new String[]{"%" + query + "%"}, + getSongLoaderSortOrder(context)) + ); + return splitIntoArtists(AlbumLoader.splitIntoAlbums(songs)); } @NonNull - public static ArrayList getArtists(@Nullable Cursor cursor) { + public static Artist getArtist(@NonNull final Context context, int artistId) { + ArrayList songs = SongLoader.getSongs(SongLoader.makeSongCursor( + context, + AudioColumns.ARTIST_ID + "=?", + new String[]{String.valueOf(artistId)}, + getSongLoaderSortOrder(context)) + ); + return new Artist(AlbumLoader.splitIntoAlbums(songs)); + } + + @NonNull + public static ArrayList splitIntoArtists(@Nullable final ArrayList albums) { ArrayList artists = new ArrayList<>(); - if (cursor != null && cursor.moveToFirst()) { - do { - artists.add(getArtistFromCursorImpl(cursor)); - } while (cursor.moveToNext()); - } - - if (cursor != null) { - cursor.close(); + if (albums != null) { + for (Album album : albums) { + getOrCreateArtist(artists, album.getArtistId()).albums.add(album); + } } return artists; } - @NonNull - public static Artist getArtist(@Nullable Cursor cursor) { - Artist artist = new Artist(); - if (cursor != null && cursor.moveToFirst()) { - artist = getArtistFromCursorImpl(cursor); - } - - if (cursor != null) { - cursor.close(); - } - return artist; - } - - @NonNull - private static Artist getArtistFromCursorImpl(@NonNull Cursor cursor) { - final int id = cursor.getInt(0); - final String artistName = cursor.getString(1); - final int albumCount = cursor.getInt(2); - final int songCount = cursor.getInt(3); - - return new Artist(id, artistName, albumCount, songCount); - } - - @Nullable - public static Cursor makeArtistCursor(@NonNull final Context context, final String selection, final String[] values) { - try { - return context.getContentResolver().query(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI, - new String[]{ - /* 0 */ - BaseColumns._ID, - /* 1 */ - ArtistColumns.ARTIST, - /* 2 */ - ArtistColumns.NUMBER_OF_ALBUMS, - /* 3 */ - ArtistColumns.NUMBER_OF_TRACKS - }, selection, values, PreferenceUtil.getInstance(context).getArtistSortOrder()); - } catch (SecurityException e) { - return null; + private static Artist getOrCreateArtist(ArrayList artists, int artistId) { + for (Artist artist : artists) { + if (!artist.albums.isEmpty() && !artist.albums.get(0).songs.isEmpty() && artist.albums.get(0).songs.get(0).artistId == artistId) { + return artist; + } } + Artist album = new Artist(); + artists.add(album); + return album; } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/SongLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/SongLoader.java index 617392b6..4c3c65bc 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/SongLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/SongLoader.java @@ -57,7 +57,7 @@ public class SongLoader { if (cursor != null && cursor.moveToFirst()) { song = getSongFromCursorImpl(cursor); } else { - song = new Song(); + song = Song.EMPTY_SONG; } if (cursor != null) { cursor.close(); 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 372e7807..4983ab6f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/Album.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/Album.java @@ -44,9 +44,13 @@ public class Album implements Parcelable { return safeGetFirstSong().dateModified; } + public int getSongCount() { + return songs.size(); + } + @NonNull public Song safeGetFirstSong() { - return songs.isEmpty() ? new Song() : songs.get(0); + return songs.isEmpty() ? Song.EMPTY_SONG : songs.get(0); } @Override 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 bad86935..3844dc56 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/Artist.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/Artist.java @@ -2,28 +2,55 @@ package com.kabouzeid.gramophone.model; import android.os.Parcel; import android.os.Parcelable; +import android.support.annotation.NonNull; + +import java.util.ArrayList; /** * @author Karim Abou Zeid (kabouzeid) */ public class Artist implements Parcelable { - public final int id; - public final String name; - public final int albumCount; - public final int songCount; + public final ArrayList albums; - public Artist(final int id, final String name, final int albumCount, final int songCount) { - this.id = id; - this.name = name; - this.songCount = songCount; - this.albumCount = albumCount; + public Artist(ArrayList albums) { + this.albums = albums; } public Artist() { - id = -1; - name = ""; - songCount = -1; - albumCount = -1; + this.albums = new ArrayList<>(); + } + + public int getId() { + return safeGetFirstAlbum().getArtistId(); + } + + public String getName() { + return safeGetFirstAlbum().getArtistName(); + } + + public int getSongCount() { + int songCount = 0; + for (Album album : albums) { + songCount += album.getSongCount(); + } + return songCount; + } + + public int getAlbumCount() { + return albums.size(); + } + + public ArrayList getSongs() { + ArrayList songs = new ArrayList<>(); + for (Album album : albums) { + songs.addAll(album.songs); + } + return songs; + } + + @NonNull + public Album safeGetFirstAlbum() { + return albums.isEmpty() ? new Album() : albums.get(0); } @Override @@ -33,29 +60,19 @@ public class Artist implements Parcelable { Artist artist = (Artist) o; - if (id != artist.id) return false; - if (albumCount != artist.albumCount) return false; - if (songCount != artist.songCount) return false; - return name != null ? name.equals(artist.name) : artist.name == null; + return albums != null ? albums.equals(artist.albums) : artist.albums == null; } @Override public int hashCode() { - int result = id; - result = 31 * result + (name != null ? name.hashCode() : 0); - result = 31 * result + albumCount; - result = 31 * result + songCount; - return result; + return albums != null ? albums.hashCode() : 0; } @Override public String toString() { return "Artist{" + - "id=" + id + - ", name='" + name + '\'' + - ", albumCount=" + albumCount + - ", songCount=" + songCount + + "albums=" + albums + '}'; } @@ -67,24 +84,20 @@ public class Artist implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(this.id); - dest.writeString(this.name); - dest.writeInt(this.albumCount); - dest.writeInt(this.songCount); + dest.writeTypedList(this.albums); } protected Artist(Parcel in) { - this.id = in.readInt(); - this.name = in.readString(); - this.albumCount = in.readInt(); - this.songCount = in.readInt(); + this.albums = in.createTypedArrayList(Album.CREATOR); } public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override public Artist createFromParcel(Parcel source) { return new Artist(source); } + @Override public Artist[] newArray(int size) { return new Artist[size]; } diff --git a/app/src/main/java/com/kabouzeid/gramophone/model/PlaylistSong.java b/app/src/main/java/com/kabouzeid/gramophone/model/PlaylistSong.java index 6283347a..a4543534 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/PlaylistSong.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/PlaylistSong.java @@ -3,6 +3,7 @@ package com.kabouzeid.gramophone.model; import android.os.Parcel; public class PlaylistSong extends Song { + public static final PlaylistSong EMPTY_PLAYLIST_SONG = new PlaylistSong(-1, "", -1, -1, -1, "", -1, -1, "", -1, "", -1, -1); public final int playlistId; public final int idInPlayList; @@ -13,12 +14,6 @@ public class PlaylistSong extends Song { this.idInPlayList = idInPlayList; } - public PlaylistSong() { - super(); - playlistId = -1; - idInPlayList = -1; - } - @Override public boolean equals(Object o) { if (this == o) return true; 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 9774efd3..b2ed1033 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/model/Song.java +++ b/app/src/main/java/com/kabouzeid/gramophone/model/Song.java @@ -7,6 +7,8 @@ import android.os.Parcelable; * @author Karim Abou Zeid (kabouzeid) */ public class Song implements Parcelable { + public static final Song EMPTY_SONG = new Song(-1, "", -1, -1, -1, "", -1, -1, "", -1, ""); + public final int id; public final String title; public final int trackNumber; @@ -33,20 +35,6 @@ public class Song implements Parcelable { this.artistName = artistName; } - public Song() { - this.id = -1; - this.title = ""; - this.trackNumber = -1; - this.year = -1; - this.duration = -1; - this.data = ""; - this.dateModified = -1; - this.albumId = -1; - this.albumName = ""; - this.artistId = -1; - this.artistName = ""; - } - @Override public boolean equals(Object o) { if (this == o) return true; 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 cfa73078..9884dd04 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java @@ -574,7 +574,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP if (position >= 0 && position < getPlayingQueue().size()) { return getPlayingQueue().get(position); } else { - return new Song(); + return Song.EMPTY_SONG; } } @@ -1233,7 +1233,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP public static final String TAG = SongPlayCountHelper.class.getSimpleName(); private StopWatch stopWatch = new StopWatch(); - private Song song = new Song(); + private Song song = Song.EMPTY_SONG; public Song getSong() { return song; 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 7876c67d..4f51b775 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 @@ -41,26 +41,20 @@ import com.kabouzeid.gramophone.glide.palette.BitmapPaletteTranscoder; import com.kabouzeid.gramophone.glide.palette.BitmapPaletteWrapper; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.interfaces.CabHolder; +import com.kabouzeid.gramophone.interfaces.LoaderIds; import com.kabouzeid.gramophone.interfaces.PaletteColorHolder; import com.kabouzeid.gramophone.lastfm.rest.LastFMRestClient; import com.kabouzeid.gramophone.lastfm.rest.model.LastFmArtist; -import com.kabouzeid.gramophone.loader.ArtistAlbumLoader; import com.kabouzeid.gramophone.loader.ArtistLoader; -import com.kabouzeid.gramophone.loader.ArtistSongLoader; -import com.kabouzeid.gramophone.interfaces.LoaderIds; import com.kabouzeid.gramophone.misc.SimpleObservableScrollViewCallbacks; import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader; -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.ArtistSignatureUtil; import com.kabouzeid.gramophone.util.NavigationUtil; import com.kabouzeid.gramophone.util.PhonographColorUtil; import com.kabouzeid.gramophone.util.Util; -import java.util.ArrayList; - import butterknife.Bind; import butterknife.ButterKnife; import retrofit2.Call; @@ -70,7 +64,7 @@ import retrofit2.Response; /** * Be careful when changing things in this Activity! */ -public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder, LoaderManager.LoaderCallbacks { +public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder, LoaderManager.LoaderCallbacks { public static final String TAG = ArtistDetailActivity.class.getSimpleName(); private static final int LOADER_ID = LoaderIds.ARTIST_DETAIL_ACTIVITY; @@ -98,7 +92,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private int toolbarColor; private float toolbarAlpha; - private ArtistData artistData; + private Artist artist; @Nullable private Spanned biography; private HorizontalAlbumAdapter albumAdapter; @@ -181,7 +175,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement songListView.setScrollViewCallbacks(observableScrollViewCallbacks); songListView.addHeaderView(songListHeader); - songAdapter = new ArtistSongAdapter(this, getArtistData().songs, this); + songAdapter = new ArtistSongAdapter(this, getArtist().getSongs(), this); songListView.setAdapter(songAdapter); final View contentView = getWindow().getDecorView().findViewById(android.R.id.content); @@ -200,7 +194,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private void setUpAlbumRecyclerView() { albumRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); - albumAdapter = new HorizontalAlbumAdapter(this, getArtistData().albums, this); + albumAdapter = new HorizontalAlbumAdapter(this, getArtist().albums, this); albumRecyclerView.setAdapter(albumAdapter); albumAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { @Override @@ -216,7 +210,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement } private void loadBiography() { - lastFMRestClient.getApiService().getArtistInfo(getArtistData().artist.name, null).enqueue(new Callback() { + lastFMRestClient.getApiService().getArtistInfo(getArtist().getName(), null).enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { LastFmArtist lastFmArtist = response.body(); @@ -240,7 +234,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private MaterialDialog getBiographyDialog() { return new MaterialDialog.Builder(ArtistDetailActivity.this) - .title(getArtistData().artist.name) + .title(getArtist().getName()) .content(biography != null ? biography : "") .positiveText(android.R.string.ok) .build(); @@ -248,15 +242,15 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement private void loadArtistImage(final boolean forceDownload) { if (forceDownload) { - ArtistSignatureUtil.getInstance(this).updateArtistSignature(getArtistData().artist.name); + ArtistSignatureUtil.getInstance(this).updateArtistSignature(getArtist().getName()); } Glide.with(this) - .load(new ArtistImage(getArtistData().artist.name, forceDownload)) + .load(new ArtistImage(getArtist().getName(), forceDownload)) .asBitmap() .transcode(new BitmapPaletteTranscoder(this), BitmapPaletteWrapper.class) .diskCacheStrategy(DiskCacheStrategy.SOURCE) .placeholder(R.drawable.default_artist_image) - .signature(ArtistSignatureUtil.getInstance(this).getArtistSignature(getArtistData().artist.name)) + .signature(ArtistSignatureUtil.getInstance(this).getArtistSignature(getArtist().getName())) .dontAnimate() .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) .listener(new RequestListener() { @@ -399,39 +393,39 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement setLightStatusbar(false); } - private void setArtistData(ArtistData artistData) { - this.artistData = artistData; + private void setArtist(Artist artist) { + this.artist = artist; loadArtistImage(false); loadBiography(); - artistName.setText(artistData.artist.name); - songAdapter.swapDataSet(artistData.songs); - albumAdapter.swapDataSet(artistData.albums); + artistName.setText(artist.getName()); + songAdapter.swapDataSet(artist.getSongs()); + albumAdapter.swapDataSet(artist.albums); } - private ArtistData getArtistData() { - if (artistData == null) artistData = new ArtistData(); - return artistData; + private Artist getArtist() { + if (artist == null) artist = new Artist(); + return artist; } @Override - public Loader onCreateLoader(int id, Bundle args) { + public Loader onCreateLoader(int id, Bundle args) { return new AsyncArtistDataLoader(this, args.getInt(EXTRA_ARTIST_ID)); } @Override - public void onLoadFinished(Loader loader, ArtistData data) { + public void onLoadFinished(Loader loader, Artist data) { supportStartPostponedEnterTransition(); - setArtistData(data); + setArtist(data); } @Override - public void onLoaderReset(Loader loader) { - this.artistData = new ArtistData(); - songAdapter.swapDataSet(artistData.songs); - albumAdapter.swapDataSet(artistData.albums); + public void onLoaderReset(Loader loader) { + this.artist = new Artist(); + songAdapter.swapDataSet(artist.getSongs()); + albumAdapter.swapDataSet(artist.albums); } - private static class AsyncArtistDataLoader extends WrappedAsyncTaskLoader { + private static class AsyncArtistDataLoader extends WrappedAsyncTaskLoader { private final int artistId; public AsyncArtistDataLoader(Context context, int artistId) { @@ -440,29 +434,8 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement } @Override - public ArtistData loadInBackground() { - Artist artist = ArtistLoader.getArtist(getContext(), artistId); - ArrayList songs = ArtistSongLoader.getArtistSongList(getContext(), artist.id); - ArrayList albums = ArtistAlbumLoader.getAlbums(getContext(), artist.id); - return new ArtistData(artist, songs, albums); - } - } - - static class ArtistData { - public final Artist artist; - public final ArrayList songs; - public final ArrayList albums; - - private ArtistData() { - artist = new Artist(); - songs = new ArrayList<>(); - albums = new ArrayList<>(); - } - - private ArtistData(Artist artist, ArrayList songs, ArrayList albums) { - this.artist = artist; - this.songs = songs; - this.albums = albums; + public Artist loadInBackground() { + return ArtistLoader.getArtist(getContext(), artistId); } } } \ No newline at end of file diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java index 7fb803a2..3b23583c 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/card/CardPlayerFragment.java @@ -492,7 +492,7 @@ public class CardPlayerFragment extends AbsPlayerFragment implements PlayerAlbum @SuppressWarnings("ConstantConditions") private static class PortraitImpl extends BaseImpl { MediaEntryViewHolder currentSongViewHolder; - Song currentSong = new Song(); + Song currentSong = Song.EMPTY_SONG; public PortraitImpl(CardPlayerFragment fragment) { super(fragment); diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java index 7ca837b5..3533bd0f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/flat/FlatPlayerFragment.java @@ -472,7 +472,7 @@ public class FlatPlayerFragment extends AbsPlayerFragment implements PlayerAlbum @SuppressWarnings("ConstantConditions") private static class PortraitImpl extends BaseImpl { MediaEntryViewHolder currentSongViewHolder; - Song currentSong = new Song(); + Song currentSong = Song.EMPTY_SONG; public PortraitImpl(FlatPlayerFragment fragment) { super(fragment); diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java index 6301f7f7..3da1a033 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java @@ -90,9 +90,11 @@ public class MusicUtil { @NonNull public static String getArtistInfoString(@NonNull final Context context, @NonNull final Artist artist) { - String albumString = artist.albumCount == 1 ? context.getResources().getString(R.string.album) : context.getResources().getString(R.string.albums); - String songString = artist.songCount == 1 ? context.getResources().getString(R.string.song) : context.getResources().getString(R.string.songs); - return artist.albumCount + " " + albumString + " • " + artist.songCount + " " + songString; + int albumCount = artist.getAlbumCount(); + int songCount = artist.getSongCount(); + String albumString = albumCount == 1 ? context.getResources().getString(R.string.album) : context.getResources().getString(R.string.albums); + String songString = songCount == 1 ? context.getResources().getString(R.string.song) : context.getResources().getString(R.string.songs); + return albumCount + " " + albumString + " • " + songCount + " " + songString; } public static String getReadableDurationString(long songDurationMillis) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java index 8ce9ec7e..bd8168ff 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java @@ -179,7 +179,7 @@ public final class PreferenceUtil { public final String getArtistAlbumSortOrder() { return mPreferences.getString(ARTIST_ALBUM_SORT_ORDER, - SortOrder.ArtistAlbumSortOrder.ALBUM_YEAR_ASC); + SortOrder.ArtistAlbumSortOrder.ALBUM_YEAR); } public final String getAlbumSortOrder() {