package cgeo.geocaching.apps.navi; import cgeo.geocaching.apps.AbstractApp; import cgeo.geocaching.location.Geopoint; import cgeo.geocaching.models.Geocache; import cgeo.geocaching.models.Waypoint; import android.content.Context; import android.content.Intent; import android.support.annotation.NonNull; import android.support.annotation.Nullable; /** * navigation app for simple point navigation (no differentiation between cache/waypoint/point) */ abstract class AbstractPointNavigationApp extends AbstractApp implements CacheNavigationApp, WaypointNavigationApp, GeopointNavigationApp { protected AbstractPointNavigationApp(@NonNull final String name, @Nullable final String intent) { super(name, intent); } protected AbstractPointNavigationApp(@NonNull final String name, @Nullable final String intent, @Nullable final String packageName) { super(name, intent, packageName); } @Override public void navigate(@NonNull final Context context, @NonNull final Geocache cache) { final Geopoint coords = cache.getCoords(); assert coords != null; // asserted by caller navigate(context, coords); } @Override public void navigate(@NonNull final Context context, @NonNull final Waypoint waypoint) { final Geopoint coords = waypoint.getCoords(); assert coords != null; // asserted by caller navigate(context, coords); } @Override public boolean isEnabled(@NonNull final Geocache cache) { return cache.getCoords() != null; } @Override public boolean isEnabled(@NonNull final Waypoint waypoint) { return waypoint.getCoords() != null; } protected static void addIntentExtras(@NonNull final Intent intent, @NonNull final Waypoint waypoint) { intent.putExtra("name", waypoint.getName()); intent.putExtra("code", waypoint.getGeocode()); } protected static void addIntentExtras(@NonNull final Intent intent, @NonNull final Geocache cache) { intent.putExtra("difficulty", cache.getDifficulty()); intent.putExtra("terrain", cache.getTerrain()); intent.putExtra("name", cache.getName()); intent.putExtra("code", cache.getGeocode()); intent.putExtra("size", cache.getSize().getL10n()); } }