From 2e8d9ea41103be271aa2e0f90ae04c83117e97d5 Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Thu, 20 Jun 2013 14:00:11 -0700 Subject: [PATCH] Adjust contextual menu based on the isRecording state. --- .../apps/mytracks/MarkerListActivity.java | 11 ++++- .../apps/mytracks/SearchListActivity.java | 43 +++++++++++-------- .../apps/mytracks/TrackListActivity.java | 23 +++++++--- 3 files changed, 51 insertions(+), 26 deletions(-) diff --git a/MyTracks/src/com/google/android/apps/mytracks/MarkerListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/MarkerListActivity.java index a29f7f675..d8f567d36 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/MarkerListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/MarkerListActivity.java @@ -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 diff --git a/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java index 696c81a41..d917bca9f 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java @@ -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 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); } diff --git a/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java index 4a0f6105f..751b06608 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java @@ -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); }