aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java')
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java44
1 files changed, 27 insertions, 17 deletions
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java b/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
index 1576617..5275d53 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
@@ -4,11 +4,13 @@ import cgeo.geocaching.R;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.cgeonavigate;
+import cgeo.geocaching.apps.AbstractApp;
import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.ui.Formatter;
import android.app.Activity;
-class CompassApp extends AbstractNavigationApp {
+class CompassApp extends AbstractApp implements CacheNavigationApp, WaypointNavigationApp, GeopointNavigationApp {
CompassApp() {
super(getString(R.string.compass_title), null);
@@ -20,22 +22,30 @@ class CompassApp extends AbstractNavigationApp {
}
@Override
- public boolean invoke(Activity activity, cgCache cache, cgWaypoint waypoint, final Geopoint coords) {
-
- if (cache != null && cache.getGeocode() != null) {
- cgeonavigate.startActivity(activity, cache.getGeocode(), cache.getName(), cache.getCoords(), null);
- return true;
- }
- if (waypoint != null && waypoint.getCoords() != null) {
- cgeonavigate.startActivity(activity, waypoint.getPrefix() + "/" + waypoint.getLookup(), waypoint.getName(), waypoint.getCoords(), null);
- return true;
- }
- if (coords != null) {
- cgeonavigate.startActivity(activity, getString(R.string.navigation_direct_navigation), getString(R.string.navigation_target), coords, null);
- return true;
- }
- // search is not handled here
- return false;
+ public void navigate(Activity activity, Geopoint coords) {
+ cgeonavigate.startActivity(activity, getString(R.string.navigation_direct_navigation), getString(R.string.navigation_target), coords, null);
+ }
+
+ @Override
+ public void navigate(Activity activity, cgWaypoint waypoint) {
+ cgeonavigate.startActivity(activity, waypoint.getPrefix() + "/" + waypoint.getLookup(), waypoint.getName(), waypoint.getCoords(), null,
+ waypoint.getWaypointType().getL10n());
+ }
+
+ @Override
+ public boolean isEnabled(cgWaypoint waypoint) {
+ return waypoint.getCoords() != null;
+ }
+
+ @Override
+ public void navigate(Activity activity, cgCache cache) {
+ cgeonavigate.startActivity(activity, cache.getGeocode(), cache.getName(), cache.getCoords(), null,
+ Formatter.formatCacheInfoShort(cache));
+ }
+
+ @Override
+ public boolean isEnabled(cgCache cache) {
+ return cache.getGeocode() != null;
}
} \ No newline at end of file