From 4686194541bf5ec5fec39faf31285581d3dcbf2f Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Tue, 8 May 2012 16:44:07 -0700 Subject: [PATCH] Move the satellite mode menu option to MapFragment. --- MyTracks/res/menu/map.xml | 22 +++++++++ MyTracks/res/menu/track_detail.xml | 17 +++++-- .../apps/mytracks/TrackDetailActivity.java | 29 ----------- .../apps/mytracks/fragments/MapFragment.java | 49 +++++++++++++------ 4 files changed, 68 insertions(+), 49 deletions(-) create mode 100644 MyTracks/res/menu/map.xml diff --git a/MyTracks/res/menu/map.xml b/MyTracks/res/menu/map.xml new file mode 100644 index 000000000..761acc539 --- /dev/null +++ b/MyTracks/res/menu/map.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/MyTracks/res/menu/track_detail.xml b/MyTracks/res/menu/track_detail.xml index 90fc0e3ad..ccc42927c 100644 --- a/MyTracks/res/menu/track_detail.xml +++ b/MyTracks/res/menu/track_detail.xml @@ -18,21 +18,25 @@ limitations under the License. @@ -51,15 +55,19 @@ limitations under the License. + @@ -71,25 +79,26 @@ limitations under the License. - \ No newline at end of file diff --git a/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java b/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java index 2b17dc0a2..f1f56de4e 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java @@ -227,27 +227,6 @@ public class TrackDetailActivity extends AbstractMyTracksActivity { return true; } - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - String currentTabTag = tabHost.getCurrentTabTag(); - MenuItem satelliteMode = menu.findItem(R.id.track_detail_satellite_mode) - .setVisible(MapFragment.MAP_FRAGMENT_TAG.equals(currentTabTag)); - - if (satelliteMode.isVisible()) { - MapFragment mapFragment = (MapFragment) getSupportFragmentManager() - .findFragmentByTag(MapFragment.MAP_FRAGMENT_TAG); - /* - * The current tag is mapFragment, thus safe to call its methods like - * isSatelliteView. - */ - boolean isSatelliteMode = mapFragment != null ? mapFragment.isSatelliteView() : false; - menu.findItem(R.id.track_detail_satellite_mode).setTitle( - isSatelliteMode ? R.string.menu_map_mode : R.string.menu_satellite_mode); - } - - return super.onPrepareOptionsMenu(menu); - } - @Override protected void onHomeSelected() { Intent intent = IntentUtils.newIntent(this, TrackListActivity.class); @@ -256,7 +235,6 @@ public class TrackDetailActivity extends AbstractMyTracksActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { - MapFragment mapFragment; Intent intent; switch (item.getItemId()) { case R.id.track_detail_stop_recording: @@ -333,13 +311,6 @@ public class TrackDetailActivity extends AbstractMyTracksActivity { DeleteOneTrackDialogFragment.newInstance(trackId).show( getSupportFragmentManager(), DeleteOneTrackDialogFragment.DELETE_ONE_TRACK_DIALOG_TAG); return true; - case R.id.track_detail_satellite_mode: - mapFragment = (MapFragment) getSupportFragmentManager() - .findFragmentByTag(MapFragment.MAP_FRAGMENT_TAG); - if (mapFragment != null) { - mapFragment.setSatelliteView(!mapFragment.isSatelliteView()); - } - return true; case R.id.track_detail_sensor_state: intent = IntentUtils.newIntent(this, SensorStateActivity.class); startActivity(intent); diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/MapFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/MapFragment.java index 03163f496..592793a87 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/MapFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/MapFragment.java @@ -40,6 +40,9 @@ import android.os.Bundle; import android.provider.Settings; import android.support.v4.app.Fragment; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; @@ -90,6 +93,12 @@ public class MapFragment extends Fragment private ImageButton myLocationImageButton; private TextView messageTextView; + @Override + public void onCreate(Bundle bundle) { + super.onCreate(bundle); + setHasOptionsMenu(true); + } + @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -156,6 +165,30 @@ public class MapFragment extends Fragment } } + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater menuInflator) { + menuInflator.inflate(R.menu.map, menu); + } + + @Override + public void onPrepareOptionsMenu(Menu menu) { + int titleId = R.string.menu_satellite_mode; + if (mapView != null) { + titleId = mapView.isSatellite() ? R.string.menu_map_mode : R.string.menu_satellite_mode; + } + menu.findItem(R.id.map_satellite_mode).setTitle(titleId); + super.onPrepareOptionsMenu(menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem menuItem) { + if (mapView != null && menuItem.getItemId() == R.id.map_satellite_mode) { + mapView.setSatellite(!mapView.isSatellite()); + return true; + } + return super.onOptionsItemSelected(menuItem); + } + /** * Shows my location. */ @@ -209,22 +242,6 @@ public class MapFragment extends Fragment } } - /** - * Returns true if in satellite mode. - */ - public boolean isSatelliteView() { - return mapView.isSatellite(); - } - - /** - * Sets the satellite mode - * - * @param enabled true for satellite mode, false for map mode - */ - public void setSatelliteView(boolean enabled) { - mapView.setSatellite(enabled); - } - @Override public boolean onTouch(View view, MotionEvent event) { if (keepMyLocationVisible && event.getAction() == MotionEvent.ACTION_MOVE) {