Files
StarPilot/selfdrive/ui/qt/window.cc
T
Adeeb Shihadeh 56e9dbcf99 Qt driverview (#21063)
* CameraViewWidget

* continue

* cleanup

* mv DriverViewWindow to ui/qt/offroad

* write IsDriverViewEnabled in showEvent/hideEvnet

* sm.update(0) in onTimeout()

* CameraViewWidget

* use unique_ptr for vipc_client

* virtual draw

* fix viewport

* connected()->frameReceived()

* bg_colors use QColor

* fix draw

* rebase master

* whitespace

* apply reviews

* indent

* like onroad

continue

* white space

* continue

* show == false

* remove border

* use widget's size

* fix shadowed rect

* cleanup driverview

* fix transform

* remove video_rect

Co-authored-by: deanlee <deanlee3@gmail.com>
Co-authored-by: Comma Device <device@comma.ai>
old-commit-hash: 9876723169ba0fd0c61169699caaa63246473e85
2021-06-01 20:59:41 -07:00

98 lines
3.4 KiB
C++

#include "window.h"
#include "selfdrive/hardware/hw.h"
MainWindow::MainWindow(QWidget *parent) : QWidget(parent) {
main_layout = new QStackedLayout;
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);
QObject::connect(&qs, &QUIState::uiUpdate, homeWindow, &HomeWindow::update);
QObject::connect(&qs, &QUIState::offroadTransition, homeWindow, &HomeWindow::offroadTransition);
QObject::connect(&qs, &QUIState::offroadTransition, homeWindow, &HomeWindow::offroadTransitionSignal);
QObject::connect(&device, &Device::displayPowerChanged, homeWindow, &HomeWindow::displayPowerChanged);
settingsWindow = new SettingsWindow(this);
main_layout->addWidget(settingsWindow);
QObject::connect(settingsWindow, &SettingsWindow::closeSettings, this, &MainWindow::closeSettings);
QObject::connect(&qs, &QUIState::offroadTransition, settingsWindow, &SettingsWindow::offroadTransition);
QObject::connect(settingsWindow, &SettingsWindow::reviewTrainingGuide, this, &MainWindow::reviewTrainingGuide);
QObject::connect(settingsWindow, &SettingsWindow::showDriverView, [=] {
homeWindow->showDriverView(true);
});
onboardingWindow = new OnboardingWindow(this);
onboardingDone = onboardingWindow->isOnboardingDone();
main_layout->addWidget(onboardingWindow);
main_layout->setCurrentWidget(onboardingWindow);
QObject::connect(onboardingWindow, &OnboardingWindow::onboardingDone, [=](){
onboardingDone = true;
closeSettings();
});
onboardingWindow->updateActiveScreen();
device.setAwake(true, true);
QObject::connect(&qs, &QUIState::uiUpdate, &device, &Device::update);
QObject::connect(&qs, &QUIState::offroadTransition, this, &MainWindow::offroadTransition);
QObject::connect(&device, &Device::displayPowerChanged, this, &MainWindow::closeSettings);
// load fonts
QFontDatabase::addApplicationFont("../assets/fonts/opensans_regular.ttf");
QFontDatabase::addApplicationFont("../assets/fonts/opensans_bold.ttf");
QFontDatabase::addApplicationFont("../assets/fonts/opensans_semibold.ttf");
// no outline to prevent the focus rectangle
setLayout(main_layout);
setStyleSheet(R"(
* {
font-family: Inter;
outline: none;
}
)");
}
void MainWindow::offroadTransition(bool offroad){
if(!offroad){
closeSettings();
}
}
void MainWindow::openSettings() {
main_layout->setCurrentWidget(settingsWindow);
}
void MainWindow::closeSettings() {
if(onboardingDone) {
main_layout->setCurrentWidget(homeWindow);
}
}
void MainWindow::reviewTrainingGuide() {
onboardingDone = false;
main_layout->setCurrentWidget(onboardingWindow);
onboardingWindow->updateActiveScreen();
}
bool MainWindow::eventFilter(QObject *obj, QEvent *event){
// wake screen on tap
if (event->type() == QEvent::MouseButtonPress) {
device.setAwake(true, true);
}
#ifdef QCOM
// filter out touches while in android activity
const static QSet<QEvent::Type> filter_events({QEvent::MouseButtonPress, QEvent::MouseMove, QEvent::TouchBegin, QEvent::TouchUpdate, QEvent::TouchEnd});
if (HardwareEon::launched_activity && filter_events.contains(event->type())) {
HardwareEon::check_activity();
if (HardwareEon::launched_activity) {
return true;
}
}
#endif
return false;
}