Warning, /plasma/plasma-mobile/kcms/powermanagement/ui/main.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: 2012 Marco Martin <mart@kde.org>
0004 SPDX-FileCopyrightText: 2015 Kai Uwe Broulik <kde@privat.broulik.de>
0005 SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
0006
0007 SPDX-License-Identifier: LGPL-2.0-or-later
0008 */
0009
0010 import QtQuick 2.2
0011 import QtQuick.Controls 2.10 as QQC2
0012 import QtQuick.Layouts 1.11
0013
0014 import org.kde.kirigami 2.10 as Kirigami
0015 import org.kde.plasma.components 3.0 as PlasmaComponents
0016 import org.kde.kcmutils
0017 import org.kde.kirigamiaddons.formcard 1.0 as FormCard
0018 import org.kde.kcm.power.mobile.private 1.0
0019
0020 SimpleKCM {
0021 id: powermanagementModule
0022
0023 leftPadding: 0
0024 rightPadding: 0
0025 topPadding: 0
0026 bottomPadding: Kirigami.Units.gridUnit
0027
0028 ColumnLayout {
0029 width: parent.width
0030 spacing: 0
0031
0032 FormCard.FormHeader {
0033 title: i18n("Devices")
0034 }
0035
0036 FormCard.FormCard {
0037 Repeater {
0038 model: kcm.batteries
0039
0040 delegate: FormCard.AbstractFormDelegate {
0041 Layout.fillWidth: true
0042
0043 onClicked: kcm.push("BatteryPage.qml", { "battery": model.battery, "vendor": model.vendor, "product": model.product, "currentUdi": model.udi })
0044
0045 contentItem: RowLayout {
0046 spacing: Kirigami.Units.gridUnit
0047
0048 Kirigami.Icon {
0049 implicitWidth: Kirigami.Units.iconSizes.smallMedium
0050 implicitHeight: Kirigami.Units.iconSizes.smallMedium
0051 Layout.rightMargin: Kirigami.Units.largeSpacing
0052 source: {
0053 switch (model.battery.type) {
0054 case 3: return model.battery.chargeState === 1 ? "battery-full-charging" : "battery-full"
0055 case 2: return "battery-ups"
0056 case 9: return "monitor"
0057 case 4: return "input-mouse"
0058 case 5: return "input-keyboard"
0059 case 1: return "phone"
0060 case 7: return "smartphone"
0061 default: return "paint-unknown"
0062 }
0063 }
0064 }
0065
0066 ColumnLayout {
0067 Layout.fillWidth: true
0068 spacing: Kirigami.Units.smallSpacing
0069
0070 QQC2.Label {
0071 Layout.fillWidth: true
0072 elide: Text.ElideRight
0073 wrapMode: Text.Wrap
0074 maximumLineCount: 2
0075 color: Kirigami.Theme.textColor
0076 text: {
0077 let batteryType;
0078 switch (model.battery.type) {
0079 case 3: batteryType = i18n("Internal battery"); break;
0080 case 2: batteryType = i18n("UPS battery"); break;
0081 case 9: batteryType = i18n("Monitor battery"); break;
0082 case 4: batteryType = i18n("Mouse battery"); break;
0083 case 5: batteryType = i18n("Keyboard battery"); break;
0084 case 1: batteryType = i18n("PDA battery"); break;
0085 case 7: batteryType = i18n("Phone battery"); break;
0086 default: batteryType = i18n("Unknown battery"); break;
0087 }
0088
0089 const chargePercent = i18nc("%1 is the charge percent, % is the percent sign", "%1%", Number(battery.chargePercent).toLocaleString(Qt.locale(), "f", 0));
0090
0091 return (model.battery.chargeState === Battery.Charging) ? i18nc("%1 is battery type, %2 is charge percent", "%1 %2 (Charging)", batteryType, chargePercent) : i18nc("%1 is battery type, %2 is charge percent", "%1 %2", batteryType, chargePercent);
0092 }
0093 }
0094
0095 QQC2.ProgressBar {
0096 Layout.fillWidth: true
0097 from: 0
0098 to: 100
0099 value: model.battery.chargePercent
0100 }
0101 }
0102
0103 Kirigami.Icon {
0104 Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
0105 source: "arrow-right"
0106 implicitWidth: Math.round(Kirigami.Units.iconSizes.small * 0.75)
0107 implicitHeight: Math.round(Kirigami.Units.iconSizes.small * 0.75)
0108 }
0109 }
0110 }
0111 }
0112 }
0113
0114 FormCard.FormHeader {
0115 title: i18n("Screen")
0116 }
0117
0118 FormCard.FormCard {
0119 FormCard.FormComboBoxDelegate {
0120 id: dimScreenCombo
0121 text: i18nc("Part of a sentence like 'Dim screen after 5 minutes'", "Dim screen after")
0122 model: kcm.timeOptions()
0123 currentIndex: kcm.dimScreenIdx
0124 Component.onCompleted: dialog.parent = powermanagementModule
0125 onCurrentIndexChanged: kcm.dimScreenIdx = currentIndex
0126 }
0127
0128 FormCard.FormDelegateSeparator { above: dimScreenCombo; below: screenOffCombo }
0129
0130 FormCard.FormComboBoxDelegate {
0131 id: screenOffCombo
0132 text: i18nc("Part of a sentence like 'Turn off screen after 5 minutes'", "Turn off screen after")
0133 model: kcm.timeOptions()
0134 currentIndex: kcm.screenOffIdx
0135 Component.onCompleted: dialog.parent = powermanagementModule
0136 onCurrentIndexChanged: kcm.screenOffIdx = currentIndex
0137 }
0138
0139 FormCard.FormDelegateSeparator { above: screenOffCombo; below: suspendCombo }
0140
0141 FormCard.FormComboBoxDelegate {
0142 id: suspendCombo
0143 text: i18nc("Part of a sentence like 'Suspend device after 5 minutes'", "Suspend device after")
0144 model: kcm.timeOptions()
0145 currentIndex: kcm.suspendSessionIdx
0146 Component.onCompleted: dialog.parent = powermanagementModule
0147 onCurrentIndexChanged: kcm.suspendSessionIdx = currentIndex
0148 }
0149 }
0150 }
0151 }