Completely rewritten the album model
This commit is contained in:
parent
d80c8f62bf
commit
c2ad4e4541
21 changed files with 292 additions and 332 deletions
|
|
@ -94,10 +94,10 @@ public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder
|
|||
switch (getItemViewType(position)) {
|
||||
case ALBUM:
|
||||
final Album album = (Album) results.get(position);
|
||||
holder.title.setText(album.title);
|
||||
holder.text.setText(album.artistName);
|
||||
holder.title.setText(album.getTitle());
|
||||
holder.text.setText(album.getArtistName());
|
||||
Glide.with(activity)
|
||||
.loadFromMediaStore(MusicUtil.getAlbumArtUri(album.id))
|
||||
.loadFromMediaStore(MusicUtil.getAlbumArtUri(album.getId()))
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
.error(R.drawable.default_album_art)
|
||||
.animate(android.R.anim.fade_in)
|
||||
|
|
@ -182,7 +182,7 @@ public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder
|
|||
switch (getItemViewType()) {
|
||||
case ALBUM:
|
||||
NavigationUtil.goToAlbum(activity,
|
||||
((Album) item).id,
|
||||
((Album) item).getId(),
|
||||
Pair.create(image,
|
||||
activity.getResources().getString(R.string.transition_album_art)
|
||||
));
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ 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.loader.AlbumSongLoader;
|
||||
import com.kabouzeid.gramophone.model.Album;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.util.ColorUtil;
|
||||
|
|
@ -79,11 +78,11 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
|||
}
|
||||
|
||||
protected String getAlbumTitle(Album album) {
|
||||
return album.title;
|
||||
return album.getTitle();
|
||||
}
|
||||
|
||||
protected String getAlbumText(Album album) {
|
||||
return album.artistName;
|
||||
return album.getArtistName();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -121,7 +120,7 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
|||
protected void loadAlbumCover(Album album, final ViewHolder holder) {
|
||||
if (holder.image == null) return;
|
||||
Glide.with(activity)
|
||||
.loadFromMediaStore(MusicUtil.getAlbumArtUri(album.id))
|
||||
.loadFromMediaStore(MusicUtil.getAlbumArtUri(album.getId()))
|
||||
.asBitmap()
|
||||
.transcode(new BitmapPaletteTranscoder(activity), BitmapPaletteWrapper.class)
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
|
|
@ -149,7 +148,7 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
|||
|
||||
@Override
|
||||
public long getItemId(int position) {
|
||||
return dataSet.get(position).id;
|
||||
return dataSet.get(position).getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -159,7 +158,7 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
|||
|
||||
@Override
|
||||
protected String getName(Album album) {
|
||||
return album.title;
|
||||
return album.getTitle();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -181,7 +180,7 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
|||
private ArrayList<Song> getSongList(@NonNull List<Album> albums) {
|
||||
final ArrayList<Song> songs = new ArrayList<>();
|
||||
for (Album album : albums) {
|
||||
songs.addAll(AlbumSongLoader.getAlbumSongList(activity, album.id));
|
||||
songs.addAll(album.songs);
|
||||
}
|
||||
return songs;
|
||||
}
|
||||
|
|
@ -205,7 +204,7 @@ public class AlbumAdapter extends AbsMultiSelectAdapter<AlbumAdapter.ViewHolder,
|
|||
Pair.create(image,
|
||||
activity.getResources().getString(R.string.transition_album_art)
|
||||
)};
|
||||
NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()).id, albumPairs);
|
||||
NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()).getId(), albumPairs);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public class HorizontalAlbumAdapter extends AlbumAdapter {
|
|||
|
||||
@Override
|
||||
protected String getAlbumText(Album album) {
|
||||
return String.valueOf(album.year);
|
||||
return String.valueOf(album.getYear());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
package com.kabouzeid.gramophone.comparator;
|
||||
|
||||
import com.kabouzeid.gramophone.model.Album;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class AlbumASCComparator implements Comparator<Album> {
|
||||
@Override
|
||||
public int compare(Album lhs, Album rhs) {
|
||||
return lhs.getTitle().compareTo(rhs.getTitle());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package com.kabouzeid.gramophone.comparator;
|
||||
|
||||
import com.kabouzeid.gramophone.model.Album;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class AlbumDESComparator implements Comparator<Album> {
|
||||
@Override
|
||||
public int compare(Album lhs, Album rhs) {
|
||||
return rhs.getTitle().compareTo(lhs.getTitle());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package com.kabouzeid.gramophone.comparator;
|
||||
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class SongTrackComparator implements Comparator<Song> {
|
||||
@Override
|
||||
public int compare(Song lhs, Song rhs) {
|
||||
return lhs.trackNumber - rhs.trackNumber;
|
||||
}
|
||||
}
|
||||
|
|
@ -11,8 +11,6 @@ import com.kabouzeid.gramophone.util.MusicUtil;
|
|||
|
||||
import java.io.InputStream;
|
||||
|
||||
import hugo.weaving.DebugLog;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
|
|
@ -32,7 +30,6 @@ public class ArtistImageFetcher implements DataFetcher<InputStream> {
|
|||
return model.artistName;
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@Override
|
||||
public InputStream loadData(Priority priority) throws Exception {
|
||||
if (MusicUtil.isArtistNameUnknown(model.artistName)) return null;
|
||||
|
|
|
|||
|
|
@ -1,112 +1,81 @@
|
|||
package com.kabouzeid.gramophone.loader;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.provider.BaseColumns;
|
||||
import android.provider.MediaStore;
|
||||
import android.provider.MediaStore.Audio.AlbumColumns;
|
||||
import android.provider.MediaStore.Audio.AudioColumns;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import com.kabouzeid.gramophone.comparator.AlbumASCComparator;
|
||||
import com.kabouzeid.gramophone.comparator.SongTrackComparator;
|
||||
import com.kabouzeid.gramophone.model.Album;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.util.PreferenceUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
|
||||
import hugo.weaving.DebugLog;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class AlbumLoader {
|
||||
|
||||
@DebugLog
|
||||
@NonNull
|
||||
public static ArrayList<Album> getAllAlbums(@NonNull final Context context) {
|
||||
Cursor cursor = makeAlbumCursor(context, null, null);
|
||||
return getAlbums(cursor);
|
||||
ArrayList<Song> songs = SongLoader.getSongs(SongLoader.makeSongCursor(
|
||||
context,
|
||||
null,
|
||||
null,
|
||||
PreferenceUtil.getInstance(context).getAlbumSongSortOrder())
|
||||
);
|
||||
return splitIntoAlbums(songs, new AlbumASCComparator());
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static ArrayList<Album> getAlbums(@NonNull final Context context, String query) {
|
||||
Cursor cursor = makeAlbumCursor(context, AlbumColumns.ALBUM + " LIKE ?", new String[]{"%" + query + "%"});
|
||||
return getAlbums(cursor);
|
||||
ArrayList<Song> songs = SongLoader.getSongs(SongLoader.makeSongCursor(
|
||||
context,
|
||||
AudioColumns.ALBUM + " LIKE ?",
|
||||
new String[]{"%" + query + "%"},
|
||||
PreferenceUtil.getInstance(context).getAlbumSongSortOrder())
|
||||
);
|
||||
return splitIntoAlbums(songs, new AlbumASCComparator());
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static Album getAlbum(@NonNull final Context context, int albumId) {
|
||||
Cursor cursor = makeAlbumCursor(context, BaseColumns._ID + "=?", new String[]{String.valueOf(albumId)});
|
||||
return getAlbum(cursor);
|
||||
ArrayList<Song> songs = SongLoader.getSongs(SongLoader.makeSongCursor(context, AudioColumns.ALBUM_ID + "=?", new String[]{String.valueOf(albumId)}, PreferenceUtil.getInstance(context).getAlbumSongSortOrder()));
|
||||
Collections.sort(songs, new SongTrackComparator());
|
||||
return new Album(songs);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static ArrayList<Album> getAlbums(@Nullable final Cursor cursor) {
|
||||
public static ArrayList<Album> splitIntoAlbums(@Nullable final ArrayList<Song> songs, Comparator<Album> albumComparator) {
|
||||
ArrayList<Album> albums = new ArrayList<>();
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
do {
|
||||
albums.add(getAlbumFromCursorImpl(cursor));
|
||||
} while (cursor.moveToNext());
|
||||
}
|
||||
if (cursor != null) {
|
||||
cursor.close();
|
||||
if (songs != null) {
|
||||
Collections.sort(songs, new SongTrackComparator());
|
||||
for (Song song : songs) {
|
||||
Album album = get(albums, song.albumId);
|
||||
if (album == null) {
|
||||
album = new Album();
|
||||
albums.add(album);
|
||||
}
|
||||
album.songs.add(song);
|
||||
}
|
||||
}
|
||||
Collections.sort(albums, albumComparator);
|
||||
return albums;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static Album getAlbum(@Nullable final Cursor cursor) {
|
||||
Album album = new Album();
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
album = getAlbumFromCursorImpl(cursor);
|
||||
}
|
||||
|
||||
if (cursor != null) {
|
||||
cursor.close();
|
||||
}
|
||||
return album;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private static Album getAlbumFromCursorImpl(@NonNull final Cursor cursor) {
|
||||
final int id = cursor.getInt(0);
|
||||
final String albumName = cursor.getString(1);
|
||||
final String artist = cursor.getString(2);
|
||||
final int artistId = cursor.getInt(3);
|
||||
final int songCount = cursor.getInt(4);
|
||||
final int year = cursor.getInt(5);
|
||||
|
||||
return new Album(id, albumName, artist, artistId, songCount, year);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static Cursor makeAlbumCursor(@NonNull final Context context, final String selection, final String[] values) {
|
||||
return makeAlbumCursor(context, selection, values, PreferenceUtil.getInstance(context).getAlbumSortOrder());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static Cursor makeAlbumCursor(@NonNull final Context context, final String selection, final String[] values, final String sortOrder) {
|
||||
return makeAlbumCursor(context, MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, selection, values, sortOrder);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static Cursor makeAlbumCursor(@NonNull final Context context, @NonNull final Uri contentUri, final String selection, final String[] values, final String sortOrder) {
|
||||
try {
|
||||
return context.getContentResolver().query(contentUri,
|
||||
new String[]{
|
||||
/* 0 */
|
||||
BaseColumns._ID,
|
||||
/* 1 */
|
||||
AlbumColumns.ALBUM,
|
||||
/* 2 */
|
||||
AlbumColumns.ARTIST,
|
||||
/* 3 */
|
||||
AudioColumns.ARTIST_ID,
|
||||
/* 4 */
|
||||
AlbumColumns.NUMBER_OF_SONGS,
|
||||
/* 5 */
|
||||
AlbumColumns.FIRST_YEAR,
|
||||
}, selection, values, sortOrder);
|
||||
} catch (SecurityException e) {
|
||||
return null;
|
||||
private static Album get(ArrayList<Album> albums, int albumId) {
|
||||
for (Album album : albums) {
|
||||
if (!album.songs.isEmpty() && album.songs.get(0).albumId == albumId) {
|
||||
return album;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,33 +0,0 @@
|
|||
package com.kabouzeid.gramophone.loader;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.provider.MediaStore;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.util.PreferenceUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class AlbumSongLoader {
|
||||
|
||||
@NonNull
|
||||
public static ArrayList<Song> getAlbumSongList(@NonNull final Context context, final int albumId) {
|
||||
return SongLoader.getSongs(makeAlbumSongCursor(context, albumId));
|
||||
}
|
||||
|
||||
public static Cursor makeAlbumSongCursor(@NonNull final Context context, final int albumId) {
|
||||
return SongLoader.makeSongCursor(
|
||||
context,
|
||||
MediaStore.Audio.AudioColumns.ALBUM_ID + "=?",
|
||||
new String[]{
|
||||
String.valueOf(albumId)
|
||||
},
|
||||
PreferenceUtil.getInstance(context).getAlbumSongSortOrder()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,11 +1,12 @@
|
|||
package com.kabouzeid.gramophone.loader;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.provider.MediaStore;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import com.kabouzeid.gramophone.comparator.AlbumASCComparator;
|
||||
import com.kabouzeid.gramophone.model.Album;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.util.PreferenceUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -16,20 +17,13 @@ import java.util.ArrayList;
|
|||
public class ArtistAlbumLoader {
|
||||
|
||||
@NonNull
|
||||
public static ArrayList<Album> getArtistAlbumList(@NonNull final Context context, final int artistId) {
|
||||
return AlbumLoader.getAlbums(makeArtistAlbumCursor(context, artistId));
|
||||
}
|
||||
|
||||
public static Cursor makeArtistAlbumCursor(@NonNull final Context context, final int artistId) {
|
||||
try {
|
||||
return AlbumLoader.makeAlbumCursor(context,
|
||||
MediaStore.Audio.Artists.Albums.getContentUri("external", artistId),
|
||||
null,
|
||||
null,
|
||||
PreferenceUtil.getInstance(context).getArtistAlbumSortOrder()
|
||||
);
|
||||
} catch (SecurityException e) {
|
||||
return null;
|
||||
}
|
||||
public static ArrayList<Album> getAlbums(@NonNull final Context context, final int artistId) {
|
||||
ArrayList<Song> songs = SongLoader.getSongs(SongLoader.makeSongCursor(
|
||||
context,
|
||||
MediaStore.Audio.AudioColumns.ARTIST_ID + "=?",
|
||||
new String[]{String.valueOf(artistId)},
|
||||
PreferenceUtil.getInstance(context).getAlbumSongSortOrder()
|
||||
));
|
||||
return AlbumLoader.splitIntoAlbums(songs, new AlbumASCComparator());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,17 +31,19 @@ public class PlaylistSongLoader {
|
|||
@NonNull
|
||||
private static PlaylistSong getPlaylistSongFromCursorImpl(@NonNull Cursor cursor, int playlistId) {
|
||||
final int id = cursor.getInt(0);
|
||||
final String songName = cursor.getString(1);
|
||||
final String artist = cursor.getString(2);
|
||||
final String album = cursor.getString(3);
|
||||
final String title = cursor.getString(1);
|
||||
final int trackNumber = cursor.getInt(2);
|
||||
final int year = cursor.getInt(3);
|
||||
final long duration = cursor.getLong(4);
|
||||
final int trackNumber = cursor.getInt(5);
|
||||
final int albumId = cursor.getInt(6);
|
||||
final int artistId = cursor.getInt(7);
|
||||
final String data = cursor.getString(8);
|
||||
final int idInPlaylist = cursor.getInt(9);
|
||||
final String data = cursor.getString(5);
|
||||
final int dateModified = cursor.getInt(6);
|
||||
final int albumId = cursor.getInt(7);
|
||||
final String albumName = cursor.getString(8);
|
||||
final int artistId = cursor.getInt(9);
|
||||
final String artistName = cursor.getString(10);
|
||||
final int idInPlaylist = cursor.getInt(11);
|
||||
|
||||
return new PlaylistSong(id, albumId, artistId, songName, artist, album, duration, trackNumber, data, playlistId, idInPlaylist);
|
||||
return new PlaylistSong(id, title, trackNumber, year, duration, data, dateModified, albumId, albumName, artistId, artistName, playlistId, idInPlaylist);
|
||||
}
|
||||
|
||||
public static Cursor makePlaylistSongCursor(@NonNull final Context context, final int playlistId) {
|
||||
|
|
@ -49,26 +51,18 @@ public class PlaylistSongLoader {
|
|||
return context.getContentResolver().query(
|
||||
MediaStore.Audio.Playlists.Members.getContentUri("external", playlistId),
|
||||
new String[]{
|
||||
/* 0 */
|
||||
MediaStore.Audio.Playlists.Members.AUDIO_ID,
|
||||
/* 1 */
|
||||
AudioColumns.TITLE,
|
||||
/* 2 */
|
||||
AudioColumns.ARTIST,
|
||||
/* 3 */
|
||||
AudioColumns.ALBUM,
|
||||
/* 4 */
|
||||
AudioColumns.DURATION,
|
||||
/* 5 */
|
||||
AudioColumns.TRACK,
|
||||
/* 6 */
|
||||
AudioColumns.ALBUM_ID,
|
||||
/* 7 */
|
||||
AudioColumns.ARTIST_ID,
|
||||
/* 8 */
|
||||
AudioColumns.DATA,
|
||||
/* 9 */
|
||||
MediaStore.Audio.Playlists.Members._ID
|
||||
MediaStore.Audio.Playlists.Members.AUDIO_ID,// 0
|
||||
AudioColumns.TITLE,// 1
|
||||
AudioColumns.TRACK,// 2
|
||||
AudioColumns.YEAR,// 3
|
||||
AudioColumns.DURATION,// 4
|
||||
AudioColumns.DATA,// 5
|
||||
AudioColumns.DATE_MODIFIED,// 6
|
||||
AudioColumns.ALBUM_ID,// 7
|
||||
AudioColumns.ALBUM,// 8
|
||||
AudioColumns.ARTIST_ID,// 9
|
||||
AudioColumns.ARTIST,// 10
|
||||
MediaStore.Audio.Playlists.Members._ID // 11
|
||||
}, SongLoader.BASE_SELECTION, null,
|
||||
MediaStore.Audio.Playlists.Members.DEFAULT_SORT_ORDER);
|
||||
} catch (SecurityException e) {
|
||||
|
|
|
|||
|
|
@ -53,9 +53,11 @@ public class SongLoader {
|
|||
|
||||
@NonNull
|
||||
public static Song getSong(@Nullable Cursor cursor) {
|
||||
Song song = new Song();
|
||||
Song song;
|
||||
if (cursor != null && cursor.moveToFirst()) {
|
||||
song = getSongFromCursorImpl(cursor);
|
||||
} else {
|
||||
song = new Song();
|
||||
}
|
||||
if (cursor != null) {
|
||||
cursor.close();
|
||||
|
|
@ -66,15 +68,18 @@ public class SongLoader {
|
|||
@NonNull
|
||||
private static Song getSongFromCursorImpl(@NonNull Cursor cursor) {
|
||||
final int id = cursor.getInt(0);
|
||||
final String songName = cursor.getString(1);
|
||||
final String artist = cursor.getString(2);
|
||||
final String album = cursor.getString(3);
|
||||
final String title = cursor.getString(1);
|
||||
final int trackNumber = cursor.getInt(2);
|
||||
final int year = cursor.getInt(3);
|
||||
final long duration = cursor.getLong(4);
|
||||
final int trackNumber = cursor.getInt(5);
|
||||
final int artistId = cursor.getInt(6);
|
||||
final String data = cursor.getString(5);
|
||||
final long dateModified = cursor.getLong(6);
|
||||
final int albumId = cursor.getInt(7);
|
||||
final String data = cursor.getString(8);
|
||||
return new Song(id, albumId, artistId, songName, artist, album, duration, trackNumber, data);
|
||||
final String albumName = cursor.getString(8);
|
||||
final int artistId = cursor.getInt(9);
|
||||
final String artistName = cursor.getString(10);
|
||||
|
||||
return new Song(id, title, trackNumber, year, duration, data, dateModified, albumId, albumName, artistId, artistName);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
|
@ -92,24 +97,18 @@ public class SongLoader {
|
|||
try {
|
||||
return context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
|
||||
new String[]{
|
||||
/* 0 */
|
||||
BaseColumns._ID,
|
||||
/* 1 */
|
||||
AudioColumns.TITLE,
|
||||
/* 2 */
|
||||
AudioColumns.ARTIST,
|
||||
/* 3 */
|
||||
AudioColumns.ALBUM,
|
||||
/* 4 */
|
||||
AudioColumns.DURATION,
|
||||
/* 5 */
|
||||
AudioColumns.TRACK,
|
||||
/* 6 */
|
||||
AudioColumns.ARTIST_ID,
|
||||
/* 7 */
|
||||
AudioColumns.ALBUM_ID,
|
||||
/* 8 */
|
||||
AudioColumns.DATA
|
||||
BaseColumns._ID,// 0
|
||||
AudioColumns.TITLE,// 1
|
||||
AudioColumns.TRACK,// 2
|
||||
AudioColumns.YEAR,// 3
|
||||
AudioColumns.DURATION,// 4
|
||||
AudioColumns.DATA,// 5
|
||||
AudioColumns.DATE_MODIFIED,// 6
|
||||
AudioColumns.ALBUM_ID,// 7
|
||||
AudioColumns.ALBUM,// 8
|
||||
AudioColumns.ARTIST_ID,// 9
|
||||
AudioColumns.ARTIST,// 10
|
||||
|
||||
}, baseSelection, values, sortOrder);
|
||||
} catch (SecurityException e) {
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -3,34 +3,44 @@ package com.kabouzeid.gramophone.model;
|
|||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class Album implements Parcelable {
|
||||
public final int id;
|
||||
public final int artistId;
|
||||
public final String title;
|
||||
public final String artistName;
|
||||
public final int songCount;
|
||||
public final int year;
|
||||
public final ArrayList<Song> songs;
|
||||
|
||||
public Album(final int id, final String title, final String artistName, final int artistId,
|
||||
final int songNumber, final int albumYear) {
|
||||
this.id = id;
|
||||
this.title = title;
|
||||
this.artistName = artistName;
|
||||
this.artistId = artistId;
|
||||
songCount = songNumber;
|
||||
year = albumYear;
|
||||
public Album(ArrayList<Song> songs) {
|
||||
this.songs = songs;
|
||||
}
|
||||
|
||||
public Album() {
|
||||
this.id = -1;
|
||||
this.title = "";
|
||||
this.artistName = "";
|
||||
this.artistId = -1;
|
||||
songCount = -1;
|
||||
year = -1;
|
||||
this.songs = new ArrayList<>();
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return songs.get(0).albumId;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return songs.get(0).albumName;
|
||||
}
|
||||
|
||||
public int getArtistId() {
|
||||
return songs.get(0).artistId;
|
||||
}
|
||||
|
||||
public String getArtistName() {
|
||||
return songs.get(0).artistName;
|
||||
}
|
||||
|
||||
public int getYear() {
|
||||
return songs.get(0).year;
|
||||
}
|
||||
|
||||
public int getSongCount() {
|
||||
return songs.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -38,41 +48,24 @@ public class Album implements Parcelable {
|
|||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
Album album = (Album) o;
|
||||
Album that = (Album) o;
|
||||
|
||||
if (id != album.id) return false;
|
||||
if (artistId != album.artistId) return false;
|
||||
if (songCount != album.songCount) return false;
|
||||
if (year != album.year) return false;
|
||||
if (title != null ? !title.equals(album.title) : album.title != null) return false;
|
||||
return artistName != null ? artistName.equals(album.artistName) : album.artistName == null;
|
||||
return songs != null ? songs.equals(that.songs) : that.songs == null;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = id;
|
||||
result = 31 * result + artistId;
|
||||
result = 31 * result + (title != null ? title.hashCode() : 0);
|
||||
result = 31 * result + (artistName != null ? artistName.hashCode() : 0);
|
||||
result = 31 * result + songCount;
|
||||
result = 31 * result + year;
|
||||
return result;
|
||||
return songs != null ? songs.hashCode() : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Album{" +
|
||||
"id=" + id +
|
||||
", artistId=" + artistId +
|
||||
", title='" + title + '\'' +
|
||||
", artistName='" + artistName + '\'' +
|
||||
", songCount=" + songCount +
|
||||
", year=" + year +
|
||||
"songs=" + songs +
|
||||
'}';
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
|
|
@ -80,24 +73,14 @@ public class Album implements Parcelable {
|
|||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeInt(this.id);
|
||||
dest.writeInt(this.artistId);
|
||||
dest.writeString(this.title);
|
||||
dest.writeString(this.artistName);
|
||||
dest.writeInt(this.songCount);
|
||||
dest.writeInt(this.year);
|
||||
dest.writeTypedList(songs);
|
||||
}
|
||||
|
||||
protected Album(Parcel in) {
|
||||
this.id = in.readInt();
|
||||
this.artistId = in.readInt();
|
||||
this.title = in.readString();
|
||||
this.artistName = in.readString();
|
||||
this.songCount = in.readInt();
|
||||
this.year = in.readInt();
|
||||
this.songs = in.createTypedArrayList(Song.CREATOR);
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<Album> CREATOR = new Parcelable.Creator<Album>() {
|
||||
public static final Creator<Album> CREATOR = new Creator<Album>() {
|
||||
public Album createFromParcel(Parcel source) {
|
||||
return new Album(source);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,9 +7,8 @@ public class PlaylistSong extends Song {
|
|||
public final int playlistId;
|
||||
public final int idInPlayList;
|
||||
|
||||
public PlaylistSong(final int id, final int albumId, final int artistId, final String title, final String artistName,
|
||||
final String albumName, final long duration, final int trackNumber, final String data, final int playlistId, final int idInPlayList) {
|
||||
super(id, albumId, artistId, title, artistName, albumName, duration, trackNumber, data);
|
||||
public PlaylistSong(int id, String title, int trackNumber, int year, long duration, String data, int dateModified, int albumId, String albumName, int artistId, String artistName, final int playlistId, final int idInPlayList) {
|
||||
super(id, title, trackNumber, year, duration, data, dateModified, albumId, albumName, artistId, artistName);
|
||||
this.playlistId = playlistId;
|
||||
this.idInPlayList = idInPlayList;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,38 +8,43 @@ import android.os.Parcelable;
|
|||
*/
|
||||
public class Song implements Parcelable {
|
||||
public final int id;
|
||||
public final int albumId;
|
||||
public final int artistId;
|
||||
public final String title;
|
||||
public final String artistName;
|
||||
public final String albumName;
|
||||
public final long duration;
|
||||
public final int trackNumber;
|
||||
public final int year;
|
||||
public final long duration;
|
||||
public final String data;
|
||||
public final long dateModified;
|
||||
public final int albumId;
|
||||
public final String albumName;
|
||||
public final int artistId;
|
||||
public final String artistName;
|
||||
|
||||
public Song(final int id, final int albumId, final int artistId, final String title, final String artistName,
|
||||
final String albumName, final long duration, final int trackNumber, final String data) {
|
||||
public Song(int id, String title, int trackNumber, int year, long duration, String data, long dateModified, int albumId, String albumName, int artistId, String artistName) {
|
||||
this.id = id;
|
||||
this.albumId = albumId;
|
||||
this.artistId = artistId;
|
||||
this.title = title;
|
||||
this.artistName = artistName;
|
||||
this.albumName = albumName;
|
||||
this.duration = duration;
|
||||
this.trackNumber = trackNumber;
|
||||
this.year = year;
|
||||
this.duration = duration;
|
||||
this.data = data;
|
||||
this.dateModified = dateModified;
|
||||
this.albumId = albumId;
|
||||
this.albumName = albumName;
|
||||
this.artistId = artistId;
|
||||
this.artistName = artistName;
|
||||
}
|
||||
|
||||
public Song() {
|
||||
this.id = -1;
|
||||
this.albumId = -1;
|
||||
this.artistId = -1;
|
||||
this.title = "";
|
||||
this.artistName = "";
|
||||
this.albumName = "";
|
||||
this.duration = -1;
|
||||
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
|
||||
|
|
@ -50,30 +55,33 @@ public class Song implements Parcelable {
|
|||
Song song = (Song) o;
|
||||
|
||||
if (id != song.id) return false;
|
||||
if (trackNumber != song.trackNumber) return false;
|
||||
if (year != song.year) return false;
|
||||
if (duration != song.duration) return false;
|
||||
if (dateModified != song.dateModified) return false;
|
||||
if (albumId != song.albumId) return false;
|
||||
if (artistId != song.artistId) return false;
|
||||
if (duration != song.duration) return false;
|
||||
if (trackNumber != song.trackNumber) return false;
|
||||
if (title != null ? !title.equals(song.title) : song.title != null) return false;
|
||||
if (artistName != null ? !artistName.equals(song.artistName) : song.artistName != null)
|
||||
return false;
|
||||
if (data != null ? !data.equals(song.data) : song.data != null) return false;
|
||||
if (albumName != null ? !albumName.equals(song.albumName) : song.albumName != null)
|
||||
return false;
|
||||
return data != null ? data.equals(song.data) : song.data == null;
|
||||
return artistName != null ? artistName.equals(song.artistName) : song.artistName == null;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = id;
|
||||
result = 31 * result + albumId;
|
||||
result = 31 * result + artistId;
|
||||
result = 31 * result + (title != null ? title.hashCode() : 0);
|
||||
result = 31 * result + (artistName != null ? artistName.hashCode() : 0);
|
||||
result = 31 * result + (albumName != null ? albumName.hashCode() : 0);
|
||||
result = 31 * result + (int) (duration ^ (duration >>> 32));
|
||||
result = 31 * result + trackNumber;
|
||||
result = 31 * result + year;
|
||||
result = 31 * result + (int) (duration ^ (duration >>> 32));
|
||||
result = 31 * result + (data != null ? data.hashCode() : 0);
|
||||
result = 31 * result + (int) (dateModified ^ (dateModified >>> 32));
|
||||
result = 31 * result + albumId;
|
||||
result = 31 * result + (albumName != null ? albumName.hashCode() : 0);
|
||||
result = 31 * result + artistId;
|
||||
result = 31 * result + (artistName != null ? artistName.hashCode() : 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -81,14 +89,16 @@ public class Song implements Parcelable {
|
|||
public String toString() {
|
||||
return "Song{" +
|
||||
"id=" + id +
|
||||
", albumId=" + albumId +
|
||||
", artistId=" + artistId +
|
||||
", title='" + title + '\'' +
|
||||
", artistName='" + artistName + '\'' +
|
||||
", albumName='" + albumName + '\'' +
|
||||
", duration=" + duration +
|
||||
", trackNumber=" + trackNumber +
|
||||
", year=" + year +
|
||||
", duration=" + duration +
|
||||
", data='" + data + '\'' +
|
||||
", dateModified=" + dateModified +
|
||||
", albumId=" + albumId +
|
||||
", albumName='" + albumName + '\'' +
|
||||
", artistId=" + artistId +
|
||||
", artistName='" + artistName + '\'' +
|
||||
'}';
|
||||
}
|
||||
|
||||
|
|
@ -101,26 +111,30 @@ public class Song implements Parcelable {
|
|||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeInt(this.id);
|
||||
dest.writeInt(this.albumId);
|
||||
dest.writeInt(this.artistId);
|
||||
dest.writeString(this.title);
|
||||
dest.writeString(this.artistName);
|
||||
dest.writeString(this.albumName);
|
||||
dest.writeLong(this.duration);
|
||||
dest.writeInt(this.trackNumber);
|
||||
dest.writeInt(this.year);
|
||||
dest.writeLong(this.duration);
|
||||
dest.writeString(this.data);
|
||||
dest.writeLong(this.dateModified);
|
||||
dest.writeInt(this.albumId);
|
||||
dest.writeString(this.albumName);
|
||||
dest.writeInt(this.artistId);
|
||||
dest.writeString(this.artistName);
|
||||
}
|
||||
|
||||
protected Song(Parcel in) {
|
||||
this.id = in.readInt();
|
||||
this.albumId = in.readInt();
|
||||
this.artistId = in.readInt();
|
||||
this.title = in.readString();
|
||||
this.artistName = in.readString();
|
||||
this.albumName = in.readString();
|
||||
this.duration = in.readLong();
|
||||
this.trackNumber = in.readInt();
|
||||
this.year = in.readInt();
|
||||
this.duration = in.readLong();
|
||||
this.data = in.readString();
|
||||
this.dateModified = in.readLong();
|
||||
this.albumId = in.readInt();
|
||||
this.albumName = in.readString();
|
||||
this.artistId = in.readInt();
|
||||
this.artistName = in.readString();
|
||||
}
|
||||
|
||||
public static final Creator<Song> CREATOR = new Creator<Song>() {
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ public class MusicPlaybackQueueStore extends SQLiteOpenHelper {
|
|||
public static final String DATABASE_NAME = "music_playback_state.db";
|
||||
public static final String PLAYING_QUEUE_TABLE_NAME = "playing_queue";
|
||||
public static final String ORIGINAL_PLAYING_QUEUE_TABLE_NAME = "original_playing_queue";
|
||||
private static final int VERSION = 2;
|
||||
private static final int VERSION = 3;
|
||||
|
||||
/**
|
||||
* Constructor of <code>MusicPlaybackState</code>
|
||||
|
|
@ -71,25 +71,31 @@ public class MusicPlaybackQueueStore extends SQLiteOpenHelper {
|
|||
builder.append(AudioColumns.TITLE);
|
||||
builder.append(" STRING NOT NULL,");
|
||||
|
||||
builder.append(AudioColumns.ARTIST);
|
||||
builder.append(" STRING NOT NULL,");
|
||||
builder.append(AudioColumns.TRACK);
|
||||
builder.append(" INT NOT NULL,");
|
||||
|
||||
builder.append(AudioColumns.ALBUM);
|
||||
builder.append(" STRING NOT NULL,");
|
||||
builder.append(AudioColumns.YEAR);
|
||||
builder.append(" INT NOT NULL,");
|
||||
|
||||
builder.append(AudioColumns.DURATION);
|
||||
builder.append(" LONG NOT NULL,");
|
||||
|
||||
builder.append(AudioColumns.TRACK);
|
||||
builder.append(" INT NOT NULL,");
|
||||
builder.append(AudioColumns.DATA);
|
||||
builder.append(" STRING NOT NULL,");
|
||||
|
||||
builder.append(AudioColumns.ARTIST_ID);
|
||||
builder.append(" INT NOT NULL,");
|
||||
builder.append(AudioColumns.DATE_MODIFIED);
|
||||
builder.append(" LONG NOT NULL,");
|
||||
|
||||
builder.append(AudioColumns.ALBUM_ID);
|
||||
builder.append(" INT NOT NULL,");
|
||||
|
||||
builder.append(AudioColumns.DATA);
|
||||
builder.append(AudioColumns.ALBUM);
|
||||
builder.append(" STRING NOT NULL,");
|
||||
|
||||
builder.append(AudioColumns.ARTIST_ID);
|
||||
builder.append(" INT NOT NULL,");
|
||||
|
||||
builder.append(AudioColumns.ARTIST);
|
||||
builder.append(" STRING NOT NULL);");
|
||||
|
||||
db.execSQL(builder.toString());
|
||||
|
|
@ -156,13 +162,15 @@ public class MusicPlaybackQueueStore extends SQLiteOpenHelper {
|
|||
|
||||
values.put(BaseColumns._ID, song.id);
|
||||
values.put(AudioColumns.TITLE, song.title);
|
||||
values.put(AudioColumns.ARTIST, song.artistName);
|
||||
values.put(AudioColumns.ALBUM, song.albumName);
|
||||
values.put(AudioColumns.DURATION, song.duration);
|
||||
values.put(AudioColumns.TRACK, song.trackNumber);
|
||||
values.put(AudioColumns.ARTIST_ID, song.artistId);
|
||||
values.put(AudioColumns.ALBUM_ID, song.albumId);
|
||||
values.put(AudioColumns.YEAR, song.year);
|
||||
values.put(AudioColumns.DURATION, song.duration);
|
||||
values.put(AudioColumns.DATA, song.data);
|
||||
values.put(AudioColumns.DATE_MODIFIED, song.dateModified);
|
||||
values.put(AudioColumns.ALBUM_ID, song.albumId);
|
||||
values.put(AudioColumns.ALBUM, song.albumName);
|
||||
values.put(AudioColumns.ARTIST_ID, song.artistId);
|
||||
values.put(AudioColumns.ARTIST, song.artistName);
|
||||
|
||||
database.insert(tableName, null, values);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,10 +30,8 @@ import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
|||
import com.kabouzeid.gramophone.interfaces.CabHolder;
|
||||
import com.kabouzeid.gramophone.interfaces.PaletteColorHolder;
|
||||
import com.kabouzeid.gramophone.loader.AlbumLoader;
|
||||
import com.kabouzeid.gramophone.loader.AlbumSongLoader;
|
||||
import com.kabouzeid.gramophone.misc.SimpleObservableScrollViewCallbacks;
|
||||
import com.kabouzeid.gramophone.model.Album;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
|
||||
import com.kabouzeid.gramophone.ui.activities.tageditor.AbsTagEditorActivity;
|
||||
import com.kabouzeid.gramophone.ui.activities.tageditor.AlbumTagEditorActivity;
|
||||
|
|
@ -42,8 +40,6 @@ import com.kabouzeid.gramophone.util.MusicUtil;
|
|||
import com.kabouzeid.gramophone.util.NavigationUtil;
|
||||
import com.kabouzeid.gramophone.util.Util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
|
|
@ -133,7 +129,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
Bundle intentExtras = getIntent().getExtras();
|
||||
final int albumId = intentExtras.getInt(EXTRA_ALBUM_ID);
|
||||
album = AlbumLoader.getAlbum(this, albumId);
|
||||
if (album.id == -1) {
|
||||
if (album.songs.isEmpty()) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
|
@ -150,7 +146,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
}
|
||||
|
||||
private void setUpViews() {
|
||||
albumTitleView.setText(album.title);
|
||||
albumTitleView.setText(album.getTitle());
|
||||
setUpRecyclerViewView();
|
||||
setUpSongsAdapter();
|
||||
setUpAlbumArtAndApplyPalette();
|
||||
|
|
@ -158,7 +154,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
|
||||
private void setUpAlbumArtAndApplyPalette() {
|
||||
Glide.with(this)
|
||||
.loadFromMediaStore(MusicUtil.getAlbumArtUri(album.id))
|
||||
.loadFromMediaStore(MusicUtil.getAlbumArtUri(album.getId()))
|
||||
.asBitmap()
|
||||
.transcode(new BitmapPaletteTranscoder(this), BitmapPaletteWrapper.class)
|
||||
.diskCacheStrategy(DiskCacheStrategy.NONE)
|
||||
|
|
@ -234,7 +230,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
}
|
||||
|
||||
private void setUpSongsAdapter() {
|
||||
adapter = new AlbumSongAdapter(this, loadSongDataSet(), R.layout.item_list, false, this);
|
||||
adapter = new AlbumSongAdapter(this, album.songs, R.layout.item_list, false, this);
|
||||
recyclerView.setLayoutManager(new GridLayoutManager(this, 1));
|
||||
recyclerView.setAdapter(adapter);
|
||||
adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
|
||||
|
|
@ -247,11 +243,11 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
}
|
||||
|
||||
private void reloadDataSet() {
|
||||
adapter.swapDataSet(loadSongDataSet());
|
||||
adapter.swapDataSet(album.songs);
|
||||
}
|
||||
|
||||
private ArrayList<Song> loadSongDataSet() {
|
||||
return AlbumSongLoader.getAlbumSongList(this, album.id);
|
||||
private void reloadAlbum() {
|
||||
album = AlbumLoader.getAlbum(this, album.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -292,11 +288,11 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
return true;
|
||||
case R.id.action_tag_editor:
|
||||
Intent intent = new Intent(this, AlbumTagEditorActivity.class);
|
||||
intent.putExtra(AbsTagEditorActivity.EXTRA_ID, album.id);
|
||||
intent.putExtra(AbsTagEditorActivity.EXTRA_ID, album.getId());
|
||||
startActivityForResult(intent, TAG_EDITOR_REQUEST);
|
||||
return true;
|
||||
case R.id.action_go_to_artist:
|
||||
NavigationUtil.goToArtist(this, album.artistId);
|
||||
NavigationUtil.goToArtist(this, album.getArtistId());
|
||||
return true;
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
|
|
@ -307,7 +303,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (requestCode == TAG_EDITOR_REQUEST) {
|
||||
getAlbumFromIntentExtras();
|
||||
albumTitleView.setText(album.title);
|
||||
albumTitleView.setText(album.getTitle());
|
||||
setUpAlbumArtAndApplyPalette();
|
||||
setResult(RESULT_OK);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -216,7 +216,7 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
}
|
||||
|
||||
private ArrayList<Album> loadAlbumDataSet() {
|
||||
return ArtistAlbumLoader.getArtistAlbumList(this, artist.id);
|
||||
return ArtistAlbumLoader.getAlbums(this, artist.id);
|
||||
}
|
||||
|
||||
private void loadBiography() {
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
|||
import com.kabouzeid.gramophone.helper.SearchQueryHelper;
|
||||
import com.kabouzeid.gramophone.interfaces.CabHolder;
|
||||
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
|
||||
import com.kabouzeid.gramophone.loader.AlbumSongLoader;
|
||||
import com.kabouzeid.gramophone.loader.AlbumLoader;
|
||||
import com.kabouzeid.gramophone.loader.ArtistSongLoader;
|
||||
import com.kabouzeid.gramophone.loader.PlaylistSongLoader;
|
||||
import com.kabouzeid.gramophone.loader.SongLoader;
|
||||
|
|
@ -532,7 +532,7 @@ public class MainActivity extends AbsSlidingMusicPanelActivity
|
|||
final int id = (int) parseIdFromIntent(intent, "albumId", "album");
|
||||
if (id >= 0) {
|
||||
int position = intent.getIntExtra("position", 0);
|
||||
MusicPlayerRemote.openQueue(AlbumSongLoader.getAlbumSongList(this, id), position, true);
|
||||
MusicPlayerRemote.openQueue(AlbumLoader.getAlbum(this, id).songs, position, true);
|
||||
handled = true;
|
||||
}
|
||||
} else if (MediaStore.Audio.Artists.CONTENT_TYPE.equals(mimeType)) {
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import com.kabouzeid.gramophone.glide.palette.BitmapPaletteTranscoder;
|
|||
import com.kabouzeid.gramophone.glide.palette.BitmapPaletteWrapper;
|
||||
import com.kabouzeid.gramophone.lastfm.rest.LastFMRestClient;
|
||||
import com.kabouzeid.gramophone.lastfm.rest.model.LastFmAlbum;
|
||||
import com.kabouzeid.gramophone.loader.AlbumSongLoader;
|
||||
import com.kabouzeid.gramophone.loader.AlbumLoader;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.util.ColorUtil;
|
||||
import com.kabouzeid.gramophone.util.LastFMUtil;
|
||||
|
|
@ -199,7 +199,7 @@ public class AlbumTagEditorActivity extends AbsTagEditorActivity implements Text
|
|||
@NonNull
|
||||
@Override
|
||||
protected List<String> getSongPaths() {
|
||||
ArrayList<Song> songs = AlbumSongLoader.getAlbumSongList(this, getId());
|
||||
ArrayList<Song> songs = AlbumLoader.getAlbum(this, getId()).songs;
|
||||
ArrayList<String> paths = new ArrayList<>(songs.size());
|
||||
for (Song song : songs) {
|
||||
paths.add(song.data);
|
||||
|
|
|
|||
|
|
@ -7,8 +7,6 @@ import android.support.annotation.NonNull;
|
|||
|
||||
import com.bumptech.glide.signature.StringSignature;
|
||||
|
||||
import hugo.weaving.DebugLog;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
|
|
@ -30,13 +28,11 @@ public class ArtistSignatureUtil {
|
|||
return sInstance;
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
@SuppressLint("CommitPrefEdits")
|
||||
public void updateArtistSignature(String artistName) {
|
||||
mPreferences.edit().putLong(artistName, System.currentTimeMillis()).commit();
|
||||
}
|
||||
|
||||
@DebugLog
|
||||
public long getArtistSignatureRaw(String artistName) {
|
||||
return mPreferences.getLong(artistName, 0);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue