From b2e7b948fef8c3c202ecaa676cc6edc50dbc3009 Mon Sep 17 00:00:00 2001 From: Flummi Date: Fri, 7 Jun 2024 01:56:43 +0200 Subject: [PATCH] irgendwas mit json --- package/contents/ui/CompactRepresentation.qml | 9 ++-- package/contents/ui/lib/helper.js | 17 ++++---- package/contents/ui/main.qml | 41 ++++++++++--------- 3 files changed, 35 insertions(+), 32 deletions(-) diff --git a/package/contents/ui/CompactRepresentation.qml b/package/contents/ui/CompactRepresentation.qml index d73f8bc..e639df8 100644 --- a/package/contents/ui/CompactRepresentation.qml +++ b/package/contents/ui/CompactRepresentation.qml @@ -1,7 +1,6 @@ import QtQuick import QtQuick.Layouts import org.kde.plasma.plasmoid -import org.kde.plasma.core as PlasmaCore import org.kde.kirigami as Kirigami import "./lib/helper.js" as Helper @@ -14,7 +13,7 @@ Item { anchors.topMargin: 10 - batteryheight anchors.bottomMargin: 10 - batteryheight color: "transparent" - border.color: PlasmaCore.Theme.textColor + border.color: Kirigami.Theme.textColor radius: 4 Item { @@ -33,8 +32,8 @@ Item { anchors.horizontalCenter: parent.horizontalCenter anchors.topMargin: 1 anchors.bottomMargin: 1 - source: Helper.batteryIcon(batteryPercent) - color: batteryPercent == -1 ? colorFull : PlasmaCore.Theme.textColor + source: Helper.batteryIcon(batteryStatus) + color: batteryPercent == -1 ? colorFull : Kirigami.Theme.textColor } } } @@ -46,7 +45,7 @@ Item { radius: 4 height: parent.height / 3 width: 2 - color: PlasmaCore.Theme.textColor + color: Kirigami.Theme.textColor } MouseArea { diff --git a/package/contents/ui/lib/helper.js b/package/contents/ui/lib/helper.js index 9dec12c..b660ee5 100644 --- a/package/contents/ui/lib/helper.js +++ b/package/contents/ui/lib/helper.js @@ -1,12 +1,13 @@ -const batteryLevel = batteryPercent => ({ - "-2": "not connected", - "-1": "charging" -})[batteryPercent] ?? batteryPercent + "%"; +const batteryLevel = (batteryStatus, batteryPercent) => ({ + "BATTERY_UNAVAILABLE": "not connected", + "BATTERY_CHARGING": "charging (" + batteryPercent + "%)" +})[batteryStatus] ?? batteryPercent + "%"; -const batteryIcon = batteryPercent => ({ - "-2": "action-unavailable", - "-1": "reload" -})[batteryPercent] ?? "audio-headphones-symbolic"; +const batteryIcon = batteryStatus => ({ + "BATTERY_UNAVAILABLE": "action-unavailable", + "BATTERY_AVAILABLE": "audio-headphones-symbolic", + "BATTERY_CHARGING": "reload" +})[batteryStatus] ?? "audio-headphones-symbolic"; const hex2rgb = (hex, h = hex.replace('#', '0x')) => ({ r: h >> 16 & 255, g: h >> 8 & 255, b: h & 255 }); const rgb2Hex = rgb => "#" + ((1 << 24) + (rgb.r << 16) + (rgb.g << 8) + rgb.b).toString(16).slice(1); diff --git a/package/contents/ui/main.qml b/package/contents/ui/main.qml index 94433a3..4beb813 100644 --- a/package/contents/ui/main.qml +++ b/package/contents/ui/main.qml @@ -11,33 +11,36 @@ import "./lib/helper.js" as Helper PlasmoidItem { id: main - property int pollingrate: Plasmoid.configuration.pollingrate - property int batteryheight: Plasmoid.configuration.batteryheight - property string colorEmpty: Plasmoid.configuration.colorEmpty - property string colorHalf: Plasmoid.configuration.colorHalf - property string colorFull: Plasmoid.configuration.colorFull + readonly property int pollingrate: Plasmoid.configuration.pollingrate + readonly property int batteryheight: Plasmoid.configuration.batteryheight + readonly property string colorEmpty: Plasmoid.configuration.colorEmpty + readonly property string colorHalf: Plasmoid.configuration.colorHalf + readonly property string colorFull: Plasmoid.configuration.colorFull - property bool notifications: Plasmoid.configuration.notifications - property int batteryThreshold: Plasmoid.configuration.batteryThreshold + readonly property bool notifications: Plasmoid.configuration.notifications + readonly property int batteryThreshold: Plasmoid.configuration.batteryThreshold - property bool debug_active: Plasmoid.configuration.debug_active - property int debug_charge: Plasmoid.configuration.debug_charge + readonly property bool debug_active: Plasmoid.configuration.debug_active + readonly property int debug_charge: Plasmoid.configuration.debug_charge - property int batteryPercent: -2 - property bool notification_sent: false; + property string batteryStatus: "BATTERY_UNAVAILABLE" + property int batteryPercent: 0 + property bool notification_sent: false Plasma5Support.DataSource { id: hsSource engine: "executable" - connectedSources: ["headsetcontrol -bc"] + connectedSources: ["headsetcontrol -o json"] interval: pollingrate * 1e3 - onNewData: { - if(debug_active) + onNewData: (_, data) => { + const res = JSON.parse(data.stdout); + batteryStatus = res.devices[0].battery.status; + batteryPercent = res.devices[0].battery.level; + + if(debug_active) { + batteryStatus = "BATTERY_AVAILABLE"; batteryPercent = debug_charge; - else - batteryPercent = data['exit code'] > 0 - ? -2 // not connected - : +data.stdout; + } // send notification if necessary if(batteryPercent <= batteryThreshold && batteryPercent >= 0 && !notification_sent && notifications) { @@ -56,7 +59,7 @@ PlasmoidItem { } } - toolTipMainText: "battery level: " + Helper.batteryLevel(batteryPercent) + toolTipMainText: "battery level: " + Helper.batteryLevel(batteryStatus, batteryPercent) toolTipSubText: "polling rate: " + pollingrate + " seconds" preferredRepresentation: compactRepresentation