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() {
|
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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user