forked from Shinonome/dots-hyprland
waffles: popup notifs
This commit is contained in:
+7
-4
@@ -15,6 +15,9 @@ MouseArea {
|
||||
required property var notification
|
||||
property bool expanded: notification.actions.length > 0
|
||||
property string groupExpandControlMessage: ""
|
||||
|
||||
readonly property bool isPopup: notification?.popup ?? false
|
||||
|
||||
signal groupExpandToggle
|
||||
hoverEnabled: true
|
||||
|
||||
@@ -56,8 +59,8 @@ MouseArea {
|
||||
Rectangle {
|
||||
id: contentItem
|
||||
width: parent.width
|
||||
color: Looks.colors.bgPanelBody
|
||||
radius: Looks.radius.medium
|
||||
color: root.isPopup ? Looks.colors.bg0 : Looks.colors.bgPanelBody
|
||||
radius: root.isPopup ? Looks.radius.large : Looks.radius.medium
|
||||
property real padding: 12
|
||||
implicitHeight: notificationContent.implicitHeight + padding * 2
|
||||
implicitWidth: notificationContent.implicitWidth + padding * 2
|
||||
@@ -157,9 +160,9 @@ MouseArea {
|
||||
|
||||
NotificationHeaderButton {
|
||||
Layout.rightMargin: 4
|
||||
opacity: root.containsMouse ? 1 : 0
|
||||
opacity: (root.containsMouse || root.isPopup) ? 1 : 0
|
||||
icon.name: "dismiss"
|
||||
implicitSize: 12
|
||||
implicitSize: 14
|
||||
onClicked: root.dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Hyprland
|
||||
import qs
|
||||
import qs.services
|
||||
import qs.modules.common
|
||||
import qs.modules.common.widgets
|
||||
import qs.modules.waffle.looks
|
||||
import qs.modules.waffle.notificationCenter
|
||||
|
||||
Scope {
|
||||
id: notificationPopup
|
||||
|
||||
PanelWindow {
|
||||
id: root
|
||||
visible: (Notifications.popupList.length > 0) && !GlobalStates.screenLocked
|
||||
screen: Quickshell.screens.find(s => s.name === Hyprland.focusedMonitor?.name) ?? null
|
||||
|
||||
WlrLayershell.namespace: "quickshell:notificationPopup"
|
||||
WlrLayershell.layer: WlrLayer.Overlay
|
||||
exclusiveZone: 0
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
right: true
|
||||
bottom: true
|
||||
}
|
||||
|
||||
mask: Region {
|
||||
item: listview.contentItem
|
||||
}
|
||||
|
||||
color: "transparent"
|
||||
implicitWidth: listview.implicitWidth
|
||||
|
||||
WListView {
|
||||
id: listview
|
||||
anchors {
|
||||
bottom: parent.bottom
|
||||
right: parent.right
|
||||
left: parent.left
|
||||
}
|
||||
leftMargin: 16
|
||||
rightMargin: 16
|
||||
topMargin: 16
|
||||
bottomMargin: 16
|
||||
|
||||
height: Math.min(contentItem.height + topMargin + bottomMargin, parent.height)
|
||||
width: parent.width - Appearance.sizes.elevationMargin * 2
|
||||
|
||||
implicitWidth: 396
|
||||
spacing:12
|
||||
|
||||
model: ScriptModel {
|
||||
values: Notifications.popupList
|
||||
}
|
||||
delegate: WSingleNotification {
|
||||
required property var modelData
|
||||
notification: modelData
|
||||
width: ListView.view.width - ListView.view.leftMargin - ListView.view.rightMargin
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user