mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-08-01 09:18:07 +00:00
quicksettings: port BrightnessItem away from dataengine
This commit is contained in:
parent
1799b03c02
commit
f3f66a5d07
1 changed files with 11 additions and 80 deletions
|
|
@ -11,74 +11,16 @@ import QtQuick.Layouts 1.1
|
||||||
import org.kde.kirigami 2.20 as Kirigami
|
import org.kde.kirigami 2.20 as Kirigami
|
||||||
|
|
||||||
import org.kde.plasma.core as PlasmaCore
|
import org.kde.plasma.core as PlasmaCore
|
||||||
import org.kde.plasma.plasma5support 2.0 as P5Support
|
|
||||||
import org.kde.plasma.components 3.0 as PC3
|
import org.kde.plasma.components 3.0 as PC3
|
||||||
|
import org.kde.plasma.private.brightnesscontrolplugin as BC
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
implicitHeight: brightnessRow.implicitHeight
|
implicitHeight: brightnessRow.implicitHeight
|
||||||
|
|
||||||
property int screenBrightness
|
BC.ScreenBrightnessControl {
|
||||||
property bool disableBrightnessUpdate: true
|
id: screenBrightnessControl
|
||||||
readonly property int maximumScreenBrightness: pmSource.data["PowerDevil"] ? pmSource.data["PowerDevil"]["Maximum Screen Brightness"] || 0 : 0
|
|
||||||
|
|
||||||
property QtObject updateScreenBrightnessJob
|
|
||||||
|
|
||||||
function updateBrightnessUI() {
|
|
||||||
if (updateScreenBrightnessJob)
|
|
||||||
return;
|
|
||||||
|
|
||||||
root.disableBrightnessUpdate = true;
|
|
||||||
root.screenBrightness = pmSource.data["PowerDevil"]["Screen Brightness"];
|
|
||||||
root.disableBrightnessUpdate = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
onScreenBrightnessChanged: {
|
|
||||||
if (!brightnessSlider.pressed && !brightnessTimer.running) {
|
|
||||||
brightnessSlider.value = root.screenBrightness;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!disableBrightnessUpdate) {
|
|
||||||
var service = pmSource.serviceForSource("PowerDevil");
|
|
||||||
var operation = service.operationDescription("setBrightness");
|
|
||||||
operation.brightness = screenBrightness;
|
|
||||||
operation.silent = true; // don't show OSD
|
|
||||||
|
|
||||||
updateScreenBrightnessJob = service.startOperationCall(operation);
|
|
||||||
updateScreenBrightnessJob.finished.connect(function (job) {
|
|
||||||
root.updateBrightnessUI();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
P5Support.DataSource {
|
|
||||||
id: pmSource
|
|
||||||
engine: "powermanagement"
|
|
||||||
connectedSources: ["PowerDevil"]
|
|
||||||
onSourceAdded: {
|
|
||||||
if (source === "PowerDevil") {
|
|
||||||
disconnectSource(source);
|
|
||||||
connectSource(source);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
onDataChanged: root.updateBrightnessUI()
|
|
||||||
}
|
|
||||||
|
|
||||||
// we want to smoothen the slider so it doesn't jump immediately after you let go
|
|
||||||
Timer {
|
|
||||||
id: brightnessTimer
|
|
||||||
interval: 500
|
|
||||||
onTriggered: {
|
|
||||||
brightnessSlider.value = root.screenBrightness;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// send brightness events a maximum of 5 times a second
|
|
||||||
Timer {
|
|
||||||
id: sendEventTimer
|
|
||||||
interval: 200
|
|
||||||
onTriggered: root.screenBrightness = brightnessSlider.value
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
|
@ -102,22 +44,11 @@ Item {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.alignment: Qt.AlignVCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
from: 1
|
from: 1
|
||||||
to: root.maximumScreenBrightness
|
to: screenBrightnessControl.brightnessMax
|
||||||
value: root.screenBrightness
|
value: screenBrightnessControl.brightness
|
||||||
|
|
||||||
onMoved: {
|
onMoved: {
|
||||||
if (!sendEventTimer.running) {
|
screenBrightnessControl.brightness = value;
|
||||||
root.screenBrightness = value;
|
|
||||||
sendEventTimer.restart();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onPressedChanged: {
|
|
||||||
if (!pressed) {
|
|
||||||
brightnessTimer.restart();
|
|
||||||
} else {
|
|
||||||
brightnessTimer.stop();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue