wrap mpris player selection pills into multiple rows with Flow

This commit is contained in:
Damocles 2026-04-18 14:21:00 +02:00
parent 1b6c2fee91
commit 22ca356fb5

View file

@ -306,58 +306,50 @@ Column {
// Player switcher // Player switcher
Item { Item {
width: root.width width: root.width
height: root.players.length > 1 ? 28 : 0 height: root.players.length > 1 ? _playerFlow.implicitHeight + 6 : 0
visible: root.players.length > 1 visible: root.players.length > 1
Flickable { Flow {
id: _switcher id: _playerFlow
anchors.centerIn: parent anchors.horizontalCenter: parent.horizontalCenter
width: Math.min(_playerRow.implicitWidth, parent.width - 16) anchors.verticalCenter: parent.verticalCenter
height: 22 width: parent.width - 16
contentWidth: _playerRow.implicitWidth spacing: 6
clip: true
Row { Repeater {
id: _playerRow model: root.players
height: 22
spacing: 6
Repeater { delegate: Rectangle {
model: root.players required property var modelData
required property int index
delegate: Rectangle { readonly property bool _active: index === root.playerIdx
required property var modelData
required property int index
readonly property bool _active: index === root.playerIdx width: _pLabel.implicitWidth + 12
height: 18
radius: 9
color: _active ? S.Theme.base02 : (pHover.hovered ? S.Theme.base02 : "transparent")
border.color: _active ? root.accentColor : S.Theme.base03
border.width: _active ? 1 : 0
width: _pLabel.implicitWidth + 12 Text {
height: 18 id: _pLabel
radius: 9 anchors.centerIn: parent
color: _active ? S.Theme.base02 : (pHover.hovered ? S.Theme.base02 : "transparent") text: modelData.identity ?? "Player"
border.color: _active ? root.accentColor : S.Theme.base03 color: _active ? root.accentColor : S.Theme.base04
border.width: _active ? 1 : 0 font.pixelSize: S.Theme.fontSize - 2
anchors.verticalCenter: parent.verticalCenter font.family: S.Theme.fontFamily
font.bold: _active
}
Text { HoverHandler {
id: _pLabel id: pHover
anchors.centerIn: parent cursorShape: Qt.PointingHandCursor
text: modelData.identity ?? "Player" }
color: _active ? root.accentColor : S.Theme.base04
font.pixelSize: S.Theme.fontSize - 2
font.family: S.Theme.fontFamily
font.bold: _active
}
HoverHandler { TapHandler {
id: pHover onTapped: {
cursorShape: Qt.PointingHandCursor root.playerSwitched(index);
}
TapHandler {
onTapped: {
root.playerSwitched(index);
}
} }
} }
} }