diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2014-09-03 20:12:33 +0200 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2014-09-03 20:12:33 +0200 |
| commit | ab11c1f8f81c6e9e24f51642d4c3d390a2d40394 (patch) | |
| tree | 495ab9a0eeb032c6ee34e6a662327bf5a9fdc63a /main | |
| parent | 37ccdae86a0d14889867cbdbf6f788fc91b02d37 (diff) | |
| download | cgeo-ab11c1f8f81c6e9e24f51642d4c3d390a2d40394.zip cgeo-ab11c1f8f81c6e9e24f51642d4c3d390a2d40394.tar.gz cgeo-ab11c1f8f81c6e9e24f51642d4c3d390a2d40394.tar.bz2 | |
list all waypoints as navigation target in compass
Diffstat (limited to 'main')
| -rw-r--r-- | main/res/layout/compass_activity.xml | 2 | ||||
| -rw-r--r-- | main/res/menu/compass_activity_options.xml | 3 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/CompassActivity.java | 74 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java | 12 |
4 files changed, 44 insertions, 47 deletions
diff --git a/main/res/layout/compass_activity.xml b/main/res/layout/compass_activity.xml index ab1fe6d..914a17a 100644 --- a/main/res/layout/compass_activity.xml +++ b/main/res/layout/compass_activity.xml @@ -18,6 +18,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" + android:text="@null" android:textColor="?text_color" android:textSize="14sp" /> @@ -26,6 +27,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" + android:text="@null" android:textColor="?text_color" android:textSize="14sp" /> diff --git a/main/res/menu/compass_activity_options.xml b/main/res/menu/compass_activity_options.xml index 30861dd..59c0b36 100644 --- a/main/res/menu/compass_activity_options.xml +++ b/main/res/menu/compass_activity_options.xml @@ -25,6 +25,7 @@ android:id="@+id/menu_select_destination" android:icon="@drawable/ic_menu_myplaces" android:title="@string/destination_select" + android:visible="false" app:showAsAction="ifRoom|withText"> <menu /> <!-- filled dynamically --> </item> @@ -43,7 +44,7 @@ android:id="@+id/menu_compass_sensor_magnetic" android:title="@string/use_compass"> </item> - </group> + </group> </menu> </item> diff --git a/main/src/cgeo/geocaching/CompassActivity.java b/main/src/cgeo/geocaching/CompassActivity.java index 6913b2a..00fa790 100644 --- a/main/src/cgeo/geocaching/CompassActivity.java +++ b/main/src/cgeo/geocaching/CompassActivity.java @@ -38,14 +38,10 @@ import android.view.SubMenu; import android.view.View; import android.widget.TextView; -import java.util.ArrayList; -import java.util.Collection; import java.util.List; public class CompassActivity extends AbstractActionBarActivity { - 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; @@ -60,7 +56,6 @@ public class CompassActivity extends AbstractActionBarActivity { private static final String EXTRAS_NAME = "name"; private static final String EXTRAS_GEOCODE = "geocode"; private static final String EXTRAS_CACHE_INFO = "cacheinfo"; - private static final List<IWaypoint> coordinates = new ArrayList<>(); /** * Destination of the compass, or null (if the compass is used for a waypoint only). @@ -158,21 +153,28 @@ public class CompassActivity extends AbstractActionBarActivity { public boolean onCreateOptionsMenu(final Menu menu) { getMenuInflater().inflate(R.menu.compass_activity_options, menu); menu.findItem(R.id.menu_compass_sensor).setVisible(hasMagneticFieldSensor); - final SubMenu subMenu = menu.findItem(R.id.menu_select_destination).getSubMenu(); - if (coordinates.size() > 1) { - for (int i = 0; i < coordinates.size(); i++) { - final IWaypoint coordinate = coordinates.get(i); - subMenu.add(0, COORDINATES_OFFSET + i, 0, coordinate.getName() + " (" + coordinate.getCoordType() + ")"); - } - } else { - menu.findItem(R.id.menu_select_destination).setVisible(false); - } if (cache != null) { LoggingUI.addMenuItems(this, menu, cache); } + addWaypointItems(menu); return true; } + private void addWaypointItems(final Menu menu) { + if (cache != null) { + final List<Waypoint> waypoints = cache.getWaypoints(); + boolean visible = false; + final SubMenu subMenu = menu.findItem(R.id.menu_select_destination).getSubMenu(); + for (final Waypoint waypoint : waypoints) { + if (waypoint.getCoords() != null) { + subMenu.add(0, waypoint.getId(), 0, waypoint.getName()); + visible = true; + } + } + menu.findItem(R.id.menu_select_destination).setVisible(visible); + } + } + @Override public boolean onPrepareOptionsMenu(final Menu menu) { super.onPrepareOptionsMenu(menu); @@ -214,18 +216,19 @@ public class CompassActivity extends AbstractActionBarActivity { if (LoggingUI.onMenuItemSelected(item, this, cache)) { return true; } - final int coordinatesIndex = id - COORDINATES_OFFSET; - if (coordinatesIndex >= 0 && coordinatesIndex < coordinates.size()) { - final IWaypoint coordinate = coordinates.get(coordinatesIndex); - title = coordinate.getName(); - dstCoords = coordinate.getCoords(); - setTitle(); - setDestCoords(); - setCacheInfo(); - updateDistanceInfo(app.currentGeo()); - - Log.d("destination set: " + title + " (" + dstCoords + ")"); - return true; + if (cache != null) { + final Waypoint waypoint = cache.getWaypointById(id); + if (waypoint != null) { + title = waypoint.getName(); + dstCoords = waypoint.getCoords(); + setTitle(); + setDestCoords(); + setCacheInfo(); + updateDistanceInfo(app.currentGeo()); + + Log.d("destination set: " + title + " (" + dstCoords + ")"); + return true; + } } } return super.onOptionsItemSelected(item); @@ -312,17 +315,8 @@ public class CompassActivity extends AbstractActionBarActivity { } } - public static void startActivity(final Context context, final String geocode, final String displayedName, final Geopoint coords, final Collection<IWaypoint> coordinatesWithType, + public static void startActivity(final Context context, final String geocode, final String displayedName, final Geopoint coords, final String info) { - coordinates.clear(); - if (coordinatesWithType != null) { - for (final IWaypoint coordinate : coordinatesWithType) { - if (coordinate != null) { - coordinates.add(coordinate); - } - } - } - final Intent navigateIntent = new Intent(context, CompassActivity.class); navigateIntent.putExtra(EXTRAS_COORDS, coords); navigateIntent.putExtra(EXTRAS_GEOCODE, geocode); @@ -333,12 +327,12 @@ public class CompassActivity extends AbstractActionBarActivity { context.startActivity(navigateIntent); } - public static void startActivity(final Context context, final String geocode, final String displayedName, final Geopoint coords, final Collection<IWaypoint> coordinatesWithType) { - CompassActivity.startActivity(context, geocode, displayedName, coords, coordinatesWithType, null); + public static void startActivity(final Context context, final String geocode, final String displayedName, final Geopoint coords) { + startActivity(context, geocode, displayedName, coords, null); } - public static void startActivity(final Context context, final Geocache cache) { - startActivity(context, cache.getGeocode(), cache.getName(), cache.getCoords(), null, + public static void startActivityCache(final Context context, final Geocache cache) { + startActivity(context, cache.getGeocode(), cache.getName(), cache.getCoords(), Formatter.formatCacheInfoShort(cache)); } diff --git a/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java b/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java index 03d2220..743ce1f 100644 --- a/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java +++ b/main/src/cgeo/geocaching/apps/cache/navi/CompassApp.java @@ -20,19 +20,19 @@ class CompassApp extends AbstractPointNavigationApp { } @Override - public void navigate(Activity activity, Geopoint coords) { - CompassActivity.startActivity(activity, getString(R.string.navigation_direct_navigation), getString(R.string.navigation_target), coords, null); + public void navigate(final Activity activity, final Geopoint coords) { + CompassActivity.startActivity(activity, getString(R.string.navigation_direct_navigation), getString(R.string.navigation_target), coords); } @Override - public void navigate(Activity activity, Waypoint waypoint) { - CompassActivity.startActivity(activity, waypoint.getPrefix() + "/" + waypoint.getLookup(), waypoint.getName(), waypoint.getCoords(), null, + public void navigate(final Activity activity, final Waypoint waypoint) { + CompassActivity.startActivity(activity, waypoint.getPrefix() + "/" + waypoint.getLookup(), waypoint.getName(), waypoint.getCoords(), waypoint.getWaypointType().getL10n()); } @Override - public void navigate(Activity activity, Geocache cache) { - CompassActivity.startActivity(activity, cache); + public void navigate(final Activity activity, final Geocache cache) { + CompassActivity.startActivityCache(activity, cache); } }
\ No newline at end of file |
