Files
qbz/crates/qbz-slint/ui/primitives/SourceGlyph.slint
T
vicrodh 0b20a1a86a fix(myqbz): visual homologation — app components, colors, scrollbar, resolveItems
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
2026-06-09 12:35:03 -06:00

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;
}