Create a module to share components within the workspace

For the moment, only BatteryIcon.

Reviewed by David Edmundson
wilder-5.14
Aleix Pol 12 years ago
parent 45147e31e6
commit 7cc53a5f8c
  1. 1
      CMakeLists.txt
  2. 1
      applets/batterymonitor/contents/ui/BatteryItem.qml
  3. 1
      applets/batterymonitor/contents/ui/CompactRepresentation.qml
  4. 0
      components/BatteryIcon.qml
  5. 1
      components/CMakeLists.txt
  6. 4
      components/qmldir
  7. 100
      lookandfeel/contents/components/BatteryIcon.qml
  8. 3
      lookandfeel/contents/components/InfoPane.qml

@ -122,6 +122,7 @@ endif()
add_subdirectory(doc)
add_subdirectory(libkworkspace)
add_subdirectory(libtaskmanager)
add_subdirectory(components)
if(dbusmenu-qt5_FOUND)
add_subdirectory(appmenu)

@ -24,6 +24,7 @@ import QtQuick.Layouts 1.1
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.components 2.0 as PlasmaComponents
import org.kde.plasma.extras 2.0 as PlasmaExtras
import org.kde.plasma.workspace.components 2.0
import org.kde.kcoreaddons 1.0 as KCoreAddons
import "plasmapackage:/code/logic.js" as Logic

@ -23,6 +23,7 @@ import QtQuick 2.0
import QtQuick.Layouts 1.1
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.components 2.0 as Components
import org.kde.plasma.workspace.components 2.0
import "plasmapackage:/code/logic.js" as Logic
Item {

@ -0,0 +1 @@
install(DIRECTORY . DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/workspace/components)

@ -0,0 +1,4 @@
module org.kde.plasma.workspace.components
BatteryIcon 2.0 BatteryIcon.qml

@ -1,100 +0,0 @@
/*
* Copyright 2011 Viranch Mehta <viranch.mehta@gmail.com>
* Copyright 2013 Kai Uwe Broulik <kde@privat.broulik.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import QtQuick 2.0
import org.kde.plasma.core 2.0 as PlasmaCore
Item {
property bool hasBattery
property int percent
property bool pluggedIn
PlasmaCore.Svg {
id: svg
imagePath: "icons/battery"
}
PlasmaCore.SvgItem {
id: batterySvg
anchors.fill: parent
svg: svg
elementId: "Battery"
}
PlasmaCore.SvgItem {
id: fillSvg
anchors.fill: parent
svg: svg
elementId: hasBattery ? fillElement(percent) : "Unavailable"
visible: elementId != ""
}
function fillElement(p) {
// We switched from having steps of 20 for the battery percentage to a more accurate
// step of 10. This means we break other and older themes.
// If the Fill10 element is not found, it is likely that the theme doesn't support
// that and we use the older method of obtaining the fill element.
if (!svg.hasElement("Fill10")) {
print("No Fill10 element found in your theme's battery.svg - Using legacy 20% steps for battery icon");
if (p >= 90) {
return "Fill100";
} else if (p >= 70) {
return "Fill80";
} else if (p >= 50) {
return "Fill60";
} else if (p > 20) {
return "Fill40";
} else if (p >= 10) {
return "Fill20";
}
return "";
} else {
if (p >= 95) {
return "Fill100";
} else if (p >= 85) {
return "Fill90";
} else if (p >= 75) {
return "Fill90";
} else if (p >= 65) {
return "Fill80";
} else if (p >= 55) {
return "Fill60";
} else if (p >= 45) {
return "Fill50";
} else if (p >= 35) {
return "Fill40";
} else if (p >= 25) {
return "Fill30";
} else if (p >= 15) {
return "Fill20";
} else if (p > 5) {
return "Fill10";
}
return "";
}
}
PlasmaCore.SvgItem {
anchors.fill: parent
svg: svg
elementId: "AcAdapter"
visible: pluggedIn
}
}

@ -23,6 +23,7 @@ import QtQuick.Layouts 1.1
import org.kde.plasma.components 2.0 as PlasmaComponents
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.extras 2.0 as PlasmaExtras
import org.kde.plasma.workspace.components 2.0 as PW
ColumnLayout {
BreezeLabel { //should be a heading but we want it _loads_ bigger
@ -45,7 +46,7 @@ ColumnLayout {
Layout.alignment: Qt.AlignRight
visible: pmSource.connectedSources != ""
BatteryIcon {
PW.BatteryIcon {
hasBattery: true
percent: pmSource.data["Battery0"]["Percent"]
pluggedIn: pmSource.data["AC Adapter"]["Plugged in"]

Loading…
Cancel
Save