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.
		
		
		
		
		
			
		
			
				
					
					
						
							65 lines
						
					
					
						
							1.7 KiB
						
					
					
				
			
		
		
	
	
							65 lines
						
					
					
						
							1.7 KiB
						
					
					
				#include "selfdrive/ui/qt/onroad/onroad_home.h"
 | 
						|
 | 
						|
#include <QPainter>
 | 
						|
#include <QStackedLayout>
 | 
						|
 | 
						|
#include "selfdrive/ui/qt/util.h"
 | 
						|
 | 
						|
OnroadWindow::OnroadWindow(QWidget *parent) : QWidget(parent) {
 | 
						|
  QVBoxLayout *main_layout  = new QVBoxLayout(this);
 | 
						|
  main_layout->setMargin(UI_BORDER_SIZE);
 | 
						|
  QStackedLayout *stacked_layout = new QStackedLayout;
 | 
						|
  stacked_layout->setStackingMode(QStackedLayout::StackAll);
 | 
						|
  main_layout->addLayout(stacked_layout);
 | 
						|
 | 
						|
  nvg = new AnnotatedCameraWidget(VISION_STREAM_ROAD, this);
 | 
						|
 | 
						|
  QWidget * split_wrapper = new QWidget;
 | 
						|
  split = new QHBoxLayout(split_wrapper);
 | 
						|
  split->setContentsMargins(0, 0, 0, 0);
 | 
						|
  split->setSpacing(0);
 | 
						|
  split->addWidget(nvg);
 | 
						|
 | 
						|
  if (getenv("DUAL_CAMERA_VIEW")) {
 | 
						|
    CameraWidget *arCam = new CameraWidget("camerad", VISION_STREAM_ROAD, this);
 | 
						|
    split->insertWidget(0, arCam);
 | 
						|
  }
 | 
						|
 | 
						|
  stacked_layout->addWidget(split_wrapper);
 | 
						|
 | 
						|
  alerts = new OnroadAlerts(this);
 | 
						|
  alerts->setAttribute(Qt::WA_TransparentForMouseEvents, true);
 | 
						|
  stacked_layout->addWidget(alerts);
 | 
						|
 | 
						|
  // setup stacking order
 | 
						|
  alerts->raise();
 | 
						|
 | 
						|
  setAttribute(Qt::WA_OpaquePaintEvent);
 | 
						|
  QObject::connect(uiState(), &UIState::uiUpdate, this, &OnroadWindow::updateState);
 | 
						|
  QObject::connect(uiState(), &UIState::offroadTransition, this, &OnroadWindow::offroadTransition);
 | 
						|
}
 | 
						|
 | 
						|
void OnroadWindow::updateState(const UIState &s) {
 | 
						|
  if (!s.scene.started) {
 | 
						|
    return;
 | 
						|
  }
 | 
						|
 | 
						|
  alerts->updateState(s);
 | 
						|
  nvg->updateState(s);
 | 
						|
 | 
						|
  QColor bgColor = bg_colors[s.status];
 | 
						|
  if (bg != bgColor) {
 | 
						|
    // repaint border
 | 
						|
    bg = bgColor;
 | 
						|
    update();
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
void OnroadWindow::offroadTransition(bool offroad) {
 | 
						|
  alerts->clear();
 | 
						|
}
 | 
						|
 | 
						|
void OnroadWindow::paintEvent(QPaintEvent *event) {
 | 
						|
  QPainter p(this);
 | 
						|
  p.fillRect(rect(), QColor(bg.red(), bg.green(), bg.blue(), 255));
 | 
						|
}
 | 
						|
 |