Fix to battery logo on Eink

This commit is contained in:
HarukiToreda 2025-05-04 15:07:44 -04:00
parent 0e1a1c99f0
commit df631d480b

View File

@ -157,7 +157,7 @@ static bool haveGlyphs(const char *str)
} }
} }
LOG_DEBUG("haveGlyphs=%d", have); // LOG_DEBUG("haveGlyphs=%d", have);
return have; return have;
} }
bool hasUnreadMessage = false; bool hasUnreadMessage = false;
@ -1055,6 +1055,9 @@ void drawCommonHeader(OLEDDisplay *display, int16_t x, int16_t y)
// === Vertical battery === // === Vertical battery ===
int batteryX = 1; int batteryX = 1;
int batteryY = HEADER_OFFSET_Y + 1; int batteryY = HEADER_OFFSET_Y + 1;
#ifdef USE_EINK
batteryY = batteryY + 2;
#endif
display->drawXbm(batteryX, batteryY, 7, 11, batteryBitmap_v); display->drawXbm(batteryX, batteryY, 7, 11, batteryBitmap_v);
@ -1079,7 +1082,11 @@ void drawCommonHeader(OLEDDisplay *display, int16_t x, int16_t y)
int chargeNumWidth = display->getStringWidth(chargeStr); int chargeNumWidth = display->getStringWidth(chargeStr);
const int batteryOffset = useHorizontalBattery ? 28 : 6; const int batteryOffset = useHorizontalBattery ? 28 : 6;
#ifdef USE_EINK
const int percentX = x + xOffset + batteryOffset - 2;
#else
const int percentX = x + xOffset + batteryOffset; const int percentX = x + xOffset + batteryOffset;
#endif
display->drawString(percentX, textY, chargeStr); display->drawString(percentX, textY, chargeStr);
display->drawString(percentX + chargeNumWidth - 1, textY, "%"); display->drawString(percentX + chargeNumWidth - 1, textY, "%");
@ -2137,8 +2144,7 @@ void drawNodeListScreen(OLEDDisplay *display, OLEDDisplayUiState *state, int16_t
void drawEntryLastHeard(OLEDDisplay *display, meshtastic_NodeInfoLite *node, int16_t x, int16_t y, int columnWidth) void drawEntryLastHeard(OLEDDisplay *display, meshtastic_NodeInfoLite *node, int16_t x, int16_t y, int columnWidth)
{ {
bool isLeftCol = (x < SCREEN_WIDTH / 2); bool isLeftCol = (x < SCREEN_WIDTH / 2);
int timeOffset = (SCREEN_WIDTH > 128) int timeOffset = (SCREEN_WIDTH > 128) ? (isLeftCol ? 7 : 10) // Offset for Wide Screens (Left Column:Right Column)
? (isLeftCol ? 7 : 10) // Offset for Wide Screens (Left Column:Right Column)
: (isLeftCol ? 3 : 7); // Offset for Narrow Screens (Left Column:Right Column) : (isLeftCol ? 3 : 7); // Offset for Narrow Screens (Left Column:Right Column)
String nodeName = getSafeNodeName(node); String nodeName = getSafeNodeName(node);
@ -2175,11 +2181,9 @@ void drawEntryHopSignal(OLEDDisplay *display, meshtastic_NodeInfoLite *node, int
bool isLeftCol = (x < SCREEN_WIDTH / 2); bool isLeftCol = (x < SCREEN_WIDTH / 2);
int nameMaxWidth = columnWidth - 25; int nameMaxWidth = columnWidth - 25;
int barsOffset = (SCREEN_WIDTH > 128) int barsOffset = (SCREEN_WIDTH > 128) ? (isLeftCol ? 16 : 20) // Offset for Wide Screens (Left Column:Right Column)
? (isLeftCol ? 16 : 20) // Offset for Wide Screens (Left Column:Right Column)
: (isLeftCol ? 15 : 19); // Offset for Narrow Screens (Left Column:Right Column) : (isLeftCol ? 15 : 19); // Offset for Narrow Screens (Left Column:Right Column)
int hopOffset = (SCREEN_WIDTH > 128) int hopOffset = (SCREEN_WIDTH > 128) ? (isLeftCol ? 22 : 28) // Offset for Wide Screens (Left Column:Right Column)
? (isLeftCol ? 22 : 28) // Offset for Wide Screens (Left Column:Right Column)
: (isLeftCol ? 18 : 20); // Offset for Narrow Screens (Left Column:Right Column) : (isLeftCol ? 18 : 20); // Offset for Narrow Screens (Left Column:Right Column)
int barsXOffset = columnWidth - barsOffset; int barsXOffset = columnWidth - barsOffset;
@ -2276,9 +2280,7 @@ void drawNodeDistance(OLEDDisplay *display, meshtastic_NodeInfoLite *node, int16
display->drawStringMaxWidth(x, y, nameMaxWidth, nodeName); display->drawStringMaxWidth(x, y, nameMaxWidth, nodeName);
if (strlen(distStr) > 0) { if (strlen(distStr) > 0) {
int offset = int offset = (SCREEN_WIDTH > 128) ? (isLeftCol ? 7 : 10) // Offset for Wide Screens (Left Column:Right Column)
(SCREEN_WIDTH > 128)
? (isLeftCol ? 7 : 10) // Offset for Wide Screens (Left Column:Right Column)
: (isLeftCol ? 5 : 8); // Offset for Narrow Screens (Left Column:Right Column) : (isLeftCol ? 5 : 8); // Offset for Narrow Screens (Left Column:Right Column)
int rightEdge = x + columnWidth - offset; int rightEdge = x + columnWidth - offset;
int textWidth = display->getStringWidth(distStr); int textWidth = display->getStringWidth(distStr);
@ -2362,7 +2364,7 @@ static void drawDynamicNodeListScreen(OLEDDisplay *display, OLEDDisplayUiState *
if (state->ticksSinceLastStateSwitch == 0) { if (state->ticksSinceLastStateSwitch == 0) {
currentMode = MODE_LAST_HEARD; currentMode = MODE_LAST_HEARD;
} }
const char *title = getCurrentModeTitle(); const char *title = getCurrentModeTitle(display->getWidth());
drawNodeListScreen(display, state, x, y, title, drawEntryDynamic); drawNodeListScreen(display, state, x, y, title, drawEntryDynamic);
} }
#endif #endif
@ -3698,19 +3700,15 @@ void Screen::dismissCurrentFrame()
bool dismissed = false; bool dismissed = false;
// Only dismiss if the text message frame is currently valid and visible // Only dismiss if the text message frame is currently valid and visible
if (framesetInfo.positions.textMessage != 255 && if (framesetInfo.positions.textMessage != 255 && currentFrame == framesetInfo.positions.textMessage &&
currentFrame == framesetInfo.positions.textMessage && devicestate.has_rx_text_message) {
devicestate.has_rx_text_message)
{
LOG_INFO("Dismiss Text Message"); LOG_INFO("Dismiss Text Message");
devicestate.has_rx_text_message = false; devicestate.has_rx_text_message = false;
memset(&devicestate.rx_text_message, 0, sizeof(devicestate.rx_text_message)); // ✅ clear message memset(&devicestate.rx_text_message, 0, sizeof(devicestate.rx_text_message)); // ✅ clear message
dismissed = true; dismissed = true;
} }
else if (currentFrame == framesetInfo.positions.waypoint && else if (currentFrame == framesetInfo.positions.waypoint && devicestate.has_rx_waypoint) {
devicestate.has_rx_waypoint)
{
LOG_DEBUG("Dismiss Waypoint"); LOG_DEBUG("Dismiss Waypoint");
devicestate.has_rx_waypoint = false; devicestate.has_rx_waypoint = false;
dismissed = true; dismissed = true;