summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/dms/PLUGINS/LauncherImageExample/LauncherImageExample.qml
blob: 2e85570f249bcd9653f67fddb9a2f1a1e785cb18 (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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import QtQuick
import Quickshell
import qs.Services

QtObject {
    id: root

    property var pluginService: null
    property string trigger: "img"

    signal itemsChanged

    readonly property var images: [
        {
            name: "DankDash",
            imageUrl: "https://danklinux.com/img/dankdash.png",
            comment: "DankMaterialShell Dashboard"
        },
        {
            name: "Control Center",
            imageUrl: "https://danklinux.com/img/cc.png",
            comment: "System Control Center"
        },
        {
            name: "Desktop",
            imageUrl: "https://danklinux.com/img/desktop.png",
            comment: "Desktop Environment"
        },
        {
            name: "Search",
            imageUrl: "https://danklinux.com/img/dsearch.png",
            comment: "Application Search"
        },
        {
            name: "Theme Registry",
            imageUrl: "https://danklinux.com/img/blog/v1.2/themeregistry.png",
            comment: "Theme Registry Browser"
        },
        {
            name: "Monitor Settings",
            imageUrl: "https://danklinux.com/img/blog/v1.2/monitordark.png",
            comment: "Display Configuration"
        }
    ]

    function getItems(query) {
        const lowerQuery = query ? query.toLowerCase().trim() : "";

        if (lowerQuery.length === 0) {
            return images.map(img => ({
                        name: img.name,
                        icon: "material:image",
                        comment: img.comment,
                        action: "view:" + img.imageUrl,
                        categories: ["Image Gallery"],
                        imageUrl: img.imageUrl
                    }));
        }

        return images.filter(img => img.name.toLowerCase().includes(lowerQuery) || img.comment.toLowerCase().includes(lowerQuery)).map(img => ({
                    name: img.name,
                    icon: "material:image",
                    comment: img.comment,
                    action: "view:" + img.imageUrl,
                    categories: ["Image Gallery"],
                    imageUrl: img.imageUrl
                }));
    }

    function executeItem(item) {
        if (!item?.action)
            return;
        const actionParts = item.action.split(":");
        const actionType = actionParts[0];
        const actionData = actionParts.slice(1).join(":");

        if (actionType === "view") {
            if (typeof ToastService !== "undefined") {
                ToastService.showInfo("Image Gallery", "Viewing: " + item.name);
            }
        }
    }

    function getContextMenuActions(item) {
        if (!item)
            return [];
        return [
            {
                icon: "open_in_new",
                text: "Open in Browser",
                action: () => {
                    const url = item.imageUrl || "";
                    if (url) {
                        Qt.openUrlExternally(url);
                    }
                }
            },
            {
                icon: "content_copy",
                text: "Copy URL",
                action: () => {
                    const url = item.imageUrl || "";
                    if (url) {
                        Quickshell.execDetached(["dms", "cl", "copy", url]);
                        if (typeof ToastService !== "undefined") {
                            ToastService.showInfo("Copied", url);
                        }
                    }
                }
            }
        ];
    }
}