summaryrefslogtreecommitdiff
path: root/storage
diff options
context:
space:
mode:
authorJared234 <jared@fantaye.de>2023-02-12 21:12:04 +0100
committerGitHub <noreply@github.com>2023-02-12 21:12:04 +0100
commit7a2f4771ecd327665497f21606ebc9d6c9415fd1 (patch)
tree6d26ea35891de0004ec04c7752c172c111cac85e /storage
parent8248bc6bb1f5f71a1e6be3101e1b2173948bf516 (diff)
downloadAntennaPod-7a2f4771ecd327665497f21606ebc9d6c9415fd1.zip
Add sorting options to downloads screen (#6210)
Diffstat (limited to 'storage')
-rw-r--r--storage/database/src/main/java/de/danoeh/antennapod/storage/database/PodDBAdapter.java8
-rw-r--r--storage/database/src/main/java/de/danoeh/antennapod/storage/database/mapper/FeedItemSortQuery.java34
-rw-r--r--storage/preferences/src/main/java/de/danoeh/antennapod/storage/preferences/UserPreferences.java19
3 files changed, 59 insertions, 2 deletions
diff --git a/storage/database/src/main/java/de/danoeh/antennapod/storage/database/PodDBAdapter.java b/storage/database/src/main/java/de/danoeh/antennapod/storage/database/PodDBAdapter.java
index 46c731205..bcb57f3bb 100644
--- a/storage/database/src/main/java/de/danoeh/antennapod/storage/database/PodDBAdapter.java
+++ b/storage/database/src/main/java/de/danoeh/antennapod/storage/database/PodDBAdapter.java
@@ -38,6 +38,8 @@ import de.danoeh.antennapod.model.feed.FeedPreferences;
import de.danoeh.antennapod.model.download.DownloadStatus;
import de.danoeh.antennapod.model.feed.SortOrder;
import de.danoeh.antennapod.storage.database.mapper.FeedItemFilterQuery;
+import de.danoeh.antennapod.storage.database.mapper.FeedItemSortQuery;
+
import org.apache.commons.io.FileUtils;
import static de.danoeh.antennapod.model.feed.FeedPreferences.SPEED_USE_GLOBAL;
@@ -1095,9 +1097,11 @@ public class PodDBAdapter {
return db.rawQuery(query, null);
}
- public Cursor getDownloadedItemsCursor() {
+ public Cursor getDownloadedItemsCursor(SortOrder sortOrder) {
+ String sortQuery = FeedItemSortQuery.generateFrom(sortOrder);
final String query = SELECT_FEED_ITEMS_AND_MEDIA
- + "WHERE " + TABLE_NAME_FEED_MEDIA + "." + KEY_DOWNLOADED + " > 0";
+ + " WHERE " + TABLE_NAME_FEED_MEDIA + "." + KEY_DOWNLOADED + " > 0"
+ + " ORDER BY " + sortQuery;
return db.rawQuery(query, null);
}
diff --git a/storage/database/src/main/java/de/danoeh/antennapod/storage/database/mapper/FeedItemSortQuery.java b/storage/database/src/main/java/de/danoeh/antennapod/storage/database/mapper/FeedItemSortQuery.java
new file mode 100644
index 000000000..aae5154d3
--- /dev/null
+++ b/storage/database/src/main/java/de/danoeh/antennapod/storage/database/mapper/FeedItemSortQuery.java
@@ -0,0 +1,34 @@
+package de.danoeh.antennapod.storage.database.mapper;
+
+import de.danoeh.antennapod.model.feed.SortOrder;
+import de.danoeh.antennapod.storage.database.PodDBAdapter;
+
+public class FeedItemSortQuery {
+ public static String generateFrom(SortOrder sortOrder) {
+ String sortQuery = "";
+ switch (sortOrder) {
+ case EPISODE_TITLE_A_Z:
+ sortQuery = PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_TITLE + " " + "ASC";
+ break;
+ case EPISODE_TITLE_Z_A:
+ sortQuery = PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_TITLE + " " + "DESC";
+ break;
+ case DATE_OLD_NEW:
+ sortQuery = PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_PUBDATE + " " + "ASC";
+ break;
+ case DATE_NEW_OLD:
+ sortQuery = PodDBAdapter.TABLE_NAME_FEED_ITEMS + "." + PodDBAdapter.KEY_PUBDATE + " " + "DESC";
+ break;
+ case DURATION_SHORT_LONG:
+ sortQuery = PodDBAdapter.TABLE_NAME_FEED_MEDIA + "." + PodDBAdapter.KEY_DURATION + " " + "ASC";
+ break;
+ case DURATION_LONG_SHORT:
+ sortQuery = PodDBAdapter.TABLE_NAME_FEED_MEDIA + "." + PodDBAdapter.KEY_DURATION + " " + "DESC";
+ break;
+ default:
+ sortQuery = "";
+ break;
+ }
+ return sortQuery;
+ }
+} \ No newline at end of file
diff --git a/storage/preferences/src/main/java/de/danoeh/antennapod/storage/preferences/UserPreferences.java b/storage/preferences/src/main/java/de/danoeh/antennapod/storage/preferences/UserPreferences.java
index 895d0ab6f..8d9b099fc 100644
--- a/storage/preferences/src/main/java/de/danoeh/antennapod/storage/preferences/UserPreferences.java
+++ b/storage/preferences/src/main/java/de/danoeh/antennapod/storage/preferences/UserPreferences.java
@@ -66,6 +66,7 @@ public class UserPreferences {
public static final String PREF_QUEUE_KEEP_SORTED = "prefQueueKeepSorted";
public static final String PREF_QUEUE_KEEP_SORTED_ORDER = "prefQueueKeepSortedOrder";
+ private static final String PREF_DOWNLOADS_SORTED_ORDER = "prefDownloadSortedOrder";
// Playback
public static final String PREF_PAUSE_ON_HEADSET_DISCONNECT = "prefPauseOnHeadsetDisconnect";
@@ -926,6 +927,24 @@ public class UserPreferences {
.apply();
}
+ /**
+ * Returns the sort order for the downloads.
+ */
+ public static SortOrder getDownloadsSortedOrder() {
+ String sortOrderStr = prefs.getString(PREF_DOWNLOADS_SORTED_ORDER, "" + SortOrder.DATE_NEW_OLD.code);
+ return SortOrder.fromCodeString(sortOrderStr);
+ }
+
+ /**
+ * Sets the sort order for the downloads.
+ */
+ public static void setDownloadsSortedOrder(SortOrder sortOrder) {
+ if (sortOrder == null) {
+ return;
+ }
+ prefs.edit().putString(PREF_DOWNLOADS_SORTED_ORDER, "" + sortOrder.code).apply();
+ }
+
public static SubscriptionsFilter getSubscriptionsFilter() {
String value = prefs.getString(PREF_FILTER_FEED, "");
return new SubscriptionsFilter(value);