Warning, /plasma/plasma-workspace/applets/systemtray/package/contents/ui/ExpanderArrow.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2013 Sebastian Kügler <sebas@kde.org>
0003     SPDX-FileCopyrightText: 2015 Marco Martin <mart@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 import QtQuick 2.15
0009 import QtQuick.Layouts 1.1
0010 import org.kde.plasma.plasmoid 2.0
0011 import org.kde.plasma.core as PlasmaCore
0012 import org.kde.kirigami 2.20 as Kirigami
0013 
0014 PlasmaCore.ToolTipArea {
0015     id: tooltip
0016 
0017     readonly property int arrowAnimationDuration: Kirigami.Units.shortDuration
0018     property bool vertical: Plasmoid.formFactor === PlasmaCore.Types.Vertical
0019     property int iconSize: Kirigami.Units.iconSizes.smallMedium
0020     implicitWidth: iconSize
0021     implicitHeight: iconSize
0022     activeFocusOnTab: true
0023 
0024     Accessible.name: i18n("Expand System Tray")
0025     Accessible.description: i18n("Show all the items in the system tray in a popup")
0026     Accessible.role: Accessible.Button
0027     Accessible.onPressAction: systemTrayState.expanded = !systemTrayState.expanded
0028 
0029     Keys.onPressed: event => {
0030         switch (event.key) {
0031         case Qt.Key_Space:
0032         case Qt.Key_Enter:
0033         case Qt.Key_Return:
0034         case Qt.Key_Select:
0035             systemTrayState.expanded = !systemTrayState.expanded;
0036         }
0037     }
0038 
0039     subText: systemTrayState.expanded ? i18n("Close popup") : i18n("Show hidden icons")
0040 
0041     property bool wasExpanded
0042 
0043     TapHandler {
0044         onPressedChanged: {
0045             if (pressed) {
0046                 tooltip.wasExpanded = systemTrayState.expanded;
0047             }
0048         }
0049         onTapped: {
0050             systemTrayState.expanded = !tooltip.wasExpanded;
0051             expandedRepresentation.hiddenLayout.currentIndex = -1;
0052         }
0053     }
0054 
0055     Kirigami.Icon {
0056         anchors.fill: parent
0057 
0058         rotation: systemTrayState.expanded ? 180 : 0
0059         Behavior on rotation {
0060             RotationAnimation {
0061                 duration: tooltip.arrowAnimationDuration
0062             }
0063         }
0064         opacity: systemTrayState.expanded ? 0 : 1
0065         Behavior on opacity {
0066             NumberAnimation {
0067                 duration: tooltip.arrowAnimationDuration
0068             }
0069         }
0070 
0071         source: {
0072             if (Plasmoid.location === PlasmaCore.Types.TopEdge) {
0073                 return "arrow-down";
0074             } else if (Plasmoid.location === PlasmaCore.Types.LeftEdge) {
0075                 return "arrow-right";
0076             } else if (Plasmoid.location === PlasmaCore.Types.RightEdge) {
0077                 return "arrow-left";
0078             } else {
0079                 return "arrow-up";
0080             }
0081         }
0082     }
0083 
0084     Kirigami.Icon {
0085         anchors.fill: parent
0086 
0087         rotation: systemTrayState.expanded ? 0 : -180
0088         Behavior on rotation {
0089             RotationAnimation {
0090                 duration: tooltip.arrowAnimationDuration
0091             }
0092         }
0093         opacity: systemTrayState.expanded ? 1 : 0
0094         Behavior on opacity {
0095             NumberAnimation {
0096                 duration: tooltip.arrowAnimationDuration
0097             }
0098         }
0099 
0100         source: {
0101             if (Plasmoid.location === PlasmaCore.Types.TopEdge) {
0102                 return "arrow-up";
0103             } else if (Plasmoid.location === PlasmaCore.Types.LeftEdge) {
0104                 return "arrow-left";
0105             } else if (Plasmoid.location === PlasmaCore.Types.RightEdge) {
0106                 return "arrow-right";
0107             } else {
0108                 return "arrow-down";
0109             }
0110         }
0111     }
0112 }