Build the Panama Hyprland desktop
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
// The message tray inside the date menu: everything that has arrived, newest
|
||||
// first, grouped by app, scrolling once it outgrows `maxHeight`.
|
||||
|
||||
import QtQuick
|
||||
import qs.config
|
||||
import qs.services
|
||||
import qs.modules.quicksettings
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
property int maxHeight: 420
|
||||
|
||||
implicitHeight: Notifs.hasNotifications ? list.implicitHeight : empty.implicitHeight
|
||||
|
||||
// Which app groups are collapsed, keyed by app name. Kept here rather than
|
||||
// on the group itself because Notifs.groups is rebuilt from scratch on
|
||||
// every change to history, which destroys and recreates the delegates.
|
||||
property var collapsedApps: ({})
|
||||
|
||||
function toggleApp(app: string): void {
|
||||
// Reassigned rather than mutated: a property holding a JS object only
|
||||
// re-evaluates bindings when the reference itself changes.
|
||||
const next = Object.assign({}, root.collapsedApps);
|
||||
if (next[app])
|
||||
delete next[app];
|
||||
else
|
||||
next[app] = true;
|
||||
root.collapsedApps = next;
|
||||
}
|
||||
|
||||
// Called when the panel closes, so it always reopens fully expanded.
|
||||
function reset(): void {
|
||||
root.collapsedApps = ({});
|
||||
}
|
||||
|
||||
Item {
|
||||
id: empty
|
||||
anchors.fill: parent
|
||||
implicitHeight: 132
|
||||
visible: !Notifs.hasNotifications
|
||||
|
||||
Text {
|
||||
anchors.centerIn: parent
|
||||
text: Notifs.doNotDisturb ? "Do Not Disturb is on" : "No notifications"
|
||||
color: Theme.fgMuted
|
||||
font.family: Theme.fontFamily
|
||||
font.pixelSize: Theme.fontSize
|
||||
}
|
||||
}
|
||||
|
||||
ScrollColumn {
|
||||
id: list
|
||||
anchors.fill: parent
|
||||
maxHeight: root.maxHeight
|
||||
spacing: Theme.itemSpacing
|
||||
visible: Notifs.hasNotifications
|
||||
|
||||
Repeater {
|
||||
model: Notifs.groups
|
||||
|
||||
NotificationGroup {
|
||||
required property var modelData
|
||||
|
||||
width: list.width
|
||||
group: modelData
|
||||
expanded: !root.collapsedApps[modelData.app]
|
||||
onToggled: root.toggleApp(modelData.app)
|
||||
onCleared: Notifs.dismissApp(modelData.app)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user