mirror of
https://github.com/spalencsar/bearwave.git
synced 2026-07-06 22:24:17 +02:00
Prepare BearWave for public repository
This commit is contained in:
106
plasmoid-bearwave/contents/ui/main.qml
Normal file
106
plasmoid-bearwave/contents/ui/main.qml
Normal file
@@ -0,0 +1,106 @@
|
||||
import QtQuick 2.15
|
||||
import QtQuick.Layouts 1.15
|
||||
import org.kde.plasma.plasmoid 2.0
|
||||
import org.kde.plasma.components as PlasmaComponents
|
||||
import org.kde.plasma.plasma5support as Plasma5Support
|
||||
|
||||
PlasmoidItem {
|
||||
id: root
|
||||
|
||||
property string sourceName: "org.mpris.MediaPlayer2.bearwave"
|
||||
property bool available: mprisSource.data[sourceName] !== undefined
|
||||
property string playbackStatus: available ? (mprisSource.data[sourceName]["PlaybackStatus"] || "Stopped") : "Stopped"
|
||||
property var metadata: available ? (mprisSource.data[sourceName]["Metadata"] || ({})) : ({})
|
||||
property string titleText: metadata["xesam:title"] || "BearWave"
|
||||
property string artistText: (metadata["xesam:artist"] && metadata["xesam:artist"].length > 0) ? metadata["xesam:artist"][0] : ""
|
||||
|
||||
preferredRepresentation: compactRepresentation
|
||||
|
||||
function callMpris(methodName) {
|
||||
if (!available) {
|
||||
return
|
||||
}
|
||||
const service = mprisSource.serviceForSource(sourceName)
|
||||
const operation = service.operationDescription(methodName)
|
||||
if (operation === undefined) {
|
||||
return
|
||||
}
|
||||
service.startOperationCall(operation)
|
||||
}
|
||||
|
||||
compactRepresentation: Item {
|
||||
implicitWidth: 220
|
||||
implicitHeight: 28
|
||||
|
||||
PlasmaComponents.Button {
|
||||
anchors.fill: parent
|
||||
text: available
|
||||
? (artistText.length > 0 ? (artistText + " - " + titleText) : titleText)
|
||||
: "BearWave nicht aktiv"
|
||||
onClicked: root.expanded = true
|
||||
}
|
||||
}
|
||||
|
||||
fullRepresentation: Item {
|
||||
implicitWidth: 320
|
||||
implicitHeight: 170
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
anchors.margins: 10
|
||||
spacing: 8
|
||||
|
||||
PlasmaComponents.Label {
|
||||
Layout.fillWidth: true
|
||||
text: available ? titleText : "BearWave nicht aktiv"
|
||||
elide: Text.ElideRight
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
PlasmaComponents.Label {
|
||||
Layout.fillWidth: true
|
||||
text: artistText.length > 0 ? artistText : (available ? "Live-Radio" : "Bitte BearWave starten")
|
||||
elide: Text.ElideRight
|
||||
opacity: 0.8
|
||||
}
|
||||
|
||||
PlasmaComponents.Label {
|
||||
Layout.fillWidth: true
|
||||
text: "Status: " + playbackStatus
|
||||
opacity: 0.8
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Layout.fillWidth: true
|
||||
spacing: 6
|
||||
|
||||
PlasmaComponents.Button {
|
||||
text: "⏮"
|
||||
enabled: available
|
||||
onClicked: callMpris("Previous")
|
||||
}
|
||||
PlasmaComponents.Button {
|
||||
text: playbackStatus === "Playing" ? "⏸" : "▶"
|
||||
enabled: available
|
||||
onClicked: callMpris("PlayPause")
|
||||
}
|
||||
PlasmaComponents.Button {
|
||||
text: "⏹"
|
||||
enabled: available
|
||||
onClicked: callMpris("Stop")
|
||||
}
|
||||
PlasmaComponents.Button {
|
||||
text: "⏭"
|
||||
enabled: available
|
||||
onClicked: callMpris("Next")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Plasma5Support.DataSource {
|
||||
id: mprisSource
|
||||
engine: "mpris2"
|
||||
connectedSources: [sourceName]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user