64 lines
1.6 KiB
QML
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
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|