You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							103 lines
						
					
					
						
							3.4 KiB
						
					
					
				
			
		
		
	
	
							103 lines
						
					
					
						
							3.4 KiB
						
					
					
				#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: 48px;
 | 
						|
        font-weight: 500;
 | 
						|
        border-radius: 10px;
 | 
						|
        background-color: #465BEA;
 | 
						|
        padding: 32px;
 | 
						|
      }
 | 
						|
      QPushButton:pressed {
 | 
						|
        background-color: #3049F4;
 | 
						|
      }
 | 
						|
    )");
 | 
						|
    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: 10px;
 | 
						|
    }
 | 
						|
  )");
 | 
						|
 | 
						|
  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);
 | 
						|
}
 | 
						|
 |