From 849a749b817a834094e82e257cb6bc3deccbdc1c Mon Sep 17 00:00:00 2001 From: Jason P Date: Mon, 13 Oct 2025 17:07:48 -0500 Subject: [PATCH] Fixup Waypoint screen with BaseUI code --- src/modules/WaypointModule.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/modules/WaypointModule.cpp b/src/modules/WaypointModule.cpp index ac6df6320..4db80ba18 100644 --- a/src/modules/WaypointModule.cpp +++ b/src/modules/WaypointModule.cpp @@ -2,6 +2,7 @@ #include "NodeDB.h" #include "PowerFSM.h" #include "configuration.h" +#include "graphics/SharedUIDisplay.h" #include "graphics/draw/CompassRenderer.h" #if HAS_SCREEN @@ -80,16 +81,20 @@ void WaypointModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, { if (!screen) return; - // Prepare to draw - display->setFont(FONT_SMALL); + display->clear(); display->setTextAlignment(TEXT_ALIGN_LEFT); + display->setFont(FONT_SMALL); + int line = 1; + + // === Set Title + const char *titleStr = "Waypoint"; + + // === Header === + graphics::drawCommonHeader(display, x, y, titleStr); + const int w = display->getWidth(); const int h = display->getHeight(); - // Handle inverted display - if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_INVERTED) - display->fillRect(x, y, w, FONT_HEIGHT_SMALL); - // Decode the waypoint const meshtastic_MeshPacket &mp = devicestate.rx_waypoint; meshtastic_Waypoint wp{}; @@ -108,10 +113,6 @@ void WaypointModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, // Get our node, to use our own position meshtastic_NodeInfoLite *ourNode = nodeDB->getMeshNode(nodeDB->getNodeNum()); - // Text fields to draw (left of compass) - // Last element must be NULL. This signals the end of the char*[] to drawColumns - const char *fields[] = {"Waypoint", lastStr, wp.name, wp.description, distStr, nullptr}; - // Dimensions / co-ordinates for the compass/circle const uint16_t compassDiam = graphics::CompassRenderer::getCompassDiam(w, h); const int16_t compassX = x + w - (compassDiam / 2) - 5; @@ -168,11 +169,10 @@ void WaypointModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *state, // Draw compass circle display->drawCircle(compassX, compassY, compassDiam / 2); - // Undo color-inversion, if set prior to drawing header - // Unsure of expected behavior? For now: copy drawNodeInfo - if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_INVERTED) { - display->setColor(BLACK); - } - graphics::NodeListRenderer::drawColumns(display, x, y, fields); + display->setTextAlignment(TEXT_ALIGN_LEFT); // Something above me changes to a different alignment, forcing a fix here! + display->drawString(0, graphics::getTextPositions(display)[line++], lastStr); + display->drawString(0, graphics::getTextPositions(display)[line++], wp.name); + display->drawString(0, graphics::getTextPositions(display)[line++], wp.description); + display->drawString(0, graphics::getTextPositions(display)[line++], distStr); } #endif