feat(slint): NowPlayingBar rebuild, Settings constraints, Discover fixes
NowPlayingBar (start of the playback-bar work): - height raised to 110px - SeekBar component: three-line track (total / cached / progress), a hover thumb, elapsed/remaining times, and a hover time bubble with a downward caret marking the seek position - song card: background and border dropped, gains the extra height, album/artist links and the context icon kept (context icon now always shown) - transport + secondary buttons copied from Tauri (shuffle, prev, play, next, repeat, add, favorite; cast, picture-in-picture, fullscreen, normalization; volume cluster). Queue/Lyrics stay in the header — and the header now orders them lyrics-then-queue. Settings constraints (1:1 with Tauri): - Exclusive Mode enabled only on ALSA; DAC Passthrough only on PipeWire; Lock Output Device disabled while DAC Passthrough is on; Gapless disabled while Streaming Only is on - backend change cascades: forces off DAC passthrough / force-bit- perfect / exclusive / gapless as appropriate; DAC-passthrough and streaming-only cascades; initial-buffer slider right-aligned Discover fixes: - navigation [<] [>] pair homologated to the same top/left margin across every view - album/artist description moved back into the metadata column (it now fills the width there) with uniform secondary text color - genre filter button hugs its label instead of stretching - Recently Played Albums and Tracks modules always render, with a placeholder until the play history has data - wider spacing between Discover rows; the Discover gear is no longer a Settings shortcut (it is the per-tab sort/show-hide control) cc
This commit is contained in:
18 files changed
+589
-150
No files matched your search
@@ -193,9 +193,11 @@ export component ArtistPageView inherits Rectangle {
|
||||
|
||||
page := VerticalLayout {
|
||||
width: parent.width;
|
||||
padding-left: 24px;
|
||||
padding-right: 24px;
|
||||
padding-top: 14px;
|
||||
// padding matches Discover so the [<] [>] pair sits at the same
|
||||
// top/left margin across every view.
|
||||
padding-left: 32px;
|
||||
padding-right: 32px;
|
||||
padding-top: 11px;
|
||||
padding-bottom: 100px;
|
||||
spacing: 0px;
|
||||
alignment: start;
|
||||
@@ -251,6 +253,14 @@ export component ArtistPageView inherits Rectangle {
|
||||
font-weight: Typography.bold;
|
||||
overflow: elide;
|
||||
}
|
||||
Rectangle { height: 12px; }
|
||||
Text {
|
||||
text: ArtistState.bio;
|
||||
visible: ArtistState.bio != "";
|
||||
color: Theme.text-secondary;
|
||||
font-size: Typography.body;
|
||||
wrap: word-wrap;
|
||||
}
|
||||
Rectangle { height: 18px; }
|
||||
HorizontalLayout {
|
||||
alignment: start;
|
||||
@@ -280,15 +290,6 @@ export component ArtistPageView inherits Rectangle {
|
||||
}
|
||||
}
|
||||
|
||||
// Biography — full content width, below the header block.
|
||||
if ArtistState.bio != "": Rectangle { height: 20px; }
|
||||
if ArtistState.bio != "": Text {
|
||||
text: ArtistState.bio;
|
||||
color: Theme.text-secondary;
|
||||
font-size: Typography.body;
|
||||
wrap: word-wrap;
|
||||
}
|
||||
|
||||
Rectangle { height: 36px; }
|
||||
|
||||
if ArtistState.loading && ArtistState.top-tracks.length == 0: Text {
|
||||
|
||||
Reference in new issue
Block a user