#pragma once #include #include #include #include #include #include #include #include "selfdrive/ui/qt/widgets/controls.h" // ********** settings window + top-level panels ********** class SettingsWindow : public QFrame { Q_OBJECT public: explicit SettingsWindow(QWidget *parent = 0); void setCurrentPanel(int index, const QString ¶m = ""); protected: void showEvent(QShowEvent *event) override; signals: void closeSettings(); void reviewTrainingGuide(); void showDriverView(); void expandToggleDescription(const QString ¶m); private: QPushButton *sidebar_alert_widget; QWidget *sidebar_widget; QButtonGroup *nav_btns; QStackedWidget *panel_widget; }; class DevicePanel : public ListWidget { Q_OBJECT public: explicit DevicePanel(SettingsWindow *parent); signals: void reviewTrainingGuide(); void showDriverView(); private slots: void poweroff(); void reboot(); void updateCalibDescription(); private: Params params; }; class TogglesPanel : public ListWidget { Q_OBJECT public: explicit TogglesPanel(SettingsWindow *parent); void showEvent(QShowEvent *event) override; public slots: void expandToggleDescription(const QString ¶m); private: Params params; std::map toggles; void updateToggles(); }; class SoftwarePanel : public ListWidget { Q_OBJECT public: explicit SoftwarePanel(QWidget* parent = nullptr); private: void showEvent(QShowEvent *event) override; void updateLabels(); void checkForUpdates(); bool is_onroad = false; QLabel *onroadLbl; LabelControl *versionLbl; ButtonControl *installBtn; ButtonControl *downloadBtn; ButtonControl *targetBranchBtn; Params params; QFileSystemWatcher *fs_watch; };