lux-shell/modules/bar/components/mpris/Player.qml
2025-07-30 10:04:02 -04:00

64 lines
1.6 KiB
QML

import qs.config
import qs.widgets
import Quickshell.Services.Mpris
import QtQuick
Loader {
id: root
required property MprisPlayer modelData
required property int index
signal nextPlayer
signal previousPlayer
sourceComponent: player
property Component player: StyledButton {
id: button
onClicked: {
if (!root.modelData.canTogglePlaying) {
return;
}
if (root.modelData.isPlaying) {
root.modelData.pause();
} else {
root.modelData.play();
}
}
onWheel: event => {
if (event.angleDelta.y > 0) {
root.nextPlayer();
} else if (event.angleDelta.y < 0) {
root.previousPlayer();
}
}
content: StyledText {
id: text
text: `${root.modelData.isPlaying ? "" : ""} ${root.modelData.trackTitle} - ${root.modelData.trackArtist}`
font.pixelSize: Dimensions.mpris.fontSize
states: State {
name: "hovered"
when: button.containsMouse
PropertyChanges {
text {
color: Theme.palette.base300
}
}
}
transitions: Transition {
from: ""
to: "hovered"
reversible: true
ColorAnimation {
properties: "color"
duration: 200
easing.type: Easing.InOutCubic
}
}
}
}
}