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