initial work for album and artist lists
This commit is contained in:
parent
a011c43fec
commit
ef0f5e500a
19 changed files with 228 additions and 447 deletions
|
|
@ -1,11 +1,8 @@
|
|||
package com.kabouzeid.gramophone.ui.activities;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
import androidx.loader.content.Loader;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
|
@ -31,26 +28,23 @@ import com.kabouzeid.gramophone.glide.SongGlideRequest;
|
|||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.interfaces.CabHolder;
|
||||
import com.kabouzeid.gramophone.interfaces.LoaderIds;
|
||||
import com.kabouzeid.gramophone.interfaces.MediaCallback;
|
||||
import com.kabouzeid.gramophone.interfaces.PaletteColorHolder;
|
||||
import com.kabouzeid.gramophone.loader.AlbumLoader;
|
||||
import com.kabouzeid.gramophone.misc.SimpleObservableScrollViewCallbacks;
|
||||
import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader;
|
||||
import com.kabouzeid.gramophone.model.Album;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
|
||||
import com.kabouzeid.gramophone.util.MusicUtil;
|
||||
import com.kabouzeid.gramophone.util.NavigationUtil;
|
||||
import com.kabouzeid.gramophone.util.PhonographColorUtil;
|
||||
import com.kabouzeid.gramophone.util.QueryUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder, LoaderManager.LoaderCallbacks<Album> {
|
||||
|
||||
private static final int LOADER_ID = LoaderIds.ALBUM_DETAIL_ACTIVITY;
|
||||
|
||||
public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder {
|
||||
public static final String EXTRA_ALBUM_ID = "extra_album_id";
|
||||
|
||||
private Album album;
|
||||
|
|
@ -99,7 +93,12 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
setUpToolBar();
|
||||
setUpViews();
|
||||
|
||||
getSupportLoaderManager().initLoader(LOADER_ID, getIntent().getExtras(), this);
|
||||
QueryUtil.getAlbum(getIntent().getExtras().getString(EXTRA_ALBUM_ID), new MediaCallback() {
|
||||
@Override
|
||||
public void onLoadMedia(List<?> media) {
|
||||
setAlbum((Album) media.get(0));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -209,10 +208,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
});
|
||||
}
|
||||
|
||||
private void reload() {
|
||||
getSupportLoaderManager().restartLoader(LOADER_ID, getIntent().getExtras(), this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.menu_album_detail, menu);
|
||||
|
|
@ -291,7 +286,6 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
@Override
|
||||
public void onMediaStoreChanged() {
|
||||
super.onMediaStoreChanged();
|
||||
reload();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -317,34 +311,4 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
|
|||
if (album == null) album = new Album();
|
||||
return album;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Loader<Album> onCreateLoader(int id, Bundle args) {
|
||||
return new AsyncAlbumLoader(this, args.getInt(EXTRA_ALBUM_ID));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<Album> loader, Album data) {
|
||||
setAlbum(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoaderReset(Loader<Album> loader) {
|
||||
this.album = new Album();
|
||||
adapter.swapDataSet(album.songs);
|
||||
}
|
||||
|
||||
private static class AsyncAlbumLoader extends WrappedAsyncTaskLoader<Album> {
|
||||
private final int albumId;
|
||||
|
||||
public AsyncAlbumLoader(Context context, int albumId) {
|
||||
super(context);
|
||||
this.albumId = albumId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Album loadInBackground() {
|
||||
return AlbumLoader.getAlbum(getContext(), albumId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
package com.kabouzeid.gramophone.ui.activities;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
|
|
@ -13,8 +11,6 @@ import android.widget.TextView;
|
|||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
import androidx.loader.content.Loader;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import butterknife.BindView;
|
||||
|
|
@ -37,22 +33,19 @@ import com.kabouzeid.gramophone.glide.ArtistGlideRequest;
|
|||
import com.kabouzeid.gramophone.glide.CustomPaletteTarget;
|
||||
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
|
||||
import com.kabouzeid.gramophone.interfaces.CabHolder;
|
||||
import com.kabouzeid.gramophone.interfaces.LoaderIds;
|
||||
import com.kabouzeid.gramophone.interfaces.MediaCallback;
|
||||
import com.kabouzeid.gramophone.interfaces.PaletteColorHolder;
|
||||
import com.kabouzeid.gramophone.loader.ArtistLoader;
|
||||
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.MusicUtil;
|
||||
import com.kabouzeid.gramophone.util.PhonographColorUtil;
|
||||
import com.kabouzeid.gramophone.util.PreferenceUtil;
|
||||
import com.kabouzeid.gramophone.util.QueryUtil;
|
||||
|
||||
public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder, LoaderManager.LoaderCallbacks<Artist> {
|
||||
|
||||
private static final int LOADER_ID = LoaderIds.ARTIST_DETAIL_ACTIVITY;
|
||||
|
||||
public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implements PaletteColorHolder, CabHolder {
|
||||
public static final String EXTRA_ARTIST_ID = "extra_artist_id";
|
||||
|
||||
@BindView(R.id.list)
|
||||
|
|
@ -119,7 +112,12 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
setUpToolbar();
|
||||
setUpViews();
|
||||
|
||||
getSupportLoaderManager().initLoader(LOADER_ID, getIntent().getExtras(), this);
|
||||
QueryUtil.getArtist(getIntent().getExtras().getString(EXTRA_ARTIST_ID), new MediaCallback() {
|
||||
@Override
|
||||
public void onLoadMedia(List<?> media) {
|
||||
setArtist((Artist) media.get(0));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -179,10 +177,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
this.usePalette = usePalette;
|
||||
}
|
||||
|
||||
private void reload() {
|
||||
getSupportLoaderManager().restartLoader(LOADER_ID, getIntent().getExtras(), this);
|
||||
}
|
||||
|
||||
private void loadArtistImage() {
|
||||
ArtistGlideRequest.Builder.from(Glide.with(this), artist)
|
||||
.generatePalette(this).build()
|
||||
|
|
@ -305,7 +299,6 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
@Override
|
||||
public void onMediaStoreChanged() {
|
||||
super.onMediaStoreChanged();
|
||||
reload();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -331,35 +324,4 @@ public class ArtistDetailActivity extends AbsSlidingMusicPanelActivity implement
|
|||
if (artist == null) artist = new Artist();
|
||||
return artist;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Loader<Artist> onCreateLoader(int id, Bundle args) {
|
||||
return new AsyncArtistDataLoader(this, args.getInt(EXTRA_ARTIST_ID));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<Artist> loader, Artist data) {
|
||||
setArtist(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoaderReset(Loader<Artist> loader) {
|
||||
this.artist = new Artist();
|
||||
songAdapter.swapDataSet(artist.getSongs());
|
||||
albumAdapter.swapDataSet(artist.albums);
|
||||
}
|
||||
|
||||
private static class AsyncArtistDataLoader extends WrappedAsyncTaskLoader<Artist> {
|
||||
private final int artistId;
|
||||
|
||||
public AsyncArtistDataLoader(Context context, int artistId) {
|
||||
super(context);
|
||||
this.artistId = artistId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Artist loadInBackground() {
|
||||
return ArtistLoader.getArtist(getContext(), artistId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,34 +1,27 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
import androidx.loader.content.Loader;
|
||||
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.adapter.album.AlbumAdapter;
|
||||
import com.kabouzeid.gramophone.interfaces.LoaderIds;
|
||||
import com.kabouzeid.gramophone.loader.AlbumLoader;
|
||||
import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader;
|
||||
import com.kabouzeid.gramophone.interfaces.MediaCallback;
|
||||
import com.kabouzeid.gramophone.model.Album;
|
||||
import com.kabouzeid.gramophone.util.PreferenceUtil;
|
||||
import com.kabouzeid.gramophone.util.QueryUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFragment<AlbumAdapter, GridLayoutManager> implements LoaderManager.LoaderCallbacks<List<Album>> {
|
||||
|
||||
private static final int LOADER_ID = LoaderIds.ALBUMS_FRAGMENT;
|
||||
|
||||
public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFragment<AlbumAdapter, GridLayoutManager> {
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
getLoaderManager().initLoader(LOADER_ID, null, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -36,18 +29,22 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
|
|||
return new GridLayoutManager(getActivity(), getGridSize());
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
protected AlbumAdapter createAdapter() {
|
||||
int itemLayoutRes = getItemLayoutRes();
|
||||
notifyLayoutResChanged(itemLayoutRes);
|
||||
List<Album> dataSet = getAdapter() == null ? new ArrayList<>() : getAdapter().getDataSet();
|
||||
return new AlbumAdapter(
|
||||
getLibraryFragment().getMainActivity(),
|
||||
dataSet,
|
||||
itemLayoutRes,
|
||||
loadUsePalette(),
|
||||
getLibraryFragment());
|
||||
|
||||
AlbumAdapter adapter = new AlbumAdapter(getLibraryFragment().getMainActivity(), dataSet, itemLayoutRes, loadUsePalette(), getLibraryFragment());
|
||||
QueryUtil.getAlbums(new MediaCallback() {
|
||||
@Override
|
||||
public void onLoadMedia(List<?> media) {
|
||||
dataSet.addAll((Collection<Album>) media);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
|
||||
return adapter;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -67,7 +64,6 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
|
|||
|
||||
@Override
|
||||
protected void setSortOrder(String sortOrder) {
|
||||
getLoaderManager().restartLoader(LOADER_ID, null, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -113,32 +109,6 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra
|
|||
|
||||
@Override
|
||||
public void onMediaStoreChanged() {
|
||||
getLoaderManager().restartLoader(LOADER_ID, null, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Loader<List<Album>> onCreateLoader(int id, Bundle args) {
|
||||
return new AsyncAlbumLoader(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<List<Album>> loader, List<Album> data) {
|
||||
getAdapter().swapDataSet(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoaderReset(Loader<List<Album>> loader) {
|
||||
getAdapter().swapDataSet(new ArrayList<>());
|
||||
}
|
||||
|
||||
private static class AsyncAlbumLoader extends WrappedAsyncTaskLoader<List<Album>> {
|
||||
public AsyncAlbumLoader(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Album> loadInBackground() {
|
||||
return AlbumLoader.getAllAlbums(getContext());
|
||||
}
|
||||
super.onMediaStoreChanged();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,34 +1,28 @@
|
|||
package com.kabouzeid.gramophone.ui.fragments.mainactivity.library.pager;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
import androidx.loader.content.Loader;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.adapter.artist.ArtistAdapter;
|
||||
import com.kabouzeid.gramophone.interfaces.LoaderIds;
|
||||
import com.kabouzeid.gramophone.loader.ArtistLoader;
|
||||
import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader;
|
||||
import com.kabouzeid.gramophone.interfaces.MediaCallback;
|
||||
import com.kabouzeid.gramophone.model.Artist;
|
||||
import com.kabouzeid.gramophone.util.PreferenceUtil;
|
||||
import com.kabouzeid.gramophone.util.QueryUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFragment<ArtistAdapter, GridLayoutManager> implements LoaderManager.LoaderCallbacks<List<Artist>> {
|
||||
|
||||
private static final int LOADER_ID = LoaderIds.ARTISTS_FRAGMENT;
|
||||
|
||||
public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFragment<ArtistAdapter, GridLayoutManager> {
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
getLoaderManager().initLoader(LOADER_ID, null, this);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
|
@ -43,22 +37,28 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr
|
|||
int itemLayoutRes = getItemLayoutRes();
|
||||
notifyLayoutResChanged(itemLayoutRes);
|
||||
List<Artist> dataSet = getAdapter() == null ? new ArrayList<>() : getAdapter().getDataSet();
|
||||
return new ArtistAdapter(
|
||||
getLibraryFragment().getMainActivity(),
|
||||
dataSet,
|
||||
itemLayoutRes,
|
||||
loadUsePalette(),
|
||||
getLibraryFragment());
|
||||
|
||||
ArtistAdapter adapter = new ArtistAdapter(getLibraryFragment().getMainActivity(), dataSet, itemLayoutRes, loadUsePalette(), getLibraryFragment());
|
||||
QueryUtil.getArtists(new MediaCallback() {
|
||||
@Override
|
||||
public void onLoadMedia(List<?> media) {
|
||||
dataSet.addAll((Collection<Artist>) media);
|
||||
adapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
|
||||
return adapter;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
protected int getEmptyMessage() {
|
||||
return R.string.no_artists;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMediaStoreChanged() {
|
||||
getLoaderManager().restartLoader(LOADER_ID, null, this);
|
||||
super.onMediaStoreChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -73,7 +73,6 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr
|
|||
|
||||
@Override
|
||||
protected void setSortOrder(String sortOrder) {
|
||||
getLoaderManager().restartLoader(LOADER_ID, null, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -116,33 +115,4 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr
|
|||
getLayoutManager().setSpanCount(gridSize);
|
||||
getAdapter().notifyDataSetChanged();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Loader<List<Artist>> onCreateLoader(int id, Bundle args) {
|
||||
return new AsyncArtistLoader(getActivity());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onLoadFinished(Loader<List<Artist>> loader, List<Artist> data) {
|
||||
getAdapter().swapDataSet(data);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onLoaderReset(Loader<List<Artist>> loader) {
|
||||
getAdapter().swapDataSet(new ArrayList<>());
|
||||
}
|
||||
|
||||
private static class AsyncArtistLoader extends WrappedAsyncTaskLoader<List<Artist>> {
|
||||
public AsyncArtistLoader(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Artist> loadInBackground() {
|
||||
return ArtistLoader.getAllArtists(getContext());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue