diff --git a/selfdrive/ui/layouts/settings/starpilot/longitudinal.py b/selfdrive/ui/layouts/settings/starpilot/longitudinal.py index 0bbb07786..beeb96ec1 100644 --- a/selfdrive/ui/layouts/settings/starpilot/longitudinal.py +++ b/selfdrive/ui/layouts/settings/starpilot/longitudinal.py @@ -896,20 +896,32 @@ class StarPilotSLCOffsetsLayout(StarPilotPanel): { "title": tr_noop(f"Offset {i}"), "type": "value", - "get_value": lambda k=key: f"{self._params.get_int(k)} mph", + "get_value": lambda k=key: f"{self._params.get_int(k)}{self._speed_unit()}", "on_click": lambda k=key: self._show_speed_selector(k), "color": "#597497", } ) self._rebuild_grid() + def _is_metric(self): + return self._params.get_bool("IsMetric") + + def _speed_unit(self): + return " km/h" if self._is_metric() else " mph" + + def _speed_range(self): + return (-150, 150) if self._is_metric() else (-99, 99) + def _show_speed_selector(self, key): def on_close(res, val): if res == DialogResult.CONFIRM: self._params.put_int(key, int(val)) self._rebuild_grid() - gui_app.set_modal_overlay(AetherSliderDialog(tr(key), -99, 100, 1, self._params.get_int(key), on_close, unit=" mph", color="#597497")) + min_value, max_value = self._speed_range() + gui_app.set_modal_overlay( + AetherSliderDialog(tr(key), min_value, max_value, 1, self._params.get_int(key), on_close, unit=self._speed_unit(), color="#597497") + ) class StarPilotSLCQOLLayout(StarPilotPanel): diff --git a/starpilot/ui/qt/offroad/longitudinal_settings.cc b/starpilot/ui/qt/offroad/longitudinal_settings.cc index b030dcd8f..b334c8250 100644 --- a/starpilot/ui/qt/offroad/longitudinal_settings.cc +++ b/starpilot/ui/qt/offroad/longitudinal_settings.cc @@ -842,8 +842,10 @@ void StarPilotLongitudinalPanel::updateMetric(bool metric, bool bootRun) { static std::map imperialDistanceLabels; static std::map imperialSpeedLabels; + static std::map imperialOffsetLabels; static std::map metricDistanceLabels; static std::map metricSpeedLabels; + static std::map metricOffsetLabels; static bool labelsInitialized = false; if (!labelsInitialized) { @@ -854,6 +856,9 @@ void StarPilotLongitudinalPanel::updateMetric(bool metric, bool bootRun) { for (int i = 0; i <= 99; ++i) { imperialSpeedLabels[i] = i == 0 ? tr("Off") : QString::number(i) + tr(" mph"); } + for (int i = -99; i <= 99; ++i) { + imperialOffsetLabels[i] = i == 0 ? tr("Off") : QString::number(i) + tr(" mph"); + } for (int i = 0; i <= 3; ++i) { metricDistanceLabels[i] = i == 0 ? tr("Off") : i == 1 ? QString::number(i) + tr(" meter") : QString::number(i) + tr(" meters"); @@ -862,6 +867,9 @@ void StarPilotLongitudinalPanel::updateMetric(bool metric, bool bootRun) { for (int i = 0; i <= 150; ++i) { metricSpeedLabels[i] = i == 0 ? tr("Off") : QString::number(i) + tr(" km/h"); } + for (int i = -150; i <= 150; ++i) { + metricOffsetLabels[i] = i == 0 ? tr("Off") : QString::number(i) + tr(" km/h"); + } labelsInitialized = true; } @@ -911,13 +919,13 @@ void StarPilotLongitudinalPanel::updateMetric(bool metric, bool bootRun) { ceSpeedToggle->updateControl(0, 150, metricSpeedLabels); customCruiseToggle->updateControl(1, 150, metricSpeedLabels); customCruiseLongToggle->updateControl(1, 150, metricSpeedLabels); - offset1Toggle->updateControl(-150, 150, metricSpeedLabels); - offset2Toggle->updateControl(-150, 150, metricSpeedLabels); - offset3Toggle->updateControl(-150, 150, metricSpeedLabels); - offset4Toggle->updateControl(-150, 150, metricSpeedLabels); - offset5Toggle->updateControl(-150, 150, metricSpeedLabels); - offset6Toggle->updateControl(-150, 150, metricSpeedLabels); - offset7Toggle->updateControl(-150, 150, metricSpeedLabels); + offset1Toggle->updateControl(-150, 150, metricOffsetLabels); + offset2Toggle->updateControl(-150, 150, metricOffsetLabels); + offset3Toggle->updateControl(-150, 150, metricOffsetLabels); + offset4Toggle->updateControl(-150, 150, metricOffsetLabels); + offset5Toggle->updateControl(-150, 150, metricOffsetLabels); + offset6Toggle->updateControl(-150, 150, metricOffsetLabels); + offset7Toggle->updateControl(-150, 150, metricOffsetLabels); setSpeedOffsetToggle->updateControl(-150, 150, metricSpeedLabels); } else { offset1Toggle->setTitle(tr("Speed Offset (0–24 mph)")); @@ -946,13 +954,13 @@ void StarPilotLongitudinalPanel::updateMetric(bool metric, bool bootRun) { ceSpeedToggle->updateControl(0, 99, imperialSpeedLabels); customCruiseToggle->updateControl(1, 99, imperialSpeedLabels); customCruiseLongToggle->updateControl(1, 99, imperialSpeedLabels); - offset1Toggle->updateControl(-99, 99, imperialSpeedLabels); - offset2Toggle->updateControl(-99, 99, imperialSpeedLabels); - offset3Toggle->updateControl(-99, 99, imperialSpeedLabels); - offset4Toggle->updateControl(-99, 99, imperialSpeedLabels); - offset5Toggle->updateControl(-99, 99, imperialSpeedLabels); - offset6Toggle->updateControl(-99, 99, imperialSpeedLabels); - offset7Toggle->updateControl(-99, 99, imperialSpeedLabels); + offset1Toggle->updateControl(-99, 99, imperialOffsetLabels); + offset2Toggle->updateControl(-99, 99, imperialOffsetLabels); + offset3Toggle->updateControl(-99, 99, imperialOffsetLabels); + offset4Toggle->updateControl(-99, 99, imperialOffsetLabels); + offset5Toggle->updateControl(-99, 99, imperialOffsetLabels); + offset6Toggle->updateControl(-99, 99, imperialOffsetLabels); + offset7Toggle->updateControl(-99, 99, imperialOffsetLabels); setSpeedOffsetToggle->updateControl(0, 99, imperialSpeedLabels); } }