From c4399de8cb15de5f3e6c9c194cebb2521b9352f7 Mon Sep 17 00:00:00 2001 From: damoasda <46045854+damoasda@users.noreply.github.com> Date: Sun, 11 Aug 2019 14:07:45 +0200 Subject: Changes due to feedback in pull request #3315 --- .../java/de/danoeh/antennapod/fragment/QueueFragment.java | 14 +++++--------- .../antennapod/core/preferences/UserPreferences.java | 15 +-------------- .../java/de/danoeh/antennapod/core/storage/DBWriter.java | 4 ++++ .../java/de/danoeh/antennapod/core/util/SortOrder.java | 14 +++++++++++++- 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 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; + } + } } -- cgit v1.2.3