summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/dms/Common/TrayMenuManager.qml
blob: 560d757121698e6c1fb50c4461062c2549ca7c9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
pragma Singleton

import Quickshell
import QtQuick

Singleton {
    id: root

    property var activeTrayMenus: ({})

    function registerMenu(screenName, menu) {
        if (!screenName || !menu) return
        const newMenus = Object.assign({}, activeTrayMenus)
        newMenus[screenName] = menu
        activeTrayMenus = newMenus
    }

    function unregisterMenu(screenName) {
        if (!screenName) return
        const newMenus = Object.assign({}, activeTrayMenus)
        delete newMenus[screenName]
        activeTrayMenus = newMenus
    }

    function closeAllMenus() {
        for (const screenName in activeTrayMenus) {
            const menu = activeTrayMenus[screenName]
            if (!menu) continue
            if (typeof menu.close === "function") {
                menu.close()
            } else if (menu.showMenu !== undefined) {
                menu.showMenu = false
            }
        }
    }
}