aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2014-11-26 14:19:27 +0100
committerSamuel Tardieu <sam@rfc1149.net>2014-11-26 14:22:15 +0100
commitf64541a3f76bccc07e58a18f3158bfbf5db00f1b (patch)
treec014d2d6922734cf5c4b01264d31ad4f6f4a8a4e
parentc9a8a12536dc9f53c6d834c2eb4cc6157343423d (diff)
downloadcgeo-f64541a3f76bccc07e58a18f3158bfbf5db00f1b.zip
cgeo-f64541a3f76bccc07e58a18f3158bfbf5db00f1b.tar.gz
cgeo-f64541a3f76bccc07e58a18f3158bfbf5db00f1b.tar.bz2
fix #4332: no history when navigate via compass
-rw-r--r--main/src/cgeo/geocaching/NavigateAnyPointActivity.java50
1 files changed, 27 insertions, 23 deletions
diff --git a/main/src/cgeo/geocaching/NavigateAnyPointActivity.java b/main/src/cgeo/geocaching/NavigateAnyPointActivity.java
index 9535004..d735a60 100644
--- a/main/src/cgeo/geocaching/NavigateAnyPointActivity.java
+++ b/main/src/cgeo/geocaching/NavigateAnyPointActivity.java
@@ -21,6 +21,7 @@ import cgeo.geocaching.utils.Formatter;
import cgeo.geocaching.utils.Log;
import org.apache.commons.lang3.StringUtils;
+import org.eclipse.jdt.annotation.Nullable;
import android.app.Activity;
import android.content.Context;
@@ -95,7 +96,7 @@ public class NavigateAnyPointActivity extends AbstractActionBarActivity implemen
public View getView(final int position, final View convertView, final ViewGroup parent) {
View rowView = convertView;
- ViewHolder viewHolder;
+ final ViewHolder viewHolder;
if (rowView == null) {
rowView = getInflater().inflate(R.layout.simple_way_point, parent, false);
viewHolder = new ViewHolder(rowView);
@@ -347,20 +348,14 @@ public class NavigateAnyPointActivity extends AbstractActionBarActivity implemen
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
final int menuItem = item.getItemId();
-
- final Geopoint coords = getDestination();
-
- if (coords != null) {
- addToHistory(coords);
- }
-
+ final Geopoint coords = getDestinationAndAddToHistory();
switch (menuItem) {
case R.id.menu_default_navigation:
- navigateTo();
+ navigateTo(coords);
return true;
case R.id.menu_caches_around:
- cachesAround();
+ cachesAround(coords);
return true;
case R.id.menu_clear_history:
@@ -374,7 +369,17 @@ public class NavigateAnyPointActivity extends AbstractActionBarActivity implemen
return super.onOptionsItemSelected(item);
}
- private void addToHistory(final Geopoint coords) {
+ private Geopoint getDestinationAndAddToHistory() {
+ final Geopoint coords = getDestination();
+ addToHistory(coords);
+ return coords;
+ }
+
+ private void addToHistory(@Nullable final Geopoint coords) {
+ if (coords == null) {
+ return;
+ }
+
// Add locations to history
final Destination loc = new Destination(coords);
@@ -435,17 +440,16 @@ public class NavigateAnyPointActivity extends AbstractActionBarActivity implemen
}
}
- private void navigateTo() {
- navigateTo(getDestination());
- }
+ private void navigateTo(final Geopoint coords) {
+ if (coords == null) {
+ showToast(res.getString(R.string.err_location_unknown));
+ return;
+ }
- private void navigateTo(final Geopoint geopoint) {
- NavigationAppFactory.startDefaultNavigationApplication(1, this, geopoint);
+ NavigationAppFactory.startDefaultNavigationApplication(1, this, coords);
}
- private void cachesAround() {
- final Geopoint coords = getDestination();
-
+ private void cachesAround(final Geopoint coords) {
if (coords == null) {
showToast(res.getString(R.string.err_location_unknown));
return;
@@ -508,7 +512,7 @@ public class NavigateAnyPointActivity extends AbstractActionBarActivity implemen
// apply projection
if (StringUtils.isNotBlank(bearingText) && StringUtils.isNotBlank(distanceText)) {
// bearing & distance
- double bearing;
+ final double bearing;
try {
bearing = Double.parseDouble(bearingText);
} catch (final NumberFormatException ignored) {
@@ -516,7 +520,7 @@ public class NavigateAnyPointActivity extends AbstractActionBarActivity implemen
return null;
}
- double distance;
+ final double distance;
try {
distance = DistanceParser.parseDistance(distanceText,
!Settings.useImperialUnits());
@@ -542,11 +546,11 @@ public class NavigateAnyPointActivity extends AbstractActionBarActivity implemen
@Override
public void startDefaultNavigation() {
- navigateTo();
+ navigateTo(getDestinationAndAddToHistory());
}
@Override
public void startDefaultNavigation2() {
- NavigationAppFactory.startDefaultNavigationApplication(2, this, getDestination());
+ NavigationAppFactory.startDefaultNavigationApplication(2, this, getDestinationAndAddToHistory());
}
}