Completely rewritten the album model

This commit is contained in:
Karim Abou Zeid 2016-01-02 22:44:03 +01:00
commit c2ad4e4541
21 changed files with 292 additions and 332 deletions

View file

@ -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);
}

View file

@ -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() {

View file

@ -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)) {

View file

@ -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);