fixes p.2

This commit is contained in:
Nazar-Kutz 2020-03-20 16:15:37 +02:00
parent b972dfb748
commit e9cd09681e
3 changed files with 29 additions and 53 deletions

View file

@ -59,8 +59,8 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
private static final String RELIEF_SMOOTHNESS_FACTOR = "relief_smoothness_factor"; private static final String RELIEF_SMOOTHNESS_FACTOR = "relief_smoothness_factor";
private static final String ROUTING_RECALC_DISTANCE= "routing_recalc_distance"; private static final String ROUTING_RECALC_DISTANCE= "routing_recalc_distance";
private static final float ROUTE_RECALC_DISTANCE_DISABLE = -1.0f; public static final float DISABLE_MODE = -1.0f;
private static final float ROUTE_RECALC_DISTANCE_DEFAULT = 0.0f; public static final float DEFAULT_MODE = 0.0f;
private List<RoutingParameter> avoidParameters = new ArrayList<RoutingParameter>(); private List<RoutingParameter> avoidParameters = new ArrayList<RoutingParameter>();
private List<RoutingParameter> preferParameters = new ArrayList<RoutingParameter>(); private List<RoutingParameter> preferParameters = new ArrayList<RoutingParameter>();
@ -70,7 +70,6 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
private StateChangedListener<Boolean> booleanRoutingPrefListener; private StateChangedListener<Boolean> booleanRoutingPrefListener;
private StateChangedListener<String> customRoutingPrefListener; private StateChangedListener<String> customRoutingPrefListener;
private StateChangedListener<Float> routeRecalculationDistanceListener;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -88,12 +87,6 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
recalculateRoute(); recalculateRoute();
} }
}; };
routeRecalculationDistanceListener = new StateChangedListener<Float>() {
@Override
public void stateChanged(Float value) {
updateRouteRecalcDistanceView();
}
};
} }
@Override @Override
@ -346,17 +339,17 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
R.string.route_recalculation_dist_title, R.layout.preference_with_descr_dialog_and_switch); R.string.route_recalculation_dist_title, R.layout.preference_with_descr_dialog_and_switch);
switchPref.setIcon(getRoutingPrefIcon(ROUTING_RECALC_DISTANCE)); switchPref.setIcon(getRoutingPrefIcon(ROUTING_RECALC_DISTANCE));
screen.addPreference(switchPref); screen.addPreference(switchPref);
updateRouteRecalcDistanceView(); updateRouteRecalcDistancePref();
} }
private void updateRouteRecalcDistanceView() { private void updateRouteRecalcDistancePref() {
SwitchPreferenceEx switchPref = (SwitchPreferenceEx) findPreference(ROUTING_RECALC_DISTANCE); SwitchPreferenceEx switchPref = (SwitchPreferenceEx) findPreference(ROUTING_RECALC_DISTANCE);
if (switchPref == null) { if (switchPref == null) {
return; return;
} }
ApplicationMode appMode = getSelectedAppMode(); ApplicationMode appMode = getSelectedAppMode();
float allowedValue = settings.ROUTE_RECALCULATION_DISTANCE.getModeValue(appMode); float allowedValue = settings.ROUTE_RECALCULATION_DISTANCE.getModeValue(appMode);
boolean enabled = allowedValue != ROUTE_RECALC_DISTANCE_DISABLE; boolean enabled = allowedValue != DISABLE_MODE;
if (allowedValue <= 0) { if (allowedValue <= 0) {
allowedValue = RoutingHelper.getDefaultAllowedDeviation(settings, appMode, RoutingHelper.getPosTolerance(0)); allowedValue = RoutingHelper.getDefaultAllowedDeviation(settings, appMode, RoutingHelper.getPosTolerance(0));
} }
@ -389,7 +382,6 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
private void addRoutingPrefListeners() { private void addRoutingPrefListeners() {
settings.FAST_ROUTE_MODE.addListener(booleanRoutingPrefListener); settings.FAST_ROUTE_MODE.addListener(booleanRoutingPrefListener);
settings.ENABLE_TIME_CONDITIONAL_ROUTING.addListener(booleanRoutingPrefListener); settings.ENABLE_TIME_CONDITIONAL_ROUTING.addListener(booleanRoutingPrefListener);
settings.ROUTE_RECALCULATION_DISTANCE.addListener(routeRecalculationDistanceListener);
for (RoutingParameter parameter : otherRoutingParameters) { for (RoutingParameter parameter : otherRoutingParameters) {
if (parameter.getType() == RoutingParameterType.BOOLEAN) { if (parameter.getType() == RoutingParameterType.BOOLEAN) {
@ -405,7 +397,6 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
private void removeRoutingPrefListeners() { private void removeRoutingPrefListeners() {
settings.FAST_ROUTE_MODE.removeListener(booleanRoutingPrefListener); settings.FAST_ROUTE_MODE.removeListener(booleanRoutingPrefListener);
settings.ENABLE_TIME_CONDITIONAL_ROUTING.removeListener(booleanRoutingPrefListener); settings.ENABLE_TIME_CONDITIONAL_ROUTING.removeListener(booleanRoutingPrefListener);
settings.ROUTE_RECALCULATION_DISTANCE.removeListener(routeRecalculationDistanceListener);
for (RoutingParameter parameter : otherRoutingParameters) { for (RoutingParameter parameter : otherRoutingParameters) {
if (parameter.getType() == RoutingParameterType.BOOLEAN) { if (parameter.getType() == RoutingParameterType.BOOLEAN) {
@ -437,9 +428,9 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
} else if (ROUTING_RECALC_DISTANCE.equals(key) && newValue instanceof Boolean) { } else if (ROUTING_RECALC_DISTANCE.equals(key) && newValue instanceof Boolean) {
boolean enabled = (Boolean) newValue; boolean enabled = (Boolean) newValue;
settings.ROUTE_RECALCULATION_DISTANCE.setModeValue(getSelectedAppMode(), settings.ROUTE_RECALCULATION_DISTANCE.setModeValue(getSelectedAppMode(),
enabled ? ROUTE_RECALC_DISTANCE_DEFAULT : ROUTE_RECALC_DISTANCE_DISABLE); enabled ? DEFAULT_MODE : DISABLE_MODE);
settings.DISABLE_OFFROUTE_RECALC.setModeValue(getSelectedAppMode(), !enabled); settings.DISABLE_OFFROUTE_RECALC.setModeValue(getSelectedAppMode(), !enabled);
updateRouteRecalcDistanceView(); updateRouteRecalcDistancePref();
} }
return super.onPreferenceChange(preference, newValue); return super.onPreferenceChange(preference, newValue);
@ -449,6 +440,8 @@ public class RouteParametersFragment extends BaseSettingsFragment implements OnP
public void onPreferenceChanged(String prefId) { public void onPreferenceChanged(String prefId) {
if (AVOID_ROUTING_PARAMETER_PREFIX.equals(prefId) || PREFER_ROUTING_PARAMETER_PREFIX.equals(prefId)) { if (AVOID_ROUTING_PARAMETER_PREFIX.equals(prefId) || PREFER_ROUTING_PARAMETER_PREFIX.equals(prefId)) {
recalculateRoute(); recalculateRoute();
} else if (ROUTING_RECALC_DISTANCE.equals(prefId)) {
updateRouteRecalcDistancePref();
} }
} }

View file

@ -109,14 +109,14 @@ public class BooleanPreferenceBottomSheet extends BasePreferenceBottomSheet {
return R.string.shared_string_cancel; return R.string.shared_string_cancel;
} }
private View getCustomButtonView(boolean checked) { protected View getCustomButtonView(boolean checked) {
View customView = UiUtilities.getInflater(getContext(), nightMode).inflate(R.layout.bottom_sheet_item_preference_switch, null); View customView = UiUtilities.getInflater(getContext(), nightMode).inflate(R.layout.bottom_sheet_item_preference_switch, null);
updateCustomButtonView(customView, checked); updateCustomButtonView(customView, checked);
return customView; return customView;
} }
private void updateCustomButtonView(View customView, boolean checked) { protected void updateCustomButtonView(View customView, boolean checked) {
OsmandApplication app = requiredMyApplication(); OsmandApplication app = requiredMyApplication();
View buttonView = customView.findViewById(R.id.button_container); View buttonView = customView.findViewById(R.id.button_container);

View file

@ -1,8 +1,5 @@
package net.osmand.plus.settings.bottomsheets; package net.osmand.plus.settings.bottomsheets;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
@ -32,12 +29,14 @@ import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.settings.OnPreferenceChanged; import net.osmand.plus.settings.OnPreferenceChanged;
import net.osmand.plus.settings.preferences.SwitchPreferenceEx; import net.osmand.plus.settings.preferences.SwitchPreferenceEx;
public class RecalculateRouteInDeviationBottomSheet extends BasePreferenceBottomSheet { import static net.osmand.plus.settings.RouteParametersFragment.DEFAULT_MODE;
import static net.osmand.plus.settings.RouteParametersFragment.DISABLE_MODE;
public class RecalculateRouteInDeviationBottomSheet extends BooleanPreferenceBottomSheet {
public static final String TAG = RecalculateRouteInDeviationBottomSheet.class.getSimpleName(); public static final String TAG = RecalculateRouteInDeviationBottomSheet.class.getSimpleName();
private static final float DISABLE_MODE = -1.0f; private static final String CURRENT_VALUE = "current_value";
private static final float DEFAULT_MODE = 0.0f;
private OsmandApplication app; private OsmandApplication app;
private OsmandSettings settings; private OsmandSettings settings;
@ -66,6 +65,10 @@ public class RecalculateRouteInDeviationBottomSheet extends BasePreferenceBottom
return; return;
} }
if (savedInstanceState != null && savedInstanceState.containsKey(CURRENT_VALUE)) {
currentValue = savedInstanceState.getFloat(CURRENT_VALUE);
}
int contentPaddingSmall = app.getResources().getDimensionPixelSize(R.dimen.content_padding_small); int contentPaddingSmall = app.getResources().getDimensionPixelSize(R.dimen.content_padding_small);
int dialogContentMargin = app.getResources().getDimensionPixelSize(R.dimen.dialog_content_margin); int dialogContentMargin = app.getResources().getDimensionPixelSize(R.dimen.dialog_content_margin);
@ -101,7 +104,7 @@ public class RecalculateRouteInDeviationBottomSheet extends BasePreferenceBottom
.setCompoundButtonColorId(appModeColor) .setCompoundButtonColorId(appModeColor)
.setTitle(enabled ? on : off) .setTitle(enabled ? on : off)
.setTitleColorId(enabled ? activeColor : disabledColor) .setTitleColorId(enabled ? activeColor : disabledColor)
.setCustomView(getCustomCompoundButtonView(enabled)) .setCustomView(getCustomButtonView(enabled))
.setOnClickListener(new View.OnClickListener() { .setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@ -151,6 +154,10 @@ public class RecalculateRouteInDeviationBottomSheet extends BasePreferenceBottom
if (enabled && sliderPositionChanged) { if (enabled && sliderPositionChanged) {
preference.setModeValue(getAppMode(), currentValue); preference.setModeValue(getAppMode(), currentValue);
} }
Fragment target = getTargetFragment();
if (target instanceof OnPreferenceChanged) {
((OnPreferenceChanged) target).onPreferenceChanged(preference.getId());
}
dismiss(); dismiss();
} }
@ -159,34 +166,10 @@ public class RecalculateRouteInDeviationBottomSheet extends BasePreferenceBottom
return R.string.shared_string_apply; return R.string.shared_string_apply;
} }
private View getCustomCompoundButtonView(boolean checked) { @Override
View customView = UiUtilities.getInflater(app, nightMode).inflate(R.layout.bottom_sheet_item_preference_switch, null); public void onSaveInstanceState(Bundle outState) {
updateCustomButtonView(customView, checked); super.onSaveInstanceState(outState);
outState.putFloat(CURRENT_VALUE, currentValue);
return customView;
}
private void updateCustomButtonView(View customView, boolean checked) {
View buttonView = customView.findViewById(R.id.button_container);
int colorRes = appMode.getIconColorInfo().getColor(nightMode);
int color = checked ? getResolvedColor(colorRes) : AndroidUtils.getColorFromAttr(app, R.attr.divider_color_basic);
int bgColor = UiUtilities.getColorWithAlpha(color, checked ? 0.1f : 0.5f);
int selectedColor = UiUtilities.getColorWithAlpha(color, checked ? 0.3f : 0.5f);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
int bgResId = R.drawable.rectangle_rounded_right;
int selectableResId = R.drawable.ripple_rectangle_rounded_right;
Drawable bgDrawable = app.getUIUtilities().getPaintedIcon(bgResId, bgColor);
Drawable selectable = app.getUIUtilities().getPaintedIcon(selectableResId, selectedColor);
Drawable[] layers = {bgDrawable, selectable};
AndroidUtils.setBackground(buttonView, new LayerDrawable(layers));
} else {
int bgResId = R.drawable.rectangle_rounded_right;
Drawable bgDrawable = app.getUIUtilities().getPaintedIcon(bgResId, bgColor);
AndroidUtils.setBackground(buttonView, bgDrawable);
}
} }
private void updateSliderView() { private void updateSliderView() {