diff options
Diffstat (limited to 'main/src/cgeo/geocaching')
32 files changed, 292 insertions, 424 deletions
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 602f340..339219e 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -382,7 +382,7 @@ public class CacheDetailActivity extends AbstractActivity { if (waypoint.getCoords() != null) { menu.add(CONTEXT_MENU_WAYPOINT_DEFAULT_NAVIGATION, index, 0, R.string.cache_menu_default_navigation); SubMenu subMenu = menu.addSubMenu(CONTEXT_MENU_WAYPOINT_NAVIGATE, index, 0, R.string.cache_menu_navigate).setIcon(android.R.drawable.ic_menu_mapmode); - NavigationAppFactory.addMenuItems(subMenu, this, res); + NavigationAppFactory.addMenuItems(subMenu, this); menu.add(CONTEXT_MENU_WAYPOINT_CACHES_AROUND, index, 0, R.string.cache_menu_around); } break; @@ -442,7 +442,7 @@ public class CacheDetailActivity extends AbstractActivity { { final cgWaypoint waypoint = cache.getWaypoint(index); if (waypoint != null) { - NavigationAppFactory.startDefaultNavigationApplication(geolocation, this, getResources(), null, null, waypoint, null); + NavigationAppFactory.startDefaultNavigationApplication(geolocation, this, null, null, waypoint, null); } } break; @@ -461,7 +461,7 @@ public class CacheDetailActivity extends AbstractActivity { // First check the navigation menu, then the option items final cgWaypoint waypoint = cache.getWaypoint(contextMenuWPIndex); if (waypoint != null && NavigationAppFactory.onMenuItemSelected(item, geolocation, this, - res, null, null, waypoint, null)) { + null, null, waypoint, null)) { return true; } return onOptionsItemSelected(item); @@ -475,8 +475,8 @@ public class CacheDetailActivity extends AbstractActivity { menu.add(0, MENU_DEFAULT_NAVIGATION, 0, res.getString(R.string.cache_menu_default_navigation)).setIcon(android.R.drawable.ic_menu_compass); // default navigation tool final SubMenu subMenu = menu.addSubMenu(1, 0, 0, res.getString(R.string.cache_menu_navigate)).setIcon(android.R.drawable.ic_menu_mapmode); - NavigationAppFactory.addMenuItems(subMenu, this, res); - GeneralAppsFactory.addMenuItems(subMenu, this, res, cache); + NavigationAppFactory.addMenuItems(subMenu, this); + GeneralAppsFactory.addMenuItems(subMenu, this, cache); menu.add(1, MENU_CALENDAR, 0, res.getString(R.string.cache_menu_event)).setIcon(android.R.drawable.ic_menu_agenda); // add event to calendar addVisitMenu(menu, cache); @@ -528,7 +528,7 @@ public class CacheDetailActivity extends AbstractActivity { } return false; } - if (NavigationAppFactory.onMenuItemSelected(item, geolocation, this, res, cache, search, null, null)) { + if (NavigationAppFactory.onMenuItemSelected(item, geolocation, this, cache, search, null, null)) { return true; } if (GeneralAppsFactory.onMenuItemSelected(item, this, cache)) { @@ -908,7 +908,7 @@ public class CacheDetailActivity extends AbstractActivity { return; } - NavigationAppFactory.startDefaultNavigationApplication(geolocation, this, getResources(), cache, search, null, null); + NavigationAppFactory.startDefaultNavigationApplication(geolocation, this, cache, search, null, null); } /** diff --git a/main/src/cgeo/geocaching/apps/AbstractApp.java b/main/src/cgeo/geocaching/apps/AbstractApp.java index 7cf0b7f..0c38b02 100644 --- a/main/src/cgeo/geocaching/apps/AbstractApp.java +++ b/main/src/cgeo/geocaching/apps/AbstractApp.java @@ -1,5 +1,7 @@ package cgeo.geocaching.apps; +import cgeo.geocaching.cgeoapplication; + import org.apache.commons.collections.CollectionUtils; import android.content.Context; @@ -31,11 +33,11 @@ public abstract class AbstractApp implements App { if (packageName == null) { return null; } - PackageManager packageManager = context.getPackageManager(); + final PackageManager packageManager = context.getPackageManager(); try { // This can throw an exception where the exception type is only defined on API Level > 3 // therefore surround with try-catch - Intent intent = packageManager.getLaunchIntentForPackage(packageName); + final Intent intent = packageManager.getLaunchIntentForPackage(packageName); return intent; } catch (Exception e) { return null; @@ -60,7 +62,7 @@ public abstract class AbstractApp implements App { final List<ResolveInfo> list = packageManager.queryIntentActivities( intent, PackageManager.MATCH_DEFAULT_ONLY); - return (CollectionUtils.isNotEmpty(list)); + return CollectionUtils.isNotEmpty(list); } @Override @@ -72,4 +74,8 @@ public abstract class AbstractApp implements App { public int getId() { return getName().hashCode(); } + + protected static String getString(int ressourceId) { + return cgeoapplication.getInstance().getString(ressourceId); + } } diff --git a/main/src/cgeo/geocaching/apps/AbstractAppFactory.java b/main/src/cgeo/geocaching/apps/AbstractAppFactory.java index bb8b017..945f7d6 100644 --- a/main/src/cgeo/geocaching/apps/AbstractAppFactory.java +++ b/main/src/cgeo/geocaching/apps/AbstractAppFactory.java @@ -5,7 +5,7 @@ import android.view.MenuItem; public abstract class AbstractAppFactory { protected static App getAppFromMenuItem(MenuItem item, final App[] availableApps) { - int id = item.getItemId(); + final int id = item.getItemId(); for (App app : availableApps) { if (app.getId() == id) { return app; diff --git a/main/src/cgeo/geocaching/apps/AbstractLocusApp.java b/main/src/cgeo/geocaching/apps/AbstractLocusApp.java index 4a9212b..46105cd 100644 --- a/main/src/cgeo/geocaching/apps/AbstractLocusApp.java +++ b/main/src/cgeo/geocaching/apps/AbstractLocusApp.java @@ -18,7 +18,6 @@ import menion.android.locus.addon.publiclib.geoData.PointsData; import android.app.Activity; import android.content.Context; import android.content.Intent; -import android.content.res.Resources; import android.location.Location; import java.text.SimpleDateFormat; @@ -34,8 +33,8 @@ public abstract class AbstractLocusApp extends AbstractApp { private static final String INTENT = Intent.ACTION_VIEW; private static final SimpleDateFormat ISO8601DATE = new SimpleDateFormat("yyyy-MM-dd'T'"); - protected AbstractLocusApp(final Resources res) { - super(res.getString(R.string.caches_map_locus), INTENT); + protected AbstractLocusApp() { + super(getString(R.string.caches_map_locus), INTENT); } @Override @@ -53,42 +52,42 @@ public abstract class AbstractLocusApp extends AbstractApp { * @param activity * @author koem */ - protected static void showInLocus(final List<? extends Object> objectsToShow, final boolean withCacheWaypoints, + protected static boolean showInLocus(final List<? extends Object> objectsToShow, final boolean withCacheWaypoints, final Activity activity) { - if (objectsToShow == null) { - return; + if (objectsToShow == null || objectsToShow.isEmpty()) { + return false; } - boolean withCacheDetails = objectsToShow.size() < 200; - int pc = 0; // counter for points - PointsData pd = new PointsData("c:geo"); + final boolean withCacheDetails = objectsToShow.size() < 200; + final PointsData pd = new PointsData("c:geo"); for (Object o : objectsToShow) { - // get icon and Point Point p = null; + // get icon and Point if (o instanceof cgCache) { - p = getPoint((cgCache) o, withCacheWaypoints, withCacheDetails); + p = getCachePoint((cgCache) o, withCacheWaypoints, withCacheDetails); } else if (o instanceof cgWaypoint) { - p = getPoint((cgWaypoint) o); - } else { - continue; // no cache, no waypoint => ignore + p = getWaypointPoint((cgWaypoint) o); } - if (p == null) { - continue; + if (p != null) { + pd.addPoint(p); } + } - pd.addPoint(p); - ++pc; + if (pd.getPoints().isEmpty()) { + return false; } - if (pc <= 1000) { + if (pd.getPoints().size() <= 1000) { DisplayData.sendData(activity, pd, false); } else { - ArrayList<PointsData> data = new ArrayList<PointsData>(); + final ArrayList<PointsData> data = new ArrayList<PointsData>(); data.add(pd); DisplayData.sendDataCursor(activity, data, "content://" + LocusDataStorageProvider.class.getCanonicalName().toLowerCase(), false); } + + return true; } /** @@ -103,18 +102,18 @@ public abstract class AbstractLocusApp extends AbstractApp { * @return null, when the <code>Point</code> could not be constructed * @author koem */ - private static Point getPoint(cgCache cache, boolean withWaypoints, boolean withCacheDetails) { + private static Point getCachePoint(cgCache cache, boolean withWaypoints, boolean withCacheDetails) { if (cache == null || cache.getCoords() == null) { return null; } // create one simple point with location - Location loc = new Location(Settings.tag); + final Location loc = new Location(Settings.tag); loc.setLatitude(cache.getCoords().getLatitude()); loc.setLongitude(cache.getCoords().getLongitude()); - Point p = new Point(cache.getName(), loc); - PointGeocachingData pg = new PointGeocachingData(); + final Point p = new Point(cache.getName(), loc); + final PointGeocachingData pg = new PointGeocachingData(); p.setGeocachingData(pg); // set data in Locus' cache @@ -127,11 +126,11 @@ public abstract class AbstractLocusApp extends AbstractApp { if (cache.getHiddenDate() != null) { pg.hidden = ISO8601DATE.format(Long.valueOf(cache.getHiddenDate().getTime())); } - int locusId = toLocusId(cache.getType()); + int locusId = toLocusType(cache.getType()); if (locusId != NO_LOCUS_ID) { pg.type = locusId; } - locusId = toLocusId(cache.getSize()); + locusId = toLocusSize(cache.getSize()); if (locusId != NO_LOCUS_ID) { pg.container = locusId; } @@ -152,7 +151,7 @@ public abstract class AbstractLocusApp extends AbstractApp { PointGeocachingDataWaypoint wp = new PointGeocachingDataWaypoint(); wp.code = waypoint.getGeocode(); wp.name = waypoint.getName(); - String locusWpId = toLocusId(waypoint.getWaypointType()); + String locusWpId = toLocusWaypoint(waypoint.getWaypointType()); if (locusWpId != null) { wp.type = locusWpId; } @@ -182,17 +181,17 @@ public abstract class AbstractLocusApp extends AbstractApp { * @return null, when the <code>Point</code> could not be constructed * @author koem */ - private static Point getPoint(cgWaypoint waypoint) { + private static Point getWaypointPoint(cgWaypoint waypoint) { if (waypoint == null || waypoint.getCoords() == null) { return null; } // create one simple point with location - Location loc = new Location(Settings.tag); + final Location loc = new Location(Settings.tag); loc.setLatitude(waypoint.getCoords().getLatitude()); loc.setLongitude(waypoint.getCoords().getLongitude()); - Point p = new Point(waypoint.getName(), loc); + final Point p = new Point(waypoint.getName(), loc); p.setDescription("<a href=\"" + waypoint.getUrl() + "\">" + waypoint.getGeocode() + "</a>"); @@ -201,7 +200,7 @@ public abstract class AbstractLocusApp extends AbstractApp { private static final int NO_LOCUS_ID = -1; - private static int toLocusId(final CacheType ct) { + private static int toLocusType(final CacheType ct) { switch (ct) { case TRADITIONAL: return PointGeocachingData.CACHE_TYPE_TRADITIONAL; @@ -234,7 +233,7 @@ public abstract class AbstractLocusApp extends AbstractApp { } } - private static int toLocusId(final CacheSize cs) { + private static int toLocusSize(final CacheSize cs) { switch (cs) { case MICRO: return PointGeocachingData.CACHE_SIZE_MICRO; @@ -253,7 +252,7 @@ public abstract class AbstractLocusApp extends AbstractApp { } } - private static String toLocusId(final WaypointType wt) { + private static String toLocusWaypoint(final WaypointType wt) { switch (wt) { case FINAL: return PointGeocachingData.CACHE_WAYPOINT_TYPE_FINAL; 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 diff --git a/main/src/cgeo/geocaching/apps/cachelist/CacheListApp.java b/main/src/cgeo/geocaching/apps/cachelist/CacheListApp.java index 08f8cf8..621aea4 100644 --- a/main/src/cgeo/geocaching/apps/cachelist/CacheListApp.java +++ b/main/src/cgeo/geocaching/apps/cachelist/CacheListApp.java @@ -1,19 +1,17 @@ package cgeo.geocaching.apps.cachelist; +import cgeo.geocaching.SearchResult; import cgeo.geocaching.cgCache; import cgeo.geocaching.cgGeo; -import cgeo.geocaching.SearchResult; import cgeo.geocaching.apps.App; import android.app.Activity; -import android.content.res.Resources; import java.util.List; interface CacheListApp extends App { boolean invoke(final cgGeo geo, final List<cgCache> caches, - final Activity activity, final Resources res, - final SearchResult search); + final Activity activity, final SearchResult search); } diff --git a/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java b/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java index 47503d8..3bea266 100644 --- a/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java +++ b/main/src/cgeo/geocaching/apps/cachelist/CacheListAppFactory.java @@ -1,10 +1,10 @@ package cgeo.geocaching.apps.cachelist; 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.apps.AbstractAppFactory; import org.apache.commons.lang3.ArrayUtils; @@ -22,12 +22,11 @@ import java.util.List; public final class CacheListAppFactory extends AbstractAppFactory { private static CacheListApp[] apps = new CacheListApp[] {}; - private static CacheListApp[] getMultiPointNavigationApps( - Resources res) { + private static CacheListApp[] getMultiPointNavigationApps() { if (ArrayUtils.isEmpty(apps)) { apps = new CacheListApp[] { - new InternalCacheListMap(res), - new LocusCacheListApp(res) }; + new InternalCacheListMap(), + new LocusCacheListApp() }; } return apps; } @@ -41,7 +40,7 @@ public final class CacheListAppFactory extends AbstractAppFactory { public static MenuItem addMenuItems(Menu menu, Activity activity, Resources res) { List<CacheListApp> activeApps = new ArrayList<CacheListApp>(); - for (CacheListApp app : getMultiPointNavigationApps(res)) { + for (CacheListApp app : getMultiPointNavigationApps()) { if (app.isInstalled(activity)) { activeApps.add(app); } @@ -63,12 +62,12 @@ public final class CacheListAppFactory extends AbstractAppFactory { } public static boolean onMenuItemSelected(final MenuItem item, - final cgGeo geo, final List<cgCache> caches, final Activity activity, final Resources res, + final cgGeo geo, final List<cgCache> caches, final Activity activity, final SearchResult search) { CacheListApp app = (CacheListApp) getAppFromMenuItem(item, apps); if (app != null) { try { - return app.invoke(geo, caches, activity, res, search); + return app.invoke(geo, caches, activity, search); } catch (Exception e) { Log.e(Settings.tag, "CacheListAppFactory.onMenuItemSelected: " + e.toString()); } diff --git a/main/src/cgeo/geocaching/apps/cachelist/InternalCacheListMap.java b/main/src/cgeo/geocaching/apps/cachelist/InternalCacheListMap.java index f5b1f51..e3cbb4b 100644 --- a/main/src/cgeo/geocaching/apps/cachelist/InternalCacheListMap.java +++ b/main/src/cgeo/geocaching/apps/cachelist/InternalCacheListMap.java @@ -1,22 +1,21 @@ package cgeo.geocaching.apps.cachelist; import cgeo.geocaching.R; +import cgeo.geocaching.SearchResult; import cgeo.geocaching.cgCache; import cgeo.geocaching.cgGeo; -import cgeo.geocaching.SearchResult; import cgeo.geocaching.apps.AbstractApp; import cgeo.geocaching.maps.CGeoMap; import android.app.Activity; import android.content.Context; -import android.content.res.Resources; import java.util.List; class InternalCacheListMap extends AbstractApp implements CacheListApp { - InternalCacheListMap(Resources res) { - super(res.getString(R.string.cache_menu_map), null); + InternalCacheListMap() { + super(getString(R.string.cache_menu_map), null); } @Override @@ -25,7 +24,7 @@ class InternalCacheListMap extends AbstractApp implements CacheListApp { } @Override - public boolean invoke(cgGeo geo, List<cgCache> caches, Activity activity, Resources res, final SearchResult search) { + public boolean invoke(cgGeo geo, List<cgCache> caches, Activity activity, final SearchResult search) { CGeoMap.startActivitySearch(activity, search, null, false); return true; } diff --git a/main/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java b/main/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java index 705014c..0c5455c 100644 --- a/main/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java +++ b/main/src/cgeo/geocaching/apps/cachelist/LocusCacheListApp.java @@ -1,23 +1,18 @@ package cgeo.geocaching.apps.cachelist; +import cgeo.geocaching.SearchResult; import cgeo.geocaching.cgCache; import cgeo.geocaching.cgGeo; -import cgeo.geocaching.SearchResult; import cgeo.geocaching.apps.AbstractLocusApp; import org.apache.commons.collections.CollectionUtils; import android.app.Activity; -import android.content.res.Resources; import java.util.List; class LocusCacheListApp extends AbstractLocusApp implements CacheListApp { - LocusCacheListApp(Resources res) { - super(res); - } - /** * show caches in Locus * @@ -25,8 +20,7 @@ class LocusCacheListApp extends AbstractLocusApp implements CacheListApp { * @author koem */ @Override - public boolean invoke(cgGeo geo, List<cgCache> cacheList, Activity activity, Resources res, - final SearchResult search) { + public boolean invoke(cgGeo geo, List<cgCache> cacheList, Activity activity, final SearchResult search) { if (CollectionUtils.isEmpty(cacheList)) { return false; } diff --git a/main/src/cgeo/geocaching/cgeocaches.java b/main/src/cgeo/geocaching/cgeocaches.java index 29d2093..7ff3469 100644 --- a/main/src/cgeo/geocaching/cgeocaches.java +++ b/main/src/cgeo/geocaching/cgeocaches.java @@ -1071,7 +1071,7 @@ public class cgeocaches extends AbstractListActivity { return true; } - return CacheListAppFactory.onMenuItemSelected(item, geo, cacheList, this, res, search); + return CacheListAppFactory.onMenuItemSelected(item, geo, cacheList, this, search); } private void showFilterMenu(final int submenu) { @@ -1148,7 +1148,7 @@ public class cgeocaches extends AbstractListActivity { if (cache.getCoords() != null) { menu.add(0, MENU_DEFAULT_NAVIGATION, 0, res.getString(R.string.cache_menu_default_navigation)); final SubMenu subMenu = menu.addSubMenu(1, 0, 0, res.getString(R.string.cache_menu_navigate)).setIcon(android.R.drawable.ic_menu_mapmode); - NavigationAppFactory.addMenuItems(subMenu, this, res); + NavigationAppFactory.addMenuItems(subMenu, this); addVisitMenu(menu, cache); menu.add(0, MENU_CACHE_DETAILS, 0, res.getString(R.string.cache_menu_details)); } @@ -1214,7 +1214,7 @@ public class cgeocaches extends AbstractListActivity { if (id == MENU_DEFAULT_NAVIGATION) { final cgCache cache = getCacheFromAdapter(adapterInfo); final SearchResult singleSearch = cgBase.searchByGeocode(cache.getGeocode(), null, 0, false, null); - NavigationAppFactory.startDefaultNavigationApplication(geo, this, getResources(), cache, singleSearch, null, null); + NavigationAppFactory.startDefaultNavigationApplication(geo, this, cache, singleSearch, null, null); return true; } else if (id == MENU_LOG_VISIT) { return getCacheFromAdapter(adapterInfo).logVisit(this); @@ -1267,7 +1267,7 @@ public class cgeocaches extends AbstractListActivity { final SearchResult singleSearch = cgBase.searchByGeocode(cache.getGeocode(), null, 0, false, null); if (NavigationAppFactory.onMenuItemSelected(item, geo, this, - res, cache, singleSearch, null, null)) { + cache, singleSearch, null, null)) { return true; } diff --git a/main/src/cgeo/geocaching/cgeoinit.java b/main/src/cgeo/geocaching/cgeoinit.java index 46e894d..8b72c5c 100644 --- a/main/src/cgeo/geocaching/cgeoinit.java +++ b/main/src/cgeo/geocaching/cgeoinit.java @@ -575,7 +575,7 @@ public class cgeoinit extends AbstractActivity { }); // Default navigation tool settings - final List<NavigationApp> apps = NavigationAppFactory.getInstalledNavigationApps(this, getResources()); + final List<NavigationApp> apps = NavigationAppFactory.getInstalledNavigationApps(this); final List<String> appNames = new ArrayList<String>(); for (NavigationApp navigationApp : apps) { appNames.add(navigationApp.getName()); @@ -585,7 +585,7 @@ public class cgeoinit extends AbstractActivity { naviAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); defaultNavigationToolSelector.setAdapter(naviAdapter); int defaultNavigationTool = Settings.getDefaultNavigationTool(); - defaultNavigationToolSelector.setSelection(NavigationAppFactory.getOrdinalFromId(this, getResources(), defaultNavigationTool)); + defaultNavigationToolSelector.setSelection(NavigationAppFactory.getOrdinalFromId(this, defaultNavigationTool)); defaultNavigationToolSelector.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { diff --git a/main/src/cgeo/geocaching/cgeopoint.java b/main/src/cgeo/geocaching/cgeopoint.java index bbc2e9d..e44a4e1 100644 --- a/main/src/cgeo/geocaching/cgeopoint.java +++ b/main/src/cgeo/geocaching/cgeopoint.java @@ -119,7 +119,7 @@ public class cgeopoint extends AbstractActivity { private void createHistoryView() { historyListView = (ListView) findViewById(R.id.historyList); - View pointControls = getLayoutInflater().inflate( + final View pointControls = getLayoutInflater().inflate( R.layout.point_controls, null); historyListView.addHeaderView(pointControls, null, false); @@ -133,20 +133,19 @@ public class cgeopoint extends AbstractActivity { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { - Object selection = arg0.getItemAtPosition(arg2); + final Object selection = arg0.getItemAtPosition(arg2); if (selection instanceof cgDestination) { navigateTo(((cgDestination) selection).getCoords()); } } }); - final Activity thisActivity = this; historyListView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { - SubMenu subMenu = menu.addSubMenu(Menu.NONE, CONTEXT_MENU_NAVIGATE, Menu.NONE, res.getString(R.string.cache_menu_navigate)); - NavigationAppFactory.addMenuItems(subMenu, thisActivity, res); + final SubMenu subMenu = menu.addSubMenu(Menu.NONE, CONTEXT_MENU_NAVIGATE, Menu.NONE, res.getString(R.string.cache_menu_navigate)); + NavigationAppFactory.addMenuItems(subMenu, cgeopoint.this); menu.add(Menu.NONE, CONTEXT_MENU_EDIT_WAYPOINT, Menu.NONE, R.string.waypoint_edit); menu.add(Menu.NONE, CONTEXT_MENU_DELETE_WAYPOINT, Menu.NONE, R.string.waypoint_delete); @@ -181,7 +180,7 @@ public class cgeopoint extends AbstractActivity { default: if (destination instanceof cgDestination) { - return NavigationAppFactory.onMenuItemSelected(item, geo, this, res, null, null, null, ((cgDestination) destination).getCoords()); + return NavigationAppFactory.onMenuItemSelected(item, geo, this, null, null, null, ((cgDestination) destination).getCoords()); } } @@ -305,7 +304,7 @@ public class cgeopoint extends AbstractActivity { menu.add(0, MENU_DEFAULT_NAVIGATION, 0, res.getString(R.string.cache_menu_default_navigation)).setIcon(android.R.drawable.ic_menu_compass); // default navigation tool SubMenu subMenu = menu.addSubMenu(1, MENU_NAVIGATE, 0, res.getString(R.string.cache_menu_navigate)).setIcon(android.R.drawable.ic_menu_more); - NavigationAppFactory.addMenuItems(subMenu, this, res); + NavigationAppFactory.addMenuItems(subMenu, this); menu.add(0, MENU_CACHES_AROUND, 0, res.getString(R.string.cache_menu_around)).setIcon(android.R.drawable.ic_menu_rotate); // caches around @@ -364,7 +363,7 @@ public class cgeopoint extends AbstractActivity { return true; default: - return NavigationAppFactory.onMenuItemSelected(item, geo, this, res, null, null, null, coords); + return NavigationAppFactory.onMenuItemSelected(item, geo, this, null, null, null, coords); } } @@ -432,7 +431,7 @@ public class cgeopoint extends AbstractActivity { return; } - NavigationAppFactory.startDefaultNavigationApplication(geo, this, getResources(), null, null, null, geopoint); + NavigationAppFactory.startDefaultNavigationApplication(geo, this, null, null, null, geopoint); } private void cachesAround() { diff --git a/main/src/cgeo/geocaching/cgeopopup.java b/main/src/cgeo/geocaching/cgeopopup.java index b28ce52..75dffb1 100644 --- a/main/src/cgeo/geocaching/cgeopopup.java +++ b/main/src/cgeo/geocaching/cgeopopup.java @@ -136,7 +136,7 @@ public class cgeopopup extends AbstractActivity { menu.add(0, 2, 0, res.getString(R.string.cache_menu_default_navigation)).setIcon(android.R.drawable.ic_menu_compass); // default navigation tool SubMenu subMenu = menu.addSubMenu(1, 0, 0, res.getString(R.string.cache_menu_navigate)).setIcon(android.R.drawable.ic_menu_mapmode); - NavigationAppFactory.addMenuItems(subMenu, this, res); + NavigationAppFactory.addMenuItems(subMenu, this); addVisitMenu(menu, cache); menu.add(0, 5, 0, res.getString(R.string.cache_menu_around)).setIcon(android.R.drawable.ic_menu_rotate); // caches around menu.add(0, 7, 0, res.getString(R.string.cache_menu_browser)).setIcon(android.R.drawable.ic_menu_info_details); // browser @@ -187,7 +187,7 @@ public class cgeopopup extends AbstractActivity { return true; } - if (NavigationAppFactory.onMenuItemSelected(item, geo, this, res, cache, null, null, null)) { + if (NavigationAppFactory.onMenuItemSelected(item, geo, this, cache, null, null, null)) { return true; } @@ -522,7 +522,7 @@ public class cgeopopup extends AbstractActivity { return; } - NavigationAppFactory.startDefaultNavigationApplication(geo, this, getResources(), cache, null, null, null); + NavigationAppFactory.startDefaultNavigationApplication(geo, this, cache, null, null, null); } private void cachesAround() { diff --git a/main/src/cgeo/geocaching/cgeowaypoint.java b/main/src/cgeo/geocaching/cgeowaypoint.java index 88088e3..4abdfd3 100644 --- a/main/src/cgeo/geocaching/cgeowaypoint.java +++ b/main/src/cgeo/geocaching/cgeowaypoint.java @@ -219,7 +219,7 @@ public class cgeowaypoint extends AbstractActivity { } private void addNavigationMenuItems(Menu menu) { - NavigationAppFactory.addMenuItems(menu, this, res); + NavigationAppFactory.addMenuItems(menu, this); } @Override @@ -249,7 +249,7 @@ public class cgeowaypoint extends AbstractActivity { return true; } - return NavigationAppFactory.onMenuItemSelected(item, geo, this, res, null, null, waypoint, null); + return NavigationAppFactory.onMenuItemSelected(item, geo, this, null, null, waypoint, null); } private void cachesAround() { @@ -316,7 +316,7 @@ public class cgeowaypoint extends AbstractActivity { return; } - NavigationAppFactory.startDefaultNavigationApplication(geo, this, getResources(), null, null, waypoint, null); + NavigationAppFactory.startDefaultNavigationApplication(geo, this, null, null, waypoint, null); } private boolean navigationPossible() { |
