diff --git a/modules/bar/components/StatusIcons.qml b/modules/bar/components/StatusIcons.qml index 81d004a7..539a07f2 100644 --- a/modules/bar/components/StatusIcons.qml +++ b/modules/bar/components/StatusIcons.qml @@ -249,15 +249,7 @@ StyledRect { return "rocket_launch"; return "balance"; } - - const perc = UPower.displayDevice.percentage; - const charging = [UPowerDeviceState.Charging, UPowerDeviceState.FullyCharged, UPowerDeviceState.PendingCharge].includes(UPower.displayDevice.state); - if (perc === 1) - return charging ? "battery_charging_full" : "battery_full"; - let level = Math.floor(perc * 7); - if (charging && (level === 4 || level === 1)) - level--; - return charging ? `battery_charging_${(level + 3) * 10}` : `battery_${level}_bar`; + return Icons.getBatteryIcon(UPower.displayDevice.percentage, [UPowerDeviceState.Charging, UPowerDeviceState.FullyCharged, UPowerDeviceState.PendingCharge].includes(UPower.displayDevice.state)); } color: !UPower.onBattery || UPower.displayDevice.percentage > 0.2 ? root.colour : Colours.palette.m3error fill: 1 diff --git a/modules/bar/popouts/Bluetooth.qml b/modules/bar/popouts/Bluetooth.qml index 7868d020..ebf21de3 100644 --- a/modules/bar/popouts/Bluetooth.qml +++ b/modules/bar/popouts/Bluetooth.qml @@ -107,8 +107,8 @@ ColumnLayout { MaterialIcon { visible: device.modelData.state === BluetoothDeviceState.Connected // qmllint disable unresolved-type - text: Icons.getBatteryIcon(device.modelData.batteryAvailable ? device.modelData.battery * 100 : -1) - color: device.modelData.battery < 0.2 ? Colours.palette.m3error : Colours.palette.m3onSurfaceVariant + text: device.modelData.batteryAvailable ? Icons.getBatteryIcon(device.modelData.battery) : "battery_alert" + color: device.modelData.batteryAvailable && device.modelData.battery < 0.2 ? Colours.palette.m3error : Colours.palette.m3onSurfaceVariant } StyledRect { diff --git a/utils/Icons.qml b/utils/Icons.qml index c864d553..5bbbff57 100644 --- a/utils/Icons.qml +++ b/utils/Icons.qml @@ -241,23 +241,12 @@ Singleton { return icon; } - function getBatteryIcon(charge: int): string { - if (charge > 0 && charge < 5) - return "battery_0_bar"; - if (charge >= 5 && charge < 20) - return "battery_1_bar"; - if (charge >= 20 && charge < 35) - return "battery_2_bar"; - if (charge >= 35 && charge < 50) - return "battery_3_bar"; - if (charge >= 50 && charge < 65) - return "battery_4_bar"; - if (charge >= 65 && charge < 80) - return "battery_5_bar"; - if (charge >= 80 && charge < 95) - return "battery_6_bar"; - if (charge >= 95) - return "battery_full"; - return "battery_alert"; + function getBatteryIcon(percentage: real, charging = false): string { + if (percentage === 1) + return charging ? "battery_charging_full" : "battery_full"; + let level = Math.floor(percentage * 7); + if (charging && (level === 4 || level === 1)) + level--; + return charging ? `battery_charging_${(level + 3) * 10}` : `battery_${level}_bar`; } }