Split-screen layout: vertical controls left, full-height artwork right

Redesign the 640x480 UI from horizontal bottom-bar controls to a split-screen
layout that maximizes album art visibility for the child user. Buttons stack
vertically in a 200px left panel; artwork fills the remaining right panel at
up to 420x460. Volume removed from focus cycle in favor of dedicated keys
(+/-, volume buttons, shoulder buttons). Navigation changed to UP/DOWN.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Michael Smith
2026-02-14 11:45:32 +01:00
parent 1ea1490e60
commit 201a8fae97
2 changed files with 57 additions and 51 deletions

View File

@@ -7,7 +7,7 @@
| Version | 1.0 |
| Status | Draft |
| Created | 2026-02-10 |
| Updated | 2026-02-13 |
| Updated | 2026-02-14 |
## 1. Purpose
@@ -43,6 +43,16 @@ This document specifies the functional requirements for an SDL2 based media play
## 6. Changelog
### 2026-02-14 — Split-screen layout with artwork focus
- **Vertical left panel**: Transport controls (Prev, Rewind, Play/Stop, FF, Next) are stacked vertically in a 200px-wide left panel. Play/Stop is slightly larger (72x72) at the vertical center; other buttons are 56x56.
- **Full-height artwork**: Album art now fills the right panel (420x460 max bounds, centered at x=420, y=240), giving cassette covers nearly the full screen height instead of being constrained to the upper portion.
- **Vertical navigation**: D-pad UP/DOWN (and keyboard arrows) now navigate between buttons vertically instead of LEFT/RIGHT horizontally, matching the new stacked layout.
- **Dedicated volume controls**: Volume is no longer a focusable UI element. Adjusted via `+`/`-` keys, `SDLK_VOLUMEUP`/`SDLK_VOLUMEDOWN`, or controller shoulder buttons (L1/R1).
- **Sprite scaling quality**: Linear filtering (`SDL_HINT_RENDER_SCALE_QUALITY`) enabled for smoother downscaling of 200x200 sprite source to 56x56 button destinations.
- **No-art placeholder**: When a file has no embedded album art, a circle sprite from the spritesheet is rendered as a placeholder in the right panel.
- **Thin progress bar**: Progress bar moved to the bottom of the left panel (160x4px) as a subtle position indicator.
### 2026-02-13 — Fix power button screen toggle regression
- **Power button screen off stays off**: Fixed regression from fbd32d7 where short-pressing the power button to turn off the screen would instantly turn it back on. The generic wake logic (`any_activity`) was being triggered by power button events themselves. Moved `any_activity = True` below the power button handler's `continue` so power events are handled exclusively by the power button handler and don't trigger the wake path.