diff --git a/res/values/translatable.xml b/res/values/translatable.xml
index ec1367fa..f3846696 100644
--- a/res/values/translatable.xml
+++ b/res/values/translatable.xml
@@ -29,6 +29,13 @@ THE SOFTWARE.
Settings
Library
Display Mode
+ No shuffle
+ Shuffle songs
+ Shuffle albums
+ No repeat
+ Repeat
+ Repeat current song
+ Random
Random enabled
Failed to load song %s. It may be corrupt or missing.
Queue cleared.
diff --git a/src/org/kreed/vanilla/FullPlaybackActivity.java b/src/org/kreed/vanilla/FullPlaybackActivity.java
index 3f79155f..251a05ac 100644
--- a/src/org/kreed/vanilla/FullPlaybackActivity.java
+++ b/src/org/kreed/vanilla/FullPlaybackActivity.java
@@ -30,6 +30,7 @@ import android.os.Handler;
import android.os.Message;
import android.text.format.DateUtils;
import android.util.Log;
+import android.view.ContextMenu;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
@@ -158,8 +159,10 @@ public class FullPlaybackActivity extends PlaybackActivity
mShuffleButton = (ImageButton)findViewById(R.id.shuffle);
mShuffleButton.setOnClickListener(this);
+ registerForContextMenu(mShuffleButton);
mEndButton = (ImageButton)findViewById(R.id.end_action);
mEndButton.setOnClickListener(this);
+ registerForContextMenu(mEndButton);
setControlsVisible(settings.getBoolean("visible_controls", true));
setDuration(0);
@@ -503,4 +506,34 @@ public class FullPlaybackActivity extends PlaybackActivity
return false;
}
+
+ private static final int GROUP_SHUFFLE = 0;
+ private static final int GROUP_FINISH = 1;
+
+ @Override
+ public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo)
+ {
+ if (view == mShuffleButton) {
+ menu.add(GROUP_SHUFFLE, SongTimeline.SHUFFLE_NONE, 0, R.string.no_shuffle);
+ menu.add(GROUP_SHUFFLE, SongTimeline.SHUFFLE_SONGS, 0, R.string.shuffle_songs);
+ menu.add(GROUP_SHUFFLE, SongTimeline.SHUFFLE_ALBUMS, 0, R.string.shuffle_albums);
+ } else if (view == mEndButton) {
+ menu.add(GROUP_FINISH, SongTimeline.FINISH_STOP, 0, R.string.no_repeat);
+ menu.add(GROUP_FINISH, SongTimeline.FINISH_REPEAT, 0, R.string.repeat);
+ menu.add(GROUP_FINISH, SongTimeline.FINISH_REPEAT_CURRENT, 0, R.string.repeat_current_song);
+ menu.add(GROUP_FINISH, SongTimeline.FINISH_RANDOM, 0, R.string.random);
+ }
+ }
+
+ @Override
+ public boolean onContextItemSelected(MenuItem item)
+ {
+ int group = item.getGroupId();
+ int id = item.getItemId();
+ if (group == GROUP_SHUFFLE)
+ setState(PlaybackService.get(this).setShuffleMode(id));
+ else if (group == GROUP_FINISH)
+ setState(PlaybackService.get(this).setFinishAction(id));
+ return true;
+ }
}