mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-08-02 17:54:45 +00:00
a delegate for screen brightness with slider
no idea if the dataengine will work with the phone
This commit is contained in:
parent
129adccee6
commit
a4af908173
3 changed files with 97 additions and 4 deletions
|
|
@ -0,0 +1,75 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2015 Marco Martin <notmart@gmail.com>
|
||||||
|
*
|
||||||
|
* 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 Library 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.4
|
||||||
|
import QtQuick.Layouts 1.1
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import org.kde.plasma.components 2.0 as PlasmaComponents
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: delegateRoot
|
||||||
|
implicitWidth: delegate.implicitWidth
|
||||||
|
implicitHeight: delegate.implicitHeight + (slider.opacity > 0 ? slider.height : 0)
|
||||||
|
|
||||||
|
property int screenBrightness
|
||||||
|
readonly property int maximumScreenBrightness: pmSource.data["PowerDevil"] ? pmSource.data["PowerDevil"]["Maximum Screen Brightness"] || 0 : 0
|
||||||
|
|
||||||
|
PlasmaCore.DataSource {
|
||||||
|
id: pmSource
|
||||||
|
engine: "powermanagement"
|
||||||
|
connectedSources: ["PowerDevil"]
|
||||||
|
|
||||||
|
onDataChanged: {
|
||||||
|
delegateRoot.screenBrightness = source.data["PowerDevil"]["Screen Brightness"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Delegate {
|
||||||
|
id: delegate
|
||||||
|
toggled: slider.opacity > 0
|
||||||
|
function toggle() {
|
||||||
|
slider.opacity = slider.opacity > 0 ? 0 : 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PlasmaComponents.Slider {
|
||||||
|
id: slider
|
||||||
|
anchors.top: delegate.bottom
|
||||||
|
width: flow.width
|
||||||
|
opacity: 0
|
||||||
|
x: -delegateRoot.parent.x
|
||||||
|
value: screenBrightness
|
||||||
|
minimumValue: maximumValue > 100 ? 1 : 0
|
||||||
|
maximumValue: delegateRoot.maximumScreenBrightness
|
||||||
|
Behavior on opacity {
|
||||||
|
OpacityAnimator {
|
||||||
|
duration: units.shortDuration
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onScreenBrightnessChanged: {
|
||||||
|
var service = pmSource.serviceForSource("PowerDevil");
|
||||||
|
var operation = service.operationDescription("setBrightness");
|
||||||
|
operation.brightness = slider.value;
|
||||||
|
operation.silent = true
|
||||||
|
service.startOperationCall(operation);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -23,12 +23,14 @@ 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
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
id: delegateRoot
|
||||||
|
property bool toggled: model.enabled
|
||||||
spacing: units.smallSpacing
|
spacing: units.smallSpacing
|
||||||
width: parent.width / 2 - units.largeSpacing / 2
|
implicitWidth: flow.width / 2 - units.largeSpacing / 2
|
||||||
Rectangle {
|
Rectangle {
|
||||||
Layout.minimumWidth: units.iconSizes.large
|
Layout.minimumWidth: units.iconSizes.large
|
||||||
Layout.minimumHeight: width
|
Layout.minimumHeight: width
|
||||||
color: model.enabled ?
|
color: toggled ?
|
||||||
Qt.rgba(PlasmaCore.ColorScope.highlightColor.r, PlasmaCore.ColorScope.highlightColor.g, PlasmaCore.ColorScope.highlightColor.b, iconMouseArea.pressed ? 0.5 : 0.3) :
|
Qt.rgba(PlasmaCore.ColorScope.highlightColor.r, PlasmaCore.ColorScope.highlightColor.g, PlasmaCore.ColorScope.highlightColor.b, iconMouseArea.pressed ? 0.5 : 0.3) :
|
||||||
Qt.rgba(PlasmaCore.ColorScope.textColor.r, PlasmaCore.ColorScope.textColor.g, PlasmaCore.ColorScope.textColor.b, iconMouseArea.pressed ? 0.5 : 0.2)
|
Qt.rgba(PlasmaCore.ColorScope.textColor.r, PlasmaCore.ColorScope.textColor.g, PlasmaCore.ColorScope.textColor.b, iconMouseArea.pressed ? 0.5 : 0.2)
|
||||||
|
|
||||||
|
|
@ -43,7 +45,9 @@ RowLayout {
|
||||||
id: iconMouseArea
|
id: iconMouseArea
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
onClicked: {
|
onClicked: {
|
||||||
if (model.toggleFunction) {
|
if (delegateRoot.toggle) {
|
||||||
|
delegateRoot.toggle();
|
||||||
|
} else if (model.toggleFunction) {
|
||||||
root[model.toggleFunction]();
|
root[model.toggleFunction]();
|
||||||
} else if (model.settingsCommand) {
|
} else if (model.settingsCommand) {
|
||||||
plasmoid.nativeInterface.executeCommand(model.settingsCommand);
|
plasmoid.nativeInterface.executeCommand(model.settingsCommand);
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ Item {
|
||||||
enabled: false
|
enabled: false
|
||||||
settingsCommand: "active-settings"
|
settingsCommand: "active-settings"
|
||||||
toggleFunction: ""
|
toggleFunction: ""
|
||||||
|
delegate: ""
|
||||||
}
|
}
|
||||||
ListElement {
|
ListElement {
|
||||||
text: "Mobile network"
|
text: "Mobile network"
|
||||||
|
|
@ -85,6 +86,7 @@ Item {
|
||||||
icon: "video-display-brightness"
|
icon: "video-display-brightness"
|
||||||
enabled: false
|
enabled: false
|
||||||
settingsCommand: "active-settings -m org.kde.active.settings.powermanagement"
|
settingsCommand: "active-settings -m org.kde.active.settings.powermanagement"
|
||||||
|
delegate: "BrightnessDelegate"
|
||||||
}
|
}
|
||||||
ListElement {
|
ListElement {
|
||||||
text: "Flashlight"
|
text: "Flashlight"
|
||||||
|
|
@ -101,6 +103,7 @@ Item {
|
||||||
}
|
}
|
||||||
|
|
||||||
Flow {
|
Flow {
|
||||||
|
id: flow
|
||||||
anchors {
|
anchors {
|
||||||
fill: parent
|
fill: parent
|
||||||
margins: units.largeSpacing
|
margins: units.largeSpacing
|
||||||
|
|
@ -108,7 +111,18 @@ Item {
|
||||||
spacing: units.largeSpacing
|
spacing: units.largeSpacing
|
||||||
Repeater {
|
Repeater {
|
||||||
model: settingsModel
|
model: settingsModel
|
||||||
delegate: Delegate {}
|
delegate: Loader {
|
||||||
|
width: item ? item.implicitWidth : 0
|
||||||
|
height: item ? item.implicitHeight : 0
|
||||||
|
source: Qt.resolvedUrl((model.delegate ? model.delegate : "Delegate") + ".qml")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
move: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
duration: units.shortDuration
|
||||||
|
easing.type: Easing.InOutQuad
|
||||||
|
properties: "x,y"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue