aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/apps/cache
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2012-01-08 10:51:10 +0100
committerBananeweizen <bananeweizen@gmx.de>2012-01-08 10:51:10 +0100
commitcdd9939761c09dc0b00c825cfbab80aa198348f2 (patch)
treec5edecedd56901860a274739e2a90418284fced2 /main/src/cgeo/geocaching/apps/cache
parente9ddb7e7abd1406e77637c15831aa4f8b52ce772 (diff)
downloadcgeo-cdd9939761c09dc0b00c825cfbab80aa198348f2.zip
cgeo-cdd9939761c09dc0b00c825cfbab80aa198348f2.tar.gz
cgeo-cdd9939761c09dc0b00c825cfbab80aa198348f2.tar.bz2
refactoring: cleanup for #945
* remove duplicated code * remove all access to resources via method parameters
Diffstat (limited to 'main/src/cgeo/geocaching/apps/cache')
-rw-r--r--main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java2
-rw-r--r--main/src/cgeo/geocaching/apps/cache/GccApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java16
-rw-r--r--main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java6
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/AbstractInternalMap.java15
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java59
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java10
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java46
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java14
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java18
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java37
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/NavigationApp.java2
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java61
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/NavigonApp.java59
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/OruxMapsApp.java50
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java39
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/RadarApp.java39
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java18
-rw-r--r--main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java45
19 files changed, 208 insertions, 334 deletions
diff --git a/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java b/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java
index 8d0d5ae..f4e92ac 100644
--- a/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java
@@ -23,7 +23,7 @@ abstract class AbstractGeneralApp extends AbstractApp implements GeneralApp {
if (packageName == null) {
return false;
}
- Intent intent = getLaunchIntent(activity);
+ final Intent intent = getLaunchIntent(activity);
if (intent != null) {
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
activity.startActivity(intent);
diff --git a/main/src/cgeo/geocaching/apps/cache/GccApp.java b/main/src/cgeo/geocaching/apps/cache/GccApp.java
index e05ba20..9000d9e 100644
--- a/main/src/cgeo/geocaching/apps/cache/GccApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/GccApp.java
@@ -2,10 +2,8 @@ package cgeo.geocaching.apps.cache;
import cgeo.geocaching.R;
-import android.content.res.Resources;
-
class GccApp extends AbstractGeneralApp {
- GccApp(final Resources res) {
- super(res.getString(R.string.cache_menu_gcc), "eisbehr.gcc");
+ GccApp() {
+ super(getString(R.string.cache_menu_gcc), "eisbehr.gcc");
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java b/main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java
index ad72dc9..a845108 100644
--- a/main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java
+++ b/main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java
@@ -1,13 +1,12 @@
package cgeo.geocaching.apps.cache;
-import cgeo.geocaching.cgCache;
import cgeo.geocaching.Settings;
+import cgeo.geocaching.cgCache;
import cgeo.geocaching.apps.AbstractAppFactory;
import org.apache.commons.lang3.ArrayUtils;
import android.app.Activity;
-import android.content.res.Resources;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@@ -15,17 +14,16 @@ import android.view.MenuItem;
public final class GeneralAppsFactory extends AbstractAppFactory {
private static GeneralApp[] apps = new GeneralApp[] {};
- private static GeneralApp[] getGeneralApps(Resources res) {
+ private static GeneralApp[] getGeneralApps() {
if (ArrayUtils.isEmpty(apps)) {
- apps = new GeneralApp[] { new GccApp(res),
- new WhereYouGoApp(res) };
+ apps = new GeneralApp[] { new GccApp(),
+ new WhereYouGoApp() };
}
return apps;
}
- public static void addMenuItems(Menu menu, Activity activity,
- Resources res, cgCache cache) {
- for (GeneralApp app : getGeneralApps(res)) {
+ public static void addMenuItems(Menu menu, Activity activity, cgCache cache) {
+ for (GeneralApp app : getGeneralApps()) {
if (app.isInstalled(activity) && app.isEnabled(cache)) {
menu.add(0, app.getId(), 0, app.getName());
}
@@ -34,7 +32,7 @@ public final class GeneralAppsFactory extends AbstractAppFactory {
public static boolean onMenuItemSelected(final MenuItem item,
Activity activity, cgCache cache) {
- GeneralApp app = (GeneralApp) getAppFromMenuItem(item, apps);
+ final GeneralApp app = (GeneralApp) getAppFromMenuItem(item, apps);
if (app != null) {
try {
return app.invoke(activity, cache);
diff --git a/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java b/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java
index ec6079c..8c16eaf 100644
--- a/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java
@@ -4,11 +4,9 @@ import cgeo.geocaching.R;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.enumerations.CacheType;
-import android.content.res.Resources;
-
class WhereYouGoApp extends AbstractGeneralApp {
- WhereYouGoApp(Resources res) {
- super(res.getString(R.string.cache_menu_whereyougo), "menion.android.whereyougo");
+ WhereYouGoApp() {
+ super(getString(R.string.cache_menu_whereyougo), "menion.android.whereyougo");
}
@Override
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/AbstractInternalMap.java b/main/src/cgeo/geocaching/apps/cache/navi/AbstractInternalMap.java
deleted file mode 100644
index a1ffc89..0000000
--- a/main/src/cgeo/geocaching/apps/cache/navi/AbstractInternalMap.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package cgeo.geocaching.apps.cache.navi;
-
-import android.content.Context;
-
-abstract class AbstractInternalMap extends AbstractNavigationApp {
-
- protected AbstractInternalMap(String name, String intent) {
- super(name, intent);
- }
-
- @Override
- public boolean isInstalled(Context context) {
- return true;
- }
-}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java
new file mode 100644
index 0000000..dc51a15
--- /dev/null
+++ b/main/src/cgeo/geocaching/apps/cache/navi/AbstractPointNavigationApp.java
@@ -0,0 +1,59 @@
+package cgeo.geocaching.apps.cache.navi;
+
+import cgeo.geocaching.SearchResult;
+import cgeo.geocaching.cgCache;
+import cgeo.geocaching.cgGeo;
+import cgeo.geocaching.cgWaypoint;
+import cgeo.geocaching.geopoint.Geopoint;
+
+import android.app.Activity;
+
+/**
+ * navigation app for simple point navigation (no differentiation between cache/waypoint/point)
+ *
+ * @author bananeweizen
+ *
+ */
+abstract class AbstractPointNavigationApp extends AbstractNavigationApp {
+
+ protected AbstractPointNavigationApp(String name, String intent) {
+ super(name, intent);
+ }
+
+ protected AbstractPointNavigationApp(String name, String intent, String packageName) {
+ super(name, intent, packageName);
+ }
+
+ @Override
+ public final boolean invoke(cgGeo geo, Activity activity, cgCache cache, SearchResult search, cgWaypoint waypoint, Geopoint coords) {
+ if (cache == null && waypoint == null && coords == null) {
+ return false;
+ }
+
+ try {
+ if (isInstalled(activity)) {
+ final Geopoint point = getCoordinates(cache, waypoint, coords);
+ if (point != null) {
+ navigate(activity, point);
+ return true;
+ }
+ }
+ } catch (Exception e) {
+ // nothing
+ }
+
+ return false;
+ }
+
+ protected abstract void navigate(Activity activity, Geopoint point);
+
+ private static Geopoint getCoordinates(cgCache cache, cgWaypoint waypoint, Geopoint coords) {
+ if (cache != null && cache.getCoords() != null) {
+ return cache.getCoords();
+ }
+ else if (waypoint != null && waypoint.getCoords() != null) {
+ return waypoint.getCoords();
+ }
+ return coords;
+ }
+} \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java b/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
index 2c569a7..3442f9a 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java
@@ -10,12 +10,11 @@ import cgeo.geocaching.geopoint.Geopoint;
import android.app.Activity;
import android.content.Context;
-import android.content.res.Resources;
class CompassApp extends AbstractNavigationApp {
- CompassApp(final Resources res) {
- super(res.getString(R.string.compass_title), null);
+ CompassApp() {
+ super(getString(R.string.compass_title), null);
}
@Override
@@ -24,8 +23,7 @@ class CompassApp extends AbstractNavigationApp {
}
@Override
- public boolean invoke(cgGeo geo, Activity activity, Resources res,
- cgCache cache,
+ public boolean invoke(cgGeo geo, Activity activity, cgCache cache,
final SearchResult search, cgWaypoint waypoint, final Geopoint coords) {
if (cache != null && cache.getGeocode() != null) {
@@ -37,7 +35,7 @@ class CompassApp extends AbstractNavigationApp {
return true;
}
if (coords != null) {
- cgeonavigate.startActivity(activity, res.getString(R.string.navigation_direct_navigation), res.getString(R.string.navigation_target), 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
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java
index 1a80b07..649823a 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/GoogleMapsApp.java
@@ -2,24 +2,19 @@ package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
import cgeo.geocaching.Settings;
-import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgGeo;
-import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.geopoint.Geopoint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
-import android.content.res.Resources;
import android.net.Uri;
import android.util.Log;
-class GoogleMapsApp extends AbstractNavigationApp {
+class GoogleMapsApp extends AbstractPointNavigationApp {
- GoogleMapsApp(final Resources res) {
- super(res.getString(R.string.cache_menu_map_ext), null);
+ GoogleMapsApp() {
+ super(getString(R.string.cache_menu_map_ext), null);
}
@Override
@@ -27,40 +22,19 @@ class GoogleMapsApp extends AbstractNavigationApp {
return true;
}
- public boolean invoke(cgGeo geo, Activity activity, Resources res,
- cgCache cache,
- final SearchResult search, cgWaypoint waypoint, final Geopoint coords) {
- if (cache == null && waypoint == null && coords == null) {
- return false;
- }
-
+ @Override
+ protected void navigate(Activity activity, Geopoint point) {
+ // INFO: q parameter works with Google Maps, but breaks cooperation with all other apps
try {
- if (cache != null && cache.getCoords() != null) {
- startActivity(activity, cache.getCoords());
- } else if (waypoint != null && waypoint.getCoords() != null) {
- startActivity(activity, waypoint.getCoords());
- } else if (coords != null) {
- startActivity(activity, coords);
- }
-
- return true;
+ activity.startActivity(new Intent(Intent.ACTION_VIEW,
+ Uri.parse("geo:" + point.getLatitude() + "," + point.getLongitude())));
+ return;
} catch (Exception e) {
// nothing
}
-
Log.i(Settings.tag, "cgBase.runExternalMap: No maps application available.");
- if (res != null) {
- ActivityMixin.showToast(activity, res.getString(R.string.err_application_no));
- }
-
- return false;
- }
-
- private static void startActivity(Activity activity, final Geopoint coords) {
- activity.startActivity(new Intent(Intent.ACTION_VIEW,
- Uri.parse("geo:" + coords.getLatitude() + "," + coords.getLongitude())));
- // INFO: q parameter works with Google Maps, but breaks cooperation with all other apps
+ ActivityMixin.showToast(activity, getString(R.string.err_application_no));
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java
index d30318d..84bfa41 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/GoogleNavigationApp.java
@@ -1,10 +1,10 @@
package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
+import cgeo.geocaching.SearchResult;
import cgeo.geocaching.Settings;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgGeo;
-import cgeo.geocaching.SearchResult;
import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.geopoint.Geopoint;
@@ -12,14 +12,13 @@ import cgeo.geocaching.geopoint.Geopoint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
-import android.content.res.Resources;
import android.net.Uri;
import android.util.Log;
class GoogleNavigationApp extends AbstractNavigationApp {
- GoogleNavigationApp(final Resources res) {
- super(res.getString(R.string.cache_menu_tbt), null);
+ GoogleNavigationApp() {
+ super(getString(R.string.cache_menu_tbt), null);
}
@Override
@@ -28,8 +27,7 @@ class GoogleNavigationApp extends AbstractNavigationApp {
}
@Override
- public boolean invoke(final cgGeo geo, final Activity activity, final Resources res,
- final cgCache cache,
+ public boolean invoke(final cgGeo geo, final Activity activity, final cgCache cache,
final SearchResult search, final cgWaypoint waypoint, final Geopoint coords) {
if (activity == null) {
return false;
@@ -47,9 +45,7 @@ class GoogleNavigationApp extends AbstractNavigationApp {
}
if (!navigationResult) {
- if (res != null) {
- ActivityMixin.showToast(activity, res.getString(R.string.err_navigation_no));
- }
+ ActivityMixin.showToast(activity, getString(R.string.err_navigation_no));
return false;
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java b/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java
index 75cad9c..f8d5c0f 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/InternalMap.java
@@ -1,26 +1,25 @@
package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
+import cgeo.geocaching.SearchResult;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgGeo;
-import cgeo.geocaching.SearchResult;
import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.enumerations.WaypointType;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.maps.CGeoMap;
import android.app.Activity;
-import android.content.res.Resources;
+import android.content.Context;
-class InternalMap extends AbstractInternalMap {
+class InternalMap extends AbstractNavigationApp {
- InternalMap(Resources res) {
- super(res.getString(R.string.cache_menu_map), null);
+ InternalMap() {
+ super(getString(R.string.cache_menu_map), null);
}
@Override
- public boolean invoke(cgGeo geo, Activity activity, Resources res,
- cgCache cache,
+ public boolean invoke(cgGeo geo, Activity activity, cgCache cache,
final SearchResult search, cgWaypoint waypoint, final Geopoint coords) {
if (search != null) {
CGeoMap.startActivitySearch(activity, search, cache != null ? cache.getGeocode() : null, true);
@@ -38,4 +37,9 @@ class InternalMap extends AbstractInternalMap {
return true;
}
+ @Override
+ public boolean isInstalled(Context context) {
+ return true;
+ }
+
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java b/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java
index cec1597..976292b 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/LocusApp.java
@@ -1,23 +1,18 @@
package cgeo.geocaching.apps.cache.navi;
+import cgeo.geocaching.SearchResult;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgGeo;
-import cgeo.geocaching.SearchResult;
import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.apps.AbstractLocusApp;
import cgeo.geocaching.geopoint.Geopoint;
import android.app.Activity;
-import android.content.res.Resources;
import java.util.ArrayList;
class LocusApp extends AbstractLocusApp implements NavigationApp {
- LocusApp(Resources res) {
- super(res);
- }
-
/**
* Show a single cache with waypoints or a single waypoint in Locus.
* This method constructs a list of cache and waypoints only.
@@ -26,32 +21,22 @@ class LocusApp extends AbstractLocusApp implements NavigationApp {
* @author koem
*/
@Override
- public boolean invoke(cgGeo geo, Activity activity, Resources res, cgCache cache,
+ public boolean invoke(cgGeo geo, Activity activity, cgCache cache,
final SearchResult search, cgWaypoint waypoint, final Geopoint coords) {
- if (cache == null && waypoint == null && coords == null) {
- return false;
- }
+ final ArrayList<Object> points = new ArrayList<Object>();
- if (isInstalled(activity)) { // TODO: is this if-statement really necessary?
- final ArrayList<Object> points = new ArrayList<Object>();
-
- // add cache if present
- if (cache != null && cache.getCoords() != null) {
- points.add(cache);
- }
-
- // add waypoint if present
- if (waypoint != null && waypoint.getCoords() != null) {
- points.add(waypoint);
- }
-
- showInLocus(points, true, activity);
+ // add cache if present
+ if (cache != null && cache.getCoords() != null) {
+ points.add(cache);
+ }
- return true;
+ // add waypoint if present
+ if (waypoint != null && waypoint.getCoords() != null) {
+ points.add(waypoint);
}
- return false;
+ return showInLocus(points, true, activity);
}
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/NavigationApp.java b/main/src/cgeo/geocaching/apps/cache/navi/NavigationApp.java
index bb4551e..333d1b5 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/NavigationApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/NavigationApp.java
@@ -8,11 +8,9 @@ import cgeo.geocaching.apps.App;
import cgeo.geocaching.geopoint.Geopoint;
import android.app.Activity;
-import android.content.res.Resources;
public interface NavigationApp extends App {
public boolean invoke(final cgGeo geo, final Activity activity,
- final Resources res,
final cgCache cache,
final SearchResult search, final cgWaypoint waypoint,
final Geopoint coords);
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
index 234b182..bfda2ea 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java
@@ -11,7 +11,6 @@ import cgeo.geocaching.geopoint.Geopoint;
import org.apache.commons.lang3.ArrayUtils;
import android.app.Activity;
-import android.content.res.Resources;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@@ -22,33 +21,32 @@ import java.util.List;
public final class NavigationAppFactory extends AbstractAppFactory {
private static NavigationApp[] apps = new NavigationApp[] {};
- private static NavigationApp[] getNavigationApps(Resources res) {
+ private static NavigationApp[] getNavigationApps() {
if (ArrayUtils.isEmpty(apps)) {
apps = new NavigationApp[] {
- new CompassApp(res),
- new RadarApp(res),
- new InternalMap(res),
- new StaticMapApp(res),
- new LocusApp(res),
- new RMapsApp(res),
- new GoogleMapsApp(res),
- new GoogleNavigationApp(res),
- new StreetviewApp(res),
- new OruxMapsApp(res),
+ new CompassApp(),
+ new RadarApp(),
+ new InternalMap(),
+ new StaticMapApp(),
+ new LocusApp(),
+ new RMapsApp(),
+ new GoogleMapsApp(),
+ new GoogleNavigationApp(),
+ new StreetviewApp(),
+ new OruxMapsApp(),
new NavigonApp() };
}
return apps;
}
- public static void addMenuItems(final Menu menu, final Activity activity,
- final Resources res) {
- addMenuItems(menu, activity, res, true, false);
+ public static void addMenuItems(final Menu menu, final Activity activity) {
+ addMenuItems(menu, activity, true, false);
}
public static void addMenuItems(final Menu menu, final Activity activity,
- final Resources res, final boolean showInternalMap, final boolean showDefaultNavigation) {
- int defaultNavigationTool = Settings.getDefaultNavigationTool();
- for (NavigationApp app : getInstalledNavigationApps(activity, res)) {
+ final boolean showInternalMap, final boolean showDefaultNavigation) {
+ final int defaultNavigationTool = Settings.getDefaultNavigationTool();
+ for (NavigationApp app : getInstalledNavigationApps(activity)) {
if ((showInternalMap || !(app instanceof InternalMap)) &&
(showDefaultNavigation || defaultNavigationTool != app.getId())) {
menu.add(0, app.getId(), 0, app.getName());
@@ -56,9 +54,9 @@ public final class NavigationAppFactory extends AbstractAppFactory {
}
}
- public static List<NavigationApp> getInstalledNavigationApps(final Activity activity, final Resources res) {
- List<NavigationApp> installedNavigationApps = new ArrayList<NavigationApp>();
- for (NavigationApp app : getNavigationApps(res)) {
+ public static List<NavigationApp> getInstalledNavigationApps(final Activity activity) {
+ final List<NavigationApp> installedNavigationApps = new ArrayList<NavigationApp>();
+ for (NavigationApp app : getNavigationApps()) {
if (app.isInstalled(activity)) {
installedNavigationApps.add(app);
}
@@ -66,9 +64,9 @@ public final class NavigationAppFactory extends AbstractAppFactory {
return installedNavigationApps;
}
- public static int getOrdinalFromId(final Activity activity, final Resources res, final int id) {
+ public static int getOrdinalFromId(final Activity activity, final int id) {
int ordinal = 0;
- for (NavigationApp app : getInstalledNavigationApps(activity, res)) {
+ for (NavigationApp app : getInstalledNavigationApps(activity)) {
if (app.getId() == id) {
return ordinal;
}
@@ -78,13 +76,16 @@ public final class NavigationAppFactory extends AbstractAppFactory {
}
public static boolean onMenuItemSelected(final MenuItem item,
- final cgGeo geo, Activity activity, Resources res,
- cgCache cache,
+ final cgGeo geo, Activity activity, cgCache cache,
final SearchResult search, cgWaypoint waypoint, final Geopoint destination) {
- NavigationApp app = (NavigationApp) getAppFromMenuItem(item, apps);
+ if (cache == null && waypoint == null && destination == null) {
+ return false;
+ }
+
+ final NavigationApp app = (NavigationApp) getAppFromMenuItem(item, apps);
if (app != null) {
try {
- return app.invoke(geo, activity, res, cache,
+ return app.invoke(geo, activity, cache,
search, waypoint, destination);
} catch (Exception e) {
Log.e(Settings.tag, "NavigationAppFactory.onMenuItemSelected: " + e.toString());
@@ -93,12 +94,12 @@ public final class NavigationAppFactory extends AbstractAppFactory {
return false;
}
- public static void startDefaultNavigationApplication(final cgGeo geo, Activity activity, Resources res, cgCache cache,
+ public static void startDefaultNavigationApplication(final cgGeo geo, Activity activity, cgCache cache,
final SearchResult search, cgWaypoint waypoint, final Geopoint destination) {
final int defaultNavigationTool = Settings.getDefaultNavigationTool();
NavigationApp app = null;
- List<NavigationApp> installedNavigationApps = getInstalledNavigationApps(activity, res);
+ final List<NavigationApp> installedNavigationApps = getInstalledNavigationApps(activity);
if (defaultNavigationTool == 0) {
// assume that 0 is the compass-app
@@ -114,7 +115,7 @@ public final class NavigationAppFactory extends AbstractAppFactory {
if (app != null) {
try {
- app.invoke(geo, activity, res, cache, search, waypoint, destination);
+ app.invoke(geo, activity, cache, search, waypoint, destination);
} catch (Exception e) {
Log.e(Settings.tag, "NavigationAppFactory.startDefaultNavigationApplication: " + e.toString());
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/NavigonApp.java b/main/src/cgeo/geocaching/apps/cache/navi/NavigonApp.java
index 98d95ef..69f63dc 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/NavigonApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/NavigonApp.java
@@ -1,16 +1,11 @@
package cgeo.geocaching.apps.cache.navi;
-import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgGeo;
-import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.geopoint.Geopoint;
import android.app.Activity;
import android.content.Intent;
-import android.content.res.Resources;
-public class NavigonApp extends AbstractNavigationApp {
+class NavigonApp extends AbstractPointNavigationApp {
private static final String INTENT = "android.intent.action.navigon.START_PUBLIC";
private static final String INTENT_EXTRA_KEY_LATITUDE = "latitude";
@@ -21,44 +16,18 @@ public class NavigonApp extends AbstractNavigationApp {
}
@Override
- public boolean invoke(cgGeo geo, Activity activity, Resources res, cgCache cache, SearchResult search, cgWaypoint waypoint, Geopoint coords) {
- if (cache == null && waypoint == null && coords == null) {
- return false;
- }
-
- try {
- if (isInstalled(activity)) {
- Geopoint usedCoords = getCoords(cache, waypoint, coords);
-
- final Intent intent = new Intent(INTENT);
-
- /*
- * Long/Lat are float values in decimal degree format (+-DDD.DDDDD).
- * Example:
- * intent.putExtra(INTENT_EXTRA_KEY_LATITUDE, 46.12345f);
- * intent.putExtra(INTENT_EXTRA_KEY_LONGITUDE, 23.12345f);
- */
- intent.putExtra(INTENT_EXTRA_KEY_LATITUDE, (float) usedCoords.getLatitude());
- intent.putExtra(INTENT_EXTRA_KEY_LONGITUDE, (float) usedCoords.getLongitude());
-
- activity.startActivity(intent);
-
- return true;
- }
- } catch (Exception e) {
- // nothing
- }
-
- return false;
- }
-
- private static Geopoint getCoords(cgCache cache, cgWaypoint waypoint, Geopoint coords) {
- if (cache != null) {
- return cache.getCoords();
- }
- else if (waypoint != null) {
- return waypoint.getCoords();
- }
- return coords;
+ protected void navigate(Activity activity, Geopoint point) {
+ final Intent intent = new Intent(INTENT);
+
+ /*
+ * Long/Lat are float values in decimal degree format (+-DDD.DDDDD).
+ * Example:
+ * intent.putExtra(INTENT_EXTRA_KEY_LATITUDE, 46.12345f);
+ * intent.putExtra(INTENT_EXTRA_KEY_LONGITUDE, 23.12345f);
+ */
+ intent.putExtra(INTENT_EXTRA_KEY_LATITUDE, (float) point.getLatitude());
+ intent.putExtra(INTENT_EXTRA_KEY_LONGITUDE, (float) point.getLongitude());
+
+ activity.startActivity(intent);
}
} \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/OruxMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/OruxMapsApp.java
index 51e17c6..27ec2fa 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/OruxMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/OruxMapsApp.java
@@ -1,58 +1,26 @@
package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgGeo;
-import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.geopoint.Geopoint;
import android.app.Activity;
import android.content.Intent;
-import android.content.res.Resources;
-class OruxMapsApp extends AbstractNavigationApp {
+class OruxMapsApp extends AbstractPointNavigationApp {
private static final String INTENT = "com.oruxmaps.VIEW_MAP_ONLINE";
- OruxMapsApp(final Resources res) {
- super(res.getString(R.string.cache_menu_oruxmaps), INTENT);
+ OruxMapsApp() {
+ super(getString(R.string.cache_menu_oruxmaps), INTENT);
}
@Override
- public boolean invoke(cgGeo geo, Activity activity, Resources res,
- cgCache cache,
- final SearchResult search, cgWaypoint waypoint, final Geopoint coords) {
- if (cache == null && waypoint == null && coords == null) {
- return false;
- }
-
- try {
- if (isInstalled(activity)) {
- Geopoint usedCoords = getCoords(cache, waypoint, coords);
-
- final Intent intent = new Intent(INTENT);
- intent.putExtra("latitude", usedCoords.getLatitude());//latitude, wgs84 datum
- intent.putExtra("longitude", usedCoords.getLongitude());//longitude, wgs84 datum
-
- activity.startActivity(intent);
-
- return true;
- }
- } catch (Exception e) {
- // nothing
- }
-
- return false;
- }
+ protected void navigate(Activity activity, Geopoint point) {
+ final Intent intent = new Intent(INTENT);
+ intent.putExtra("latitude", point.getLatitude());//latitude, wgs84 datum
+ intent.putExtra("longitude", point.getLongitude());//longitude, wgs84 datum
- private static Geopoint getCoords(cgCache cache, cgWaypoint waypoint, Geopoint coords) {
- if (cache != null) {
- return cache.getCoords();
- }
- else if (waypoint != null) {
- return waypoint.getCoords();
- }
- return coords;
+ activity.startActivity(intent);
}
+
}
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java b/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java
index ca47d3e..4fa73c7 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/RMapsApp.java
@@ -1,16 +1,15 @@
package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
+import cgeo.geocaching.SearchResult;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgGeo;
-import cgeo.geocaching.SearchResult;
import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.geopoint.Geopoint;
import cgeo.geocaching.geopoint.GeopointFormatter.Format;
import android.app.Activity;
import android.content.Intent;
-import android.content.res.Resources;
import java.util.ArrayList;
@@ -18,37 +17,29 @@ class RMapsApp extends AbstractNavigationApp {
private static final String INTENT = "com.robert.maps.action.SHOW_POINTS";
- RMapsApp(final Resources res) {
- super(res.getString(R.string.cache_menu_rmaps), INTENT);
+ RMapsApp() {
+ super(getString(R.string.cache_menu_rmaps), INTENT);
}
@Override
- public boolean invoke(cgGeo geo, Activity activity, Resources res,
- cgCache cache,
+ public boolean invoke(cgGeo geo, Activity activity, cgCache cache,
final SearchResult search, cgWaypoint waypoint, final Geopoint coords) {
- if (cache == null && waypoint == null && coords == null) {
- return false;
- }
-
try {
- if (isInstalled(activity)) {
- final ArrayList<String> locations = new ArrayList<String>();
- if (cache != null && cache.getCoords() != null) {
- locations.add(cache.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA)
- + ";"
- + cache.getGeocode()
- + ";" + cache.getName());
- } else if (waypoint != null && waypoint.getCoords() != null) {
- locations.add(waypoint.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA)
- + ";"
- + waypoint.getLookup()
- + ";" + waypoint.getName());
- }
+ final ArrayList<String> locations = new ArrayList<String>();
+ if (cache != null && cache.getCoords() != null) {
+ locations.add(cache.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA)
+ + ";" + cache.getGeocode()
+ + ";" + cache.getName());
+ } else if (waypoint != null && waypoint.getCoords() != null) {
+ locations.add(waypoint.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA)
+ + ";" + waypoint.getLookup()
+ + ";" + waypoint.getName());
+ }
+ if (!locations.isEmpty()) {
final Intent intent = new Intent(INTENT);
intent.putStringArrayListExtra("locations", locations);
activity.startActivity(intent);
-
return true;
}
} catch (Exception e) {
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/RadarApp.java b/main/src/cgeo/geocaching/apps/cache/navi/RadarApp.java
index f66c199..3374691 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/RadarApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/RadarApp.java
@@ -1,46 +1,25 @@
package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgGeo;
-import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.geopoint.Geopoint;
import android.app.Activity;
import android.content.Intent;
-import android.content.res.Resources;
-class RadarApp extends AbstractNavigationApp {
+class RadarApp extends AbstractPointNavigationApp {
private static final String INTENT = "com.google.android.radar.SHOW_RADAR";
private static final String PACKAGE_NAME = "com.eclipsim.gpsstatus2";
- RadarApp(final Resources res) {
- super(res.getString(R.string.cache_menu_radar), INTENT, PACKAGE_NAME);
- }
-
- private static boolean navigateTo(Activity activity, final Geopoint coords) {
- if (coords == null) {
- return false;
- }
- Intent radarIntent = new Intent(INTENT);
- radarIntent.putExtra("latitude", (float) coords.getLatitude());
- radarIntent.putExtra("longitude", (float) coords.getLongitude());
- activity.startActivity(radarIntent);
- return true;
+ RadarApp() {
+ super(getString(R.string.cache_menu_radar), INTENT, PACKAGE_NAME);
}
@Override
- public boolean invoke(cgGeo geo, Activity activity, Resources res,
- cgCache cache,
- final SearchResult search, cgWaypoint waypoint, final Geopoint coords) {
- if (cache != null) {
- return navigateTo(activity, cache.getCoords());
- }
- if (waypoint != null) {
- return navigateTo(activity, waypoint.getCoords());
- }
- return navigateTo(activity, coords);
+ protected 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);
}
-}
+} \ No newline at end of file
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java b/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java
index a0284e3..9c7064b 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/StaticMapApp.java
@@ -1,9 +1,9 @@
package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
+import cgeo.geocaching.SearchResult;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgGeo;
-import cgeo.geocaching.SearchResult;
import cgeo.geocaching.cgWaypoint;
import cgeo.geocaching.cgeosmaps;
import cgeo.geocaching.activity.ActivityMixin;
@@ -12,12 +12,11 @@ import cgeo.geocaching.geopoint.Geopoint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
-import android.content.res.Resources;
class StaticMapApp extends AbstractNavigationApp {
- StaticMapApp(final Resources res) {
- super(res.getString(R.string.cache_menu_map_static), null);
+ StaticMapApp() {
+ super(getString(R.string.cache_menu_map_static), null);
}
@Override
@@ -26,19 +25,18 @@ class StaticMapApp extends AbstractNavigationApp {
}
@Override
- public boolean invoke(cgGeo geo, Activity activity, Resources res,
- cgCache cache,
+ public boolean invoke(cgGeo geo, Activity activity, cgCache cache,
final SearchResult search, cgWaypoint waypoint, final Geopoint coords) {
if (cache == null || cache.getListId() == 0) {
- ActivityMixin.showToast(activity, res.getString(R.string.err_detail_no_map_static));
+ ActivityMixin.showToast(activity, getString(R.string.err_detail_no_map_static));
return true;
}
if (cache.getGeocode() != null) {
- Intent smapsIntent = new Intent(activity, cgeosmaps.class);
- smapsIntent.putExtra("geocode", cache.getGeocode().toUpperCase());
- activity.startActivity(smapsIntent);
+ final Intent intent = new Intent(activity, cgeosmaps.class);
+ intent.putExtra("geocode", cache.getGeocode().toUpperCase());
+ activity.startActivity(intent);
return true;
}
return false;
diff --git a/main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java b/main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java
index c88e54d..12b1a13 100644
--- a/main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java
+++ b/main/src/cgeo/geocaching/apps/cache/navi/StreetviewApp.java
@@ -1,10 +1,7 @@
package cgeo.geocaching.apps.cache.navi;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgCache;
-import cgeo.geocaching.cgGeo;
-import cgeo.geocaching.SearchResult;
-import cgeo.geocaching.cgWaypoint;
+import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.geopoint.Geopoint;
@@ -12,13 +9,12 @@ import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
-import android.content.res.Resources;
import android.net.Uri;
-class StreetviewApp extends AbstractNavigationApp {
+class StreetviewApp extends AbstractPointNavigationApp {
- StreetviewApp(final Resources res) {
- super(res.getString(R.string.cache_menu_streetview), null);
+ StreetviewApp() {
+ super(getString(R.string.cache_menu_streetview), null);
}
@Override
@@ -26,34 +22,13 @@ class StreetviewApp extends AbstractNavigationApp {
return true;
}
- public boolean invoke(cgGeo geo, Activity activity, Resources res,
- cgCache cache,
- final SearchResult search, cgWaypoint waypoint, final Geopoint coords) {
- if (cache == null && waypoint == null && coords == null) {
- return false;
- }
-
+ @Override
+ protected void navigate(Activity activity, Geopoint point) {
try {
- if (cache != null && cache.getCoords() != null) {
- startActivity(activity, cache.getCoords());
- } else if (waypoint != null && waypoint.getCoords() != null) {
- startActivity(activity, waypoint.getCoords());
- } else if (coords != null) {
- startActivity(activity, coords);
- }
-
- return true;
+ activity.startActivity(new Intent(Intent.ACTION_VIEW,
+ Uri.parse("google.streetview:cbll=" + point.getLatitude() + "," + point.getLongitude())));
} catch (ActivityNotFoundException e) {
- if (res != null) {
- ActivityMixin.showToast(activity, res.getString(R.string.err_application_no));
- }
+ ActivityMixin.showToast(activity, cgeoapplication.getInstance().getString(R.string.err_application_no));
}
-
- return false;
- }
-
- private static void startActivity(Activity activity, final Geopoint coords) {
- activity.startActivity(new Intent(Intent.ACTION_VIEW,
- Uri.parse("google.streetview:cbll=" + coords.getLatitude() + "," + coords.getLongitude())));
}
-}
+} \ No newline at end of file