utilities/toggles: add dnd

Closes #80
Closes #426
This commit is contained in:
2 * r + 2 * t 2025-09-15 23:32:07 +10:00
parent dbb1b08e58
commit 172c1a047d
2 changed files with 36 additions and 4 deletions

View file

@ -78,6 +78,12 @@ StyledRect {
checked: GameMode.enabled checked: GameMode.enabled
onClicked: GameMode.enabled = !GameMode.enabled onClicked: GameMode.enabled = !GameMode.enabled
} }
Toggle {
icon: "notifications_off"
checked: Notifs.dnd
onClicked: Notifs.dnd = !Notifs.dnd
}
} }
} }

View file

@ -13,6 +13,15 @@ Singleton {
readonly property list<Notif> list: [] readonly property list<Notif> list: []
readonly property list<Notif> popups: list.filter(n => n.popup) readonly property list<Notif> popups: list.filter(n => n.popup)
property alias dnd: props.dnd
PersistentProperties {
id: props
property bool dnd
reloadableId: "notifs"
}
NotificationServer { NotificationServer {
id: server id: server
@ -27,10 +36,11 @@ Singleton {
onNotification: notif => { onNotification: notif => {
notif.tracked = true; notif.tracked = true;
root.list.push(notifComp.createObject(root, { if (!props.dnd)
popup: true, root.list.push(notifComp.createObject(root, {
notification: notif popup: true,
})); notification: notif
}));
} }
} }
@ -50,6 +60,22 @@ Singleton {
for (const notif of root.list) for (const notif of root.list)
notif.popup = false; notif.popup = false;
} }
function isDndEnabled(): bool {
return props.dnd;
}
function toggleDnd(): void {
props.dnd = !props.dnd;
}
function enableDnd(): void {
props.dnd = true;
}
function disableDnd(): void {
props.dnd = false;
}
} }
component Notif: QtObject { component Notif: QtObject {