diff options
Diffstat (limited to 'main/src/cgeo/geocaching/apps')
7 files changed, 92 insertions, 38 deletions
diff --git a/main/src/cgeo/geocaching/apps/AbstractLocusApp.java b/main/src/cgeo/geocaching/apps/AbstractLocusApp.java index d6c2fe6..8e9181d 100644 --- a/main/src/cgeo/geocaching/apps/AbstractLocusApp.java +++ b/main/src/cgeo/geocaching/apps/AbstractLocusApp.java @@ -6,6 +6,7 @@ import cgeo.geocaching.Waypoint; import cgeo.geocaching.enumerations.CacheSize; import cgeo.geocaching.enumerations.CacheType; import cgeo.geocaching.enumerations.WaypointType; +import cgeo.geocaching.utils.SynchronizedDateFormat; import menion.android.locus.addon.publiclib.DisplayData; import menion.android.locus.addon.publiclib.LocusUtils; @@ -14,8 +15,6 @@ import menion.android.locus.addon.publiclib.geoData.PointGeocachingData; import menion.android.locus.addon.publiclib.geoData.PointGeocachingDataWaypoint; import menion.android.locus.addon.publiclib.geoData.PointsData; -import org.apache.commons.lang3.time.FastDateFormat; - import android.app.Activity; import android.location.Location; @@ -30,7 +29,7 @@ import java.util.Locale; * @see <a href="http://forum.asamm.cz/viewtopic.php?f=29&t=767">Locus forum</a> */ public abstract class AbstractLocusApp extends AbstractApp { - private static final FastDateFormat ISO8601DATE = FastDateFormat.getInstance("yyyy-MM-dd'T'", Locale.US); + private static final SynchronizedDateFormat ISO8601DATE = new SynchronizedDateFormat("yyyy-MM-dd'T'", Locale.US); protected AbstractLocusApp(final String text, int id, final String intent) { super(text, id, intent); @@ -122,7 +121,7 @@ public abstract class AbstractLocusApp extends AbstractApp { pg.placedBy = cache.getOwnerDisplayName(); final Date hiddenDate = cache.getHiddenDate(); if (hiddenDate != null) { - pg.hidden = ISO8601DATE.format(hiddenDate.getTime()); + pg.hidden = ISO8601DATE.format(hiddenDate); } int locusId = toLocusType(cache.getType()); if (locusId != NO_LOCUS_ID) { diff --git a/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java index a1c752c..ec9705c 100644 --- a/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java +++ b/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java @@ -8,6 +8,7 @@ import cgeo.geocaching.apps.AbstractApp; import cgeo.geocaching.geopoint.Geopoint; import android.app.Activity; +import android.content.Intent; /** * navigation app for simple point navigation (no differentiation between cache/waypoint/point) @@ -49,4 +50,17 @@ abstract class AbstractPointNavigationApp extends AbstractApp implements CacheNa public boolean isEnabled(Waypoint waypoint) { return waypoint.getCoords() != null; } + + protected static void addIntentExtras(final Intent intent, final Waypoint waypoint) { + intent.putExtra("name", waypoint.getName()); + intent.putExtra("code", waypoint.getGeocode()); + } + + protected static void addIntentExtras(final Intent intent, 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()); + } } 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); +} diff --git a/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java index 60d6e31..819638c 100644 --- a/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java +++ b/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java @@ -1,6 +1,8 @@ package cgeo.geocaching.apps.cache.navi; +import cgeo.geocaching.Geocache; import cgeo.geocaching.R; +import cgeo.geocaching.Waypoint; import cgeo.geocaching.activity.ActivityMixin; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.utils.Log; @@ -22,10 +24,15 @@ class GoogleMapsApp extends AbstractPointNavigationApp { @Override public void navigate(Activity activity, Geopoint point) { - // INFO: q parameter works with Google Maps, but breaks cooperation with all other apps + navigate(activity, point, activity.getString(R.string.waypoint)); + } + + private static void navigate(Activity activity, Geopoint point, String label) { try { - activity.startActivity(new Intent(Intent.ACTION_VIEW, - Uri.parse("geo:" + point.getLatitude() + "," + point.getLongitude()))); + final String geoLocation = "geo:" + point.getLatitude() + "," + point.getLongitude(); + final String query = point.getLatitude() + "," + point.getLongitude() + "(" + label + ")"; + final String uriString = geoLocation + "?q=" + Uri.encode(query); + activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(uriString))); return; } catch (RuntimeException e) { // nothing @@ -35,4 +42,13 @@ class GoogleMapsApp extends AbstractPointNavigationApp { ActivityMixin.showToast(activity, getString(R.string.err_application_no)); } + @Override + public void navigate(Activity activity, Geocache cache) { + navigate(activity, cache.getCoords(), cache.getName()); + } + + @Override + public void navigate(Activity activity, Waypoint waypoint) { + navigate(activity, waypoint.getCoords(), waypoint.getName()); + } } diff --git a/main/src/cgeo/geocaching/apps/cache/navi/PebbleApp.java b/main/src/cgeo/geocaching/apps/cache/navi/PebbleApp.java index 8ba3bef..ac83085 100644 --- a/main/src/cgeo/geocaching/apps/cache/navi/PebbleApp.java +++ b/main/src/cgeo/geocaching/apps/cache/navi/PebbleApp.java @@ -1,17 +1,15 @@ package cgeo.geocaching.apps.cache.navi;
-import cgeo.geocaching.Geocache;
import cgeo.geocaching.R;
import cgeo.geocaching.geopoint.Geopoint;
-import android.app.Activity;
import android.content.Intent;
/**
* Application for communication with the Pebble watch.
- *
+ *
*/
-class PebbleApp extends AbstractPointNavigationApp {
+class PebbleApp extends AbstractRadarApp {
private static final String INTENT = "com.webmajstr.pebble_gc.NAVIGATE_TO";
private static final String PACKAGE_NAME = "com.webmajstr.pebble_gc";
@@ -21,24 +19,8 @@ class PebbleApp extends AbstractPointNavigationApp { }
@Override
- public void navigate(Activity activity, Geopoint point) {
- final Intent pebbleIntent = new Intent(INTENT);
- pebbleIntent.putExtra("latitude", point.getLatitude());
- pebbleIntent.putExtra("longitude", point.getLongitude());
- activity.startActivity(pebbleIntent);
+ protected void addCoordinates(final Intent intent, final Geopoint coords) {
+ intent.putExtra("latitude", coords.getLatitude());
+ intent.putExtra("longitude", coords.getLongitude());
}
-
- @Override
- public void navigate(Activity activity, Geocache cache) {
- final Intent pebbleIntent = new Intent(INTENT);
- pebbleIntent.putExtra("latitude", cache.getCoords().getLatitude());
- pebbleIntent.putExtra("longitude", cache.getCoords().getLongitude());
- pebbleIntent.putExtra("difficulty", cache.getDifficulty());
- pebbleIntent.putExtra("terrain", cache.getTerrain());
- pebbleIntent.putExtra("name", cache.getName());
- pebbleIntent.putExtra("code", cache.getGeocode());
- pebbleIntent.putExtra("size", cache.getSize().getL10n());
- activity.startActivity(pebbleIntent);
- }
-
}
\ No newline at end of file diff --git a/main/src/cgeo/geocaching/apps/cache/navi/RadarApp.java b/main/src/cgeo/geocaching/apps/cache/navi/RadarApp.java index ffa6650..41cf2d8 100644 --- a/main/src/cgeo/geocaching/apps/cache/navi/RadarApp.java +++ b/main/src/cgeo/geocaching/apps/cache/navi/RadarApp.java @@ -3,10 +3,9 @@ package cgeo.geocaching.apps.cache.navi; import cgeo.geocaching.R; import cgeo.geocaching.geopoint.Geopoint; -import android.app.Activity; import android.content.Intent; -class RadarApp extends AbstractPointNavigationApp { +class RadarApp extends AbstractRadarApp { private static final String INTENT = "com.google.android.radar.SHOW_RADAR"; private static final String PACKAGE_NAME = "com.eclipsim.gpsstatus2"; @@ -16,10 +15,9 @@ class RadarApp extends AbstractPointNavigationApp { } @Override - public void navigate(Activity activity, Geopoint point) { - final Intent radarIntent = new Intent(INTENT); - radarIntent.putExtra("latitude", (float) point.getLatitude()); - radarIntent.putExtra("longitude", (float) point.getLongitude()); - activity.startActivity(radarIntent); + protected void addCoordinates(final Intent intent, final Geopoint coords) { + intent.putExtra("latitude", (float) coords.getLatitude()); + intent.putExtra("longitude", (float) coords.getLongitude()); } + }
\ No newline at end of file diff --git a/main/src/cgeo/geocaching/apps/cachelist/CacheListApp.java b/main/src/cgeo/geocaching/apps/cachelist/CacheListApp.java index ac5809e..40c4d92 100644 --- a/main/src/cgeo/geocaching/apps/cachelist/CacheListApp.java +++ b/main/src/cgeo/geocaching/apps/cachelist/CacheListApp.java @@ -1,7 +1,7 @@ package cgeo.geocaching.apps.cachelist; -import cgeo.geocaching.SearchResult; import cgeo.geocaching.Geocache; +import cgeo.geocaching.SearchResult; import cgeo.geocaching.apps.App; import android.app.Activity; |
