mirror of
https://codeberg.org/comaps/comaps
synced 2026-01-09 13:54:37 +00:00
[routing] Avoid paved roads
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
This commit is contained in:
@@ -32,7 +32,8 @@ public class DrivingOptionsScreen extends BaseMapScreen
|
||||
new DrivingOption(RoadType.Dirty, R.string.avoid_unpaved),
|
||||
new DrivingOption(RoadType.Ferry, R.string.avoid_ferry),
|
||||
new DrivingOption(RoadType.Motorway, R.string.avoid_motorways),
|
||||
new DrivingOption(RoadType.Steps, R.string.avoid_steps)};
|
||||
new DrivingOption(RoadType.Steps, R.string.avoid_steps),
|
||||
new DrivingOption(RoadType.Paved, R.string.avoid_paved)};
|
||||
|
||||
@NonNull
|
||||
private final Map<RoadType, Boolean> mInitialDrivingOptionsState = new HashMap<>();
|
||||
|
||||
@@ -90,28 +90,36 @@ public class DrivingOptionsFragment extends BaseMwmToolbarFragment
|
||||
{
|
||||
SwitchCompat tollsBtn = root.findViewById(R.id.avoid_tolls_btn);
|
||||
tollsBtn.setChecked(RoutingOptions.hasOption(RoadType.Toll));
|
||||
CompoundButton.OnCheckedChangeListener tollBtnListener = new ToggleRoutingOptionListener(RoadType.Toll);
|
||||
CompoundButton.OnCheckedChangeListener tollBtnListener = new ToggleRoutingOptionListener(RoadType.Toll, root);
|
||||
tollsBtn.setOnCheckedChangeListener(tollBtnListener);
|
||||
|
||||
SwitchCompat motorwaysBtn = root.findViewById(R.id.avoid_motorways_btn);
|
||||
motorwaysBtn.setChecked(RoutingOptions.hasOption(RoadType.Motorway));
|
||||
CompoundButton.OnCheckedChangeListener motorwayBtnListener = new ToggleRoutingOptionListener(RoadType.Motorway);
|
||||
CompoundButton.OnCheckedChangeListener motorwayBtnListener =
|
||||
new ToggleRoutingOptionListener(RoadType.Motorway, root);
|
||||
motorwaysBtn.setOnCheckedChangeListener(motorwayBtnListener);
|
||||
|
||||
SwitchCompat ferriesBtn = root.findViewById(R.id.avoid_ferries_btn);
|
||||
ferriesBtn.setChecked(RoutingOptions.hasOption(RoadType.Ferry));
|
||||
CompoundButton.OnCheckedChangeListener ferryBtnListener = new ToggleRoutingOptionListener(RoadType.Ferry);
|
||||
CompoundButton.OnCheckedChangeListener ferryBtnListener = new ToggleRoutingOptionListener(RoadType.Ferry, root);
|
||||
ferriesBtn.setOnCheckedChangeListener(ferryBtnListener);
|
||||
|
||||
SwitchCompat dirtyRoadsBtn = root.findViewById(R.id.avoid_dirty_roads_btn);
|
||||
dirtyRoadsBtn.setChecked(RoutingOptions.hasOption(RoadType.Dirty));
|
||||
CompoundButton.OnCheckedChangeListener dirtyBtnListener = new ToggleRoutingOptionListener(RoadType.Dirty);
|
||||
dirtyRoadsBtn.setEnabled(!RoutingOptions.hasOption(RoadType.Paved) || RoutingOptions.hasOption(RoadType.Dirty));
|
||||
CompoundButton.OnCheckedChangeListener dirtyBtnListener = new ToggleRoutingOptionListener(RoadType.Dirty, root);
|
||||
dirtyRoadsBtn.setOnCheckedChangeListener(dirtyBtnListener);
|
||||
|
||||
SwitchCompat stepsBtn = root.findViewById(R.id.avoid_steps_btn);
|
||||
stepsBtn.setChecked(RoutingOptions.hasOption(RoadType.Steps));
|
||||
CompoundButton.OnCheckedChangeListener stepsBtnListener = new ToggleRoutingOptionListener(RoadType.Steps);
|
||||
CompoundButton.OnCheckedChangeListener stepsBtnListener = new ToggleRoutingOptionListener(RoadType.Steps, root);
|
||||
stepsBtn.setOnCheckedChangeListener(stepsBtnListener);
|
||||
|
||||
SwitchCompat pavedBtn = root.findViewById(R.id.avoid_paved_roads_btn);
|
||||
pavedBtn.setChecked(RoutingOptions.hasOption(RoadType.Paved));
|
||||
pavedBtn.setEnabled(!RoutingOptions.hasOption(RoadType.Dirty) || RoutingOptions.hasOption(RoadType.Paved));
|
||||
CompoundButton.OnCheckedChangeListener pavedBtnListener = new ToggleRoutingOptionListener(RoadType.Paved, root);
|
||||
pavedBtn.setOnCheckedChangeListener(pavedBtnListener);
|
||||
}
|
||||
|
||||
private static class ToggleRoutingOptionListener implements CompoundButton.OnCheckedChangeListener
|
||||
@@ -119,9 +127,13 @@ public class DrivingOptionsFragment extends BaseMwmToolbarFragment
|
||||
@NonNull
|
||||
private final RoadType mRoadType;
|
||||
|
||||
private ToggleRoutingOptionListener(@NonNull RoadType roadType)
|
||||
@NonNull
|
||||
private final View mRoot;
|
||||
|
||||
private ToggleRoutingOptionListener(@NonNull RoadType roadType, @NonNull View root)
|
||||
{
|
||||
mRoadType = roadType;
|
||||
mRoot = root;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -131,6 +143,27 @@ public class DrivingOptionsFragment extends BaseMwmToolbarFragment
|
||||
RoutingOptions.addOption(mRoadType);
|
||||
else
|
||||
RoutingOptions.removeOption(mRoadType);
|
||||
|
||||
SwitchCompat dirtyRoadsBtn = mRoot.findViewById(R.id.avoid_dirty_roads_btn);
|
||||
SwitchCompat pavedBtn = mRoot.findViewById(R.id.avoid_paved_roads_btn);
|
||||
if (mRoadType == RoadType.Dirty)
|
||||
{
|
||||
pavedBtn.setEnabled(!isChecked);
|
||||
if (isChecked)
|
||||
{
|
||||
pavedBtn.setChecked(false);
|
||||
dirtyRoadsBtn.setEnabled(true);
|
||||
}
|
||||
}
|
||||
else if (mRoadType == RoadType.Paved)
|
||||
{
|
||||
dirtyRoadsBtn.setEnabled(!isChecked);
|
||||
if (isChecked)
|
||||
{
|
||||
dirtyRoadsBtn.setChecked(false);
|
||||
pavedBtn.setEnabled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,6 +59,28 @@
|
||||
android:padding="@dimen/margin_half_double_plus"/>
|
||||
</LinearLayout>
|
||||
<include layout="@layout/item_divider"/>
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:minHeight="@dimen/height_block_base"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingEnd="@dimen/margin_base"
|
||||
android:paddingStart="@dimen/margin_base">
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:text="@string/avoid_paved"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:textColor="?android:attr/textColorPrimary"/>
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
android:id="@+id/avoid_paved_roads_btn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="@dimen/margin_half_double_plus"/>
|
||||
</LinearLayout>
|
||||
<include layout="@layout/item_divider"/>
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:minHeight="@dimen/height_block_base"
|
||||
|
||||
@@ -677,6 +677,7 @@
|
||||
<string name="avoid_ferry">Avoid ferries</string>
|
||||
<string name="avoid_motorways">Avoid freeways</string>
|
||||
<string name="avoid_steps">Avoid stairs</string>
|
||||
<string name="avoid_paved">Avoid paved roads</string>
|
||||
<string name="unable_to_calc_alert_title">Unable to calculate route</string>
|
||||
<string name="unable_to_calc_alert_subtitle">A route could not be found. This may be caused by your routing options or incomplete OpenStreetMap data. Please change your routing options and retry.</string>
|
||||
<string name="define_to_avoid_btn">Define roads to avoid</string>
|
||||
|
||||
Reference in New Issue
Block a user