From 7a2f4771ecd327665497f21606ebc9d6c9415fd1 Mon Sep 17 00:00:00 2001 From: Jared234 Date: Sun, 12 Feb 2023 21:12:04 +0100 Subject: Add sorting options to downloads screen (#6210) --- .../antennapod/core/service/playback/PlaybackService.java | 4 ++-- .../de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java | 3 ++- .../antennapod/core/storage/APQueueCleanupAlgorithm.java | 3 ++- .../main/java/de/danoeh/antennapod/core/storage/DBReader.java | 11 ++++++++--- .../core/storage/ExceptFavoriteCleanupAlgorithm.java | 3 ++- .../java/de/danoeh/antennapod/core/storage/DbReaderTest.java | 2 +- 6 files changed, 17 insertions(+), 9 deletions(-) (limited to 'core') 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 bf8cf7778..14e11af23 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 @@ -387,7 +387,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { mediaItems.add(createBrowsableMediaItem(R.string.queue_label, R.drawable.ic_playlist_play_black, DBReader.getQueue().size())); mediaItems.add(createBrowsableMediaItem(R.string.downloads_label, R.drawable.ic_download_black, - DBReader.getDownloadedItems().size())); + DBReader.getDownloadedItems(UserPreferences.getDownloadsSortedOrder()).size())); mediaItems.add(createBrowsableMediaItem(R.string.episodes_label, R.drawable.ic_feed_black, DBReader.getTotalEpisodeCount(new FeedItemFilter(FeedItemFilter.UNPLAYED)))); List feeds = DBReader.getFeedList(); @@ -401,7 +401,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { if (parentId.equals(getResources().getString(R.string.queue_label))) { feedItems = DBReader.getQueue(); } else if (parentId.equals(getResources().getString(R.string.downloads_label))) { - feedItems = DBReader.getDownloadedItems(); + feedItems = DBReader.getDownloadedItems(UserPreferences.getDownloadsSortedOrder()); } else if (parentId.equals(getResources().getString(R.string.episodes_label))) { feedItems = DBReader.getRecentlyPublishedEpisodes(0, MAX_ANDROID_AUTO_EPISODES_PER_FEED, diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java b/core/src/main/java/de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java index 2be330a3e..30c50b576 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java @@ -15,6 +15,7 @@ import java.util.concurrent.ExecutionException; import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedMedia; +import de.danoeh.antennapod.model.feed.SortOrder; /** * Implementation of the EpisodeCleanupAlgorithm interface used by AntennaPod. @@ -88,7 +89,7 @@ public class APCleanupAlgorithm extends EpisodeCleanupAlgorithm { @NonNull private List getCandidates() { List candidates = new ArrayList<>(); - List downloadedItems = DBReader.getDownloadedItems(); + List downloadedItems = DBReader.getDownloadedItems(SortOrder.DATE_NEW_OLD); Date mostRecentDateForDeletion = calcMostRecentDateForDeletion(new Date()); for (FeedItem item : downloadedItems) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/APQueueCleanupAlgorithm.java b/core/src/main/java/de/danoeh/antennapod/core/storage/APQueueCleanupAlgorithm.java index 9fce34a44..3241f37ef 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/APQueueCleanupAlgorithm.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/APQueueCleanupAlgorithm.java @@ -12,6 +12,7 @@ import java.util.Locale; import java.util.concurrent.ExecutionException; import de.danoeh.antennapod.model.feed.FeedItem; +import de.danoeh.antennapod.model.feed.SortOrder; /** * A cleanup algorithm that removes any item that isn't in the queue and isn't a favorite @@ -75,7 +76,7 @@ public class APQueueCleanupAlgorithm extends EpisodeCleanupAlgorithm { @NonNull private List getCandidates() { List candidates = new ArrayList<>(); - List downloadedItems = DBReader.getDownloadedItems(); + List downloadedItems = DBReader.getDownloadedItems(SortOrder.DATE_NEW_OLD); for (FeedItem item : downloadedItems) { if (item.hasMedia() && item.getMedia().isDownloaded() diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java index 55acb8b92..4641e366c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java @@ -20,6 +20,7 @@ import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedItemFilter; import de.danoeh.antennapod.model.feed.FeedMedia; import de.danoeh.antennapod.model.feed.FeedPreferences; +import de.danoeh.antennapod.model.feed.SortOrder; import de.danoeh.antennapod.model.feed.SubscriptionsFilter; import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.model.download.DownloadStatus; @@ -280,15 +281,19 @@ public final class DBReader { * @return A list of FeedItems whose episdoe has been downloaded. */ @NonNull - public static List getDownloadedItems() { + public static List getDownloadedItems(@Nullable SortOrder sortOrder) { Log.d(TAG, "getDownloadedItems() called"); + // Set a default sort order + if (sortOrder == null) { + sortOrder = SortOrder.DATE_NEW_OLD; + } + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); - try (Cursor cursor = adapter.getDownloadedItemsCursor()) { + try (Cursor cursor = adapter.getDownloadedItemsCursor(sortOrder)) { List items = extractItemlistFromCursor(adapter, cursor); loadAdditionalFeedItemListData(items); - Collections.sort(items, new FeedItemPubdateComparator()); return items; } finally { adapter.close(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/ExceptFavoriteCleanupAlgorithm.java b/core/src/main/java/de/danoeh/antennapod/core/storage/ExceptFavoriteCleanupAlgorithm.java index 5d092da6d..448cffeb9 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/ExceptFavoriteCleanupAlgorithm.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/ExceptFavoriteCleanupAlgorithm.java @@ -13,6 +13,7 @@ import java.util.Locale; import java.util.concurrent.ExecutionException; import de.danoeh.antennapod.model.feed.FeedItem; +import de.danoeh.antennapod.model.feed.SortOrder; import de.danoeh.antennapod.storage.preferences.UserPreferences; /** @@ -74,7 +75,7 @@ public class ExceptFavoriteCleanupAlgorithm extends EpisodeCleanupAlgorithm { @NonNull private List getCandidates() { List candidates = new ArrayList<>(); - List downloadedItems = DBReader.getDownloadedItems(); + List downloadedItems = DBReader.getDownloadedItems(SortOrder.DATE_NEW_OLD); for (FeedItem item : downloadedItems) { if (item.hasMedia() && item.getMedia().isDownloaded() diff --git a/core/src/test/java/de/danoeh/antennapod/core/storage/DbReaderTest.java b/core/src/test/java/de/danoeh/antennapod/core/storage/DbReaderTest.java index 93f158b66..c44c6ae43 100644 --- a/core/src/test/java/de/danoeh/antennapod/core/storage/DbReaderTest.java +++ b/core/src/test/java/de/danoeh/antennapod/core/storage/DbReaderTest.java @@ -237,7 +237,7 @@ public class DbReaderTest { public void testGetDownloadedItems() { final int numItems = 10; List downloaded = saveDownloadedItems(numItems); - List downloadedSaved = DBReader.getDownloadedItems(); + List downloadedSaved = DBReader.getDownloadedItems(null); assertNotNull(downloadedSaved); assertEquals(downloaded.size(), downloadedSaved.size()); for (FeedItem item : downloadedSaved) { -- cgit v1.2.3