From 4e6df0faf8bb7c44f6807b830d4fa891a7406ff3 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sun, 20 Mar 2016 21:11:21 +0100 Subject: [PATCH] The LibraryFragments are now loading their content async. --- .../gramophone/adapter/PlaylistAdapter.java | 7 +- .../adapter/album/AlbumAdapter.java | 8 +- .../adapter/artist/ArtistAdapter.java | 4 + .../gramophone/loader/PlaylistLoader.java | 7 +- .../misc/WrappedAsyncTaskLoader.java | 76 +++++++++++++++++++ .../gramophone/service/MultiPlayer.java | 3 +- .../AbsLibraryPagerFragment.java | 7 ++ ...gerRecyclerViewCustomGridSizeFragment.java | 26 ++++++- .../AbsLibraryPagerRecyclerViewFragment.java | 36 ++++++--- .../libraryfragments/AlbumsFragment.java | 58 +++++++++++++- .../libraryfragments/ArtistsFragment.java | 58 +++++++++++++- .../libraryfragments/PlaylistsFragment.java | 67 +++++++++++++--- .../libraryfragments/SongsFragment.java | 58 ++++++++++++-- .../kabouzeid/gramophone/util/MusicUtil.java | 4 + .../res/layout/sliding_music_panel_layout.xml | 2 +- 15 files changed, 367 insertions(+), 54 deletions(-) create mode 100644 app/src/main/java/com/kabouzeid/gramophone/misc/WrappedAsyncTaskLoader.java diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java index 1041b245..32b0b6ed 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/PlaylistAdapter.java @@ -45,16 +45,12 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter dataSet; protected int itemLayoutRes; - protected int favoritePlaylistId; public PlaylistAdapter(AppCompatActivity activity, ArrayList dataSet, @LayoutRes int itemLayoutRes, @Nullable CabHolder cabHolder) { super(activity, cabHolder, R.menu.menu_playlists_selection); this.activity = activity; this.dataSet = dataSet; this.itemLayoutRes = itemLayoutRes; - - favoritePlaylistId = MusicUtil.getFavoritesPlaylist(activity).id; - setHasStableIds(true); } @@ -64,7 +60,6 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter dataSet) { this.dataSet = dataSet; - favoritePlaylistId = MusicUtil.getFavoritesPlaylist(activity).id; notifyDataSetChanged(); } @@ -113,7 +108,7 @@ public class PlaylistAdapter extends AbsMultiSelectAdapter dataSet; + protected ArrayList dataSet; protected int itemLayoutRes; @@ -61,11 +61,15 @@ public class AlbumAdapter extends AbsMultiSelectAdapter dataSet) { + public void swapDataSet(ArrayList dataSet) { this.dataSet = dataSet; notifyDataSetChanged(); } + public ArrayList getDataSet() { + return dataSet; + } + @NonNull @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/adapter/artist/ArtistAdapter.java b/app/src/main/java/com/kabouzeid/gramophone/adapter/artist/ArtistAdapter.java index f91641e7..71610822 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/adapter/artist/ArtistAdapter.java +++ b/app/src/main/java/com/kabouzeid/gramophone/adapter/artist/ArtistAdapter.java @@ -65,6 +65,10 @@ public class ArtistAdapter extends AbsMultiSelectAdapter getDataSet() { + return dataSet; + } + public void usePalette(boolean usePalette) { this.usePalette = usePalette; notifyDataSetChanged(); diff --git a/app/src/main/java/com/kabouzeid/gramophone/loader/PlaylistLoader.java b/app/src/main/java/com/kabouzeid/gramophone/loader/PlaylistLoader.java index 8bc95b16..60ad9f1b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/loader/PlaylistLoader.java +++ b/app/src/main/java/com/kabouzeid/gramophone/loader/PlaylistLoader.java @@ -11,12 +11,11 @@ import android.support.annotation.Nullable; import com.kabouzeid.gramophone.model.Playlist; import java.util.ArrayList; -import java.util.List; public class PlaylistLoader { @NonNull - public static List getAllPlaylists(@NonNull final Context context) { + public static ArrayList getAllPlaylists(@NonNull final Context context) { return getAllPlaylists(makePlaylistCursor(context, null, null)); } @@ -55,8 +54,8 @@ public class PlaylistLoader { } @NonNull - public static List getAllPlaylists(@Nullable final Cursor cursor) { - List playlists = new ArrayList<>(); + public static ArrayList getAllPlaylists(@Nullable final Cursor cursor) { + ArrayList playlists = new ArrayList<>(); if (cursor != null && cursor.moveToFirst()) { do { diff --git a/app/src/main/java/com/kabouzeid/gramophone/misc/WrappedAsyncTaskLoader.java b/app/src/main/java/com/kabouzeid/gramophone/misc/WrappedAsyncTaskLoader.java new file mode 100644 index 00000000..a8fbe651 --- /dev/null +++ b/app/src/main/java/com/kabouzeid/gramophone/misc/WrappedAsyncTaskLoader.java @@ -0,0 +1,76 @@ + +package com.kabouzeid.gramophone.misc; + +import android.content.Context; +import android.support.v4.content.AsyncTaskLoader; + +import hugo.weaving.DebugLog; + +/** + * Issue + * 14944 + * + * @author Alexander Blom + */ +public abstract class WrappedAsyncTaskLoader extends AsyncTaskLoader { + + private D mData; + + /** + * Constructor of WrappedAsyncTaskLoader + * + * @param context The {@link Context} to use. + */ + public WrappedAsyncTaskLoader(Context context) { + super(context); + } + + /** + * {@inheritDoc} + */ + @DebugLog + @Override + public void deliverResult(D data) { + if (!isReset()) { + this.mData = data; + super.deliverResult(data); + } else { + // An asynchronous query came in while the loader is stopped + } + } + + /** + * {@inheritDoc} + */ + @DebugLog + @Override + protected void onStartLoading() { + if (this.mData != null) { + deliverResult(this.mData); + } else if (takeContentChanged() || this.mData == null) { + forceLoad(); + } + } + + /** + * {@inheritDoc} + */ + @DebugLog + @Override + protected void onStopLoading() { + // Attempt to cancel the current load task if possible + cancelLoad(); + } + + /** + * {@inheritDoc} + */ + @DebugLog + @Override + protected void onReset() { + super.onReset(); + // Ensure the loader is stopped + onStopLoading(); + this.mData = null; + } +} diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/MultiPlayer.java b/app/src/main/java/com/kabouzeid/gramophone/service/MultiPlayer.java index 9db5a4ff..8e4b1ba4 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/MultiPlayer.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/MultiPlayer.java @@ -355,7 +355,8 @@ public class MultiPlayer implements Playback, MediaPlayer.OnErrorListener, Media // SystemClock.sleep(25); mNextPlayer.start(); } - mCompletion.onCompletion(this); + if (mCompletion != null) + mCompletion.onCompletion(this); } } } \ No newline at end of file diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/AbsLibraryPagerFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/AbsLibraryPagerFragment.java index 565d4c76..cd227a6f 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/AbsLibraryPagerFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/AbsLibraryPagerFragment.java @@ -2,6 +2,7 @@ package com.kabouzeid.gramophone.ui.fragments.libraryfragments; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.support.v4.app.LoaderManager; import com.kabouzeid.gramophone.ui.fragments.LibraryFragment; @@ -10,6 +11,12 @@ import com.kabouzeid.gramophone.ui.fragments.LibraryFragment; */ public class AbsLibraryPagerFragment extends Fragment { + /* http://stackoverflow.com/a/2888433 */ + @Override + public LoaderManager getLoaderManager() { + return getParentFragment().getLoaderManager(); + } + public LibraryFragment getLibraryFragment() { return (LibraryFragment) getParentFragment(); } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.java index dd23ae03..b42ef451 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/AbsLibraryPagerRecyclerViewCustomGridSizeFragment.java @@ -1,7 +1,10 @@ package com.kabouzeid.gramophone.ui.fragments.libraryfragments; +import android.os.Bundle; import android.support.annotation.LayoutRes; +import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; +import android.view.View; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.util.Util; @@ -14,6 +17,7 @@ public abstract class AbsLibraryPagerRecyclerViewCustomGridSizeFragment { +public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFragment implements LoaderManager.LoaderCallbacks> { public static final String TAG = AlbumsFragment.class.getSimpleName(); + private static final int LOADER_ID = MusicLibraryPagerAdapter.MusicFragments.ALBUM.ordinal(); + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + getLoaderManager().initLoader(LOADER_ID, null, this); + } + @Override protected GridLayoutManager createLayoutManager() { return new GridLayoutManager(getActivity(), getGridSize()); @@ -23,10 +42,11 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra @Override protected AlbumAdapter createAdapter() { int itemLayoutRes = getItemLayoutRes(); - applyRecyclerViewPaddingForLayoutRes(itemLayoutRes); + notifyLayoutResChanged(itemLayoutRes); + ArrayList dataSet = getAdapter() == null ? new ArrayList() : getAdapter().getDataSet(); return new AlbumAdapter( getLibraryFragment().getMainActivity(), - AlbumLoader.getAllAlbums(getActivity()), + dataSet, itemLayoutRes, loadUsePalette(), getLibraryFragment()); @@ -80,6 +100,36 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra @Override public void onMediaStoreChanged() { - getAdapter().swapDataSet(AlbumLoader.getAllAlbums(getActivity())); + getLoaderManager().restartLoader(LOADER_ID, null, this); + } + + @DebugLog + @Override + public Loader> onCreateLoader(int id, Bundle args) { + return new AsyncAlbumLoader(getActivity()); + } + + @DebugLog + @Override + public void onLoadFinished(Loader> loader, ArrayList data) { + getAdapter().swapDataSet(data); + } + + @DebugLog + @Override + public void onLoaderReset(Loader> loader) { + getAdapter().swapDataSet(new ArrayList()); + } + + private static class AsyncAlbumLoader extends WrappedAsyncTaskLoader> { + public AsyncAlbumLoader(Context context) { + super(context); + } + + @DebugLog + @Override + public ArrayList loadInBackground() { + return AlbumLoader.getAllAlbums(getContext()); + } } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/ArtistsFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/ArtistsFragment.java index 3be19fe8..c5ed76f3 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/ArtistsFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/ArtistsFragment.java @@ -1,20 +1,39 @@ package com.kabouzeid.gramophone.ui.fragments.libraryfragments; +import android.content.Context; +import android.os.Bundle; import android.support.annotation.NonNull; +import android.support.v4.app.LoaderManager; +import android.support.v4.content.Loader; import android.support.v7.widget.GridLayoutManager; import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.adapter.MusicLibraryPagerAdapter; import com.kabouzeid.gramophone.adapter.artist.ArtistAdapter; import com.kabouzeid.gramophone.loader.ArtistLoader; +import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader; +import com.kabouzeid.gramophone.model.Artist; import com.kabouzeid.gramophone.util.PreferenceUtil; +import java.util.ArrayList; + +import hugo.weaving.DebugLog; + /** * @author Karim Abou Zeid (kabouzeid) */ -public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFragment { +public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFragment implements LoaderManager.LoaderCallbacks> { public static final String TAG = ArtistsFragment.class.getSimpleName(); + private static final int LOADER_ID = MusicLibraryPagerAdapter.MusicFragments.ARTIST.ordinal(); + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + getLoaderManager().initLoader(LOADER_ID, null, this); + } + @NonNull @Override protected GridLayoutManager createLayoutManager() { @@ -25,10 +44,11 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr @Override protected ArtistAdapter createAdapter() { int itemLayoutRes = getItemLayoutRes(); - applyRecyclerViewPaddingForLayoutRes(itemLayoutRes); + notifyLayoutResChanged(itemLayoutRes); + ArrayList dataSet = getAdapter() == null ? new ArrayList() : getAdapter().getDataSet(); return new ArtistAdapter( getLibraryFragment().getMainActivity(), - ArtistLoader.getAllArtists(getActivity()), + dataSet, itemLayoutRes, loadUsePalette(), getLibraryFragment()); @@ -41,7 +61,7 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr @Override public void onMediaStoreChanged() { - getAdapter().swapDataSet(ArtistLoader.getAllArtists(getActivity())); + getLoaderManager().restartLoader(LOADER_ID, null, this); } @Override @@ -84,4 +104,34 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr getLayoutManager().setSpanCount(gridSize); getAdapter().notifyDataSetChanged(); } + + @DebugLog + @Override + public Loader> onCreateLoader(int id, Bundle args) { + return new AsyncArtistLoader(getActivity()); + } + + @DebugLog + @Override + public void onLoadFinished(Loader> loader, ArrayList data) { + getAdapter().swapDataSet(data); + } + + @DebugLog + @Override + public void onLoaderReset(Loader> loader) { + getAdapter().swapDataSet(new ArrayList()); + } + + private static class AsyncArtistLoader extends WrappedAsyncTaskLoader> { + public AsyncArtistLoader(Context context) { + super(context); + } + + @DebugLog + @Override + public ArrayList loadInBackground() { + return ArtistLoader.getAllArtists(getContext()); + } + } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/PlaylistsFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/PlaylistsFragment.java index d1d9ce89..be6acc5b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/PlaylistsFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/PlaylistsFragment.java @@ -1,11 +1,17 @@ package com.kabouzeid.gramophone.ui.fragments.libraryfragments; +import android.content.Context; +import android.os.Bundle; import android.support.annotation.NonNull; +import android.support.v4.app.LoaderManager; +import android.support.v4.content.Loader; import android.support.v7.widget.LinearLayoutManager; import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.adapter.MusicLibraryPagerAdapter; import com.kabouzeid.gramophone.adapter.PlaylistAdapter; import com.kabouzeid.gramophone.loader.PlaylistLoader; +import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader; import com.kabouzeid.gramophone.model.Playlist; import com.kabouzeid.gramophone.model.smartplaylist.HistoryPlaylist; import com.kabouzeid.gramophone.model.smartplaylist.LastAddedPlaylist; @@ -13,13 +19,23 @@ import com.kabouzeid.gramophone.model.smartplaylist.MyTopTracksPlaylist; import java.util.ArrayList; +import hugo.weaving.DebugLog; + /** * @author Karim Abou Zeid (kabouzeid) */ -public class PlaylistsFragment extends AbsLibraryPagerRecyclerViewFragment { +public class PlaylistsFragment extends AbsLibraryPagerRecyclerViewFragment implements LoaderManager.LoaderCallbacks> { public static final String TAG = PlaylistsFragment.class.getSimpleName(); + private static final int LOADER_ID = MusicLibraryPagerAdapter.MusicFragments.PLAYLIST.ordinal(); + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + getLoaderManager().initLoader(LOADER_ID, null, this); + } + @NonNull @Override protected LinearLayoutManager createLayoutManager() { @@ -29,7 +45,8 @@ public class PlaylistsFragment extends AbsLibraryPagerRecyclerViewFragment dataSet = getAdapter() == null ? new ArrayList() : getAdapter().getDataSet(); + return new PlaylistAdapter(getLibraryFragment().getMainActivity(), dataSet, R.layout.item_list_single_row, getLibraryFragment()); } @Override @@ -39,18 +56,48 @@ public class PlaylistsFragment extends AbsLibraryPagerRecyclerViewFragment getAllPlaylists() { - ArrayList playlists = new ArrayList<>(); + @DebugLog + @Override + public Loader> onCreateLoader(int id, Bundle args) { + return new AsyncPlaylistLoader(getActivity()); + } - playlists.add(new LastAddedPlaylist(getActivity())); - playlists.add(new HistoryPlaylist(getActivity())); - playlists.add(new MyTopTracksPlaylist(getActivity())); + @DebugLog + @Override + public void onLoadFinished(Loader> loader, ArrayList data) { + getAdapter().swapDataSet(data); + } - playlists.addAll(PlaylistLoader.getAllPlaylists(getActivity())); + @DebugLog + @Override + public void onLoaderReset(Loader> loader) { + getAdapter().swapDataSet(new ArrayList()); + } - return playlists; + private static class AsyncPlaylistLoader extends WrappedAsyncTaskLoader> { + public AsyncPlaylistLoader(Context context) { + super(context); + } + + private static ArrayList getAllPlaylists(Context context) { + ArrayList playlists = new ArrayList<>(); + + playlists.add(new LastAddedPlaylist(context)); + playlists.add(new HistoryPlaylist(context)); + playlists.add(new MyTopTracksPlaylist(context)); + + playlists.addAll(PlaylistLoader.getAllPlaylists(context)); + + return playlists; + } + + @DebugLog + @Override + public ArrayList loadInBackground() { + return getAllPlaylists(getContext()); + } } } \ No newline at end of file diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/SongsFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/SongsFragment.java index fd6d3411..9ba36a10 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/SongsFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/libraryfragments/SongsFragment.java @@ -1,24 +1,40 @@ package com.kabouzeid.gramophone.ui.fragments.libraryfragments; +import android.content.Context; +import android.os.Bundle; import android.support.annotation.NonNull; +import android.support.v4.app.LoaderManager; +import android.support.v4.content.Loader; import android.support.v7.widget.GridLayoutManager; import com.kabouzeid.gramophone.R; +import com.kabouzeid.gramophone.adapter.MusicLibraryPagerAdapter; import com.kabouzeid.gramophone.adapter.song.ShuffleButtonSongAdapter; import com.kabouzeid.gramophone.adapter.song.SongAdapter; import com.kabouzeid.gramophone.loader.SongLoader; +import com.kabouzeid.gramophone.misc.WrappedAsyncTaskLoader; import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.util.PreferenceUtil; import java.util.ArrayList; +import hugo.weaving.DebugLog; + /** * @author Karim Abou Zeid (kabouzeid) */ -public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFragment { +public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFragment implements LoaderManager.LoaderCallbacks> { public static final String TAG = SongsFragment.class.getSimpleName(); + private static final int LOADER_ID = MusicLibraryPagerAdapter.MusicFragments.SONG.ordinal(); + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + getLoaderManager().initLoader(LOADER_ID, null, this); + } + @NonNull @Override protected GridLayoutManager createLayoutManager() { @@ -28,22 +44,22 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag @NonNull @Override protected SongAdapter createAdapter() { - ArrayList songs = SongLoader.getAllSongs(getActivity()); int itemLayoutRes = getItemLayoutRes(); - applyRecyclerViewPaddingForLayoutRes(itemLayoutRes); + notifyLayoutResChanged(itemLayoutRes); boolean usePalette = loadUsePalette(); + ArrayList dataSet = getAdapter() == null ? new ArrayList() : getAdapter().getDataSet(); if (getGridSize() <= getMaxGridSizeForList()) { return new ShuffleButtonSongAdapter( getLibraryFragment().getMainActivity(), - songs, + dataSet, itemLayoutRes, usePalette, getLibraryFragment()); } return new SongAdapter( getLibraryFragment().getMainActivity(), - songs, + dataSet, itemLayoutRes, usePalette, getLibraryFragment()); @@ -56,7 +72,7 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag @Override public void onMediaStoreChanged() { - getAdapter().swapDataSet(SongLoader.getAllSongs(getActivity())); + getLoaderManager().restartLoader(LOADER_ID, null, this); } @Override @@ -99,4 +115,34 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag getLayoutManager().setSpanCount(gridSize); getAdapter().notifyDataSetChanged(); } + + @DebugLog + @Override + public Loader> onCreateLoader(int id, Bundle args) { + return new AsyncSongLoader(getActivity()); + } + + @DebugLog + @Override + public void onLoadFinished(Loader> loader, ArrayList data) { + getAdapter().swapDataSet(data); + } + + @DebugLog + @Override + public void onLoaderReset(Loader> loader) { + getAdapter().swapDataSet(new ArrayList()); + } + + private static class AsyncSongLoader extends WrappedAsyncTaskLoader> { + public AsyncSongLoader(Context context) { + super(context); + } + + @DebugLog + @Override + public ArrayList loadInBackground() { + return SongLoader.getAllSongs(getContext()); + } + } } diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java index f4dab6be..2f40558d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java +++ b/app/src/main/java/com/kabouzeid/gramophone/util/MusicUtil.java @@ -205,6 +205,10 @@ public class MusicUtil { } } + public static boolean isFavoritePlaylist(@NonNull final Context context, @NonNull final Playlist playlist) { + return playlist.name.equals(context.getString(R.string.favorites)); + } + public static Playlist getFavoritesPlaylist(@NonNull final Context context) { return PlaylistLoader.getPlaylist(context, context.getString(R.string.favorites)); } diff --git a/app/src/main/res/layout/sliding_music_panel_layout.xml b/app/src/main/res/layout/sliding_music_panel_layout.xml index bd6e1511..4fc08fe4 100644 --- a/app/src/main/res/layout/sliding_music_panel_layout.xml +++ b/app/src/main/res/layout/sliding_music_panel_layout.xml @@ -5,7 +5,7 @@ android:layout_height="match_parent" android:gravity="bottom" sothree:umanoOverlay="false" - sothree:umanoPanelHeight="@dimen/mini_player_height" + sothree:umanoPanelHeight="0dp" sothree:umanoShadowHeight="@dimen/card_elevation">