diff options
author | Ross Harrison <rtharrison86@gmail.com> | 2015-02-28 14:45:14 -0600 |
---|---|---|
committer | Ross Harrison <rtharrison86@gmail.com> | 2015-02-28 14:45:14 -0600 |
commit | ab34f84e2c837e927e359c978f5d1ea15be80971 (patch) | |
tree | a895ba367c59255666c5b4a2d7d99839c66c5177 /core/src/main/java/de | |
parent | 46252ce663903b8f4c9ff41b7ab05ad3c94df669 (diff) | |
parent | c9e8af52c24b405c65fc9220a6c5c573574df672 (diff) | |
download | AntennaPod-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')
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); + } + } +} |