summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/PlaybackPreferencesFragment.java14
-rw-r--r--app/src/main/res/xml/preferences_playback.xml6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java13
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java2
-rw-r--r--core/src/main/res/values/strings.xml2
5 files changed, 35 insertions, 2 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/PlaybackPreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/PlaybackPreferencesFragment.java
index 1795dfc29..64ac1b8ed 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/PlaybackPreferencesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/PlaybackPreferencesFragment.java
@@ -63,6 +63,20 @@ public class PlaybackPreferencesFragment extends PreferenceFragmentCompat {
behaviour.setEntries(R.array.video_background_behavior_options_without_pip);
behaviour.setEntryValues(R.array.video_background_behavior_values_without_pip);
}
+
+ findPreference(UserPreferences.PREF_QUEUE_ADD_TO_FRONT).setOnPreferenceChangeListener(
+ (preference, newValue) -> {
+ if (newValue instanceof Boolean) {
+ boolean enableKeepInProgressAtFront = ((Boolean) newValue);
+ checkKeepInProgressAtFrontItemVisibility(enableKeepInProgressAtFront);
+ }
+ return true;
+ });
+ checkKeepInProgressAtFrontItemVisibility(UserPreferences.enqueueAtFront());
+ }
+
+ private void checkKeepInProgressAtFrontItemVisibility(boolean enabled) {
+ findPreference(UserPreferences.PREF_QUEUE_KEEP_IN_PROGESS_AT_FRONT).setEnabled(enabled);
}
private void buildSmartMarkAsPlayedPreference() {
diff --git a/app/src/main/res/xml/preferences_playback.xml b/app/src/main/res/xml/preferences_playback.xml
index 2334e1b1c..b743bdbaf 100644
--- a/app/src/main/res/xml/preferences_playback.xml
+++ b/app/src/main/res/xml/preferences_playback.xml
@@ -97,6 +97,12 @@
android:summary="@string/pref_queueAddToFront_sum"
android:title="@string/pref_queueAddToFront_title"/>
<SwitchPreference
+ android:defaultValue="false"
+ android:enabled="false"
+ android:key="prefQueueKeepInProgressAtFront"
+ android:summary="@string/pref_queueKeepInProgressAtFront_sum"
+ android:title="@string/pref_queueKeepInProgressAtFront_title"/>
+ <SwitchPreference
android:defaultValue="true"
android:enabled="true"
android:key="prefFollowQueue"
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 be130c00f..edd5e61d1 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
@@ -62,7 +62,8 @@ public class UserPreferences {
private static final String PREF_BACK_BUTTON_GO_TO_PAGE = "prefBackButtonGoToPage";
// Queue
- private static final String PREF_QUEUE_ADD_TO_FRONT = "prefQueueAddToFront";
+ public static final String PREF_QUEUE_ADD_TO_FRONT = "prefQueueAddToFront";
+ public static final String PREF_QUEUE_KEEP_IN_PROGESS_AT_FRONT = "prefQueueKeepInProgressAtFront";
public static final String PREF_QUEUE_KEEP_SORTED = "prefQueueKeepSorted";
public static final String PREF_QUEUE_KEEP_SORTED_ORDER = "prefQueueKeepSortedOrder";
@@ -288,6 +289,16 @@ public class UserPreferences {
return prefs.getBoolean(PREF_QUEUE_ADD_TO_FRONT, false);
}
+ /**
+ *
+ * @return {@code true} if in enqueuing items/podcast episodes, when the existing front item is
+ * in-progress, i.e., the user has played part of it, such item remains at the front of the
+ * queue; {@code false} otherwise.
+ */
+ public static boolean keepInProgressAtFront() {
+ return prefs.getBoolean(PREF_QUEUE_KEEP_IN_PROGESS_AT_FRONT, false);
+ }
+
public static boolean isPauseOnHeadsetDisconnect() {
return prefs.getBoolean(PREF_PAUSE_ON_HEADSET_DISCONNECT, true);
}
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 872ed973d..097f07b27 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
@@ -329,7 +329,7 @@ public class DBWriter {
new ItemEnqueuePositionCalculator(
new ItemEnqueuePositionCalculator.Options()
.setEnqueueAtFront(UserPreferences.enqueueAtFront())
- .setKeepInProgressAtFront(true) // TODO: to expose with preference
+ .setKeepInProgressAtFront(UserPreferences.keepInProgressAtFront())
);
for (int i = 0; i < itemIds.length; i++) {
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index 6541524fb..cf6bc620d 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -456,6 +456,8 @@
<string name="pref_expand_notify_unsupport_toast">Android versions before 4.1 do not support expanded notifications.</string>
<string name="pref_queueAddToFront_sum">Add new episodes to the front of the queue.</string>
<string name="pref_queueAddToFront_title">Enqueue at Front</string>
+ <string name="pref_queueKeepInProgressAtFront_title">Keep In-progress Episode at Front</string>
+ <string name="pref_queueKeepInProgressAtFront_sum">If the episode at front is in-progress, i.e., you have listened to part of it, keep it at the front of the queue.</string>
<string name="pref_smart_mark_as_played_disabled">Disabled</string>
<string name="pref_image_cache_size_title">Image Cache Size</string>
<string name="pref_image_cache_size_sum">Size of the disk cache for images.</string>