Corrections from testing feedback: - Remove the greeting — the current QBZ discovery view has no greeting, only the tab selector. Drops HomeState.greeting and the chrono dep. - Quality badge is now the icon-only badge (hi-res.svg, or cd.svg in a framed square), not a numeric text pill. AlbumCardItem carries a quality tier instead of a quality string. - Tighten the album card: deterministic 274px height, title and artist in a 2px-spaced stack — removes the large gap between them. - SectionRow no longer scrolls vertically (vertical-scrollbar-policy always-off, height pinned to the card height). - Artwork is downscaled to 264px on decode instead of holding ~600px source textures. cc
27 lines
820 B
Plaintext
27 lines
820 B
Plaintext
// Shared UI state — structs and globals the Rust controllers populate.
|
|
//
|
|
// The Rust side builds these models on a worker thread, then sets them
|
|
// on the global from the Slint event loop (see src/home.rs, src/main.rs).
|
|
|
|
export struct AlbumCardItem {
|
|
id: string,
|
|
title: string,
|
|
artist: string,
|
|
quality-tier: string, // "hires" | "cd" | "" — drives the badge icon
|
|
ribbon: string,
|
|
ribbon-kind: string, // "press" | "qobuzissime" | "albumOfTheWeek" | ""
|
|
artwork-url: string,
|
|
artwork: image, // empty until the artwork pipeline resolves it
|
|
}
|
|
|
|
export struct DiscoverSection {
|
|
title: string,
|
|
albums: [AlbumCardItem],
|
|
}
|
|
|
|
// Discover / Home screen state.
|
|
export global HomeState {
|
|
in property <[DiscoverSection]> sections: [];
|
|
in property <bool> loading: false;
|
|
}
|