Files
sunnypilot/selfdrive/ui/qt/window.cc
Shane Smiskol dcd22dda7a ui: offroad experimental mode button (#26498)
* draft

* draft

* before qpushbutton

* icon, clean up button, clicked goes to toggles

* fix icon

* add imgs

* img

* make square

* works with layouts!

* fix gradient

* this looks good

* clean up

* clean up

* remove padding around couch

* use scene's experimental_model, new onroad design

* rename widget

* def want 3

* update translations

* add img

* add 25px of padding!

* make 300px (no change)

* clean up old images

* 5 px smaller

* add white img

* fix from merge

* no style sheets

* see how this looks on device

* aliased vertical line (clean up)

* clean up

* imgs

* couch

* delete

* bye bye

* expand toggle support

* clean up

* fix dynamic icon

* make exp icon dynamic

* order

* move to offroad
old-commit-hash: 58b84fb401
2022-11-15 22:18:26 -08:00

90 lines
3.1 KiB
C++

#include "selfdrive/ui/qt/window.h"
#include <QFontDatabase>
#include "system/hardware/hw.h"
MainWindow::MainWindow(QWidget *parent) : QWidget(parent) {
main_layout = new QStackedLayout(this);
main_layout->setMargin(0);
homeWindow = new HomeWindow(this);
main_layout->addWidget(homeWindow);
QObject::connect(homeWindow, &HomeWindow::openSettings, this, &MainWindow::openSettings);
QObject::connect(homeWindow, &HomeWindow::closeSettings, this, &MainWindow::closeSettings);
settingsWindow = new SettingsWindow(this);
main_layout->addWidget(settingsWindow);
QObject::connect(settingsWindow, &SettingsWindow::closeSettings, this, &MainWindow::closeSettings);
QObject::connect(settingsWindow, &SettingsWindow::reviewTrainingGuide, [=]() {
onboardingWindow->showTrainingGuide();
main_layout->setCurrentWidget(onboardingWindow);
});
QObject::connect(settingsWindow, &SettingsWindow::showDriverView, [=] {
homeWindow->showDriverView(true);
});
onboardingWindow = new OnboardingWindow(this);
main_layout->addWidget(onboardingWindow);
QObject::connect(onboardingWindow, &OnboardingWindow::onboardingDone, [=]() {
main_layout->setCurrentWidget(homeWindow);
});
if (!onboardingWindow->completed()) {
main_layout->setCurrentWidget(onboardingWindow);
}
QObject::connect(uiState(), &UIState::offroadTransition, [=](bool offroad) {
if (!offroad) {
closeSettings();
}
});
QObject::connect(&device, &Device::interactiveTimout, [=]() {
if (main_layout->currentWidget() == settingsWindow) {
closeSettings();
}
});
// load fonts
QFontDatabase::addApplicationFont("../assets/fonts/Inter-Black.ttf");
QFontDatabase::addApplicationFont("../assets/fonts/Inter-Bold.ttf");
QFontDatabase::addApplicationFont("../assets/fonts/Inter-ExtraBold.ttf");
QFontDatabase::addApplicationFont("../assets/fonts/Inter-ExtraLight.ttf");
QFontDatabase::addApplicationFont("../assets/fonts/Inter-Medium.ttf");
QFontDatabase::addApplicationFont("../assets/fonts/Inter-Regular.ttf");
QFontDatabase::addApplicationFont("../assets/fonts/Inter-SemiBold.ttf");
QFontDatabase::addApplicationFont("../assets/fonts/Inter-Thin.ttf");
QFontDatabase::addApplicationFont("../assets/fonts/JetBrainsMono-Medium.ttf");
// no outline to prevent the focus rectangle
setStyleSheet(R"(
* {
font-family: Inter;
outline: none;
}
)");
setAttribute(Qt::WA_NoSystemBackground);
}
void MainWindow::openSettings(int index, const QString &param) {
main_layout->setCurrentWidget(settingsWindow);
settingsWindow->setCurrentPanel(index, param);
}
void MainWindow::closeSettings() {
main_layout->setCurrentWidget(homeWindow);
if (uiState()->scene.started) {
homeWindow->showSidebar(false);
}
}
bool MainWindow::eventFilter(QObject *obj, QEvent *event) {
const static QSet<QEvent::Type> evts({QEvent::MouseButtonPress, QEvent::MouseMove,
QEvent::TouchBegin, QEvent::TouchUpdate, QEvent::TouchEnd});
if (evts.contains(event->type())) {
device.resetInteractiveTimout();
}
return false;
}