# include "selfdrive/ui/qt/widgets/wifi.h"
# include <QHBoxLayout>
# include <QLabel>
# include <QPixmap>
# include <QPushButton>
WiFiPromptWidget : : WiFiPromptWidget ( QWidget * parent ) : QFrame ( parent ) {
stack = new QStackedLayout ( this ) ;
// Setup Wi-Fi
QFrame * setup = new QFrame ;
QVBoxLayout * setup_layout = new QVBoxLayout ( setup ) ;
setup_layout - > setContentsMargins ( 56 , 40 , 56 , 40 ) ;
setup_layout - > setSpacing ( 20 ) ;
{
QHBoxLayout * title_layout = new QHBoxLayout ;
title_layout - > setSpacing ( 32 ) ;
{
QLabel * icon = new QLabel ;
QPixmap * pixmap = new QPixmap ( " ../assets/offroad/icon_wifi_strength_full.svg " ) ;
icon - > setPixmap ( pixmap - > scaledToWidth ( 80 , Qt : : SmoothTransformation ) ) ;
title_layout - > addWidget ( icon ) ;
QLabel * title = new QLabel ( tr ( " Setup Wi-Fi " ) ) ;
title - > setStyleSheet ( " font-size: 64px; font-weight: 600; " ) ;
title_layout - > addWidget ( title ) ;
title_layout - > addStretch ( ) ;
}
setup_layout - > addLayout ( title_layout ) ;
QLabel * desc = new QLabel ( tr ( " Connect to Wi-Fi to upload driving data and help improve openpilot " ) ) ;
desc - > setStyleSheet ( " font-size: 40px; font-weight: 400; " ) ;
desc - > setWordWrap ( true ) ;
setup_layout - > addWidget ( desc ) ;
QPushButton * settings_btn = new QPushButton ( tr ( " Open Settings " ) ) ;
connect ( settings_btn , & QPushButton : : clicked , [ = ] ( ) { emit openSettings ( 1 ) ; } ) ;
settings_btn - > setStyleSheet ( R " (
QPushButton {
font - size : 48 px ;
font - weight : 500 ;
border - radius : 10 px ;
background - color : # 465 BEA ;
padding : 32 px ;
}
QPushButton : pressed {
background - color : # 3049F 4 ;
}
) " );
setup_layout - > addWidget ( settings_btn ) ;
}
stack - > addWidget ( setup ) ;
// Uploading data
QWidget * uploading = new QWidget ;
QVBoxLayout * uploading_layout = new QVBoxLayout ( uploading ) ;
uploading_layout - > setContentsMargins ( 64 , 56 , 64 , 56 ) ;
uploading_layout - > setSpacing ( 36 ) ;
{
QHBoxLayout * title_layout = new QHBoxLayout ;
{
QLabel * title = new QLabel ( tr ( " Ready to upload " ) ) ;
title - > setStyleSheet ( " font-size: 64px; font-weight: 600; " ) ;
title - > setWordWrap ( true ) ;
title - > setSizePolicy ( QSizePolicy : : Expanding , QSizePolicy : : Minimum ) ;
title_layout - > addWidget ( title ) ;
title_layout - > addStretch ( ) ;
QLabel * icon = new QLabel ;
QPixmap * pixmap = new QPixmap ( " ../assets/offroad/icon_wifi_uploading.svg " ) ;
icon - > setPixmap ( pixmap - > scaledToWidth ( 120 , Qt : : SmoothTransformation ) ) ;
title_layout - > addWidget ( icon ) ;
}
uploading_layout - > addLayout ( title_layout ) ;
QLabel * desc = new QLabel ( tr ( " Training data will be pulled periodically while your device is on Wi-Fi " ) ) ;
desc - > setStyleSheet ( " font-size: 48px; font-weight: 400; " ) ;
desc - > setWordWrap ( true ) ;
uploading_layout - > addWidget ( desc ) ;
}
stack - > addWidget ( uploading ) ;
setStyleSheet ( R " (
WiFiPromptWidget {
background - color : # 333333 ;
border - radius : 10 px ;
}
) " );
QObject : : connect ( uiState ( ) , & UIState : : uiUpdate , this , & WiFiPromptWidget : : updateState ) ;
}
void WiFiPromptWidget : : updateState ( const UIState & s ) {
if ( ! isVisible ( ) ) return ;
auto & sm = * ( s . sm ) ;
auto network_type = sm [ " deviceState " ] . getDeviceState ( ) . getNetworkType ( ) ;
auto uploading = network_type = = cereal : : DeviceState : : NetworkType : : WIFI | |
network_type = = cereal : : DeviceState : : NetworkType : : ETHERNET ;
stack - > setCurrentIndex ( uploading ? 1 : 0 ) ;
}