consolidate directions
This commit is contained in:
parent
78f78c3998
commit
c3b0e8a07c
6 changed files with 64 additions and 80 deletions
|
@ -9,6 +9,9 @@
|
|||
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
|
||||
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
|
||||
-->
|
||||
<string name="clear_intermediate_points">Clear intermediate points</string>
|
||||
<string name="keep_intermediate_points">Keep intermediate points</string>
|
||||
<string name="new_directions_point_dialog">You already have intermediate points set.</string>
|
||||
<string name="context_menu_item_directions_to">Directions To</string>
|
||||
<string name="context_menu_item_directions_from">Directions From</string>
|
||||
<string name="route_descr_map_location">Map: </string>
|
||||
|
|
|
@ -165,6 +165,10 @@ public class TargetPointsHelper {
|
|||
}
|
||||
|
||||
public void navigateToPoint(LatLon point, boolean updateRoute, int intermediate){
|
||||
navigateToPoint(point, updateRoute, intermediate, null);
|
||||
}
|
||||
|
||||
public void navigateToPoint(LatLon point, boolean updateRoute, int intermediate, String historyName){
|
||||
if(point != null){
|
||||
if(intermediate < 0) {
|
||||
settings.setPointToNavigate(point.getLatitude(), point.getLongitude(), null);
|
||||
|
@ -178,7 +182,6 @@ public class TargetPointsHelper {
|
|||
}
|
||||
readFromSettings(settings);
|
||||
updateRouteAndReferesh(updateRoute);
|
||||
|
||||
}
|
||||
|
||||
public boolean checkPointToNavigate(ClientContext ctx ){
|
||||
|
@ -190,19 +193,4 @@ public class TargetPointsHelper {
|
|||
}
|
||||
|
||||
|
||||
public void setDestination(double lat, double lon, String historyName) {
|
||||
//clearPointToNavigate(false);
|
||||
// Do not delete waypoints here
|
||||
settings.clearPointToNavigate();
|
||||
settings.setPointToNavigate(lat, lon, true, historyName);
|
||||
updatePointsFromSettings();
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void updatePointsFromSettings() {
|
||||
readFromSettings(settings);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -304,7 +304,7 @@ public class MapActivity extends AccessibleActivity {
|
|||
Location loc = new Location("map");
|
||||
loc.setLatitude(mapView.getLatitude());
|
||||
loc.setLongitude(mapView.getLongitude());
|
||||
mapActions.getDirections(loc, DirectionDialogStyle.create());
|
||||
mapActions.getDirections(loc, null, DirectionDialogStyle.create());
|
||||
}
|
||||
if(mapLabelToShow != null && latLonToShow != null){
|
||||
mapLayers.getContextMenuLayer().setSelectedObject(toShow);
|
||||
|
|
|
@ -464,7 +464,7 @@ public class MapActivityActions implements DialogProvider {
|
|||
}
|
||||
|
||||
|
||||
public void getDirections(final Location mapView, DirectionDialogStyle style) {
|
||||
public void getDirections(final Location mapView, String name, DirectionDialogStyle style) {
|
||||
final Location current = getLastKnownLocation();
|
||||
Builder builder = new AlertDialog.Builder(mapActivity);
|
||||
final TargetPointsHelper targets = getTargets();
|
||||
|
@ -480,9 +480,9 @@ public class MapActivityActions implements DialogProvider {
|
|||
buttons[ApplicationMode.PEDESTRIAN.ordinal()] = (ToggleButton) view.findViewById(R.id.PedestrianButton);
|
||||
buttons[ApplicationMode.PEDESTRIAN.ordinal()].setButtonDrawable(R.drawable.ic_pedestrian);
|
||||
|
||||
final Spinner fromSpinner = setupFromSpinner(mapView, view, style);
|
||||
final Spinner fromSpinner = setupFromSpinner(mapView, name,view, style);
|
||||
final List<LatLon> toList = new ArrayList<LatLon>();
|
||||
final Spinner toSpinner = setupToSpinner(mapView, view, toList, style);
|
||||
final Spinner toSpinner = setupToSpinner(mapView, name,view, toList, style);
|
||||
|
||||
|
||||
String via = generateViaDescription();
|
||||
|
@ -622,13 +622,13 @@ public class MapActivityActions implements DialogProvider {
|
|||
builder.show();
|
||||
}
|
||||
|
||||
private Spinner setupFromSpinner(final Location mapView, View view, DirectionDialogStyle style) {
|
||||
private Spinner setupFromSpinner(final Location mapView, String name, View view, DirectionDialogStyle style) {
|
||||
String currentLocation = mapActivity.getString(R.string.route_descr_current_location);
|
||||
ArrayList<String> fromActions = new ArrayList<String>();
|
||||
fromActions.add(currentLocation);
|
||||
if(mapView != null) {
|
||||
String mapLocation = mapActivity.getString(R.string.route_descr_map_location) + " " + getRoutePointDescription(mapView.getLatitude(),
|
||||
mapView.getLongitude());
|
||||
String oname = name != null ? name : getRoutePointDescription(mapView.getLatitude(),mapView.getLongitude());
|
||||
String mapLocation = mapActivity.getString(R.string.route_descr_map_location) + " " + oname;
|
||||
fromActions.add(mapLocation);
|
||||
}
|
||||
final Spinner fromSpinner = ((Spinner) view.findViewById(R.id.FromSpinner));
|
||||
|
@ -643,7 +643,7 @@ public class MapActivityActions implements DialogProvider {
|
|||
return fromSpinner;
|
||||
}
|
||||
|
||||
private Spinner setupToSpinner(final Location mapView, View view, List<LatLon> locs, DirectionDialogStyle style) {
|
||||
private Spinner setupToSpinner(final Location mapView, String name, View view, List<LatLon> locs, DirectionDialogStyle style) {
|
||||
final TargetPointsHelper targets = getTargets();
|
||||
ArrayList<String> toActions = new ArrayList<String>();
|
||||
if (targets.getPointToNavigate() != null) {
|
||||
|
@ -652,8 +652,8 @@ public class MapActivityActions implements DialogProvider {
|
|||
locs.add(targets.getPointToNavigate());
|
||||
}
|
||||
if(mapView != null) {
|
||||
String mapLocation = mapActivity.getString(R.string.route_descr_map_location) + " " + getRoutePointDescription(mapView.getLatitude(),
|
||||
mapView.getLongitude());
|
||||
String oname = name != null ? name : getRoutePointDescription(mapView.getLatitude(),mapView.getLongitude());
|
||||
String mapLocation = mapActivity.getString(R.string.route_descr_map_location) + " " + oname;
|
||||
toActions.add(mapLocation);
|
||||
locs.add(new LatLon(mapView.getLatitude(), mapView.getLongitude()));
|
||||
}
|
||||
|
@ -874,7 +874,8 @@ public class MapActivityActions implements DialogProvider {
|
|||
Location loc = new Location("map");
|
||||
loc.setLatitude(latitude);
|
||||
loc.setLongitude(longitude);
|
||||
getDirections(loc, DirectionDialogStyle.create().gpxRouteEnabled().routeToMapPoint());
|
||||
String name = mapActivity.getMapLayers().getContextMenuLayer().getSelectedObjectName();
|
||||
getDirections(loc, name, DirectionDialogStyle.create().gpxRouteEnabled().routeToMapPoint());
|
||||
} else {
|
||||
targets.navigateToPoint(new LatLon(latitude, longitude), true, -1);
|
||||
}
|
||||
|
@ -883,19 +884,18 @@ public class MapActivityActions implements DialogProvider {
|
|||
Location loc = new Location("map");
|
||||
loc.setLatitude(latitude);
|
||||
loc.setLongitude(longitude);
|
||||
getDirections(loc, DirectionDialogStyle.create().gpxRouteEnabled().routeFromMapPoint());
|
||||
String name = mapActivity.getMapLayers().getContextMenuLayer().getSelectedObjectName();
|
||||
getDirections(loc, name, DirectionDialogStyle.create().gpxRouteEnabled().routeFromMapPoint());
|
||||
}
|
||||
} else if (standardId == R.string.context_menu_item_intermediate_point) {
|
||||
// Issue 1929: Consistently show IntermediatePointDialog, without subsequent Directions screen
|
||||
//targets.navigateToPoint(new LatLon(latitude, longitude), true, targets.getIntermediatePoints().size());
|
||||
// TODO: enhance next statement to transmit getSelectedObjectName for clicked objects like favorites instead of just coordinates
|
||||
String selected = mapActivity.getMapLayers().getContextMenuLayer().getSelectedObjectName();
|
||||
int sz = targets.getIntermediatePoints().size();
|
||||
targets.navigateToPoint(new LatLon(latitude, longitude), true, sz);
|
||||
targets.navigateToPoint(new LatLon(latitude, longitude), true, sz, selected);
|
||||
IntermediatePointsDialog.openIntermediatePointsDialog(mapActivity);
|
||||
// For button-less search UI
|
||||
} else if (standardId == R.string.context_menu_item_destination_point) {
|
||||
// TODO: enhance next statement to transmit getSelectedObjectName for clicked objects like favorites instead of just coordinates
|
||||
targets.navigateToPoint(new LatLon(latitude, longitude), true, -1);
|
||||
String selected = mapActivity.getMapLayers().getContextMenuLayer().getSelectedObjectName();
|
||||
targets.navigateToPoint(new LatLon(latitude, longitude), true, -1, selected);
|
||||
IntermediatePointsDialog.openIntermediatePointsDialog(mapActivity);
|
||||
} else if (standardId == R.string.context_menu_item_share_location) {
|
||||
shareLocation(latitude, longitude, mapActivity.getMapView().getZoom());
|
||||
|
@ -1071,7 +1071,7 @@ public class MapActivityActions implements DialogProvider {
|
|||
Location loc = new Location("map");
|
||||
loc.setLatitude(mapView.getLatitude());
|
||||
loc.setLongitude(mapView.getLongitude());
|
||||
getDirections(loc, DirectionDialogStyle.create().gpxRouteEnabled());
|
||||
getDirections(loc, null, DirectionDialogStyle.create().gpxRouteEnabled());
|
||||
}
|
||||
}
|
||||
}).reg();
|
||||
|
@ -1332,9 +1332,8 @@ public class MapActivityActions implements DialogProvider {
|
|||
if (onShow != null) {
|
||||
onShow.onClick(v);
|
||||
}
|
||||
targetPointsHelper.setDestination(location.getLatitude(), location.getLongitude(), name);
|
||||
MapActivity.launchMapActivityMoveToTop(activity);
|
||||
qa.dismiss();
|
||||
MapActivityActions.directionsToDialogAndLaunchMap(activity, location.getLatitude(), location.getLongitude(), name);
|
||||
}
|
||||
});
|
||||
qa.addActionItem(setAsDestination);
|
||||
|
@ -1353,8 +1352,7 @@ public class MapActivityActions implements DialogProvider {
|
|||
if (onShow != null) {
|
||||
onShow.onClick(v);
|
||||
}
|
||||
// Issue 1929 TODO: Check where this dialogue appears and replace by IntermediatePointsDialog
|
||||
navigatePointDialogAndLaunchMap(activity, location.getLatitude(), location.getLongitude(), name);
|
||||
addWaypointDialogAndLaunchMap(activity, location.getLatitude(), location.getLongitude(), name);
|
||||
qa.dismiss();
|
||||
}
|
||||
});
|
||||
|
@ -1399,12 +1397,36 @@ public class MapActivityActions implements DialogProvider {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public static void navigatePointDialogAndLaunchMap(final Activity act, final double lat, final double lon, final String name) {
|
||||
// Issue 1929: This dialog not needed anymore
|
||||
public static void directionsToDialogAndLaunchMap(final Activity act, final double lat, final double lon, final String name) {
|
||||
OsmandApplication ctx = (OsmandApplication) act.getApplication();
|
||||
final TargetPointsHelper targetPointsHelper = ctx.getTargetPointsHelper();
|
||||
if (targetPointsHelper.getIntermediatePoints().size() > 0) {
|
||||
Builder builder = new AlertDialog.Builder(act);
|
||||
builder.setTitle(R.string.new_directions_point_dialog);
|
||||
builder.setItems(
|
||||
new String[] { act.getString(R.string.keep_intermediate_points),
|
||||
act.getString(R.string.clear_intermediate_points)},
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (which == 1) {
|
||||
targetPointsHelper.clearPointToNavigate(false);
|
||||
}
|
||||
targetPointsHelper.navigateToPoint(new LatLon(lat, lon), true, -1);
|
||||
MapActivity.launchMapActivityMoveToTop(act);
|
||||
}
|
||||
});
|
||||
builder.show();
|
||||
} else {
|
||||
targetPointsHelper.navigateToPoint(new LatLon(lat, lon), true, -1);
|
||||
MapActivity.launchMapActivityMoveToTop(act);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void addWaypointDialogAndLaunchMap(final Activity act, final double lat, final double lon, final String name) {
|
||||
OsmandApplication ctx = (OsmandApplication) act.getApplication();
|
||||
final TargetPointsHelper targetPointsHelper = ctx.getTargetPointsHelper();
|
||||
final OsmandSettings settings = ctx.getSettings();
|
||||
if (targetPointsHelper.getPointToNavigate() != null) {
|
||||
Builder builder = new AlertDialog.Builder(act);
|
||||
builder.setTitle(R.string.new_destination_point_dialog);
|
||||
|
@ -1415,28 +1437,18 @@ public class MapActivityActions implements DialogProvider {
|
|||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (which == 0) {
|
||||
settings.setPointToNavigate(lat, lon, false, name);
|
||||
targetPointsHelper.navigateToPoint(new LatLon(lat, lon), true, -1);
|
||||
} else if (which == 2) {
|
||||
int sz = targetPointsHelper.getIntermediatePoints().size();
|
||||
// LatLon pt = targetPointsHelper.getPointToNavigate();
|
||||
settings.insertIntermediatePoint(lat, lon, name, sz, false);
|
||||
// settings.setPointToNavigate(pt.getLatitude(), pt.getLongitude(), false,
|
||||
// settings.getPointNavigateDescription());
|
||||
// I believe the following prior code was buggy, Hardy 2013-06-10:
|
||||
// settings.insertIntermediatePoint(pt.getLatitude(), pt.getLongitude(),
|
||||
// settings.getPointNavigateDescription(), sz, true);
|
||||
// settings.setPointToNavigate(lat, lon, true, name);
|
||||
targetPointsHelper.navigateToPoint(new LatLon(lat, lon), true, targetPointsHelper.getIntermediatePoints().size());
|
||||
} else {
|
||||
settings.insertIntermediatePoint(lat, lon, name, 0, false);
|
||||
targetPointsHelper.navigateToPoint(new LatLon(lat, lon), true, 0);
|
||||
}
|
||||
targetPointsHelper.updatePointsFromSettings();
|
||||
MapActivity.launchMapActivityMoveToTop(act);
|
||||
}
|
||||
});
|
||||
builder.show();
|
||||
} else {
|
||||
settings.setPointToNavigate(lat, lon, false, name);
|
||||
targetPointsHelper.updatePointsFromSettings();
|
||||
targetPointsHelper.navigateToPoint(new LatLon(lat, lon), true, -1);
|
||||
MapActivity.launchMapActivityMoveToTop(act);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -274,18 +274,9 @@ public class NavigatePointFragment extends SherlockFragment implements SearchAct
|
|||
dlg.show();
|
||||
MapActivityActions.prepareAddFavouriteDialog(getActivity(), dlg, b, lat, lon, getString(R.string.point_on_map, lat, lon));
|
||||
} else if (mode == NAVIGATE_TO) {
|
||||
targetPointsHelper.setDestination(lat, lon, getString(R.string.point_on_map, lat, lon));
|
||||
MapActivity.launchMapActivityMoveToTop(getActivity());
|
||||
MapActivityActions.directionsToDialogAndLaunchMap(getActivity(), lat, lon, getString(R.string.point_on_map, lat, lon));
|
||||
} else if (mode == ADD_WAYPOINT) {
|
||||
MapActivityActions.navigatePointDialogAndLaunchMap(getActivity(), lat, lon, getString(R.string.point_on_map, lat, lon));
|
||||
// Issue 1929 TODO: show IntermediatePointsDialog here instead of navigatePointDialog, without subsequent Directions
|
||||
//if (targetPointsHelper.getIntermediatePoints().size() == 0) {
|
||||
// targetPointsHelper.navigateToPoint(new LatLon(lat, lon), true, -1);
|
||||
//} else {
|
||||
// targetPointsHelper.navigateToPoint(new LatLon(lat, lon), true, targetPointsHelper.getIntermediatePoints().size());
|
||||
//}
|
||||
//IntermediatePointsDialog.openIntermediatePointsDialog(getActivity());
|
||||
//MapActivity.launchMapActivityMoveToTop(getActivity());
|
||||
MapActivityActions.addWaypointDialogAndLaunchMap(getActivity(), lat, lon, getString(R.string.point_on_map, lat, lon));
|
||||
} else if (mode == SHOW_ON_MAP){
|
||||
OsmandApplication app = (OsmandApplication) getActivity().getApplication();
|
||||
app.getSettings().setMapLocationToShow(lat, lon, Math.max(12, app.getSettings().getLastKnownMapZoom()),
|
||||
|
|
|
@ -306,20 +306,10 @@ public class SearchAddressFragment extends SherlockFragment {
|
|||
getActivity().finish();
|
||||
} else {
|
||||
OsmandApplication ctx = (OsmandApplication) getActivity().getApplication();
|
||||
final TargetPointsHelper targetPointsHelper = ctx.getTargetPointsHelper();
|
||||
if (mode == NAVIGATE_TO) {
|
||||
targetPointsHelper.setDestination(searchPoint.getLatitude(), searchPoint.getLongitude(), historyName);
|
||||
MapActivity.launchMapActivityMoveToTop(getActivity());
|
||||
MapActivityActions.directionsToDialogAndLaunchMap(getActivity(), searchPoint.getLatitude(), searchPoint.getLongitude(), historyName);
|
||||
} else if (mode == ADD_WAYPOINT) {
|
||||
MapActivityActions.navigatePointDialogAndLaunchMap(getActivity(), searchPoint.getLatitude(), searchPoint.getLongitude(), historyName);
|
||||
// Issue 1929 TODO: show IntermediatePointsDialog here instead of navigatePointDialog, without subsequent Directions
|
||||
//if (targetPointsHelper.getIntermediatePoints().size() == 0) {
|
||||
// targetPointsHelper.navigateToPoint(searchPoint, true, -1);
|
||||
//} else {
|
||||
// targetPointsHelper.navigateToPoint(searchPoint, true, targetPointsHelper.getIntermediatePoints().size());
|
||||
//}
|
||||
//IntermediatePointsDialog.openIntermediatePointsDialog(getActivity());
|
||||
//MapActivity.launchMapActivityMoveToTop(getActivity());
|
||||
MapActivityActions.addWaypointDialogAndLaunchMap(getActivity(), searchPoint.getLatitude(), searchPoint.getLongitude(), historyName);
|
||||
} else if (mode == SHOW_ON_MAP) {
|
||||
osmandSettings.setMapLocationToShow(searchPoint.getLatitude(), searchPoint.getLongitude(), zoom, historyName);
|
||||
MapActivity.launchMapActivityMoveToTop(getActivity());
|
||||
|
|
Loading…
Reference in a new issue