# pragma once
# include <QButtonGroup>
# include <QFileSystemWatcher>
# include <QFrame>
# include <QLabel>
# include <QPushButton>
# include <QStackedWidget>
# include <QWidget>
# 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 & param = " " ) ;
protected :
void showEvent ( QShowEvent * event ) override ;
signals :
void closeSettings ( ) ;
void reviewTrainingGuide ( ) ;
void showDriverView ( ) ;
void expandToggleDescription ( const QString & param ) ;
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 & param ) ;
private :
Params params ;
std : : map < std : : string , ParamControl * > 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 ;
} ;