feat(l1): one title bar, page dots, disclosure marks and push buttons

drawScreenHeader replaces drawCenteredHeader on every ui-new screen: the
title in normal case, page dots instead of "TRAIL 1/3", the menu hint, no
icon (the screen was just picked by one). Accordions in Settings and Tools
show a disclosure triangle instead of +/-, Tools sections drop their icons.
Form "[Save]" rows and "+ Send" share drawButton; form fields use valueRow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-10-02 08:45:05 +02:00
co-authored by Claude Opus 5.5
parent 4ba171d6d8
commit 6d8e56fbd0
18 changed files with 159 additions and 104 deletions
@@ -146,7 +146,7 @@ class ClockToolsScreen : public UIScreen {
// ── Sub-renders ───────────────────────────────────────────────────────────
int renderMenu(DisplayDriver& d) {
d.drawCenteredHeader("CLOCK TOOLS");
drawScreenHeader(d, "Clock tools");
static const char* items[3] = { "Alarm", "Timer", "Stopwatch" };
if (_sel > 2) _sel = 2;
drawList(d, 3, _sel, _scroll, [&](int i, int y, bool sel, int reserve) {
@@ -163,7 +163,7 @@ class ClockToolsScreen : public UIScreen {
}
int renderAlarm(DisplayDriver& d) {
d.drawCenteredHeader("ALARM");
drawScreenHeader(d, "Alarm");
if (!_prefs) return 60000;
const char* rows[3] = { "Time", "Repeat", "Armed" };
if (_sel > 2) _sel = 2;
@@ -186,7 +186,7 @@ class ClockToolsScreen : public UIScreen {
}
int renderTimer(DisplayDriver& d) {
d.drawCenteredHeader("TIMER");
drawScreenHeader(d, "Timer");
const int cx = d.width() / 2;
if (_task->isTimerRunning()) {
char buf[16];
@@ -215,7 +215,7 @@ class ClockToolsScreen : public UIScreen {
}
int renderStopwatch(DisplayDriver& d) {
d.drawCenteredHeader("STOPWATCH");
drawScreenHeader(d, "Stopwatch");
const int cx = d.width() / 2;
char buf[16];
bool tenths = !d.isEink() && _sw_running; // tenths only on a fast panel