diff options
4 files changed, 39 insertions, 1 deletions
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" />
</LinearLayout>
</LinearLayout>
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<cgCache> { 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<NavigationApp> 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<NavigationApp> getInstalledNavigationApps(final Activity activity) { final List<NavigationApp> installedNavigationApps = new ArrayList<NavigationApp>(); for (NavigationApp app : getNavigationApps()) { |
