From e3be57dd69935b33b63b172bbf206bf402aa8b3f Mon Sep 17 00:00:00 2001 From: Bananeweizen Date: Sun, 17 Aug 2014 07:17:05 +0200 Subject: convert navigation popup menu to action menu --- main/proguard-project.txt | 5 +- main/res/menu/cache_options.xml | 3 +- main/src/cgeo/geocaching/CacheDetailActivity.java | 5 +- main/src/cgeo/geocaching/CacheMenuHandler.java | 9 ++- .../navi/NavigationSelectionActionProvider.java | 85 ++++++++++++++++++++++ 5 files changed, 100 insertions(+), 7 deletions(-) create mode 100644 main/src/cgeo/geocaching/apps/cache/navi/NavigationSelectionActionProvider.java (limited to 'main') diff --git a/main/proguard-project.txt b/main/proguard-project.txt index 9b0978c..2a27d99 100644 --- a/main/proguard-project.txt +++ b/main/proguard-project.txt @@ -59,8 +59,7 @@ # Null analysis annotations of Eclipse JDT are just used by the Eclipse compiler, so ignore them here -dontwarn org.eclipse.jdt.annotation.** -# the sort action provider is only referenced from XML +# action providers are only referenced from XML -keep public class cgeo.geocaching.sorting.SortActionProvider { *; } - -# the navigation action provider is only referenced from XML -keep public class cgeo.geocaching.ui.NavigationActionProvider { *; } +-keep public class cgeo.geocaching.apps.cache.navi.NavigationSelectionActionProvider { *; } \ No newline at end of file diff --git a/main/res/menu/cache_options.xml b/main/res/menu/cache_options.xml index 2e0e2bd..f6ca4aa 100644 --- a/main/res/menu/cache_options.xml +++ b/main/res/menu/cache_options.xml @@ -7,12 +7,13 @@ android:icon="@drawable/ic_menu_compass" android:title="@string/cache_menu_navigate" app:actionProviderClass="cgeo.geocaching.ui.NavigationActionProvider" - app:showAsAction="always"> + app:showAsAction="always"> installedNavigationApps = NavigationAppFactory.getInstalledNavigationApps(); + + for (final NavigationAppsEnum navigationApp : installedNavigationApps) { + if (navigationApp.id == navigationAppId) { + return navigationApp.app; + } + } + // default navigation tool wasn't set already or couldn't be found (not installed any more for example) + return NavigationAppsEnum.COMPASS.app; + } + + public static void initialize(final MenuItem menuItem, final Geocache cache) { + final ActionProvider actionProvider = MenuItemCompat.getActionProvider(menuItem); + if (actionProvider instanceof NavigationSelectionActionProvider) { + final NavigationSelectionActionProvider navigateAction = (NavigationSelectionActionProvider) actionProvider; + navigateAction.setTarget(cache); + } + } + +} -- cgit v1.1