Warning, /plasma/plasma-mobile/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.15 0008 import org.kde.plasma.configuration 2.0 0009 import QtQuick.Controls 2.15 as QQC2 0010 import QtQuick.Layouts 1.15 0011 0012 import org.kde.newstuff 1.62 as NewStuff 0013 import org.kde.kirigami 2.19 as Kirigami 0014 import org.kde.plasma.core 2.0 as PlasmaCore 0015 import org.kde.kirigamiaddons.labs.mobileform 0.1 as MobileForm 0016 0017 ColumnLayout { 0018 id: root 0019 spacing: 0 0020 0021 property string currentWallpaper: "" 0022 property string containmentPlugin: configDialog.containmentPlugin 0023 signal configurationChanged 0024 0025 //BEGIN functions 0026 function saveConfig() { 0027 if (main.currentItem.saveConfig) { 0028 main.currentItem.saveConfig() 0029 } 0030 for (var key in configDialog.wallpaperConfiguration) { 0031 if (main.currentItem["cfg_"+key] !== undefined) { 0032 configDialog.wallpaperConfiguration[key] = main.currentItem["cfg_"+key] 0033 } 0034 } 0035 configDialog.currentWallpaper = root.currentWallpaper; 0036 configDialog.applyWallpaper() 0037 configDialog.containmentPlugin = root.containmentPlugin 0038 } 0039 //END functions 0040 0041 Kirigami.InlineMessage { 0042 Layout.alignment: Qt.AlignTop 0043 visible: plasmoid.immutable || animating 0044 text: i18nd("plasma_shell_org.kde.plasma.desktop", "Layout changes have been restricted by the system administrator") 0045 showCloseButton: true 0046 Layout.fillWidth: true 0047 Layout.leftMargin: Kirigami.Units.smallSpacing 0048 Layout.rightMargin: Kirigami.Units.smallSpacing 0049 Layout.bottomMargin: Kirigami.Units.smallSpacing * 2 // we need this because ColumnLayout's spacing is 0 0050 } 0051 0052 ColumnLayout { 0053 id: generalConfig 0054 spacing: 0 0055 Layout.alignment: Qt.AlignTop 0056 Layout.fillWidth: true 0057 0058 MobileForm.FormCard { 0059 Layout.fillWidth: true 0060 0061 contentItem: ColumnLayout { 0062 spacing: 0 0063 0064 MobileForm.FormCardHeader { 0065 title: i18n("General") 0066 } 0067 0068 MobileForm.FormComboBoxDelegate { 0069 id: layoutSelectComboBox 0070 enabled: !plasmoid.immutable 0071 text: i18nd("plasma_shell_org.kde.plasma.desktop", "Homescreen Layout") 0072 description: i18n("The homescreen layout to use.") 0073 visible: model.count > 1 // only show if there are multiple plugins 0074 0075 model: configDialog.containmentPluginsConfigModel 0076 textRole: "name" 0077 valueRole: "pluginName" 0078 currentIndex: determineCurrentIndex() 0079 onCurrentIndexChanged: { 0080 root.containmentPlugin = configDialog.containmentPluginsConfigModel.get(currentIndex).pluginName; 0081 } 0082 0083 function determineCurrentIndex() { 0084 for (var i = 0; i < configDialog.containmentPluginsConfigModel.count; ++i) { 0085 var data = configDialog.containmentPluginsConfigModel.get(i); 0086 if (configDialog.containmentPlugin === data.pluginName) { 0087 return i; 0088 } 0089 } 0090 return -1; 0091 } 0092 } 0093 0094 MobileForm.FormDelegateSeparator { above: layoutSelectComboBox; below: wallpaperPluginSelectComboBox } 0095 0096 MobileForm.FormComboBoxDelegate { 0097 id: wallpaperPluginSelectComboBox 0098 text: i18nd("plasma_shell_org.kde.plasma.desktop", "Wallpaper Plugin") 0099 description: i18n("The wallpaper plugin to use.") 0100 0101 model: configDialog.wallpaperConfigModel 0102 textRole: "name" 0103 valueRole: "pluginName" 0104 currentIndex: determineCurrentIndex() 0105 onCurrentIndexChanged: { 0106 var model = configDialog.wallpaperConfigModel.get(currentIndex); 0107 root.currentWallpaper = model.pluginName; 0108 configDialog.currentWallpaper = model.pluginName; 0109 main.sourceFile = model.source; 0110 root.configurationChanged(); 0111 } 0112 0113 function determineCurrentIndex() { 0114 for (var i = 0; i < configDialog.wallpaperConfigModel.count; ++i) { 0115 var data = configDialog.wallpaperConfigModel.get(i); 0116 if (configDialog.currentWallpaper === data.pluginName) { 0117 return i; 0118 } 0119 } 0120 return -1; 0121 } 0122 } 0123 0124 MobileForm.FormDelegateSeparator { above: wallpaperPluginSelectComboBox } 0125 0126 MobileForm.AbstractFormDelegate { 0127 id: wallpaperPluginButton 0128 Layout.fillWidth: true 0129 background: Item {} 0130 0131 contentItem: RowLayout { 0132 QQC2.Label { 0133 Layout.fillWidth: true 0134 text: i18n("Wallpaper Plugins") 0135 } 0136 0137 NewStuff.Button { 0138 configFile: "wallpaperplugin.knsrc" 0139 text: i18nd("plasma_shell_org.kde.plasma.desktop", "Get New Plugins…") 0140 } 0141 } 0142 } 0143 } 0144 } 0145 } 0146 0147 ColumnLayout { 0148 id: switchContainmentWarning 0149 Layout.alignment: Qt.AlignTop 0150 Layout.fillWidth: true 0151 visible: configDialog.containmentPlugin !== root.containmentPlugin 0152 QQC2.Label { 0153 Layout.fillWidth: true 0154 text: i18nd("plasma_shell_org.kde.plasma.desktop", "Layout changes must be applied before other changes can be made") 0155 wrapMode: Text.Wrap 0156 horizontalAlignment: Text.AlignHCenter 0157 } 0158 QQC2.Button { 0159 Layout.alignment: Qt.AlignHCenter 0160 text: i18nd("plasma_shell_org.kde.plasma.desktop", "Apply now") 0161 onClicked: saveConfig() 0162 } 0163 } 0164 0165 Item { 0166 Layout.alignment: Qt.AlignTop 0167 Layout.fillHeight: switchContainmentWarning.visible 0168 visible: switchContainmentWarning.visible 0169 } 0170 0171 Item { 0172 id: emptyConfig 0173 Layout.alignment: Qt.AlignTop 0174 } 0175 0176 QQC2.StackView { 0177 id: main 0178 0179 Layout.alignment: Qt.AlignTop 0180 Layout.fillHeight: true 0181 Layout.maximumHeight: root.height - generalConfig.height - 70 // HACK: wallpaper configs seem to go over the provisioned height 0182 Layout.fillWidth: true 0183 0184 visible: !switchContainmentWarning.visible 0185 0186 // Bug 360862: if wallpaper has no config, sourceFile will be "" 0187 // so we wouldn't load emptyConfig and break all over the place 0188 // hence set it to some random value initially 0189 property string sourceFile: "tbd" 0190 onSourceFileChanged: { 0191 if (sourceFile) { 0192 var props = {} 0193 0194 var wallpaperConfig = configDialog.wallpaperConfiguration 0195 for (var key in wallpaperConfig) { 0196 props["cfg_" + key] = wallpaperConfig[key] 0197 } 0198 0199 var newItem = replace(Qt.resolvedUrl(sourceFile), props) 0200 0201 for (var key in wallpaperConfig) { 0202 var changedSignal = newItem["cfg_" + key + "Changed"] 0203 if (changedSignal) { 0204 changedSignal.connect(root.configurationChanged) 0205 } 0206 } 0207 } else { 0208 replace(emptyConfig) 0209 } 0210 } 0211 } 0212 } 0213