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