diff options
| -rw-r--r-- | main/res/menu/compass_activity_options.xml | 16 | ||||
| -rw-r--r-- | main/res/values/strings.xml | 1 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/CompassActivity.java | 18 |
3 files changed, 28 insertions, 7 deletions
diff --git a/main/res/menu/compass_activity_options.xml b/main/res/menu/compass_activity_options.xml index 628f444..3f7f1ad 100644 --- a/main/res/menu/compass_activity_options.xml +++ b/main/res/menu/compass_activity_options.xml @@ -29,10 +29,22 @@ <menu /> <!-- filled dynamically --> </item> <item - android:id="@+id/menu_switch_compass_gps" + android:id="@+id/menu_compass_sensor" android:icon="@drawable/ic_menu_compass" - android:title="@string/use_gps" + android:title="@string/compass_sensors" cgeo:showAsAction="never|withText"> <!-- will be replaced in code --> + <menu> + <group android:checkableBehavior="single" > + <item + android:id="@+id/menu_compass_sensor_gps" + android:title="@string/use_gps"> + </item> + <item + android:id="@+id/menu_compass_sensor_magnetic" + android:title="@string/use_compass"> + </item> + </group> + </menu> </item> </menu>
\ No newline at end of file diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml index 51b25e2..22afdf0 100644 --- a/main/res/values/strings.xml +++ b/main/res/values/strings.xml @@ -923,6 +923,7 @@ <!-- navigation --> <string name="navigation">Navigation</string> <string name="compass_title">Compass</string> + <string name="compass_sensors">Active Sensors</string> <string name="use_gps">Use GPS only</string> <string name="use_compass">Use GPS and Compass</string> <string name="destination_select">Select destination</string> diff --git a/main/src/cgeo/geocaching/CompassActivity.java b/main/src/cgeo/geocaching/CompassActivity.java index 0f16d77..ef70837 100644 --- a/main/src/cgeo/geocaching/CompassActivity.java +++ b/main/src/cgeo/geocaching/CompassActivity.java @@ -150,7 +150,7 @@ public class CompassActivity extends AbstractActionBarActivity { @Override public boolean onCreateOptionsMenu(final Menu menu) { getMenuInflater().inflate(R.menu.compass_activity_options, menu); - menu.findItem(R.id.menu_switch_compass_gps).setVisible(hasMagneticFieldSensor); + menu.findItem(R.id.menu_compass_sensor).setVisible(hasMagneticFieldSensor); final SubMenu subMenu = menu.findItem(R.id.menu_select_destination).getSubMenu(); if (coordinates.size() > 1) { for (int i = 0; i < coordinates.size(); i++) { @@ -169,7 +169,12 @@ public class CompassActivity extends AbstractActionBarActivity { @Override public boolean onPrepareOptionsMenu(final Menu menu) { super.onPrepareOptionsMenu(menu); - menu.findItem(R.id.menu_switch_compass_gps).setTitle(res.getString(Settings.isUseCompass() ? R.string.use_gps : R.string.use_compass)); + if (Settings.isUseCompass()) { + menu.findItem(R.id.menu_compass_sensor_magnetic).setChecked(true); + } + else { + menu.findItem(R.id.menu_compass_sensor_gps).setChecked(true); + } menu.findItem(R.id.menu_tts_start).setVisible(!SpeechService.isRunning()); menu.findItem(R.id.menu_tts_stop).setVisible(SpeechService.isRunning()); return true; @@ -182,9 +187,12 @@ public class CompassActivity extends AbstractActionBarActivity { case R.id.menu_map: CGeoMap.startActivityCoords(this, dstCoords, null, null); return true; - case R.id.menu_switch_compass_gps: - final boolean oldSetting = Settings.isUseCompass(); - Settings.setUseCompass(!oldSetting); + case R.id.menu_compass_sensor_gps: + Settings.setUseCompass(false); + invalidateOptionsMenuCompatible(); + return true; + case R.id.menu_compass_sensor_magnetic: + Settings.setUseCompass(true); invalidateOptionsMenuCompatible(); return true; case R.id.menu_tts_start: |
