Files
crosspoint-reader-mod/chat-summaries/2026-03-09_04-30-summary.md
cottongin 630fb56a11 feat: side-by-side cover layout for BookInfo in landscape
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
2026-03-09 04:00:41 -04:00

1.7 KiB

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.