diff --git a/selfdrive/ui/qt/maps/map_eta.cc b/selfdrive/ui/qt/maps/map_eta.cc index 9dbbad2845..322861ed15 100644 --- a/selfdrive/ui/qt/maps/map_eta.cc +++ b/selfdrive/ui/qt/maps/map_eta.cc @@ -3,6 +3,7 @@ #include #include +#include "selfdrive/ui/qt/maps/map_helpers.h" #include "selfdrive/ui/ui.h" const float MANEUVER_TRANSITION_THRESHOLD = 10; @@ -43,9 +44,7 @@ void MapETA::updateETA(float s, float s_typical, float d) { color = "#DAA725"; // Distance - float num = uiState()->scene.is_metric ? (d / 1000.0) : (d * METER_TO_MILE); - auto distance = std::pair{QString::number(num, 'f', num < 100 ? 1 : 0), - uiState()->scene.is_metric ? tr("km") : tr("mi")}; + auto distance = map_format_distance(d, uiState()->scene.is_metric); eta_doc.setHtml(QString(R"( diff --git a/selfdrive/ui/qt/maps/map_helpers.cc b/selfdrive/ui/qt/maps/map_helpers.cc index 95db4f2bbd..0f96638820 100644 --- a/selfdrive/ui/qt/maps/map_helpers.cc +++ b/selfdrive/ui/qt/maps/map_helpers.cc @@ -129,6 +129,23 @@ std::optional coordinate_from_param(const std::string ¶ } } +// return {distance, unit} +std::pair map_format_distance(float d, bool is_metric) { + auto round_distance = [](float d) -> float { + return (d > 10) ? std::nearbyint(d) : std::nearbyint(d * 10) / 10.0; + }; + + d = std::max(d, 0.0f); + if (is_metric) { + return (d > 500) ? std::pair{QString::number(round_distance(d / 1000)), QObject::tr("km")} + : std::pair{QString::number(50 * std::nearbyint(d / 50)), QObject::tr("m")}; + } else { + float feet = d * METER_TO_FOOT; + return (feet > 500) ? std::pair{QString::number(round_distance(d * METER_TO_MILE)), QObject::tr("mi")} + : std::pair{QString::number(50 * std::nearbyint(d / 50)), QObject::tr("ft")}; + } +} + double angle_difference(double angle1, double angle2) { double diff = fmod(angle2 - angle1 + 180.0, 360.0) - 180.0; return diff < -180.0 ? diff + 360.0 : diff; diff --git a/selfdrive/ui/qt/maps/map_helpers.h b/selfdrive/ui/qt/maps/map_helpers.h index f9c56107e3..0090753a40 100644 --- a/selfdrive/ui/qt/maps/map_helpers.h +++ b/selfdrive/ui/qt/maps/map_helpers.h @@ -25,6 +25,6 @@ QMapbox::CoordinatesCollections coordinate_to_collection(const QMapbox::Coordina QMapbox::CoordinatesCollections capnp_coordinate_list_to_collection(const capnp::List::Reader &coordinate_list); QMapbox::CoordinatesCollections coordinate_list_to_collection(const QList &coordinate_list); QList polyline_to_coordinate_list(const QString &polylineString); - std::optional coordinate_from_param(const std::string ¶m); +std::pair map_format_distance(float d, bool is_metric); double angle_difference(double angle1, double angle2); diff --git a/selfdrive/ui/qt/maps/map_instructions.cc b/selfdrive/ui/qt/maps/map_instructions.cc index 5910fe8143..0901213c76 100644 --- a/selfdrive/ui/qt/maps/map_instructions.cc +++ b/selfdrive/ui/qt/maps/map_instructions.cc @@ -3,6 +3,7 @@ #include #include +#include "selfdrive/ui/qt/maps/map_helpers.h" #include "selfdrive/ui/ui.h" const QString ICON_SUFFIX = ".png"; @@ -63,18 +64,6 @@ void MapInstructions::buildPixmapCache() { } } -QString MapInstructions::getDistance(float d) { - d = std::max(d, 0.0f); - if (uiState()->scene.is_metric) { - return (d > 500) ? QString::number(d / 1000, 'f', 1) + tr(" km") - : QString::number(50 * qRound(d / 50)) + tr(" m"); - } else { - float feet = d * METER_TO_FOOT; - return (feet > 500) ? QString::number(d * METER_TO_MILE, 'f', 1) + tr(" mi") - : QString::number(50 * qRound(feet / 50)) + tr(" ft"); - } -} - void MapInstructions::updateInstructions(cereal::NavInstruction::Reader instruction) { setUpdatesEnabled(false); @@ -85,7 +74,9 @@ void MapInstructions::updateInstructions(cereal::NavInstruction::Reader instruct primary->setText(primary_str); secondary->setVisible(secondary_str.length() > 0); secondary->setText(secondary_str); - distance->setText(getDistance(instruction.getManeuverDistance())); + + auto distance_str_pair = map_format_distance(instruction.getManeuverDistance(), uiState()->scene.is_metric); + distance->setText(QString("%1 %2").arg(distance_str_pair.first, distance_str_pair.second)); // Show arrow with direction QString type = QString::fromStdString(instruction.getManeuverType()); diff --git a/selfdrive/ui/qt/maps/map_instructions.h b/selfdrive/ui/qt/maps/map_instructions.h index 163c223a2d..6c08cb9b9e 100644 --- a/selfdrive/ui/qt/maps/map_instructions.h +++ b/selfdrive/ui/qt/maps/map_instructions.h @@ -31,6 +31,5 @@ private: public: MapInstructions(QWidget * parent=nullptr); void buildPixmapCache(); - QString getDistance(float d); void updateInstructions(cereal::NavInstruction::Reader instruction); }; diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index 74b60f4b74..a1b8faa2e3 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -354,33 +354,6 @@ hr std - - km - km - - - mi - mi - - - - MapInstructions - - km - km - - - m - m - - - mi - mi - - - ft - fuß - MapSettings @@ -620,6 +593,22 @@ vor %n Tagen + + km + km + + + m + m + + + mi + mi + + + ft + fuß + Reset diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index 369502b589..14ca4df954 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -354,33 +354,6 @@ hr h - - km - km - - - mi - mi - - - - MapInstructions - - km - km - - - m - m - - - mi - mi - - - ft - ft - MapSettings @@ -621,6 +594,22 @@ il y a %n jours + + km + km + + + m + m + + + mi + mi + + + ft + ft + Reset diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index ef9eb93e80..e766204660 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -353,33 +353,6 @@ hr 時間 - - km - キロメートル - - - mi - マイル - - - - MapInstructions - - km - キロメートル - - - m - メートル - - - mi - マイル - - - ft - フィート - MapSettings @@ -616,6 +589,22 @@ %n 日前 + + km + キロメートル + + + m + メートル + + + mi + マイル + + + ft + フィート + Reset diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index b2473a3fb9..851c306a47 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -353,33 +353,6 @@ hr 시간 - - km - km - - - mi - mi - - - - MapInstructions - - km - km - - - m - m - - - mi - mi - - - ft - ft - MapSettings @@ -617,6 +590,22 @@ %n 일전 + + km + km + + + m + m + + + mi + mi + + + ft + ft + Reset diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index d102fb39ca..7aa0c7c49b 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -354,33 +354,6 @@ hr hr - - km - km - - - mi - mi - - - - MapInstructions - - km - km - - - m - m - - - mi - milha - - - ft - pés - MapSettings @@ -621,6 +594,22 @@ há %n dias + + km + km + + + m + m + + + mi + milha + + + ft + pés + Reset diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index 843356c402..9ef2d8a913 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -353,33 +353,6 @@ hr ชม. - - km - กม. - - - mi - ไมล์ - - - - MapInstructions - - km - กม. - - - m - ม. - - - mi - ไมล์ - - - ft - ฟุต - MapSettings @@ -617,6 +590,22 @@ %n วันที่แล้ว + + km + กม. + + + m + ม. + + + mi + ไมล์ + + + ft + ฟุต + Reset diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index 612ad11043..ad882f5786 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -353,33 +353,6 @@ hr saat - - km - km - - - mi - mil - - - - MapInstructions - - km - km - - - m - m - - - mi - mil - - - ft - ft - MapSettings @@ -616,6 +589,22 @@ %n gün önce + + km + km + + + m + m + + + mi + mil + + + ft + ft + Reset diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 17c768eb79..48eb63338b 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -353,33 +353,6 @@ hr 小时 - - km - km - - - mi - mi - - - - MapInstructions - - km - km - - - m - m - - - mi - mi - - - ft - ft - MapSettings @@ -617,6 +590,22 @@ %n 天前 + + km + km + + + m + m + + + mi + mi + + + ft + ft + Reset diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index 084cc13c3c..6eacb6428c 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -353,33 +353,6 @@ hr 小時 - - km - km - - - mi - mi - - - - MapInstructions - - km - km - - - m - m - - - mi - mi - - - ft - ft - MapSettings @@ -617,6 +590,22 @@ %n 天前 + + km + km + + + m + m + + + mi + mi + + + ft + ft + Reset
%1%2 %4%5