Merge branch 'r3.3'

Conflicts:
	OsmAnd/res/values/strings.xml
This commit is contained in:
Victor Shcherb 2019-03-18 15:59:30 +01:00
commit 5c4193db96
5 changed files with 55 additions and 69 deletions

View file

@ -67,7 +67,7 @@ public class TransportRoutePlanner {
ctx.visitedRoutesCount++; ctx.visitedRoutesCount++;
ctx.visitedSegments.put(segment.getId(), segment); ctx.visitedSegments.put(segment.getId(), segment);
if (segment.getDepth() > ctx.cfg.maxNumberOfChanges) { if (segment.getDepth() > ctx.cfg.maxNumberOfChanges + 1) {
continue; continue;
} }
if (segment.distFromStart > finishTime + ctx.cfg.finishTimeSeconds || if (segment.distFromStart > finishTime + ctx.cfg.finishTimeSeconds ||

View file

@ -18,7 +18,7 @@ public class TransportRoutingConfiguration {
public int walkChangeRadius = 300; public int walkChangeRadius = 300;
public int maxNumberOfChanges = 4; public int maxNumberOfChanges = 3;
public int finishTimeSeconds = 1200; public int finishTimeSeconds = 1200;
@ -92,7 +92,7 @@ public class TransportRoutingConfiguration {
maxRouteTime = router.getIntAttribute("maxRouteTime", maxRouteTime); maxRouteTime = router.getIntAttribute("maxRouteTime", maxRouteTime);
finishTimeSeconds = router.getIntAttribute("delayForAlternativesRoutes", finishTimeSeconds); finishTimeSeconds = router.getIntAttribute("delayForAlternativesRoutes", finishTimeSeconds);
String mn = params.get("max_num_changes"); String mn = params.get("max_num_changes");
maxNumberOfChanges = RoutingConfiguration.parseSilentInt(mn, maxNumberOfChanges); maxNumberOfChanges = (int) RoutingConfiguration.parseSilentFloat(mn, maxNumberOfChanges);
walkSpeed = router.getFloatAttribute("minDefaultSpeed", this.walkSpeed * 3.6f) / 3.6f; walkSpeed = router.getFloatAttribute("minDefaultSpeed", this.walkSpeed * 3.6f) / 3.6f;
defaultTravelSpeed = router.getFloatAttribute("maxDefaultSpeed", this.defaultTravelSpeed * 3.6f) / 3.6f; defaultTravelSpeed = router.getFloatAttribute("maxDefaultSpeed", this.defaultTravelSpeed * 3.6f) / 3.6f;

View file

@ -12,6 +12,7 @@
--> -->
<string name="avoid_pt_types_descr">Select public transport types to avoid for navigation:</string> <string name="avoid_pt_types_descr">Select public transport types to avoid for navigation:</string>
<string name="quick_action_day_night_mode">%s mode</string>
<string name="avoid_pt_types">Avoid transport types…</string> <string name="avoid_pt_types">Avoid transport types…</string>
<string name="shared_string_walk">Walk</string> <string name="shared_string_walk">Walk</string>
<string name="save_poi_value_exceed_length">The maximum length of tag \"%s\" is 255 characters. \nPlease shorten to continue.</string> <string name="save_poi_value_exceed_length">The maximum length of tag \"%s\" is 255 characters. \nPlease shorten to continue.</string>

View file

@ -7,6 +7,7 @@ import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings; import net.osmand.plus.OsmandSettings;
import net.osmand.plus.OsmandSettings.DayNightMode;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.quickaction.QuickAction; import net.osmand.plus.quickaction.QuickAction;
@ -20,23 +21,10 @@ public class DayNightModeAction extends QuickAction {
@Override @Override
public void execute(MapActivity activity) { public void execute(MapActivity activity) {
switch (activity.getMyApplication().getSettings().DAYNIGHT_MODE.get()){ if (activity.getMyApplication().getDaynightHelper().isNightMode()) {
case DAY: { activity.getMyApplication().getSettings().DAYNIGHT_MODE.set(OsmandSettings.DayNightMode.DAY);
activity.getMyApplication().getSettings().DAYNIGHT_MODE.set(OsmandSettings.DayNightMode.NIGHT); } else {
break; activity.getMyApplication().getSettings().DAYNIGHT_MODE.set(OsmandSettings.DayNightMode.NIGHT);
}
case NIGHT: {
activity.getMyApplication().getSettings().DAYNIGHT_MODE.set(OsmandSettings.DayNightMode.DAY);
break;
}
case AUTO: {
activity.getMyApplication().getSettings().DAYNIGHT_MODE.set(OsmandSettings.DayNightMode.DAY);
break;
}
case SENSOR: {
activity.getMyApplication().getSettings().DAYNIGHT_MODE.set(OsmandSettings.DayNightMode.DAY);
break;
}
} }
} }
@ -44,33 +32,28 @@ public class DayNightModeAction extends QuickAction {
public void drawUI(ViewGroup parent, MapActivity activity) { public void drawUI(ViewGroup parent, MapActivity activity) {
View view = LayoutInflater.from(parent.getContext()) View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.quick_action_with_text, parent, false); .inflate(R.layout.quick_action_with_text, parent, false);
((TextView) view.findViewById(R.id.text)) ((TextView) view.findViewById(R.id.text))
.setText(R.string.quick_action_switch_day_night_descr); .setText(R.string.quick_action_switch_day_night_descr);
parent.addView(view); parent.addView(view);
} }
@Override @Override
public int getIconRes(Context context) { public int getIconRes(Context context) {
if(context instanceof MapActivity) { if (context instanceof MapActivity
switch (((MapActivity) context).getMyApplication().getSettings().DAYNIGHT_MODE.get()) { && ((MapActivity) context).getMyApplication().getDaynightHelper().isNightMode()) {
case NIGHT: { return R.drawable.ic_action_map_day;
return R.drawable.ic_action_map_night;
}
case AUTO: {
return R.drawable.ic_action_map_sunst;
}
case SENSOR: {
return R.drawable.ic_action_map_light_sensor;
}
}
} }
return R.drawable.ic_action_map_day; return R.drawable.ic_action_map_night;
} }
@Override @Override
public String getActionText(OsmandApplication application) { public String getActionText(OsmandApplication application) {
return application.getSettings().DAYNIGHT_MODE.get().toHumanString(application) + " Mode"; if (application.getDaynightHelper().isNightMode()) {
return String.format(application.getString(R.string.quick_action_day_night_mode),
DayNightMode.DAY.toHumanString(application));
} else {
return String.format(application.getString(R.string.quick_action_day_night_mode),
DayNightMode.NIGHT.toHumanString(application));
}
} }
} }

View file

@ -73,6 +73,7 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe
private boolean isLayerOn; private boolean isLayerOn;
private boolean nightMode; private boolean nightMode;
private boolean currentWidgetState;
public MapQuickActionLayer(MapActivity activity, ContextMenuLayer contextMenuLayer) { public MapQuickActionLayer(MapActivity activity, ContextMenuLayer contextMenuLayer) {
this.mapActivity = activity; this.mapActivity = activity;
@ -199,35 +200,36 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe
return quickActionsWidget.getVisibility() == View.VISIBLE; return quickActionsWidget.getVisibility() == View.VISIBLE;
} }
/** /**
* @param showWidget * @param showWidget
* @return true, if state was changed * @return true, if state was changed
*/ */
public boolean setLayerState(boolean showWidget) { public boolean setLayerState(boolean showWidget) {
if (isWidgetVisible() == showWidget) // check if state change is needed currentWidgetState = showWidget;
return false; if (isWidgetVisible() == showWidget) // check if state change is needed
return false;
updateQuickActionButton(showWidget); updateQuickActionButton(showWidget);
if (settings.DO_NOT_USE_ANIMATIONS.get()) { if (settings.DO_NOT_USE_ANIMATIONS.get()) {
quickActionsWidget.setVisibility(!showWidget ? View.GONE : View.VISIBLE); quickActionsWidget.setVisibility(!showWidget ? View.GONE : View.VISIBLE);
} else { } else {
animateWidget(showWidget); animateWidget(showWidget);
} }
mapActivity.updateStatusBarColor(); mapActivity.updateStatusBarColor();
if (!showWidget) { if (!showWidget) {
quitMovingMarker(); quitMovingMarker();
quickActionRegistry.setUpdatesListener(null); quickActionRegistry.setUpdatesListener(null);
quickActionsWidget.setSelectionListener(null); quickActionsWidget.setSelectionListener(null);
} else { } else {
enterMovingMode(mapActivity.getMapView().getCurrentRotatedTileBox()); enterMovingMode(mapActivity.getMapView().getCurrentRotatedTileBox());
quickActionsWidget.setActions(quickActionRegistry.getFilteredQuickActions()); quickActionsWidget.setActions(quickActionRegistry.getFilteredQuickActions());
quickActionRegistry.setUpdatesListener(MapQuickActionLayer.this); quickActionRegistry.setUpdatesListener(MapQuickActionLayer.this);
quickActionsWidget.setSelectionListener(MapQuickActionLayer.this); quickActionsWidget.setSelectionListener(MapQuickActionLayer.this);
} }
return true; return true;
} }
private void animateWidget(final boolean show) { private void animateWidget(final boolean show) {
AnimatorSet set = new AnimatorSet(); AnimatorSet set = new AnimatorSet();
@ -370,19 +372,19 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe
return py <= quickActionsWidget.getHeight(); return py <= quickActionsWidget.getHeight();
} }
@Override @Override
public void onDraw(Canvas canvas, RotatedTileBox box, DrawSettings settings) { public void onDraw(Canvas canvas, RotatedTileBox box, DrawSettings settings) {
boolean nightMode = settings != null && settings.isNightMode(); boolean nightMode = app.getDaynightHelper().isNightModeForMapControls();
if (isInMovingMarkerMode()) { if (isInMovingMarkerMode()) {
canvas.translate(box.getCenterPixelX() - contextMarker.getWidth() / 2, box.getCenterPixelY() - contextMarker.getHeight()); canvas.translate(box.getCenterPixelX() - contextMarker.getWidth() / 2, box.getCenterPixelY() - contextMarker.getHeight());
contextMarker.draw(canvas); contextMarker.draw(canvas);
} }
if (this.nightMode != nightMode) { if (this.nightMode != nightMode) {
this.nightMode = nightMode; this.nightMode = nightMode;
updateQuickActionButton(isWidgetVisible()); updateQuickActionButton(currentWidgetState);
} }
setupQuickActionBtnVisibility(); setupQuickActionBtnVisibility();
} }
private void setupQuickActionBtnVisibility() { private void setupQuickActionBtnVisibility() {
MapContextMenu contextMenu = mapActivity.getContextMenu(); MapContextMenu contextMenu = mapActivity.getContextMenu();