Warning, /plasma/plasma-mobile/components/mobileshell/qml/actiondrawer/LandscapeContentContainer.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 2.15 0008 import QtQuick.Controls 2.15 0009 import QtQuick.Layouts 1.1 0010 import QtQuick.Window 2.2 0011 0012 import org.kde.kirigami 2.12 as Kirigami 0013 0014 import org.kde.plasma.core as PlasmaCore 0015 import org.kde.plasma.plasma5support 2.0 as P5Support 0016 import org.kde.plasma.components 3.0 as PlasmaComponents 0017 import org.kde.plasma.private.mobileshell as MobileShell 0018 0019 /** 0020 * Root element that contains all of the ActionDrawer's contents, and is anchored to the screen. 0021 */ 0022 Item { 0023 id: root 0024 0025 required property var actionDrawer 0026 0027 property alias notificationsWidget: notificationWidget 0028 0029 readonly property real minimizedQuickSettingsOffset: height 0030 readonly property real maximizedQuickSettingsOffset: height 0031 readonly property bool isOnLargeScreen: width > quickSettings.width * 2.5 0032 readonly property real minWidthHeight: Math.min(root.width, root.height) 0033 readonly property real opacityValue: Math.max(0, Math.min(1, actionDrawer.offset / root.minimizedQuickSettingsOffset)) 0034 0035 Kirigami.Theme.colorSet: Kirigami.Theme.View 0036 Kirigami.Theme.inherit: false 0037 0038 // fullscreen background 0039 Rectangle { 0040 anchors.fill: parent 0041 0042 // darken if there are notifications 0043 color: Qt.rgba(Kirigami.Theme.backgroundColor.r, 0044 Kirigami.Theme.backgroundColor.g, 0045 Kirigami.Theme.backgroundColor.b, 0046 notificationWidget.hasNotifications ? 0.95 : 0.9) 0047 Behavior on color { ColorAnimation { duration: Kirigami.Units.longDuration } } 0048 opacity: opacityValue 0049 } 0050 0051 P5Support.DataSource { 0052 id: timeSource 0053 engine: "time" 0054 connectedSources: ["Local"] 0055 interval: 60 * 1000 0056 } 0057 0058 MouseArea { 0059 anchors.fill: parent 0060 0061 // dismiss drawer when background is clicked 0062 onClicked: root.actionDrawer.close(); 0063 0064 // left side 0065 ColumnLayout { 0066 id: columnLayout 0067 0068 opacity: opacityValue 0069 spacing: 0 0070 0071 anchors { 0072 top: mediaWidget.bottom 0073 topMargin: 0 0074 bottom: parent.bottom 0075 bottomMargin: 0 0076 right: quickSettings.left 0077 left: parent.left 0078 } 0079 anchors.margins: minWidthHeight * 0.06 0080 0081 MobileShell.NotificationsWidget { 0082 id: notificationWidget 0083 historyModel: root.actionDrawer.notificationModel 0084 historyModelType: root.actionDrawer.notificationModelType 0085 notificationSettings: root.actionDrawer.notificationSettings 0086 actionsRequireUnlock: root.actionDrawer.restrictedPermissions 0087 onUnlockRequested: root.actionDrawer.permissionsRequested() 0088 0089 Connections { 0090 target: root.actionDrawer 0091 0092 function onRunPendingNotificationAction() { 0093 notificationWidget.runPendingAction(); 0094 } 0095 } 0096 0097 onBackgroundClicked: root.actionDrawer.close(); 0098 0099 // don't allow notifications widget to get too wide 0100 Layout.maximumWidth: Kirigami.Units.gridUnit * 25 0101 Layout.fillHeight: true 0102 Layout.fillWidth: true 0103 Layout.topMargin: minWidthHeight * 0.02 0104 } 0105 } 0106 0107 PlasmaComponents.Label { 0108 id: clock 0109 text: Qt.formatTime(timeSource.data.Local.DateTime, MobileShell.ShellUtil.isSystem24HourFormat ? "h:mm" : "h:mm ap") 0110 verticalAlignment: Qt.AlignVCenter 0111 opacity: columnLayout.opacity 0112 0113 anchors { 0114 left: parent.left 0115 top: parent.top 0116 topMargin: columnLayout.anchors.margins / 2 0117 leftMargin: columnLayout.anchors.margins 0118 } 0119 0120 font.pixelSize: Math.min(40, minWidthHeight * 0.1) 0121 font.weight: Font.ExtraLight 0122 elide: Text.ElideRight 0123 } 0124 0125 PlasmaComponents.Label { 0126 id: date 0127 text: Qt.formatDate(timeSource.data.Local.DateTime, "ddd MMMM d") 0128 verticalAlignment: Qt.AlignTop 0129 color: Kirigami.Theme.disabledTextColor 0130 opacity: columnLayout.opacity 0131 0132 anchors { 0133 left: parent.left 0134 top: clock.bottom 0135 bottom: isOnLargeScreen ? columnLayout.top : mediaWidget.top 0136 topMargin: Kirigami.Units.smallSpacing 0137 leftMargin: columnLayout.anchors.margins 0138 } 0139 0140 font.pixelSize: Math.min(20, minWidthHeight * 0.05) 0141 font.weight: Font.Light 0142 } 0143 0144 MobileShell.MediaControlsWidget { 0145 id: mediaWidget 0146 property real fullHeight: visible ? height + Kirigami.Units.smallSpacing * 6 : 0 0147 0148 y: isOnLargeScreen ? date.y - height + date.implicitHeight : date.y + date.implicitHeight + columnLayout.anchors.margins / 2 0149 0150 opacity: columnLayout.opacity 0151 0152 anchors { 0153 right: quickSettings.left 0154 left: isOnLargeScreen ? date.right : parent.left 0155 leftMargin: columnLayout.anchors.margins 0156 rightMargin: columnLayout.anchors.margins - quickSettings.leftPadding 0157 } 0158 } 0159 0160 // right sidebar 0161 MobileShell.QuickSettingsPanel { 0162 id: quickSettings 0163 height: quickSettings.contentImplicitHeight + quickSettings.topPadding + quickSettings.bottomPadding 0164 width: intendedWidth 0165 0166 readonly property real intendedWidth: 360 0167 0168 anchors.top: parent.top 0169 anchors.right: parent.right 0170 0171 actionDrawer: root.actionDrawer 0172 fullScreenHeight: root.height 0173 0174 transform: Translate { 0175 id: translate 0176 property real offsetRatio: quickSettings.height / root.height 0177 y: Math.min(root.actionDrawer.offset * offsetRatio - quickSettings.height, 0) 0178 } 0179 } 0180 } 0181 }