diff --git a/components/mobileshell/qml/statusbar/indicators/BatteryIndicator.qml b/components/mobileshell/qml/statusbar/indicators/BatteryIndicator.qml index d6a1e8f9..e7ab2d88 100644 --- a/components/mobileshell/qml/statusbar/indicators/BatteryIndicator.qml +++ b/components/mobileshell/qml/statusbar/indicators/BatteryIndicator.qml @@ -1,4 +1,5 @@ /* + * SPDX-FileCopyrightText: 2024 Sebastian Kügler * SPDX-FileCopyrightText: 2021 Devin Lin * SPDX-FileCopyrightText: 2019 Marco Martin * @@ -13,30 +14,62 @@ import org.kde.kirigami 2.20 as Kirigami import org.kde.plasma.components 3.0 as PlasmaComponents import org.kde.plasma.workspace.components 2.0 as PW import org.kde.plasma.private.mobileshell as MobileShell +import org.kde.plasma.private.battery // needed for charging state RowLayout { property real textPixelSize: Kirigami.Units.gridUnit * 0.6 visible: MobileShell.BatteryInfo.isVisible - PW.BatteryIcon { - id: battery - Layout.preferredWidth: height - Layout.fillHeight: true - hasBattery: true - percent: MobileShell.BatteryInfo.percent - pluggedIn: MobileShell.BatteryInfo.pluggedIn + ListView { + id: batteryRepeater - height: batteryLabel.height - width: batteryLabel.height - } + property int batteryWidth: 0 + + spacing: root.elementSpacing + model: MobileShell.BatteryInfo.batteries + orientation: ListView.Horizontal - PlasmaComponents.Label { - id: batteryLabel - text: i18n("%1%", MobileShell.BatteryInfo.percent) Layout.alignment: Qt.AlignVCenter + Layout.preferredWidth: (batteryRepeater.batteryWidth + root.elementSpacing) * batteryRepeater.count + Layout.fillHeight: true + Layout.fillWidth: false - color: Kirigami.Theme.textColor - font.pixelSize: textPixelSize + delegate: RowLayout { + + Layout.preferredWidth: batteryRepeater.batteryWidth + Layout.fillHeight: false + Layout.alignment: Qt.AlignVCenter + + height: batteryRepeater.height + width: childrenRect.width + + PW.BatteryIcon { + id: battery + + Layout.alignment: Qt.AlignVCenter + height: batteryLabel.height + width: batteryLabel.height + + hasBattery: PluggedIn + percent: Percent + pluggedIn: ChargeState === BatteryControlModel.Charging + } + + PlasmaComponents.Label { + id: batteryLabel + text: i18n("%1%", Percent) + Layout.alignment: Qt.AlignVCenter + + color: Kirigami.Theme.textColor + font.pixelSize: textPixelSize + } + + Component.onCompleted: { + // ListView & RowLayout have problems with childrenRect size, + // set it here so it propagates up nicely + batteryRepeater.batteryWidth = batteryLabel.width + battery.width + } + } } }