Warning, /plasma/plasma-mobile/shell/contents/views/Desktop.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * SPDX-FileCopyrightText: 2014 Aaron Seigo <aseigo@kde.org> 0003 * SPDX-FileCopyrightText: 2012 Marco Martin <notmart@gmail.com> 0004 * 0005 * SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 import QtQuick 2.15 0009 0010 import org.kde.plasma.core as PlasmaCore 0011 import org.kde.plasma.shell 2.0 as Shell 0012 0013 import org.kde.kquickcontrolsaddons 2.0 0014 import org.kde.kirigami 2.20 as Kirigami 0015 0016 Rectangle { 0017 id: root 0018 0019 property Item containment 0020 0021 color: (containment && containment.backgroundHints == PlasmaCore.Types.NoBackground) ? "transparent" : Kirigami.Theme.textColor 0022 0023 function toggleWidgetExplorer(containment) { 0024 console.log("Widget Explorer toggled"); 0025 if (widgetExplorerStack.source != "") { 0026 widgetExplorerStack.source = ""; 0027 } else { 0028 widgetExplorerStack.setSource(desktop.fileFromPackage("explorer", "WidgetExplorer.qml"), {"containment": containment, "containmentInterface": root.containment}) 0029 } 0030 } 0031 0032 onContainmentChanged: { 0033 if (containment == null) { 0034 return; 0035 } 0036 0037 containment.parent = root; 0038 containment.visible = true; 0039 containment.anchors.fill = root; 0040 } 0041 0042 // This is taken from plasma-desktop's shell package, try to keep it in sync 0043 // Handles taking accent color from wallpaper 0044 Loader { 0045 id: wallpaperColors 0046 0047 active: desktop.usedInAccentColor && root.containment && root.containment.wallpaper 0048 asynchronous: true 0049 0050 sourceComponent: Kirigami.ImageColors { 0051 id: imageColors 0052 source: root.containment.wallpaper 0053 0054 readonly property color backgroundColor: Kirigami.Theme.backgroundColor 0055 readonly property color textColor: Kirigami.Theme.textColor 0056 property color colorFromPlugin: "transparent" 0057 0058 Kirigami.Theme.inherit: false 0059 Kirigami.Theme.backgroundColor: backgroundColor 0060 Kirigami.Theme.textColor: textColor 0061 0062 onBackgroundColorChanged: Qt.callLater(update) 0063 onTextColorChanged: Qt.callLater(update) 0064 0065 property Binding colorBinding: Binding { 0066 target: desktop 0067 property: "accentColor" 0068 value: { 0069 if (!Qt.colorEqual(imageColors.colorFromPlugin, "transparent")) { 0070 return imageColors.colorFromPlugin; 0071 } 0072 if (imageColors.palette.length === 0) { 0073 return "transparent"; 0074 } 0075 return imageColors.dominant; 0076 } 0077 when: desktop.usedInAccentColor // Without this, accentColor may still be updated after usedInAccentColor becomes false 0078 } 0079 0080 property Connections repaintConnection: Connections { 0081 target: root.containment.wallpaper 0082 function onRepaintNeeded(color) { 0083 imageColors.colorFromPlugin = color; 0084 0085 if (Qt.colorEqual(color, "transparent")) { 0086 imageColors.update(); 0087 } 0088 } 0089 } 0090 } 0091 0092 onLoaded: item.update() 0093 } 0094 0095 Loader { 0096 id: widgetExplorerStack 0097 z: 99 0098 asynchronous: true 0099 y: containment ? containment.availableScreenRect.y : 0 0100 height: containment ? containment.availableScreenRect.height : parent.height 0101 width: parent.width 0102 0103 onLoaded: { 0104 if (widgetExplorerStack.item) { 0105 item.closed.connect(function() { 0106 widgetExplorerStack.source = "" 0107 }); 0108 0109 item.topPanelHeight = containment.availableScreenRect.y 0110 item.bottomPanelHeight = root.height - (containment.availableScreenRect.height + containment.availableScreenRect.y) 0111 0112 item.leftPanelWidth = containment.availableScreenRect.x 0113 item.rightPanelWidth = root.width - (containment.availableScreenRect.width + containment.availableScreenRect.x) 0114 } 0115 } 0116 } 0117 }