aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/CompassActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/CompassActivity.java')
-rw-r--r--main/src/cgeo/geocaching/CompassActivity.java34
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));
+ }
+
}