aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/apps
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/apps')
-rw-r--r--main/src/cgeo/geocaching/apps/AbstractLocusApp.java19
-rw-r--r--main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java7
-rw-r--r--main/src/cgeo/geocaching/apps/cache/CacheBeaconApp.java5
-rw-r--r--main/src/cgeo/geocaching/apps/cache/GccApp.java4
-rw-r--r--main/src/cgeo/geocaching/apps/cache/GeneralApp.java12
-rw-r--r--main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java48
-rw-r--r--main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/AbstractNavigationApp.java26
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java15
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsDirectionApp.java48
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java63
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/NavigationApp.java18
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java52
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/WaypointNavigationApp.java6
21 files changed, 152 insertions, 219 deletions
diff --git a/main/src/cgeo/geocaching/apps/AbstractLocusApp.java b/main/src/cgeo/geocaching/apps/AbstractLocusApp.java
index ac6fc1c..ad421f6 100644
--- a/main/src/cgeo/geocaching/apps/AbstractLocusApp.java
+++ b/main/src/cgeo/geocaching/apps/AbstractLocusApp.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.apps;
import cgeo.geocaching.R;
import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgWaypoint;
+import cgeo.geocaching.Waypoint;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.enumerations.CacheSize;
import cgeo.geocaching.enumerations.CacheType;
@@ -22,6 +22,7 @@ import android.location.Location;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
/**
* for the Locus API:
@@ -30,7 +31,7 @@ import java.util.List;
*/
public abstract class AbstractLocusApp extends AbstractApp {
private static final String INTENT = Intent.ACTION_VIEW;
- private static final SimpleDateFormat ISO8601DATE = new SimpleDateFormat("yyyy-MM-dd'T'");
+ private static final SimpleDateFormat ISO8601DATE = new SimpleDateFormat("yyyy-MM-dd'T'", Locale.US);
protected AbstractLocusApp() {
super(getString(R.string.caches_map_locus), INTENT);
@@ -47,11 +48,11 @@ public abstract class AbstractLocusApp extends AbstractApp {
/**
* Display a list of caches / waypoints in Locus
- *
+ *
* @param objectsToShow
* which caches/waypoints to show
* @param withCacheWaypoints
- * wether to give waypoints of caches to Locus or not
+ * Whether to give waypoints of caches to Locus or not
* @param activity
*/
protected static boolean showInLocus(final List<?> objectsToShow, final boolean withCacheWaypoints, final boolean export,
@@ -67,8 +68,8 @@ public abstract class AbstractLocusApp extends AbstractApp {
// get icon and Point
if (o instanceof cgCache) {
p = getCachePoint((cgCache) o, withCacheWaypoints, withCacheDetails);
- } else if (o instanceof cgWaypoint) {
- p = getWaypointPoint((cgWaypoint) o);
+ } else if (o instanceof Waypoint) {
+ p = getWaypointPoint((Waypoint) o);
}
if (p != null) {
pd.addPoint(p);
@@ -85,7 +86,7 @@ public abstract class AbstractLocusApp extends AbstractApp {
final ArrayList<PointsData> data = new ArrayList<PointsData>();
data.add(pd);
DisplayData.sendDataCursor(activity, data,
- "content://" + LocusDataStorageProvider.class.getCanonicalName().toLowerCase(),
+ "content://" + LocusDataStorageProvider.class.getCanonicalName().toLowerCase(Locale.US),
export);
}
@@ -145,7 +146,7 @@ public abstract class AbstractLocusApp extends AbstractApp {
if (withWaypoints && cache.hasWaypoints()) {
pg.waypoints = new ArrayList<PointGeocachingDataWaypoint>();
- for (cgWaypoint waypoint : cache.getWaypoints()) {
+ for (Waypoint waypoint : cache.getWaypoints()) {
if (waypoint == null || waypoint.getCoords() == null) {
continue;
}
@@ -181,7 +182,7 @@ public abstract class AbstractLocusApp extends AbstractApp {
* @param waypoint
* @return null, when the <code>Point</code> could not be constructed
*/
- private static Point getWaypointPoint(cgWaypoint waypoint) {
+ private static Point getWaypointPoint(Waypoint waypoint) {
if (waypoint == null || waypoint.getCoords() == null) {
return null;
}
diff --git a/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java b/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java
index 61528ea..8087d6d 100644
--- a/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java
@@ -2,24 +2,23 @@ package cgeo.geocaching.apps.cache;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.apps.AbstractApp;
+import cgeo.geocaching.apps.cache.navi.CacheNavigationApp;
import android.app.Activity;
import android.content.Intent;
-abstract class AbstractGeneralApp extends AbstractApp implements GeneralApp {
+abstract class AbstractGeneralApp extends AbstractApp implements CacheNavigationApp {
protected AbstractGeneralApp(String name, String packageName) {
super(name, null, packageName);
}
@Override
- public boolean invoke(Activity activity, cgCache cache) {
+ public void navigate(Activity activity, cgCache cache) {
final Intent intent = getLaunchIntent();
if (intent != null) {
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
activity.startActivity(intent);
- return true;
}
- return false;
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/CacheBeaconApp.java b/main/src/cgeo/geocaching/apps/cache/CacheBeaconApp.java
index 6e7cdca..4ba336f 100644
--- a/main/src/cgeo/geocaching/apps/cache/CacheBeaconApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/CacheBeaconApp.java
@@ -6,15 +6,12 @@ import cgeo.geocaching.enumerations.CacheAttribute;
public class CacheBeaconApp extends AbstractGeneralApp {
- protected CacheBeaconApp() {
+ public CacheBeaconApp() {
super(getString(R.string.cache_menu_cachebeacon), "de.fun2code.android.cachebeacon");
}
@Override
public boolean isEnabled(cgCache cache) {
- if (cache == null) {
- return false;
- }
return cache.hasAttribute(CacheAttribute.WIRELESS_BEACON, true);
}
diff --git a/main/src/cgeo/geocaching/apps/cache/GccApp.java b/main/src/cgeo/geocaching/apps/cache/GccApp.java
index 9000d9e..b129b45 100644
--- a/main/src/cgeo/geocaching/apps/cache/GccApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/GccApp.java
@@ -2,8 +2,8 @@ package cgeo.geocaching.apps.cache;
import cgeo.geocaching.R;
-class GccApp extends AbstractGeneralApp {
- GccApp() {
+public class GccApp extends AbstractGeneralApp {
+ public GccApp() {
super(getString(R.string.cache_menu_gcc), "eisbehr.gcc");
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/GeneralApp.java b/main/src/cgeo/geocaching/apps/cache/GeneralApp.java
deleted file mode 100644
index cdbedd5..0000000
--- a/main/src/cgeo/geocaching/apps/cache/GeneralApp.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package cgeo.geocaching.apps.cache;
-
-import cgeo.geocaching.cgCache;
-import cgeo.geocaching.apps.App;
-
-import android.app.Activity;
-
-interface GeneralApp extends App {
-
- public boolean invoke(Activity activity, cgCache cache);
-
-}
diff --git a/main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java b/main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java
deleted file mode 100644
index 57eb957..0000000
--- a/main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package cgeo.geocaching.apps.cache;
-
-import cgeo.geocaching.cgCache;
-import cgeo.geocaching.apps.AbstractAppFactory;
-import cgeo.geocaching.utils.Log;
-
-import org.apache.commons.lang3.ArrayUtils;
-
-import android.app.Activity;
-import android.view.Menu;
-import android.view.MenuItem;
-
-public final class GeneralAppsFactory extends AbstractAppFactory {
- private static GeneralApp[] apps = new GeneralApp[] {};
-
- private static GeneralApp[] getGeneralApps() {
- if (ArrayUtils.isEmpty(apps)) {
- apps = new GeneralApp[] {
- new CacheBeaconApp(),
- new GccApp(),
- new WhereYouGoApp()
- };
- }
- return apps;
- }
-
- public static void addMenuItems(Menu menu, cgCache cache) {
- for (GeneralApp app : getGeneralApps()) {
- if (app.isInstalled() && app.isEnabled(cache)) {
- menu.add(0, app.getId(), 0, app.getName());
- }
- }
- }
-
- public static boolean onMenuItemSelected(final MenuItem item, Activity activity, cgCache cache) {
- final GeneralApp app = (GeneralApp) getAppFromMenuItem(item, apps);
- if (app == null) {
- return false;
- }
- try {
- app.invoke(activity, cache);
- } catch (Exception e) {
- Log.e("GeneralAppsFactory.onMenuItemSelected: " + e.toString());
- }
- return true;
- }
-
-}
diff --git a/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java b/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java
index 8c16eaf..8c06d7a 100644
--- a/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java
@@ -4,13 +4,13 @@ import cgeo.geocaching.R;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.enumerations.CacheType;
-class WhereYouGoApp extends AbstractGeneralApp {
- WhereYouGoApp() {
+public class WhereYouGoApp extends AbstractGeneralApp {
+ public WhereYouGoApp() {
super(getString(R.string.cache_menu_whereyougo), "menion.android.whereyougo");
}
@Override
public boolean isEnabled(cgCache cache) {
- return cache != null && cache.getType() == CacheType.WHERIGO;
+ return cache.getType() == CacheType.WHERIGO;
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/AbstractNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/AbstractNavigationApp.java
deleted file mode 100644
index 27cb47c..0000000
--- a/main/src/cgeo/geocaching/apps/cache/navi/AbstractNavigationApp.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package cgeo.geocaching.apps.cache.navi;
-
-import cgeo.geocaching.cgWaypoint;
-import cgeo.geocaching.apps.AbstractApp;
-import cgeo.geocaching.geopoint.Geopoint;
-
-abstract class AbstractNavigationApp extends AbstractApp implements NavigationApp {
-
- protected AbstractNavigationApp(String name, String intent, String packageName) {
- super(name, intent, packageName);
- }
-
- protected AbstractNavigationApp(String name, String intent) {
- super(name, intent);
- }
-
- @Override
- public boolean isEnabled(cgWaypoint waypoint) {
- return waypoint != null;
- }
-
- @Override
- public boolean isEnabled(Geopoint geopoint) {
- return geopoint != null;
- }
-}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java
index ca8c7db..67aa849 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgWaypoint;
+import cgeo.geocaching.Waypoint;
import cgeo.geocaching.apps.AbstractApp;
import android.app.Activity;
@@ -25,7 +25,7 @@ abstract class AbstractPointNavigationApp extends AbstractApp implements CacheNa
}
@Override
- public void navigate(Activity activity, cgWaypoint waypoint) {
+ public void navigate(Activity activity, Waypoint waypoint) {
navigate(activity, waypoint.getCoords());
}
@@ -35,7 +35,7 @@ abstract class AbstractPointNavigationApp extends AbstractApp implements CacheNa
}
@Override
- public boolean isEnabled(cgWaypoint waypoint) {
+ public boolean isEnabled(Waypoint waypoint) {
return waypoint.getCoords() != null;
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java
index f27b53c..e6bf9f4 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/AbstractStaticMapsApp.java
@@ -4,9 +4,9 @@ import cgeo.geocaching.ILogable;
import cgeo.geocaching.R;
import cgeo.geocaching.StaticMapsActivity;
import cgeo.geocaching.StaticMapsProvider;
+import cgeo.geocaching.Waypoint;
import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgWaypoint;
-import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.cgData;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.apps.AbstractApp;
@@ -15,7 +15,7 @@ import org.apache.commons.lang3.StringUtils;
import android.app.Activity;
abstract class AbstractStaticMapsApp extends AbstractApp implements CacheNavigationApp, WaypointNavigationApp {
- public AbstractStaticMapsApp(String name) {
+ protected AbstractStaticMapsApp(String name) {
super(name, null);
}
@@ -29,18 +29,19 @@ abstract class AbstractStaticMapsApp extends AbstractApp implements CacheNavigat
return false;
}
- protected static boolean hasStaticMap(cgWaypoint waypoint) {
- if (waypoint==null)
+ protected static boolean hasStaticMap(Waypoint waypoint) {
+ if (waypoint==null) {
return false;
+ }
String geocode = waypoint.getGeocode();
int id = waypoint.getId();
- if (StringUtils.isNotEmpty(geocode) && cgeoapplication.getInstance().isOffline(geocode, null)) {
+ if (StringUtils.isNotEmpty(geocode) && cgData.isOffline(geocode, null)) {
return StaticMapsProvider.hasStaticMapForWaypoint(geocode, id);
}
return false;
}
- protected static boolean invokeStaticMaps(final Activity activity, final cgCache cache, final cgWaypoint waypoint, final boolean download) {
+ protected static boolean invokeStaticMaps(final Activity activity, final cgCache cache, final Waypoint waypoint, final boolean download) {
final ILogable logable = cache != null && cache.getListId() != 0 ? cache : waypoint;
// If the cache is not stored for offline, cache seems to be null and waypoint may be null too
if (logable==null || logable.getGeocode()==null ) {
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java b/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
index 5275d53..330c338 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
+import cgeo.geocaching.Waypoint;
import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.cgeonavigate;
import cgeo.geocaching.apps.AbstractApp;
import cgeo.geocaching.geopoint.Geopoint;
@@ -27,13 +27,13 @@ class CompassApp extends AbstractApp implements CacheNavigationApp, WaypointNavi
}
@Override
- public void navigate(Activity activity, cgWaypoint waypoint) {
+ public void navigate(Activity activity, Waypoint waypoint) {
cgeonavigate.startActivity(activity, waypoint.getPrefix() + "/" + waypoint.getLookup(), waypoint.getName(), waypoint.getCoords(), null,
waypoint.getWaypointType().getL10n());
}
@Override
- public boolean isEnabled(cgWaypoint waypoint) {
+ public boolean isEnabled(Waypoint waypoint) {
return waypoint.getCoords() != null;
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java
index faf3c36..846b9bc 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/DownloadStaticMapsApp.java
@@ -2,7 +2,7 @@ package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgWaypoint;
+import cgeo.geocaching.Waypoint;
import android.app.Activity;
@@ -18,7 +18,7 @@ class DownloadStaticMapsApp extends AbstractStaticMapsApp {
}
@Override
- public boolean isEnabled(cgWaypoint waypoint) {
+ public boolean isEnabled(Waypoint waypoint) {
return !hasStaticMap(waypoint);
}
@@ -28,7 +28,7 @@ class DownloadStaticMapsApp extends AbstractStaticMapsApp {
}
@Override
- public void navigate(Activity activity, cgWaypoint waypoint) {
+ public void navigate(Activity activity, Waypoint waypoint) {
invokeStaticMaps(activity, null, waypoint, true);
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsDirectionApp.java b/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsDirectionApp.java
new file mode 100644
index 0000000..db4fc1c
--- /dev/null
+++ b/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsDirectionApp.java
@@ -0,0 +1,48 @@
+package cgeo.geocaching.apps.cache.navi;
+
+import cgeo.geocaching.IGeoData;
+import cgeo.geocaching.R;
+import cgeo.geocaching.cgeoapplication;
+import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.maps.MapProviderFactory;
+import cgeo.geocaching.utils.Log;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.net.Uri;
+
+public class GoogleMapsDirectionApp extends AbstractPointNavigationApp {
+
+ protected GoogleMapsDirectionApp() {
+ super(getString(R.string.cache_menu_maps_directions), null);
+ }
+
+ @Override
+ public boolean isInstalled() {
+ return MapProviderFactory.isGoogleMapsInstalled();
+ }
+
+ @Override
+ public void navigate(Activity activity, Geopoint coords) {
+ try {
+ IGeoData geo = cgeoapplication.getInstance().currentGeo();
+ final Geopoint coordsNow = geo == null ? null : geo.getCoords();
+
+ if (coordsNow != null) {
+ activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri
+ .parse("http://maps.google.com/maps?f=d&saddr="
+ + coordsNow.getLatitude() + "," + coordsNow.getLongitude() + "&daddr="
+ + coords.getLatitude() + "," + coords.getLongitude())));
+ } else {
+ activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri
+ .parse("http://maps.google.com/maps?f=d&daddr="
+ + coords.getLatitude() + "," + coords.getLongitude())));
+ }
+
+ } catch (Exception e) {
+ Log.i("GoogleMapsDirection: application not available.");
+ }
+
+ }
+
+}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java
index 7258e11..f1616ad 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java
@@ -1,10 +1,6 @@
package cgeo.geocaching.apps.cache.navi;
-import cgeo.geocaching.IGeoData;
import cgeo.geocaching.R;
-import cgeo.geocaching.Settings;
-import cgeo.geocaching.cgeoapplication;
-import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.utils.Log;
@@ -12,10 +8,13 @@ import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
-class GoogleNavigationApp extends AbstractPointNavigationApp {
+abstract class GoogleNavigationApp extends AbstractPointNavigationApp {
- GoogleNavigationApp() {
- super(getString(R.string.cache_menu_tbt), null);
+ private final String mode;
+
+ protected GoogleNavigationApp(final int nameResourceId, final String mode) {
+ super(getString(nameResourceId), null);
+ this.mode = mode;
}
@Override
@@ -23,49 +22,27 @@ class GoogleNavigationApp extends AbstractPointNavigationApp {
return true;
}
- private static boolean navigateToCoordinates(Activity activity, final Geopoint coords) {
- IGeoData geo = cgeoapplication.getInstance().currentGeo();
- final Geopoint coordsNow = geo == null ? null : geo.getCoords();
-
- // Google Navigation
- if (Settings.isUseGoogleNavigation()) {
- try {
- activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri
- .parse("google.navigation:ll=" + coords.getLatitude() + ","
- + coords.getLongitude())));
-
- return true;
- } catch (Exception e) {
- // nothing
- }
- }
-
- // Google Maps Directions
+ @Override
+ public void navigate(Activity activity, Geopoint coords) {
try {
- if (coordsNow != null) {
- activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri
- .parse("http://maps.google.com/maps?f=d&saddr="
- + coordsNow.getLatitude() + "," + coordsNow.getLongitude() + "&daddr="
- + coords.getLatitude() + "," + coords.getLongitude())));
- } else {
- activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri
- .parse("http://maps.google.com/maps?f=d&daddr="
- + coords.getLatitude() + "," + coords.getLongitude())));
- }
+ activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri
+ .parse("google.navigation:ll=" + coords.getLatitude() + ","
+ + coords.getLongitude() + mode)));
- return true;
} catch (Exception e) {
- // nothing
+ Log.i("cgBase.runNavigation: No navigation application available.");
}
+ }
- Log.i("cgBase.runNavigation: No navigation application available.");
- return false;
+ static class GoogleNavigationWalkingApp extends GoogleNavigationApp {
+ GoogleNavigationWalkingApp() {
+ super(R.string.cache_menu_navigation_walk, "&mode=w");
+ }
}
- @Override
- public void navigate(Activity activity, Geopoint coords) {
- if (!navigateToCoordinates(activity, coords)) {
- ActivityMixin.showToast(activity, getString(R.string.err_navigation_no));
+ static class GoogleNavigationDrivingApp extends GoogleNavigationApp {
+ GoogleNavigationDrivingApp() {
+ super(R.string.cache_menu_navigation_drive, "&mode=d");
}
}
} \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java b/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java
index 8185f40..db842ad 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
+import cgeo.geocaching.Waypoint;
import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.apps.AbstractApp;
import cgeo.geocaching.enumerations.WaypointType;
import cgeo.geocaching.geopoint.Geopoint;
@@ -27,12 +27,12 @@ class InternalMap extends AbstractApp implements CacheNavigationApp, WaypointNav
}
@Override
- public void navigate(Activity activity, cgWaypoint waypoint) {
+ public void navigate(Activity activity, Waypoint waypoint) {
CGeoMap.startActivityCoords(activity, waypoint.getCoords(), waypoint.getWaypointType(), waypoint.getName());
}
@Override
- public boolean isEnabled(cgWaypoint waypoint) {
+ public boolean isEnabled(Waypoint waypoint) {
return waypoint.getCoords() != null;
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java b/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java
index a20f2ce..b326105 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java
@@ -1,7 +1,7 @@
package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgWaypoint;
+import cgeo.geocaching.Waypoint;
import cgeo.geocaching.apps.AbstractLocusApp;
import android.app.Activity;
@@ -11,7 +11,7 @@ import java.util.Collections;
class LocusApp extends AbstractLocusApp implements CacheNavigationApp, WaypointNavigationApp {
@Override
- public boolean isEnabled(cgWaypoint waypoint) {
+ public boolean isEnabled(Waypoint waypoint) {
return waypoint.getCoords() != null;
}
@@ -21,7 +21,7 @@ class LocusApp extends AbstractLocusApp implements CacheNavigationApp, WaypointN
*
*/
@Override
- public void navigate(Activity activity, cgWaypoint waypoint) {
+ public void navigate(Activity activity, Waypoint waypoint) {
showInLocus(Collections.singletonList(waypoint), true, false, activity);
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/NavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/NavigationApp.java
deleted file mode 100644
index 52d16cf..0000000
--- a/main/src/cgeo/geocaching/apps/cache/navi/NavigationApp.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package cgeo.geocaching.apps.cache.navi;
-
-import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgWaypoint;
-import cgeo.geocaching.apps.App;
-import cgeo.geocaching.geopoint.Geopoint;
-
-import android.app.Activity;
-
-public interface NavigationApp extends App {
- public boolean invoke(final Activity activity,
- final cgCache cache, final cgWaypoint waypoint,
- final Geopoint coords);
-
- boolean isEnabled(final cgWaypoint waypoint);
-
- boolean isEnabled(final Geopoint geopoint);
-}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
index 57a71bb..8effc05 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
@@ -2,12 +2,17 @@ package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
+import cgeo.geocaching.Waypoint;
import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.apps.AbstractAppFactory;
import cgeo.geocaching.apps.App;
+import cgeo.geocaching.apps.cache.CacheBeaconApp;
+import cgeo.geocaching.apps.cache.GccApp;
+import cgeo.geocaching.apps.cache.WhereYouGoApp;
+import cgeo.geocaching.apps.cache.navi.GoogleNavigationApp.GoogleNavigationDrivingApp;
+import cgeo.geocaching.apps.cache.navi.GoogleNavigationApp.GoogleNavigationWalkingApp;
import cgeo.geocaching.geopoint.Geopoint;
import android.app.Activity;
@@ -40,7 +45,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
/** Google Maps */
GOOGLE_MAPS(new GoogleMapsApp(), 6),
/** Google Navigation */
- GOOGLE_NAVIGATION(new GoogleNavigationApp(), 7),
+ GOOGLE_NAVIGATION(new GoogleNavigationDrivingApp(), 7),
/** Google Streetview */
GOOGLE_STREETVIEW(new StreetviewApp(), 8),
/** The external OruxMaps app */
@@ -48,7 +53,19 @@ public final class NavigationAppFactory extends AbstractAppFactory {
/** The external navigon app */
NAVIGON(new NavigonApp(), 10),
/** The external Sygic app */
- SYGIC(new SygicNavigationApp(), 11);
+ SYGIC(new SygicNavigationApp(), 11),
+ /**
+ * Google Navigation in walking mode
+ */
+ GOOGLE_NAVIGATION_WALK(new GoogleNavigationWalkingApp(), 12),
+ /**
+ * Google Maps Directions
+ */
+ GOOGLE_MAPS_DIRECTIONS(new GoogleMapsDirectionApp(), 13),
+
+ CACHE_BEACON(new CacheBeaconApp(), 14),
+ GCC(new GccApp(), 15),
+ WHERE_YOU_GO(new WhereYouGoApp(), 16);
NavigationAppsEnum(App app, int id) {
this.app = app;
@@ -79,7 +96,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
* Default way to handle selection of navigation tool.<br />
* A dialog is created for tool selection and the selected tool is started afterwards.
* <p />
- * Delegates to {@link #showNavigationMenu(Activity, cgCache, cgWaypoint, Geopoint, boolean, boolean)} with
+ * Delegates to {@link #showNavigationMenu(Activity, cgCache, cgeo.geocaching.Waypoint, Geopoint, boolean, boolean)} with
* <code>showInternalMap = true</code> and <code>showDefaultNavigation = false</code>
*
* @param activity
@@ -88,7 +105,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
* @param destination
*/
public static void showNavigationMenu(final Activity activity,
- final cgCache cache, final cgWaypoint waypoint, final Geopoint destination) {
+ final cgCache cache, final Waypoint waypoint, final Geopoint destination) {
showNavigationMenu(activity, cache, waypoint, destination, true, false);
}
@@ -108,14 +125,13 @@ public final class NavigationAppFactory extends AbstractAppFactory {
* @param showDefaultNavigation
* should be <code>false</code> by default
*
- * @see #showNavigationMenu(Activity, cgCache, cgWaypoint, Geopoint)
+ * @see #showNavigationMenu(Activity, cgCache, cgeo.geocaching.Waypoint, Geopoint)
*/
public static void showNavigationMenu(final Activity activity,
- final cgCache cache, final cgWaypoint waypoint, final Geopoint destination,
+ final cgCache 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);
- builder.setIcon(R.drawable.ic_menu_mapmode);
final List<NavigationAppsEnum> items = new ArrayList<NavigationAppFactory.NavigationAppsEnum>();
final int defaultNavigationTool = Settings.getDefaultNavigationTool();
for (NavigationAppsEnum navApp : getInstalledNavigationApps()) {
@@ -146,17 +162,15 @@ public final class NavigationAppFactory extends AbstractAppFactory {
@Override
public void onClick(DialogInterface dialog, int item) {
NavigationAppsEnum selectedItem = adapter.getItem(item);
+ App app = selectedItem.app;
if (cache != null) {
- CacheNavigationApp cacheApp = (CacheNavigationApp) selectedItem.app;
- cacheApp.navigate(activity, cache);
+ navigateCache(activity, cache, app);
}
else if (waypoint != null) {
- WaypointNavigationApp waypointApp = (WaypointNavigationApp) selectedItem.app;
- waypointApp.navigate(activity, waypoint);
+ navigateWaypoint(activity, waypoint, app);
}
else {
- GeopointNavigationApp geopointApp = (GeopointNavigationApp) selectedItem.app;
- geopointApp.navigate(activity, destination);
+ navigateGeopoint(activity, destination, app);
}
}
});
@@ -205,7 +219,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
* Use {@link #onMenuItemSelected(MenuItem, Activity, cgCache)} on
* selection event to start the selected navigation tool.
*
- * <b>Only use this way if {@link #showNavigationMenu(Activity, cgCache, cgWaypoint, Geopoint, boolean, boolean)} is
+ * <b>Only use this way if {@link #showNavigationMenu(Activity, cgCache, cgeo.geocaching.Waypoint, Geopoint, boolean, boolean)} is
* not suitable for the given usecase.</b>
*
* @param menu
@@ -221,7 +235,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
}
}
- public static void addMenuItems(final Menu menu, final cgWaypoint waypoint) {
+ public static void addMenuItems(final Menu menu, final Waypoint waypoint) {
for (NavigationAppsEnum navApp : getInstalledNavigationApps()) {
if (navApp.app instanceof WaypointNavigationApp) {
WaypointNavigationApp waypointApp = (WaypointNavigationApp) navApp.app;
@@ -253,13 +267,13 @@ public final class NavigationAppFactory extends AbstractAppFactory {
}
}
- public static boolean onMenuItemSelected(final MenuItem item, Activity activity, cgWaypoint waypoint) {
+ public static boolean onMenuItemSelected(final MenuItem item, Activity activity, Waypoint waypoint) {
final App menuItem = getAppFromMenuItem(item);
navigateWaypoint(activity, waypoint, menuItem);
return menuItem != null;
}
- private static void navigateWaypoint(Activity activity, cgWaypoint waypoint, App app) {
+ private static void navigateWaypoint(Activity activity, Waypoint waypoint, App app) {
if (app instanceof WaypointNavigationApp) {
WaypointNavigationApp waypointApp = (WaypointNavigationApp) app;
waypointApp.navigate(activity, waypoint);
@@ -313,7 +327,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
* @param activity
* @param waypoint
*/
- public static void startDefaultNavigationApplication(int defaultNavigation, Activity activity, cgWaypoint waypoint) {
+ public static void startDefaultNavigationApplication(int defaultNavigation, Activity activity, Waypoint waypoint) {
if (waypoint == null || waypoint.getCoords() == null) {
ActivityMixin.showToast(activity, cgeoapplication.getInstance().getString(R.string.err_location_unknown));
return;
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java
index a481813..c94c4f4 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
+import cgeo.geocaching.Waypoint;
import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.apps.AbstractApp;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.GeopointFormatter.Format;
@@ -21,7 +21,7 @@ class RMapsApp extends AbstractApp implements CacheNavigationApp, WaypointNaviga
}
@Override
- public void navigate(Activity activity, cgWaypoint waypoint) {
+ public void navigate(Activity activity, Waypoint waypoint) {
navigate(activity, waypoint.getCoords(), waypoint.getLookup(), waypoint.getName());
}
@@ -34,7 +34,7 @@ class RMapsApp extends AbstractApp implements CacheNavigationApp, WaypointNaviga
}
@Override
- public boolean isEnabled(cgWaypoint waypoint) {
+ public boolean isEnabled(Waypoint waypoint) {
return waypoint.getCoords() != null;
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java b/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java
index eb01f23..4c3b87e 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java
@@ -1,8 +1,8 @@
package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
+import cgeo.geocaching.Waypoint;
import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgWaypoint;
import android.app.Activity;
@@ -18,7 +18,7 @@ class StaticMapApp extends AbstractStaticMapsApp {
}
@Override
- public boolean isEnabled(cgWaypoint waypoint) {
+ public boolean isEnabled(Waypoint waypoint) {
return hasStaticMap(waypoint);
}
@@ -28,7 +28,7 @@ class StaticMapApp extends AbstractStaticMapsApp {
}
@Override
- public void navigate(Activity activity, cgWaypoint waypoint) {
+ public void navigate(Activity activity, Waypoint waypoint) {
invokeStaticMaps(activity, null, waypoint, false);
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/WaypointNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/WaypointNavigationApp.java
index 7d3a706..c26ec3e 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/WaypointNavigationApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/WaypointNavigationApp.java
@@ -1,6 +1,6 @@
package cgeo.geocaching.apps.cache.navi;
-import cgeo.geocaching.cgWaypoint;
+import cgeo.geocaching.Waypoint;
import android.app.Activity;
@@ -9,7 +9,7 @@ import android.app.Activity;
*
*/
public interface WaypointNavigationApp {
- void navigate(final Activity activity, final cgWaypoint waypoint);
+ void navigate(final Activity activity, final Waypoint waypoint);
- boolean isEnabled(final cgWaypoint waypoint);
+ boolean isEnabled(final Waypoint waypoint);
}