quickshell/modules/bar/#Bat.qml#

52 lines
1.8 KiB
Text

import Quickshell.Services.UPower
import Quickshell
import Quickshell.Widgets
import QtQuick
import QtQuick.Layouts
import QtQuick.Effects
import qs
import qs.widgets
import qs.settings
BarComponent {
id: root
visible: UPower.displayDevice.isLaptopBattery
property double percent: UPower.displayDevice.percentage * 100
property bool hasBattery: UPower.displayDevice.isLaptopBattery
property bool charging: UPower.displayDevice.state === UPowerDeviceState.Charging
implicitWidth: batLayout.implicitWidth + 16
function batteryIcon() {
let charging = root.charging;
let percent = root.percent;
if (percent <= 10)
return charging ? "battery-empty-charging" : "battery-empty";
if (percent < 40)
return charging ? "battery-level-30-charging" : "battery-level-30";
if (percent < 50)
return charging ? "battery-level-40-charging" : "battery-level-40";
if (percent < 60)
return charging ? "battery-level-50-charging" : "battery-level-50";
if (percent < 70)
return charging ? "battery-level-60-charging" : "battery-level-60";
if (percent < 80)
return charging ? "battery-level-70-charging" : "battery-level-70";
if (percent < 90)
return charging ? "battery-level-80-charging" : "battery-level-80";
if (percent > 90)
return charging ? "battery-level-90-charging" : "battery-level-90";
if (percent == 100)
return charging ? "battery-level-100-charging" : "battery-level-100";
}
RowLayout {
id: batLayout
anchors.centerIn: root
StyledIcon {
iconName: root.batteryIcon()
}
StyledText {
text: Math.floor(root.percent, root.charging) + "%"
}
}
}