summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java14
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java15
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/SortOrder.java14
4 files changed, 23 insertions, 24 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 cf80bccc7..0fe413954 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
@@ -378,9 +378,11 @@ public class QueueFragment extends Fragment {
if (keepSortedNew) {
SortOrder sortOrder = UserPreferences.getQueueKeepSortedOrder();
QueueSorter.sort(sortOrder, true);
+ recyclerAdapter.setLocked(true);
+ } else {
+ recyclerAdapter.setLocked(UserPreferences.isQueueLocked());
}
- // Update sort menu items and list lock elements
- getActivity().recreate();
+ getActivity().invalidateOptionsMenu();
return true;
default:
return false;
@@ -393,16 +395,10 @@ public class QueueFragment extends Fragment {
/**
* 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 sortOrder New sort order.
*/
private void setSortOrder(SortOrder sortOrder) {
- boolean keepSorted = UserPreferences.isQueueKeepSorted();
- if (keepSorted) {
- UserPreferences.setQueueKeepSortedOrder(sortOrder);
- }
+ UserPreferences.setQueueKeepSortedOrder(sortOrder);
QueueSorter.sort(sortOrder, true);
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
index b85518840..d0fc27e72 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
@@ -899,7 +899,7 @@ public class UserPreferences {
*/
public static SortOrder getQueueKeepSortedOrder() {
String sortOrderStr = prefs.getString(PREF_QUEUE_KEEP_SORTED_ORDER, "use-default");
- return parseSortOrder(sortOrderStr);
+ return SortOrder.parseWithDefault(sortOrderStr, SortOrder.DATE_NEW_OLD);
}
/**
@@ -915,17 +915,4 @@ public class UserPreferences {
.putString(PREF_QUEUE_KEEP_SORTED_ORDER, sortOrder.name())
.apply();
}
-
- /**
- * Converts the string representation to its enum value. If the string value is unknown,
- * a default value is retuned.
- */
- private static SortOrder parseSortOrder(String value) {
- try {
- return SortOrder.valueOf(value);
- } catch (IllegalArgumentException e) {
- // default value
- return SortOrder.DATE_NEW_OLD;
- }
- }
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
index b19bcfd1f..7d525a376 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
@@ -416,6 +416,10 @@ public class DBWriter {
// Sort queue by configured sort order
SortOrder sortOrder = UserPreferences.getQueueKeepSortedOrder();
+ if (sortOrder == SortOrder.RANDOM) {
+ // do not shuffle the list on every change
+ return;
+ }
Permutor<FeedItem> permutor = QueueSorter.getPermutor(sortOrder);
permutor.reorder(queue);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/SortOrder.java b/core/src/main/java/de/danoeh/antennapod/core/util/SortOrder.java
index 6c67262db..ae6fceb47 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/SortOrder.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/SortOrder.java
@@ -14,5 +14,17 @@ public enum SortOrder {
FEED_TITLE_Z_A,
RANDOM,
SMART_SHUFFLE_OLD_NEW,
- SMART_SHUFFLE_NEW_OLD
+ SMART_SHUFFLE_NEW_OLD;
+
+ /**
+ * Converts the string representation to its enum value. If the string value is unknown,
+ * the given default value is returned.
+ */
+ public static SortOrder parseWithDefault(String value, SortOrder defaultValue) {
+ try {
+ return valueOf(value);
+ } catch (IllegalArgumentException e) {
+ return defaultValue;
+ }
+ }
}