Warning, /plasma/plasma-mobile/initialstart/modules/prepare/package/contents/ui/main.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org>
0002 // SPDX-License-Identifier: GPL-2.0-or-later
0003 
0004 import QtQuick 2.15
0005 import QtQuick.Controls 2.15
0006 import QtQuick.Layouts 1.15
0007 
0008 import org.kde.kirigami 2.20 as Kirigami
0009 import org.kde.kirigamiaddons.formcard 1.0 as FormCard
0010 import org.kde.plasma.mobileinitialstart.prepare 1.0 as Prepare
0011 
0012 Item {
0013     id: root
0014     property string name: i18n("Before we get started…")
0015 
0016     readonly property real cardWidth: Math.min(Kirigami.Units.gridUnit * 30, root.width - Kirigami.Units.gridUnit * 2)
0017 
0018     ScrollView {
0019         anchors {
0020             fill: parent
0021             topMargin: Kirigami.Units.gridUnit
0022         }
0023 
0024         ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
0025         contentWidth: -1
0026 
0027         ColumnLayout {
0028             width: root.width
0029             spacing: Kirigami.Units.gridUnit
0030 
0031             Label {
0032                 Layout.leftMargin: Kirigami.Units.gridUnit
0033                 Layout.rightMargin: Kirigami.Units.gridUnit
0034                 Layout.alignment: Qt.AlignTop
0035                 Layout.fillWidth: true
0036 
0037                 visible: Prepare.PrepareUtil.brightnessAvailable
0038                 wrapMode: Text.Wrap
0039                 horizontalAlignment: Text.AlignHCenter
0040                 text: i18n("Adjust the screen brightness to be comfortable for the installation process.")
0041             }
0042 
0043             FormCard.FormCard {
0044                 id: brightnessCard
0045                 visible: Prepare.PrepareUtil.brightnessAvailable
0046                 maximumWidth: root.cardWidth
0047 
0048                 Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
0049 
0050                 FormCard.AbstractFormDelegate {
0051                     background: null
0052 
0053                     contentItem: RowLayout {
0054                         spacing: Kirigami.Units.gridUnit
0055 
0056                         Kirigami.Icon {
0057                             implicitWidth: Kirigami.Units.iconSizes.smallMedium
0058                             implicitHeight: Kirigami.Units.iconSizes.smallMedium
0059                             source: "brightness-low"
0060                         }
0061 
0062                         Slider {
0063                             id: brightnessSlider
0064                             Layout.fillWidth: true
0065                             from: 1
0066                             to: Prepare.PrepareUtil.maxBrightness
0067                             value: Prepare.PrepareUtil.brightness
0068                             onMoved: Prepare.PrepareUtil.brightness = value;
0069 
0070                             // HACK: for some reason, the slider initial value doesn't set without being done after the component completes loading
0071                             Timer {
0072                                 interval: 0
0073                                 running: true
0074                                 repeat: false
0075                                 onTriggered: brightnessSlider.value = Qt.binding(() => Prepare.PrepareUtil.brightness)
0076                             }
0077                         }
0078 
0079                         Kirigami.Icon {
0080                             implicitWidth: Kirigami.Units.iconSizes.smallMedium
0081                             implicitHeight: Kirigami.Units.iconSizes.smallMedium
0082                             source: "brightness-high"
0083                         }
0084                     }
0085                 }
0086             }
0087 
0088             Label {
0089                 Layout.leftMargin: Kirigami.Units.gridUnit
0090                 Layout.rightMargin: Kirigami.Units.gridUnit
0091                 Layout.alignment: Qt.AlignTop
0092                 Layout.fillWidth: true
0093 
0094                 wrapMode: Text.Wrap
0095                 horizontalAlignment: Text.AlignHCenter
0096                 text: i18n("Adjust the size of elements on the screen.")
0097             }
0098 
0099             FormCard.FormCard {
0100                 id: scalingCard
0101                 maximumWidth: root.cardWidth
0102 
0103                 Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
0104 
0105                 FormCard.FormComboBoxDelegate {
0106                     id: displayScaling
0107                     text: i18n("Display Scaling")
0108                     displayMode: FormCard.FormComboBoxDelegate.Dialog
0109                     currentIndex: Prepare.PrepareUtil.scalingOptions.indexOf(Prepare.PrepareUtil.scaling.toString() + "%");
0110                     model: Prepare.PrepareUtil.scalingOptions
0111 
0112                     // remove % suffix
0113                     onCurrentValueChanged: Prepare.PrepareUtil.scaling = parseInt(currentValue.substring(0, currentValue.length - 1));
0114                 }
0115             }
0116 
0117             FormCard.FormCard {
0118                 id: darkThemeCard
0119                 maximumWidth: root.cardWidth
0120 
0121                 Layout.alignment: Qt.AlignTop | Qt.AlignHCenter
0122 
0123                 FormCard.FormSwitchDelegate {
0124                     id: darkThemeSwitch
0125                     text: i18n("Dark Theme")
0126                     checked: Prepare.PrepareUtil.usingDarkTheme
0127                     onCheckedChanged: {
0128                         if (checked !== Prepare.PrepareUtil.usingDarkTheme) {
0129                             Prepare.PrepareUtil.usingDarkTheme = checked;
0130                         }
0131                     }
0132                 }
0133             }
0134         }
0135     }
0136 }