diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2013-05-02 18:37:09 +0200 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2013-05-10 18:20:51 +0200 |
| commit | 96085791963ff0bfb1e50dc5769800648d887cdb (patch) | |
| tree | df931b77b406fbbf0a950c925a642fe01383e278 | |
| parent | a5b35087421a8dbaccca7f54cce71a590e0326ca (diff) | |
| download | cgeo-96085791963ff0bfb1e50dc5769800648d887cdb.zip cgeo-96085791963ff0bfb1e50dc5769800648d887cdb.tar.gz cgeo-96085791963ff0bfb1e50dc5769800648d887cdb.tar.bz2 | |
refactoring: use menu resources instead of code
29 files changed, 391 insertions, 217 deletions
diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml index 0c6c4a0..0f1afcd 100644 --- a/main/AndroidManifest.xml +++ b/main/AndroidManifest.xml @@ -203,7 +203,7 @@ </intent-filter> </activity> <activity - android:name=".cgeonavigate" + android:name=".CompassActivity" android:label="@string/compass_title"> </activity> <activity diff --git a/main/res/menu/abstract_logging_activity.xml b/main/res/menu/abstract_logging_activity.xml new file mode 100644 index 0000000..e041b37 --- /dev/null +++ b/main/res/menu/abstract_logging_activity.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" > + + <item + android:id="@+id/menu_signature" + android:icon="@drawable/ic_menu_edit" + android:title="@string/init_signature"> + </item> + <item + android:id="@+id/menu_templates" + android:icon="@drawable/ic_menu_add" + android:title="@string/log_add"> + <menu/> <!-- filled dynamically --> + </item> + <item + android:id="@+id/menu_smilies" + android:icon="@drawable/ic_menu_emoticons" + android:title="@string/log_smilies"> + <menu/> <!-- filled dynamically --> + </item> + +</menu>
\ No newline at end of file diff --git a/main/res/menu/abstract_popup_activity.xml b/main/res/menu/abstract_popup_activity.xml new file mode 100644 index 0000000..855a756 --- /dev/null +++ b/main/res/menu/abstract_popup_activity.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" > + + <item + android:id="@+id/menu_default_navigation" + android:icon="@drawable/ic_menu_compass" + android:title="@string/cache_menu_navigate"> <!-- will be replaced --> + </item> + <item + android:id="@+id/menu_navigate" + android:icon="@drawable/ic_menu_mapmode" + android:title="@string/cache_menu_navigate"> + </item> + <item + android:id="@+id/menu_log_visit_offline" + android:icon="@drawable/ic_menu_edit" + android:title="@string/cache_menu_visit_offline"> + </item> + <item + android:id="@+id/menu_log_visit" + android:icon="@drawable/ic_menu_edit" + android:title="@string/cache_menu_visit"> + </item> + <item + android:id="@+id/menu_caches_around" + android:icon="@drawable/ic_menu_rotate" + android:title="@string/cache_menu_around"> + </item> + <item + android:id="@+id/menu_show_in_browser" + android:icon="@drawable/ic_menu_info_details" + android:title="@string/cache_menu_browser"> + </item> + +</menu>
\ No newline at end of file diff --git a/main/res/menu/compass_activity_options.xml b/main/res/menu/compass_activity_options.xml new file mode 100644 index 0000000..7a6d570 --- /dev/null +++ b/main/res/menu/compass_activity_options.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" > + + <item + android:id="@+id/menu_switch_compass_gps" + android:icon="@drawable/ic_menu_compass" + android:title="@string/use_gps"> <!-- will be replaced in code --> + </item> + <item + android:id="@+id/menu_map" + android:icon="@drawable/ic_menu_mapmode" + android:title="@string/caches_on_map"> + </item> + <item + android:id="@+id/menu_edit_destination" + android:icon="@drawable/ic_menu_edit" + android:title="@string/destination_set"> + </item> + <item + android:id="@+id/menu_select_destination" + android:icon="@drawable/ic_menu_myplaces" + android:title="@string/destination_select"> + <menu/> <!-- filled dynamically --> + </item> +</menu>
\ No newline at end of file diff --git a/main/res/menu/logging_ui.xml b/main/res/menu/logging_ui.xml new file mode 100644 index 0000000..f345d4a --- /dev/null +++ b/main/res/menu/logging_ui.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" > + <item + android:id="@+id/menu_log_visit_offline" + android:icon="@drawable/ic_menu_edit" + android:title="@string/cache_menu_visit_offline"> + </item> + <item + android:id="@+id/menu_log_visit" + android:icon="@drawable/ic_menu_edit" + android:title="@string/cache_menu_visit"> + </item> +</menu>
\ No newline at end of file diff --git a/main/res/menu/main_options.xml b/main/res/menu/main_activity_options.xml index e06e948..e06e948 100644 --- a/main/res/menu/main_options.xml +++ b/main/res/menu/main_activity_options.xml diff --git a/main/res/menu/map_activity.xml b/main/res/menu/map_activity.xml new file mode 100644 index 0000000..d76f5ca --- /dev/null +++ b/main/res/menu/map_activity.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" > + + <item + android:id="@+id/menu_select_mapview" + android:icon="@drawable/ic_menu_mapmode" + android:title="@string/map_view_map"> + <menu> + <group + android:id="@+id/menu_group_map_sources" + android:checkableBehavior="single" > + </group> + </menu> + </item> + <item + android:id="@+id/menu_map_live" + android:icon="@drawable/ic_menu_refresh" + android:title="@string/map_live_disable"> + </item> + <item + android:id="@+id/menu_store_caches" + android:enabled="false" + android:icon="@drawable/ic_menu_set_as" + android:title="@string/caches_store_offline"> + </item> + <item + android:id="@+id/submenu_modes" + android:icon="@drawable/ic_menu_mark" + android:title="@string/map_modes"> + <menu> + <item + android:id="@+id/menu_trail_mode" + android:icon="@drawable/ic_menu_trail" + android:title="@string/map_trail_hide"> + </item> + <item + android:id="@+id/menu_circle_mode" + android:icon="@drawable/ic_menu_circle" + android:title="@string/map_circles_hide"> + </item> + <item + android:id="@+id/menu_theme_mode" + android:icon="@drawable/ic_menu_preferences" + android:title="@string/map_theme_select"> + </item> + </menu> + </item> + <item + android:id="@+id/submenu_strategy" + android:icon="@drawable/ic_menu_preferences" + android:title="@string/map_strategy"> + <menu> + <group + android:id="@+id/menu_group_strategy" + android:checkableBehavior="single" > + <item + android:id="@+id/menu_strategy_fastest" + android:checkable="true" + android:title="@string/map_strategy_fastest"> + </item> + <item + android:id="@+id/menu_strategy_fast" + android:checkable="true" + android:title="@string/map_strategy_fast"> + </item> + <item + android:id="@+id/menu_strategy_auto" + android:checkable="true" + android:title="@string/map_strategy_auto"> + </item> + <item + android:id="@+id/menu_strategy_detailed" + android:checkable="true" + android:title="@string/map_strategy_detailed"> + </item> + </group> + </menu> + </item> + <item + android:id="@+id/menu_as_list" + android:icon="@drawable/ic_menu_agenda" + android:title="@string/map_as_list"> + </item> + +</menu>
\ No newline at end of file diff --git a/main/res/menu/navigate_any_point_activity_options.xml b/main/res/menu/navigate_any_point_activity_options.xml new file mode 100644 index 0000000..9207e94 --- /dev/null +++ b/main/res/menu/navigate_any_point_activity_options.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" > + <item + android:id="@+id/menu_navigate" + android:icon="@drawable/ic_menu_mapmode" + android:title="@string/cache_menu_navigate"> + </item> + <item + android:id="@+id/menu_default_navigation" + android:icon="@drawable/ic_menu_compass" + android:title="@string/cache_menu_navigate"> <!-- will be replaced in code --> + </item> + <item + android:id="@+id/menu_caches_around" + android:icon="@drawable/ic_menu_rotate" + android:title="@string/cache_menu_around"> + </item> + <item + android:id="@+id/menu_clear_history" + android:icon="@drawable/ic_menu_delete" + android:title="@string/search_clear_history"> + </item> + +</menu>
\ No newline at end of file diff --git a/main/res/menu/search_activity_options.xml b/main/res/menu/search_activity_options.xml new file mode 100644 index 0000000..68eb569 --- /dev/null +++ b/main/res/menu/search_activity_options.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" > + <item + android:id="@+id/menu_search_own_caches" + android:icon="@drawable/ic_menu_myplaces" + android:title="@string/search_own_caches"> + </item> + + +</menu>
\ No newline at end of file diff --git a/main/res/menu/settings_activity_options.xml b/main/res/menu/settings_activity_options.xml new file mode 100644 index 0000000..ba75f91 --- /dev/null +++ b/main/res/menu/settings_activity_options.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" > + <item + android:id="@+id/menu_clear" + android:icon="@drawable/ic_menu_delete" + android:title="@string/init_clear"> + </item> +</menu>
\ No newline at end of file diff --git a/main/res/menu/static_maps_activity_options.xml b/main/res/menu/static_maps_activity_options.xml new file mode 100644 index 0000000..29410dd --- /dev/null +++ b/main/res/menu/static_maps_activity_options.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" > + <item + android:id="@+id/menu_refresh" + android:icon="@drawable/ic_menu_refresh" + android:title="@string/cache_offline_refresh"> + </item> +</menu>
\ No newline at end of file diff --git a/main/res/menu/trackable_activity.xml b/main/res/menu/trackable_activity.xml new file mode 100644 index 0000000..ddf45f6 --- /dev/null +++ b/main/res/menu/trackable_activity.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" > + + <item + android:id="@+id/menu_log_touch" + android:icon="@drawable/ic_menu_agenda" + android:title="@string/trackable_log_touch"> + </item> + <item + android:id="@+id/menu_browser_trackable" + android:icon="@drawable/ic_menu_info_details" + android:title="@string/trackable_browser_open"> + </item> + +</menu>
\ No newline at end of file diff --git a/main/src/cgeo/geocaching/AbstractLoggingActivity.java b/main/src/cgeo/geocaching/AbstractLoggingActivity.java index 3e66d5e..78da757 100644 --- a/main/src/cgeo/geocaching/AbstractLoggingActivity.java +++ b/main/src/cgeo/geocaching/AbstractLoggingActivity.java @@ -17,23 +17,17 @@ import android.view.SubMenu; import android.widget.EditText; public abstract class AbstractLoggingActivity extends AbstractActivity { - private static final int MENU_SIGNATURE = 1; - private static final int MENU_SMILEY = 2; @Override public boolean onCreateOptionsMenu(final Menu menu) { - // signature menu - menu.add(0, MENU_SIGNATURE, 0, res.getString(R.string.init_signature)).setIcon(R.drawable.ic_menu_edit); + getMenuInflater().inflate(R.menu.abstract_logging_activity, menu); - // templates menu - final SubMenu menuLog = menu.addSubMenu(0, 0, 0, res.getString(R.string.log_add)).setIcon(R.drawable.ic_menu_add); + final SubMenu menuLog = menu.findItem(R.id.menu_templates).getSubMenu(); for (LogTemplate template : LogTemplateProvider.getTemplates()) { menuLog.add(0, template.getItemId(), 0, template.getResourceId()); } - menuLog.add(0, MENU_SIGNATURE, 0, res.getString(R.string.init_signature)); - // smilies - final SubMenu menuSmilies = menu.addSubMenu(0, MENU_SMILEY, 0, res.getString(R.string.log_smilies)).setIcon(R.drawable.ic_menu_emoticons); + final SubMenu menuSmilies = menu.findItem(R.id.menu_smilies).getSubMenu(); for (Smiley smiley : GCSmiliesProvider.getSmilies()) { menuSmilies.add(0, smiley.getItemId(), 0, smiley.text); } @@ -44,7 +38,7 @@ public abstract class AbstractLoggingActivity extends AbstractActivity { @Override public boolean onPrepareOptionsMenu(Menu menu) { final boolean signatureAvailable = StringUtils.isNotBlank(Settings.getSignature()); - menu.findItem(MENU_SIGNATURE).setVisible(signatureAvailable); + menu.findItem(R.id.menu_signature).setVisible(signatureAvailable); boolean smileyVisible = false; final Geocache cache = getLogContext().getCache(); @@ -56,7 +50,7 @@ public abstract class AbstractLoggingActivity extends AbstractActivity { smileyVisible = true; } - menu.findItem(MENU_SMILEY).setVisible(smileyVisible); + menu.findItem(R.id.menu_smilies).setVisible(smileyVisible); return true; } @@ -65,7 +59,7 @@ public abstract class AbstractLoggingActivity extends AbstractActivity { public boolean onOptionsItemSelected(MenuItem item) { final int id = item.getItemId(); - if (id == MENU_SIGNATURE) { + if (id == R.id.menu_signature) { insertIntoLog(LogTemplateProvider.applyTemplates(Settings.getSignature(), getLogContext()), true); return true; } diff --git a/main/src/cgeo/geocaching/AbstractPopupActivity.java b/main/src/cgeo/geocaching/AbstractPopupActivity.java index 4dd9fd1..73dc86d 100644 --- a/main/src/cgeo/geocaching/AbstractPopupActivity.java +++ b/main/src/cgeo/geocaching/AbstractPopupActivity.java @@ -2,7 +2,6 @@ package cgeo.geocaching; import cgeo.geocaching.activity.AbstractActivity; import cgeo.geocaching.activity.ActivityMixin; -import cgeo.geocaching.apps.cache.navi.NavigationAppFactory; import cgeo.geocaching.enumerations.CacheSize; import cgeo.geocaching.enumerations.LoadFlags; import cgeo.geocaching.gcvote.GCVote; @@ -34,11 +33,6 @@ import android.widget.TextView; public abstract class AbstractPopupActivity extends AbstractActivity { - private static final int MENU_CACHES_AROUND = 5; - private static final int MENU_NAVIGATION = 3; - private static final int MENU_DEFAULT_NAVIGATION = 2; - private static final int MENU_SHOW_IN_BROWSER = 7; - protected Geocache cache = null; protected String geocode = null; protected CacheDetailsCreator details; @@ -76,9 +70,10 @@ public abstract class AbstractPopupActivity extends AbstractActivity { /** * Callback to run when new location information is available. - * This may be overriden by deriving classes. The default implementation does nothing. + * This may be overridden by deriving classes. The default implementation does nothing. * - * @param geo the new data + * @param geo + * the new data */ public void onUpdateGeoData(final IGeoData geo) { } @@ -164,12 +159,7 @@ public abstract class AbstractPopupActivity extends AbstractActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { - menu.add(0, MENU_DEFAULT_NAVIGATION, 0, NavigationAppFactory.getDefaultNavigationApplication().getName()).setIcon(R.drawable.ic_menu_compass); // default navigation tool - menu.add(0, MENU_NAVIGATION, 0, res.getString(R.string.cache_menu_navigate)).setIcon(R.drawable.ic_menu_mapmode); - LoggingUI.addMenuItems(menu, cache); - menu.add(0, MENU_CACHES_AROUND, 0, res.getString(R.string.cache_menu_around)).setIcon(R.drawable.ic_menu_rotate); // caches around - menu.add(0, MENU_SHOW_IN_BROWSER, 0, res.getString(R.string.cache_menu_browser)).setIcon(R.drawable.ic_menu_info_details); // browser - + getMenuInflater().inflate(R.menu.abstract_popup_activity, menu); return true; } @@ -178,16 +168,16 @@ public abstract class AbstractPopupActivity extends AbstractActivity { final int menuItem = item.getItemId(); switch (menuItem) { - case MENU_DEFAULT_NAVIGATION: + case R.id.menu_default_navigation: navigateTo(); return true; - case MENU_NAVIGATION: + case R.id.menu_navigate: showNavigationMenu(); return true; - case MENU_CACHES_AROUND: + case R.id.menu_caches_around: cachesAround(); return true; - case MENU_SHOW_IN_BROWSER: + case R.id.menu_show_in_browser: showInBrowser(); return true; default: @@ -211,11 +201,11 @@ public abstract class AbstractPopupActivity extends AbstractActivity { try { final boolean visible = getCoordinates() != null; - menu.findItem(MENU_DEFAULT_NAVIGATION).setVisible(visible); - menu.findItem(MENU_NAVIGATION).setVisible(visible); - menu.findItem(MENU_CACHES_AROUND).setVisible(visible); + menu.findItem(R.id.menu_default_navigation).setVisible(visible); + menu.findItem(R.id.menu_navigate).setVisible(visible); + menu.findItem(R.id.menu_caches_around).setVisible(visible); - LoggingUI.onPrepareOptionsMenu(menu); + LoggingUI.onPrepareOptionsMenu(menu, cache); } catch (Exception e) { // nothing } diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index b0bee55..9a25998 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -536,7 +536,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc NavigationAppFactory.addMenuItems(subMenu, cache); menu.add(0, MENU_CALENDAR, 0, res.getString(R.string.cache_menu_event)).setIcon(R.drawable.ic_menu_agenda); // add event to calendar - LoggingUI.addMenuItems(menu, cache); + LoggingUI.addMenuItems(this, menu, cache); menu.add(0, MENU_CACHES_AROUND, 0, res.getString(R.string.cache_menu_around)).setIcon(R.drawable.ic_menu_rotate); // caches around menu.add(0, MENU_BROWSER, 0, res.getString(R.string.cache_menu_browser)).setIcon(R.drawable.ic_menu_globe); // browser menu.add(0, MENU_SHARE, 0, res.getString(R.string.cache_menu_share)).setIcon(R.drawable.ic_menu_share); // share cache @@ -552,6 +552,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc menu.findItem(MENU_CACHES_AROUND).setVisible(null != cache.getCoords() && cache.supportsCachesAround()); menu.findItem(MENU_BROWSER).setVisible(cache.canOpenInBrowser()); } + LoggingUI.onPrepareOptionsMenu(menu, cache); return super.onPrepareOptionsMenu(menu); } diff --git a/main/src/cgeo/geocaching/cgeonavigate.java b/main/src/cgeo/geocaching/CompassActivity.java index 679e2f2..cf13af2 100644 --- a/main/src/cgeo/geocaching/cgeonavigate.java +++ b/main/src/cgeo/geocaching/CompassActivity.java @@ -24,15 +24,13 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -public class cgeonavigate extends AbstractActivity { +public class CompassActivity extends AbstractActivity { private static final String EXTRAS_COORDS = "coords"; private static final String EXTRAS_NAME = "name"; private static final String EXTRAS_GEOCODE = "geocode"; private static final String EXTRAS_CACHE_INFO = "cacheinfo"; private static final List<IWaypoint> coordinates = new ArrayList<IWaypoint>(); - private static final int MENU_MAP = 0; - private static final int MENU_SWITCH_COMPASS_GPS = 1; private PowerManager pm = null; private Geopoint dstCoords = null; private float cacheHeading = 0; @@ -46,10 +44,6 @@ public class cgeonavigate extends AbstractActivity { private TextView headingView = null; private CompassView compassView = null; - public cgeonavigate() { - super(true); - } - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState, R.layout.navigate); @@ -113,18 +107,17 @@ public class cgeonavigate extends AbstractActivity { @Override public boolean onCreateOptionsMenu(final Menu menu) { - menu.add(0, MENU_SWITCH_COMPASS_GPS, 0, res.getString(Settings.isUseCompass() ? R.string.use_gps : R.string.use_compass)).setIcon(R.drawable.ic_menu_compass); - menu.add(0, MENU_MAP, 0, res.getString(R.string.caches_on_map)).setIcon(R.drawable.ic_menu_mapmode); - menu.add(0, 2, 0, res.getString(R.string.destination_set)).setIcon(R.drawable.ic_menu_edit); + getMenuInflater().inflate(R.menu.compass_activity_options, menu); + final SubMenu subMenu = menu.findItem(R.id.menu_select_destination).getSubMenu(); if (coordinates.size() > 1) { - final SubMenu subMenu = menu.addSubMenu(0, 3, 0, res.getString(R.string.destination_select)).setIcon(R.drawable.ic_menu_myplaces); int cnt = 4; for (final IWaypoint coordinate : coordinates) { subMenu.add(0, cnt, 0, coordinate.getName() + " (" + coordinate.getCoordType() + ")"); cnt++; } - } else { - menu.add(0, 3, 0, res.getString(R.string.destination_select)).setIcon(R.drawable.ic_menu_myplaces).setEnabled(false); + } + else { + menu.findItem(R.id.menu_select_destination).setVisible(false); } return true; } @@ -132,45 +125,48 @@ public class cgeonavigate extends AbstractActivity { @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); - menu.findItem(MENU_SWITCH_COMPASS_GPS).setTitle(res.getString(Settings.isUseCompass() ? R.string.use_gps : R.string.use_compass)); + menu.findItem(R.id.menu_switch_compass_gps).setTitle(res.getString(Settings.isUseCompass() ? R.string.use_gps : R.string.use_compass)); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); - - if (id == MENU_MAP) { - CGeoMap.startActivityCoords(this, dstCoords, null, null); - } else if (id == MENU_SWITCH_COMPASS_GPS) { - boolean oldSetting = Settings.isUseCompass(); - Settings.setUseCompass(!oldSetting); - invalidateOptionsMenuCompatible(); - if (oldSetting) { - geoDirHandler.stopDir(); - } else { - geoDirHandler.startDir(); - } - } else if (id == 2) { - Intent pointIntent = new Intent(this, NavigateAnyPointActivity.class); - startActivity(pointIntent); - - finish(); - return true; - } else if (id > 3 && coordinates.get(id - 4) != null) { - final IWaypoint coordinate = coordinates.get(id - 4); - - title = coordinate.getName(); - dstCoords = coordinate.getCoords(); - setTitle(); - setDestCoords(); - setCacheInfo(); - updateDistanceInfo(app.currentGeo()); - - Log.d("destination set: " + title + " (" + dstCoords + ")"); - return true; + switch (id) { + case R.id.menu_map: + CGeoMap.startActivityCoords(this, dstCoords, null, null); + return true; + case R.id.menu_switch_compass_gps: + boolean oldSetting = Settings.isUseCompass(); + Settings.setUseCompass(!oldSetting); + invalidateOptionsMenuCompatible(); + if (oldSetting) { + geoDirHandler.stopDir(); + } else { + geoDirHandler.startDir(); + } + return true; + case R.id.menu_edit_destination: + Intent pointIntent = new Intent(this, NavigateAnyPointActivity.class); + startActivity(pointIntent); + + finish(); + return true; + default: + if (id > 3 && coordinates.get(id - 4) != null) { + final IWaypoint coordinate = coordinates.get(id - 4); + + title = coordinate.getName(); + dstCoords = coordinate.getCoords(); + setTitle(); + setDestCoords(); + setCacheInfo(); + updateDistanceInfo(app.currentGeo()); + + Log.d("destination set: " + title + " (" + dstCoords + ")"); + return true; + } } - return false; } @@ -268,7 +264,7 @@ public class cgeonavigate extends AbstractActivity { @Override public void updateDirection(final float direction) { if (app.currentGeo().getSpeed() <= 5) { // use compass when speed is lower than 18 km/h - updateNorthHeading(DirectionProvider.getDirectionNow(cgeonavigate.this, direction)); + updateNorthHeading(DirectionProvider.getDirectionNow(CompassActivity.this, direction)); } } }; @@ -286,7 +282,7 @@ public class cgeonavigate extends AbstractActivity { coordinates.addAll(coordinatesWithType); } - final Intent navigateIntent = new Intent(context, cgeonavigate.class); + final Intent navigateIntent = new Intent(context, CompassActivity.class); navigateIntent.putExtra(EXTRAS_COORDS, coords); navigateIntent.putExtra(EXTRAS_GEOCODE, geocode); if (null != displayedName) { @@ -297,7 +293,7 @@ public class cgeonavigate extends AbstractActivity { } public static void startActivity(final Context context, final String geocode, final String displayedName, final Geopoint coords, final Collection<IWaypoint> coordinatesWithType) { - cgeonavigate.startActivity(context, geocode, displayedName, coords, coordinatesWithType, null); + CompassActivity.startActivity(context, geocode, displayedName, coords, coordinatesWithType, null); } } diff --git a/main/src/cgeo/geocaching/MainActivity.java b/main/src/cgeo/geocaching/MainActivity.java index cd573ba..9a8083f 100644 --- a/main/src/cgeo/geocaching/MainActivity.java +++ b/main/src/cgeo/geocaching/MainActivity.java @@ -33,7 +33,6 @@ import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; -import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; @@ -239,8 +238,7 @@ public class MainActivity extends AbstractActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.main_options, menu); + getMenuInflater().inflate(R.menu.main_activity_options, menu); return true; } diff --git a/main/src/cgeo/geocaching/NavigateAnyPointActivity.java b/main/src/cgeo/geocaching/NavigateAnyPointActivity.java index 0770269..4e17caa 100644 --- a/main/src/cgeo/geocaching/NavigateAnyPointActivity.java +++ b/main/src/cgeo/geocaching/NavigateAnyPointActivity.java @@ -40,10 +40,6 @@ import android.widget.TextView; import java.util.List; public class NavigateAnyPointActivity extends AbstractActivity { - private static final int MENU_DEFAULT_NAVIGATION = 2; - private static final int MENU_NAVIGATE = 0; - private static final int MENU_CACHES_AROUND = 5; - private static final int MENU_CLEAR_HISTORY = 6; protected static class ViewHolder { @InjectView(R.id.simple_way_point_longitude) protected TextView longitude; @@ -320,14 +316,8 @@ public class NavigateAnyPointActivity extends AbstractActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { - menu.add(0, MENU_DEFAULT_NAVIGATION, 0, NavigationAppFactory.getDefaultNavigationApplication().getName()).setIcon(R.drawable.ic_menu_compass); // default navigation tool - - menu.add(0, MENU_NAVIGATE, 0, res.getString(R.string.cache_menu_navigate)).setIcon(R.drawable.ic_menu_mapmode); - - menu.add(0, MENU_CACHES_AROUND, 0, res.getString(R.string.cache_menu_around)).setIcon(R.drawable.ic_menu_rotate); // caches around - - menu.add(0, MENU_CLEAR_HISTORY, 0, res.getString(R.string.search_clear_history)).setIcon(R.drawable.ic_menu_delete); // clear history - + getMenuInflater().inflate(R.menu.navigate_any_point_activity_options, menu); + menu.findItem(R.id.menu_default_navigation).setTitle(NavigationAppFactory.getDefaultNavigationApplication().getName()); return true; } @@ -337,11 +327,11 @@ public class NavigateAnyPointActivity extends AbstractActivity { try { boolean visible = getDestination() != null; - menu.findItem(MENU_NAVIGATE).setVisible(visible); - menu.findItem(MENU_DEFAULT_NAVIGATION).setVisible(visible); - menu.findItem(MENU_CACHES_AROUND).setVisible(visible); + menu.findItem(R.id.menu_navigate).setVisible(visible); + menu.findItem(R.id.menu_default_navigation).setVisible(visible); + menu.findItem(R.id.menu_caches_around).setVisible(visible); - menu.findItem(MENU_CLEAR_HISTORY).setEnabled(!getHistoryOfSearchedLocations().isEmpty()); + menu.findItem(R.id.menu_clear_history).setEnabled(!getHistoryOfSearchedLocations().isEmpty()); } catch (Exception e) { // nothing } @@ -360,19 +350,19 @@ public class NavigateAnyPointActivity extends AbstractActivity { } switch (menuItem) { - case MENU_DEFAULT_NAVIGATION: + case R.id.menu_default_navigation: navigateTo(); return true; - case MENU_CACHES_AROUND: + case R.id.menu_caches_around: cachesAround(); return true; - case MENU_CLEAR_HISTORY: + case R.id.menu_clear_history: clearHistory(); return true; - case MENU_NAVIGATE: + case R.id.menu_navigate: NavigationAppFactory.showNavigationMenu(this, null, null, coords); return true; default: diff --git a/main/src/cgeo/geocaching/SearchActivity.java b/main/src/cgeo/geocaching/SearchActivity.java index 9c7e54e..73459e5 100644 --- a/main/src/cgeo/geocaching/SearchActivity.java +++ b/main/src/cgeo/geocaching/SearchActivity.java @@ -33,7 +33,6 @@ import java.util.Locale; public class SearchActivity extends AbstractActivity { - private static final int MENU_SEARCH_OWN_CACHES = 1; private EditText latEdit = null; private EditText lonEdit = null; @@ -409,13 +408,13 @@ public class SearchActivity extends AbstractActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { - menu.add(0, MENU_SEARCH_OWN_CACHES, 0, res.getString(R.string.search_own_caches)).setIcon(R.drawable.ic_menu_myplaces); + getMenuInflater().inflate(R.menu.search_activity_options, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == MENU_SEARCH_OWN_CACHES) { + if (item.getItemId() == R.id.menu_search_own_caches) { findByOwnerFn(Settings.getUsername()); return true; } diff --git a/main/src/cgeo/geocaching/SettingsActivity.java b/main/src/cgeo/geocaching/SettingsActivity.java index bd99552..002293b 100644 --- a/main/src/cgeo/geocaching/SettingsActivity.java +++ b/main/src/cgeo/geocaching/SettingsActivity.java @@ -159,14 +159,13 @@ public class SettingsActivity extends AbstractActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { - menu.add(0, 0, 0, res.getString(R.string.init_clear)).setIcon(R.drawable.ic_menu_delete); - + getMenuInflater().inflate(R.menu.settings_activity_options, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == 0) { + if (item.getItemId() == R.id.menu_clear) { ((EditText) findViewById(R.id.username)).setText(""); ((EditText) findViewById(R.id.password)).setText(""); ((EditText) findViewById(R.id.passvote)).setText(""); diff --git a/main/src/cgeo/geocaching/StaticMapsActivity.java b/main/src/cgeo/geocaching/StaticMapsActivity.java index 3b32067..a6a81d5 100644 --- a/main/src/cgeo/geocaching/StaticMapsActivity.java +++ b/main/src/cgeo/geocaching/StaticMapsActivity.java @@ -27,7 +27,6 @@ public class StaticMapsActivity extends AbstractActivity { private static final String EXTRAS_WAYPOINT = "waypoint"; private static final String EXTRAS_DOWNLOAD = "download"; private static final String EXTRAS_GEOCODE = "geocode"; - private static final int MENU_REFRESH = 1; private final List<Bitmap> maps = new ArrayList<Bitmap>(); private boolean download = false; private Integer waypoint_id = null; @@ -159,13 +158,13 @@ public class StaticMapsActivity extends AbstractActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { - menu.add(0, MENU_REFRESH, 0, res.getString(R.string.cache_offline_refresh)); + getMenuInflater().inflate(R.menu.static_maps_activity_options, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == MENU_REFRESH) { + if (item.getItemId() == R.id.menu_refresh) { downloadStaticMaps(); restartActivity(); return true; diff --git a/main/src/cgeo/geocaching/TrackableActivity.java b/main/src/cgeo/geocaching/TrackableActivity.java index 9b3dbfc..41b8b24 100644 --- a/main/src/cgeo/geocaching/TrackableActivity.java +++ b/main/src/cgeo/geocaching/TrackableActivity.java @@ -56,8 +56,6 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi this.resId = resId; } } - private static final int MENU_LOG_TOUCH = 1; - private static final int MENU_BROWSER_TRACKABLE = 2; private Trackable trackable = null; private String geocode = null; private String name = null; @@ -233,18 +231,17 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi @Override public boolean onCreateOptionsMenu(Menu menu) { - menu.add(0, MENU_LOG_TOUCH, 0, res.getString(R.string.trackable_log_touch)).setIcon(R.drawable.ic_menu_agenda); // log touch - menu.add(0, MENU_BROWSER_TRACKABLE, 0, res.getString(R.string.trackable_browser_open)).setIcon(R.drawable.ic_menu_info_details); // browser + getMenuInflater().inflate(R.menu.trackable_activity, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case MENU_LOG_TOUCH: + case R.id.menu_log_touch: LogTrackableActivity.startActivity(this, trackable); return true; - case MENU_BROWSER_TRACKABLE: + case R.id.menu_browser_trackable: startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(trackable.getUrl()))); return true; default: @@ -255,8 +252,8 @@ public class TrackableActivity extends AbstractViewPagerActivity<TrackableActivi @Override public boolean onPrepareOptionsMenu(Menu menu) { if (trackable != null) { - menu.findItem(MENU_LOG_TOUCH).setEnabled(StringUtils.isNotBlank(geocode) && trackable.isLoggable()); - menu.findItem(MENU_BROWSER_TRACKABLE).setEnabled(StringUtils.isNotBlank(trackable.getUrl())); + menu.findItem(R.id.menu_log_touch).setEnabled(StringUtils.isNotBlank(geocode) && trackable.isLoggable()); + menu.findItem(R.id.menu_browser_trackable).setEnabled(StringUtils.isNotBlank(trackable.getUrl())); } return super.onPrepareOptionsMenu(menu); } diff --git a/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java b/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java index 4811916..47010df 100644 --- a/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java +++ b/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java @@ -3,7 +3,7 @@ package cgeo.geocaching.apps.cache.navi; import cgeo.geocaching.Geocache; import cgeo.geocaching.R; import cgeo.geocaching.Waypoint; -import cgeo.geocaching.cgeonavigate; +import cgeo.geocaching.CompassActivity; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.ui.Formatter; @@ -22,18 +22,18 @@ class CompassApp extends AbstractPointNavigationApp { @Override public void navigate(Activity activity, Geopoint coords) { - cgeonavigate.startActivity(activity, getString(R.string.navigation_direct_navigation), getString(R.string.navigation_target), coords, null); + CompassActivity.startActivity(activity, getString(R.string.navigation_direct_navigation), getString(R.string.navigation_target), coords, null); } @Override public void navigate(Activity activity, Waypoint waypoint) { - cgeonavigate.startActivity(activity, waypoint.getPrefix() + "/" + waypoint.getLookup(), waypoint.getName(), waypoint.getCoords(), null, + CompassActivity.startActivity(activity, waypoint.getPrefix() + "/" + waypoint.getLookup(), waypoint.getName(), waypoint.getCoords(), null, waypoint.getWaypointType().getL10n()); } @Override public void navigate(Activity activity, Geocache cache) { - cgeonavigate.startActivity(activity, cache.getGeocode(), cache.getName(), cache.getCoords(), null, + CompassActivity.startActivity(activity, cache.getGeocode(), cache.getName(), cache.getCoords(), null, Formatter.formatCacheInfoShort(cache)); } diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java index 33dea8f..7c758e9 100644 --- a/main/src/cgeo/geocaching/cgeocaches.java +++ b/main/src/cgeo/geocaching/cgeocaches.java @@ -852,7 +852,7 @@ public class cgeocaches extends AbstractListActivity implements FilteredActivity if (cache.getCoords() != null) { menu.add(0, MENU_DEFAULT_NAVIGATION, 0, NavigationAppFactory.getDefaultNavigationApplication().getName()); menu.add(1, MENU_NAVIGATION, 0, res.getString(R.string.cache_menu_navigate)).setIcon(R.drawable.ic_menu_mapmode); - LoggingUI.addMenuItems(menu, cache); + LoggingUI.addMenuItems(this, menu, cache); menu.add(0, MENU_CACHE_DETAILS, 0, res.getString(R.string.cache_menu_details)); } if (cache.isOffline()) { diff --git a/main/src/cgeo/geocaching/maps/CGeoMap.java b/main/src/cgeo/geocaching/maps/CGeoMap.java index 436fcce..33dcfd4 100644 --- a/main/src/cgeo/geocaching/maps/CGeoMap.java +++ b/main/src/cgeo/geocaching/maps/CGeoMap.java @@ -116,21 +116,6 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto private static final String EXTRAS_MAP_MODE = "mapMode"; private static final String EXTRAS_LIVE_ENABLED = "liveEnabled"; - private static final int MENU_SELECT_MAPVIEW = 1; - private static final int MENU_MAP_LIVE = 2; - private static final int MENU_STORE_CACHES = 3; - private static final int SUBMENU_MODES = 4; - private static final int MENU_TRAIL_MODE = 81; - private static final int MENU_THEME_MODE = 82; - private static final int MENU_CIRCLE_MODE = 83; - private static final int SUBMENU_STRATEGY = 5; - private static final int MENU_STRATEGY_FASTEST = 51; - private static final int MENU_STRATEGY_FAST = 52; - private static final int MENU_STRATEGY_AUTO = 53; - private static final int MENU_STRATEGY_DETAILED = 74; - - private static final int MENU_AS_LIST = 7; - private static final String BUNDLE_MAP_SOURCE = "mapSource"; private static final String BUNDLE_MAP_STATE = "mapState"; private static final String BUNDLE_LIVE_ENABLED = "liveEnabled"; @@ -173,8 +158,6 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto private static final int[][] INSET_FOUND = { { 0, 0, 21, 28 }, { 0, 0, 25, 35 } }; // top left, 12x12 / 16x16 private static final int[][] INSET_USERMODIFIEDCOORDS = { { 21, 28, 0, 0 }, { 19, 25, 0, 0 } }; // bottom right, 12x12 / 26x26 private static final int[][] INSET_PERSONALNOTE = { { 0, 28, 21, 0 }, { 0, 25, 19, 0 } }; // bottom left, 12x12 / 26x26 - private static final int MENU_GROUP_MAP_SOURCES = 1; - private static final int MENU_GROUP_MAP_STRATEGY = 2; private SparseArray<LayerDrawable> overlaysCache = new SparseArray<LayerDrawable>(); /** Count of caches currently visible */ @@ -541,36 +524,15 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto @Override public boolean onCreateOptionsMenu(Menu menu) { + // menu inflation happens in Google/Mapsforge specific classes - SubMenu submenu = menu.addSubMenu(0, MENU_SELECT_MAPVIEW, 0, res.getString(R.string.map_view_map)).setIcon(R.drawable.ic_menu_mapmode); - addMapViewMenuItems(submenu); - - menu.add(0, MENU_MAP_LIVE, 0, res.getString(R.string.map_live_disable)).setIcon(R.drawable.ic_menu_refresh); - menu.add(0, MENU_STORE_CACHES, 0, res.getString(R.string.caches_store_offline)).setIcon(R.drawable.ic_menu_set_as).setEnabled(false); - SubMenu subMenuModes = menu.addSubMenu(0, SUBMENU_MODES, 0, res.getString(R.string.map_modes)).setIcon(R.drawable.ic_menu_mark); - subMenuModes.add(0, MENU_TRAIL_MODE, 0, res.getString(R.string.map_trail_hide)).setIcon(R.drawable.ic_menu_trail); - subMenuModes.add(0, MENU_CIRCLE_MODE, 0, res.getString(R.string.map_circles_hide)).setIcon(R.drawable.ic_menu_circle); - subMenuModes.add(0, MENU_THEME_MODE, 0, res.getString(R.string.map_theme_select)).setIcon(R.drawable.ic_menu_preferences); + MapProviderFactory.addMapviewMenuItems(menu); - Strategy strategy = Settings.getLiveMapStrategy(); - SubMenu subMenuStrategy = menu.addSubMenu(0, SUBMENU_STRATEGY, 0, res.getString(R.string.map_strategy)).setIcon(R.drawable.ic_menu_preferences); + final SubMenu subMenuStrategy = menu.findItem(R.id.submenu_strategy).getSubMenu(); subMenuStrategy.setHeaderTitle(res.getString(R.string.map_strategy_title)); - subMenuStrategy.add(MENU_GROUP_MAP_STRATEGY, MENU_STRATEGY_FASTEST, 0, Strategy.FASTEST.getL10n()).setCheckable(true).setChecked(strategy == Strategy.FASTEST); - subMenuStrategy.add(MENU_GROUP_MAP_STRATEGY, MENU_STRATEGY_FAST, 0, Strategy.FAST.getL10n()).setCheckable(true).setChecked(strategy == Strategy.FAST); - subMenuStrategy.add(MENU_GROUP_MAP_STRATEGY, MENU_STRATEGY_AUTO, 0, Strategy.AUTO.getL10n()).setCheckable(true).setChecked(strategy == Strategy.AUTO); - subMenuStrategy.add(MENU_GROUP_MAP_STRATEGY, MENU_STRATEGY_DETAILED, 0, Strategy.DETAILED.getL10n()).setCheckable(true).setChecked(strategy == Strategy.DETAILED); - subMenuStrategy.setGroupCheckable(MENU_GROUP_MAP_STRATEGY, true, true); - - menu.add(0, MENU_AS_LIST, 0, res.getString(R.string.map_as_list)).setIcon(R.drawable.ic_menu_agenda); - return true; } - private static void addMapViewMenuItems(final Menu menu) { - MapProviderFactory.addMapviewMenuItems(menu, MENU_GROUP_MAP_SOURCES); - menu.setGroupCheckable(MENU_GROUP_MAP_SOURCES, true, true); - } - @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); @@ -582,14 +544,14 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto } try { - MenuItem item = menu.findItem(MENU_TRAIL_MODE); + MenuItem item = menu.findItem(R.id.menu_trail_mode); if (Settings.isMapTrail()) { item.setTitle(res.getString(R.string.map_trail_hide)); } else { item.setTitle(res.getString(R.string.map_trail_show)); } - item = menu.findItem(MENU_MAP_LIVE); // live map + item = menu.findItem(R.id.menu_map_live); // live map if (isLiveEnabled) { item.setTitle(res.getString(R.string.map_live_disable)); } else { @@ -597,21 +559,27 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto } final Set<String> geocodesInViewport = getGeocodesForCachesInViewport(); - menu.findItem(MENU_STORE_CACHES).setEnabled(!isLoading() && CollectionUtils.isNotEmpty(geocodesInViewport) && new SearchResult(geocodesInViewport).hasUnsavedCaches()); + menu.findItem(R.id.menu_store_caches).setEnabled(!isLoading() && CollectionUtils.isNotEmpty(geocodesInViewport) && new SearchResult(geocodesInViewport).hasUnsavedCaches()); - item = menu.findItem(MENU_CIRCLE_MODE); // show circles + item = menu.findItem(R.id.menu_circle_mode); // show circles if (overlayCaches != null && overlayCaches.getCircles()) { item.setTitle(res.getString(R.string.map_circles_hide)); } else { item.setTitle(res.getString(R.string.map_circles_show)); } - item = menu.findItem(MENU_THEME_MODE); // show theme selection + item = menu.findItem(R.id.menu_theme_mode); // show theme selection item.setVisible(mapView.hasMapThemes()); - menu.findItem(MENU_AS_LIST).setEnabled(isLiveEnabled && !isLoading()); + menu.findItem(R.id.menu_as_list).setEnabled(isLiveEnabled && !isLoading()); + + menu.findItem(R.id.submenu_strategy).setEnabled(isLiveEnabled); - menu.findItem(SUBMENU_STRATEGY).setEnabled(isLiveEnabled); + Strategy strategy = Settings.getLiveMapStrategy(); + menu.findItem(R.id.menu_strategy_fastest).setChecked(strategy == Strategy.FASTEST); + menu.findItem(R.id.menu_strategy_fast).setChecked(strategy == Strategy.FAST); + menu.findItem(R.id.menu_strategy_auto).setChecked(strategy == Strategy.AUTO); + menu.findItem(R.id.menu_strategy_detailed).setChecked(strategy == Strategy.DETAILED); } catch (Exception e) { Log.e("cgeomap.onPrepareOptionsMenu", e); } @@ -623,12 +591,12 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto public boolean onOptionsItemSelected(MenuItem item) { final int id = item.getItemId(); switch (id) { - case MENU_TRAIL_MODE: + case R.id.menu_trail_mode: Settings.setMapTrail(!Settings.isMapTrail()); mapView.repaintRequired(overlayPosition); ActivityMixin.invalidateOptionsMenu(activity); return true; - case MENU_MAP_LIVE: + case R.id.menu_map_live: isLiveEnabled = !isLiveEnabled; if (mapMode == MapMode.LIVE) { Settings.setLiveMap(isLiveEnabled); @@ -638,7 +606,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto searchIntent = null; ActivityMixin.invalidateOptionsMenu(activity); return true; - case MENU_STORE_CACHES: + case R.id.menu_store_caches: if (!isLoading()) { final Set<String> geocodesInViewport = getGeocodesForCachesInViewport(); final List<String> geocodes = new ArrayList<String>(); @@ -672,7 +640,7 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto } } return true; - case MENU_CIRCLE_MODE: + case R.id.menu_circle_mode: if (overlayCaches == null) { return false; } @@ -681,29 +649,29 @@ public class CGeoMap extends AbstractMap implements OnMapDragListener, ViewFacto mapView.repaintRequired(overlayCaches); ActivityMixin.invalidateOptionsMenu(activity); return true; - case MENU_THEME_MODE: + case R.id.menu_theme_mode: selectMapTheme(); return true; - case MENU_AS_LIST: { + case R.id.menu_as_list: { cgeocaches.startActivityMap(activity, new SearchResult(getGeocodesForCachesInViewport())); return true; } - case MENU_STRATEGY_FASTEST: { + case R.id.menu_strategy_fastest: { item.setChecked(true); Settings.setLiveMapStrategy(Strategy.FASTEST); return true; } - case MENU_STRATEGY_FAST: { + case R.id.menu_strategy_fast: { item.setChecked(true); Settings.setLiveMapStrategy(Strategy.FAST); return true; } - case MENU_STRATEGY_AUTO: { + case R.id.menu_strategy_auto: { item.setChecked(true); Settings.setLiveMapStrategy(Strategy.AUTO); return true; } - case MENU_STRATEGY_DETAILED: { + case R.id.menu_strategy_detailed: { item.setChecked(true); Settings.setLiveMapStrategy(Strategy.DETAILED); return true; diff --git a/main/src/cgeo/geocaching/maps/MapProviderFactory.java b/main/src/cgeo/geocaching/maps/MapProviderFactory.java index 483189f..d1b5c3b 100644 --- a/main/src/cgeo/geocaching/maps/MapProviderFactory.java +++ b/main/src/cgeo/geocaching/maps/MapProviderFactory.java @@ -1,5 +1,6 @@ package cgeo.geocaching.maps; +import cgeo.geocaching.R; import cgeo.geocaching.Settings; import cgeo.geocaching.maps.google.GoogleMapProvider; import cgeo.geocaching.maps.interfaces.MapProvider; @@ -7,6 +8,7 @@ import cgeo.geocaching.maps.interfaces.MapSource; import cgeo.geocaching.maps.mapsforge.MapsforgeMapProvider; import android.view.Menu; +import android.view.SubMenu; import java.util.ArrayList; import java.util.List; @@ -43,12 +45,14 @@ public class MapProviderFactory { return provider1 == provider2 && provider1.isSameActivity(source1, source2); } - public static void addMapviewMenuItems(final Menu parentMenu, final int groupId) { + public static void addMapviewMenuItems(Menu menu) { + final SubMenu parentMenu = menu.findItem(R.id.menu_select_mapview).getSubMenu(); + final int currentSource = Settings.getMapSource().getNumericalId(); for (int i = 0; i < mapSources.size(); i++) { final MapSource mapSource = mapSources.get(i); final int id = mapSource.getNumericalId(); - parentMenu.add(groupId, id, i, mapSource.getName()).setCheckable(true).setChecked(id == currentSource); + parentMenu.add(R.id.menu_group_map_sources, id, i, mapSource.getName()).setCheckable(true).setChecked(id == currentSource); } } diff --git a/main/src/cgeo/geocaching/maps/google/GoogleMapActivity.java b/main/src/cgeo/geocaching/maps/google/GoogleMapActivity.java index a98241f..dcff363 100644 --- a/main/src/cgeo/geocaching/maps/google/GoogleMapActivity.java +++ b/main/src/cgeo/geocaching/maps/google/GoogleMapActivity.java @@ -1,5 +1,6 @@ package cgeo.geocaching.maps.google; +import cgeo.geocaching.R; import cgeo.geocaching.activity.FilteredActivity; import cgeo.geocaching.maps.AbstractMap; import cgeo.geocaching.maps.CGeoMap; @@ -83,7 +84,9 @@ public class GoogleMapActivity extends MapActivity implements MapActivityImpl, F @Override public boolean superOnCreateOptionsMenu(Menu menu) { - return super.onCreateOptionsMenu(menu); + final boolean result = super.onCreateOptionsMenu(menu); + getMenuInflater().inflate(R.menu.map_activity, menu); + return result; } @Override diff --git a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapActivity.java b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapActivity.java index a0384b8..232fe3c 100644 --- a/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapActivity.java +++ b/main/src/cgeo/geocaching/maps/mapsforge/MapsforgeMapActivity.java @@ -1,5 +1,6 @@ package cgeo.geocaching.maps.mapsforge; +import cgeo.geocaching.R; import cgeo.geocaching.activity.FilteredActivity; import cgeo.geocaching.maps.AbstractMap; import cgeo.geocaching.maps.CGeoMap; @@ -78,7 +79,9 @@ public class MapsforgeMapActivity extends MapActivity implements MapActivityImpl @Override public boolean superOnCreateOptionsMenu(Menu menu) { - return super.onCreateOptionsMenu(menu); + final boolean result = super.onCreateOptionsMenu(menu); + getMenuInflater().inflate(R.menu.map_activity, menu); + return result; } @Override diff --git a/main/src/cgeo/geocaching/ui/LoggingUI.java b/main/src/cgeo/geocaching/ui/LoggingUI.java index 2615947..1ba15a2 100644 --- a/main/src/cgeo/geocaching/ui/LoggingUI.java +++ b/main/src/cgeo/geocaching/ui/LoggingUI.java @@ -61,31 +61,12 @@ public class LoggingUI extends AbstractUIFactory { } } - private static final int MENU_ICON_LOG_VISIT = R.drawable.ic_menu_edit; - private static final int MENU_LOG_VISIT = 100; - private static final int MENU_LOG_VISIT_OFFLINE = 101; - - public static void addMenuItems(final Menu menu, final Geocache cache) { - if (cache == null) { - return; - } - if (!cache.supportsLogging()) { - return; - } - if (Settings.getLogOffline()) { - menu.add(0, MENU_LOG_VISIT_OFFLINE, 0, res.getString(R.string.cache_menu_visit_offline)).setIcon(MENU_ICON_LOG_VISIT); - } - else { - menu.add(0, MENU_LOG_VISIT, 0, res.getString(R.string.cache_menu_visit)).setIcon(MENU_ICON_LOG_VISIT); - } - } - public static boolean onMenuItemSelected(final MenuItem item, IAbstractActivity activity, Geocache cache) { switch (item.getItemId()) { - case MENU_LOG_VISIT: + case R.id.menu_log_visit: cache.logVisit(activity); return true; - case MENU_LOG_VISIT_OFFLINE: + case R.id.menu_log_visit_offline: showOfflineMenu(cache, (Activity) activity); return true; default: @@ -136,10 +117,17 @@ public class LoggingUI extends AbstractUIFactory { } - public static void onPrepareOptionsMenu(Menu menu) { - final MenuItem item = menu.findItem(MENU_LOG_VISIT); - if (item != null) { - item.setEnabled(Settings.isLogin()); - } + public static void onPrepareOptionsMenu(Menu menu, Geocache cache) { + final MenuItem itemLog = menu.findItem(R.id.menu_log_visit); + itemLog.setVisible(cache.supportsLogging() && !Settings.getLogOffline()); + itemLog.setEnabled(Settings.isLogin()); + + final MenuItem itemOffline = menu.findItem(R.id.menu_log_visit_offline); + itemOffline.setVisible(cache.supportsLogging() && Settings.getLogOffline()); + } + + public static void addMenuItems(Activity activity, Menu menu, Geocache cache) { + activity.getMenuInflater().inflate(R.menu.logging_ui, menu); + onPrepareOptionsMenu(menu, cache); } } |
