summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Plugins/DesktopPluginComponent.qml
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Plugins/DesktopPluginComponent.qml')
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Plugins/DesktopPluginComponent.qml67
1 files changed, 67 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Plugins/DesktopPluginComponent.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Plugins/DesktopPluginComponent.qml
new file mode 100644
index 0000000..1fd7ab8
--- /dev/null
+++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Plugins/DesktopPluginComponent.qml
@@ -0,0 +1,67 @@
+import QtQuick
+import qs.Common
+
+Item {
+ id: root
+
+ property var pluginService: null
+ property string pluginId: ""
+ property string instanceId: ""
+ property var instanceData: null
+
+ property real widgetWidth: 200
+ property real widgetHeight: 200
+ property real minWidth: 100
+ property real minHeight: 100
+
+ readonly property bool isInstance: instanceId !== "" && instanceData !== null
+ readonly property var instanceConfig: instanceData?.config ?? {}
+
+ property var pluginData: isInstance ? instanceConfig : _globalPluginData
+ property var _globalPluginData: ({})
+
+ Component.onCompleted: loadPluginData()
+ onPluginServiceChanged: loadPluginData()
+ onPluginIdChanged: loadPluginData()
+ onInstanceDataChanged: {
+ if (isInstance)
+ Qt.callLater(() => {
+ pluginData = instanceConfig;
+ });
+ }
+
+ Connections {
+ target: pluginService
+ enabled: pluginService !== null
+
+ function onPluginDataChanged(changedPluginId) {
+ if (changedPluginId !== pluginId)
+ return;
+ loadPluginData();
+ }
+ }
+
+ function loadPluginData() {
+ if (!pluginService || !pluginId) {
+ _globalPluginData = {};
+ return;
+ }
+ if (isInstance) {
+ pluginData = instanceConfig;
+ return;
+ }
+ _globalPluginData = SettingsData.getPluginSettingsForPlugin(pluginId);
+ }
+
+ function getData(key, defaultValue) {
+ if (!pluginService || !pluginId)
+ return defaultValue;
+ return pluginService.loadPluginData(pluginId, key, defaultValue);
+ }
+
+ function setData(key, value) {
+ if (!pluginService || !pluginId)
+ return;
+ pluginService.savePluginData(pluginId, key, value);
+ }
+}