load global playlists on main activity

This commit is contained in:
dkanada 2020-04-29 15:49:59 +09:00
commit 5fcd9e979a
11 changed files with 76 additions and 157 deletions

View file

@ -191,7 +191,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
}
// Playlist renamed
final String playlistName = PlaylistsUtil.getNameForPlaylist(this, playlist.id);
final String playlistName = PlaylistsUtil.getNameForPlaylist(this, playlist.id.hashCode());
if (!playlistName.equals(playlist.name)) {
playlist = PlaylistLoader.getPlaylist(this, playlist.id);
setToolbarTitle(playlist.name);
@ -268,7 +268,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
return ((AbsSmartPlaylist) playlist).getSongs(getContext());
} else {
//noinspection unchecked
return (List) PlaylistSongLoader.getPlaylistSongList(getContext(), playlist.id);
return (List) PlaylistSongLoader.getPlaylistSongList(getContext(), playlist.id.hashCode());
}
}
}

View file

@ -4,16 +4,16 @@ 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.LinearLayoutManager;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.PlaylistAdapter;
import com.kabouzeid.gramophone.interfaces.LoaderIds;
import com.kabouzeid.gramophone.loader.PlaylistLoader;
import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader;
import com.kabouzeid.gramophone.interfaces.MediaCallback;
import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.util.QueryUtil;
import org.jellyfin.apiclient.model.querying.ItemQuery;
import java.util.ArrayList;
import java.util.List;
@ -21,14 +21,10 @@ import java.util.List;
/**
* @author Karim Abou Zeid (kabouzeid)
*/
public class PlaylistsFragment extends AbsLibraryPagerRecyclerViewFragment<PlaylistAdapter, LinearLayoutManager> implements LoaderManager.LoaderCallbacks<List<Playlist>> {
private static final int LOADER_ID = LoaderIds.PLAYLISTS_FRAGMENT;
public class PlaylistsFragment extends AbsLibraryPagerRecyclerViewFragment<PlaylistAdapter, LinearLayoutManager> {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getLoaderManager().initLoader(LOADER_ID, null, this);
}
@NonNull
@ -41,7 +37,17 @@ public class PlaylistsFragment extends AbsLibraryPagerRecyclerViewFragment<Playl
@Override
protected PlaylistAdapter createAdapter() {
List<Playlist> dataSet = getAdapter() == null ? new ArrayList<>() : getAdapter().getDataSet();
return new PlaylistAdapter(getLibraryFragment().getMainActivity(), dataSet, R.layout.item_list_single_row, getLibraryFragment());
PlaylistAdapter adapter = new PlaylistAdapter(getLibraryFragment().getMainActivity(), dataSet, R.layout.item_list_single_row, getLibraryFragment());
QueryUtil.getPlaylists(new MediaCallback() {
@Override
public void onLoadMedia(List<?> media) {
dataSet.addAll((List<Playlist>) media);
adapter.notifyDataSetChanged();
}
});
return adapter;
}
@Override
@ -51,39 +57,5 @@ public class PlaylistsFragment extends AbsLibraryPagerRecyclerViewFragment<Playl
@Override
public void onMediaStoreChanged() {
getLoaderManager().restartLoader(LOADER_ID, null, this);
}
@Override
public Loader<List<Playlist>> onCreateLoader(int id, Bundle args) {
return new AsyncPlaylistLoader(getActivity());
}
@Override
public void onLoadFinished(Loader<List<Playlist>> loader, List<Playlist> data) {
getAdapter().swapDataSet(data);
}
@Override
public void onLoaderReset(Loader<List<Playlist>> loader) {
getAdapter().swapDataSet(new ArrayList<>());
}
private static class AsyncPlaylistLoader extends WrappedAsyncTaskLoader<List<Playlist>> {
public AsyncPlaylistLoader(Context context) {
super(context);
}
private static List<Playlist> getAllPlaylists(Context context) {
List<Playlist> playlists = new ArrayList<>();
playlists.addAll(PlaylistLoader.getAllPlaylists(context));
return playlists;
}
@Override
public List<Playlist> loadInBackground() {
return getAllPlaylists(getContext());
}
}
}