feat(slint): classic now-playing bar layout
Add the second of the four switchable now-playing bar layouts plus the
4-layout architecture behind it.
ShellState.npb-mode (0=New, 1=Classic) drives mode-conditional columns in
PlayerBar; the transport cluster is extracted into TransportControls.slint and
IconButton/PlayButton into primitives/BarControls (PlayButton gains a `circle`
prop) so both layouts share them without duplicating the popups. The choice
persists via UiPrefs.npb_mode ("new"/"classic") — restored on startup, written
on the "Now Playing view" menu select.
Classic = the Tauri arrangement: transport LEFT (plain play glyph, leading
track-info, inline add-to-playlist + favorite-with-state), glass song card
CENTRE, actions + volume RIGHT. SongCard.glass is a contained card capped at a
fixed 520px; the audio stamp is ABSOLUTELY pinned to the card's right edge
(cover 56 | song info that truncates with ellipsis | stamp 140) so it stays
flush right regardless of the text layout. Track info fires from both the
title click and the transport (i). Classic uses the full-size audio stamp; the
backend LED reads PIPEWIRE.
cc
This commit is contained in:
9 files changed
+577
-301
No files matched your search
@@ -1882,6 +1882,10 @@ export global ShellState {
|
||||
// Section navigation placement: the sections (Discover/Library/Local
|
||||
// Library/My QBZ) now live in the sidebar and open right-flyout menus.
|
||||
in-out property <bool> nav-in-sidebar: true;
|
||||
// Now-playing bar layout mode: 0 = New (default), 1 = Classic. Persisted
|
||||
// in ui_prefs.json (`npb_mode` "new"|"classic"); set on startup from the
|
||||
// store and on the player bar's "Now Playing view" menu select.
|
||||
in-out property <int> npb-mode: 0;
|
||||
}
|
||||
|
||||
// Authenticated user, for the header user element.
|
||||
|
||||
Reference in new issue
Block a user