2024-10-31 05:05:44 +00:00
|
|
|
// SPDX-FileCopyrightText: 2021-2024 Devin Lin <devin@kde.org>
|
|
|
|
|
// SPDX-License-Identifier: LGPL-2.0-or-later
|
2021-12-22 23:29:00 +00:00
|
|
|
|
2023-05-13 02:07:48 +00:00
|
|
|
import QtQuick
|
|
|
|
|
import QtQuick.Controls as QQC2
|
|
|
|
|
import QtQuick.Layouts
|
2025-06-17 09:47:43 +00:00
|
|
|
import QtQuick.Effects
|
2021-12-22 23:29:00 +00:00
|
|
|
|
|
|
|
|
import org.kde.kirigami 2.12 as Kirigami
|
2023-07-09 22:50:33 +00:00
|
|
|
import org.kde.ksvg 1.0 as KSvg
|
2023-11-02 11:08:17 +00:00
|
|
|
import org.kde.plasma.private.mobileshell as MobileShell
|
2023-09-05 15:34:49 +00:00
|
|
|
import org.kde.plasma.core as PlasmaCore
|
2024-07-27 15:02:48 +00:00
|
|
|
import org.kde.plasma.private.mobileshell.quicksettingsplugin as QS
|
2024-10-17 17:20:14 +00:00
|
|
|
import org.kde.plasma.private.mobileshell.shellsettingsplugin as ShellSettings
|
2021-12-22 23:29:00 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Quick settings panel for landscape view (right sidebar).
|
|
|
|
|
* For the portrait view quicksettings container, see QuickSettingsDrawer.
|
|
|
|
|
*/
|
2023-11-02 11:08:17 +00:00
|
|
|
MobileShell.BaseItem {
|
2021-12-22 23:29:00 +00:00
|
|
|
id: root
|
2024-07-27 03:47:44 +00:00
|
|
|
|
2021-12-22 23:29:00 +00:00
|
|
|
required property var actionDrawer
|
2024-07-27 03:47:44 +00:00
|
|
|
|
2024-07-27 15:02:48 +00:00
|
|
|
property QS.QuickSettingsModel quickSettingsModel
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The height of the entire screen the panel opens in.
|
|
|
|
|
*/
|
2022-12-07 00:01:42 +00:00
|
|
|
required property real fullScreenHeight
|
2024-07-27 03:47:44 +00:00
|
|
|
|
2021-12-22 23:29:00 +00:00
|
|
|
/**
|
|
|
|
|
* Implicit height of the contents of the panel.
|
|
|
|
|
*/
|
|
|
|
|
readonly property real contentImplicitHeight: column.implicitHeight
|
2024-07-27 03:47:44 +00:00
|
|
|
|
2024-10-31 05:05:44 +00:00
|
|
|
property alias quickSettings: quickSettingsProxy.contentItem
|
|
|
|
|
property alias statusBar: statusBarProxy.contentItem
|
2024-11-14 03:34:01 +00:00
|
|
|
readonly property double brightnessPressedValue: quickSettings.brightnessPressedValue
|
2024-10-31 05:05:44 +00:00
|
|
|
|
2021-12-22 23:29:00 +00:00
|
|
|
// we need extra padding since the background side border is enabled
|
2023-07-25 01:13:52 +00:00
|
|
|
topPadding: Kirigami.Units.smallSpacing * 4
|
|
|
|
|
leftPadding: Kirigami.Units.smallSpacing * 4
|
|
|
|
|
rightPadding: Kirigami.Units.smallSpacing * 4
|
|
|
|
|
bottomPadding: Kirigami.Units.smallSpacing * 4
|
2024-07-27 03:47:44 +00:00
|
|
|
|
2025-06-23 00:16:16 +00:00
|
|
|
background: MobileShell.PanelBackground {
|
|
|
|
|
anchors.fill: parent
|
|
|
|
|
anchors.margins: Kirigami.Units.largeSpacing
|
|
|
|
|
panelType: MobileShell.PanelBackground.PanelType.Base
|
2025-06-18 21:02:12 +00:00
|
|
|
opacity: brightnessPressedValue
|
2021-12-22 23:29:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
contentItem: Item {
|
|
|
|
|
id: containerItem
|
2024-07-27 03:47:44 +00:00
|
|
|
|
2021-12-22 23:29:00 +00:00
|
|
|
// use container item so that our column doesn't get stretched if base item is anchored
|
|
|
|
|
ColumnLayout {
|
|
|
|
|
id: column
|
|
|
|
|
anchors.left: parent.left
|
|
|
|
|
anchors.right: parent.right
|
|
|
|
|
anchors.top: parent.top
|
2022-12-07 00:01:42 +00:00
|
|
|
height: root.fullScreenHeight
|
2021-12-22 23:29:00 +00:00
|
|
|
spacing: 0
|
2024-07-27 03:47:44 +00:00
|
|
|
|
2024-10-31 05:05:44 +00:00
|
|
|
MobileShell.BaseItem {
|
|
|
|
|
id: statusBarProxy
|
2021-12-22 23:29:00 +00:00
|
|
|
Layout.alignment: Qt.AlignTop
|
|
|
|
|
Layout.fillWidth: true
|
2024-10-17 17:20:14 +00:00
|
|
|
// Align these to double pixels to aid vertical alignment and sharper icon rendering
|
|
|
|
|
Layout.preferredHeight: Math.round(Kirigami.Units.gridUnit * 1.5 * ShellSettings.Settings.statusBarScaleFactor / 2) * 2
|
|
|
|
|
Layout.maximumHeight: Math.round(Kirigami.Units.gridUnit * 1.5 * ShellSettings.Settings.statusBarScaleFactor / 2) * 2
|
2024-07-27 03:47:44 +00:00
|
|
|
|
2023-07-25 02:24:10 +00:00
|
|
|
Kirigami.Theme.colorSet: Kirigami.Theme.Window
|
|
|
|
|
Kirigami.Theme.inherit: false
|
2021-12-22 23:29:00 +00:00
|
|
|
}
|
2024-07-27 03:47:44 +00:00
|
|
|
|
2024-10-31 05:05:44 +00:00
|
|
|
MobileShell.BaseItem {
|
|
|
|
|
id: quickSettingsProxy
|
2022-05-12 13:20:39 +00:00
|
|
|
width: column.width
|
|
|
|
|
implicitHeight: quickSettings.fullHeight
|
2024-07-27 03:47:44 +00:00
|
|
|
|
2021-12-22 23:29:00 +00:00
|
|
|
Layout.alignment: Qt.AlignTop
|
|
|
|
|
Layout.fillWidth: true
|
2024-10-31 05:05:44 +00:00
|
|
|
Layout.maximumHeight: root.fullScreenHeight - root.topPadding - root.bottomPadding - statusBarProxy.height - Kirigami.Units.smallSpacing
|
2021-12-22 23:29:00 +00:00
|
|
|
Layout.maximumWidth: column.width
|
|
|
|
|
}
|
2024-07-27 03:47:44 +00:00
|
|
|
|
2025-06-23 00:16:16 +00:00
|
|
|
// add extra space here to prevent the bottom handle from overlapping with the BrightnessItem
|
|
|
|
|
Item { Layout.fillHeight: true; height: Kirigami.Units.largeSpacing }
|
2021-12-22 23:29:00 +00:00
|
|
|
}
|
2024-07-27 03:47:44 +00:00
|
|
|
|
2021-12-22 23:29:00 +00:00
|
|
|
Handle {
|
|
|
|
|
id: handle
|
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
|
|
|
anchors.bottom: parent.bottom
|
2024-11-14 03:34:01 +00:00
|
|
|
opacity: brightnessPressedValue
|
2021-12-22 23:29:00 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|