pragma Singleton import QtQuick QtObject { id: manager property bool shellOpen: false property var windowRequests: ({}) property var globals: ({}) signal shellOpened signal shellClosed signal windowRequested(string name, var payload) function openShell() { if (!shellOpen) { console.log("ShellStateManager: openShell"); shellOpen = true; shellOpened(); } } function closeShell() { if (shellOpen) { console.log("ShellStateManager: closeShell"); shellOpen = false; shellClosed(); } } function toggleShell() { console.log("ShellStateManager: toggleShell (isOpen " + shellOpen + ")"); shellOpen ? closeShell() : openShell(); } function requestWindow(name, payload) { console.log("ShellStateManager: requestWindow", name, payload); windowRequests[name] = { payload: payload, timestamp: Date.now() }; windowRequested(name, payload); } function setGlobal(key, value) { globals[key] = value; } function global(key, defaultValue) { return globals.hasOwnProperty(key) ? globals[key] : defaultValue; } }