From 7b6fc6218a791c9d3a46ef8dc465b55c4cb17e48 Mon Sep 17 00:00:00 2001 From: Amin Bandali Date: Mon, 13 Apr 2015 20:59:43 -0400 Subject: [PATCH 1/2] add "Empty queue" option in Queue activity --- res/values/translatable.xml | 1 + .../android/vanilla/PlaybackActivity.java | 1 + .../android/vanilla/PlaybackService.java | 8 ++++++++ .../android/vanilla/ShowQueueActivity.java | 4 ++++ .../android/vanilla/SongTimeline.java | 17 +++++++++++++++++ 5 files changed, 31 insertions(+) diff --git a/res/values/translatable.xml b/res/values/translatable.xml index b5291f0a..5c66dcc5 100644 --- a/res/values/translatable.xml +++ b/res/values/translatable.xml @@ -266,6 +266,7 @@ THE SOFTWARE. Enqueue artist Enqueue genre Clear queue + Empty queue Show queue Queue Toggle controls diff --git a/src/ch/blinkenlights/android/vanilla/PlaybackActivity.java b/src/ch/blinkenlights/android/vanilla/PlaybackActivity.java index 964f6114..416a0f26 100644 --- a/src/ch/blinkenlights/android/vanilla/PlaybackActivity.java +++ b/src/ch/blinkenlights/android/vanilla/PlaybackActivity.java @@ -349,6 +349,7 @@ public abstract class PlaybackActivity extends Activity static final int MENU_SHOW_QUEUE = 13; static final int MENU_SAVE_AS_PLAYLIST = 14; static final int MENU_DELETE = 15; + static final int MENU_EMPTY_QUEUE = 16; @Override public boolean onCreateOptionsMenu(Menu menu) diff --git a/src/ch/blinkenlights/android/vanilla/PlaybackService.java b/src/ch/blinkenlights/android/vanilla/PlaybackService.java index e2d6c822..647266c5 100644 --- a/src/ch/blinkenlights/android/vanilla/PlaybackService.java +++ b/src/ch/blinkenlights/android/vanilla/PlaybackService.java @@ -1637,6 +1637,14 @@ public final class PlaybackService extends Service mTimeline.clearQueue(); } + /** + * Empty the song queue. + */ + public void emptyQueue() + { + mTimeline.emptyQueue(); + } + /** * Return the error message set when FLAG_ERROR is set. */ diff --git a/src/ch/blinkenlights/android/vanilla/ShowQueueActivity.java b/src/ch/blinkenlights/android/vanilla/ShowQueueActivity.java index 86e22982..7840daf7 100644 --- a/src/ch/blinkenlights/android/vanilla/ShowQueueActivity.java +++ b/src/ch/blinkenlights/android/vanilla/ShowQueueActivity.java @@ -73,6 +73,7 @@ public class ShowQueueActivity extends PlaybackActivity @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, MENU_CLEAR_QUEUE, 0, R.string.clear_queue).setIcon(R.drawable.ic_menu_close_clear_cancel); + menu.add(0, MENU_EMPTY_QUEUE, 0, R.string.empty_the_queue); menu.add(0, MENU_SAVE_AS_PLAYLIST, 0, R.string.save_as_playlist).setIcon(R.drawable.ic_menu_preferences); return true; } @@ -93,6 +94,9 @@ public class ShowQueueActivity extends PlaybackActivity dialog.setOnDismissListener(this); dialog.show(); break; + case MENU_EMPTY_QUEUE: + PlaybackService.get(this).emptyQueue(); + break; default: return super.onOptionsItemSelected(item); } diff --git a/src/ch/blinkenlights/android/vanilla/SongTimeline.java b/src/ch/blinkenlights/android/vanilla/SongTimeline.java index 30844185..6123a468 100644 --- a/src/ch/blinkenlights/android/vanilla/SongTimeline.java +++ b/src/ch/blinkenlights/android/vanilla/SongTimeline.java @@ -786,6 +786,23 @@ public final class SongTimeline { changed(); } + /** + * Empty the song queue (clear the whole queue). + */ + public void emptyQueue() + { + synchronized (this) { + mSongs.clear(); + } + + if (mCallback != null) { + mCallback.activeSongReplaced(+1, getSong(+1)); + mCallback.positionInfoChanged(); + } + + changed(); + } + /** * Save the active songs for use with broadcastChangedSongs(). * From ddb129b660cdcf1126bb886ed5b165348b32b512 Mon Sep 17 00:00:00 2001 From: Amin Bandali Date: Tue, 14 Apr 2015 15:32:24 -0400 Subject: [PATCH 2/2] use saveActiveSongs and broadcastChangedSongs in clearQueue and emptyQueue also, call pause and setFlag before calling emptyQueue --- .../android/vanilla/PlaybackService.java | 2 ++ .../android/vanilla/SongTimeline.java | 14 ++++---------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/ch/blinkenlights/android/vanilla/PlaybackService.java b/src/ch/blinkenlights/android/vanilla/PlaybackService.java index 647266c5..7d638f05 100644 --- a/src/ch/blinkenlights/android/vanilla/PlaybackService.java +++ b/src/ch/blinkenlights/android/vanilla/PlaybackService.java @@ -1642,6 +1642,8 @@ public final class PlaybackService extends Service */ public void emptyQueue() { + pause(); + setFlag(FLAG_EMPTY_QUEUE); mTimeline.emptyQueue(); } diff --git a/src/ch/blinkenlights/android/vanilla/SongTimeline.java b/src/ch/blinkenlights/android/vanilla/SongTimeline.java index 6123a468..d7559bcd 100644 --- a/src/ch/blinkenlights/android/vanilla/SongTimeline.java +++ b/src/ch/blinkenlights/android/vanilla/SongTimeline.java @@ -774,15 +774,12 @@ public final class SongTimeline { public void clearQueue() { synchronized (this) { + saveActiveSongs(); if (mCurrentPos + 1 < mSongs.size()) mSongs.subList(mCurrentPos + 1, mSongs.size()).clear(); } - if (mCallback != null) { - mCallback.activeSongReplaced(+1, getSong(+1)); - mCallback.positionInfoChanged(); - } - + broadcastChangedSongs(); changed(); } @@ -792,14 +789,11 @@ public final class SongTimeline { public void emptyQueue() { synchronized (this) { + saveActiveSongs(); mSongs.clear(); } - if (mCallback != null) { - mCallback.activeSongReplaced(+1, getSong(+1)); - mCallback.positionInfoChanged(); - } - + broadcastChangedSongs(); changed(); }