feat(ui): a turn dial / compass rose on narrow navigation screens

navview::draw (Waypoints, trail back, Nearby, a message's location) shows a
dial beside the lines, or under them on a tall screen (portrait e-ink) where
that makes it larger: with a course a turn dial (the top is where you're
heading, the arrow points at the target, "Turn R 55"), without it the compass
rose. The 4.2" screens keep theirs. On a short screen (the 64 px OLED) the
gap under the distance and the pitch of the lines give way so the ETA is not
cut off at the bottom.

sim_nav_waypoint() opens a waypoint's navigate view from the simulator page.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-10-25 14:47:51 +01:00
co-authored by Claude Sonnet 5.5
parent 15ac4d8f83
commit 52812d8235
6 changed files with 88 additions and 9 deletions
@@ -472,6 +472,11 @@ void UITask::simNodes() {
// Sim tests: a walked trail ending at the GPS fix of simNodes(), and two
// waypoints beside it, for the maps.
void UITask::simNavWaypoint(int row) {
setCurrScreen(trail_screen);
((TrailScreen*)trail_screen)->simWaypointNav(row);
}
void UITask::simTrail() {
TrailStore& tr = _core->trail.store();
const uint32_t now = rtc_clock.getCurrentTime();
@@ -966,6 +971,10 @@ extern "C" EMSCRIPTEN_KEEPALIVE void sim_nodes() {
if (g_sim_ui_task_for_js) g_sim_ui_task_for_js->simNodes();
}
extern "C" EMSCRIPTEN_KEEPALIVE void sim_nav_waypoint(int row) {
if (g_sim_ui_task_for_js) g_sim_ui_task_for_js->simNavWaypoint(row);
}
extern "C" EMSCRIPTEN_KEEPALIVE void sim_trail() {
if (g_sim_ui_task_for_js) g_sim_ui_task_for_js->simTrail();
}