From 29d984e42fd9ec4ec449e76d6d5ac7390e4d900e Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Sun, 18 May 2025 01:48:27 -0400 Subject: [PATCH] refactor description --- .../offroad/settings/lateral/mads_settings.cc | 7 ++- .../offroad/settings/lateral/mads_settings.h | 54 ++++++++++++------- 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/lateral/mads_settings.cc b/selfdrive/ui/sunnypilot/qt/offroad/settings/lateral/mads_settings.cc index ae0a477247..a653ccbbff 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/lateral/mads_settings.cc +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/lateral/mads_settings.cc @@ -40,13 +40,12 @@ MadsSettings::MadsSettings(QWidget *parent) : QWidget(parent) { list->addItem(madsUnifiedEngagementModeToggle); // Steering Mode On Brake - std::vector lateral_on_brake_texts{tr("Remain Active"), tr("Pause Steering"), tr("Disengage")}; madsSteeringMode = new ButtonParamControl( "MadsSteeringMode", tr("Steering Mode on Brake Pedal"), "", "", - lateral_on_brake_texts, + madsSteeringModeTexts(), 500); QObject::connect(madsSteeringMode, &ButtonParamControl::buttonToggled, [=] { updateToggles(offroad); @@ -67,9 +66,9 @@ void MadsSettings::updateToggles(bool _offroad) { auto mads_steering_mode_param = std::atoi(params.get("MadsSteeringMode").c_str()); MadsSteeringMode steering_mode; - if (mads_steering_mode_param == int(MadsSteeringMode::REMAIN_ACTIVE)) { + if (mads_steering_mode_param == static_cast(MadsSteeringMode::REMAIN_ACTIVE)) { steering_mode = MadsSteeringMode::REMAIN_ACTIVE; - } else if (mads_steering_mode_param == int(MadsSteeringMode::PAUSE_STEERING)) { + } else if (mads_steering_mode_param == static_cast(MadsSteeringMode::PAUSE_STEERING)) { steering_mode = MadsSteeringMode::PAUSE_STEERING; } else { steering_mode = MadsSteeringMode::DISENGAGE; diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/lateral/mads_settings.h b/selfdrive/ui/sunnypilot/qt/offroad/settings/lateral/mads_settings.h index 022f7eb3bd..73715f998b 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/lateral/mads_settings.h +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/lateral/mads_settings.h @@ -13,9 +13,15 @@ #include "selfdrive/ui/sunnypilot/qt/widgets/controls.h" enum class MadsSteeringMode { - REMAIN_ACTIVE, - PAUSE_STEERING, - DISENGAGE, + REMAIN_ACTIVE = 0, + PAUSE_STEERING = 1, + DISENGAGE = 2, +}; + +struct MadsSteeringModeOption { + MadsSteeringMode mode; + QString display_text; + QString description; }; class MadsSettings : public QWidget { @@ -40,23 +46,35 @@ private: ParamControl *madsUnifiedEngagementModeToggle; ButtonParamControl *madsSteeringMode; - static QString madsSteeringModeDescription(MadsSteeringMode mode) { - QString remain_active_str = tr("Remain Active: ALC will remain active when the brake pedal is pressed."); - QString pause_steering_str = tr("Pause Steering: ALC will pause steering when the brake pedal is pressed."); - QString disengage_str = tr("Disengage: ALC will disengage when the brake pedal is pressed."); + static const std::vector &madsSteeringModeOptions() { + static const std::vector options = { + {MadsSteeringMode::REMAIN_ACTIVE, tr("Remain Active"), tr("Remain Active: ALC will remain active when the brake pedal is pressed.")}, + {MadsSteeringMode::PAUSE_STEERING, tr("Pause"), tr("Pause: ALC will pause steering when the brake pedal is pressed.")}, + {MadsSteeringMode::DISENGAGE, tr("Disengage"), tr("Disengage: ALC will disengage when the brake pedal is pressed.")}, + }; + return options; + } - if (mode == MadsSteeringMode::REMAIN_ACTIVE) { - remain_active_str = "" + remain_active_str + ""; - } else if (mode == MadsSteeringMode::PAUSE_STEERING) { - pause_steering_str = "" + pause_steering_str + ""; - } else if (mode == MadsSteeringMode::DISENGAGE) { - disengage_str = "" + disengage_str + ""; + static std::vector madsSteeringModeTexts() { + std::vector texts; + for (const auto& option : madsSteeringModeOptions()) { + texts.push_back(option.display_text); + } + return texts; + } + + static QString madsSteeringModeDescription(const MadsSteeringMode mode) { + QString base_desc = tr("Choose how Automatic Lane Centering (ALC) behaves after the brake pedal is manually pressed in sunnypilot."); + QString result = base_desc + "

"; + + for (const auto& option : madsSteeringModeOptions()) { + QString desc = option.description; + if (option.mode == mode) { + desc = "" + desc + ""; + } + result += desc + "
"; } - return QString("%1

%2
%3
%4") - .arg(tr("Choose how Automatic Lane Centering (ALC) behaves after the brake pedal is manually pressed in sunnypilot.")) - .arg(remain_active_str) - .arg(pause_steering_str) - .arg(disengage_str); + return result; } };