diff --git a/selfdrive/ui/sunnypilot/SConscript b/selfdrive/ui/sunnypilot/SConscript index e4e5b42342..d1e27eba61 100644 --- a/selfdrive/ui/sunnypilot/SConscript +++ b/selfdrive/ui/sunnypilot/SConscript @@ -54,9 +54,9 @@ lateral_panel_qt_src = [ longitudinal_panel_qt_src = [ "sunnypilot/qt/offroad/settings/longitudinal/custom_acc_increment.cc", - "sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control.cc", - "sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_policy.cc", - "sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_subpanel.cc", + "sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_assist.cc", + "sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_policy.cc", + "sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_settings.cc", ] network_src = [ diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control.cc b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control.cc deleted file mode 100644 index fb9d009332..0000000000 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control.cc +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright (c) 2021-, Haibin Wen, sunnypilot, and a number of other contributors. - * - * This file is part of sunnypilot and is licensed under the MIT License. - * See the LICENSE.md file in the root directory for more details. - */ - -#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control.h" - -SpeedLimitControl::SpeedLimitControl(const QString ¶m, const QString &title, const QString &desc, const QString &icon, QWidget *parent) - : ExpandableToggleRow(param, title, desc, icon, parent) { - - auto *slcFrame = new QFrame(this); - auto *slcFrameLayout = new QVBoxLayout(); - slcFrame->setLayout(slcFrameLayout); - slcFrameLayout->setSpacing(0); - slcFrameLayout->setContentsMargins(0, 0, 0, 0); - - slcSettings = new PushButtonSP(tr("Customize SLC")); - slcFrameLayout->addWidget(slcSettings); - connect(slcSettings, &QPushButton::clicked, [&]() { - emit slcSettingsButtonClicked(); - }); - addItem(slcFrame); -} diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_policy.cc b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_policy.cc deleted file mode 100644 index d596261bc9..0000000000 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_policy.cc +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2021-, Haibin Wen, sunnypilot, and a number of other contributors. - * - * This file is part of sunnypilot and is licensed under the MIT License. - * See the LICENSE.md file in the root directory for more details. - */ - -#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_policy.h" - -SpeedLimitControlPolicy::SpeedLimitControlPolicy(QWidget *parent) : QWidget(parent) { - QVBoxLayout *main_layout = new QVBoxLayout(this); - main_layout->setContentsMargins(0, 0, 0, 0); - main_layout->setSpacing(0); - - // Back button - PanelBackButton *back = new PanelBackButton(tr("Back")); - connect(back, &QPushButton::clicked, [=]() { emit backPress(); }); - main_layout->addWidget(back, 0, Qt::AlignLeft); - - main_layout->addSpacing(10); - - ListWidgetSP *list = new ListWidgetSP(this, true); - - std::vector slc_policy_texts{ - SLCSourcePolicyText[static_cast(SLCSourcePolicy::CAR_ONLY)], - SLCSourcePolicyText[static_cast(SLCSourcePolicy::MAP_ONLY)], - SLCSourcePolicyText[static_cast(SLCSourcePolicy::CAR_FIRST)], - SLCSourcePolicyText[static_cast(SLCSourcePolicy::MAP_FIRST)], - SLCSourcePolicyText[static_cast(SLCSourcePolicy::COMBINED)] - }; - slc_policy = new ButtonParamControlSP( - "SpeedLimitPolicy", - tr("Speed Limit Source"), - "", - "", - slc_policy_texts, - 250); - list->addItem(slc_policy); - connect(slc_policy, &ButtonParamControlSP::buttonClicked, this, &SpeedLimitControlPolicy::refresh); - - refresh(); - main_layout->addWidget(list); -}; - -void SpeedLimitControlPolicy::refresh() { - SLCSourcePolicy policy_param = static_cast(std::atoi(params.get("SpeedLimitPolicy").c_str())); - slc_policy->setDescription(sourceDescription(policy_param)); -} - -void SpeedLimitControlPolicy::showEvent(QShowEvent *event) { - refresh(); - slc_policy->showDescription(); -} diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_subpanel.cc b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_subpanel.cc deleted file mode 100644 index 8632a68df4..0000000000 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_subpanel.cc +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (c) 2021-, Haibin Wen, sunnypilot, and a number of other contributors. - * - * This file is part of sunnypilot and is licensed under the MIT License. - * See the LICENSE.md file in the root directory for more details. - */ - -#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_subpanel.h" - -SpeedLimitControlSubpanel::SpeedLimitControlSubpanel(QWidget *parent) : QStackedWidget(parent) { - subPanelFrame = new QFrame(); - QVBoxLayout *subPanelLayout = new QVBoxLayout(subPanelFrame); - subPanelLayout->setContentsMargins(0, 0, 0, 0); - subPanelLayout->setSpacing(0); - - // Back button - PanelBackButton *back = new PanelBackButton(tr("Back")); - connect(back, &QPushButton::clicked, [=]() { emit backPress(); }); - subPanelLayout->addWidget(back, 0, Qt::AlignLeft); - - subPanelLayout->addSpacing(20); - - ListWidgetSP *list = new ListWidgetSP(this, true); - - auto *slcBtnFrame = new QFrame(this); - auto *slcBtnFrameLayout = new QGridLayout(); - slcBtnFrame->setLayout(slcBtnFrameLayout); - slcBtnFrameLayout->setContentsMargins(0, 40, 0, 40); - slcBtnFrameLayout->setSpacing(0); - - slcPolicyScreen = new SpeedLimitControlPolicy(this); - - slcSourceControl = new PushButtonSP(tr("Customize Source")); - connect(slcSourceControl, &QPushButton::clicked, [&]() { - setCurrentWidget(slcPolicyScreen); - slcPolicyScreen->refresh(); - }); - connect(slcPolicyScreen, &SpeedLimitControlPolicy::backPress, [&]() { - setCurrentWidget(subPanelFrame); - showEvent(new QShowEvent()); - }); - - slcSourceControl->setFixedWidth(720); - slcBtnFrameLayout->addWidget(slcSourceControl, 0, 0, Qt::AlignLeft); - list->addItem(slcBtnFrame); - - QFrame *offsetFrame = new QFrame(this); - QVBoxLayout *offsetLayout = new QVBoxLayout(offsetFrame); - - std::vector slc_offset_texts{ - SLCOffsetTypeText[static_cast(SLCOffsetType::NONE)], - SLCOffsetTypeText[static_cast(SLCOffsetType::FIXED)], - SLCOffsetTypeText[static_cast(SLCOffsetType::PERCENT)] - }; - slc_offset_setting = new ButtonParamControlSP( - "SpeedLimitOffsetType", - tr("Speed Limit Offset"), - "", - "", - slc_offset_texts, - 500); - - offsetLayout->addWidget(slc_offset_setting); - - slc_offset = new OptionControlSP( - "SpeedLimitValueOffset", - "", - "", - "", - {-30, 30} - ); - offsetLayout->addWidget(slc_offset); - - list->addItem(offsetFrame); - - connect(slc_offset, &OptionControlSP::updateLabels, this, &SpeedLimitControlSubpanel::refresh); - connect(slc_offset_setting, &ButtonParamControlSP::showDescriptionEvent, slc_offset, &OptionControlSP::showDescription); - connect(slc_offset_setting, &ButtonParamControlSP::buttonClicked, this, &SpeedLimitControlSubpanel::refresh); - - refresh(); - subPanelLayout->addWidget(list); - addWidget(subPanelFrame); - addWidget(slcPolicyScreen); - setCurrentWidget(subPanelFrame); -}; - -void SpeedLimitControlSubpanel::refresh() { - SLCOffsetType offset_type_param = static_cast(std::atoi(params.get("SpeedLimitOffsetType").c_str())); - QString offsetLabel = QString::fromStdString(params.get("SpeedLimitValueOffset")); - - slc_offset->setDescription(offsetDescription(offset_type_param)); - - if (offset_type_param == SLCOffsetType::PERCENT) { - offsetLabel += "%"; - } - - if (offset_type_param == SLCOffsetType::NONE) { - slc_offset->setVisible(false); - } else { - slc_offset->setVisible(true); - slc_offset->setLabel(offsetLabel); - slc_offset->showDescription(); - } -} - -void SpeedLimitControlSubpanel::showEvent(QShowEvent *event) { - refresh(); - slc_offset->showDescription(); -} diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_assist.cc b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_assist.cc new file mode 100644 index 0000000000..7d74134d8f --- /dev/null +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_assist.cc @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2021-, Haibin Wen, sunnypilot, and a number of other contributors. + * + * This file is part of sunnypilot and is licensed under the MIT License. + * See the LICENSE.md file in the root directory for more details. + */ + +#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_assist.h" + +SpeedLimitAssist::SpeedLimitAssist(const QString ¶m, const QString &title, const QString &desc, const QString &icon, QWidget *parent) + : ExpandableToggleRow(param, title, desc, icon, parent) { + + auto *speedLimitFrame = new QFrame(this); + auto *speedLimitFrameLayout = new QVBoxLayout(); + speedLimitFrame->setLayout(speedLimitFrameLayout); + speedLimitFrameLayout->setSpacing(0); + speedLimitFrameLayout->setContentsMargins(0, 0, 0, 0); + + speedLimitSettings = new PushButtonSP(tr("Customize Speed Limit")); + speedLimitFrameLayout->addWidget(speedLimitSettings); + connect(speedLimitSettings, &QPushButton::clicked, [&]() { + emit speedLimitSettingsButtonClicked(); + }); + addItem(speedLimitFrame); +} diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control.h b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_assist.h similarity index 58% rename from selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control.h rename to selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_assist.h index bab8f17c8c..34df3102be 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control.h +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_assist.h @@ -11,31 +11,19 @@ #include "selfdrive/ui/sunnypilot/qt/widgets/controls.h" #include "selfdrive/ui/sunnypilot/qt/widgets/expandable_row.h" -enum class SLCOffsetType { +enum class SpeedLimitOffsetType { NONE, FIXED, PERCENT, }; -inline const char *SLCOffsetTypeText[]{ +inline const char *SpeedLimitOffsetTypeTexts[]{ QT_TR_NOOP("None"), QT_TR_NOOP("Fixed"), QT_TR_NOOP("Percent"), }; -enum class SLCWarningType { - OFF, - DISPLAY, - CHIME, -}; - -inline const char *SLCWarningTypeText[]{ - QT_TR_NOOP("Off"), - QT_TR_NOOP("Display"), - QT_TR_NOOP("Chime") -}; - -enum class SLCSourcePolicy { +enum class SpeedLimitSourcePolicy { CAR_ONLY, MAP_ONLY, CAR_FIRST, @@ -43,7 +31,7 @@ enum class SLCSourcePolicy { COMBINED }; -inline const char *SLCSourcePolicyText[]{ +inline const char *SpeedLimitSourcePolicyTexts[]{ QT_TR_NOOP("Car\nOnly"), QT_TR_NOOP("Map\nOnly"), QT_TR_NOOP("Car\nFirst"), @@ -51,16 +39,16 @@ inline const char *SLCSourcePolicyText[]{ QT_TR_NOOP("Combined\nData") }; -class SpeedLimitControl : public ExpandableToggleRow { +class SpeedLimitAssist : public ExpandableToggleRow { Q_OBJECT public: - SpeedLimitControl(const QString ¶m, const QString &title, const QString &desc, const QString &icon, QWidget *parent = nullptr); + SpeedLimitAssist(const QString ¶m, const QString &title, const QString &desc, const QString &icon, QWidget *parent = nullptr); signals: - void slcSettingsButtonClicked(); + void speedLimitSettingsButtonClicked(); private: Params params; - PushButtonSP *slcSettings; + PushButtonSP *speedLimitSettings; }; diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_policy.cc b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_policy.cc new file mode 100644 index 0000000000..69b2e79980 --- /dev/null +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_policy.cc @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2021-, Haibin Wen, sunnypilot, and a number of other contributors. + * + * This file is part of sunnypilot and is licensed under the MIT License. + * See the LICENSE.md file in the root directory for more details. + */ + +#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_policy.h" + +SpeedLimitPolicy::SpeedLimitPolicy(QWidget *parent) : QWidget(parent) { + QVBoxLayout *main_layout = new QVBoxLayout(this); + main_layout->setContentsMargins(0, 0, 0, 0); + main_layout->setSpacing(0); + + // Back button + PanelBackButton *back = new PanelBackButton(tr("Back")); + connect(back, &QPushButton::clicked, [=]() { emit backPress(); }); + main_layout->addWidget(back, 0, Qt::AlignLeft); + + main_layout->addSpacing(10); + + ListWidgetSP *list = new ListWidgetSP(this, true); + + std::vector speed_limit_policy_texts{ + SpeedLimitSourcePolicyTexts[static_cast(SpeedLimitSourcePolicy::CAR_ONLY)], + SpeedLimitSourcePolicyTexts[static_cast(SpeedLimitSourcePolicy::MAP_ONLY)], + SpeedLimitSourcePolicyTexts[static_cast(SpeedLimitSourcePolicy::CAR_FIRST)], + SpeedLimitSourcePolicyTexts[static_cast(SpeedLimitSourcePolicy::MAP_FIRST)], + SpeedLimitSourcePolicyTexts[static_cast(SpeedLimitSourcePolicy::COMBINED)] + }; + speed_limit_policy = new ButtonParamControlSP( + "SpeedLimitPolicy", + tr("Speed Limit Source"), + "", + "", + speed_limit_policy_texts, + 250); + list->addItem(speed_limit_policy); + connect(speed_limit_policy, &ButtonParamControlSP::buttonClicked, this, &SpeedLimitPolicy::refresh); + + refresh(); + main_layout->addWidget(list); +}; + +void SpeedLimitPolicy::refresh() { + SpeedLimitSourcePolicy policy_param = static_cast(std::atoi(params.get("SpeedLimitPolicy").c_str())); + speed_limit_policy->setDescription(sourceDescription(policy_param)); +} + +void SpeedLimitPolicy::showEvent(QShowEvent *event) { + refresh(); + speed_limit_policy->showDescription(); +} diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_policy.h b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_policy.h similarity index 76% rename from selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_policy.h rename to selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_policy.h index 1f961344f8..07eaf1f968 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_policy.h +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_policy.h @@ -9,14 +9,14 @@ #include "selfdrive/ui/sunnypilot/ui.h" #include "selfdrive/ui/sunnypilot/qt/offroad/settings/settings.h" -#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control.h" +#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_assist.h" #include "selfdrive/ui/sunnypilot/qt/widgets/controls.h" -class SpeedLimitControlPolicy : public QWidget { +class SpeedLimitPolicy : public QWidget { Q_OBJECT public: - explicit SpeedLimitControlPolicy(QWidget *parent = nullptr); + explicit SpeedLimitPolicy(QWidget *parent = nullptr); void refresh(); void showEvent(QShowEvent *event) override; @@ -25,22 +25,22 @@ signals: private: Params params; - ButtonParamControlSP *slc_policy; + ButtonParamControlSP *speed_limit_policy; - static QString sourceDescription(SLCSourcePolicy type = SLCSourcePolicy::CAR_ONLY) { + static QString sourceDescription(SpeedLimitSourcePolicy type = SpeedLimitSourcePolicy::CAR_ONLY) { QString car_only = tr("⦿ Car Only: Use Speed Limit data only from Car"); QString map_only = tr("⦿ Map Only: Use Speed Limit data only from OpenStreetMaps"); QString car_first = tr("⦿ Car First: Use Speed Limit data from Car if available, else use from OpenStreetMaps"); QString map_first = tr("⦿ Map First: Use Speed Limit data from OpenStreetMaps if available, else use from Car"); QString combined = tr("⦿ Combined: Use combined Speed Limit data from Car & OpenStreetMaps"); - if (type == SLCSourcePolicy::CAR_ONLY) { + if (type == SpeedLimitSourcePolicy::CAR_ONLY) { car_only = "" + car_only + ""; - } else if (type == SLCSourcePolicy::MAP_ONLY) { + } else if (type == SpeedLimitSourcePolicy::MAP_ONLY) { map_only = "" + map_only + ""; - } else if (type == SLCSourcePolicy::CAR_FIRST) { + } else if (type == SpeedLimitSourcePolicy::CAR_FIRST) { car_first = "" + car_first + ""; - } else if (type == SLCSourcePolicy::MAP_FIRST) { + } else if (type == SpeedLimitSourcePolicy::MAP_FIRST) { map_first = "" + map_first + ""; } else { combined = "" + combined + ""; diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_settings.cc b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_settings.cc new file mode 100644 index 0000000000..1786204bf5 --- /dev/null +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_settings.cc @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2021-, Haibin Wen, sunnypilot, and a number of other contributors. + * + * This file is part of sunnypilot and is licensed under the MIT License. + * See the LICENSE.md file in the root directory for more details. + */ + +#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_settings.h" + +SpeedLimitSettings::SpeedLimitSettings(QWidget *parent) : QStackedWidget(parent) { + subPanelFrame = new QFrame(); + QVBoxLayout *subPanelLayout = new QVBoxLayout(subPanelFrame); + subPanelLayout->setContentsMargins(0, 0, 0, 0); + subPanelLayout->setSpacing(0); + + // Back button + PanelBackButton *back = new PanelBackButton(tr("Back")); + connect(back, &QPushButton::clicked, [=]() { emit backPress(); }); + subPanelLayout->addWidget(back, 0, Qt::AlignLeft); + + subPanelLayout->addSpacing(20); + + ListWidgetSP *list = new ListWidgetSP(this, true); + + auto *speedLimitBtnFrame = new QFrame(this); + auto *speedLimitBtnFrameLayout = new QGridLayout(); + speedLimitBtnFrame->setLayout(speedLimitBtnFrameLayout); + speedLimitBtnFrameLayout->setContentsMargins(0, 40, 0, 40); + speedLimitBtnFrameLayout->setSpacing(0); + + speedLimitPolicyScreen = new SpeedLimitPolicy(this); + + speedLimitSource = new PushButtonSP(tr("Customize Source")); + connect(speedLimitSource, &QPushButton::clicked, [&]() { + setCurrentWidget(speedLimitPolicyScreen); + speedLimitPolicyScreen->refresh(); + }); + connect(speedLimitPolicyScreen, &SpeedLimitPolicy::backPress, [&]() { + setCurrentWidget(subPanelFrame); + showEvent(new QShowEvent()); + }); + + speedLimitSource->setFixedWidth(720); + speedLimitBtnFrameLayout->addWidget(speedLimitSource, 0, 0, Qt::AlignLeft); + list->addItem(speedLimitBtnFrame); + + QFrame *offsetFrame = new QFrame(this); + QVBoxLayout *offsetLayout = new QVBoxLayout(offsetFrame); + + std::vector speed_limit_offset_texts{ + SpeedLimitOffsetTypeTexts[static_cast(SpeedLimitOffsetType::NONE)], + SpeedLimitOffsetTypeTexts[static_cast(SpeedLimitOffsetType::FIXED)], + SpeedLimitOffsetTypeTexts[static_cast(SpeedLimitOffsetType::PERCENT)] + }; + speed_limit_offset_settings = new ButtonParamControlSP( + "SpeedLimitOffsetType", + tr("Speed Limit Offset"), + "", + "", + speed_limit_offset_texts, + 500); + + offsetLayout->addWidget(speed_limit_offset_settings); + + speed_limit_offset = new OptionControlSP( + "SpeedLimitValueOffset", + "", + "", + "", + {-30, 30} + ); + offsetLayout->addWidget(speed_limit_offset); + + list->addItem(offsetFrame); + + connect(speed_limit_offset, &OptionControlSP::updateLabels, this, &SpeedLimitSettings::refresh); + connect(speed_limit_offset_settings, &ButtonParamControlSP::showDescriptionEvent, speed_limit_offset, &OptionControlSP::showDescription); + connect(speed_limit_offset_settings, &ButtonParamControlSP::buttonClicked, this, &SpeedLimitSettings::refresh); + + refresh(); + subPanelLayout->addWidget(list); + addWidget(subPanelFrame); + addWidget(speedLimitPolicyScreen); + setCurrentWidget(subPanelFrame); +}; + +void SpeedLimitSettings::refresh() { + SpeedLimitOffsetType offset_type_param = static_cast(std::atoi(params.get("SpeedLimitOffsetType").c_str())); + QString offsetLabel = QString::fromStdString(params.get("SpeedLimitValueOffset")); + + speed_limit_offset->setDescription(offsetDescription(offset_type_param)); + + if (offset_type_param == SpeedLimitOffsetType::PERCENT) { + offsetLabel += "%"; + } + + if (offset_type_param == SpeedLimitOffsetType::NONE) { + speed_limit_offset->setVisible(false); + } else { + speed_limit_offset->setVisible(true); + speed_limit_offset->setLabel(offsetLabel); + speed_limit_offset->showDescription(); + } +} + +void SpeedLimitSettings::showEvent(QShowEvent *event) { + refresh(); + speed_limit_offset->showDescription(); +} diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_subpanel.h b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_settings.h similarity index 70% rename from selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_subpanel.h rename to selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_settings.h index f24d4b1925..67c239cca2 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_subpanel.h +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_settings.h @@ -9,15 +9,15 @@ #include "selfdrive/ui/sunnypilot/ui.h" #include "selfdrive/ui/sunnypilot/qt/offroad/settings/settings.h" -#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control.h" -#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_policy.h" +#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_assist.h" +#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_policy.h" #include "selfdrive/ui/sunnypilot/qt/widgets/controls.h" -class SpeedLimitControlSubpanel : public QStackedWidget { +class SpeedLimitSettings : public QStackedWidget { Q_OBJECT public: - SpeedLimitControlSubpanel(QWidget *parent = nullptr); + SpeedLimitSettings(QWidget *parent = nullptr); void refresh(); void showEvent(QShowEvent *event) override; @@ -27,19 +27,19 @@ signals: private: Params params; QFrame *subPanelFrame; - PushButtonSP *slcSourceControl; - ButtonParamControlSP *slc_offset_setting; - OptionControlSP *slc_offset; - SpeedLimitControlPolicy *slcPolicyScreen; + PushButtonSP *speedLimitSource; + ButtonParamControlSP *speed_limit_offset_settings; + OptionControlSP *speed_limit_offset; + SpeedLimitPolicy *speedLimitPolicyScreen; - static QString offsetDescription(SLCOffsetType type = SLCOffsetType::NONE) { + static QString offsetDescription(SpeedLimitOffsetType type = SpeedLimitOffsetType::NONE) { QString none_str = tr("⦿ None: No Offset"); QString fixed_str = tr("⦿ Fixed: Adds a fixed offset [Speed Limit + Offset]"); QString percent_str = tr("⦿ Percent: Adds a percent offset [Speed Limit + (Offset % Speed Limit)]"); - if (type == SLCOffsetType::FIXED) { + if (type == SpeedLimitOffsetType::FIXED) { fixed_str = "" + fixed_str + ""; - } else if (type == SLCOffsetType::PERCENT) { + } else if (type == SpeedLimitOffsetType::PERCENT) { percent_str = "" + percent_str + ""; } else { none_str = "" + none_str + ""; diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal_panel.cc b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal_panel.cc index 239137f471..b1a09d24b8 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal_panel.cc +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal_panel.cc @@ -55,7 +55,7 @@ LongitudinalPanel::LongitudinalPanel(QWidget *parent) : QWidget(parent) { QObject::connect(uiState(), &UIState::offroadTransition, this, &LongitudinalPanel::refresh); - slcControl = new SpeedLimitControl( + slcControl = new SpeedLimitAssist( "SpeedLimitAssist", tr("Speed Limit Assist (SLA)"), tr("When you engage ACC, you will be prompted to set the cruising speed to the speed limit of the road adjusted by the Offset and Source Policy specified, or the current driving speed. " @@ -64,19 +64,19 @@ LongitudinalPanel::LongitudinalPanel(QWidget *parent) : QWidget(parent) { this); list->addItem(slcControl); - connect(slcControl, &SpeedLimitControl::slcSettingsButtonClicked, [=]() { + connect(slcControl, &SpeedLimitAssist::speedLimitSettingsButtonClicked, [=]() { cruisePanelScroller->setLastScrollPosition(); - main_layout->setCurrentWidget(slcScreen); + main_layout->setCurrentWidget(speedLimitScren); }); - slcScreen = new SpeedLimitControlSubpanel(this); - connect(slcScreen, &SpeedLimitControlSubpanel::backPress, [=]() { + speedLimitScren = new SpeedLimitSettings(this); + connect(speedLimitScren, &SpeedLimitSettings::backPress, [=]() { cruisePanelScroller->restoreScrollPosition(); main_layout->setCurrentWidget(cruisePanelScreen); }); main_layout->addWidget(cruisePanelScreen); - main_layout->addWidget(slcScreen); + main_layout->addWidget(speedLimitScren); main_layout->setCurrentWidget(cruisePanelScreen); refresh(offroad); } diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal_panel.h b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal_panel.h index dcd0a3094b..4e241e0c27 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal_panel.h +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal_panel.h @@ -8,8 +8,8 @@ #pragma once #include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/custom_acc_increment.h" -#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control.h" -#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/slc/speed_limit_control_subpanel.h" +#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_assist.h" +#include "selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal/speed_limit/speed_limit_settings.h" #include "selfdrive/ui/sunnypilot/qt/offroad/settings/settings.h" #include "selfdrive/ui/sunnypilot/qt/widgets/scrollview.h" #include "selfdrive/ui/sunnypilot/ui.h" @@ -35,6 +35,6 @@ private: CustomAccIncrement *customAccIncrement = nullptr; ParamControl *SmartCruiseControlVision; ParamControl *intelligentCruiseButtonManagement = nullptr; - SpeedLimitControlSubpanel *slcScreen; - SpeedLimitControl *slcControl; + SpeedLimitSettings *speedLimitScren; + SpeedLimitAssist *slcControl; };