diff --git a/components/mobileshell/qml/actiondrawer/private/ContentContainer.qml b/components/mobileshell/qml/actiondrawer/private/ContentContainer.qml index fb315e74..2e49d606 100644 --- a/components/mobileshell/qml/actiondrawer/private/ContentContainer.qml +++ b/components/mobileshell/qml/actiondrawer/private/ContentContainer.qml @@ -26,6 +26,14 @@ Item { readonly property real maximizedQuickSettingsOffset: contentContainerLoader.maximizedQuickSettingsOffset readonly property bool swipeAreaMoving: swipeAreaBase.moving || swipeAreaPortrait.moving + readonly property bool isConvergence: ShellSettings.Settings.convergenceModeEnabled + readonly property real convergenceFrameThickness: MobileShell.Constants.convergenceWorkspaceFrameThickness + readonly property real convergenceSurfaceTopInset: MobileShell.Constants.topPanelHeight + readonly property real convergenceSurfaceBottomInset: MobileShell.Constants.convergenceDockHeight + convergenceFrameThickness + readonly property real convergenceSurfaceSideInset: 0 + readonly property real convergenceSurfaceWidth: Math.max(0, width - convergenceSurfaceSideInset * 2) + readonly property real convergenceSurfaceHeight: Math.max(0, height - convergenceSurfaceTopInset - convergenceSurfaceBottomInset) + readonly property real convergenceNotificationRightMargin: Math.max(convergenceSurfaceSideInset, width - (convergenceSurfaceSideInset + convergenceSurfaceWidth * 0.5)) Kirigami.Theme.colorSet: Kirigami.Theme.Complementary Kirigami.Theme.inherit: false @@ -109,9 +117,9 @@ Item { opacity: Math.max(0, Math.min(root.brightnessPressedValue, actionDrawer.offsetResistance / root.minimizedQuickSettingsOffset)) anchors { - topMargin: notificationDrawer.height + 1 - leftMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (notificationDrawer.isConvergence ? Kirigami.Units.smallSpacing : 10) - rightMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (notificationDrawer.isConvergence ? parent.width * 0.5 : notificationDrawer.notificationWidget.anchors.rightMargin + Kirigami.Units.gridUnit - notificationDrawer.anchors.leftMargin + 370) + topMargin: notificationDrawer.y + notificationDrawer.height + 1 + leftMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (notificationDrawer.isConvergence ? root.convergenceSurfaceSideInset : 10) + rightMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (notificationDrawer.isConvergence ? root.convergenceNotificationRightMargin : notificationDrawer.notificationWidget.anchors.rightMargin + Kirigami.Units.gridUnit - notificationDrawer.anchors.leftMargin + 370) top: parent.top left: parent.left right: parent.right @@ -164,7 +172,7 @@ Item { NotificationDrawer { id: notificationDrawer - readonly property bool isConvergence: ShellSettings.Settings.convergenceModeEnabled + readonly property bool isConvergence: root.isConvergence swipeArea: swipeAreaPortrait actionDrawer: root.actionDrawer @@ -179,13 +187,13 @@ Item { top: parent.top left: parent.left right: parent.right - topMargin: isConvergence ? Kirigami.Units.smallSpacing : 0 - rightMargin: root.actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (isConvergence ? parent.width * 0.5 : 360) - leftMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (isConvergence ? Kirigami.Units.smallSpacing : notificationDrawer.minWidthHeight * 0.06) + topMargin: isConvergence ? root.convergenceSurfaceTopInset : 0 + rightMargin: root.actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (isConvergence ? root.convergenceNotificationRightMargin : 360) + leftMargin: actionDrawer.mode == MobileShell.ActionDrawer.Portrait ? 0 : (isConvergence ? root.convergenceSurfaceSideInset : notificationDrawer.minWidthHeight * 0.06) } // In convergence, cap the height so it doesn't stretch full-screen - maximumHeight: isConvergence ? root.height * 0.6 : -1 + maximumHeight: isConvergence ? root.convergenceSurfaceHeight * 0.6 : -1 toolButtonsItem: toolButtons } diff --git a/components/mobileshell/qml/actiondrawer/private/LandscapeContentContainer.qml b/components/mobileshell/qml/actiondrawer/private/LandscapeContentContainer.qml index e19c8cbb..3817c54b 100644 --- a/components/mobileshell/qml/actiondrawer/private/LandscapeContentContainer.qml +++ b/components/mobileshell/qml/actiondrawer/private/LandscapeContentContainer.qml @@ -27,6 +27,13 @@ Item { readonly property real minimizedQuickSettingsOffset: height readonly property real maximizedQuickSettingsOffset: height + readonly property bool isConvergence: ShellSettings.Settings.convergenceModeEnabled + readonly property real convergenceFrameThickness: MobileShell.Constants.convergenceWorkspaceFrameThickness + readonly property real convergenceSurfaceTopInset: MobileShell.Constants.topPanelHeight + readonly property real convergenceSurfaceBottomInset: MobileShell.Constants.convergenceDockHeight + convergenceFrameThickness + readonly property real convergenceSurfaceSideInset: 0 + readonly property real convergenceSurfaceWidth: Math.max(0, width - convergenceSurfaceSideInset * 2) + readonly property real convergenceSurfaceHeight: Math.max(0, height - convergenceSurfaceTopInset - convergenceSurfaceBottomInset) readonly property bool isOnLargeScreen: width > quickSettingsPanel.width * 2.5 readonly property real minWidthHeight: Math.min(root.width, root.height) readonly property real opacityValue: Math.max(0, Math.min(1, actionDrawer.offsetResistance / root.minimizedQuickSettingsOffset)) @@ -44,29 +51,31 @@ Item { // right sidebar MobileShell.QuickSettingsPanel { id: quickSettingsPanel - height: quickSettingsPanel.contentImplicitHeight + quickSettingsPanel.topPadding + quickSettingsPanel.bottomPadding - width: intendedWidth + height: Math.min(quickSettingsPanel.contentImplicitHeight + quickSettingsPanel.topPadding + quickSettingsPanel.bottomPadding, quickSettingsPanel.availableHeight) + width: Math.min(intendedWidth, quickSettingsPanel.availableWidth) readonly property real columnWidth: 6 * Kirigami.Units.gridUnit + readonly property real availableWidth: root.isConvergence ? root.convergenceSurfaceWidth : intendedWidth + readonly property real availableHeight: root.isConvergence ? root.convergenceSurfaceHeight : root.height // In convergence mode, use up to 45% of screen width so more // tiles are visible without pagination. readonly property int convergenceColumns: Math.min(6, Math.floor(root.width * 0.45 / columnWidth)) - readonly property int effectiveColumns: ShellSettings.Settings.convergenceModeEnabled + readonly property int effectiveColumns: root.isConvergence ? Math.max(ShellSettings.Settings.quickSettingsColumns, convergenceColumns) : ShellSettings.Settings.quickSettingsColumns readonly property real intendedWidth: (columnWidth * effectiveColumns) + Kirigami.Units.gridUnit - readonly property bool isConvergence: ShellSettings.Settings.convergenceModeEnabled + readonly property bool isConvergence: root.isConvergence property real offsetRatio: (quickSettingsPanel.height + restingTopMargin) / root.height - readonly property real restingTopMargin: isConvergence ? Kirigami.Units.smallSpacing : 0 + readonly property real restingTopMargin: root.isConvergence ? root.convergenceSurfaceTopInset : 0 anchors.topMargin: isConvergence ? restingTopMargin : Math.min(root.actionDrawer.offsetResistance * offsetRatio - quickSettingsPanel.height, 0) anchors.top: parent.top anchors.right: parent.right - anchors.rightMargin: isConvergence ? Kirigami.Units.smallSpacing : 0 + anchors.rightMargin: isConvergence ? root.convergenceSurfaceSideInset : 0 opacity: isConvergence ? Math.max(0, Math.min(1, root.actionDrawer.offset / root.minimizedQuickSettingsOffset)) : 1 actionDrawer: root.actionDrawer - fullScreenHeight: root.height + fullScreenHeight: quickSettingsPanel.availableHeight } } } diff --git a/components/mobileshell/qml/actiondrawer/private/QuickSettingsPanel.qml b/components/mobileshell/qml/actiondrawer/private/QuickSettingsPanel.qml index f6db86e4..528baea7 100644 --- a/components/mobileshell/qml/actiondrawer/private/QuickSettingsPanel.qml +++ b/components/mobileshell/qml/actiondrawer/private/QuickSettingsPanel.qml @@ -33,24 +33,26 @@ MobileShell.BaseItem { * Implicit height of the contents of the panel. */ readonly property real contentImplicitHeight: column.implicitHeight + readonly property bool isConvergence: ShellSettings.Settings.convergenceModeEnabled + readonly property real panelPadding: isConvergence ? Kirigami.Units.smallSpacing : Kirigami.Units.smallSpacing * 4 property alias quickSettings: quickSettingsProxy.contentItem property alias statusBar: statusBarProxy.contentItem readonly property double brightnessPressedValue: quickSettings.brightnessPressedValue - // we need extra padding since the background side border is enabled - topPadding: Kirigami.Units.smallSpacing * 4 - leftPadding: Kirigami.Units.smallSpacing * 4 - rightPadding: Kirigami.Units.smallSpacing * 4 - bottomPadding: Kirigami.Units.smallSpacing * 4 + topPadding: panelPadding + leftPadding: panelPadding + rightPadding: panelPadding + bottomPadding: panelPadding Kirigami.Theme.inherit: false Kirigami.Theme.colorSet: Kirigami.Theme.Window background: MobileShell.PanelBackground { anchors.fill: parent - anchors.margins: Kirigami.Units.largeSpacing - panelType: MobileShell.PanelBackground.PanelType.Base + anchors.margins: root.isConvergence ? 0 : Kirigami.Units.largeSpacing + panelType: root.isConvergence ? MobileShell.PanelBackground.PanelType.Flat : MobileShell.PanelBackground.PanelType.Base + radius: root.isConvergence ? 0 : Kirigami.Units.cornerRadius opacity: brightnessPressedValue Kirigami.Theme.inherit: false