Warning, /plasma/plasma-workspace/applets/brightness/package/contents/ui/PopupDialog.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2011 Viranch Mehta <viranch.mehta@gmail.com>
0003     SPDX-FileCopyrightText: 2013-2016 Kai Uwe Broulik <kde@privat.broulik.de>
0004     SPDX-FileCopyrightText: 2023 Natalie Clarius <natalie.clarius@kde.org>
0005     
0006     SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 
0009 import QtQuick
0010 import QtQuick.Layouts
0011 
0012 import org.kde.plasma.components as PlasmaComponents3
0013 import org.kde.plasma.extras as PlasmaExtras
0014 import org.kde.kirigami as Kirigami
0015 
0016 PlasmaExtras.Representation {
0017     id: dialog
0018 
0019     property bool isBrightnessAvailable
0020     property bool isScreenBrightnessAvailable
0021     property bool isKeyboardBrightnessAvailable
0022 
0023     KeyNavigation.down: screenBrightnessSlider.Visible ? screenBrightnessSlider : screenBrightnessSlider.KeyNavigation.down
0024 
0025     contentItem: PlasmaComponents3.ScrollView {
0026         id: scrollView
0027 
0028         focus: false
0029 
0030         function positionViewAtItem(item) {
0031             if (!PlasmaComponents3.ScrollBar.vertical.visible) {
0032                 return;
0033             }
0034             const rect = brightnessList.mapFromItem(item, 0, 0, item.width, item.height);
0035             if (rect.y < scrollView.contentItem.contentY) {
0036                 scrollView.contentItem.contentY = rect.y;
0037             } else if (rect.y + rect.height > scrollView.contentItem.contentY + scrollView.height) {
0038                 scrollView.contentItem.contentY = rect.y + rect.height - scrollView.height;
0039             }
0040         }
0041 
0042         contentItem: Column {
0043             id: brightnessList
0044 
0045             spacing: Kirigami.Units.smallSpacing * 2
0046 
0047             readonly property Item firstHeaderItem: {
0048                 if (screenBrightnessSlider.visible) {
0049                     return screenBrightnessSlider;
0050                 } else if (keyboardBrightnessSlider.visible) {
0051                     return keyboardBrightnessSlider;
0052                 }
0053                 return null;
0054             }
0055             readonly property Item lastHeaderItem: {
0056                 if (keyboardBrightnessSlider.visible) {
0057                     return keyboardBrightnessSlider;
0058                 } else if (screenBrightnessSlider.visible) {
0059                     return screenBrightnessSlider;
0060                 }
0061                 return null;
0062             }
0063 
0064             BrightnessItem {
0065                 id: screenBrightnessSlider
0066 
0067                 width: scrollView.availableWidth
0068 
0069                 icon.name: "video-display-brightness"
0070                 text: i18n("Display Brightness")
0071                 type: BrightnessItem.Type.Screen
0072                 visible: dialog.isScreenBrightnessAvailable
0073                 value: brightnesscontrol.screenBrightness
0074                 maximumValue: brightnesscontrol.maximumScreenBrightness
0075 
0076                 KeyNavigation.up: dialog.KeyNavigation.up
0077                 KeyNavigation.down: keyboardBrightnessSlider.visible ? keyboardBrightnessSlider : keyboardBrightnessSlider.KeyNavigation.down
0078                 KeyNavigation.backtab: dialog.KeyNavigation.backtab
0079                 KeyNavigation.tab: KeyNavigation.down
0080 
0081                 stepSize: brightnesscontrol.maximumScreenBrightness/100
0082 
0083                 onMoved: brightnesscontrol.screenBrightness = value
0084                 onActiveFocusChanged: if (activeFocus) scrollView.positionViewAtItem(this)
0085 
0086                 // Manually dragging the slider around breaks the binding
0087                 Connections {
0088                     target: brightnesscontrol
0089                     function onScreenBrightnessChanged() {
0090                         screenBrightnessSlider.value = brightnesscontrol.screenBrightness;
0091                     }
0092                 }
0093             }
0094 
0095             BrightnessItem {
0096                 id: keyboardBrightnessSlider
0097 
0098                 width: scrollView.availableWidth
0099 
0100                 icon.name: "input-keyboard-brightness"
0101                 text: i18n("Keyboard Brightness")
0102                 type: BrightnessItem.Type.Keyboard
0103                 showPercentage: false
0104                 value: brightnesscontrol.keyboardBrightness
0105                 maximumValue: brightnesscontrol.maximumKeyboardBrightness
0106                 visible: dialog.isKeyboardBrightnessAvailable
0107 
0108                 KeyNavigation.up: screenBrightnessSlider.visible ? screenBrightnessSlider : screenBrightnessSlider.KeyNavigation.up
0109                 KeyNavigation.down: nightColorItem
0110                 KeyNavigation.backtab: KeyNavigation.up
0111                 KeyNavigation.tab: KeyNavigation.down
0112 
0113                 onMoved: brightnesscontrol.keyboardBrightness = value
0114                 onActiveFocusChanged: if (activeFocus) scrollView.positionViewAtItem(this)
0115 
0116                 // Manually dragging the slider around breaks the binding
0117                 Connections {
0118                     target: brightnesscontrol
0119                     function onKeyboardBrightnessChanged() {
0120                         keyboardBrightnessSlider.value = brightnesscontrol.keyboardBrightness;
0121                     }
0122                 }
0123             }
0124 
0125             NightColorItem {
0126                 id: nightColorItem
0127 
0128                 width: scrollView.availableWidth
0129 
0130                 KeyNavigation.up: keyboardBrightnessSlider.visible ? keyboardBrightnessSlider : keyboardBrightnessSlider.KeyNavigation.up
0131 
0132                 text: i18n("Night Light")
0133             }
0134 
0135         }
0136     }
0137 }
0138