Warning, /plasma/plasma-bigscreen/shell/contents/configuration/ConfigurationContainmentAppearance.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2013 Marco Martin <mart@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 import QtQuick 2.0
0008 import org.kde.plasma.configuration 2.0
0009 import QtQuick.Controls 2.3 as QtControls
0010 import QtQuick.Layouts 1.1
0011 
0012 import org.kde.kirigami 2.5 as Kirigami
0013 
0014 ColumnLayout {
0015     id: root
0016 
0017     property int formAlignment: wallpaperComboBox.Kirigami.ScenePosition.x - root.Kirigami.ScenePosition.x + (units.largeSpacing/2)
0018     property string currentWallpaper: ""
0019     signal configurationChanged
0020 
0021 //BEGIN functions
0022     function saveConfig() {
0023         if (main.currentItem.saveConfig) {
0024             main.currentItem.saveConfig()
0025         }
0026         for (var key in configDialog.wallpaperConfiguration) {
0027             if (main.currentItem["cfg_"+key] !== undefined) {
0028                 configDialog.wallpaperConfiguration[key] = main.currentItem["cfg_"+key]
0029             }
0030         }
0031         configDialog.currentWallpaper = root.currentWallpaper;
0032         configDialog.applyWallpaper()
0033     }
0034 //END functions
0035 
0036     Component.onCompleted: {
0037         for (var i = 0; i < configDialog.wallpaperConfigModel.count; ++i) {
0038             var data = configDialog.wallpaperConfigModel.get(i);
0039             if (configDialog.currentWallpaper == data.pluginName) {
0040                 wallpaperComboBox.currentIndex = i
0041                 wallpaperComboBox.activated(i);
0042                 break;
0043             }
0044         }
0045     }
0046 
0047     Kirigami.InlineMessage {
0048         visible: plasmoid.immutable || animating
0049         text: i18nd("plasma_shell_org.kde.plasma.desktop", "Layout cannot be changed while widgets are locked")
0050         showCloseButton: true
0051         Layout.fillWidth: true
0052         Layout.leftMargin: Kirigami.Units.smallSpacing
0053         Layout.rightMargin: Kirigami.Units.smallSpacing
0054     }
0055 
0056     Kirigami.FormLayout {
0057         Layout.fillWidth: true
0058         RowLayout {
0059             Layout.fillWidth: true
0060             Kirigami.FormData.label: i18nd("plasma_shell_org.kde.plasma.desktop", "Wallpaper Type:")
0061             QtControls.ComboBox {
0062                 id: wallpaperComboBox
0063                 Layout.preferredWidth: Math.max(implicitWidth, pluginComboBox.implicitWidth)
0064                 model: configDialog.wallpaperConfigModel
0065                 width: theme.mSize(theme.defaultFont).width * 24
0066                 textRole: "name"
0067                 onActivated: {
0068                     var model = configDialog.wallpaperConfigModel.get(currentIndex)
0069                     root.currentWallpaper = model.pluginName
0070                     configDialog.currentWallpaper = model.pluginName
0071                     main.sourceFile = model.source
0072                     root.configurationChanged()
0073                 }
0074             }
0075             // TODO Add "Get new plugins.." button when KNS is mobile friendly
0076         }
0077     }
0078 
0079     Item {
0080         id: emptyConfig
0081     }
0082 
0083     QtControls.StackView {
0084         id: main
0085 
0086         Layout.fillHeight: true;
0087         Layout.fillWidth: true;
0088 
0089         // Bug 360862: if wallpaper has no config, sourceFile will be ""
0090         // so we wouldn't load emptyConfig and break all over the place
0091         // hence set it to some random value initially
0092         property string sourceFile: "tbd"
0093         onSourceFileChanged: {
0094             if (sourceFile) {
0095                 var props = {}
0096 
0097                 var wallpaperConfig = configDialog.wallpaperConfiguration
0098                 for (var key in wallpaperConfig) {
0099                     props["cfg_" + key] = wallpaperConfig[key]
0100                 }
0101 
0102                 var newItem = replace(Qt.resolvedUrl(sourceFile), props)
0103 
0104                 for (var key in wallpaperConfig) {
0105                     var changedSignal = newItem["cfg_" + key + "Changed"]
0106                     if (changedSignal) {
0107                         changedSignal.connect(root.configurationChanged)
0108                     }
0109                 }
0110             } else {
0111                 replace(emptyConfig)
0112             }
0113         }
0114     }
0115 }