feat(ui-lvgl): title bar with the clock, tidier controls, contextual nav bar

Density from less chrome instead of smaller rows (ROW_H stays 44):
- titled screens drop the status bar; the title bar (APPBAR_H) holds back,
  the title, the screen's actions and the time/battery on a pill; the status
  bar returns for Home, the map, typing, the quick panel and the lock
- one radius (RADIUS) for everything tapped: buttons, tabs, choices, chips
- tabs are all segmented at TAB_H in the body (GPS, Clock converted)
- Nodes: chips row + sort + status line become one toolbar row with
  Show / Order choices; Messages' All/Favourites is the same choice
- nav map: the target bar only while there is a target; the pin opens one
  "Places" popup; back from a map options page restores the map and Map
  tools as left, without a jump
- node detail actions at the top of the scroll; Home tiles fill the page
- rowsFit() leaves growing labels to the flex (a screen title cut to one
  letter after Messages' filter changed)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-10-14 12:51:03 +02:00
co-authored by Claude Opus 5.5
parent a8440c890e
commit c779bf46b5
23 changed files with 408 additions and 244 deletions
+8 -3
View File
@@ -27,10 +27,15 @@ namespace theme {
// Spacing (px)
static const int PAD = 8;
static const int GAP = 6;
static const int RADIUS = 10; // cards, rows, buttons (pills use LV_RADIUS_CIRCLE)
static const int RADIUS_SM = 6; // small cells inside those
static const int STATUS_H = 22; // top status bar
static const int RADIUS = 10; // cards, rows and everything tapped: buttons, tabs, choices, chips
static const int RADIUS_SM = 6; // small drawn cells inside those (chart backgrounds, captions)
static const int STATUS_H = 22; // top status bar (Home, the map: screens without a title bar)
static const int ROW_H = 44; // list row (touch target)
// A screen's title bar, at the top in place of the status bar: back, the
// title, the screen's actions, then the time and battery.
static const int APPBAR_H = 40;
static const int BAR_BTN_H = 32; // back and the actions in it
static const int TAB_H = 34; // a screen's tabs (segmented), the first thing under the title bar
// Type -- Noto Sans, generated by fonts/generate.sh (declared in lv_conf.h).
// ui_font_40 holds digits / ':' / '-' / '.' only (clock, timer, stopwatch).