feat: add live font preview pane to font selection screen (#2349)
## Summary * Adds a live font preview pane to the font selection screen so users can see how a font looks before committing to it. * Changes * A preview pane occupying the top 30% of the font selection screen, rendering sample pangram text in the previewed font * A two-step confirm flow: first press (enter button) previews the font, second press selects it * Back restores the original font settings, so browsing has no side effects * Layout dimensions cached in `onEnter()` to avoid redundant recalculation between `loop()` and `render()` ## Additional Context * Preview sample text is hardcoded English; didn't want to use AI for translation as I would not be able to verify the output in most languages... * The preview pane reduces visible list height; this is compensated by passing the reserved height into `getNumberOfItemsPerPage` --- ### AI Usage Did you use AI tools to help write this code? **PARTIALLY** AI use for assisting in coding and in writing the PR description.
This commit is contained in:
@@ -32,6 +32,9 @@ struct ThemeMetrics {
|
||||
int headerHeight;
|
||||
int verticalSpacing;
|
||||
|
||||
int previewPadding;
|
||||
int previewHeightPercent;
|
||||
|
||||
int contentSidePadding;
|
||||
int listRowHeight;
|
||||
int listWithSubtitleRowHeight;
|
||||
@@ -111,6 +114,8 @@ constexpr ThemeMetrics values = {.batteryWidth = 15,
|
||||
.batteryBarHeight = 20,
|
||||
.headerHeight = 45,
|
||||
.verticalSpacing = 10,
|
||||
.previewPadding = 12,
|
||||
.previewHeightPercent = 30,
|
||||
.contentSidePadding = 20,
|
||||
.listRowHeight = 30,
|
||||
.listWithSubtitleRowHeight = 50,
|
||||
|
||||
@@ -12,6 +12,8 @@ constexpr ThemeMetrics values = {.batteryWidth = 16,
|
||||
.batteryBarHeight = 40,
|
||||
.headerHeight = 84,
|
||||
.verticalSpacing = 16,
|
||||
.previewPadding = 12,
|
||||
.previewHeightPercent = 30,
|
||||
.contentSidePadding = 20,
|
||||
.listRowHeight = 40,
|
||||
.listWithSubtitleRowHeight = 60,
|
||||
|
||||
@@ -11,6 +11,8 @@ constexpr ThemeMetrics values = {.batteryWidth = 15,
|
||||
.batteryBarHeight = 20,
|
||||
.headerHeight = 45,
|
||||
.verticalSpacing = 10,
|
||||
.previewPadding = 12,
|
||||
.previewHeightPercent = 30,
|
||||
.contentSidePadding = 20,
|
||||
.listRowHeight = 42,
|
||||
.listWithSubtitleRowHeight = 69,
|
||||
|
||||
Reference in New Issue
Block a user