summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorErik Johnson <palehose@gmail.com>2023-02-22 14:34:43 -0600
committerGitHub <noreply@github.com>2023-02-22 21:34:43 +0100
commit9fed944392ee31f00ef91a01a2c34dddc876a86a (patch)
tree198a5618feacc5fbc847fae378bdaa6bbaec032c /core
parent5c79bc7c4541fbc0788d03adf3c56b483f96dcdb (diff)
downloadAntennaPod-9fed944392ee31f00ef91a01a2c34dddc876a86a.zip
Add "New Episodes Action" preference (#6095)
Diffstat (limited to 'core')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java25
-rw-r--r--core/src/main/res/values/arrays.xml24
5 files changed, 37 insertions, 19 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java b/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java
index 8ee924243..058602fdd 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java
@@ -124,7 +124,7 @@ public class LocalFeedUpdater {
feed.setImageUrl(getImageUrl(allFiles, folderUri));
feed.getPreferences().setAutoDownload(false);
- feed.getPreferences().setAutoDeleteAction(FeedPreferences.AutoDeleteAction.NO);
+ feed.getPreferences().setAutoDeleteAction(FeedPreferences.AutoDeleteAction.NEVER);
feed.setDescription(context.getString(R.string.local_feed_description));
feed.setAuthor(context.getString(R.string.local_folder));
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java
index a5ed5c3dd..1118b93cd 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedParserTask.java
@@ -43,7 +43,8 @@ public class FeedParserTask implements Callable<FeedHandlerResult> {
feed.setId(request.getFeedfileId());
feed.setDownloaded(true);
feed.setPreferences(new FeedPreferences(0, true, FeedPreferences.AutoDeleteAction.GLOBAL,
- VolumeAdaptionSetting.OFF, request.getUsername(), request.getPassword()));
+ VolumeAdaptionSetting.OFF, FeedPreferences.NewEpisodesAction.GLOBAL, request.getUsername(),
+ request.getPassword()));
feed.setPageNr(request.getArguments().getInt(DownloadRequest.REQUEST_ARG_PAGE_NR, 0));
DownloadError reason = null;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
index 36a056c5d..7e0377c88 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
@@ -1073,7 +1073,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
// Delete episode if enabled
FeedPreferences.AutoDeleteAction action =
item.getFeed().getPreferences().getCurrentAutoDelete();
- boolean shouldAutoDelete = action == FeedPreferences.AutoDeleteAction.YES
+ boolean shouldAutoDelete = action == FeedPreferences.AutoDeleteAction.ALWAYS
|| (action == FeedPreferences.AutoDeleteAction.GLOBAL && UserPreferences.isAutoDelete());
if (shouldAutoDelete && (!item.isTagged(FeedItem.TAG_FAVORITE)
|| !UserPreferences.shouldFavoriteKeepEpisode())) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
index 423c83c79..bf03ebff1 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
@@ -42,6 +42,7 @@ import de.danoeh.antennapod.core.util.comparator.FeedItemPubdateComparator;
import de.danoeh.antennapod.model.feed.Feed;
import de.danoeh.antennapod.model.feed.FeedItem;
import de.danoeh.antennapod.model.feed.FeedMedia;
+import de.danoeh.antennapod.model.feed.FeedPreferences;
import de.danoeh.antennapod.net.sync.model.EpisodeAction;
/**
@@ -298,13 +299,6 @@ public final class DBTasks {
Log.d(TAG, "Found no existing Feed with title "
+ newFeed.getTitle() + ". Adding as new one.");
- // Add a new Feed
- // all new feeds will have the most recent item marked as unplayed
- FeedItem mostRecent = newFeed.getMostRecentItem();
- if (mostRecent != null) {
- mostRecent.setNew();
- }
-
resultFeed = newFeed;
} else {
Log.d(TAG, "Feed with title " + newFeed.getTitle()
@@ -388,14 +382,15 @@ public final class DBTasks {
savedFeed.getItems().add(idx, item);
}
- // only mark the item new if it was published after or at the same time
- // as the most recent item
- // (if the most recent date is null then we can assume there are no items
- // and this is the first, hence 'new')
- // New items that do not have a pubDate set are always marked as new
- if (item.getPubDate() == null || priorMostRecentDate == null
- || priorMostRecentDate.before(item.getPubDate())
- || priorMostRecentDate.equals(item.getPubDate())) {
+ FeedPreferences.NewEpisodesAction action = savedFeed.getPreferences().getNewEpisodesAction();
+ if (action == FeedPreferences.NewEpisodesAction.GLOBAL) {
+ action = UserPreferences.getNewEpisodesAction();
+ }
+ if (action == FeedPreferences.NewEpisodesAction.ADD_TO_INBOX
+ && (item.getPubDate() == null
+ || priorMostRecentDate == null
+ || priorMostRecentDate.before(item.getPubDate())
+ || priorMostRecentDate.equals(item.getPubDate()))) {
Log.d(TAG, "Marking item published on " + item.getPubDate()
+ " new, prior most recent date = " + priorMostRecentDate);
item.setNew();
diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml
index 090d5e2e4..b8b9d3d6d 100644
--- a/core/src/main/res/values/arrays.xml
+++ b/core/src/main/res/values/arrays.xml
@@ -2,7 +2,7 @@
<resources>
<string-array name="spnAutoDeleteItems">
- <item>@string/feed_auto_download_global</item>
+ <item>@string/global_default</item>
<item>@string/feed_auto_download_always</item>
<item>@string/feed_auto_download_never</item>
</string-array>
@@ -25,6 +25,28 @@
<item>heavy</item>
</string-array>
+ <string-array name="globalNewEpisodesActionItems">
+ <item>@string/feed_new_episodes_action_add_to_inbox</item>
+ <item>@string/feed_new_episodes_action_nothing</item>
+ </string-array>
+
+ <string-array name="globalNewEpisodesActionValues">
+ <item>1</item>
+ <item>2</item>
+ </string-array>
+
+ <string-array name="feedNewEpisodesActionItems">
+ <item>@string/global_default</item>
+ <item>@string/feed_new_episodes_action_add_to_inbox</item>
+ <item>@string/feed_new_episodes_action_nothing</item>
+ </string-array>
+
+ <string-array name="feedNewEpisodesActionValues">
+ <item>0</item>
+ <item>1</item>
+ <item>2</item>
+ </string-array>
+
<string-array name="smart_mark_as_played_values">
<item>0</item>
<item>15</item>