feat(qt): ambient accent links and larger header in immersive track info
The artist/label/musician links kept the theme accent, which has no contrast guarantee over the ambient field — over ambient they now use the AmbientAccent album-palette color. The panel header also reads at a distance, so its title/album/artist step up to 24/15/20px there; the desktop modal keeps 16/legal/16. cc
This commit is contained in:
2 files changed
+17
-6
No files matched your search
@@ -22,6 +22,9 @@ Column {
|
||||
/// Immersive-panel legibility mode (see TrackInfoBody.qml): fixed light
|
||||
/// colors + native shadow instead of the theme tokens.
|
||||
property bool overAmbient: false
|
||||
/// Hover color for clickable names — the host swaps in the album-palette
|
||||
/// accent over ambient (theme accent has no contrast guarantee there).
|
||||
property color accentColor: theme.accent
|
||||
|
||||
signal nameClicked(string name, string roleRaw)
|
||||
|
||||
@@ -55,7 +58,7 @@ Column {
|
||||
id: nameText
|
||||
width: cc.colW
|
||||
text: nameRow.modelData
|
||||
color: nameArea.containsMouse ? theme.accent
|
||||
color: nameArea.containsMouse ? cc.accentColor
|
||||
: (cc.overAmbient ? "#f2ffffff" : theme.textPrimary)
|
||||
style: cc.overAmbient ? Text.Raised : Text.Normal
|
||||
styleColor: "#b0000000"
|
||||
|
||||
@@ -35,6 +35,10 @@ Column {
|
||||
readonly property color cRule: overAmbient ? "#2effffff" : theme.surfaceElevated
|
||||
readonly property int cStyle: overAmbient ? Text.Raised : Text.Normal
|
||||
readonly property color cShadow: "#b0000000"
|
||||
// Links follow the ALBUM palette over ambient — the theme accent has no
|
||||
// contrast guarantee there (owner, 2026-08-31 round 2).
|
||||
AmbientAccent { id: bodyAmbientAccent }
|
||||
readonly property color cAccent: overAmbient ? bodyAmbientAccent.value : theme.accent
|
||||
|
||||
readonly property var doc: host ? host.doc : ({})
|
||||
|
||||
@@ -120,7 +124,9 @@ Column {
|
||||
color: body.cPrimary
|
||||
style: body.cStyle
|
||||
styleColor: body.cShadow
|
||||
font.pixelSize: 16
|
||||
// The immersive panel reads at a distance — its header
|
||||
// steps up (owner, 2026-08-31 round 2).
|
||||
font.pixelSize: body.overAmbient ? 24 : 16
|
||||
font.weight: theme.weightSemibold
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
@@ -131,7 +137,7 @@ Column {
|
||||
color: body.cMuted
|
||||
style: body.cStyle
|
||||
styleColor: body.cShadow
|
||||
font.pixelSize: theme.fontLegal
|
||||
font.pixelSize: body.overAmbient ? 15 : theme.fontLegal
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
// Artist — a link only when an id exists.
|
||||
@@ -143,10 +149,10 @@ Column {
|
||||
id: artistText
|
||||
text: body.doc.artist || ""
|
||||
color: (body.doc.artistId || "") !== ""
|
||||
? theme.accent : body.cPrimary
|
||||
? body.cAccent : body.cPrimary
|
||||
style: body.cStyle
|
||||
styleColor: body.cShadow
|
||||
font.pixelSize: 16
|
||||
font.pixelSize: body.overAmbient ? 20 : 16
|
||||
font.weight: theme.weightSemibold
|
||||
}
|
||||
MouseArea {
|
||||
@@ -274,7 +280,7 @@ Column {
|
||||
text: body.doc.label || ""
|
||||
color: (labelArea.containsMouse
|
||||
&& (body.doc.labelId || "") !== "")
|
||||
? theme.accent : body.cPrimary
|
||||
? body.cAccent : body.cPrimary
|
||||
style: body.cStyle
|
||||
styleColor: body.cShadow
|
||||
font.pixelSize: 14
|
||||
@@ -323,6 +329,7 @@ Column {
|
||||
required property var modelData
|
||||
colW: loadedCol.creditsColW
|
||||
overAmbient: body.overAmbient
|
||||
accentColor: body.cAccent
|
||||
cell: modelData
|
||||
onNameClicked: function (n, r) { body.host.openMusician(n, r) }
|
||||
}
|
||||
@@ -337,6 +344,7 @@ Column {
|
||||
required property var modelData
|
||||
colW: loadedCol.creditsColW
|
||||
overAmbient: body.overAmbient
|
||||
accentColor: body.cAccent
|
||||
cell: modelData
|
||||
onNameClicked: function (n, r) { body.host.openMusician(n, r) }
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user