diff options
| author | Bananeweizen <Bananeweizen@gmx.de> | 2012-12-30 10:54:43 +0100 |
|---|---|---|
| committer | Bananeweizen <Bananeweizen@gmx.de> | 2012-12-30 10:54:43 +0100 |
| commit | aba2786ec38c1653b92c3affd88d2060c1d6b8df (patch) | |
| tree | 5c71104761fd63763fa6835a10e0a480372fab64 /main/src/cgeo/geocaching/apps | |
| parent | cb94f1f020596be019cc4c000a93a318600d7f37 (diff) | |
| download | cgeo-aba2786ec38c1653b92c3affd88d2060c1d6b8df.zip cgeo-aba2786ec38c1653b92c3affd88d2060c1d6b8df.tar.gz cgeo-aba2786ec38c1653b92c3affd88d2060c1d6b8df.tar.bz2 | |
fix #2054: Navigate options are different
Diffstat (limited to 'main/src/cgeo/geocaching/apps')
7 files changed, 21 insertions, 81 deletions
diff --git a/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java b/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java index 61528ea..8087d6d 100644 --- a/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java +++ b/main/src/cgeo/geocaching/apps/cache/AbstractGeneralApp.java @@ -2,24 +2,23 @@ package cgeo.geocaching.apps.cache; import cgeo.geocaching.cgCache; import cgeo.geocaching.apps.AbstractApp; +import cgeo.geocaching.apps.cache.navi.CacheNavigationApp; import android.app.Activity; import android.content.Intent; -abstract class AbstractGeneralApp extends AbstractApp implements GeneralApp { +abstract class AbstractGeneralApp extends AbstractApp implements CacheNavigationApp { protected AbstractGeneralApp(String name, String packageName) { super(name, null, packageName); } @Override - public boolean invoke(Activity activity, cgCache cache) { + public void navigate(Activity activity, cgCache cache) { final Intent intent = getLaunchIntent(); if (intent != null) { intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); activity.startActivity(intent); - return true; } - return false; } } diff --git a/main/src/cgeo/geocaching/apps/cache/CacheBeaconApp.java b/main/src/cgeo/geocaching/apps/cache/CacheBeaconApp.java index 6e7cdca..4ba336f 100644 --- a/main/src/cgeo/geocaching/apps/cache/CacheBeaconApp.java +++ b/main/src/cgeo/geocaching/apps/cache/CacheBeaconApp.java @@ -6,15 +6,12 @@ import cgeo.geocaching.enumerations.CacheAttribute; public class CacheBeaconApp extends AbstractGeneralApp { - protected CacheBeaconApp() { + public CacheBeaconApp() { super(getString(R.string.cache_menu_cachebeacon), "de.fun2code.android.cachebeacon"); } @Override public boolean isEnabled(cgCache cache) { - if (cache == null) { - return false; - } return cache.hasAttribute(CacheAttribute.WIRELESS_BEACON, true); } diff --git a/main/src/cgeo/geocaching/apps/cache/GccApp.java b/main/src/cgeo/geocaching/apps/cache/GccApp.java index 9000d9e..b129b45 100644 --- a/main/src/cgeo/geocaching/apps/cache/GccApp.java +++ b/main/src/cgeo/geocaching/apps/cache/GccApp.java @@ -2,8 +2,8 @@ package cgeo.geocaching.apps.cache; import cgeo.geocaching.R; -class GccApp extends AbstractGeneralApp { - GccApp() { +public class GccApp extends AbstractGeneralApp { + public GccApp() { super(getString(R.string.cache_menu_gcc), "eisbehr.gcc"); } } diff --git a/main/src/cgeo/geocaching/apps/cache/GeneralApp.java b/main/src/cgeo/geocaching/apps/cache/GeneralApp.java deleted file mode 100644 index cdbedd5..0000000 --- a/main/src/cgeo/geocaching/apps/cache/GeneralApp.java +++ /dev/null @@ -1,12 +0,0 @@ -package cgeo.geocaching.apps.cache; - -import cgeo.geocaching.cgCache; -import cgeo.geocaching.apps.App; - -import android.app.Activity; - -interface GeneralApp extends App { - - public boolean invoke(Activity activity, cgCache cache); - -} diff --git a/main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java b/main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java deleted file mode 100644 index 57eb957..0000000 --- a/main/src/cgeo/geocaching/apps/cache/GeneralAppsFactory.java +++ /dev/null @@ -1,48 +0,0 @@ -package cgeo.geocaching.apps.cache; - -import cgeo.geocaching.cgCache; -import cgeo.geocaching.apps.AbstractAppFactory; -import cgeo.geocaching.utils.Log; - -import org.apache.commons.lang3.ArrayUtils; - -import android.app.Activity; -import android.view.Menu; -import android.view.MenuItem; - -public final class GeneralAppsFactory extends AbstractAppFactory { - private static GeneralApp[] apps = new GeneralApp[] {}; - - private static GeneralApp[] getGeneralApps() { - if (ArrayUtils.isEmpty(apps)) { - apps = new GeneralApp[] { - new CacheBeaconApp(), - new GccApp(), - new WhereYouGoApp() - }; - } - return apps; - } - - public static void addMenuItems(Menu menu, cgCache cache) { - for (GeneralApp app : getGeneralApps()) { - if (app.isInstalled() && app.isEnabled(cache)) { - menu.add(0, app.getId(), 0, app.getName()); - } - } - } - - public static boolean onMenuItemSelected(final MenuItem item, Activity activity, cgCache cache) { - final GeneralApp app = (GeneralApp) getAppFromMenuItem(item, apps); - if (app == null) { - return false; - } - try { - app.invoke(activity, cache); - } catch (Exception e) { - Log.e("GeneralAppsFactory.onMenuItemSelected: " + e.toString()); - } - return true; - } - -} diff --git a/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java b/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java index 8c16eaf..8c06d7a 100644 --- a/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java +++ b/main/src/cgeo/geocaching/apps/cache/WhereYouGoApp.java @@ -4,13 +4,13 @@ import cgeo.geocaching.R; import cgeo.geocaching.cgCache; import cgeo.geocaching.enumerations.CacheType; -class WhereYouGoApp extends AbstractGeneralApp { - WhereYouGoApp() { +public class WhereYouGoApp extends AbstractGeneralApp { + public WhereYouGoApp() { super(getString(R.string.cache_menu_whereyougo), "menion.android.whereyougo"); } @Override public boolean isEnabled(cgCache cache) { - return cache != null && cache.getType() == CacheType.WHERIGO; + return cache.getType() == CacheType.WHERIGO; } } diff --git a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java index 0ff4af2..2f8ce16 100644 --- a/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java +++ b/main/src/cgeo/geocaching/apps/cache/navi/NavigationAppFactory.java @@ -8,6 +8,9 @@ import cgeo.geocaching.cgeoapplication; import cgeo.geocaching.activity.ActivityMixin; import cgeo.geocaching.apps.AbstractAppFactory; import cgeo.geocaching.apps.App; +import cgeo.geocaching.apps.cache.CacheBeaconApp; +import cgeo.geocaching.apps.cache.GccApp; +import cgeo.geocaching.apps.cache.WhereYouGoApp; import cgeo.geocaching.apps.cache.navi.GoogleNavigationApp.GoogleNavigationDrivingApp; import cgeo.geocaching.apps.cache.navi.GoogleNavigationApp.GoogleNavigationWalkingApp; import cgeo.geocaching.geopoint.Geopoint; @@ -58,7 +61,11 @@ public final class NavigationAppFactory extends AbstractAppFactory { /** * Google Maps Directions */ - GOOGLE_MAPS_DIRECTIONS(new GoogleMapsDirectionApp(), 13); + GOOGLE_MAPS_DIRECTIONS(new GoogleMapsDirectionApp(), 13), + + CACHE_BEACON(new CacheBeaconApp(), 14), + GCC(new GccApp(), 15), + WHERE_YOU_GO(new WhereYouGoApp(), 16); NavigationAppsEnum(App app, int id) { this.app = app; @@ -125,7 +132,6 @@ public final class NavigationAppFactory extends AbstractAppFactory { final boolean showInternalMap, final boolean showDefaultNavigation) { final AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle(R.string.cache_menu_navigate); - builder.setIcon(R.drawable.ic_menu_mapmode); final List<NavigationAppsEnum> items = new ArrayList<NavigationAppFactory.NavigationAppsEnum>(); final int defaultNavigationTool = Settings.getDefaultNavigationTool(); for (NavigationAppsEnum navApp : getInstalledNavigationApps()) { @@ -156,17 +162,15 @@ public final class NavigationAppFactory extends AbstractAppFactory { @Override public void onClick(DialogInterface dialog, int item) { NavigationAppsEnum selectedItem = adapter.getItem(item); + App app = selectedItem.app; if (cache != null) { - CacheNavigationApp cacheApp = (CacheNavigationApp) selectedItem.app; - cacheApp.navigate(activity, cache); + navigateCache(activity, cache, app); } else if (waypoint != null) { - WaypointNavigationApp waypointApp = (WaypointNavigationApp) selectedItem.app; - waypointApp.navigate(activity, waypoint); + navigateWaypoint(activity, waypoint, app); } else { - GeopointNavigationApp geopointApp = (GeopointNavigationApp) selectedItem.app; - geopointApp.navigate(activity, destination); + navigateGeopoint(activity, destination, app); } } }); |
