map panel for free

This commit is contained in:
Rick Lan
2024-06-14 16:46:23 +08:00
parent 95193efde8
commit b74144ece3
10 changed files with 29 additions and 6 deletions
+1
View File
@@ -221,6 +221,7 @@ std::unordered_map<std::string, uint32_t> keys = {
{"dp_vag_sng", PERSISTENT},
{"dp_vehicle_list", PERSISTENT},
{"dp_vehicle_assigned", PERSISTENT},
{"dp_ui_map_panel", PERSISTENT},
};
} // namespace
+1 -1
Submodule dp_ext updated: 22edb00adc...33c4c75b32
+1 -1
Submodule dp_priv updated: ef6eac9805...586b0725b1
+2 -1
View File
@@ -37,7 +37,8 @@ if maps:
base_libs += ['QMapLibre']
widgets_src += ["qt/maps/map_helpers.cc", "qt/maps/map_settings.cc", "qt/maps/map.cc", "qt/maps/map_panel.cc",
"qt/maps/map_eta.cc", "qt/maps/map_instructions.cc"]
# if dp_priv:
if dp_priv:
widgets_src = insert_src(widgets_src, "qt/maps/map_helpers.cc", ["#dp_priv/selfdrive/ui/qt/maps/map_helpers.cc"])
# widgets_src = insert_src(widgets_src, "qt/maps/map_settings.cc", ["#dp_priv/selfdrive/ui/qt/maps/map_settings.cc"])
qt_env['CPPDEFINES'] += ["ENABLE_MAPS"]
+7
View File
@@ -10,6 +10,7 @@
#include "selfdrive/ui/qt/util.h"
#include "selfdrive/ui/ui.h"
#include "dp_priv/selfdrive/ui/qt/maps/map_helpers.h"
const int INTERACTION_TIMEOUT = 100;
@@ -262,6 +263,12 @@ void MapWindow::initializeGL() {
m_map->setPitch(MIN_PITCH);
m_map->setStyleUrl("mapbox://styles/commaai/clkqztk0f00ou01qyhsa5bzpj");
#ifdef DP
if (uiState()->scene.dp_ui_map_panel) {
ReconfigureMapPanel(m_map);
}
#endif
QObject::connect(m_map.data(), &QMapLibre::Map::mapChanged, [=](QMapLibre::Map::MapChange change) {
// set global animation duration to 0 ms so visibility changes are instant
if (change == QMapLibre::Map::MapChange::MapChangeDidFinishLoadingStyle) {
+9 -3
View File
@@ -54,6 +54,7 @@ OnroadWindow::OnroadWindow(QWidget *parent) : QWidget(parent) {
#endif
// rick - read full screen param
dp_nav_full_screen = Params().getBool("dp_nav_full_screen");
dp_ui_map_panel = Params().getBool("dp_ui_map_panel");
}
void OnroadWindow::updateState(const UIState &s) {
@@ -114,13 +115,18 @@ void OnroadWindow::createMapWidget() {
split->insertWidget(0, m);
// hidden by default, made visible when navRoute is published
m->setVisible(false);
if (dp_ui_map_panel) {
nvg->map_settings_btn->setEnabled(false);
nvg->map_settings_btn->setVisible(false);
}
#endif
}
void OnroadWindow::offroadTransition(bool offroad) {
#ifdef ENABLE_MAPS
if (!offroad) {
if (map == nullptr && (uiState()->hasPrime() || !MAPBOX_TOKEN.isEmpty())) {
if (map == nullptr && (dp_ui_map_panel || uiState()->hasPrime() || !MAPBOX_TOKEN.isEmpty())) {
createMapWidget();
}
}
@@ -130,12 +136,12 @@ void OnroadWindow::offroadTransition(bool offroad) {
void OnroadWindow::primeChanged(bool prime) {
#ifdef ENABLE_MAPS
if (map && (!prime && MAPBOX_TOKEN.isEmpty())) {
if (map && (!dp_ui_map_panel && !prime && MAPBOX_TOKEN.isEmpty())) {
nvg->map_settings_btn->setEnabled(false);
nvg->map_settings_btn->setVisible(false);
map->deleteLater();
map = nullptr;
} else if (!map && (prime || !MAPBOX_TOKEN.isEmpty())) {
} else if (!map && (dp_ui_map_panel || prime || !MAPBOX_TOKEN.isEmpty())) {
createMapWidget();
}
#endif
+1
View File
@@ -30,6 +30,7 @@ private:
// dp
bool dp_nav_full_screen = false;
bool dp_ui_map_panel = false;
#ifdef DP
BorderIndicator *border_indicator;
#endif
+3
View File
@@ -215,6 +215,9 @@ void ui_update_params(UIState *s) {
auto params = Params();
s->scene.is_metric = params.getBool("IsMetric");
s->scene.map_on_left = params.getBool("NavSettingLeftSide");
// dp
s->scene.dp_ui_map_panel = params.getBool("dp_ui_map_panel");
}
void UIState::updateStatus() {
+3
View File
@@ -108,6 +108,9 @@ typedef struct UIScene {
bool started, ignition, is_metric, map_on_left, longitudinal_control;
bool world_objects_visible = false;
uint64_t started_frame;
// dp
bool dp_ui_map_panel;
} UIScene;
class UIState : public QObject {
+1
View File
@@ -53,6 +53,7 @@ def manager_init() -> None:
("dp_vag_sng", "0"),
("dp_vehicle_list", ""),
("dp_vehicle_assigned", ""),
("dp_ui_map_panel", "0"),
]
if not PC:
default_params.append(("LastUpdateTime", datetime.datetime.now(datetime.UTC).replace(tzinfo=None).isoformat().encode('utf8')))