diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2013-12-08 11:17:42 +0100 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2013-12-08 11:17:42 +0100 |
| commit | ac97e38a33a47291f33f503db4dcfee1a263dcd5 (patch) | |
| tree | bbc89960e57befc19306b5a0d5370beabb02665c /main/src/cgeo/geocaching/apps | |
| parent | 2da59992fc2af8d1fb4f9da28fbd5641a2b2b665 (diff) | |
| download | cgeo-ac97e38a33a47291f33f503db4dcfee1a263dcd5.zip cgeo-ac97e38a33a47291f33f503db4dcfee1a263dcd5.tar.gz cgeo-ac97e38a33a47291f33f503db4dcfee1a263dcd5.tar.bz2 | |
fixes #3431: avoid navigation selection for single option
Diffstat (limited to 'main/src/cgeo/geocaching/apps')
| -rw-r--r-- | main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java index dd02bc1..aae3c43 100644 --- a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java +++ b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java @@ -142,8 +142,6 @@ public final class NavigationAppFactory extends AbstractAppFactory { public static void showNavigationMenu(final Activity activity, final Geocache cache, final Waypoint waypoint, final Geopoint destination, final boolean showInternalMap, final boolean showDefaultNavigation) { - final AlertDialog.Builder builder = new AlertDialog.Builder(activity); - builder.setTitle(R.string.cache_menu_navigate); final List<NavigationAppsEnum> items = new ArrayList<NavigationAppFactory.NavigationAppsEnum>(); final int defaultNavigationTool = Settings.getDefaultNavigationTool(); for (final NavigationAppsEnum navApp : getInstalledNavigationApps()) { @@ -166,26 +164,25 @@ public final class NavigationAppFactory extends AbstractAppFactory { } } } + + if (items.size() == 1) { + invokeNavigation(activity, cache, waypoint, destination, items.get(0).app); + return; + } + /* * Using an ArrayAdapter with list of NavigationAppsEnum items avoids * handling between mapping list positions allows us to do dynamic filtering of the list based on use case. */ final ArrayAdapter<NavigationAppsEnum> adapter = new ArrayAdapter<NavigationAppsEnum>(activity, android.R.layout.select_dialog_item, items); + final AlertDialog.Builder builder = new AlertDialog.Builder(activity); + builder.setTitle(R.string.cache_menu_navigate); builder.setAdapter(adapter, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int item) { final NavigationAppsEnum selectedItem = adapter.getItem(item); - final App app = selectedItem.app; - if (cache != null) { - navigateCache(activity, cache, app); - } - else if (waypoint != null) { - navigateWaypoint(activity, waypoint, app); - } - else { - navigateGeopoint(activity, destination, app); - } + invokeNavigation(activity, cache, waypoint, destination, selectedItem.app); } }); final AlertDialog alert = builder.create(); @@ -225,7 +222,7 @@ public final class NavigationAppFactory extends AbstractAppFactory { /** * Handles menu selections for menu entries created with * {@link #showNavigationMenu(Activity, Geocache, Waypoint, Geopoint)}. - * + * * @param item * @param activity * @param cache @@ -343,4 +340,16 @@ public final class NavigationAppFactory extends AbstractAppFactory { return NavigationAppsEnum.COMPASS.app; } + private static void invokeNavigation(final Activity activity, final Geocache cache, final Waypoint waypoint, final Geopoint destination, final App app) { + if (cache != null) { + navigateCache(activity, cache, app); + } + else if (waypoint != null) { + navigateWaypoint(activity, waypoint, app); + } + else { + navigateGeopoint(activity, destination, app); + } + } + } |
