summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authordamoasda <46045854+damoasda@users.noreply.github.com>2019-08-11 11:08:19 +0200
committerdamoasda <46045854+damoasda@users.noreply.github.com>2019-08-11 11:08:19 +0200
commitfe9f0c8e7e65ba66590780d2344658112692c816 (patch)
tree83eab9fcec4973cf8935a7feab1d6af2f8355638 /app
parent906142cbf3fd67c3ed27b585ed30db68d6ed5ba9 (diff)
downloadAntennaPod-fe9f0c8e7e65ba66590780d2344658112692c816.zip
Changes due to feedback in pull request #3315
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java87
-rw-r--r--app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java6
-rw-r--r--app/src/main/res/menu/queue.xml10
3 files changed, 49 insertions, 54 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 3190227a2..cf80bccc7 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
@@ -49,6 +49,7 @@ import de.danoeh.antennapod.core.util.Converter;
import de.danoeh.antennapod.core.util.FeedItemUtil;
import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.core.util.QueueSorter;
+import de.danoeh.antennapod.core.util.SortOrder;
import de.danoeh.antennapod.dialog.EpisodesApplyActionFragment;
import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler;
import de.danoeh.antennapod.menuhandler.MenuItemUtils;
@@ -277,19 +278,17 @@ public class QueueFragment extends Fragment {
MenuItemUtils.refreshLockItem(getActivity(), menu);
// Show Lock Item only if queue is sorted manually
- boolean sortedAutomatically = UserPreferences.isQueueSortedAutomatically();
+ boolean keepSorted = UserPreferences.isQueueKeepSorted();
MenuItem lockItem = menu.findItem(R.id.queue_lock);
- lockItem.setVisible(!sortedAutomatically);
+ lockItem.setVisible(!keepSorted);
- // Set keep sorted checkbox
- MenuItem sortedAutomaticallyItem = menu.findItem(R.id.queue_sort_automatically);
- sortedAutomaticallyItem.setChecked(sortedAutomatically);
-
- // Hide sort menu items for sort orders that are not supported by automatic sort.
+ // Random sort is not supported in keep sorted mode
MenuItem sortRandomItem = menu.findItem(R.id.queue_sort_random);
- sortRandomItem.setVisible(!sortedAutomatically);
- MenuItem sortSmartShuffleItem = menu.findItem(R.id.queue_sort_smart_shuffle);
- sortSmartShuffleItem.setVisible(!sortedAutomatically);
+ sortRandomItem.setVisible(!keepSorted);
+
+ // Set keep sorted checkbox
+ MenuItem keepSortedItem = menu.findItem(R.id.queue_keep_sorted);
+ keepSortedItem.setChecked(keepSorted);
isUpdatingFeeds = MenuItemUtils.updateRefreshMenuItem(menu, R.id.refresh_item, updateRefreshMenuItemChecker);
}
@@ -339,52 +338,49 @@ public class QueueFragment extends Fragment {
((MainActivity) requireActivity()) .loadChildFragment(
EpisodesApplyActionFragment.newInstance(queue, ACTION_DELETE | ACTION_REMOVE_FROM_QUEUE));
return true;
- case R.id.queue_sort_automatically:
- boolean sortedAutomaticallyOld = UserPreferences.isQueueSortedAutomatically();
- boolean sortedAutomaticallyNew = !sortedAutomaticallyOld;
- if (sortedAutomaticallyNew) {
- // We have to choose an initially sort order, let's sort by episode date
- UserPreferences.QueueSortOrder sortOrder = UserPreferences.QueueSortOrder.DATE_NEW_OLD;
- UserPreferences.setQueueSortOrder(sortOrder);
- QueueSorter.sort(QueueSorter.queueSortOrder2Rule(sortOrder), true);
- } else {
- UserPreferences.setQueueSortOrder(UserPreferences.QueueSortOrder.MANUALLY);
- }
- // Update sort menu items visibility and state
- getActivity().invalidateOptionsMenu();
- return true;
case R.id.queue_sort_episode_title_asc:
- queueSortOrderChanged(QueueSorter.Rule.EPISODE_TITLE_ASC);
+ setSortOrder(SortOrder.EPISODE_TITLE_A_Z);
return true;
case R.id.queue_sort_episode_title_desc:
- queueSortOrderChanged(QueueSorter.Rule.EPISODE_TITLE_DESC);
+ setSortOrder(SortOrder.EPISODE_TITLE_Z_A);
return true;
case R.id.queue_sort_date_asc:
- queueSortOrderChanged(QueueSorter.Rule.DATE_ASC);
+ setSortOrder(SortOrder.DATE_OLD_NEW);
return true;
case R.id.queue_sort_date_desc:
- queueSortOrderChanged(QueueSorter.Rule.DATE_DESC);
+ setSortOrder(SortOrder.DATE_NEW_OLD);
return true;
case R.id.queue_sort_duration_asc:
- queueSortOrderChanged(QueueSorter.Rule.DURATION_ASC);
+ setSortOrder(SortOrder.DURATION_SHORT_LONG);
return true;
case R.id.queue_sort_duration_desc:
- queueSortOrderChanged(QueueSorter.Rule.DURATION_DESC);
+ setSortOrder(SortOrder.DURATION_LONG_SHORT);
return true;
case R.id.queue_sort_feed_title_asc:
- queueSortOrderChanged(QueueSorter.Rule.FEED_TITLE_ASC);
+ setSortOrder(SortOrder.FEED_TITLE_A_Z);
return true;
case R.id.queue_sort_feed_title_desc:
- queueSortOrderChanged(QueueSorter.Rule.FEED_TITLE_DESC);
+ setSortOrder(SortOrder.FEED_TITLE_Z_A);
return true;
case R.id.queue_sort_random:
- queueSortOrderChanged(QueueSorter.Rule.RANDOM);
+ setSortOrder(SortOrder.RANDOM);
return true;
case R.id.queue_sort_smart_shuffle_asc:
- queueSortOrderChanged(QueueSorter.Rule.SMART_SHUFFLE_ASC);
+ setSortOrder(SortOrder.SMART_SHUFFLE_OLD_NEW);
return true;
case R.id.queue_sort_smart_shuffle_desc:
- queueSortOrderChanged(QueueSorter.Rule.SMART_SHUFFLE_DESC);
+ setSortOrder(SortOrder.SMART_SHUFFLE_NEW_OLD);
+ return true;
+ case R.id.queue_keep_sorted:
+ boolean keepSortedOld = UserPreferences.isQueueKeepSorted();
+ boolean keepSortedNew = !keepSortedOld;
+ UserPreferences.setQueueKeepSorted(keepSortedNew);
+ if (keepSortedNew) {
+ SortOrder sortOrder = UserPreferences.getQueueKeepSortedOrder();
+ QueueSorter.sort(sortOrder, true);
+ }
+ // Update sort menu items and list lock elements
+ getActivity().recreate();
return true;
default:
return false;
@@ -395,20 +391,19 @@ public class QueueFragment extends Fragment {
}
/**
- * Sorts the queue on user interaction.
- * If the queue is sorted automatically, the new sort order is stored in the preferences.
+ * This method is called if the user clicks on a sort order menu item.
+ *
+ * If the queue is in keep sorted mode, the new sort order is stored in the preferences and
+ * the queue is sorted. Otherwise the queue is just sorted.
*
- * @param rule Sort rule.
+ * @param sortOrder New sort order.
*/
- private void queueSortOrderChanged(QueueSorter.Rule rule) {
- boolean sortedAutomatically = UserPreferences.isQueueSortedAutomatically();
- UserPreferences.QueueSortOrder sortOrder = QueueSorter.rule2QueueSortOrder(rule);
- // remember sort order to keep queue sorted
- if (sortedAutomatically && sortOrder != null) {
- UserPreferences.setQueueSortOrder(sortOrder);
+ private void setSortOrder(SortOrder sortOrder) {
+ boolean keepSorted = UserPreferences.isQueueKeepSorted();
+ if (keepSorted) {
+ UserPreferences.setQueueKeepSortedOrder(sortOrder);
}
- // Sort queue
- QueueSorter.sort(rule, true);
+ QueueSorter.sort(sortOrder, true);
}
@Override
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 5d6af35da..156657a00 100644
--- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
+++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
@@ -67,17 +67,17 @@ public class FeedItemMenuHandler {
}
boolean hasMedia = selectedItem.getMedia() != null;
boolean isPlaying = hasMedia && selectedItem.getState() == FeedItem.State.PLAYING;
- boolean sortedAutomatically = UserPreferences.isQueueSortedAutomatically();
+ boolean keepSorted = UserPreferences.isQueueKeepSorted();
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() || sortedAutomatically) {
+ if (queueAccess == null || queueAccess.size() == 0 || queueAccess.get(0) == selectedItem.getId() || keepSorted) {
mi.setItemVisibility(R.id.move_to_top_item, false);
}
- if (queueAccess == null || queueAccess.size() == 0 || queueAccess.get(queueAccess.size()-1) == selectedItem.getId() || sortedAutomatically) {
+ if (queueAccess == null || queueAccess.size() == 0 || queueAccess.get(queueAccess.size()-1) == selectedItem.getId() || keepSorted) {
mi.setItemVisibility(R.id.move_to_bottom_item, false);
}
if (!isInQueue) {
diff --git a/app/src/main/res/menu/queue.xml b/app/src/main/res/menu/queue.xml
index 99f0fd950..a4e511eb8 100644
--- a/app/src/main/res/menu/queue.xml
+++ b/app/src/main/res/menu/queue.xml
@@ -29,11 +29,6 @@
<menu>
<item
- android:id="@+id/queue_sort_automatically"
- android:title="@string/sort_automatically"
- android:checkable="true" />
-
- <item
android:id="@+id/queue_sort_date"
android:title="@string/date">
@@ -107,6 +102,11 @@
android:title="@string/sort_new_to_old"/>
</menu>
</item>
+
+ <item
+ android:id="@+id/queue_keep_sorted"
+ android:title="@string/keep_sorted"
+ android:checkable="true" />
</menu>
</item>