Files
DeltaruneQuickshell/Shell/ShellStateManager.qml
2026-01-24 14:35:16 +02:00

85 lines
2.3 KiB
QML

pragma Singleton
import QtQuick
import Quickshell.Hyprland
QtObject {
id: manager
property bool shellOpen: false
property bool quickSettingsOpen: false
property var windowRequests: ({})
property var quickSettingsPayload: ({})
property var globals: ({})
signal shellOpened
signal shellClosed
signal quickSettingsOpened
signal quickSettingsClosed
signal windowRequested(string name, var payload)
function openShell() {
if (!shellOpen) {
console.log("ShellStateManager: openShell");
Hyprland.dispatch("submap deltarune");
shellOpen = true;
shellOpened();
}
}
function closeShell() {
if (shellOpen) {
console.log("ShellStateManager: closeShell");
Hyprland.dispatch("submap reset");
if (quickSettingsOpen) {
closeQuickSettings();
}
shellOpen = false;
shellClosed();
}
}
function toggleShell() {
shellOpen ? closeShell() : openShell();
}
function requestWindow(name, payload) {
console.log("ShellStateManager: requestWindow", name, payload);
windowRequests[name] = {
payload: payload,
timestamp: Date.now()
};
windowRequested(name, payload);
}
function openQuickSettings(payload) {
var normalizedPayload = payload || ({});
quickSettingsPayload = normalizedPayload;
console.log("ShellStateManager: openQuickSettings", normalizedPayload);
if (!quickSettingsOpen) {
quickSettingsOpen = true;
quickSettingsOpened();
}
requestWindow("quickSettings", normalizedPayload);
}
function closeQuickSettings() {
if (quickSettingsOpen) {
console.log("ShellStateManager: closeQuickSettings");
quickSettingsOpen = false;
quickSettingsClosed();
}
}
function toggleQuickSettings(payload) {
quickSettingsOpen ? closeQuickSettings() : openQuickSettings(payload);
}
function setGlobal(key, value) {
globals[key] = value;
}
function global(key, defaultValue) {
return globals.hasOwnProperty(key) ? globals[key] : defaultValue;
}
}