aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2012-01-14 14:29:29 +0100
committerBananeweizen <bananeweizen@gmx.de>2012-01-14 14:29:29 +0100
commit77a8bc851569ae7a82f76a0913b39006074ac56a (patch)
tree0038ab2956c99e0e03486127712568fc1cad4ab8
parent25f31ccea856e33da2febff9a7bff83e8c08a451 (diff)
downloadcgeo-77a8bc851569ae7a82f76a0913b39006074ac56a.zip
cgeo-77a8bc851569ae7a82f76a0913b39006074ac56a.tar.gz
cgeo-77a8bc851569ae7a82f76a0913b39006074ac56a.tar.bz2
fix #943: click preview map to invoke navigation
-rw-r--r--main/res/layout/cacheview_details.xml3
-rw-r--r--main/src/cgeo/geocaching/CacheDetailActivity.java11
-rw-r--r--main/src/cgeo/geocaching/CacheListAdapter.java4
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java22
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()) {