kdeconnect-kde/plasmoid/package/contents/ui/Battery.qml

81 lines
2.3 KiB
QML
Raw Normal View History

/**
* SPDX-FileCopyrightText: 2014 Samoilenko Yuri <kinnalru@gmail.com>
2024-06-30 23:03:57 +01:00
* SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>
*
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
2024-06-30 23:03:57 +01:00
pragma ComponentBehavior: Bound
import QtQuick
2024-06-30 23:03:57 +01:00
import org.kde.kdeconnect as KDEConnect
2024-06-30 23:03:57 +01:00
QtObject {
id: root
2024-06-30 23:03:57 +01:00
required property KDEConnect.DeviceDbusInterface device
readonly property alias available: checker.available
2024-06-30 23:03:57 +01:00
readonly property KDEConnect.PluginChecker pluginChecker: KDEConnect.PluginChecker {
id: checker
pluginName: "battery"
2024-06-30 23:03:57 +01:00
device: root.device
}
2024-06-30 23:03:57 +01:00
readonly property bool charging: battery?.isCharging ?? false
readonly property int charge: battery?.charge ?? -1
readonly property string displayString: {
if (available && charge > -1) {
if (charging) {
return i18n("%1% charging", charge);
} else {
return i18n("%1%", charge);
}
} else {
return i18n("No info");
}
}
property KDEConnect.BatteryDbusInterface battery
/**
* Suggests an icon name to use for the current battery level
*/
readonly property string iconName: {
2024-06-30 23:03:57 +01:00
if (charge < 0) {
return "battery-missing-symbolic";
} else if (charge < 10) {
return charging
? "battery-empty-charging-symbolic"
: "battery-empty-symbolic";
} else if (charge < 25) {
return charging
? "battery-caution-charging-symbolic"
: "battery-caution-symbolic";
} else if (charge < 50) {
return charging
? "battery-low-charging-symbolic"
: "battery-low-symbolic";
} else if (charge < 75) {
return charging
? "battery-good-charging-symbolic"
: "battery-good-symbolic";
} else {
return charging
? "battery-full-charging-symbolic"
: "battery-full-symbolic";
}
}
onAvailableChanged: {
if (available) {
2024-06-30 23:03:57 +01:00
battery = KDEConnect.DeviceBatteryDbusInterfaceFactory.create(device.id());
} else {
2024-06-30 23:03:57 +01:00
battery = null;
}
}
}