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(doc)
add_subdirectory(libkworkspace) add_subdirectory(libkworkspace)
add_subdirectory(libtaskmanager) add_subdirectory(libtaskmanager)
add_subdirectory(components)
if(dbusmenu-qt5_FOUND) if(dbusmenu-qt5_FOUND)
add_subdirectory(appmenu) 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.core 2.0 as PlasmaCore
import org.kde.plasma.components 2.0 as PlasmaComponents import org.kde.plasma.components 2.0 as PlasmaComponents
import org.kde.plasma.extras 2.0 as PlasmaExtras 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 org.kde.kcoreaddons 1.0 as KCoreAddons
import "plasmapackage:/code/logic.js" as Logic import "plasmapackage:/code/logic.js" as Logic

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

Loading…
Cancel
Save