Add onPrepareOptionMenu to update menu state.

This commit is contained in:
Jimmy Shih
2013-07-09 15:54:32 -07:00
parent e67bb581e6
commit 5a4860a45a
4 changed files with 48 additions and 28 deletions
@@ -105,8 +105,10 @@ public class MarkerDetailActivity extends AbstractMyTracksActivity implements De
getMenuInflater().inflate(R.menu.marker_detail, menu); getMenuInflater().inflate(R.menu.marker_detail, menu);
Track track = myTracksProviderUtils.getTrack(waypoint.getTrackId()); Track track = myTracksProviderUtils.getTrack(waypoint.getTrackId());
menu.findItem(R.id.marker_detail_edit).setVisible(!track.isSharedWithMe()); boolean isSharedWithMe = track != null ? track.isSharedWithMe() : true;
menu.findItem(R.id.marker_detail_delete).setVisible(!track.isSharedWithMe());
menu.findItem(R.id.marker_detail_edit).setVisible(!isSharedWithMe);
menu.findItem(R.id.marker_detail_delete).setVisible(!isSharedWithMe);
return true; return true;
} }
@@ -243,12 +243,17 @@ public class MarkerListActivity extends AbstractMyTracksActivity implements Dele
insertMarkerMenuItem = menu.findItem(R.id.marker_list_insert_marker); insertMarkerMenuItem = menu.findItem(R.id.marker_list_insert_marker);
searchMenuItem = menu.findItem(R.id.marker_list_search); searchMenuItem = menu.findItem(R.id.marker_list_search);
ApiAdapterFactory.getApiAdapter().configureSearchWidget(this, searchMenuItem, null); ApiAdapterFactory.getApiAdapter().configureSearchWidget(this, searchMenuItem, null);
if (insertMarkerMenuItem != null) {
insertMarkerMenuItem.setVisible(track.getId() == recordingTrackId && !recordingTrackPaused);
}
return true; return true;
} }
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if (insertMarkerMenuItem != null) {
insertMarkerMenuItem.setVisible(track.getId() == recordingTrackId && !recordingTrackPaused);
}
return super.onPrepareOptionsMenu(menu);
}
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
@@ -88,14 +88,15 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity implements
// Preferences // Preferences
private long recordingTrackId = PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; private long recordingTrackId = PreferencesUtils.RECORDING_TRACK_ID_DEFAULT;
private boolean recordingTrackPaused = PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT; private boolean recordingTrackPaused = PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT;
private String sensorType = PreferencesUtils.SENSOR_TYPE_DEFAULT;
private MenuItem insertMarkerMenuItem; private MenuItem insertMarkerMenuItem;
private MenuItem playMenuItem; private MenuItem playMenuItem;
private MenuItem shareMenuItem; private MenuItem shareMenuItem;
private MenuItem exportMenuItem; private MenuItem exportMenuItem;
private MenuItem voiceFrequencyMenuItem; private MenuItem voiceFrequencyMenuItem;
private MenuItem splitFrequencyMenuItem; private MenuItem splitFrequencyMenuItem;
private MenuItem feedbackMenuItem; private MenuItem sensorStateMenuItem;
private final Runnable bindChangedCallback = new Runnable() { private final Runnable bindChangedCallback = new Runnable() {
@Override @Override
@@ -131,6 +132,11 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity implements
R.string.recording_track_paused_key, R.string.recording_track_paused_key,
PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT); PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT);
} }
if (key == null || key.equals(
PreferencesUtils.getKey(TrackDetailActivity.this, R.string.sensor_type_key))) {
sensorType = PreferencesUtils.getString(TrackDetailActivity.this,
R.string.sensor_type_key, PreferencesUtils.SENSOR_TYPE_DEFAULT);
}
if (key != null) { if (key != null) {
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
@Override @Override
@@ -296,30 +302,29 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity implements
getMenuInflater().inflate(R.menu.track_detail, menu); getMenuInflater().inflate(R.menu.track_detail, menu);
Track track = myTracksProviderUtils.getTrack(trackId); Track track = myTracksProviderUtils.getTrack(trackId);
boolean sharedWithMe = track != null ? track.isSharedWithMe() : true; boolean isSharedWithMe = track != null ? track.isSharedWithMe() : true;
menu.findItem(R.id.track_detail_edit).setVisible(!sharedWithMe);
shareMenuItem = menu.findItem(R.id.track_detail_share); menu.findItem(R.id.track_detail_edit).setVisible(!isSharedWithMe);
shareMenuItem.setEnabled(!sharedWithMe); menu.findItem(R.id.track_detail_feedback)
shareMenuItem.setVisible(!sharedWithMe); .setVisible(ApiAdapterFactory.getApiAdapter().isGoogleFeedbackAvailable());
insertMarkerMenuItem = menu.findItem(R.id.track_detail_insert_marker); insertMarkerMenuItem = menu.findItem(R.id.track_detail_insert_marker);
playMenuItem = menu.findItem(R.id.track_detail_play); playMenuItem = menu.findItem(R.id.track_detail_play);
shareMenuItem = menu.findItem(R.id.track_detail_share);
shareMenuItem.setEnabled(!isSharedWithMe);
shareMenuItem.setVisible(!isSharedWithMe);
exportMenuItem = menu.findItem(R.id.track_detail_export); exportMenuItem = menu.findItem(R.id.track_detail_export);
voiceFrequencyMenuItem = menu.findItem(R.id.track_detail_voice_frequency); voiceFrequencyMenuItem = menu.findItem(R.id.track_detail_voice_frequency);
splitFrequencyMenuItem = menu.findItem(R.id.track_detail_split_frequency); splitFrequencyMenuItem = menu.findItem(R.id.track_detail_split_frequency);
feedbackMenuItem = menu.findItem(R.id.track_detail_feedback); sensorStateMenuItem = menu.findItem(R.id.track_detail_sensor_state);
feedbackMenuItem.setVisible(ApiAdapterFactory.getApiAdapter().isGoogleFeedbackAvailable());
updateMenuItems(trackId == recordingTrackId, recordingTrackPaused);
return true; return true;
} }
@Override @Override
public boolean onPrepareOptionsMenu(Menu menu) { public boolean onPrepareOptionsMenu(Menu menu) {
boolean showSensorState = !PreferencesUtils.SENSOR_TYPE_DEFAULT.equals( updateMenuItems(trackId == recordingTrackId, recordingTrackPaused);
PreferencesUtils.getString(
this, R.string.sensor_type_key, PreferencesUtils.SENSOR_TYPE_DEFAULT));
menu.findItem(R.id.track_detail_sensor_state).setVisible(showSensorState);
return super.onPrepareOptionsMenu(menu); return super.onPrepareOptionsMenu(menu);
} }
@@ -522,6 +527,9 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity implements
} }
if (splitFrequencyMenuItem != null) { if (splitFrequencyMenuItem != null) {
splitFrequencyMenuItem.setVisible(isRecording); splitFrequencyMenuItem.setVisible(isRecording);
}
if (sensorStateMenuItem != null) {
sensorStateMenuItem.setVisible(!PreferencesUtils.SENSOR_TYPE_DEFAULT.equals(sensorType));
} }
String title; String title;
@@ -294,7 +294,6 @@ public class TrackListActivity extends AbstractSendToGoogleActivity
private MenuItem exportAllMenuItem; private MenuItem exportAllMenuItem;
private MenuItem importAllMenuItem; private MenuItem importAllMenuItem;
private MenuItem deleteAllMenuItem; private MenuItem deleteAllMenuItem;
private MenuItem feedbackMenuItem;
private boolean startGps = false; // true to start gps private boolean startGps = false; // true to start gps
private boolean startNewRecording = false; // true to start a new recording private boolean startNewRecording = false; // true to start a new recording
@@ -412,7 +411,7 @@ public class TrackListActivity extends AbstractSendToGoogleActivity
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
// Update UI // Update UI
ApiAdapterFactory.getApiAdapter().invalidMenu(this); ApiAdapterFactory.getApiAdapter().invalidMenu(this);
sectionResourceCursorAdapter.notifyDataSetChanged(); sectionResourceCursorAdapter.notifyDataSetChanged();
@@ -463,22 +462,28 @@ public class TrackListActivity extends AbstractSendToGoogleActivity
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.track_list, menu); getMenuInflater().inflate(R.menu.track_list, menu);
menu.findItem(R.id.track_list_feedback)
.setVisible(ApiAdapterFactory.getApiAdapter().isGoogleFeedbackAvailable());
searchMenuItem = menu.findItem(R.id.track_list_search); searchMenuItem = menu.findItem(R.id.track_list_search);
ApiAdapterFactory.getApiAdapter().configureSearchWidget(this, searchMenuItem, trackController);
startGpsMenuItem = menu.findItem(R.id.track_list_start_gps); startGpsMenuItem = menu.findItem(R.id.track_list_start_gps);
refreshMenuItem = menu.findItem(R.id.track_list_refresh); refreshMenuItem = menu.findItem(R.id.track_list_refresh);
exportAllMenuItem = menu.findItem(R.id.track_list_export_all); exportAllMenuItem = menu.findItem(R.id.track_list_export_all);
importAllMenuItem = menu.findItem(R.id.track_list_import_all); importAllMenuItem = menu.findItem(R.id.track_list_import_all);
deleteAllMenuItem = menu.findItem(R.id.track_list_delete_all); deleteAllMenuItem = menu.findItem(R.id.track_list_delete_all);
feedbackMenuItem = menu.findItem(R.id.track_list_feedback); return true;
feedbackMenuItem.setVisible(ApiAdapterFactory.getApiAdapter().isGoogleFeedbackAvailable()); }
ApiAdapterFactory.getApiAdapter().configureSearchWidget(this, searchMenuItem, trackController); @Override
public boolean onPrepareOptionsMenu(Menu menu) {
boolean isGpsStarted = TrackRecordingServiceConnectionUtils.isRecordingServiceRunning(this); boolean isGpsStarted = TrackRecordingServiceConnectionUtils.isRecordingServiceRunning(this);
boolean isRecording = recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; boolean isRecording = recordingTrackId != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT;
updateMenuItems(isGpsStarted, isRecording); updateMenuItems(isGpsStarted, isRecording);
return true; return super.onPrepareOptionsMenu(menu);
} }
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
Intent intent; Intent intent;