mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-07-27 23:38:12 +00:00
refactor(ui): shared drawList + header + key-decode helpers
- drawList(): scrollable list skeleton (visible window, keep-sel-in-view, scroll-column reserve, per-row callback, indicator). Migrate Tools, Bot, Nearby, Waypoints list and the three QuickMsg lists onto it; centralises the scroll-clamp/reserve/indicator that each had open-coded (and inconsistently). - drawCenteredHeader(): centred title + separator, replacing the duplicated two-liner across ~10 screens (incl. QuickMsg, which used width()/2 spacing and was missed before); unifies the separator at headerH()-sepH(). - keyIsPrev()/keyIsNext() in UIScreen.h for the LEFT||PREV / RIGHT||NEXT idiom; applied to 6 screens, behaviour-preserving. Cancel/context-menu stay per-screen (they mean different things on different screens). - rotLabel() dedups the 0/90/180/270 array in Settings. - Unify selection-row height to lineStep()-1 (Tools/Bot matched the rest). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -185,6 +185,15 @@ public:
|
||||
fillRect(0, hdr - 1, width(), sepH());
|
||||
}
|
||||
|
||||
// Centred screen title + bottom separator line — the standard top bar for
|
||||
// full-screen list/detail views. Leaves ink LIGHT; callers can draw extra
|
||||
// header content (counters, etc.) afterwards.
|
||||
void drawCenteredHeader(const char* title) {
|
||||
setColor(LIGHT);
|
||||
drawTextCentered(width() / 2, 0, title);
|
||||
fillRect(0, headerH() - sepH(), width(), sepH());
|
||||
}
|
||||
|
||||
// Advance a UTF-8 pointer by one codepoint, returning the decoded value.
|
||||
// Invalid sequences return 0xFFFD and consume trailing continuation bytes.
|
||||
static uint32_t decodeCodepoint(const uint8_t*& p) {
|
||||
|
||||
@@ -14,6 +14,12 @@
|
||||
#define KEY_PREV 0xF2
|
||||
#define KEY_CONTEXT_MENU 0xF3
|
||||
|
||||
// "Previous"/"Next" navigation keys: the directional key and its rotary-encoder
|
||||
// twin. Decrement / increment a value, or step a selection. (Cancel and the
|
||||
// context-menu key stay screen-specific — they mean different things per screen.)
|
||||
static inline bool keyIsPrev(char c) { return c == KEY_LEFT || c == KEY_PREV; }
|
||||
static inline bool keyIsNext(char c) { return c == KEY_RIGHT || c == KEY_NEXT; }
|
||||
|
||||
#ifndef JOYSTICK_ROTATION
|
||||
#define JOYSTICK_ROTATION 0
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user