summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/dms/Modules/Plugins/DesktopPluginComponent.qml
diff options
context:
space:
mode:
authorNippy <nippy@rp1.hu>2026-05-08 19:50:49 +0200
committerNippy <nippy@rp1.hu>2026-05-08 19:50:49 +0200
commit3462bcc46ecf74f576ea4397f16492c16bd75b10 (patch)
treec5ab7aef4498647e057bda8d49c11e5f9dda74c9 /raveos-hyprland-theme/theme-data/dms/Modules/Plugins/DesktopPluginComponent.qml
parent56616f693b4f263cbf0d47da43b67424efa6022d (diff)
downloadRaveOS-PKGBUILD-3462bcc46ecf74f576ea4397f16492c16bd75b10.tar.gz
RaveOS-PKGBUILD-3462bcc46ecf74f576ea4397f16492c16bd75b10.zip
raveos update
Diffstat (limited to 'raveos-hyprland-theme/theme-data/dms/Modules/Plugins/DesktopPluginComponent.qml')
-rw-r--r--raveos-hyprland-theme/theme-data/dms/Modules/Plugins/DesktopPluginComponent.qml67
1 files changed, 67 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/dms/Modules/Plugins/DesktopPluginComponent.qml b/raveos-hyprland-theme/theme-data/dms/Modules/Plugins/DesktopPluginComponent.qml
new file mode 100644
index 0000000..1fd7ab8
--- /dev/null
+++ b/raveos-hyprland-theme/theme-data/dms/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);
+ }
+}