Warning, /plasma/plasma-mobile/components/mobileshell/qml/actiondrawer/quicksettings/QuickSettingsDrawer.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * SPDX-FileCopyrightText: 2021 Devin Lin <devin@kde.org>
0003 *
0004 * SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006
0007 import QtQuick
0008 import QtQuick.Controls as QQC2
0009 import QtQuick.Layouts
0010
0011 import org.kde.kirigami 2.12 as Kirigami
0012 import org.kde.ksvg 1.0 as KSvg
0013
0014 import org.kde.plasma.core as PlasmaCore
0015 import org.kde.plasma.private.mobileshell as MobileShell
0016
0017 /**
0018 * Quick settings drawer pulled down from the top (for portrait mode).
0019 * For the landscape view quicksettings container, see QuickSettingsPanel.
0020 */
0021 MobileShell.BaseItem {
0022 id: root
0023
0024 required property var actionDrawer
0025
0026 /**
0027 * The amount of height to add to the panel (increasing the height of the quick settings area).
0028 */
0029 property real addedHeight: 0
0030
0031 /**
0032 * The maximum amount of added height to snap to the full height of the quick settings panel.
0033 */
0034 readonly property real maxAddedHeight: quickSettings.fullHeight - minimizedQuickSettingsHeight // first row is part of minimized height
0035
0036 /**
0037 * Height of panel when in minimized mode.
0038 */
0039 readonly property real minimizedHeight: bottomPadding + topPadding + statusBar.height + minimizedQuickSettingsHeight + mediaWidget.height + handle.fullHeight
0040
0041 /**
0042 * Height of just the QuickSettings component in minimized mode.
0043 */
0044 readonly property real minimizedQuickSettingsHeight: quickSettings.minimizedRowHeight + Kirigami.Units.gridUnit
0045
0046 /**
0047 * Progress of showing the full quick settings view from pinned.
0048 */
0049 property real minimizedToFullProgress: 1
0050
0051 // we need extra padding if the background side border is enabled
0052 topPadding: Kirigami.Units.smallSpacing
0053 leftPadding: Kirigami.Units.smallSpacing
0054 rightPadding: Kirigami.Units.smallSpacing
0055 bottomPadding: Kirigami.Units.smallSpacing * 4
0056
0057 background: KSvg.FrameSvgItem {
0058 enabledBorders: KSvg.FrameSvgItem.BottomBorder
0059 imagePath: "widgets/background"
0060 }
0061
0062 contentItem: Item {
0063 id: containerItem
0064 implicitHeight: column.implicitHeight
0065
0066 // use container item so that our column doesn't get stretched if base item is anchored
0067 ColumnLayout {
0068 id: column
0069 anchors.left: parent.left
0070 anchors.right: parent.right
0071 anchors.top: parent.top
0072 spacing: 0
0073
0074 MobileShell.StatusBar {
0075 id: statusBar
0076 Layout.fillWidth: true
0077 Layout.preferredHeight: MobileShell.Constants.topPanelHeight + Kirigami.Units.gridUnit * 0.8
0078
0079 Kirigami.Theme.colorSet: Kirigami.Theme.Window
0080 Kirigami.Theme.inherit: false
0081
0082 backgroundColor: "transparent"
0083 showSecondRow: true
0084 showDropShadow: false
0085
0086 // security reasons, system tray also doesn't work on lockscreen
0087 disableSystemTray: actionDrawer.restrictedPermissions
0088 }
0089
0090 MobileShell.QuickSettings {
0091 id: quickSettings
0092 Layout.preferredHeight: root.minimizedQuickSettingsHeight + root.addedHeight
0093 Layout.topMargin: Kirigami.Units.smallSpacing
0094 Layout.fillWidth: true
0095
0096 mode: QuickSettings.Pages
0097 actionDrawer: root.actionDrawer
0098 minimizedViewProgress: 1 - root.minimizedToFullProgress
0099 fullViewProgress: root.minimizedToFullProgress
0100 height: root.minimizedQuickSettingsHeight + root.addedHeight
0101 width: parent.width
0102 }
0103
0104 MobileShell.MediaControlsWidget {
0105 id: mediaWidget
0106 property real fullHeight: height + Layout.topMargin
0107 Layout.fillWidth: true
0108 Layout.topMargin: Kirigami.Units.smallSpacing
0109 Layout.leftMargin: Kirigami.Units.largeSpacing
0110 Layout.rightMargin: Kirigami.Units.largeSpacing
0111 }
0112
0113 Handle {
0114 id: handle
0115 property real fullHeight: height + Layout.topMargin
0116 Layout.alignment: Qt.AlignHCenter
0117 Layout.topMargin: Kirigami.Units.smallSpacing * 2
0118
0119 onTapped: {
0120 if (root.minimizedToFullProgress < 0.5) {
0121 root.actionDrawer.expand();
0122 } else {
0123 root.actionDrawer.open();
0124 }
0125 }
0126 }
0127 }
0128 }
0129 }