From 439cad86fdd10cd917a03f5b2654ffd1b514b26e Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Tue, 13 Jun 2023 11:37:29 -0400 Subject: [PATCH] ui: Driving Screen Off: show/hide toggles with param updates (#149) * ui: Driving Screen Off: show/hide toggles with param updates * not just yet --- .../ui/qt/offroad/sunnypilot_settings.cc | 26 +++++++++++++++---- selfdrive/ui/qt/offroad/sunnypilot_settings.h | 10 +++++++ 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/selfdrive/ui/qt/offroad/sunnypilot_settings.cc b/selfdrive/ui/qt/offroad/sunnypilot_settings.cc index 1a397c84ea..eeb3ad60b6 100644 --- a/selfdrive/ui/qt/offroad/sunnypilot_settings.cc +++ b/selfdrive/ui/qt/offroad/sunnypilot_settings.cc @@ -60,6 +60,11 @@ SPGeneralPanel::SPGeneralPanel(QWidget *parent) : ListWidget(parent) { } }; + // General: Onroad Screen Off (Auto Onroad Screen Timer) + onroad_screen_off = new OnroadScreenOff(); + // General: Onroad Screen Off Brightness + onroad_screen_off_brightness = new OnroadScreenOffBrightness(); + for (auto &[param, title, desc, icon] : toggle_defs) { auto toggle = new ParamControl(param, title, desc, icon, this); @@ -70,20 +75,29 @@ SPGeneralPanel::SPGeneralPanel(QWidget *parent) : ListWidget(parent) { // General: Max Time Offroad (Shutdown timer) addItem(new MaxTimeOffroad()); - // General: Onroad Screen Off (Auto Onroad Screen Timer) - addItem(new OnroadScreenOff()); + addItem(onroad_screen_off); - // General: Onroad Screen Off Brightness - addItem(new OnroadScreenOffBrightness()); + addItem(onroad_screen_off_brightness); // General: Brightness Control (Global) addItem(new BrightnessControl()); } } + connect(onroad_screen_off, &OnroadScreenOff::toggleUpdated, this, &SPGeneralPanel::updateToggles); + toggles["EndToEndLongAlertLight"]->setConfirmation(true, false); } +void SPGeneralPanel::showEvent(QShowEvent *event) { + updateToggles(); +} + +void SPGeneralPanel::updateToggles() { + // toggle names to update when OnroadScreenOff is toggled + onroad_screen_off_brightness->setVisible(QString::fromStdString(params.get("OnroadScreenOff")) != "-2"); +} + SPControlsPanel::SPControlsPanel(QWidget *parent) : ListWidget(parent) { // param, title, desc, icon std::vector> toggle_defs{ @@ -774,6 +788,7 @@ OnroadScreenOff::OnroadScreenOff() : AbstractControl( QString values = QString::number(value); params.put("OnroadScreenOff", values.toStdString()); refresh(); + emit toggleUpdated(); }); QObject::connect(&btnplus, &QPushButton::clicked, [=]() { @@ -787,6 +802,7 @@ OnroadScreenOff::OnroadScreenOff() : AbstractControl( QString values = QString::number(value); params.put("OnroadScreenOff", values.toStdString()); refresh(); + emit toggleUpdated(); }); refresh(); } @@ -812,7 +828,7 @@ void OnroadScreenOff::refresh() OnroadScreenOffBrightness::OnroadScreenOffBrightness() : AbstractControl( tr("Driving Screen Off Brightness (%)"), tr("When using the Driving Screen Off feature, the brightness is reduced according to the automatic brightness ratio."), - "../assets/offroad/icon_metric.png") + "../assets/offroad/icon_blank.png") { label.setAlignment(Qt::AlignVCenter|Qt::AlignRight); diff --git a/selfdrive/ui/qt/offroad/sunnypilot_settings.h b/selfdrive/ui/qt/offroad/sunnypilot_settings.h index 3eedd8516f..b0a817cd6b 100644 --- a/selfdrive/ui/qt/offroad/sunnypilot_settings.h +++ b/selfdrive/ui/qt/offroad/sunnypilot_settings.h @@ -62,6 +62,9 @@ class OnroadScreenOff : public AbstractControl { public: OnroadScreenOff(); +signals: + void toggleUpdated(); + private: QPushButton btnplus; QPushButton btnminus; @@ -241,10 +244,17 @@ class SPGeneralPanel : public ListWidget { public: explicit SPGeneralPanel(QWidget *parent = nullptr); + void showEvent(QShowEvent *event) override; + +public slots: + void updateToggles(); private: Params params; std::map toggles; + + OnroadScreenOff *onroad_screen_off; + OnroadScreenOffBrightness *onroad_screen_off_brightness; }; class SPControlsPanel : public ListWidget {