diff options
Diffstat (limited to 'main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java')
| -rw-r--r-- | main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java | 44 |
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 |
