Per the user's visual review. Replaces the reinvented MyQBZ controls with the app's existing primitives and resolves the per-item data left unresolved. Cross-cutting (all MyQBZ views): - Removed the per-view "Back" header (the app uses the global < > nav). - 32px L/R content padding so the ListScrollbar never rides over rows/cards. - Homologated page padding + Typography tokens to Favorites/LocalLibrary. - No more blue accent-filled pills / non-app colors. Component homologation (deleted the reinvented locals + dead code): - Grid/list + detail view-mode toggle -> the app ViewToggle (ToggleButton, surface-hover active, never accent). Builder ORDER-BY segmented de-blued too. - Sort/filter -> QbzSelect (sm); search -> ExpandableSearch (sm); "+ New" -> NewActionBtn (surface-elevated circle, single centered glyph). Header "+ New" hidden when empty so the empty-state CTA is the only one (no duplicate). - Deleted PrimaryCta / MyQbzSearch / ControlBtn / ViewSeg / ViewModeGroup / SortItem / ColMenuItem + the hand-rolled sort/filter popups + reset. Data (resolveItems, was deferred): - Quality column populated from the resolved tracks (QualityBadgeFull). - New ui/primitives/SourceGlyph.slint: full-color Qobuz/Plex glyphs + a text-muted local hard-drive -- distinguishes Local vs Plex, no accent blob. Reused in the detail + builder rows. - Type column shows the real release type (ALBUM/EP/SINGLE), not always ALBUM. - Local/Plex album art now loads in the detail rows (split artwork dispatch). - Collection grid card renders custom_artwork_path. - Builder rows: 44px + a hairline so quality badges read separated. Backend crates untouched. cargo check -p qbz-slint green. cc
29 lines
1.4 KiB
Plaintext
29 lines
1.4 KiB
Plaintext
// Shared per-source glyph — the discreet source indicator used by the album
|
|
// list row, the MyQBZ collection-detail rows and the Discography Builder rows.
|
|
//
|
|
// The load-bearing rule (homologated from AlbumListRow / TrackRow): the
|
|
// full-color Qobuz / Plex logos render UNTINTED (`colorize: transparent`); only
|
|
// the monochrome local hard-drive glyph is tinted — to MUTED TEXT color, never
|
|
// accent. Using QbzIcon (which floods every pixel with its tint) would turn the
|
|
// logos into a flat accent silhouette — the bug this primitive replaces.
|
|
//
|
|
// Inherits Image (so it IS the glyph). The caller sets `kind` — "source" is
|
|
// already Image's own property, hence the distinct name.
|
|
|
|
import { Theme } from "../foundation/semantic-colors.slint";
|
|
|
|
export component SourceGlyph inherits Image {
|
|
// "qobuz" | "qobuz_download" | "plex" | "local" (anything else = local).
|
|
in property <string> kind;
|
|
source: root.kind == "plex"
|
|
? @image-url("../assets/icons/plex-logo.svg")
|
|
: (root.kind == "qobuz" || root.kind == "qobuz_download"
|
|
? @image-url("../assets/icons/qobuz-logo-filled.svg")
|
|
: @image-url("../assets/icons/hard-drive.svg"));
|
|
colorize: (root.kind == "qobuz" || root.kind == "qobuz_download" || root.kind == "plex")
|
|
? transparent : Theme.text-muted;
|
|
width: (root.kind == "qobuz" || root.kind == "qobuz_download") ? 16px : 15px;
|
|
height: self.width;
|
|
image-fit: contain;
|
|
}
|