Warning, /plasma/plasma-desktop/applets/kimpanel/package/contents/ui/ActionMenu.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2013 Aurélien Gâteau <agateau@kde.org>
0003     SPDX-FileCopyrightText: 2014 Eike Hein <hein@kde.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 import QtQuick 2.0
0009 
0010 import org.kde.plasma.core as PlasmaCore
0011 import org.kde.plasma.extras 2.0 as PlasmaExtras
0012 import org.kde.plasma.plasmoid 2.0
0013 
0014 Item {
0015     id: root
0016 
0017     property QtObject menu
0018     property Item visualParent
0019     property variant actionList
0020 
0021     signal actionClicked(string actionId)
0022 
0023     onActionListChanged: refreshMenu();
0024 
0025     function open() {
0026         menu.openRelative();
0027     }
0028 
0029     function refreshMenu() {
0030         if (menu) {
0031             menu.destroy();
0032         }
0033 
0034         menu = contextMenuComponent.createObject(root);
0035 
0036         if (!actionList || actionList.length === 0) {
0037             var item = emptyMenuItemComponent.createObject(menu);
0038 
0039             menu.addMenuItem(item);
0040 
0041             return;
0042         }
0043 
0044         actionList.forEach(function(actionItem) {
0045             var item = contextMenuItemComponent.createObject(menu, {
0046                 "actionItem": actionItem,
0047             });
0048 
0049             menu.addMenuItem(item);
0050         });
0051     }
0052 
0053     Component {
0054         id: contextMenuComponent
0055 
0056         PlasmaExtras.Menu {
0057             visualParent: root.visualParent
0058 
0059             placement: {
0060                 if (Plasmoid.location === PlasmaCore.Types.LeftEdge) {
0061                     return PlasmaExtras.Menu.RightPosedTopAlignedPopup;
0062                 } else if (Plasmoid.location === PlasmaCore.Types.TopEdge) {
0063                     return PlasmaExtras.Menu.BottomPosedLeftAlignedPopup;
0064                 } else if (Plasmoid.location === PlasmaCore.Types.RightEdge) {
0065                     return PlasmaExtras.Menu.LeftPosedTopAlignedPopup;
0066                 } else {
0067                     return PlasmaExtras.Menu.TopPosedLeftAlignedPopup;
0068                 }
0069             }
0070         }
0071     }
0072 
0073     Component {
0074         id: contextMenuItemComponent
0075 
0076         PlasmaExtras.MenuItem {
0077             property variant actionItem
0078 
0079             text: actionItem.text ? actionItem.text : ""
0080             icon: actionItem.icon ? actionItem.icon : null
0081             checkable: actionItem.hint === "checked"
0082             checked: actionItem.hint === "checked"
0083 
0084             onClicked: {
0085                 actionClicked(actionItem.actionId);
0086             }
0087         }
0088     }
0089 
0090     Component {
0091         id: emptyMenuItemComponent
0092         PlasmaExtras.MenuItem {
0093             text: i18n("(Empty)")
0094             enabled: false
0095         }
0096     }
0097 }