|  |  | @ -45,9 +45,9 @@ MapWindow::MapWindow(const QMapboxGLSettings &settings) : m_settings(settings) { | 
			
		
	
		
		
			
				
					
					|  |  |  |   map_eta = new MapETA(this); |  |  |  |   map_eta = new MapETA(this); | 
			
		
	
		
		
			
				
					
					|  |  |  |   connect(this, &MapWindow::ETAChanged, map_eta, &MapETA::updateETA); |  |  |  |   connect(this, &MapWindow::ETAChanged, map_eta, &MapETA::updateETA); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   const int h = 180; |  |  |  |   const int h = 120; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   map_eta->setFixedHeight(h); |  |  |  |   map_eta->setFixedHeight(h); | 
			
		
	
		
		
			
				
					
					|  |  |  |   map_eta->move(0, 1080 - h); |  |  |  |   map_eta->move(25, 1080 - h); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   map_eta->setVisible(false); |  |  |  |   map_eta->setVisible(false); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   // Routing
 |  |  |  |   // Routing
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -639,49 +639,46 @@ void MapInstructions::updateInstructions(QMap<QString, QVariant> banner, bool fu | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | MapETA::MapETA(QWidget * parent) : QWidget(parent) { |  |  |  | MapETA::MapETA(QWidget * parent) : QWidget(parent) { | 
			
		
	
		
		
			
				
					
					|  |  |  |   QHBoxLayout *main_layout = new QHBoxLayout(this); |  |  |  |   QHBoxLayout *main_layout = new QHBoxLayout(this); | 
			
		
	
		
		
			
				
					
					|  |  |  |   main_layout->setContentsMargins(20, 25, 20, 25); |  |  |  |   main_layout->setContentsMargins(40, 25, 40, 25); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   { |  |  |  |   { | 
			
		
	
		
		
			
				
					
					|  |  |  |     QVBoxLayout *layout = new QVBoxLayout; |  |  |  |     QHBoxLayout *layout = new QHBoxLayout; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     eta = new QLabel; |  |  |  |     eta = new QLabel; | 
			
		
	
		
		
			
				
					
					|  |  |  |     eta->setAlignment(Qt::AlignCenter); |  |  |  |     eta->setAlignment(Qt::AlignCenter); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     eta->setStyleSheet("font-weight:600"); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     auto eta_unit = new QLabel("eta"); |  |  |  |     eta_unit = new QLabel; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     eta_unit->setAlignment(Qt::AlignCenter); |  |  |  |     eta_unit->setAlignment(Qt::AlignCenter); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     layout->addStretch(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     layout->addWidget(eta); |  |  |  |     layout->addWidget(eta); | 
			
		
	
		
		
			
				
					
					|  |  |  |     layout->addWidget(eta_unit); |  |  |  |     layout->addWidget(eta_unit); | 
			
		
	
		
		
			
				
					
					|  |  |  |     layout->addStretch(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     main_layout->addLayout(layout); |  |  |  |     main_layout->addLayout(layout); | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  |   main_layout->addSpacing(30); |  |  |  |   main_layout->addSpacing(40); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   { |  |  |  |   { | 
			
		
	
		
		
			
				
					
					|  |  |  |     QVBoxLayout *layout = new QVBoxLayout; |  |  |  |     QHBoxLayout *layout = new QHBoxLayout; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     time = new QLabel; |  |  |  |     time = new QLabel; | 
			
		
	
		
		
			
				
					
					|  |  |  |     time->setAlignment(Qt::AlignCenter); |  |  |  |     time->setAlignment(Qt::AlignCenter); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     time_unit = new QLabel; |  |  |  |     time_unit = new QLabel; | 
			
		
	
		
		
			
				
					
					|  |  |  |     time_unit->setAlignment(Qt::AlignCenter); |  |  |  |     time_unit->setAlignment(Qt::AlignCenter); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     layout->addStretch(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     layout->addWidget(time); |  |  |  |     layout->addWidget(time); | 
			
		
	
		
		
			
				
					
					|  |  |  |     layout->addWidget(time_unit); |  |  |  |     layout->addWidget(time_unit); | 
			
		
	
		
		
			
				
					
					|  |  |  |     layout->addStretch(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     main_layout->addLayout(layout); |  |  |  |     main_layout->addLayout(layout); | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  |   main_layout->addSpacing(30); |  |  |  |   main_layout->addSpacing(40); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   { |  |  |  |   { | 
			
		
	
		
		
			
				
					
					|  |  |  |     QVBoxLayout *layout = new QVBoxLayout; |  |  |  |     QHBoxLayout *layout = new QHBoxLayout; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     distance = new QLabel; |  |  |  |     distance = new QLabel; | 
			
		
	
		
		
			
				
					
					|  |  |  |     distance->setAlignment(Qt::AlignCenter); |  |  |  |     distance->setAlignment(Qt::AlignCenter); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     distance->setStyleSheet("font-weight:600"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     distance_unit = new QLabel; |  |  |  |     distance_unit = new QLabel; | 
			
		
	
		
		
			
				
					
					|  |  |  |     distance_unit->setAlignment(Qt::AlignCenter); |  |  |  |     distance_unit->setAlignment(Qt::AlignCenter); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     layout->addStretch(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     layout->addWidget(distance); |  |  |  |     layout->addWidget(distance); | 
			
		
	
		
		
			
				
					
					|  |  |  |     layout->addWidget(distance_unit); |  |  |  |     layout->addWidget(distance_unit); | 
			
		
	
		
		
			
				
					
					|  |  |  |     layout->addStretch(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     main_layout->addLayout(layout); |  |  |  |     main_layout->addLayout(layout); | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -707,8 +704,11 @@ void MapETA::updateETA(float s, float s_typical, float d) { | 
			
		
	
		
		
			
				
					
					|  |  |  |   auto eta_time = QDateTime::currentDateTime().addSecs(s).time(); |  |  |  |   auto eta_time = QDateTime::currentDateTime().addSecs(s).time(); | 
			
		
	
		
		
			
				
					
					|  |  |  |   if (params.getBool("NavSettingTime24h")) { |  |  |  |   if (params.getBool("NavSettingTime24h")) { | 
			
		
	
		
		
			
				
					
					|  |  |  |     eta->setText(eta_time.toString("HH:mm")); |  |  |  |     eta->setText(eta_time.toString("HH:mm")); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     eta_unit->setText("eta"); | 
			
		
	
		
		
			
				
					
					|  |  |  |   } else { |  |  |  |   } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |     eta->setText(eta_time.toString("h:mm a")); |  |  |  |     auto t = eta_time.toString("h:mm a").split(' '); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     eta->setText(t[0]); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     eta_unit->setText(t[1]); | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   // Remaining time
 |  |  |  |   // Remaining time
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -721,17 +721,18 @@ void MapETA::updateETA(float s, float s_typical, float d) { | 
			
		
	
		
		
			
				
					
					|  |  |  |     time_unit->setText("hr"); |  |  |  |     time_unit->setText("hr"); | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   QString color; | 
			
		
	
		
		
			
				
					
					|  |  |  |   if (s / s_typical > 1.5) { |  |  |  |   if (s / s_typical > 1.5) { | 
			
		
	
		
		
			
				
					
					|  |  |  |     time_unit->setStyleSheet(R"(color: #DA3025; )"); |  |  |  |     color = "#DA3025"; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     time->setStyleSheet(R"(color: #DA3025; )"); |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   } else if (s / s_typical > 1.2) { |  |  |  |   } else if (s / s_typical > 1.2) { | 
			
		
	
		
		
			
				
					
					|  |  |  |     time_unit->setStyleSheet(R"(color: #DAA725; )"); |  |  |  |     color = "#DAA725"; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     time->setStyleSheet(R"(color: #DAA725; )"); |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   } else { |  |  |  |   } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |     time_unit->setStyleSheet(R"(color: #25DA6E; )"); |  |  |  |     color = "#25DA6E"; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     time->setStyleSheet(R"(color: #25DA6E; )"); |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   time->setStyleSheet(QString(R"(color: %1; font-weight:600;)").arg(color)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   time_unit->setStyleSheet(QString(R"(color: %1;)").arg(color)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   // Distance
 |  |  |  |   // Distance
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   QString distance_str; |  |  |  |   QString distance_str; | 
			
		
	
		
		
			
				
					
					|  |  |  |   float num = 0; |  |  |  |   float num = 0; | 
			
		
	
	
		
		
			
				
					|  |  | @ -747,4 +748,23 @@ void MapETA::updateETA(float s, float s_typical, float d) { | 
			
		
	
		
		
			
				
					
					|  |  |  |   distance->setText(distance_str); |  |  |  |   distance->setText(distance_str); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   adjustSize(); |  |  |  |   adjustSize(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   // Rounded corners
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   const int radius = 25; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   const auto r = rect(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   // Top corners rounded
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   QPainterPath path; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   path.setFillRule(Qt::WindingFill); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   path.addRoundedRect(r, radius, radius); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   // Bottom corners not rounded
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   path.addRect(r.marginsRemoved(QMargins(0, radius, 0, 0))); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   // Set clipping mask
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   QRegion mask = QRegion(path.simplified().toFillPolygon().toPolygon()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   setMask(mask); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   // Center
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   move(static_cast<QWidget*>(parent())->width() / 2 - width() / 2, 1080 - height()); | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |