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..7d638f05 100644 --- a/src/ch/blinkenlights/android/vanilla/PlaybackService.java +++ b/src/ch/blinkenlights/android/vanilla/PlaybackService.java @@ -1637,6 +1637,16 @@ public final class PlaybackService extends Service mTimeline.clearQueue(); } + /** + * Empty the song queue. + */ + public void emptyQueue() + { + pause(); + setFlag(FLAG_EMPTY_QUEUE); + 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..d7559bcd 100644 --- a/src/ch/blinkenlights/android/vanilla/SongTimeline.java +++ b/src/ch/blinkenlights/android/vanilla/SongTimeline.java @@ -774,15 +774,26 @@ 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(); + } + + /** + * Empty the song queue (clear the whole queue). + */ + public void emptyQueue() + { + synchronized (this) { + saveActiveSongs(); + mSongs.clear(); } + broadcastChangedSongs(); changed(); }