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

0001 /*
0002     SPDX-FileCopyrightText: 2014-2017 Eike Hein <hein@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 import QtQuick 2.4
0008 
0009 import org.kde.draganddrop 2.0 as DragDrop
0010 import org.kde.kirigami 2.20 as Kirigami
0011 
0012 DragDrop.DropArea {
0013     id: dropArea
0014 
0015     property Item folderView: null
0016 
0017     function handleDragMove(folderView, pos) {
0018         // Trigger autoscroll.
0019         folderView.scrollLeft = (pos.x < (Kirigami.Units.gridUnit * 3));
0020         folderView.scrollRight = (pos.x > width - (Kirigami.Units.gridUnit * 3));
0021         folderView.scrollUp = (pos.y < (Kirigami.Units.gridUnit * 3));
0022         folderView.scrollDown = (pos.y > height - (Kirigami.Units.gridUnit * 3));
0023 
0024         folderView.handleDragMove(pos.x, pos.y);
0025     }
0026 
0027     function handleDragEnd(folderView) {
0028         // Cancel autoscroll.
0029         folderView.scrollLeft = false;
0030         folderView.scrollRight = false;
0031         folderView.scrollUp = false;
0032         folderView.scrollDown = false;
0033 
0034         folderView.endDragMove();
0035     }
0036 
0037     onDragMove: event => {
0038         // TODO: We should reject drag moves onto file items that don't accept drops
0039         // (cf. QAbstractItemModel::flags() here, but DeclarativeDropArea currently
0040         // is currently incapable of rejecting drag events.
0041 
0042         if (folderView) {
0043             handleDragMove(folderView, mapToItem(folderView, event.x, event.y));
0044         }
0045     }
0046 
0047     onDragLeave: event => {
0048         if (folderView) {
0049             handleDragEnd(folderView);
0050         }
0051     }
0052 
0053     onDrop: event => {
0054         if (folderView) {
0055             handleDragEnd(folderView);
0056 
0057             folderView.drop(folderView, event, mapToItem(folderView, event.x, event.y));
0058         }
0059     }
0060 }