UI: body support (#24079)
	
		
	
				
					
				
			* body ui template * faces * abs * not raw * auto switch * check that * no smoosh * cmathpull/214/head
							parent
							
								
									0b9790dd24
								
							
						
					
					
						commit
						b51deb97d1
					
				
				 8 changed files with 74 additions and 2 deletions
			
			
		| 
		 After Width: | Height: | Size: 68 KiB  | 
| 
		 After Width: | Height: | Size: 392 KiB  | 
@ -0,0 +1,34 @@ | 
				
			||||
#include "selfdrive/ui/qt/body.h" | 
				
			||||
 | 
				
			||||
#include <cmath> | 
				
			||||
 | 
				
			||||
BodyWindow::BodyWindow(QWidget *parent) : QLabel(parent) { | 
				
			||||
  awake = new QMovie("../assets/body/awake.gif"); | 
				
			||||
  awake->setCacheMode(QMovie::CacheAll); | 
				
			||||
  sleep = new QMovie("../assets/body/sleep.gif"); | 
				
			||||
  sleep->setCacheMode(QMovie::CacheAll); | 
				
			||||
 | 
				
			||||
  QPalette p(Qt::black); | 
				
			||||
  setPalette(p); | 
				
			||||
  setAutoFillBackground(true); | 
				
			||||
 | 
				
			||||
  setAlignment(Qt::AlignCenter); | 
				
			||||
 | 
				
			||||
  QObject::connect(uiState(), &UIState::uiUpdate, this, &BodyWindow::updateState); | 
				
			||||
} | 
				
			||||
 | 
				
			||||
void BodyWindow::updateState(const UIState &s) { | 
				
			||||
  if (!isVisible()) { | 
				
			||||
    return; | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  const SubMaster &sm = *(s.sm); | 
				
			||||
 | 
				
			||||
  // TODO: use carState.standstill when that's fixed
 | 
				
			||||
  const bool standstill = std::abs(sm["carState"].getCarState().getVEgo()) < 0.01; | 
				
			||||
  QMovie *m = standstill ? sleep : awake; | 
				
			||||
  if (m != movie()) { | 
				
			||||
    setMovie(m); | 
				
			||||
    movie()->start(); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
@ -0,0 +1,19 @@ | 
				
			||||
#pragma once | 
				
			||||
 | 
				
			||||
#include <QMovie> | 
				
			||||
#include <QLabel> | 
				
			||||
 | 
				
			||||
#include "selfdrive/ui/ui.h" | 
				
			||||
 | 
				
			||||
class BodyWindow : public QLabel { | 
				
			||||
  Q_OBJECT | 
				
			||||
 | 
				
			||||
public: | 
				
			||||
  BodyWindow(QWidget* parent = 0); | 
				
			||||
 | 
				
			||||
private: | 
				
			||||
  QMovie *awake, *sleep; | 
				
			||||
 | 
				
			||||
private slots: | 
				
			||||
  void updateState(const UIState &s); | 
				
			||||
}; | 
				
			||||
					Loading…
					
					
				
		Reference in new issue