summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2014-07-26 13:53:03 +0200
committerdaniel oeh <daniel.oeh@gmail.com>2014-07-26 13:53:03 +0200
commitdf288f8f68145e9e38a639b86859db8d484bda00 (patch)
treea2477827c6ab93ddf5abf9a85c203318e448cb91
parent421786e5c81f31d86c34f6c79a3c73a53c8207c3 (diff)
downloadAntennaPod-df288f8f68145e9e38a639b86859db8d484bda00.zip
Fixed auto-flattr when playback ends
-rw-r--r--src/de/danoeh/antennapod/preferences/UserPreferences.java9
-rw-r--r--src/de/danoeh/antennapod/service/playback/PlaybackService.java17
2 files changed, 25 insertions, 1 deletions
diff --git a/src/de/danoeh/antennapod/preferences/UserPreferences.java b/src/de/danoeh/antennapod/preferences/UserPreferences.java
index e7a93daeb..2020ddfae 100644
--- a/src/de/danoeh/antennapod/preferences/UserPreferences.java
+++ b/src/de/danoeh/antennapod/preferences/UserPreferences.java
@@ -408,8 +408,17 @@ public class UserPreferences implements
instance.updateInterval = newValue;
}
+ /**
+ * Change the auto-flattr settings
+ *
+ * @param context For accessing the shared preferences
+ * @param enabled Whether automatic flattring should be enabled at all
+ * @param autoFlattrThreshold The percentage of playback time after which an episode should be
+ * flattrd. Must be a value between 0 and 1 (inclusive)
+ * */
public static void setAutoFlattrSettings(Context context, boolean enabled, float autoFlattrThreshold) {
instanceAvailable();
+ Validate.inclusiveBetween(0.0, 1.0, autoFlattrThreshold);
PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext())
.edit()
.putBoolean(PREF_AUTO_FLATTR, enabled)
diff --git a/src/de/danoeh/antennapod/service/playback/PlaybackService.java b/src/de/danoeh/antennapod/service/playback/PlaybackService.java
index 3b5573ffe..163a57ed2 100644
--- a/src/de/danoeh/antennapod/service/playback/PlaybackService.java
+++ b/src/de/danoeh/antennapod/service/playback/PlaybackService.java
@@ -43,6 +43,7 @@ import de.danoeh.antennapod.storage.DBTasks;
import de.danoeh.antennapod.storage.DBWriter;
import de.danoeh.antennapod.util.BitmapDecoder;
import de.danoeh.antennapod.util.QueueAccess;
+import de.danoeh.antennapod.util.flattr.FlattrThing;
import de.danoeh.antennapod.util.flattr.FlattrUtils;
import de.danoeh.antennapod.util.playback.Playable;
@@ -512,6 +513,11 @@ public class PlaybackService extends Service {
DBWriter.removeQueueItem(PlaybackService.this, item.getId(), true);
}
DBWriter.addItemToPlaybackHistory(PlaybackService.this, (FeedMedia) media);
+
+ // auto-flattr if enabled
+ if (isAutoFlattrable(media) && UserPreferences.getAutoFlattrPlayedDurationThreshold() == 1.0f) {
+ DBTasks.flattrItemIfLoggedIn(PlaybackService.this, item);
+ }
}
// Load next episode if previous episode was in the queue and if there
@@ -762,7 +768,7 @@ public class PlaybackService extends Service {
FeedItem item = m.getItem();
m.setPlayedDuration(m.getPlayedDuration() + ((int)(deltaPlayedDuration * playbackSpeed)));
// Auto flattr
- if (FlattrUtils.hasToken() && UserPreferences.isAutoFlattr() && item.getPaymentLink() != null && item.getFlattrStatus().getUnflattred() &&
+ if (isAutoFlattrable(m) &&
(m.getPlayedDuration() > UserPreferences.getAutoFlattrPlayedDurationThreshold() * duration)) {
if (BuildConfig.DEBUG)
@@ -1051,4 +1057,13 @@ public class PlaybackService extends Service {
return mediaPlayer.getVideoSize();
}
+ private boolean isAutoFlattrable(Playable p) {
+ if (p != null && p instanceof FeedMedia) {
+ FeedMedia media = (FeedMedia) p;
+ FeedItem item = ((FeedMedia) p).getItem();
+ return item != null && FlattrUtils.hasToken() && UserPreferences.isAutoFlattr() && item.getPaymentLink() != null && item.getFlattrStatus().getUnflattred();
+ } else {
+ return false;
+ }
+ }
}