diff options
author | damoasda <46045854+damoasda@users.noreply.github.com> | 2019-07-09 08:55:46 +0200 |
---|---|---|
committer | damoasda <46045854+damoasda@users.noreply.github.com> | 2019-07-09 08:55:46 +0200 |
commit | 9b7a61471d342a2db4a2a6fe0681e748f15ca903 (patch) | |
tree | c87cd23f6c33f8421326637955cd0c01cc3d9392 /app/src/main/java/de | |
parent | 63eb766dffe9684899f2d27e3dad540bc3c9f184 (diff) | |
download | AntennaPod-9b7a61471d342a2db4a2a6fe0681e748f15ca903.zip |
Queue: Keep sorted #1556
Diffstat (limited to 'app/src/main/java/de')
3 files changed, 37 insertions, 14 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java index 71b3c27a2..f3421c8fd 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -272,6 +272,13 @@ public class QueueFragment extends Fragment { MenuItemUtils.refreshLockItem(getActivity(), menu); + // Show Lock Item and Sort Item only if queue is sorted manually + boolean sortedManually = UserPreferences.isQueueSortedManually(); + MenuItem lockItem = menu.findItem(R.id.queue_lock); + lockItem.setVisible(sortedManually); + MenuItem sortItem = menu.findItem(R.id.queue_sort); + sortItem.setVisible(sortedManually); + isUpdatingFeeds = MenuItemUtils.updateRefreshMenuItem(menu, R.id.refresh_item, updateRefreshMenuItemChecker); } } @@ -317,37 +324,37 @@ public class QueueFragment extends Fragment { conDialog.createNewDialog().show(); return true; case R.id.queue_sort_episode_title_asc: - QueueSorter.sort(getActivity(), QueueSorter.Rule.EPISODE_TITLE_ASC, true); + QueueSorter.sort(QueueSorter.Rule.EPISODE_TITLE_ASC, true); return true; case R.id.queue_sort_episode_title_desc: - QueueSorter.sort(getActivity(), QueueSorter.Rule.EPISODE_TITLE_DESC, true); + QueueSorter.sort(QueueSorter.Rule.EPISODE_TITLE_DESC, true); return true; case R.id.queue_sort_date_asc: - QueueSorter.sort(getActivity(), QueueSorter.Rule.DATE_ASC, true); + QueueSorter.sort(QueueSorter.Rule.DATE_ASC, true); return true; case R.id.queue_sort_date_desc: - QueueSorter.sort(getActivity(), QueueSorter.Rule.DATE_DESC, true); + QueueSorter.sort(QueueSorter.Rule.DATE_DESC, true); return true; case R.id.queue_sort_duration_asc: - QueueSorter.sort(getActivity(), QueueSorter.Rule.DURATION_ASC, true); + QueueSorter.sort(QueueSorter.Rule.DURATION_ASC, true); return true; case R.id.queue_sort_duration_desc: - QueueSorter.sort(getActivity(), QueueSorter.Rule.DURATION_DESC, true); + QueueSorter.sort(QueueSorter.Rule.DURATION_DESC, true); return true; case R.id.queue_sort_feed_title_asc: - QueueSorter.sort(getActivity(), QueueSorter.Rule.FEED_TITLE_ASC, true); + QueueSorter.sort(QueueSorter.Rule.FEED_TITLE_ASC, true); return true; case R.id.queue_sort_feed_title_desc: - QueueSorter.sort(getActivity(), QueueSorter.Rule.FEED_TITLE_DESC, true); + QueueSorter.sort(QueueSorter.Rule.FEED_TITLE_DESC, true); return true; case R.id.queue_sort_random: - QueueSorter.sort(getActivity(), QueueSorter.Rule.RANDOM, true); + QueueSorter.sort(QueueSorter.Rule.RANDOM, true); return true; case R.id.queue_sort_smart_shuffle_asc: - QueueSorter.sort(getActivity(), QueueSorter.Rule.SMART_SHUFFLE_ASC, true); + QueueSorter.sort(QueueSorter.Rule.SMART_SHUFFLE_ASC, true); return true; case R.id.queue_sort_smart_shuffle_desc: - QueueSorter.sort(getActivity(), QueueSorter.Rule.SMART_SHUFFLE_DESC, true); + QueueSorter.sort(QueueSorter.Rule.SMART_SHUFFLE_DESC, true); return true; default: return false; @@ -661,5 +668,4 @@ public class QueueFragment extends Fragment { } }, error -> Log.e(TAG, Log.getStackTraceString(error))); } - } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java index e1d44f7d3..db852cee7 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/UserInterfacePreferencesFragment.java @@ -11,7 +11,12 @@ import android.widget.ListView; import android.widget.Toast; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; +import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.preferences.UserPreferences; +import de.danoeh.antennapod.core.storage.DBWriter; +import de.danoeh.antennapod.core.util.Permutor; +import de.danoeh.antennapod.core.util.QueueSorter; + import org.apache.commons.lang3.ArrayUtils; import java.util.List; @@ -89,6 +94,17 @@ public class UserInterfacePreferencesFragment extends PreferenceFragmentCompat { if (Build.VERSION.SDK_INT >= 26) { findPreference(UserPreferences.PREF_EXPANDED_NOTIFICATION).setVisible(false); } + + findPreference(UserPreferences.PREF_QUEUE_SORT_ORDER) + .setOnPreferenceChangeListener((preference, newValue) -> { + UserPreferences.QueueSortOrder newSortOrder = UserPreferences.parseQueueSortOrder((String) newValue); + if (newSortOrder != UserPreferences.QueueSortOrder.MANUALLY) { + QueueSorter.Rule sortRule = QueueSorter.queueSortOrder2Rule(newSortOrder); + Permutor<FeedItem> permutor = QueueSorter.getPermutor(sortRule); + DBWriter.reorderQueue(permutor, true); + } + return true; + }); } private void showDrawerPreferencesDialog() { diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java index 3f8d88af7..2886a7e33 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java @@ -68,16 +68,17 @@ public class FeedItemMenuHandler { } boolean hasMedia = selectedItem.getMedia() != null; boolean isPlaying = hasMedia && selectedItem.getState() == FeedItem.State.PLAYING; + boolean sortedManually = UserPreferences.isQueueSortedManually(); if (!isPlaying) { mi.setItemVisibility(R.id.skip_episode_item, false); } boolean isInQueue = selectedItem.isTagged(FeedItem.TAG_QUEUE); - if(queueAccess == null || queueAccess.size() == 0 || queueAccess.get(0) == selectedItem.getId()) { + if (queueAccess == null || queueAccess.size() == 0 || queueAccess.get(0) == selectedItem.getId() || !sortedManually) { mi.setItemVisibility(R.id.move_to_top_item, false); } - if(queueAccess == null || queueAccess.size() == 0 || queueAccess.get(queueAccess.size()-1) == selectedItem.getId()) { + if (queueAccess == null || queueAccess.size() == 0 || queueAccess.get(queueAccess.size()-1) == selectedItem.getId() || !sortedManually) { mi.setItemVisibility(R.id.move_to_bottom_item, false); } if (!isInQueue) { |