diff --git a/selfdrive/ui/qt/maps/map.cc b/selfdrive/ui/qt/maps/map.cc index 2c29e7ab38..970678d65b 100644 --- a/selfdrive/ui/qt/maps/map.cc +++ b/selfdrive/ui/qt/maps/map.cc @@ -45,9 +45,9 @@ MapWindow::MapWindow(const QMapboxGLSettings &settings) : m_settings(settings) { map_eta = new MapETA(this); connect(this, &MapWindow::ETAChanged, map_eta, &MapETA::updateETA); - const int h = 180; + const int h = 120; map_eta->setFixedHeight(h); - map_eta->move(0, 1080 - h); + map_eta->move(25, 1080 - h); map_eta->setVisible(false); // Routing @@ -639,49 +639,46 @@ void MapInstructions::updateInstructions(QMap banner, bool fu MapETA::MapETA(QWidget * parent) : QWidget(parent) { 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->setAlignment(Qt::AlignCenter); + eta->setStyleSheet("font-weight:600"); - auto eta_unit = new QLabel("eta"); + eta_unit = new QLabel; eta_unit->setAlignment(Qt::AlignCenter); - layout->addStretch(); layout->addWidget(eta); layout->addWidget(eta_unit); - layout->addStretch(); main_layout->addLayout(layout); } - main_layout->addSpacing(30); + main_layout->addSpacing(40); { - QVBoxLayout *layout = new QVBoxLayout; + QHBoxLayout *layout = new QHBoxLayout; time = new QLabel; time->setAlignment(Qt::AlignCenter); time_unit = new QLabel; time_unit->setAlignment(Qt::AlignCenter); - layout->addStretch(); layout->addWidget(time); layout->addWidget(time_unit); - layout->addStretch(); main_layout->addLayout(layout); } - main_layout->addSpacing(30); + main_layout->addSpacing(40); { - QVBoxLayout *layout = new QVBoxLayout; + QHBoxLayout *layout = new QHBoxLayout; distance = new QLabel; distance->setAlignment(Qt::AlignCenter); + distance->setStyleSheet("font-weight:600"); + distance_unit = new QLabel; distance_unit->setAlignment(Qt::AlignCenter); - layout->addStretch(); layout->addWidget(distance); layout->addWidget(distance_unit); - layout->addStretch(); 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(); if (params.getBool("NavSettingTime24h")) { eta->setText(eta_time.toString("HH:mm")); + eta_unit->setText("eta"); } 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 @@ -721,17 +721,18 @@ void MapETA::updateETA(float s, float s_typical, float d) { time_unit->setText("hr"); } + QString color; if (s / s_typical > 1.5) { - time_unit->setStyleSheet(R"(color: #DA3025; )"); - time->setStyleSheet(R"(color: #DA3025; )"); + color = "#DA3025"; } else if (s / s_typical > 1.2) { - time_unit->setStyleSheet(R"(color: #DAA725; )"); - time->setStyleSheet(R"(color: #DAA725; )"); + color = "#DAA725"; } else { - time_unit->setStyleSheet(R"(color: #25DA6E; )"); - time->setStyleSheet(R"(color: #25DA6E; )"); + color = "#25DA6E"; } + time->setStyleSheet(QString(R"(color: %1; font-weight:600;)").arg(color)); + time_unit->setStyleSheet(QString(R"(color: %1;)").arg(color)); + // Distance QString distance_str; float num = 0; @@ -747,4 +748,23 @@ void MapETA::updateETA(float s, float s_typical, float d) { distance->setText(distance_str); 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(parent())->width() / 2 - width() / 2, 1080 - height()); } diff --git a/selfdrive/ui/qt/maps/map.h b/selfdrive/ui/qt/maps/map.h index fb7a056feb..654512d2dc 100644 --- a/selfdrive/ui/qt/maps/map.h +++ b/selfdrive/ui/qt/maps/map.h @@ -51,6 +51,7 @@ class MapETA : public QWidget { private: QLabel *eta; + QLabel *eta_unit; QLabel *time; QLabel *time_unit; QLabel *distance;