diff options
Diffstat (limited to 'main/src')
8 files changed, 21 insertions, 86 deletions
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 5f6fdef..4307886 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -3,7 +3,6 @@ package cgeo.geocaching; import cgeo.calendar.ICalendar; import cgeo.geocaching.activity.AbstractViewPagerActivity; import cgeo.geocaching.activity.Progress; -import cgeo.geocaching.apps.cache.GeneralAppsFactory; import cgeo.geocaching.apps.cache.navi.NavigationAppFactory; import cgeo.geocaching.compatibility.Compatibility; import cgeo.geocaching.connector.ConnectorFactory; @@ -520,7 +519,6 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc final SubMenu subMenu = menu.addSubMenu(0, 0, 0, res.getString(R.string.cache_menu_navigate)).setIcon(R.drawable.ic_menu_mapmode); NavigationAppFactory.addMenuItems(subMenu, cache); - GeneralAppsFactory.addMenuItems(subMenu, cache); menu.add(0, MENU_CALENDAR, 0, res.getString(R.string.cache_menu_event)).setIcon(R.drawable.ic_menu_agenda); // add event to calendar LoggingUI.addMenuItems(menu, cache); @@ -572,9 +570,6 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc if (NavigationAppFactory.onMenuItemSelected(item, this, cache)) { return true; } - if (GeneralAppsFactory.onMenuItemSelected(item, this, cache)) { - return true; - } if (LoggingUI.onMenuItemSelected(item, this, cache)) { refreshOnResume = true; return true; 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); } } }); |
