From 0aa17ae18e70faefb3a32a5d7f802be61345d469 Mon Sep 17 00:00:00 2001 From: Ly-sec Date: Tue, 19 Aug 2025 15:19:05 +0200 Subject: [PATCH] Fix some toasts and notification position --- Modules/Notification/Notification.qml | 11 ++++++++--- Modules/Toast/ToastManager.qml | 20 +++++++++++++++----- Services/BluetoothService.qml | 9 +++++++++ Widgets/NPanel.qml | 4 +++- 4 files changed, 35 insertions(+), 9 deletions(-) diff --git a/Modules/Notification/Notification.qml b/Modules/Notification/Notification.qml index 6d436e6..e18c969 100644 --- a/Modules/Notification/Notification.qml +++ b/Modules/Notification/Notification.qml @@ -32,9 +32,12 @@ Variants { || (Settings.data.notifications.monitors.length === 0)) && (NotificationService.notificationModel.count > 0) : false - anchors.top: true + // Position based on bar location + anchors.top: Settings.data.bar.position === "top" + anchors.bottom: Settings.data.bar.position === "bottom" anchors.right: true - margins.top: (Style.barHeight + Style.marginM) * scaling + margins.top: Settings.data.bar.position === "top" ? (Style.barHeight + Style.marginM) * scaling : 0 + margins.bottom: Settings.data.bar.position === "bottom" ? (Style.barHeight + Style.marginM) * scaling : 0 margins.right: Style.marginM * scaling implicitWidth: 360 * scaling implicitHeight: Math.min(notificationStack.implicitHeight, (NotificationService.maxVisible * 120) * scaling) @@ -57,7 +60,9 @@ Variants { // Main notification container Column { id: notificationStack - anchors.top: parent.top + // Position based on bar location + anchors.top: Settings.data.bar.position === "top" ? parent.top : undefined + anchors.bottom: Settings.data.bar.position === "bottom" ? parent.bottom : undefined anchors.right: parent.right spacing: Style.marginS * scaling width: 360 * scaling diff --git a/Modules/Toast/ToastManager.qml b/Modules/Toast/ToastManager.qml index 74d494a..1eb69ff 100644 --- a/Modules/Toast/ToastManager.qml +++ b/Modules/Toast/ToastManager.qml @@ -17,15 +17,20 @@ Variants { readonly property real scaling: ScalingService.scale(screen) screen: modelData - // Position at top, centered horizontally + // Position based on bar location, like Notification popup does anchors { - top: true + top: Settings.data.bar.position === "top" + bottom: Settings.data.bar.position === "bottom" left: true right: true } + // Set margins based on bar position + margins.top: Settings.data.bar.position === "top" ? (Style.barHeight + Style.marginS) * scaling : 0 + margins.bottom: Settings.data.bar.position === "bottom" ? (Style.barHeight + Style.marginS) * scaling : 0 + // Small height when hidden, appropriate height when visible - implicitHeight: toast.visible ? toast.height + Style.barHeight * scaling + Style.marginS * scaling : 1 + implicitHeight: toast.visible ? toast.height + Style.marginS * scaling : 1 // Transparent background color: Color.transparent @@ -39,8 +44,13 @@ Variants { id: toast scaling: root.scaling - // Position just below where the bar would be - targetY: Style.barHeight * scaling + Style.marginS * scaling + // Simple positioning - margins already account for bar + targetY: Style.marginS * scaling + + // Hidden position based on bar location + hiddenY: Settings.data.bar.position === "top" + ? -toast.height - 20 + : toast.height + 20 Component.onCompleted: { // Register this toast with the service diff --git a/Services/BluetoothService.qml b/Services/BluetoothService.qml index 03c3a2a..b81d6d2 100644 --- a/Services/BluetoothService.qml +++ b/Services/BluetoothService.qml @@ -141,4 +141,13 @@ Singleton { device.trusted = true device.connect() } + + function setBluetoothEnabled(enabled) { + if (!adapter) { + console.warn("BluetoothService: No adapter available") + return + } + + adapter.enabled = enabled + } } diff --git a/Widgets/NPanel.qml b/Widgets/NPanel.qml index 364af00..8b8efe5 100644 --- a/Widgets/NPanel.qml +++ b/Widgets/NPanel.qml @@ -10,7 +10,8 @@ PanelWindow { readonly property real scaling: ScalingService.scale(screen) property bool showOverlay: Settings.data.general.dimDesktop - property int topMargin: Style.barHeight * scaling + property int topMargin: Settings.data.bar.position === "top" ? Style.barHeight * scaling : 0 + property int bottomMargin: Settings.data.bar.position === "bottom" ? Style.barHeight * scaling : 0 // Show dimming if this panel is opened OR if we're in a transition (to prevent flickering) property color overlayColor: (showOverlay && (PanelService.openedPanel === root || isTransitioning)) ? Color.applyOpacity(Color.mShadow, @@ -60,6 +61,7 @@ PanelWindow { anchors.right: true anchors.bottom: true margins.top: topMargin + margins.bottom: bottomMargin MouseArea { anchors.fill: parent