widgets on mpris

This commit is contained in:
Benjamin Palko 2025-07-30 10:04:02 -04:00
parent d03e2ed11f
commit cd11aac847
2 changed files with 14 additions and 23 deletions

View file

@ -1,4 +1,3 @@
import Quickshell
import Quickshell.Services.Mpris import Quickshell.Services.Mpris
import QtQuick import QtQuick

View file

@ -1,9 +1,10 @@
import qs.config
import qs.widgets
import Quickshell.Services.Mpris import Quickshell.Services.Mpris
import QtQuick import QtQuick
import "../../../../styled/"
import "../../../../config/"
Loader { Loader {
id: root
required property MprisPlayer modelData required property MprisPlayer modelData
required property int index required property int index
@ -11,46 +12,37 @@ Loader {
signal previousPlayer signal previousPlayer
sourceComponent: player sourceComponent: player
property Component player: Clickable { property Component player: StyledButton {
id: clickable id: button
implicitWidth: text.width
implicitHeight: Dimensions.mpris.height
onClicked: { onClicked: {
if (!modelData.canTogglePlaying) { if (!root.modelData.canTogglePlaying) {
return; return;
} }
if (modelData.isPlaying) { if (root.modelData.isPlaying) {
modelData.pause(); root.modelData.pause();
} else { } else {
modelData.play(); root.modelData.play();
} }
} }
onWheel: event => { onWheel: event => {
if (event.angleDelta.y > 0) { if (event.angleDelta.y > 0) {
parent.nextPlayer(); root.nextPlayer();
} else if (event.angleDelta.y < 0) { } else if (event.angleDelta.y < 0) {
parent.previousPlayer(); root.previousPlayer();
} }
} }
StyledText { content: StyledText {
id: text id: text
text: `${modelData.isPlaying ? "" : ""} ${modelData.trackTitle} - ${modelData.trackArtist}` text: `${root.modelData.isPlaying ? "" : ""} ${root.modelData.trackTitle} - ${root.modelData.trackArtist}`
anchors.verticalCenter: parent.verticalCenter
topPadding: Dimensions.mpris.verticalPadding
bottomPadding: Dimensions.mpris.verticalPadding
leftPadding: Dimensions.mpris.horizontalPadding
rightPadding: Dimensions.mpris.horizontalPadding
font.pixelSize: Dimensions.mpris.fontSize font.pixelSize: Dimensions.mpris.fontSize
states: State { states: State {
name: "hovered" name: "hovered"
when: clickable.containsMouse when: button.containsMouse
PropertyChanges { PropertyChanges {
text { text {
color: Theme.palette.base300 color: Theme.palette.base300