Warning, /plasma/plasma-sdk/plasmoidviewer/qmlpackages/shell/contents/configuration/ConfigurationAppletPage.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * SPDX-FileCopyrightText: 2020 Nicolas Fella <nicolas.fella@gmx.de>
0003 *
0004 * SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.0
0008
0009 import org.kde.kirigami 2.10 as Kirigami
0010 import org.kde.plasma.plasmoid 2.0
0011
0012 Kirigami.ScrollablePage {
0013 id: root
0014
0015 title: configItem.name
0016
0017 required property var configItem
0018
0019 signal settingValueChanged()
0020
0021 function saveConfig() {
0022 for (let key in Plasmoid.configuration) {
0023 if (loader.item["cfg_" + key] != undefined) {
0024 Plasmoid.configuration[key] = loader.item["cfg_" + key]
0025 }
0026 }
0027
0028 // For ConfigurationContainmentActions.qml
0029 if (loader.item.hasOwnProperty("saveConfig")) {
0030 loader.item.saveConfig()
0031 }
0032 }
0033
0034 implicitHeight: loader.height
0035
0036 Loader {
0037 id: loader
0038 width: parent.width
0039 // HACK the height of the loader is based on the implicitHeight of the content.
0040 // Unfortunately not all content items have a sensible implicitHeight.
0041 // If it is zero fall back to the height of its children
0042 // Also make it at least as high as the page itself. Some existing configs assume they fill the whole space
0043 // TODO KF6 clean this up by making all configs based on SimpleKCM/ScrollViewKCM/GridViewKCM
0044 height: Math.max(root.availableHeight, item.implicitHeight ? item.implicitHeight : item.childrenRect.height)
0045
0046 Component.onCompleted: {
0047 const plasmoidConfig = Plasmoid.configuration
0048
0049 const props = {}
0050 for (let key in plasmoidConfig) {
0051 props["cfg_" + key] = Plasmoid.configuration[key]
0052 }
0053
0054 setSource(configItem.source, props)
0055
0056 for (let key in plasmoidConfig) {
0057 const changedSignal = item["cfg_" + key + "Changed"]
0058 if (changedSignal) {
0059 changedSignal.connect(root.settingValueChanged)
0060 }
0061 }
0062
0063 const configurationChangedSignal = item.configurationChanged
0064 if (configurationChangedSignal) {
0065 configurationChangedSignal.connect(root.settingValueChanged)
0066 }
0067 }
0068 }
0069 }