diff options
Diffstat (limited to 'main/src/cgeo/geocaching/CompassActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/CompassActivity.java | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/main/src/cgeo/geocaching/CompassActivity.java b/main/src/cgeo/geocaching/CompassActivity.java index 002f00e..8955afd 100644 --- a/main/src/cgeo/geocaching/CompassActivity.java +++ b/main/src/cgeo/geocaching/CompassActivity.java @@ -1,19 +1,23 @@ package cgeo.geocaching; +import butterknife.ButterKnife; import butterknife.InjectView; -import butterknife.Views; import cgeo.geocaching.activity.AbstractActivity; +import cgeo.geocaching.enumerations.LoadFlags; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.geopoint.Units; import cgeo.geocaching.maps.CGeoMap; import cgeo.geocaching.settings.Settings; import cgeo.geocaching.speech.SpeechService; import cgeo.geocaching.ui.CompassView; +import cgeo.geocaching.ui.Formatter; +import cgeo.geocaching.ui.LoggingUI; import cgeo.geocaching.utils.GeoDirHandler; import cgeo.geocaching.utils.Log; import org.apache.commons.lang3.StringUtils; +import org.eclipse.jdt.annotation.Nullable; import android.content.Context; import android.content.Intent; @@ -34,6 +38,8 @@ import java.util.List; public class CompassActivity extends AbstractActivity { + private static final int COORDINATES_OFFSET = 10; + @InjectView(R.id.nav_type) protected TextView navType; @InjectView(R.id.nav_accuracy) protected TextView navAccuracy; @InjectView(R.id.nav_satellites) protected TextView navSatellites; @@ -49,8 +55,11 @@ public class CompassActivity extends AbstractActivity { private static final String EXTRAS_GEOCODE = "geocode"; private static final String EXTRAS_CACHE_INFO = "cacheinfo"; private static final List<IWaypoint> coordinates = new ArrayList<IWaypoint>(); - private static final int COORDINATES_OFFSET = 10; - private static final int REQUEST_TTS_DATA_CHECK = 1; + + /** + * Destination of the compass, or null (if the compass is used for a waypoint only). + */ + private @Nullable Geocache cache = null; private Geopoint dstCoords = null; private float cacheHeading = 0; private String title = null; @@ -70,7 +79,11 @@ public class CompassActivity extends AbstractActivity { // get parameters Bundle extras = getIntent().getExtras(); if (extras != null) { - title = extras.getString(EXTRAS_GEOCODE); + final String geocode = extras.getString(EXTRAS_GEOCODE); + if (StringUtils.isNotEmpty(geocode)) { + cache = DataStore.loadCache(geocode, LoadFlags.LOAD_CACHE_OR_DB); + } + title = geocode; final String name = extras.getString(EXTRAS_NAME); dstCoords = extras.getParcelable(EXTRAS_COORDS); info = extras.getString(EXTRAS_CACHE_INFO); @@ -95,7 +108,7 @@ public class CompassActivity extends AbstractActivity { setDestCoords(); setCacheInfo(); - Views.inject(this); + ButterKnife.inject(this); // make sure we can control the TTS volume setVolumeControlStream(AudioManager.STREAM_MUSIC); @@ -105,7 +118,7 @@ public class CompassActivity extends AbstractActivity { public void onResume() { super.onResume(); - // sensor & geolocation manager + // sensor and geolocation manager geoDirHandler.startGeoAndDir(); } @@ -127,14 +140,14 @@ public class CompassActivity extends AbstractActivity { super.onConfigurationChanged(newConfig); setContentView(R.layout.compass_activity); - Views.inject(this); + ButterKnife.inject(this); setTitle(); setDestCoords(); setCacheInfo(); // Force a refresh of location and direction when data is available. - final cgeoapplication app = cgeoapplication.getInstance(); + final CgeoApplication app = CgeoApplication.getInstance(); final IGeoData geo = app.currentGeo(); if (geo != null) { geoDirHandler.update(geo); @@ -158,6 +171,9 @@ public class CompassActivity extends AbstractActivity { } else { menu.findItem(R.id.menu_select_destination).setVisible(false); } + if (cache != null) { + LoggingUI.addMenuItems(this, menu, cache); + } return true; } @@ -200,6 +216,9 @@ public class CompassActivity extends AbstractActivity { SpeechService.stopService(this); return true; default: + if (LoggingUI.onMenuItemSelected(item, this, cache)) { + return true; + } int coordinatesIndex = id - COORDINATES_OFFSET; if (coordinatesIndex >= 0 && coordinatesIndex < coordinates.size()) { final IWaypoint coordinate = coordinates.get(coordinatesIndex); @@ -282,7 +301,7 @@ public class CompassActivity extends AbstractActivity { if (!Settings.isUseCompass() || geo.getSpeed() > 5) { // use GPS when speed is higher than 18 km/h updateNorthHeading(geo.getBearing()); } - } catch (Exception e) { + } catch (RuntimeException e) { Log.w("Failed to LocationUpdater location."); } } @@ -326,4 +345,9 @@ public class CompassActivity extends AbstractActivity { CompassActivity.startActivity(context, geocode, displayedName, coords, coordinatesWithType, null); } + public static void startActivity(final Context context, final Geocache cache) { + startActivity(context, cache.getGeocode(), cache.getName(), cache.getCoords(), null, + Formatter.formatCacheInfoShort(cache)); + } + } |
