More optims and renaming
This commit is contained in:
parent
d2563db5a0
commit
269b2765cd
7 changed files with 78 additions and 82 deletions
|
|
@ -18,8 +18,8 @@ Variants {
|
||||||
required property ShellScreen modelData
|
required property ShellScreen modelData
|
||||||
readonly property real scaling: ScalingService.scale(modelData)
|
readonly property real scaling: ScalingService.scale(modelData)
|
||||||
|
|
||||||
active: modelData ? (Settings.data.bar.monitors.includes(modelData.name)
|
active: Settings.isLoaded && modelData ? (Settings.data.bar.monitors.includes(modelData.name)
|
||||||
|| (Settings.data.bar.monitors.length === 0)) : false
|
|| (Settings.data.bar.monitors.length === 0)) : false
|
||||||
|
|
||||||
sourceComponent: PanelWindow {
|
sourceComponent: PanelWindow {
|
||||||
screen: modelData
|
screen: modelData
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ Variants {
|
||||||
required property ShellScreen modelData
|
required property ShellScreen modelData
|
||||||
readonly property real scaling: ScalingService.scale(modelData)
|
readonly property real scaling: ScalingService.scale(modelData)
|
||||||
|
|
||||||
active: modelData ? Settings.data.dock.monitors.includes(modelData.name) : false
|
active: Settings.isLoaded && modelData ? Settings.data.dock.monitors.includes(modelData.name) : false
|
||||||
|
|
||||||
sourceComponent: PanelWindow {
|
sourceComponent: PanelWindow {
|
||||||
id: dockWindow
|
id: dockWindow
|
||||||
|
|
|
||||||
|
|
@ -25,9 +25,10 @@ Variants {
|
||||||
property var removingNotifications: ({})
|
property var removingNotifications: ({})
|
||||||
|
|
||||||
// If no notification display activated in settings, then show them all
|
// If no notification display activated in settings, then show them all
|
||||||
active: modelData ? (Settings.data.notifications.monitors.includes(modelData.name)
|
active: Settings.isLoaded && modelData ? (Settings.data.notifications.monitors.includes(modelData.name)
|
||||||
|| (Settings.data.notifications.monitors.length === 0))
|
|| (Settings.data.notifications.monitors.length === 0)) : false
|
||||||
&& (NotificationService.notificationModel.count > 0) : false
|
|
||||||
|
visible: (NotificationService.notificationModel.count > 0)
|
||||||
|
|
||||||
sourceComponent: PanelWindow {
|
sourceComponent: PanelWindow {
|
||||||
screen: modelData
|
screen: modelData
|
||||||
|
|
|
||||||
|
|
@ -1,70 +0,0 @@
|
||||||
import QtQuick
|
|
||||||
import QtQuick.Controls
|
|
||||||
import Quickshell
|
|
||||||
import Quickshell.Wayland
|
|
||||||
import qs.Commons
|
|
||||||
import qs.Services
|
|
||||||
import qs.Widgets
|
|
||||||
|
|
||||||
// ToastManager creates toast overlays on each screen
|
|
||||||
Variants {
|
|
||||||
model: Quickshell.screens
|
|
||||||
|
|
||||||
delegate: PanelWindow {
|
|
||||||
id: root
|
|
||||||
|
|
||||||
required property ShellScreen modelData
|
|
||||||
readonly property real scaling: ScalingService.scale(screen)
|
|
||||||
screen: modelData
|
|
||||||
|
|
||||||
// Only show on screens that have notifications enabled
|
|
||||||
visible: modelData ? (Settings.data.notifications.monitors.includes(modelData.name)
|
|
||||||
|| (Settings.data.notifications.monitors.length === 0)) : false
|
|
||||||
|
|
||||||
// Position based on bar location, like Notification popup does
|
|
||||||
anchors {
|
|
||||||
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.marginS * scaling : 1
|
|
||||||
|
|
||||||
// Transparent background
|
|
||||||
color: Color.transparent
|
|
||||||
|
|
||||||
// High layer to appear above other panels
|
|
||||||
//WlrLayershell.layer: WlrLayer.Overlay
|
|
||||||
WlrLayershell.keyboardFocus: WlrKeyboardFocus.None
|
|
||||||
exclusionMode: PanelWindow.ExclusionMode.Ignore
|
|
||||||
|
|
||||||
NToast {
|
|
||||||
id: toast
|
|
||||||
scaling: root.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: {
|
|
||||||
// Only register toasts for screens that have notifications enabled
|
|
||||||
if (modelData ? (Settings.data.notifications.monitors.includes(modelData.name)
|
|
||||||
|| (Settings.data.notifications.monitors.length === 0)) : false) {
|
|
||||||
// Register this toast with the service
|
|
||||||
ToastService.allToasts.push(toast)
|
|
||||||
|
|
||||||
// Connect dismissal signal
|
|
||||||
toast.dismissed.connect(ToastService.onToastDismissed)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
68
Modules/Toast/ToastOverlay.qml
Normal file
68
Modules/Toast/ToastOverlay.qml
Normal file
|
|
@ -0,0 +1,68 @@
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
import Quickshell
|
||||||
|
import Quickshell.Wayland
|
||||||
|
import qs.Commons
|
||||||
|
import qs.Services
|
||||||
|
import qs.Widgets
|
||||||
|
|
||||||
|
Variants {
|
||||||
|
model: Quickshell.screens
|
||||||
|
|
||||||
|
delegate: Loader {
|
||||||
|
required property ShellScreen modelData
|
||||||
|
readonly property real scaling: ScalingService.scale(modelData)
|
||||||
|
|
||||||
|
// Only show on screens that have notifications enabled
|
||||||
|
active: Settings.isLoaded && modelData ? (Settings.data.notifications.monitors.includes(modelData.name)
|
||||||
|
|| (Settings.data.notifications.monitors.length === 0)) : false
|
||||||
|
|
||||||
|
sourceComponent: PanelWindow {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
screen: modelData
|
||||||
|
|
||||||
|
// Position based on bar location, like Notification popup does
|
||||||
|
anchors {
|
||||||
|
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.marginS * scaling : 1
|
||||||
|
|
||||||
|
// Transparent background
|
||||||
|
color: Color.transparent
|
||||||
|
|
||||||
|
// High layer to appear above other panels
|
||||||
|
//WlrLayershell.layer: WlrLayer.Overlay
|
||||||
|
WlrLayershell.keyboardFocus: WlrKeyboardFocus.None
|
||||||
|
exclusionMode: PanelWindow.ExclusionMode.Ignore
|
||||||
|
|
||||||
|
NToast {
|
||||||
|
id: toast
|
||||||
|
scaling: 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
|
||||||
|
ToastService.allToasts.push(toast)
|
||||||
|
|
||||||
|
// Connect dismissal signal
|
||||||
|
toast.dismissed.connect(ToastService.onToastDismissed)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -12,7 +12,7 @@ Singleton {
|
||||||
property var messageQueue: []
|
property var messageQueue: []
|
||||||
property bool isShowingToast: false
|
property bool isShowingToast: false
|
||||||
|
|
||||||
// Reference to all toast instances (set by ToastManager)
|
// Reference to all toast instances (set by ToastOverlay)
|
||||||
property var allToasts: []
|
property var allToasts: []
|
||||||
|
|
||||||
// Properties for command checking
|
// Properties for command checking
|
||||||
|
|
@ -197,6 +197,7 @@ Singleton {
|
||||||
toast.type = toastData.type
|
toast.type = toastData.type
|
||||||
toast.persistent = toastData.persistent
|
toast.persistent = toastData.persistent
|
||||||
toast.duration = toastData.duration
|
toast.duration = toastData.duration
|
||||||
|
|
||||||
toast.show()
|
toast.show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -236,8 +237,4 @@ Singleton {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.onCompleted: {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ ShellRoot {
|
||||||
id: lockScreen
|
id: lockScreen
|
||||||
}
|
}
|
||||||
|
|
||||||
ToastManager {}
|
ToastOverlay {}
|
||||||
|
|
||||||
IPCManager {}
|
IPCManager {}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue