diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2013-03-07 15:34:12 +0100 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2013-03-07 15:34:12 +0100 |
commit | 9dec0546bd76a6987a0b14e68a94965778a36a0e (patch) | |
tree | 8cd662643d7baa6399701e53eff194745550f399 /src/de | |
parent | 5d9d38184fc2ae9b2bb80bcdb61b13fa33ffdab2 (diff) | |
download | AntennaPod-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')
-rw-r--r-- | src/de/danoeh/antennapod/feed/FeedManager.java | 52 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/feed/FeedMedia.java | 4 |
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 |