| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -32,8 +32,9 @@ void Sidebar::drawMetric(QPainter &p, const QPair<QString, QString> &label, QCol | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  p.drawText(label_rect, Qt::AlignCenter, label.second); | 
					 | 
					 | 
					 | 
					  p.drawText(label_rect, Qt::AlignCenter, label.second); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					Sidebar::Sidebar(QWidget *parent) : QFrame(parent) { | 
					 | 
					 | 
					 | 
					Sidebar::Sidebar(QWidget *parent) : QFrame(parent), onroad(false), flag_pressed(false), settings_pressed(false) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  home_img = loadPixmap("../assets/images/button_home.png", home_btn.size()); | 
					 | 
					 | 
					 | 
					  home_img = loadPixmap("../assets/images/button_home.png", home_btn.size()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  flag_img = loadPixmap("../assets/images/button_flag.png", home_btn.size()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  settings_img = loadPixmap("../assets/images/button_settings.png", settings_btn.size(), Qt::IgnoreAspectRatio); | 
					 | 
					 | 
					 | 
					  settings_img = loadPixmap("../assets/images/button_settings.png", settings_btn.size(), Qt::IgnoreAspectRatio); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  connect(this, &Sidebar::valueChanged, [=] { update(); }); | 
					 | 
					 | 
					 | 
					  connect(this, &Sidebar::valueChanged, [=] { update(); }); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -47,17 +48,34 @@ Sidebar::Sidebar(QWidget *parent) : QFrame(parent) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  pm = std::make_unique<PubMaster, const std::initializer_list<const char *>>({"userFlag"}); | 
					 | 
					 | 
					 | 
					  pm = std::make_unique<PubMaster, const std::initializer_list<const char *>>({"userFlag"}); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					void Sidebar::mousePressEvent(QMouseEvent *event) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  if (onroad && home_btn.contains(event->pos())) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    flag_pressed = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    update(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  } else if (settings_btn.contains(event->pos())) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    settings_pressed = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    update(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void Sidebar::mouseReleaseEvent(QMouseEvent *event) { | 
					 | 
					 | 
					 | 
					void Sidebar::mouseReleaseEvent(QMouseEvent *event) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  if (flag_pressed || settings_pressed) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    flag_pressed = settings_pressed = false; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    update(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (home_btn.contains(event->pos())) { | 
					 | 
					 | 
					 | 
					  if (home_btn.contains(event->pos())) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    MessageBuilder msg; | 
					 | 
					 | 
					 | 
					    MessageBuilder msg; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    msg.initEvent().initUserFlag(); | 
					 | 
					 | 
					 | 
					    msg.initEvent().initUserFlag(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    pm->send("userFlag", msg); | 
					 | 
					 | 
					 | 
					    pm->send("userFlag", msg); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  } | 
					 | 
					 | 
					 | 
					  } else if (settings_btn.contains(event->pos())) { | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (settings_btn.contains(event->pos())) { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    emit openSettings(); | 
					 | 
					 | 
					 | 
					    emit openSettings(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  } | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					void Sidebar::offroadTransition(bool offroad) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  onroad = !offroad; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void Sidebar::updateState(const UIState &s) { | 
					 | 
					 | 
					 | 
					void Sidebar::updateState(const UIState &s) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (!isVisible()) return; | 
					 | 
					 | 
					 | 
					  if (!isVisible()) return; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -102,11 +120,12 @@ void Sidebar::paintEvent(QPaintEvent *event) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  p.fillRect(rect(), QColor(57, 57, 57)); | 
					 | 
					 | 
					 | 
					  p.fillRect(rect(), QColor(57, 57, 57)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  // static imgs
 | 
					 | 
					 | 
					 | 
					  // buttons
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  p.setOpacity(0.65); | 
					 | 
					 | 
					 | 
					  p.setOpacity(settings_pressed ? 0.65 : 1.0); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  p.drawPixmap(settings_btn.x(), settings_btn.y(), settings_img); | 
					 | 
					 | 
					 | 
					  p.drawPixmap(settings_btn.x(), settings_btn.y(), settings_img); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  p.setOpacity(onroad && flag_pressed ? 0.65 : 1.0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  p.drawPixmap(home_btn.x(), home_btn.y(), onroad ? flag_img : home_img); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  p.setOpacity(1.0); | 
					 | 
					 | 
					 | 
					  p.setOpacity(1.0); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  p.drawPixmap(home_btn.x(), home_btn.y(), home_img); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  // network
 | 
					 | 
					 | 
					 | 
					  // network
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  int x = 58; | 
					 | 
					 | 
					 | 
					  int x = 58; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |