feat(ui): status-bar mini-icons + settings fixes

- Replace single-letter M/B/A/G top-bar indicators with scalable mini-icons:
  ICON_MUTE (speaker+cross), ICON_BLUETOOTH (rune), ICON_ADVERT (broadcast
  mast+waves), ICON_TRAIL (map pin). Centred in the cw+2 indicator box;
  disconnected BT shows the plain glyph instead of lowercase b.
- fix(settings): right-side values used display.valCol() without the scrollbar
  reserve, so after expanding a section they rendered under the indicator.
  Route all value cursors through valCol(display) = display.valCol() - _reserve.
- fix(settings): font toggle used ^=1, which on a stale value of 2 (older Hybrid
  build) flips 2<->3 — both nonzero, locking applyFont() on Lemon with no way
  back. Normalise: use_lemon_font = use_lemon_font ? 0 : 1.
- docs(settings): document Messages > Resend setting.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-06-15 16:45:28 +02:00
co-authored by Claude Opus 4.8
parent 6e4177f3d6
commit 353dee5878
4 changed files with 77 additions and 38 deletions
+6 -10
View File
@@ -445,8 +445,7 @@ class HomeScreen : public UIScreen {
int mx = battLeftX - ind - ind_gap;
display.fillRect(mx, 0, ind, ind_h);
display.setColor(DisplayDriver::DARK);
display.setCursor(mx + 1, 0);
display.print("M");
miniIconDraw(display, mx + (ind - ICON_MUTE.w * miniIconScale(display)) / 2, 0, ICON_MUTE);
display.setColor(DisplayDriver::LIGHT);
battLeftX = mx;
}
@@ -456,16 +455,15 @@ class HomeScreen : public UIScreen {
int leftmostX = battLeftX;
if (_task->isSerialEnabled()) {
int btX = battLeftX - ind - ind_gap;
int btIconX = btX + (ind - ICON_BLUETOOTH.w * miniIconScale(display)) / 2;
if (_task->isBLEConnected()) { // BT icon reflects BLE link, not USB
display.setColor(DisplayDriver::LIGHT);
display.fillRect(btX, 0, ind, ind_h);
display.setColor(DisplayDriver::DARK);
display.setCursor(btX + 1, 0);
display.print("B");
miniIconDraw(display, btIconX, 0, ICON_BLUETOOTH);
display.setColor(DisplayDriver::LIGHT);
} else {
display.setCursor(btX + 1, 0);
display.print("b");
miniIconDraw(display, btIconX, 0, ICON_BLUETOOTH); // plain glyph: available, not linked
}
leftmostX = btX - ind_gap;
@@ -477,8 +475,7 @@ class HomeScreen : public UIScreen {
display.setColor(DisplayDriver::LIGHT);
display.fillRect(aX, 0, ind, ind_h);
display.setColor(DisplayDriver::DARK);
display.setCursor(aX + 1, 0);
display.print("A");
miniIconDraw(display, aX + (ind - ICON_ADVERT.w * miniIconScale(display)) / 2, 0, ICON_ADVERT);
display.setColor(DisplayDriver::LIGHT);
}
leftmostX = aX - 1;
@@ -492,8 +489,7 @@ class HomeScreen : public UIScreen {
display.setColor(DisplayDriver::LIGHT);
display.fillRect(gX, 0, ind, ind_h);
display.setColor(DisplayDriver::DARK);
display.setCursor(gX + 1, 0);
display.print("G");
miniIconDraw(display, gX + (ind - ICON_TRAIL.w * miniIconScale(display)) / 2, 0, ICON_TRAIL);
display.setColor(DisplayDriver::LIGHT);
}
leftmostX = gX - 1;