diff options
Diffstat (limited to 'main/src/cgeo/geocaching/CompassActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/CompassActivity.java | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/main/src/cgeo/geocaching/CompassActivity.java b/main/src/cgeo/geocaching/CompassActivity.java index c8579e1..a176b7d 100644 --- a/main/src/cgeo/geocaching/CompassActivity.java +++ b/main/src/cgeo/geocaching/CompassActivity.java @@ -4,16 +4,20 @@ 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); @@ -105,7 +118,7 @@ public class CompassActivity extends AbstractActivity { public void onResume() { super.onResume(); - // sensor & geolocation manager + // sensor and geolocation manager geoDirHandler.startGeoAndDir(); } @@ -134,7 +147,7 @@ public class CompassActivity extends AbstractActivity { 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); @@ -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)); + } + } |
