1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-07 22:15:38 -05:00

plugins: support for multiple widgets per-plugin (variants)

This commit is contained in:
bbedward
2025-10-06 12:33:58 -04:00
parent 11a1af89f4
commit 89793d2d62
10 changed files with 676 additions and 14 deletions

View File

@@ -12,13 +12,20 @@ Item {
signal settingChanged()
property var variants: []
implicitHeight: hasPermission ? settingsColumn.implicitHeight : errorText.implicitHeight
height: implicitHeight
readonly property bool hasPermission: pluginService && pluginService.hasPermission ? pluginService.hasPermission(pluginId, "settings_write") : true
Component.onCompleted: {
loadVariants()
}
onPluginServiceChanged: {
if (pluginService) {
loadVariants()
for (let i = 0; i < settingsColumn.children.length; i++) {
const child = settingsColumn.children[i]
if (child.loadValue) {
@@ -28,6 +35,44 @@ Item {
}
}
Connections {
target: pluginService
function onPluginDataChanged(changedPluginId) {
if (changedPluginId === pluginId) {
loadVariants()
}
}
}
function loadVariants() {
if (!pluginService || !pluginId) {
variants = []
return
}
variants = pluginService.getPluginVariants(pluginId)
}
function createVariant(variantName, variantConfig) {
if (!pluginService || !pluginId) {
return null
}
return pluginService.createPluginVariant(pluginId, variantName, variantConfig)
}
function removeVariant(variantId) {
if (!pluginService || !pluginId) {
return
}
pluginService.removePluginVariant(pluginId, variantId)
}
function updateVariant(variantId, variantConfig) {
if (!pluginService || !pluginId) {
return
}
pluginService.updatePluginVariant(pluginId, variantId, variantConfig)
}
function saveValue(key, value) {
if (!pluginService) {
return