From 77a8bc851569ae7a82f76a0913b39006074ac56a Mon Sep 17 00:00:00 2001 From: Bananeweizen Date: Sat, 14 Jan 2012 14:29:29 +0100 Subject: fix #943: click preview map to invoke navigation --- main/res/layout/cacheview_details.xml | 3 ++- main/src/cgeo/geocaching/CacheDetailActivity.java | 11 +++++++++++ main/src/cgeo/geocaching/CacheListAdapter.java | 4 ++++ .../apps/cache/navi/NavigationAppFactory.java | 22 ++++++++++++++++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) diff --git a/main/res/layout/cacheview_details.xml b/main/res/layout/cacheview_details.xml index 990b197..3da0789 100644 --- a/main/res/layout/cacheview_details.xml +++ b/main/res/layout/cacheview_details.xml @@ -218,7 +218,8 @@ android:layout_gravity="center" android:gravity="center" android:scaleType="centerCrop" - android:src="@null" /> + android:src="@null" + android:onClick="showNavigationMenu" /> diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 38c48a1..5fa4c55 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -923,6 +923,17 @@ public class CacheDetailActivity extends AbstractActivity { } /** + * referenced from XML view + */ + public void showNavigationMenu(@SuppressWarnings("unused") View view) { + showNavigationMenu(); + } + + private void showNavigationMenu() { + NavigationAppFactory.showNavigationMenu(geolocation, this, cache, search); + } + + /** * Opens a context menu to do actions on an username */ private class UserActionsClickListener implements View.OnClickListener { diff --git a/main/src/cgeo/geocaching/CacheListAdapter.java b/main/src/cgeo/geocaching/CacheListAdapter.java index e417166..a010c6d 100644 --- a/main/src/cgeo/geocaching/CacheListAdapter.java +++ b/main/src/cgeo/geocaching/CacheListAdapter.java @@ -118,6 +118,10 @@ public class CacheListAdapter extends ArrayAdapter { forceSort(coords); } + public CacheComparator getCacheComparator() { + return cacheComparator; + } + /** * Called when a new page of caches was loaded. */ diff --git a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java index bfda2ea..67ecfed 100644 --- a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java +++ b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java @@ -1,5 +1,6 @@ package cgeo.geocaching.apps.cache.navi; +import cgeo.geocaching.R; import cgeo.geocaching.SearchResult; import cgeo.geocaching.Settings; import cgeo.geocaching.cgCache; @@ -11,6 +12,8 @@ import cgeo.geocaching.geopoint.Geopoint; import org.apache.commons.lang3.ArrayUtils; import android.app.Activity; +import android.app.AlertDialog; +import android.content.DialogInterface; import android.util.Log; import android.view.Menu; import android.view.MenuItem; @@ -54,6 +57,25 @@ public final class NavigationAppFactory extends AbstractAppFactory { } } + public static void showNavigationMenu(final cgGeo geo, final Activity activity, final cgCache cache, final SearchResult search) { + AlertDialog.Builder builder = new AlertDialog.Builder(activity); + builder.setTitle(R.string.cache_menu_navigate); + builder.setIcon(android.R.drawable.ic_menu_mapmode); + final List installed = getInstalledNavigationApps(activity); + String[] items = new String[installed.size()]; + for (int i = 0; i < installed.size(); i++) { + items[i] = installed.get(i).getName(); + } + builder.setItems(items, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int item) { + installed.get(item).invoke(geo, activity, cache, search, null, null); + } + }); + AlertDialog alert = builder.create(); + alert.show(); + + } + public static List getInstalledNavigationApps(final Activity activity) { final List installedNavigationApps = new ArrayList(); for (NavigationApp app : getNavigationApps()) { -- cgit v1.1