Warning, /plasma/plasma-workspace/components/workspace/BatteryIcon.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2011 Viranch Mehta <viranch.mehta@gmail.com>
0003     SPDX-FileCopyrightText: 2013 Kai Uwe Broulik <kde@privat.broulik.de>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 import QtQuick 2.0
0009 
0010 import org.kde.kirigami 2.20 as Kirigami
0011 
0012 Item {
0013     id: root
0014 
0015     property bool hasBattery
0016     property int percent
0017     property bool pluggedIn
0018     property string batteryType
0019     property bool active: false
0020 
0021     // Icon for current charge level and charging status for batteries that support it
0022     Kirigami.Icon {
0023         anchors.fill: parent
0024         source: root.hasBattery ? fillElement(root.percent) : "battery-missing"
0025         visible: !otherBatteriesIcon.visible
0026         active: root.active
0027     }
0028 
0029     function fillElement(p) {
0030         let name
0031         if (p >= 95) {
0032             name = "battery-100";
0033         } else if (p >= 85) {
0034             name = "battery-090";
0035         } else if (p >= 75) {
0036             name = "battery-080";
0037         } else if (p >= 65) {
0038             name = "battery-070";
0039         } else if (p >= 55) {
0040             name = "battery-060";
0041         } else if (p >= 45) {
0042             name = "battery-050";
0043         } else if (p >= 35) {
0044             name = "battery-040";
0045         } else if (p >= 25) {
0046             name = "battery-030";
0047         } else if (p >= 15) {
0048             name = "battery-020";
0049         } else if (p > 5) {
0050             name = "battery-010";
0051         } else {
0052             name = "battery-000";
0053         }
0054 
0055         if (root.pluggedIn) {
0056             name += "-charging";
0057         }
0058         return name;
0059     }
0060 
0061     // Generic icon for other types of batteries
0062     Kirigami.Icon {
0063         id: otherBatteriesIcon
0064         anchors.fill: parent
0065         source: elementForType(root.batteryType)
0066         visible: source !== ""
0067         active: root.active
0068     }
0069 
0070     function elementForType(t) {
0071         switch(t) {
0072             case "Mouse":
0073                 return "input-mouse-battery";
0074             case "Keyboard":
0075                 return "input-keyboard-battery";
0076             case "Pda":
0077                 return "phone-battery";
0078             case "Phone":
0079                 return "phone-battery";
0080             case "Ups":
0081                 return "battery-ups";
0082             case "GamingInput":
0083                 return "input-gaming-battery";
0084             case "Bluetooth":
0085                 return "preferences-system-bluetooth-battery";
0086             default:
0087                 return "";
0088         }
0089     }
0090 }