Adjust contextual menu based on the isRecording state.

This commit is contained in:
Jimmy Shih
2013-06-20 14:00:11 -07:00
parent 6e5365a8e8
commit 2e8d9ea411
3 changed files with 51 additions and 26 deletions
@@ -70,11 +70,18 @@ public class MarkerListActivity extends AbstractMyTracksActivity implements Dele
contextualActionModeCallback = new ContextualActionModeCallback() { contextualActionModeCallback = new ContextualActionModeCallback() {
@Override @Override
public void onPrepare(Menu menu, int[] positions, long[] ids, boolean showSelectAll) { public void onPrepare(Menu menu, int[] positions, long[] ids, boolean showSelectAll) {
boolean isSingleSelection = ids.length == 1;
// Always disable
menu.findItem(R.id.list_context_menu_play).setVisible(false); menu.findItem(R.id.list_context_menu_play).setVisible(false);
// Always disable
menu.findItem(R.id.list_context_menu_share).setVisible(false); menu.findItem(R.id.list_context_menu_share).setVisible(false);
menu.findItem(R.id.list_context_menu_show_on_map).setVisible(ids.length == 1); // One item
menu.findItem(R.id.list_context_menu_show_on_map).setVisible(isSingleSelection);
// One item, track not sharedWithMe
menu.findItem(R.id.list_context_menu_edit) menu.findItem(R.id.list_context_menu_edit)
.setVisible(ids.length == 1 && !track.isSharedWithMe()); .setVisible(isSingleSelection && !track.isSharedWithMe());
// Track not sharedWithMe
menu.findItem(R.id.list_context_menu_delete).setVisible(!track.isSharedWithMe()); menu.findItem(R.id.list_context_menu_delete).setVisible(!track.isSharedWithMe());
/* /*
* Set select all to the same visibility as delete since delete is the * Set select all to the same visibility as delete since delete is the
@@ -134,30 +134,37 @@ public class SearchListActivity extends AbstractSendToGoogleActivity
} }
@Override @Override
public void onPrepare(Menu menu, int[] positions, long[] ids, boolean showSelectAll) { public void onPrepare(Menu menu, int[] positions, long[] ids, boolean showSelectAll) {
boolean shareWithMe = true; boolean isRecording = recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT;
Long markerId = null; boolean isSingleSelection = positions.length == 1;
if (positions.length == 1) { boolean isSingleSelectionShareWithMe;
boolean isSingleSelectionTrack;
if (isSingleSelection) {
Map<String, Object> item = arrayAdapter.getItem(positions[0]); Map<String, Object> item = arrayAdapter.getItem(positions[0]);
Long trackId = (Long) item.get(TRACK_ID_FIELD); Long trackId = (Long) item.get(TRACK_ID_FIELD);
Track track = myTracksProviderUtils.getTrack(trackId); Track track = myTracksProviderUtils.getTrack(trackId);
shareWithMe = track.isSharedWithMe();
markerId = (Long) item.get(MARKER_ID_FIELD); isSingleSelectionShareWithMe = track.isSharedWithMe();
isSingleSelectionTrack = item.get(MARKER_ID_FIELD) == null;
} else {
isSingleSelectionShareWithMe = false;
isSingleSelectionTrack = false;
} }
// Only one item, the item is a track // Not recording, one item, item is a track
menu.findItem(R.id.list_context_menu_play) menu.findItem(R.id.list_context_menu_play)
.setVisible(positions.length == 1 && markerId == null); .setVisible(!isRecording && isSingleSelection && isSingleSelectionTrack);
// Only one item, the item is a track, and the item is not a sharedWithMe track // Not recording, one item, item is a track, not shareWithMe item
menu.findItem(R.id.list_context_menu_share) menu.findItem(R.id.list_context_menu_share).setVisible(!isRecording && isSingleSelection
.setVisible(positions.length == 1 && markerId == null && !shareWithMe); && isSingleSelectionTrack && !isSingleSelectionShareWithMe);
// Only one item, the item is a marker // One item, item is a marker
menu.findItem(R.id.list_context_menu_show_on_map) menu.findItem(R.id.list_context_menu_show_on_map)
.setVisible(positions.length == 1 && markerId != null); .setVisible(isSingleSelection && !isSingleSelectionTrack);
// Only one item, can be track or marker, but cannot be a sharedWithMe item // One item, can be a track or a marker, cannot be a sharedWithMe item
menu.findItem(R.id.list_context_menu_edit) menu.findItem(R.id.list_context_menu_edit)
.setVisible(positions.length == 1 && !shareWithMe); .setVisible(isSingleSelection && !isSingleSelectionShareWithMe);
// Only one item. If marker, cannot be a shareWithMe item. If track, no restriction // One item. If track, no restriction. If marker, cannot be a
menu.findItem(R.id.list_context_menu_delete) // shareWithMe item
.setVisible(positions.length == 1 && (markerId == null || !shareWithMe)); menu.findItem(R.id.list_context_menu_delete).setVisible(
isSingleSelection && (isSingleSelectionTrack || !isSingleSelectionShareWithMe));
// Disable select all, no action is available for multiple selection // Disable select all, no action is available for multiple selection
menu.findItem(R.id.list_context_menu_select_all).setVisible(false); menu.findItem(R.id.list_context_menu_select_all).setVisible(false);
} }
@@ -212,15 +212,26 @@ public class TrackListActivity extends AbstractSendToGoogleActivity
@Override @Override
public void onPrepare(Menu menu, int[] positions, long[] ids, boolean showSelectAll) { public void onPrepare(Menu menu, int[] positions, long[] ids, boolean showSelectAll) {
boolean shareWithMe = true; boolean isRecording = recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT;
if (ids.length == 1) { boolean isSingleSelection = ids.length == 1;
boolean isSingleSelectionShareWithMe;
if (isSingleSelection) {
Track track = myTracksProviderUtils.getTrack(ids[0]); Track track = myTracksProviderUtils.getTrack(ids[0]);
shareWithMe = track.isSharedWithMe(); isSingleSelectionShareWithMe = track.isSharedWithMe();
} else {
isSingleSelectionShareWithMe = false;
} }
// play is always enabled
menu.findItem(R.id.list_context_menu_share).setVisible(!shareWithMe); // Not recording
menu.findItem(R.id.list_context_menu_play).setVisible(!isRecording);
// Not recording, one item, not sharedWithMe item
menu.findItem(R.id.list_context_menu_share)
.setVisible(!isRecording && isSingleSelection && !isSingleSelectionShareWithMe);
// Always disable
menu.findItem(R.id.list_context_menu_show_on_map).setVisible(false); menu.findItem(R.id.list_context_menu_show_on_map).setVisible(false);
menu.findItem(R.id.list_context_menu_edit).setVisible(!shareWithMe); // One item, not sharedWithMe item
menu.findItem(R.id.list_context_menu_edit)
.setVisible(isSingleSelection && !isSingleSelectionShareWithMe);
// delete is always enabled // delete is always enabled
menu.findItem(R.id.list_context_menu_select_all).setVisible(showSelectAll); menu.findItem(R.id.list_context_menu_select_all).setVisible(showSelectAll);
} }