Warning, /plasma/latte-dock/plasmoid/package/contents/ui/previews/ToolTipDelegate2.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: 2014 Martin Gräßlin <mgraesslin@kde.org>
0004     SPDX-FileCopyrightText: 2016 Kai Uwe Broulik <kde@privat.broulik.de>
0005     SPDX-FileCopyrightText: 2017 Roman Gilg <subdiff@gmail.com>
0006 
0007     SPDX-License-Identifier: LGPL-2.0-or-later
0008 */
0009 
0010 import QtQuick 2.6
0011 import QtQuick.Layouts 1.1
0012 import QtGraphicalEffects 1.0
0013 import QtQml.Models 2.2
0014 
0015 import org.kde.draganddrop 2.0
0016 
0017 import org.kde.plasma.core 2.0 as PlasmaCore
0018 import org.kde.plasma.components 2.0 as PlasmaComponents
0019 import org.kde.plasma.extras 2.0 as PlasmaExtras
0020 import org.kde.kquickcontrolsaddons 2.0 as KQuickControlsAddons
0021 
0022 import org.kde.taskmanager 0.1 as TaskManager
0023 
0024 PlasmaExtras.ScrollArea {
0025     id: mainToolTip
0026     property Item parentTask: null
0027     property var rootIndex: []
0028 
0029     property string appName
0030     property int pidParent
0031     property bool isGroup
0032     property bool hideCloseButtons
0033 
0034     property var windows: []
0035     readonly property bool isWin: windows !== undefined
0036 
0037     property variant icon
0038     property url launcherUrl
0039     property bool isLauncher
0040     property bool isMinimizedParent
0041 
0042     // Needed for generateSubtext()
0043     property string displayParent
0044     property string genericName
0045     property var virtualDesktopParent
0046     property bool isOnAllVirtualDesktopsParent
0047     property var activitiesParent
0048     //
0049     readonly property bool isVerticalPanel: plasmoid.formFactor === PlasmaCore.Types.Vertical
0050 
0051     Layout.minimumWidth: contentItem.width
0052     Layout.maximumWidth: Layout.minimumWidth
0053 
0054     Layout.minimumHeight: contentItem.height
0055     Layout.maximumHeight: Layout.minimumHeight
0056 
0057     LayoutMirroring.enabled: Qt.application.layoutDirection === Qt.RightToLeft
0058     LayoutMirroring.childrenInherit: true
0059 
0060     property int textWidth: theme.mSize(theme.defaultFont).width * 20
0061 
0062     verticalScrollBarPolicy: Qt.ScrollBarAlwaysOff
0063     horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
0064 
0065     Component.onCompleted: {
0066         flickableItem.interactive = Qt.binding(function() {
0067             return isVerticalPanel ? contentItem.height > viewport.height : contentItem.width > viewport.width
0068         });
0069     }
0070 
0071     Item{
0072         width: contentItem.width
0073         height: contentItem.height
0074 
0075         //! DropArea
0076         DropArea {
0077             id: dropMainArea
0078             anchors.fill: parent
0079             enabled: isGroup
0080             preventStealing: true
0081 
0082             property QtObject currentWindow
0083 
0084             onDragLeave: {
0085                 windowsPreviewDlg.hide(9.9);
0086             }
0087 
0088             onDragMove: {
0089                 var current = mainToolTip.instanceAtPos(event.x, event.y);
0090 
0091                 if (current && currentWindow !== current && current.submodelIndex) {
0092                     currentWindow = current;
0093                     tasksModel.requestActivate(current.submodelIndex);
0094                 }
0095             }
0096         } //! DropArea
0097 
0098         Loader {
0099             id: contentItem
0100             active: !isLauncher
0101             sourceComponent: Grid {
0102                 rows: !isVerticalPanel
0103                 columns: isVerticalPanel
0104                 flow: isVerticalPanel ? Grid.TopToBottom : Grid.LeftToRight
0105                 spacing: units.largeSpacing
0106 
0107                 readonly property bool hasVisibleDescription: {
0108                     for (var i=0; i<children.length; ++i) {
0109                         var child = children[i];
0110 
0111                         if (child && child.descriptionIsVisible) {
0112                             return true;
0113                         }
0114                     }
0115 
0116                     return false;
0117                 }
0118 
0119                 Repeater {
0120                     id: groupRepeater
0121                     model: DelegateModel {
0122                         model: isGroup ? tasksModel : 1
0123                         rootIndex: mainToolTip.rootIndex
0124 
0125                         delegate: ToolTipInstance {
0126                             submodelIndex: isGroup ? tasksModel.makeModelIndex(mainToolTip.rootIndex.row, index) : mainToolTip.rootIndex
0127                         }
0128                     }
0129                 }
0130             }
0131         } //! Loader
0132     } //! Item
0133 
0134     function instanceAtPos(x, y){
0135         var previewInstances = isGroup ? contentItem.children[0].children : contentItem.children;
0136         var instancesLength = previewInstances.length;
0137 
0138         for(var i=0; i<instancesLength; ++i){
0139             var instance = previewInstances[i];
0140             var choords = contentItem.mapFromItem(instance,0, 0);
0141 
0142             if(choords.y < 0)
0143                 choords.y = 0;
0144             if(choords.x < 0)
0145                 choords.x = 0;
0146 
0147             if( (x>=choords.x) && (x<=choords.x+instance.width)
0148                     && (y>=choords.y) && (y<=choords.y+instance.height)){
0149                 return instance;
0150             }
0151         }
0152         return null;
0153     }
0154 }
0155 
0156