implement basic support for song fragment

This commit is contained in:
dkanada 2020-04-26 12:47:32 +09:00
commit c517718c2e
6 changed files with 55 additions and 65 deletions

View file

@ -142,6 +142,7 @@ public class AlbumDetailActivity extends AbsSlidingMusicPanelActivity implements
NavigationUtil.goToArtist(AlbumDetailActivity.this, album.getArtistId());
}
});
setColors(DialogUtils.resolveColor(this, R.attr.defaultFooterColor));
}

View file

@ -1,35 +1,25 @@
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.song.ShuffleButtonSongAdapter;
import com.kabouzeid.gramophone.adapter.song.SongAdapter;
import com.kabouzeid.gramophone.interfaces.LoaderIds;
import com.kabouzeid.gramophone.loader.SongLoader;
import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader;
import com.kabouzeid.gramophone.interfaces.MediaCallback;
import com.kabouzeid.gramophone.model.Song;
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 SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFragment<SongAdapter, GridLayoutManager> implements LoaderManager.LoaderCallbacks<List<Song>> {
private static final int LOADER_ID = LoaderIds.SONGS_FRAGMENT;
public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFragment<SongAdapter, GridLayoutManager> {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getLoaderManager().initLoader(LOADER_ID, null, this);
}
@NonNull
@ -46,20 +36,32 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag
boolean usePalette = loadUsePalette();
List<Song> dataSet = getAdapter() == null ? new ArrayList<>() : getAdapter().getDataSet();
SongAdapter adapter;
if (getGridSize() <= getMaxGridSizeForList()) {
return new ShuffleButtonSongAdapter(
adapter = new ShuffleButtonSongAdapter(
getLibraryFragment().getMainActivity(),
dataSet,
itemLayoutRes,
usePalette,
getLibraryFragment());
} else {
adapter = new SongAdapter(
getLibraryFragment().getMainActivity(),
dataSet,
itemLayoutRes,
usePalette,
getLibraryFragment());
}
return new SongAdapter(
getLibraryFragment().getMainActivity(),
dataSet,
itemLayoutRes,
usePalette,
getLibraryFragment());
QueryUtil.getSongs(new MediaCallback() {
@Override
public void onLoadMedia(List<?> media) {
dataSet.addAll((Collection<Song>) media);
adapter.notifyDataSetChanged();
}
});
return adapter;
}
@Override
@ -69,7 +71,7 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag
@Override
public void onMediaStoreChanged() {
getLoaderManager().restartLoader(LOADER_ID, null, this);
super.onMediaStoreChanged();
}
@Override
@ -84,7 +86,6 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag
@Override
protected void setSortOrder(String sortOrder) {
getLoaderManager().restartLoader(LOADER_ID, null, this);
}
@Override
@ -127,30 +128,4 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag
getLayoutManager().setSpanCount(gridSize);
getAdapter().notifyDataSetChanged();
}
@Override
public Loader<List<Song>> onCreateLoader(int id, Bundle args) {
return new AsyncSongLoader(getActivity());
}
@Override
public void onLoadFinished(Loader<List<Song>> loader, List<Song> data) {
getAdapter().swapDataSet(data);
}
@Override
public void onLoaderReset(Loader<List<Song>> loader) {
getAdapter().swapDataSet(new ArrayList<>());
}
private static class AsyncSongLoader extends WrappedAsyncTaskLoader<List<Song>> {
public AsyncSongLoader(Context context) {
super(context);
}
@Override
public List<Song> loadInBackground() {
return SongLoader.getAllSongs(getContext());
}
}
}