aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/apps/cache/navi/AbstractRadarApp.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/apps/cache/navi/AbstractRadarApp.java')
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/AbstractRadarApp.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/AbstractRadarApp.java b/main/src/cgeo/geocaching/apps/cache/navi/AbstractRadarApp.java
new file mode 100644
index 0000000..6c6ffda
--- /dev/null
+++ b/main/src/cgeo/geocaching/apps/cache/navi/AbstractRadarApp.java
@@ -0,0 +1,45 @@
+package cgeo.geocaching.apps.cache.navi;
+
+import cgeo.geocaching.Geocache;
+import cgeo.geocaching.Waypoint;
+import cgeo.geocaching.geopoint.Geopoint;
+
+import android.app.Activity;
+import android.content.Intent;
+
+public abstract class AbstractRadarApp extends AbstractPointNavigationApp {
+
+ private final String intentAction;
+
+ protected AbstractRadarApp(final String name, final int id, final String intent, final String packageName) {
+ super(name, id, intent, packageName);
+ this.intentAction = intent;
+ }
+
+ private Intent createIntent(final Geopoint point) {
+ final Intent intent = new Intent(intentAction);
+ addCoordinates(intent, point);
+ return intent;
+ }
+
+ @Override
+ public void navigate(final Activity activity, final Geopoint point) {
+ activity.startActivity(createIntent(point));
+ }
+
+ @Override
+ public void navigate(final Activity activity, final Geocache cache) {
+ final Intent intent = createIntent(cache.getCoords());
+ addIntentExtras(intent, cache);
+ activity.startActivity(intent);
+ }
+
+ @Override
+ public void navigate(final Activity activity, final Waypoint waypoint) {
+ final Intent intent = createIntent(waypoint.getCoords());
+ addIntentExtras(intent, waypoint);
+ activity.startActivity(intent);
+ }
+
+ protected abstract void addCoordinates(final Intent intent, final Geopoint point);
+}