Warning, /plasma/plasma-desktop/applets/kicker/package/contents/ui/SideBarItem.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2013-2015 Eike Hein <hein@kde.org>
0003
0004 SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.15
0008
0009 import org.kde.kquickcontrolsaddons 2.0
0010 import org.kde.plasma.core as PlasmaCore
0011 import org.kde.kirigami 2.20 as Kirigami
0012 import org.kde.plasma.plasmoid 2.0
0013
0014 import "code/tools.js" as Tools
0015
0016 Item {
0017 id: item
0018
0019 width: root.width
0020 height: root.width
0021
0022 signal actionTriggered(string actionId, variant actionArgument)
0023 signal aboutToShowActionMenu(variant actionMenu)
0024
0025 property bool hasActionList: ((model.favoriteId !== null)
0026 || (("hasActionList" in model) && (model.hasActionList !== null)))
0027 property int itemIndex: model.index
0028
0029 onAboutToShowActionMenu: actionMenu => {
0030 const actionList = (model.hasActionList !== null) ? model.actionList : [];
0031 Tools.fillActionMenu(i18n, actionMenu, actionList, repeater.model, model.favoriteId);
0032 }
0033
0034 onActionTriggered: (actionId, actionArgument) => {
0035 if (Tools.triggerAction(repeater.model, model.index, actionId, actionArgument) === true) {
0036 kicker.expanded = false;
0037 }
0038 }
0039
0040 function openActionMenu(visualParent, x, y) {
0041 aboutToShowActionMenu(actionMenu);
0042 actionMenu.visualParent = visualParent;
0043 actionMenu.open(x, y);
0044 }
0045
0046 ActionMenu {
0047 id: actionMenu
0048
0049 onActionClicked: {
0050 actionTriggered(actionId, actionArgument);
0051 }
0052 }
0053
0054 Kirigami.Icon {
0055 anchors.fill: parent
0056
0057 active: toolTip.containsMouse
0058
0059 source: model.decoration
0060 }
0061
0062 MouseEventListener {
0063 id: listener
0064
0065 anchors {
0066 fill: parent
0067 leftMargin: - sideBar.margins.left
0068 rightMargin: - sideBar.margins.right
0069 }
0070
0071 enabled: (item.parent && !item.parent.animating)
0072
0073 property bool pressed: false
0074 property int pressX: -1
0075 property int pressY: -1
0076
0077 hoverEnabled: true
0078 acceptedButtons: Qt.LeftButton | Qt.RightButton
0079
0080 onPressed: {
0081 if (mouse.buttons & Qt.RightButton) {
0082 if (item.hasActionList) {
0083 item.openActionMenu(item, mouse.x, mouse.y);
0084 }
0085 } else {
0086 pressed = true;
0087 pressX = mouse.x;
0088 pressY = mouse.y;
0089 }
0090 }
0091
0092 onReleased: {
0093 if (pressed) {
0094 repeater.model.trigger(index, "", null);
0095 kicker.expanded = false;
0096 }
0097
0098 pressed = false;
0099 pressX = -1;
0100 pressY = -1;
0101 }
0102
0103 onContainsMouseChanged: {
0104 if (!containsMouse) {
0105 pressed = false;
0106 pressX = -1;
0107 pressY = -1;
0108 }
0109 }
0110
0111 onPositionChanged: {
0112 if (pressX !== -1 && dragHelper.isDrag(pressX, pressY, mouse.x, mouse.y)) {
0113 kicker.dragSource = item;
0114 dragHelper.startDrag(kicker, model.url, model.icon);
0115 pressed = false;
0116 pressX = -1;
0117 pressY = -1;
0118
0119 return;
0120 }
0121 }
0122 }
0123
0124 PlasmaCore.ToolTipArea {
0125 id: toolTip
0126
0127 property string text: model.display
0128
0129 anchors {
0130 fill: parent
0131 leftMargin: - sideBar.margins.left
0132 rightMargin: - sideBar.margins.right
0133 }
0134
0135 interactive: false
0136 location: (((Plasmoid.location === PlasmaCore.Types.RightEdge)
0137 || (Qt.application.layoutDirection === Qt.RightToLeft))
0138 ? PlasmaCore.Types.RightEdge : PlasmaCore.Types.LeftEdge)
0139
0140 mainItem: toolTipDelegate
0141 }
0142 }