In landscape orientation the cover is pinned on the left panel (filling the content height) while metadata fields scroll independently on the right. Portrait layout is unchanged. Made-with: Cursor
27 lines
1.7 KiB
Markdown
27 lines
1.7 KiB
Markdown
# BookInfo: Landscape Side-by-Side Layout
|
|
|
|
**Date**: 2026-03-09
|
|
**Task**: Implement a side-by-side layout for BookInfo in landscape orientation -- cover fixed on the left, scrollable metadata fields on the right. Portrait layout unchanged.
|
|
|
|
## Changes Made
|
|
|
|
### `src/activities/home/BookInfoActivity.h`
|
|
|
|
- Added `bool isLandscape` and `int coverPanelWidth` member variables.
|
|
|
|
### `src/activities/home/BookInfoActivity.cpp`
|
|
|
|
- **`onEnter()`**: Detects orientation via `renderer.getOrientation()`. In landscape, the cover thumbnail height fills the full content area (between header and button hints) instead of 2/5 of screen height.
|
|
- **`buildLayout()`**: Reads cover bitmap dimensions first. In landscape with a cover, computes `coverPanelWidth` (cover width + padding, capped at 40% of screen). Text fields are wrapped to the narrower right-panel width. Cover height is excluded from `contentHeight` (it sits beside, not above, the fields).
|
|
- **`render()`**: In landscape, draws the cover at a fixed position in the left panel (unaffected by scroll). Fields render in the right panel at `x = coverPanelWidth`. In portrait, existing behavior is preserved (cover above fields, both scroll together). The header fill + draw-on-top pattern continues to prevent content bleeding into the header zone.
|
|
|
|
## Behavior Summary
|
|
|
|
- **Portrait** (480x800): Cover on top, fields below, everything scrolls vertically (no change).
|
|
- **Landscape** (800x480): Cover pinned on left (centered vertically, fills content height), metadata fields scroll independently on the right.
|
|
- If no cover exists in landscape, the full screen width is used for fields (same as portrait but in landscape dimensions).
|
|
|
|
## Follow-up
|
|
|
|
None -- ready for hardware testing in all 4 orientations.
|