From 581e71b306bbc28dc504bde1d1bba6d6121e26e1 Mon Sep 17 00:00:00 2001 From: GitStart <1501599+gitstart@users.noreply.github.com> Date: Tue, 28 Feb 2023 23:41:15 +0300 Subject: Add option to switch a- & descending sort order for Inbox (#6266) --- .../danoeh/antennapod/fragment/InboxFragment.java | 32 ++++++++++++++++++++-- .../antennapod/ui/home/sections/InboxSection.java | 3 +- app/src/main/res/menu/inbox.xml | 6 ++++ 3 files changed, 38 insertions(+), 3 deletions(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java index 37cd40b0e..c04adee6d 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java @@ -4,6 +4,8 @@ import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -20,6 +22,8 @@ import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedItemFilter; +import de.danoeh.antennapod.model.feed.SortOrder; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import java.util.List; @@ -38,6 +42,8 @@ public class InboxFragment extends EpisodesListFragment { public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View root = super.onCreateView(inflater, container, savedInstanceState); toolbar.inflateMenu(R.menu.inbox); + inflateSortMenu(); + toolbar.setTitle(R.string.inbox_label); prefs = getActivity().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); updateToolbar(); @@ -77,6 +83,13 @@ public class InboxFragment extends EpisodesListFragment { showRemoveAllDialog(); } return true; + } else { + SortOrder sortOrder = MenuItemToSortOrderConverter.convert(item); + if (sortOrder != null) { + UserPreferences.setInboxSortedOrder(sortOrder); + loadItems(); + return true; + } } return false; } @@ -84,13 +97,14 @@ public class InboxFragment extends EpisodesListFragment { @NonNull @Override protected List loadData() { - return DBReader.getNewItemsList(0, page * EPISODES_PER_PAGE); + return DBReader.getNewItemsList(0, page * EPISODES_PER_PAGE, UserPreferences.getInboxSortedOrder()); } @NonNull @Override protected List loadMoreData(int page) { - return DBReader.getNewItemsList((page - 1) * EPISODES_PER_PAGE, EPISODES_PER_PAGE); + return DBReader.getNewItemsList((page - 1) * EPISODES_PER_PAGE, EPISODES_PER_PAGE, + UserPreferences.getInboxSortedOrder()); } @Override @@ -103,6 +117,20 @@ public class InboxFragment extends EpisodesListFragment { ((MainActivity) getActivity()).showSnackbarAbovePlayer(R.string.removed_all_inbox_msg, Toast.LENGTH_SHORT); } + private void inflateSortMenu() { + Menu menu = toolbar.getMenu(); + MenuItem downloadsItem = menu.findItem(R.id.inbox_sort); + MenuInflater menuInflater = getActivity().getMenuInflater(); + menuInflater.inflate(R.menu.sort_menu, downloadsItem.getSubMenu()); + + // Remove the sorting options that are not needed in this fragment + toolbar.getMenu().findItem(R.id.sort_episode_title).setVisible(false); + toolbar.getMenu().findItem(R.id.sort_feed_title).setVisible(false); + toolbar.getMenu().findItem(R.id.sort_random).setVisible(false); + toolbar.getMenu().findItem(R.id.sort_smart_shuffle).setVisible(false); + toolbar.getMenu().findItem(R.id.keep_sorted).setVisible(false); + } + private void showRemoveAllDialog() { MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getContext()); builder.setTitle(R.string.remove_all_inbox_label); diff --git a/app/src/main/java/de/danoeh/antennapod/ui/home/sections/InboxSection.java b/app/src/main/java/de/danoeh/antennapod/ui/home/sections/InboxSection.java index e635e9538..6baea05e6 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/home/sections/InboxSection.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/home/sections/InboxSection.java @@ -27,6 +27,7 @@ import de.danoeh.antennapod.fragment.swipeactions.SwipeActions; import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedItemFilter; import de.danoeh.antennapod.storage.database.PodDBAdapter; +import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.ui.home.HomeSection; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -125,7 +126,7 @@ public class InboxSection extends HomeSection { disposable.dispose(); } disposable = Observable.fromCallable(() -> - new Pair<>(DBReader.getNewItemsList(0, NUM_EPISODES), + new Pair<>(DBReader.getNewItemsList(0, NUM_EPISODES, UserPreferences.getInboxSortedOrder()), PodDBAdapter.getInstance().getNumberOfNewItems())) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) diff --git a/app/src/main/res/menu/inbox.xml b/app/src/main/res/menu/inbox.xml index a284a2f56..fba8eefdb 100644 --- a/app/src/main/res/menu/inbox.xml +++ b/app/src/main/res/menu/inbox.xml @@ -15,6 +15,12 @@ custom:showAsAction="always" android:icon="@drawable/ic_refresh"/> + + + +