diff --git a/Modules/Plugins/PluginSettings.qml b/Modules/Plugins/PluginSettings.qml index 07970b3f..2532fccc 100644 --- a/Modules/Plugins/PluginSettings.qml +++ b/Modules/Plugins/PluginSettings.qml @@ -8,11 +8,12 @@ Item { required property string pluginId property var pluginService: null - default property alias content: settingsColumn.children + default property list content signal settingChanged() property var variants: [] + property alias variantsModel: variantsListModel implicitHeight: hasPermission ? settingsColumn.implicitHeight : errorText.implicitHeight height: implicitHeight @@ -33,8 +34,8 @@ Item { onPluginServiceChanged: { if (pluginService) { loadVariants() - for (let i = 0; i < settingsColumn.children.length; i++) { - const child = settingsColumn.children[i] + for (let i = 0; i < content.length; i++) { + const child = content[i] if (child.loadValue) { child.loadValue() } @@ -42,6 +43,15 @@ Item { } } + onContentChanged: { + for (let i = 0; i < content.length; i++) { + const item = content[i] + if (item instanceof Item) { + item.parent = settingsColumn + } + } + } + Connections { target: pluginService function onPluginDataChanged(changedPluginId) { @@ -57,6 +67,22 @@ Item { return } variants = pluginService.getPluginVariants(pluginId) + syncVariantsToModel() + } + + function syncVariantsToModel() { + variantsListModel.clear() + for (let i = 0; i < variants.length; i++) { + variantsListModel.append(variants[i]) + } + } + + onVariantsChanged: { + syncVariantsToModel() + } + + ListModel { + id: variantsListModel } function createVariant(variantName, variantConfig) { diff --git a/Modules/Settings/PluginsTab.qml b/Modules/Settings/PluginsTab.qml index 0f15db3b..9aa0cf79 100644 --- a/Modules/Settings/PluginsTab.qml +++ b/Modules/Settings/PluginsTab.qml @@ -256,11 +256,9 @@ FocusScope { anchors.bottomMargin: pluginDelegate.isExpanded ? settingsContainer.height : 0 hoverEnabled: true cursorShape: pluginDelegate.hasSettings ? Qt.PointingHandCursor : Qt.ArrowCursor - enabled: !pluginDelegate.isExpanded || !pluginDelegate.hasSettings + enabled: pluginDelegate.hasSettings onClicked: { - if (pluginDelegate.hasSettings) { - pluginsTab.expandedPluginId = pluginsTab.expandedPluginId === pluginDelegate.pluginId ? "" : pluginDelegate.pluginId - } + pluginsTab.expandedPluginId = pluginsTab.expandedPluginId === pluginDelegate.pluginId ? "" : pluginDelegate.pluginId } }