summaryrefslogtreecommitdiff
path: root/core/src/main/java/de
diff options
context:
space:
mode:
authorRoss Harrison <rtharrison86@gmail.com>2015-02-28 14:45:14 -0600
committerRoss Harrison <rtharrison86@gmail.com>2015-02-28 14:45:14 -0600
commitab34f84e2c837e927e359c978f5d1ea15be80971 (patch)
treea895ba367c59255666c5b4a2d7d99839c66c5177 /core/src/main/java/de
parent46252ce663903b8f4c9ff41b7ab05ad3c94df669 (diff)
parentc9e8af52c24b405c65fc9220a6c5c573574df672 (diff)
downloadAntennaPod-ab34f84e2c837e927e359c978f5d1ea15be80971.zip
Merge branch 'master' of https://github.com/AntennaPod/AntennaPod into AntennaPod-master
core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
Diffstat (limited to 'core/src/main/java/de')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java9
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/APCleanupAlgorithm.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java68
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/QueueSorter.java89
4 files changed, 153 insertions, 15 deletions
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 866f1cba3..aabbcc185 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
@@ -553,6 +553,15 @@ public class PlaybackService extends Service {
if (isAutoFlattrable(media) && UserPreferences.getAutoFlattrPlayedDurationThreshold() == 1.0f) {
DBTasks.flattrItemIfLoggedIn(PlaybackService.this, item);
}
+
+ //Delete episode if enabled
+ if(UserPreferences.isAutoDelete()) {
+ DBWriter.deleteFeedMediaOfItem(PlaybackService.this, item.getMedia().getId());
+
+ if(BuildConfig.DEBUG)
+ Log.d(TAG, "Episode Deleted");
+ }
+
}
// Load next episode if previous episode was in the queue and if there
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 499fddf74..0164e914b 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
@@ -76,7 +76,7 @@ public class APCleanupAlgorithm implements EpisodeCleanupAlgorithm<Integer> {
@Override
public Integer getDefaultCleanupParameter(Context context) {
- return 0;
+ return getPerformAutoCleanupArgs(context, 0);
}
@Override
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 2a00776e2..dd6905797 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
@@ -7,24 +7,13 @@ import android.content.SharedPreferences;
import android.database.Cursor;
import android.preference.PreferenceManager;
import android.util.Log;
-import de.danoeh.antennapod.core.BuildConfig;
-import de.danoeh.antennapod.core.ClientConfig;
-import de.danoeh.antennapod.core.asynctask.FlattrClickWorker;
-import de.danoeh.antennapod.core.feed.*;
-import de.danoeh.antennapod.core.preferences.GpodnetPreferences;
-import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
-import de.danoeh.antennapod.core.preferences.UserPreferences;
-import de.danoeh.antennapod.core.service.download.DownloadStatus;
-import de.danoeh.antennapod.core.service.playback.PlaybackService;
-import de.danoeh.antennapod.core.util.QueueAccess;
-import de.danoeh.antennapod.core.util.flattr.FlattrStatus;
-import de.danoeh.antennapod.core.util.flattr.FlattrThing;
-import de.danoeh.antennapod.core.util.flattr.SimpleFlattrThing;
import org.shredzone.flattr4j.model.Flattr;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
@@ -34,6 +23,25 @@ import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ThreadFactory;
+import de.danoeh.antennapod.core.BuildConfig;
+import de.danoeh.antennapod.core.ClientConfig;
+import de.danoeh.antennapod.core.asynctask.FlattrClickWorker;
+import de.danoeh.antennapod.core.feed.EventDistributor;
+import de.danoeh.antennapod.core.feed.Feed;
+import de.danoeh.antennapod.core.feed.FeedImage;
+import de.danoeh.antennapod.core.feed.FeedItem;
+import de.danoeh.antennapod.core.feed.FeedMedia;
+import de.danoeh.antennapod.core.feed.FeedPreferences;
+import de.danoeh.antennapod.core.preferences.GpodnetPreferences;
+import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
+import de.danoeh.antennapod.core.preferences.UserPreferences;
+import de.danoeh.antennapod.core.service.download.DownloadStatus;
+import de.danoeh.antennapod.core.service.playback.PlaybackService;
+import de.danoeh.antennapod.core.util.QueueAccess;
+import de.danoeh.antennapod.core.util.flattr.FlattrStatus;
+import de.danoeh.antennapod.core.util.flattr.FlattrThing;
+import de.danoeh.antennapod.core.util.flattr.SimpleFlattrThing;
+
/**
* Provides methods for writing data to AntennaPod's database.
* In general, DBWriter-methods will be executed on an internal ExecutorService.
@@ -829,7 +837,8 @@ public class DBWriter {
PodDBAdapter adapter = new PodDBAdapter(context);
adapter.open();
for (String key : urls.keySet()) {
- if (BuildConfig.DEBUG) Log.d(TAG, "Replacing URL " + key + " with url " + urls.get(key));
+ if (BuildConfig.DEBUG)
+ Log.d(TAG, "Replacing URL " + key + " with url " + urls.get(key));
adapter.setFeedDownloadUrl(key, urls.get(key));
}
@@ -986,4 +995,35 @@ public class DBWriter {
}
});
}
+
+ /**
+ * Sort the FeedItems in the queue with the given Comparator.
+ *
+ * @param context A context that is used for opening a database connection.
+ * @param comparator FeedItem comparator
+ * @param broadcastUpdate true if this operation should trigger a QueueUpdateBroadcast. This option should be set to
+ * false if the caller wants to avoid unexpected updates of the GUI.
+ */
+ public static Future<?> sortQueue(final Context context, final Comparator<FeedItem> comparator, final boolean broadcastUpdate) {
+ return dbExec.submit(new Runnable() {
+ @Override
+ public void run() {
+ final PodDBAdapter adapter = new PodDBAdapter(context);
+ adapter.open();
+ final List<FeedItem> queue = DBReader.getQueue(context, adapter);
+
+ if (queue != null) {
+ Collections.sort(queue, comparator);
+ adapter.setQueue(queue);
+ if (broadcastUpdate) {
+ EventDistributor.getInstance()
+ .sendQueueUpdateBroadcast();
+ }
+ } else {
+ Log.e(TAG, "sortQueue: Could not load queue");
+ }
+ adapter.close();
+ }
+ });
+ }
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/QueueSorter.java b/core/src/main/java/de/danoeh/antennapod/core/util/QueueSorter.java
new file mode 100644
index 000000000..9a1496b75
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/QueueSorter.java
@@ -0,0 +1,89 @@
+package de.danoeh.antennapod.core.util;
+
+import android.content.Context;
+
+import de.danoeh.antennapod.core.feed.FeedItem;
+import de.danoeh.antennapod.core.feed.FeedMedia;
+import de.danoeh.antennapod.core.storage.DBWriter;
+
+import java.util.Comparator;
+
+/**
+ * Provides method for sorting the queue according to rules.
+ */
+public class QueueSorter {
+ public enum Rule {
+ ALPHA_ASC,
+ ALPHA_DESC,
+ DATE_ASC,
+ DATE_DESC,
+ DURATION_ASC,
+ DURATION_DESC
+ }
+
+ public static void sort(final Context context, final Rule rule, final boolean broadcastUpdate) {
+ Comparator<FeedItem> comparator = null;
+
+ switch (rule) {
+ case ALPHA_ASC:
+ comparator = new Comparator<FeedItem>() {
+ public int compare(FeedItem f1, FeedItem f2) {
+ return f1.getTitle().compareTo(f2.getTitle());
+ }
+ };
+ break;
+ case ALPHA_DESC:
+ comparator = new Comparator<FeedItem>() {
+ public int compare(FeedItem f1, FeedItem f2) {
+ return f2.getTitle().compareTo(f1.getTitle());
+ }
+ };
+ break;
+ case DATE_ASC:
+ comparator = new Comparator<FeedItem>() {
+ public int compare(FeedItem f1, FeedItem f2) {
+ return f1.getPubDate().compareTo(f2.getPubDate());
+ }
+ };
+ break;
+ case DATE_DESC:
+ comparator = new Comparator<FeedItem>() {
+ public int compare(FeedItem f1, FeedItem f2) {
+ return f2.getPubDate().compareTo(f1.getPubDate());
+ }
+ };
+ break;
+ case DURATION_ASC:
+ comparator = new Comparator<FeedItem>() {
+ public int compare(FeedItem f1, FeedItem f2) {
+ FeedMedia f1Media = f1.getMedia();
+ FeedMedia f2Media = f2.getMedia();
+ int duration1 = f1Media != null ? f1Media.getDuration() : -1;
+ int duration2 = f2Media != null ? f2Media.getDuration() : -1;
+
+ if (duration1 == -1 || duration2 == -1)
+ return duration2 - duration1;
+ else
+ return duration1 - duration2;
+ }
+ };
+ break;
+ case DURATION_DESC:
+ comparator = new Comparator<FeedItem>() {
+ public int compare(FeedItem f1, FeedItem f2) {
+ FeedMedia f1Media = f1.getMedia();
+ FeedMedia f2Media = f2.getMedia();
+ int duration1 = f1Media != null ? f1Media.getDuration() : -1;
+ int duration2 = f2Media != null ? f2Media.getDuration() : -1;
+
+ return -1 * (duration1 - duration2);
+ }
+ };
+ default:
+ }
+
+ if (comparator != null) {
+ DBWriter.sortQueue(context, comparator, broadcastUpdate);
+ }
+ }
+}