headsetcontrol-battery-widget/package/contents/ui/main.qml

67 lines
1.7 KiB
QML
Raw Normal View History

2024-01-17 19:06:16 +00:00
import QtQuick 2.0
import QtQuick.Layouts 1.3
import org.kde.plasma.plasmoid 2.0
import org.kde.plasma.core 2.0 as PlasmaCore
Item {
id: main
2024-01-19 00:54:33 +00:00
property int pollingrate: Plasmoid.configuration.pollingrate
2024-01-17 19:06:16 +00:00
property int batteryPercent: -2
PlasmaCore.DataSource {
id: hsSource
engine: "executable"
connectedSources: ["headsetcontrol -bc"]
2024-01-19 00:54:33 +00:00
interval: pollingrate * 1e3
2024-01-17 19:06:16 +00:00
onNewData: {
if(data['exit_code'] > 0)
return console.log('error lol');
batteryPercent = data['stdout'];
}
}
Plasmoid.preferredRepresentation: Plasmoid.compactRepresentation
Plasmoid.compactRepresentation: Item {
Layout.minimumWidth: units.iconSizes.medium
Image {
anchors.fill: parent
smooth: true
fillMode: Image.PreserveAspectFit
source: batteryIcon()
2024-01-19 01:57:49 +00:00
Plasmoid.toolTipMainText: "battery level: " + batteryLevel()
Plasmoid.toolTipSubText: "polling rate: " + pollingrate + " seconds"
2024-01-17 19:06:16 +00:00
}
function batteryIcon() {
let iconName = "battery_100"
2024-01-17 19:45:08 +00:00
if(batteryPercent == -1) // charging
2024-01-17 19:06:16 +00:00
iconName = "battery_charging"
else if(batteryPercent == -2) // not connected
iconName = "battery_nc";
else if(batteryPercent > 80)
iconName = "battery_100";
else if(batteryPercent > 60)
iconName = "battery_80";
else if(batteryPercent > 40)
iconName = "battery_60";
else if(batteryPercent > 20)
iconName = "battery_40";
else
iconName = "battery_20";
return "../icons/" + iconName + ".png";
}
2024-01-19 01:57:49 +00:00
function batteryLevel() {
2024-01-17 19:06:16 +00:00
if(batteryPercent == -1)
return "charging";
else if(batteryPercent == -2)
return "not connected";
else
2024-01-19 01:57:49 +00:00
return batteryPercent + "%";
2024-01-17 19:06:16 +00:00
}
}
}