summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/ControlCenter/Components/DragDropDetailHost.qml
blob: 4a7ff19f07f3c9ea0a4c9d358e101fae92f6e4b3 (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
import QtQuick
import qs.Common
import qs.Modules.ControlCenter.Details

Item {
    id: root

    property string expandedSection: ""
    property var expandedWidgetData: null

    height: active ? 250 : 0
    visible: active

    readonly property bool active: expandedSection !== ""

    Loader {
        anchors.fill: parent
        anchors.topMargin: Theme.spacingS
        sourceComponent: {
            if (!root.active)
                return null;

            if (expandedSection.startsWith("diskUsage_")) {
                return diskUsageDetailComponent;
            }

            switch (expandedSection) {
            case "wifi":
                return networkDetailComponent;
            case "bluetooth":
                return bluetoothDetailComponent;
            case "audioOutput":
                return audioOutputDetailComponent;
            case "audioInput":
                return audioInputDetailComponent;
            case "battery":
                return batteryDetailComponent;
            default:
                return null;
            }
        }
    }

    Component {
        id: networkDetailComponent
        NetworkDetail {}
    }

    Component {
        id: bluetoothDetailComponent
        BluetoothDetail {}
    }

    Component {
        id: audioOutputDetailComponent
        AudioOutputDetail {}
    }

    Component {
        id: audioInputDetailComponent
        AudioInputDetail {}
    }

    Component {
        id: batteryDetailComponent
        BatteryDetail {}
    }

    Component {
        id: diskUsageDetailComponent
        DiskUsageDetail {
            currentMountPath: root.expandedWidgetData?.mountPath || "/"
            instanceId: root.expandedWidgetData?.instanceId || ""

            onMountPathChanged: newMountPath => {
                if (root.expandedWidgetData && root.expandedWidgetData.id === "diskUsage") {
                    const widgets = SettingsData.controlCenterWidgets || [];
                    const newWidgets = widgets.map(w => {
                        if (w.id === "diskUsage" && w.instanceId === root.expandedWidgetData.instanceId) {
                            const updatedWidget = Object.assign({}, w);
                            updatedWidget.mountPath = newMountPath;
                            return updatedWidget;
                        }
                        return w;
                    });
                    SettingsData.set("controlCenterWidgets", newWidgets);
                }
            }
        }
    }
}