summaryrefslogtreecommitdiff
path: root/src/de/danoeh/antennapod/feed
diff options
context:
space:
mode:
authordaniel oeh <daniel.oeh@gmail.com>2013-03-07 15:34:12 +0100
committerdaniel oeh <daniel.oeh@gmail.com>2013-03-07 15:34:12 +0100
commit9dec0546bd76a6987a0b14e68a94965778a36a0e (patch)
tree8cd662643d7baa6399701e53eff194745550f399 /src/de/danoeh/antennapod/feed
parent5d9d38184fc2ae9b2bb80bcdb61b13fa33ffdab2 (diff)
downloadAntennaPod-9dec0546bd76a6987a0b14e68a94965778a36a0e.zip
Mark item as 'read' when adding it to the queue, move item to top of
queue when playing it
Diffstat (limited to 'src/de/danoeh/antennapod/feed')
-rw-r--r--src/de/danoeh/antennapod/feed/FeedManager.java52
-rw-r--r--src/de/danoeh/antennapod/feed/FeedMedia.java4
2 files changed, 49 insertions, 7 deletions
diff --git a/src/de/danoeh/antennapod/feed/FeedManager.java b/src/de/danoeh/antennapod/feed/FeedManager.java
index e984da46a..9b66c904b 100644
--- a/src/de/danoeh/antennapod/feed/FeedManager.java
+++ b/src/de/danoeh/antennapod/feed/FeedManager.java
@@ -111,7 +111,8 @@ public class FeedManager {
/**
* Play FeedMedia and start the playback service + launch Mediaplayer
- * Activity.
+ * Activity. The FeedItem belonging to the media is moved to the top of the
+ * queue.
*
* @param context
* for starting the playbackservice
@@ -149,6 +150,11 @@ public class FeedManager {
context.startActivity(PlaybackService.getPlayerActivityIntent(
context, media));
}
+ if (queue.contains(media.getItem())) {
+ moveQueueItem(context, queue.indexOf(media.getItem()), 0, true);
+ } else {
+ addQueueItemAt(context, media.getItem(), 0);
+ }
} catch (MediaFileNotFoundException e) {
e.printStackTrace();
if (PlaybackPreferences.getLastPlayedId() == media.getId()) {
@@ -197,7 +203,8 @@ public class FeedManager {
PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE));
SharedPreferences.Editor editor = prefs.edit();
editor.putLong(PlaybackPreferences.PREF_LAST_PLAYED_ID, -1);
- editor.putLong(PlaybackPreferences.PREF_CURRENTLY_PLAYING_FEED_ID, -1);
+ editor.putLong(PlaybackPreferences.PREF_CURRENTLY_PLAYING_FEED_ID,
+ -1);
editor.commit();
}
@@ -605,7 +612,43 @@ public class FeedManager {
}
}
- /** Adds FeedItems to the queue if they are not in the queue yet. */
+ /**
+ * Adds a feeditem to the queue at the specified index if it is not in the
+ * queue yet. The item is marked as 'read'.
+ */
+ public void addQueueItemAt(final Context context, final FeedItem item,
+ final int index) {
+ contentChanger.post(new Runnable() {
+
+ @Override
+ public void run() {
+ if (!queue.contains(item)) {
+ queue.add(index, item);
+ if (!item.isRead()) {
+ markItemRead(context, item, true, false);
+ }
+ }
+ eventDist.sendQueueUpdateBroadcast();
+
+ dbExec.execute(new Runnable() {
+
+ @Override
+ public void run() {
+ PodDBAdapter adapter = new PodDBAdapter(context);
+ adapter.open();
+ adapter.setQueue(queue);
+ adapter.close();
+ }
+ });
+ }
+ });
+
+ }
+
+ /**
+ * Adds FeedItems to the queue if they are not in the queue yet. The items
+ * are marked as 'read'.
+ */
public void addQueueItem(final Context context, final FeedItem... items) {
if (items.length > 0) {
contentChanger.post(new Runnable() {
@@ -615,6 +658,9 @@ public class FeedManager {
for (FeedItem item : items) {
if (!queue.contains(item)) {
queue.add(item);
+ if (!item.isRead()) {
+ markItemRead(context, item, true, false);
+ }
}
}
eventDist.sendQueueUpdateBroadcast();
diff --git a/src/de/danoeh/antennapod/feed/FeedMedia.java b/src/de/danoeh/antennapod/feed/FeedMedia.java
index de87c63a1..dbf565535 100644
--- a/src/de/danoeh/antennapod/feed/FeedMedia.java
+++ b/src/de/danoeh/antennapod/feed/FeedMedia.java
@@ -257,10 +257,6 @@ public class FeedMedia extends FeedFile implements Playable {
@Override
public void onPlaybackStart() {
- if (getItem().isRead() == false) {
- FeedManager.getInstance().markItemRead(PodcastApp.getInstance(),
- getItem(), true, false);
- }
}
@Override