From a88e851c4fded8c471aa44140ea4980c92c147bf Mon Sep 17 00:00:00 2001 From: dkanada Date: Sun, 6 Sep 2020 14:12:30 +0900 Subject: [PATCH] update adapters on query change --- .../gramophone/helper/MusicPlayerRemote.java | 18 ++++++++++++++++-- .../gramophone/service/MusicService.java | 2 -- .../mainactivity/library/LibraryFragment.java | 11 +++++++++++ .../AbsLibraryPagerRecyclerViewFragment.java | 17 +++++++++++------ .../library/pager/AlbumsFragment.java | 8 ++++++-- .../library/pager/ArtistsFragment.java | 8 ++++++-- .../library/pager/GenresFragment.java | 8 ++++++-- .../library/pager/PlaylistsFragment.java | 8 ++++++-- .../library/pager/SongsFragment.java | 8 ++++++-- 9 files changed, 68 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/dkanada/gramophone/helper/MusicPlayerRemote.java b/app/src/main/java/com/dkanada/gramophone/helper/MusicPlayerRemote.java index 620ad8e6..4294a9b2 100644 --- a/app/src/main/java/com/dkanada/gramophone/helper/MusicPlayerRemote.java +++ b/app/src/main/java/com/dkanada/gramophone/helper/MusicPlayerRemote.java @@ -26,8 +26,7 @@ public class MusicPlayerRemote { private static final WeakHashMap mConnectionMap = new WeakHashMap<>(); - public static ServiceToken bindToService(@NonNull final Context context, - final ServiceConnection callback) { + public static ServiceToken bindToService(@NonNull final Context context, final ServiceConnection callback) { Activity realActivity = ((Activity) context).getParent(); if (realActivity == null) { realActivity = (Activity) context; @@ -42,6 +41,7 @@ public class MusicPlayerRemote { mConnectionMap.put(contextWrapper, binder); return new ServiceToken(contextWrapper); } + return null; } @@ -49,11 +49,13 @@ public class MusicPlayerRemote { if (token == null) { return; } + final ContextWrapper mContextWrapper = token.mWrappedContext; final ServiceBinder mBinder = mConnectionMap.remove(mContextWrapper); if (mBinder == null) { return; } + mContextWrapper.unbindService(mBinder); if (mConnectionMap.isEmpty()) { musicService = null; @@ -81,6 +83,7 @@ public class MusicPlayerRemote { if (mCallback != null) { mCallback.onServiceDisconnected(className); } + musicService = null; } } @@ -178,6 +181,7 @@ public class MusicPlayerRemote { if (musicService != null) { return musicService.getCurrentSong(); } + return Song.EMPTY_SONG; } @@ -185,6 +189,7 @@ public class MusicPlayerRemote { if (musicService != null) { return musicService.getPosition(); } + return -1; } @@ -192,6 +197,7 @@ public class MusicPlayerRemote { if (musicService != null) { return musicService.getPlayingQueue(); } + return new ArrayList<>(); } @@ -199,6 +205,7 @@ public class MusicPlayerRemote { if (musicService != null) { return musicService.getSongProgressMillis(); } + return -1; } @@ -206,6 +213,7 @@ public class MusicPlayerRemote { if (musicService != null) { return musicService.getSongDurationMillis(); } + return -1; } @@ -213,6 +221,7 @@ public class MusicPlayerRemote { if (musicService != null) { return musicService.getQueueDurationMillis(position); } + return -1; } @@ -220,6 +229,7 @@ public class MusicPlayerRemote { if (musicService != null) { return musicService.seek(millis); } + return -1; } @@ -227,6 +237,7 @@ public class MusicPlayerRemote { if (musicService != null) { return musicService.getRepeatMode(); } + return MusicService.REPEAT_MODE_NONE; } @@ -234,6 +245,7 @@ public class MusicPlayerRemote { if (musicService != null) { return musicService.getShuffleMode(); } + return MusicService.SHUFFLE_MODE_NONE; } @@ -242,6 +254,7 @@ public class MusicPlayerRemote { musicService.cycleRepeatMode(); return true; } + return false; } @@ -250,6 +263,7 @@ public class MusicPlayerRemote { musicService.toggleShuffle(); return true; } + return false; } diff --git a/app/src/main/java/com/dkanada/gramophone/service/MusicService.java b/app/src/main/java/com/dkanada/gramophone/service/MusicService.java index d2b5732e..df9d4395 100644 --- a/app/src/main/java/com/dkanada/gramophone/service/MusicService.java +++ b/app/src/main/java/com/dkanada/gramophone/service/MusicService.java @@ -9,7 +9,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; -import android.database.ContentObserver; import android.graphics.Bitmap; import android.graphics.Point; import android.graphics.drawable.Drawable; @@ -24,7 +23,6 @@ import android.os.Message; import android.os.PowerManager; import android.os.Process; import android.preference.PreferenceManager; -import android.provider.MediaStore; import android.support.v4.media.MediaMetadataCompat; import android.support.v4.media.session.MediaSessionCompat; import android.support.v4.media.session.PlaybackStateCompat; diff --git a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java index 504d31e1..ff21f7ec 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/LibraryFragment.java @@ -7,7 +7,10 @@ import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.dkanada.gramophone.App; import com.dkanada.gramophone.databinding.FragmentLibraryBinding; +import com.dkanada.gramophone.model.Song; +import com.dkanada.gramophone.util.QueryUtil; import com.google.android.material.appbar.AppBarLayout; import androidx.fragment.app.Fragment; import androidx.viewpager.widget.ViewPager; @@ -44,6 +47,14 @@ import com.dkanada.gramophone.util.ThemeUtil; import com.dkanada.gramophone.util.PreferenceUtil; import com.dkanada.gramophone.util.Util; +import org.jellyfin.apiclient.interaction.Response; +import org.jellyfin.apiclient.model.dto.BaseItemDto; +import org.jellyfin.apiclient.model.querying.ItemQuery; +import org.jellyfin.apiclient.model.querying.ItemsResult; + +import java.util.ArrayList; +import java.util.List; + public class LibraryFragment extends AbsMainActivityFragment implements CabHolder, MainActivity.MainActivityFragmentCallbacks, ViewPager.OnPageChangeListener, SharedPreferences.OnSharedPreferenceChangeListener { private FragmentLibraryBinding binding; diff --git a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/AbsLibraryPagerRecyclerViewFragment.java b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/AbsLibraryPagerRecyclerViewFragment.java index 160d264e..82d04ce1 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/AbsLibraryPagerRecyclerViewFragment.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/AbsLibraryPagerRecyclerViewFragment.java @@ -60,14 +60,14 @@ public abstract class AbsLibraryPagerRecyclerViewFragment total - page / 2 && total < size) { query = createQuery(); loading = true; - loadItems(); + loadItems(getAdapter().getItemCount()); } } diff --git a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/AlbumsFragment.java b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/AlbumsFragment.java index 72062398..b452c4fd 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/AlbumsFragment.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/AlbumsFragment.java @@ -59,10 +59,14 @@ public class AlbumsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFra return query; } - protected void loadItems() { - App.getApiClient().GetItemsAsync(getQuery(), new Response() { + protected void loadItems(int index) { + ItemQuery query = getQuery(); + query.setStartIndex(index); + + App.getApiClient().GetItemsAsync(query, new Response() { @Override public void onResponse(ItemsResult result) { + if (index == 0) getAdapter().getDataSet().clear(); for (BaseItemDto itemDto : result.getItems()) { getAdapter().getDataSet().add(new Album(itemDto)); } diff --git a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/ArtistsFragment.java b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/ArtistsFragment.java index b81c5989..0bf72fd5 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/ArtistsFragment.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/ArtistsFragment.java @@ -62,10 +62,14 @@ public class ArtistsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFr } @Override - protected void loadItems() { - App.getApiClient().GetAlbumArtistsAsync(getQuery(), new Response() { + protected void loadItems(int index) { + ArtistsQuery query = getQuery(); + query.setStartIndex(index); + + App.getApiClient().GetAlbumArtistsAsync(query, new Response() { @Override public void onResponse(ItemsResult result) { + if (index == 0) getAdapter().getDataSet().clear(); for (BaseItemDto itemDto : result.getItems()) { getAdapter().getDataSet().add(new Artist(itemDto)); } diff --git a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/GenresFragment.java b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/GenresFragment.java index 794a27c9..ed926419 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/GenresFragment.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/GenresFragment.java @@ -53,10 +53,14 @@ public class GenresFragment extends AbsLibraryPagerRecyclerViewFragment() { + protected void loadItems(int index) { + ItemsByNameQuery query = getQuery(); + query.setStartIndex(index); + + App.getApiClient().GetGenresAsync(query, new Response() { @Override public void onResponse(ItemsResult result) { + if (index == 0) getAdapter().getDataSet().clear(); for (BaseItemDto itemDto : result.getItems()) { getAdapter().getDataSet().add(new Genre(itemDto)); } diff --git a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/PlaylistsFragment.java b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/PlaylistsFragment.java index 3c4bfc61..11e92b7d 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/PlaylistsFragment.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/PlaylistsFragment.java @@ -55,10 +55,14 @@ public class PlaylistsFragment extends AbsLibraryPagerRecyclerViewFragment() { + protected void loadItems(int index) { + ItemQuery query = getQuery(); + query.setStartIndex(index); + + App.getApiClient().GetItemsAsync(query, new Response() { @Override public void onResponse(ItemsResult result) { + if (index == 0) getAdapter().getDataSet().clear(); for (BaseItemDto itemDto : result.getItems()) { getAdapter().getDataSet().add(new Playlist(itemDto)); } diff --git a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/SongsFragment.java b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/SongsFragment.java index 88d9c374..aad7e5aa 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/SongsFragment.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/fragments/mainactivity/library/pager/SongsFragment.java @@ -81,10 +81,14 @@ public class SongsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFrag } @Override - protected void loadItems() { - App.getApiClient().GetItemsAsync(getQuery(), new Response() { + protected void loadItems(int index) { + ItemQuery query = getQuery(); + query.setStartIndex(index); + + App.getApiClient().GetItemsAsync(query, new Response() { @Override public void onResponse(ItemsResult result) { + if (index == 0) getAdapter().getDataSet().clear(); for (BaseItemDto itemDto : result.getItems()) { getAdapter().getDataSet().add(new Song(itemDto)); }