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