diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2012-01-08 10:51:10 +0100 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2012-01-08 10:51:10 +0100 |
| commit | cdd9939761c09dc0b00c825cfbab80aa198348f2 (patch) | |
| tree | c5edecedd56901860a274739e2a90418284fced2 /main/src/cgeo/geocaching/apps/cache | |
| parent | e9ddb7e7abd1406e77637c15831aa4f8b52ce772 (diff) | |
| download | cgeo-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')
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 |
