Warning, /plasma/plasma-workspace/applets/systemtray/package/contents/ui/SystemTrayState.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2020 Konrad Materka <materka@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 import QtQuick 2.12 0008 import org.kde.plasma.core as PlasmaCore 0009 import org.kde.plasma.plasmoid 2.0 0010 0011 //This object contains state of the SystemTray, mainly related to the 'expanded' state 0012 QtObject { 0013 //true if System Tray is 'expanded'. It may be when: 0014 // - there is an active applet or 0015 // - 'Status and Notification' with hidden items is shown 0016 property bool expanded: false 0017 //set when there is an applet selected 0018 property Item activeApplet 0019 0020 //allow expanded change only when activated at least once 0021 //this is to suppress expanded state change during Plasma startup 0022 property bool acceptExpandedChange: false 0023 0024 // These properties allow us to keep track of where the expanded applet 0025 // was and is on the panel, allowing PlasmoidPopupContainer.qml to animate 0026 // depending on their locations. 0027 property int oldVisualIndex: -1 0028 property int newVisualIndex: -1 0029 0030 function setActiveApplet(applet, visualIndex) { 0031 if (visualIndex === undefined) { 0032 oldVisualIndex = -1 0033 newVisualIndex = -1 0034 } else { 0035 oldVisualIndex = (activeApplet && activeApplet.status === PlasmaCore.Types.PassiveStatus) ? 9999 : newVisualIndex 0036 newVisualIndex = visualIndex 0037 } 0038 0039 const oldApplet = activeApplet 0040 if (applet && !applet.preferredRepresentation) { 0041 applet.expanded = true; 0042 } 0043 if (!applet || !applet.preferredRepresentation) { 0044 activeApplet = applet; 0045 } 0046 0047 if (oldApplet && oldApplet !== applet) { 0048 oldApplet.expanded = false 0049 } 0050 0051 if (applet && !applet.preferredRepresentation) { 0052 expanded = true 0053 } 0054 } 0055 0056 onExpandedChanged: { 0057 if (expanded) { 0058 Plasmoid.status = PlasmaCore.Types.RequiresAttentionStatus 0059 } else { 0060 Plasmoid.status = PlasmaCore.Types.PassiveStatus; 0061 if (activeApplet) { 0062 // if not expanded we don't have an active applet anymore 0063 activeApplet.expanded = false 0064 activeApplet = null 0065 } 0066 } 0067 acceptExpandedChange = false 0068 root.expanded = expanded 0069 } 0070 0071 //listen on SystemTray AppletInterface signals 0072 property Connections plasmoidConnections: Connections { 0073 target: Plasmoid 0074 //emitted when activation is requested, for example by using a global keyboard shortcut 0075 function onActivated() { 0076 acceptExpandedChange = true 0077 } 0078 } 0079 0080 property Connections rootConnections: Connections { 0081 function onExpandedChanged() { 0082 if (acceptExpandedChange) { 0083 expanded = root.expanded 0084 } else { 0085 root.expanded = expanded 0086 } 0087 } 0088 } 0089 0090 property Connections activeAppletConnections: Connections { 0091 target: activeApplet && activeApplet 0092 0093 function onExpandedChanged() { 0094 if (activeApplet && !activeApplet.expanded) { 0095 expanded = false 0096 } 0097 } 0098 } 0099 0100 }