mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-27 14:33:08 +00:00
Having the KCMs that are mobile specific here makes more sense than in the settings application. Historically plasma-settings had a faster release cycle than Plasma, but the application is now moving to the Plasma release schedule and so it makes sense do this now.
165 lines
7.7 KiB
QML
165 lines
7.7 KiB
QML
/*
|
|
SPDX-FileCopyrightText: 2011 Sebastian Kügler <sebas@kde.org>
|
|
SPDX-FileCopyrightText: 2012 Marco Martin <mart@kde.org>
|
|
SPDX-FileCopyrightText: 2015 Kai Uwe Broulik <kde@privat.broulik.de>
|
|
SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org>
|
|
|
|
SPDX-License-Identifier: LGPL-2.0-or-later
|
|
*/
|
|
|
|
import QtQuick 2.2
|
|
import QtQuick.Controls 2.10 as QQC2
|
|
import QtQuick.Layouts 1.11
|
|
|
|
import org.kde.kirigami 2.10 as Kirigami
|
|
import org.kde.plasma.components 2.0 as PlasmaComponents
|
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
|
import org.kde.kcm 1.2
|
|
import org.kde.kirigamiaddons.labs.mobileform 0.1 as MobileForm
|
|
import org.kde.kcm.power.mobile.private 1.0
|
|
|
|
SimpleKCM {
|
|
id: powermanagementModule
|
|
|
|
leftPadding: 0
|
|
rightPadding: 0
|
|
topPadding: Kirigami.Units.gridUnit
|
|
bottomPadding: Kirigami.Units.gridUnit
|
|
|
|
ColumnLayout {
|
|
width: parent.width
|
|
spacing: 0
|
|
|
|
MobileForm.FormCard {
|
|
Layout.fillWidth: true
|
|
|
|
contentItem: ColumnLayout {
|
|
spacing: 0
|
|
|
|
MobileForm.FormCardHeader {
|
|
title: i18n("Devices")
|
|
}
|
|
|
|
Repeater {
|
|
model: kcm.batteries
|
|
|
|
delegate: MobileForm.AbstractFormDelegate {
|
|
Layout.fillWidth: true
|
|
|
|
onClicked: kcm.push("BatteryPage.qml", { "battery": model.battery, "vendor": model.vendor, "product": model.product, "currentUdi": model.udi })
|
|
|
|
contentItem: RowLayout {
|
|
spacing: Kirigami.Units.gridUnit
|
|
|
|
Kirigami.Icon {
|
|
implicitWidth: Kirigami.Units.iconSizes.smallMedium
|
|
implicitHeight: Kirigami.Units.iconSizes.smallMedium
|
|
Layout.rightMargin: Kirigami.Units.largeSpacing
|
|
source: {
|
|
switch (model.battery.type) {
|
|
case 3: return model.battery.chargeState === 1 ? "battery-full-charging" : "battery-full"
|
|
case 2: return "battery-ups"
|
|
case 9: return "monitor"
|
|
case 4: return "input-mouse"
|
|
case 5: return "input-keyboard"
|
|
case 1: return "phone"
|
|
case 7: return "smartphone"
|
|
default: return "paint-unknown"
|
|
}
|
|
}
|
|
}
|
|
|
|
ColumnLayout {
|
|
Layout.fillWidth: true
|
|
spacing: Kirigami.Units.smallSpacing
|
|
|
|
QQC2.Label {
|
|
Layout.fillWidth: true
|
|
elide: Text.ElideRight
|
|
wrapMode: Text.Wrap
|
|
maximumLineCount: 2
|
|
color: Kirigami.Theme.textColor
|
|
text: {
|
|
let batteryType;
|
|
switch (model.battery.type) {
|
|
case 3: batteryType = i18n("Internal battery"); break;
|
|
case 2: batteryType = i18n("UPS battery"); break;
|
|
case 9: batteryType = i18n("Monitor battery"); break;
|
|
case 4: batteryType = i18n("Mouse battery"); break;
|
|
case 5: batteryType = i18n("Keyboard battery"); break;
|
|
case 1: batteryType = i18n("PDA battery"); break;
|
|
case 7: batteryType = i18n("Phone battery"); break;
|
|
default: batteryType = i18n("Unknown battery"); break;
|
|
}
|
|
|
|
const chargePercent = i18nc("%1 is value, %2 is unit", "%1%2", Number(battery.chargePercent).toLocaleString(Qt.locale(), "f", 0), i18n("%"));
|
|
|
|
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);
|
|
}
|
|
}
|
|
|
|
QQC2.ProgressBar {
|
|
Layout.fillWidth: true
|
|
from: 0
|
|
to: 100
|
|
value: model.battery.chargePercent
|
|
}
|
|
}
|
|
|
|
Kirigami.Icon {
|
|
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
|
source: "arrow-right"
|
|
implicitWidth: Math.round(Kirigami.Units.iconSizes.small * 0.75)
|
|
implicitHeight: Math.round(Kirigami.Units.iconSizes.small * 0.75)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
MobileForm.FormCard {
|
|
Layout.fillWidth: true
|
|
Layout.topMargin: Kirigami.Units.largeSpacing
|
|
|
|
contentItem: ColumnLayout {
|
|
spacing: 0
|
|
|
|
MobileForm.FormCardHeader {
|
|
title: i18n("Screen")
|
|
}
|
|
|
|
MobileForm.FormComboBoxDelegate {
|
|
id: dimScreenCombo
|
|
text: i18nc("Part of a sentence like 'Dim screen after 5 minutes'", "Dim screen after")
|
|
model: kcm.timeOptions()
|
|
currentIndex: kcm.dimScreenIdx
|
|
Component.onCompleted: dialog.parent = powermanagementModule
|
|
onCurrentIndexChanged: kcm.dimScreenIdx = currentIndex
|
|
}
|
|
|
|
MobileForm.FormDelegateSeparator { above: dimScreenCombo; below: screenOffCombo }
|
|
|
|
MobileForm.FormComboBoxDelegate {
|
|
id: screenOffCombo
|
|
text: i18nc("Part of a sentence like 'Turn off screen after 5 minutes'", "Turn off screen after")
|
|
model: kcm.timeOptions()
|
|
currentIndex: kcm.screenOffIdx
|
|
Component.onCompleted: dialog.parent = powermanagementModule
|
|
onCurrentIndexChanged: kcm.screenOffIdx = currentIndex
|
|
}
|
|
|
|
MobileForm.FormDelegateSeparator { above: screenOffCombo; below: suspendCombo }
|
|
|
|
MobileForm.FormComboBoxDelegate {
|
|
id: suspendCombo
|
|
text: i18nc("Part of a sentence like 'Suspend device after 5 minutes'", "Suspend device after")
|
|
model: kcm.timeOptions()
|
|
currentIndex: kcm.suspendSessionIdx
|
|
Component.onCompleted: dialog.parent = powermanagementModule
|
|
onCurrentIndexChanged: kcm.suspendSessionIdx = currentIndex
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|