Warning, /plasma/plasma-workspace/applets/batterymonitor/package/contents/ui/CompactRepresentation.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2011 Sebastian Kügler <sebas@kde.org>
0003 SPDX-FileCopyrightText: 2011 Viranch Mehta <viranch.mehta@gmail.com>
0004 SPDX-FileCopyrightText: 2013 Kai Uwe Broulik <kde@privat.broulik.de>
0005
0006 SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008
0009 import QtQuick
0010 import QtQuick.Layouts
0011
0012 import org.kde.plasma.plasmoid
0013 import org.kde.plasma.core as PlasmaCore
0014 import org.kde.plasma.workspace.components as WorkspaceComponents
0015 import org.kde.kirigami as Kirigami
0016
0017 MouseArea {
0018 id: root
0019
0020 property real itemSize: Math.min(root.height, root.width/view.count)
0021 readonly property bool isConstrained: Plasmoid.formFactor === PlasmaCore.Types.Vertical || Plasmoid.formFactor === PlasmaCore.Types.Horizontal
0022 property real brightnessError: 0
0023 property QtObject batteries
0024 property bool hasBatteries: false
0025 required property bool isSetToPerformanceMode
0026 required property bool isSetToPowerSaveMode
0027 required property bool isSomehowFullyCharged
0028
0029 activeFocusOnTab: true
0030 hoverEnabled: true
0031
0032 property bool wasExpanded
0033
0034 Accessible.name: Plasmoid.title
0035 Accessible.description: `${toolTipMainText}; ${toolTipSubText}`
0036 Accessible.role: Accessible.Button
0037
0038 onPressed: wasExpanded = batterymonitor.expanded
0039 onClicked: batterymonitor.expanded = !wasExpanded
0040
0041 // "No Batteries" case
0042 Kirigami.Icon {
0043 anchors.fill: parent
0044 visible: !root.hasBatteries
0045 source: Plasmoid.icon
0046 active: root.containsMouse
0047 }
0048
0049 // We have any batteries; show their status
0050 //Should we consider turning this into a Flow item?
0051 Row {
0052 visible: root.hasBatteries
0053 anchors.centerIn: parent
0054 Repeater {
0055 id: view
0056
0057 model: root.isConstrained ? 1 : root.batteries
0058
0059 Item {
0060 id: batteryContainer
0061
0062 property int percent: root.isConstrained ? pmSource.data["Battery"]["Percent"] : model["Percent"]
0063 property bool pluggedIn: pmSource.data["AC Adapter"] && pmSource.data["AC Adapter"]["Plugged in"] && (root.isConstrained || model["Is Power Supply"])
0064
0065 height: root.itemSize
0066 width: root.width/view.count
0067
0068 property real iconSize: Math.min(width, height)
0069
0070 // "Held on a Power Profile mode while plugged in" use case; show the
0071 // icon of the active mode so the user can notice this at a glance
0072 Kirigami.Icon {
0073 id: powerProfileModeIcon
0074
0075 anchors.fill: parent
0076
0077 visible: batteryContainer.pluggedIn && (root.isSetToPerformanceMode || root.isSetToPowerSaveMode)
0078 source: root.isSetToPerformanceMode
0079 ? "battery-profile-performance-symbolic"
0080 : "battery-profile-powersave-symbolic"
0081 active: root.containsMouse
0082 }
0083
0084 // Show normal battery icon
0085 WorkspaceComponents.BatteryIcon {
0086 id: batteryIcon
0087
0088 anchors.centerIn: parent
0089 height: batteryContainer.iconSize
0090 width: height
0091
0092 active: root.containsMouse
0093 visible: !powerProfileModeIcon.visible
0094 hasBattery: root.hasBatteries
0095 percent: batteryContainer.percent
0096 pluggedIn: batteryContainer.pluggedIn
0097 }
0098
0099 WorkspaceComponents.BadgeOverlay {
0100 anchors.bottom: parent.bottom
0101 anchors.right: parent.right
0102
0103 visible: Plasmoid.configuration.showPercentage && !root.isSomehowFullyCharged
0104
0105 text: i18nc("battery percentage below battery icon", "%1%", percent)
0106 icon: batteryIcon
0107 }
0108 }
0109 }
0110 }
0111 }