forked from upstream-mirrors/OpenTracks
Adjust contextual menu based on the isRecording state.
This commit is contained in:
@@ -70,11 +70,18 @@ public class MarkerListActivity extends AbstractMyTracksActivity implements Dele
|
||||
contextualActionModeCallback = new ContextualActionModeCallback() {
|
||||
@Override
|
||||
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);
|
||||
// Always disable
|
||||
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)
|
||||
.setVisible(ids.length == 1 && !track.isSharedWithMe());
|
||||
.setVisible(isSingleSelection && !track.isSharedWithMe());
|
||||
// Track not sharedWithMe
|
||||
menu.findItem(R.id.list_context_menu_delete).setVisible(!track.isSharedWithMe());
|
||||
/*
|
||||
* Set select all to the same visibility as delete since delete is the
|
||||
|
||||
@@ -134,30 +134,37 @@ public class SearchListActivity extends AbstractSendToGoogleActivity
|
||||
}
|
||||
@Override
|
||||
public void onPrepare(Menu menu, int[] positions, long[] ids, boolean showSelectAll) {
|
||||
boolean shareWithMe = true;
|
||||
Long markerId = null;
|
||||
if (positions.length == 1) {
|
||||
boolean isRecording = recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT;
|
||||
boolean isSingleSelection = positions.length == 1;
|
||||
boolean isSingleSelectionShareWithMe;
|
||||
boolean isSingleSelectionTrack;
|
||||
if (isSingleSelection) {
|
||||
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);
|
||||
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)
|
||||
.setVisible(positions.length == 1 && markerId == null);
|
||||
// Only one item, the item is a track, and the item is not a sharedWithMe track
|
||||
menu.findItem(R.id.list_context_menu_share)
|
||||
.setVisible(positions.length == 1 && markerId == null && !shareWithMe);
|
||||
// Only one item, the item is a marker
|
||||
.setVisible(!isRecording && isSingleSelection && isSingleSelectionTrack);
|
||||
// Not recording, one item, item is a track, not shareWithMe item
|
||||
menu.findItem(R.id.list_context_menu_share).setVisible(!isRecording && isSingleSelection
|
||||
&& isSingleSelectionTrack && !isSingleSelectionShareWithMe);
|
||||
// One item, item is a marker
|
||||
menu.findItem(R.id.list_context_menu_show_on_map)
|
||||
.setVisible(positions.length == 1 && markerId != null);
|
||||
// Only one item, can be track or marker, but cannot be a sharedWithMe item
|
||||
.setVisible(isSingleSelection && !isSingleSelectionTrack);
|
||||
// One item, can be a track or a marker, cannot be a sharedWithMe item
|
||||
menu.findItem(R.id.list_context_menu_edit)
|
||||
.setVisible(positions.length == 1 && !shareWithMe);
|
||||
// Only one item. If marker, cannot be a shareWithMe item. If track, no restriction
|
||||
menu.findItem(R.id.list_context_menu_delete)
|
||||
.setVisible(positions.length == 1 && (markerId == null || !shareWithMe));
|
||||
.setVisible(isSingleSelection && !isSingleSelectionShareWithMe);
|
||||
// One item. If track, no restriction. If marker, cannot be a
|
||||
// shareWithMe item
|
||||
menu.findItem(R.id.list_context_menu_delete).setVisible(
|
||||
isSingleSelection && (isSingleSelectionTrack || !isSingleSelectionShareWithMe));
|
||||
// Disable select all, no action is available for multiple selection
|
||||
menu.findItem(R.id.list_context_menu_select_all).setVisible(false);
|
||||
}
|
||||
|
||||
@@ -212,15 +212,26 @@ public class TrackListActivity extends AbstractSendToGoogleActivity
|
||||
|
||||
@Override
|
||||
public void onPrepare(Menu menu, int[] positions, long[] ids, boolean showSelectAll) {
|
||||
boolean shareWithMe = true;
|
||||
if (ids.length == 1) {
|
||||
boolean isRecording = recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT;
|
||||
boolean isSingleSelection = ids.length == 1;
|
||||
boolean isSingleSelectionShareWithMe;
|
||||
if (isSingleSelection) {
|
||||
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_edit).setVisible(!shareWithMe);
|
||||
// One item, not sharedWithMe item
|
||||
menu.findItem(R.id.list_context_menu_edit)
|
||||
.setVisible(isSingleSelection && !isSingleSelectionShareWithMe);
|
||||
// delete is always enabled
|
||||
menu.findItem(R.id.list_context_menu_select_all).setVisible(showSelectAll);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user