/*SPDX-FileCopyrightText: 2013 AurΓ©lien GΓ’teau <agateau@kde.org>SPDX-FileCopyrightText: 2014-2015 Eike Hein <hein@kde.org>SPDX-FileCopyrightText: 2024 ivan tkachenko <me@ratijas.tk>SPDX-License-Identifier: GPL-2.0-or-later*/pragma Singletonpragma ComponentBehavior: Boundimport QtQuickimport org.kde.plasma.extras as PlasmaExtrasimport "code/tools.js" as ToolsQtObject {id: rootproperty Item visualParentproperty ItemAbstractDelegate delegate// See tools.js for a list of possible membersproperty var actionListreadonly property bool opened: __menu ? (__menu.status !== PlasmaExtras.Menu.Closed) : falseproperty PlasmaExtras.Menu __menusignal actionClicked(string actionId, var actionArgument)signal closed()onActionListChanged: {__refreshMenu();}onOpenedChanged: {if (!opened) {closed();}}function triggerAction(actionId: string, actionArgument: var): void {if (Tools.triggerAction(delegate.baseModel, delegate.index, actionId, actionArgument) === true) {delegate.interactionConcluded()}}function open(x: var, y: var): void {if (!actionList) {return;}if (x !== undefined && y !== undefined) {__menu.open(x, y);} else {__menu.open();}}function __refreshMenu(): void {if (__menu) {__menu.destroy();}if (!actionList) {return;}__menu = contextMenuComponent.createObject(this);__fillMenu(__menu, actionList);}function __fillMenu(menu: PlasmaExtras.Menu, actionItems: var): void {actionItems.forEach(actionItem => {if (actionItem.subActions) {// This is a menuconst submenuItem = contextSubmenuItemComponent.createObject(menu, { actionItem });__fillMenu(submenuItem.submenu, actionItem.subActions);} else {contextMenuItemComponent.createObject(menu, { actionItem });}});}readonly property list<QtObject> __data: [Component {id: contextMenuComponentPlasmaExtras.Menu {visualParent: root.visualParent}},Component {id: contextSubmenuItemComponentPlasmaExtras.MenuItem {id: submenuItemrequired property var actionItemtext: actionItem.text ?? ""icon: actionItem.icon ?? nullreadonly property PlasmaExtras.Menu submenu: PlasmaExtras.Menu {visualParent: submenuItem.action}}},Component {id: contextMenuItemComponentPlasmaExtras.MenuItem {required property var actionItemtext : actionItem.text ?? ""enabled : actionItem.type !== "title" && (actionItem.enabled ?? true)separator : actionItem.type === "separator"section : actionItem.type === "title"icon : actionItem.icon ?? nullcheckable : actionItem.checkable ?? falsechecked : actionItem.checked ?? falseonClicked: {root.triggerAction(actionItem.actionId, actionItem.actionArgument);}}}]}