summaryrefslogtreecommitdiff
path: root/status-apps.js
blob: 7fa3acf24457f4cb0cf9e805d5b877be54b91982 (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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*
<span class="statusbar-app" id="app-test">
    <img class="statusbar-app-icon" src="defaultapp.svg">
</span>
 */

WindowManager._.updateAppbar = () => {
    let apps = WindowManager.stack.map((w) => {
        let pkg = w.id.split("-app-")[1];
        if (fs.existsSync("./data/user/Applications/" + pkg + ".aap") && fs.existsSync("./data/user/Applications/" + pkg + ".aap/AlicornApp.yml")) {
            try {
                let app = YAML.parse(fs.readFileSync("./data/user/Applications/" + pkg + ".aap/AlicornApp.yml", "utf-8"));
                if (fs.existsSync("./data/user/Applications/" + pkg + ".aap/AlicornApp.svg")) {
                    return {
                        package: $('<div>').text(pkg).html(),
                        name: $('<div>').text(app.name).html(),
                        icon: "./data/user/Applications/" + $('<div>').text(pkg).html() + ".aap/AlicornApp.svg",
                        window: w
                    };
                } else if (fs.existsSync("./data/user/Applications/" + pkg + ".aap/AlicornApp.png")) {
                    return { package: $('<div>').text(pkg).html(), name: $('<div>').text(app.name).html(), icon: "./data/user/Applications/" + $('<div>').text(pkg).html() + ".aap/AlicornApp.png", window: w };
                } else {
                    return { package: $('<div>').text(pkg).html(), name: $('<div>').text(app.name).html(), icon: "./defaultapp.svg", window: w };
                }
            } catch (e) {
                return { package: $('<div>').text(pkg).html(), name: $('<div>').text(pkg).html(), icon: "./defaultapp.svg", window: w };
            }
        } else {
            return { package: $('<div>').text(pkg).html(), name: $('<div>').text(pkg).html(), icon: "./defaultapp.svg", window: w };
        }
    }).sort((a, b) => a.name.localeCompare(b.name));

    html = "";
    for (let app of apps) {
        classes = ["statusbar-app"];

        if (!app.window.classList.contains("unfocused")) {
            classes.push("focused");
        }

        if (app.window.classList.contains("minimized")) {
            classes.push("minimized");
        }

        html += `<span class="${classes.join(' ')}" id="app-${app.package}">
                    <img class="statusbar-app-icon" src="${app.icon}">
                </span>`
    }

    document.getElementById("statusbar-apps").innerHTML = html;

    for (let app of apps) {
        let item = document.getElementById(`app-${app.package}`);

        item.onclick = () => {
            if (item.classList.contains("minimized")) {
                WindowManager.unminimize(app.window);
                WindowManager.bringToFront(app.window);
            } else if (item.classList.contains("focused")) {
                WindowManager.minimize(app.window);
            } else {
                WindowManager.bringToFront(app.window);
            }
        }

        item.onmouseover = () => {
            if (app.window.classList.contains("loading")) {
                if (item.classList.contains("minimized")) {
                    WindowManager.showTooltip(item, app.name + "|Starting, minimized", true);
                } else {
                    WindowManager.showTooltip(item, app.name + "|Starting", true);
                }
            } else {
                if (item.classList.contains("minimized")) {
                    WindowManager.showTooltip(item, app.name + "|Minimized", true);
                } else {
                    WindowManager.showTooltip(item, app.name, true);
                }
            }
        }

        item.onmouseleave = () => {
            WindowManager.hideTooltip();
        }
    }
}

WindowManager._.updateAppbar();