1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-25 14:02:53 -05:00
Files
DankMaterialShell/quickshell/Modules/Plugins/DesktopPluginComponent.qml
2025-12-22 10:39:19 -05:00

68 lines
1.8 KiB
QML

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);
}
}