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();
}