diff options
author | Erik Johnson <palehose@gmail.com> | 2023-02-22 14:34:43 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-22 21:34:43 +0100 |
commit | 9fed944392ee31f00ef91a01a2c34dddc876a86a (patch) | |
tree | 198a5618feacc5fbc847fae378bdaa6bbaec032c /core/src | |
parent | 5c79bc7c4541fbc0788d03adf3c56b483f96dcdb (diff) | |
download | AntennaPod-9fed944392ee31f00ef91a01a2c34dddc876a86a.zip |
Add "New Episodes Action" preference (#6095)
Diffstat (limited to 'core/src')
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> |