mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-26 06:13:09 +00:00
110 lines
3.4 KiB
QML
110 lines
3.4 KiB
QML
/*
|
|
* SPDX-FileCopyrightText: 2012-2013 Daniel Nicoletti <dantti12@gmail.com>
|
|
* SPDX-FileCopyrightText: 2013, 2015 Kai Uwe Broulik <kde@privat.broulik.de>
|
|
* SPDX-FileCopyrightText: 2021 Devin Lin <devin@kde.org>
|
|
*
|
|
* SPDX-License-Identifier: LGPL-2.0-or-later
|
|
*/
|
|
|
|
import QtQuick 2.15
|
|
import QtQuick.Layouts 1.1
|
|
import org.kde.kirigami as Kirigami
|
|
|
|
import org.kde.plasma.core as PlasmaCore
|
|
import org.kde.plasma.components 3.0 as PC3
|
|
import org.kde.plasma.private.mobileshell.screenbrightnessplugin as ScreenBrightness
|
|
import org.kde.plasma.private.mobileshell as MobileShell
|
|
|
|
Item {
|
|
id: root
|
|
implicitHeight: brightnessRow.implicitHeight
|
|
visible: screenBrightness.brightnessAvailable
|
|
|
|
property double brightnessPressedValue: 1
|
|
Behavior on brightnessPressedValue {
|
|
NumberAnimation {
|
|
duration: Kirigami.Units.longDuration * 2
|
|
easing.type: Easing.InOutQuad
|
|
}
|
|
}
|
|
|
|
ScreenBrightness.ScreenBrightnessUtil {
|
|
id: screenBrightness
|
|
}
|
|
|
|
MobileShell.PanelBackground {
|
|
anchors.fill: parent
|
|
anchors.leftMargin: -Kirigami.Units.smallSpacing
|
|
anchors.rightMargin: -Kirigami.Units.smallSpacing
|
|
anchors.topMargin: -Kirigami.Units.smallSpacing * 2
|
|
anchors.bottomMargin: -Kirigami.Units.smallSpacing * 2
|
|
|
|
panelType: MobileShell.PanelBackground.PanelType.Base
|
|
flatten: root.brightnessPressedValue
|
|
|
|
Kirigami.Theme.inherit: false
|
|
Kirigami.Theme.colorSet: Kirigami.Theme.Window
|
|
}
|
|
|
|
RowLayout {
|
|
id: brightnessRow
|
|
spacing: Kirigami.Units.smallSpacing * 2
|
|
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
anchors.top: parent.top
|
|
|
|
Kirigami.Icon {
|
|
Layout.alignment: Qt.AlignVCenter
|
|
Layout.leftMargin: Kirigami.Units.smallSpacing
|
|
Layout.preferredWidth: Kirigami.Units.iconSizes.smallMedium
|
|
Layout.preferredHeight: width
|
|
source: "low-brightness"
|
|
}
|
|
|
|
PC3.Slider {
|
|
id: brightnessSlider
|
|
Layout.fillWidth: true
|
|
from: 1
|
|
to: screenBrightness.maxBrightness
|
|
value: screenBrightness.brightness
|
|
onMoved: screenBrightness.brightness = value;
|
|
|
|
onPressedChanged: {
|
|
if (pressed) {
|
|
brightnessPressedTimer.restart();
|
|
} else{
|
|
brightnessPressedTimer.stop();
|
|
brightnessPressedValue = 1;
|
|
}
|
|
}
|
|
|
|
Timer {
|
|
id: brightnessPressedTimer
|
|
interval: 100
|
|
repeat: false
|
|
onTriggered: {
|
|
if (brightnessSlider.pressed) {
|
|
brightnessPressedValue = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
// HACK: for some reason, the slider initial value doesn't set without being done after the component completes loading
|
|
Timer {
|
|
interval: 0
|
|
running: true
|
|
repeat: false
|
|
onTriggered: brightnessSlider.value = Qt.binding(() => screenBrightness.brightness)
|
|
}
|
|
}
|
|
|
|
Kirigami.Icon {
|
|
Layout.alignment: Qt.AlignVCenter
|
|
Layout.rightMargin: Kirigami.Units.smallSpacing
|
|
Layout.preferredWidth: Kirigami.Units.iconSizes.smallMedium
|
|
Layout.preferredHeight: width
|
|
source: "high-brightness"
|
|
}
|
|
}
|
|
}
|