settings change

This commit is contained in:
MadWasp79 2020-02-14 11:16:06 +02:00
parent 640fb6af3d
commit 1578f4c91c
8 changed files with 40 additions and 26 deletions

View file

@ -11,6 +11,7 @@
Thx - Hardy
-->
<string name="no_recalculation_setting">Disable recalculation</string>
<string name="open_settings">Open settings</string>
<string name="plugin_disabled">Plugin disabled</string>
<string name="plugin_disabled_descr">This plugin is a separate application, you will need to remove it separately if you no longer plan to use it.\n\nThe plugin will remain on the device after removing OsmAnd.</string>

View file

@ -451,7 +451,7 @@ public class OsmandSettings {
public void copyProfilePreferences(ApplicationMode modeFrom, ApplicationMode modeTo, List<OsmandPreference> profilePreferences) {
for (OsmandPreference pref : profilePreferences) {
if (prefCanBeCopiedOrReset(pref) && !USER_PROFILE_NAME.getId().equals(pref.getId())) {
if (prefCanBeCopiedOrReset(pref) && !USER_PROFILE_NAME.getId().equals(pref.getId()) && !ROUTE_RECALCULATION_DISTANCE.getId().equals(pref.getId())) {
CommonPreference profilePref = (CommonPreference) pref;
if (PARENT_APP_MODE.getId().equals(pref.getId())) {
if (modeTo.isCustomProfile()) {
@ -1465,7 +1465,7 @@ public class OsmandSettings {
@Override
public SpeedConstants getProfileDefaultValue(ApplicationMode mode) {
MetricsConstants mc = METRIC_SYSTEM.get();
MetricsConstants mc = METRIC_SYSTEM.getModeValue(mode);
if (mode.isDerivedRoutingFrom(ApplicationMode.PEDESTRIAN)) {
if (mc == MetricsConstants.KILOMETERS_AND_METERS) {
return SpeedConstants.MINUTES_PER_KILOMETER;
@ -3282,7 +3282,15 @@ public class OsmandSettings {
return customBooleanRoutingProps.get(attrName);
}
public final CommonPreference<Float> ROUTE_RECALCULATION_DISTANCE = new FloatPreference("routing_recalc_distance", -1.f).makeProfile();
public final CommonPreference<Float> ROUTE_RECALCULATION_DISTANCE = new FloatPreference("routing_recalc_distance", 0.f){
@Override
public Float getProfileDefaultValue(ApplicationMode mode) {
if (mode.getRouteService() == RouteService.DIRECT_TO) {
return -1.0f;
}
return super.getProfileDefaultValue(mode);
}
}.makeProfile();
public final OsmandPreference<Boolean> USE_OSM_LIVE_FOR_ROUTING = new BooleanPreference("enable_osmc_routing", true).makeGlobal();

View file

@ -353,7 +353,8 @@ public class MeasurementEditingContext {
}
}
};
params.routeRecalculationDistance
= application.getSettings().ROUTE_RECALCULATION_DISTANCE.getModeValue(snapToRoadAppMode);
return params;
}

View file

@ -35,7 +35,6 @@ public class RouteCalculationParams {
public RouteCalculationResultListener resultListener;
public boolean showOriginalRoute;
public boolean noRecalculations;
public float routeRecalculationDistance;
public interface RouteCalculationResultListener {

View file

@ -63,9 +63,9 @@ public class RouteCalculationResult {
protected int currentWaypointGPX = 0;
protected int lastWaypointGPX = 0;
protected ApplicationMode appMode;
protected boolean noRecalculations = false;
protected boolean showOriginalRoute = false;
protected float routeRecalcDistance = -1f;
protected float routeRecalcDistance = 0.f;
public RouteCalculationResult(String errorMessage) {
this.errorMessage = errorMessage;
@ -114,9 +114,10 @@ public class RouteCalculationResult {
updateDirectionsTime(this.directions, this.listDistance);
this.showOriginalRoute = params.showOriginalRoute;
this.noRecalculations = params.noRecalculations;
if (params.routeRecalculationDistance != 0)
this.routeRecalcDistance = params.routeRecalculationDistance;
if (params.routeRecalculationDistance != 0.f) {
this.routeRecalcDistance = params.routeRecalculationDistance;
}
}
public RouteCalculationResult(List<RouteSegmentResult> list, Location start, LatLon end, List<LatLon> intermediates,

View file

@ -1262,7 +1262,6 @@ public class RouteProvider {
private RouteCalculationResult findDirectTo(RouteCalculationParams params) {
params.showOriginalRoute = true;
params.noRecalculations = true;
double[] lats = new double[] { params.start.getLatitude(), params.end.getLatitude() };
double[] lons = new double[] { params.start.getLongitude(), params.end.getLongitude() };
List<LatLon> intermediates = params.intermediates;

View file

@ -441,8 +441,8 @@ public class RoutingHelper {
// 2. Analyze if we need to recalculate route
// >100m off current route (sideways) or parameter (for Straight line)
if (currentRoute > 0 && !route.noRecalculations) {
double allowableDeviation = route.routeRecalcDistance <= 0 ? (1.7 * posTolerance) : route.routeRecalcDistance;
if (currentRoute > 0 && route.getRouteRecalcDistance() >= 0.f) {
double allowableDeviation = route.routeRecalcDistance == 0 ? (1.7 * posTolerance) : route.routeRecalcDistance;
distOrth = getOrthogonalDistance(currentLocation, routeNodes.get(currentRoute - 1), routeNodes.get(currentRoute));
if ((!settings.DISABLE_OFFROUTE_RECALC.get()) && (distOrth > allowableDeviation)) {
log.info("Recalculate route, because correlation : " + distOrth); //$NON-NLS-1$
@ -453,9 +453,9 @@ public class RoutingHelper {
// 3. Identify wrong movement direction
Location next = route.getNextRouteLocation();
boolean wrongMovementDirection = checkWrongMovementDirection(currentLocation, next);
double allowableDeviation = route.routeRecalcDistance <= 0 ? (2 * posTolerance) : route.routeRecalcDistance;
double allowableDeviation = route.routeRecalcDistance == 0.f ? (2 * posTolerance) : route.routeRecalcDistance;
if ((!settings.DISABLE_WRONG_DIRECTION_RECALC.get()) && wrongMovementDirection
&& (currentLocation.distanceTo(routeNodes.get(currentRoute)) > allowableDeviation) && !route.noRecalculations) {
&& (currentLocation.distanceTo(routeNodes.get(currentRoute)) > allowableDeviation) && route.getRouteRecalcDistance() >= 0) {
log.info("Recalculate route, because wrong movement direction: " + currentLocation.distanceTo(routeNodes.get(currentRoute))); //$NON-NLS-1$
isDeviatedFromRoute = true;
calculateRoute = true;
@ -467,15 +467,15 @@ public class RoutingHelper {
// 5. Update Voice router
// Do not update in route planning mode
if (isFollowingMode) {
boolean inRecalc = calculateRoute || isRouteBeingCalculated();
boolean inRecalc = (calculateRoute || isRouteBeingCalculated());
if (!inRecalc && !wrongMovementDirection) {
voiceRouter.updateStatus(currentLocation, false);
voiceRouterStopped = false;
} else if (isDeviatedFromRoute && !voiceRouterStopped && !route.noRecalculations) {
} else if (isDeviatedFromRoute && !voiceRouterStopped && route.getRouteRecalcDistance() >= 0.f) {
voiceRouter.interruptRouteCommands();
voiceRouterStopped = true; // Prevents excessive execution of stop() code
}
if (distOrth > mode.getOffRouteDistance() && !route.noRecalculations) {
if (distOrth > mode.getOffRouteDistance() && route.getRouteRecalcDistance() >= 0.f) {
voiceRouter.announceOffRoute(distOrth);
}
}

View file

@ -143,7 +143,9 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
if (am.getRouteService() != RouteProvider.RouteService.OSMAND) {
screen.addPreference(fastRoute);
if (am.getRouteService() == RouteProvider.RouteService.STRAIGHT) {
setupSelectRouteRecalcDistance(screen);
setupSelectRouteRecalcDistance(screen, 1);
} else if (am.getRouteService() == RouteProvider.RouteService.DIRECT_TO) {
setupSelectRouteRecalcDistance(screen, 0);
}
} else {
GeneralRouter router = getRouter(getMyApplication().getRoutingConfig(), am);
@ -234,29 +236,32 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
}
}
private void setupSelectRouteRecalcDistance(PreferenceScreen screen) {
private void setupSelectRouteRecalcDistance(PreferenceScreen screen, int defaultValue) {
Float[] entryValues;
OsmandSettings settings = app.getSettings();
OsmandSettings.MetricsConstants mc = settings.METRIC_SYSTEM.get();
if (mc == OsmandSettings.MetricsConstants.KILOMETERS_AND_METERS) {
entryValues = new Float[] {-1.0f, 10.f, 20.0f, 30.0f, 50.0f, 100.0f, 200.0f, 500.0f, 1000.0f, 1500.0f};
entryValues = new Float[] {-1.0f, 0.f, 10.f, 20.0f, 30.0f, 50.0f, 100.0f, 200.0f, 500.0f, 1000.0f, 1500.0f};
} else {
entryValues = new Float[] {-1.0f, 9.1f, 18.3f, 30.5f, 45.7f, 91.5f, 183.0f, 482.0f, 965.0f, 1609.0f};
entryValues = new Float[] {-1.0f, 0.f, 9.1f, 18.3f, 30.5f, 45.7f, 91.5f, 183.0f, 482.0f, 965.0f, 1609.0f};
}
String[] entries = new String[entryValues.length];
entries[0] = getString(R.string.shared_string_not_selected);
for (int i = 1; i < entryValues.length; i++) {
entries[0] = getString(R.string.no_recalculation_setting);
entries[1] = getString(R.string.shared_string_default);
for (int i = 2; i < entryValues.length; i++) {
entries[i] = OsmAndFormatter.getFormattedDistance(entryValues[i], app, false);
}
ListPreferenceEx routeRecalculationDist = createListPreferenceEx(settings.ROUTE_RECALCULATION_DISTANCE.getId(),
entries, entryValues, R.string.route_recalculation_dist_title, R.layout.preference_with_descr);
routeRecalculationDist.setEntries(entries);
routeRecalculationDist.setEntryValues(entryValues);
routeRecalculationDist.setDescription(getString(R.string.route_recalculation_dist_descr));
routeRecalculationDist.setIcon(getRoutingPrefIcon("routing_recalc_distance"));
screen.addPreference(routeRecalculationDist);
}