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.
		
		
		
		
		
			
		
			
				
					
					
						
							75 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
	
	
							75 lines
						
					
					
						
							2.3 KiB
						
					
					
				#include "window.hpp"
 | 
						|
#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);
 | 
						|
 | 
						|
  settingsWindow = new SettingsWindow(this);
 | 
						|
  main_layout->addWidget(settingsWindow);
 | 
						|
 | 
						|
  onboardingWindow = new OnboardingWindow(this);
 | 
						|
  main_layout->addWidget(onboardingWindow);
 | 
						|
 | 
						|
  QObject::connect(homeWindow, SIGNAL(openSettings()), this, SLOT(openSettings()));
 | 
						|
  QObject::connect(homeWindow, SIGNAL(closeSettings()), this, SLOT(closeSettings()));
 | 
						|
  QObject::connect(homeWindow, SIGNAL(offroadTransition(bool)), this, SLOT(offroadTransition(bool)));
 | 
						|
  QObject::connect(homeWindow, SIGNAL(offroadTransition(bool)), settingsWindow, SIGNAL(offroadTransition(bool)));
 | 
						|
  QObject::connect(settingsWindow, SIGNAL(closeSettings()), this, SLOT(closeSettings()));
 | 
						|
  QObject::connect(settingsWindow, SIGNAL(reviewTrainingGuide()), this, SLOT(reviewTrainingGuide()));
 | 
						|
 | 
						|
  // start at onboarding
 | 
						|
  main_layout->setCurrentWidget(onboardingWindow);
 | 
						|
  QObject::connect(onboardingWindow, SIGNAL(onboardingDone()), this, SLOT(closeSettings()));
 | 
						|
  onboardingWindow->updateActiveScreen();
 | 
						|
 | 
						|
  // 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() {
 | 
						|
  main_layout->setCurrentWidget(homeWindow);
 | 
						|
}
 | 
						|
 | 
						|
void MainWindow::reviewTrainingGuide() {
 | 
						|
  main_layout->setCurrentWidget(onboardingWindow);
 | 
						|
  onboardingWindow->updateActiveScreen();
 | 
						|
}
 | 
						|
 | 
						|
bool MainWindow::eventFilter(QObject *obj, QEvent *event){
 | 
						|
  // wake screen on tap
 | 
						|
  if (event->type() == QEvent::MouseButtonPress) {
 | 
						|
    homeWindow->glWindow->wake();
 | 
						|
  }
 | 
						|
 | 
						|
  // filter out touches while in android activity
 | 
						|
#ifdef QCOM
 | 
						|
  const QList<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;
 | 
						|
}
 | 
						|
 |