diff --git a/desktoppackage/contents/configuration/AppletConfiguration.qml b/desktoppackage/contents/configuration/AppletConfiguration.qml --- a/desktoppackage/contents/configuration/AppletConfiguration.qml +++ b/desktoppackage/contents/configuration/AppletConfiguration.qml @@ -71,14 +71,6 @@ } } - function restoreConfig() { - for (var key in plasmoid.configuration) { - if (main.currentItem["cfg_"+key] !== undefined) { - main.currentItem["cfg_"+key] = plasmoid.configuration[key] - } - } - } - function settingValueChanged() { applyButton.enabled = true; } @@ -224,17 +216,32 @@ if (!sourceFile) { return; } -// print("Source file changed in flickable" + sourceFile); - replace(Qt.resolvedUrl(sourceFile)); - root.restoreConfig() - for (var prop in currentItem) { - if (prop.indexOf("cfg_") === 0 && prop.indexOf("Changed") > 0 ) { - currentItem[prop].connect(root.settingValueChanged) + + var props = {} + + var plasmoidConfig = plasmoid.configuration + for (var key in plasmoidConfig) { + props["cfg_" + key] = plasmoid.configuration[key] + } + + var newItem = push({ + item: Qt.resolvedUrl(sourceFile), + replace: true, + properties: props + }) + + for (var key in plasmoidConfig) { + var changedSignal = newItem["cfg_" + key + "Changed"] + if (changedSignal) { + changedSignal.connect(root.settingValueChanged) } } - if (currentItem["configurationChanged"]) { - currentItem["configurationChanged"].connect(root.settingValueChanged) + + var configurationChangedSignal = newItem.configurationChanged + if (configurationChangedSignal) { + configurationChangedSignal.connect(root.settingValueChanged) } + applyButton.enabled = false; scroll.flickableItem.contentY = 0 /* diff --git a/desktoppackage/contents/configuration/ConfigurationContainmentAppearance.qml b/desktoppackage/contents/configuration/ConfigurationContainmentAppearance.qml --- a/desktoppackage/contents/configuration/ConfigurationContainmentAppearance.qml +++ b/desktoppackage/contents/configuration/ConfigurationContainmentAppearance.qml @@ -43,18 +43,6 @@ configDialog.applyWallpaper() configDialog.containmentPlugin = root.containmentPlugin } - - function restoreConfig() { - for (var key in configDialog.wallpaperConfiguration) { - if (main.currentItem["cfg_"+key] !== undefined) { - main.currentItem["cfg_"+key] = configDialog.wallpaperConfiguration[key] - } - - if (main.currentItem["cfg_"+key+"Changed"]) { - main.currentItem["cfg_"+key+"Changed"].connect(root.configurationChanged) - } - } - } //END functions Component.onCompleted: { @@ -130,7 +118,6 @@ root.currentWallpaper = model.pluginName main.sourceFile = model.source configDialog.currentWallpaper = model.pluginName - root.restoreConfig() root.configurationChanged() } } @@ -149,10 +136,28 @@ } property string sourceFile onSourceFileChanged: { - if (sourceFile != "") { - replace(Qt.resolvedUrl(sourceFile)) + if (sourceFile) { + var props = {} + + var wallpaperConfig = configDialog.wallpaperConfiguration + for (var key in wallpaperConfig) { + props["cfg_" + key] = wallpaperConfig[key] + } + + var newItem = push({ + item: Qt.resolvedUrl(sourceFile), + replace: true, + properties: props + }) + + for (var key in wallpaperConfig) { + var changedSignal = newItem["cfg_" + key + "Changed"] + if (changedSignal) { + changedSignal.connect(root.configurationChanged) + } + } } else { - replace(emptyConfig); + replace(emptyConfig) } } }