From 6f6fa9ee929292639a24f2b15c432a41df92610d Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Wed, 1 Mar 2017 09:10:50 +0100 Subject: externaldraganddrop example: add checkbox to control accepting drop DropArea.onEntered can reject the drop - this will provide cursor and color change feedback showing whether dropping is allowed. Change-Id: I2203cda79cf381bbb71724cdcd6aecd8f001d62d Reviewed-by: Shawn Rutledge --- .../externaldraganddrop/DragAndDropTextItem.qml | 46 ++++++++++++---------- .../externaldraganddrop/externaldraganddrop.pro | 3 +- .../externaldraganddrop/externaldraganddrop.qml | 2 +- 3 files changed, 28 insertions(+), 23 deletions(-) (limited to 'examples') diff --git a/examples/quick/externaldraganddrop/DragAndDropTextItem.qml b/examples/quick/externaldraganddrop/DragAndDropTextItem.qml index 7499c83e6d..9858a961c9 100644 --- a/examples/quick/externaldraganddrop/DragAndDropTextItem.qml +++ b/examples/quick/externaldraganddrop/DragAndDropTextItem.qml @@ -49,32 +49,36 @@ ****************************************************************************/ import QtQuick 2.2 +import "../shared" as Examples Rectangle { id: item property string display - color: "#EEE" + property alias dropEnabled: acceptDropCB.checked + color: dropArea.containsDrag ? "#CFC" : "#EEE" + ColorAnimation on color { + id: rejectAnimation + from: "#FCC" + to: "#EEE" + duration: 1000 + } Text { anchors.fill: parent text: item.display wrapMode: Text.WordWrap } DropArea { + id: dropArea anchors.fill: parent keys: ["text/plain"] - onEntered: { - item.color = "#FCC" - } - onExited: { - item.color = "#EEE" + onEntered: if (!acceptDropCB.checked) { + drag.accepted = false + rejectAnimation.start() } - onDropped: { - item.color = "#EEE" - if (drop.hasText) { - if (drop.proposedAction == Qt.MoveAction || drop.proposedAction == Qt.CopyAction) { - item.display = drop.text - drop.acceptProposedAction() - } + onDropped: if (drop.hasText && acceptDropCB.checked) { + if (drop.proposedAction == Qt.MoveAction || drop.proposedAction == Qt.CopyAction) { + item.display = drop.text + drop.acceptProposedAction() } } } @@ -91,12 +95,12 @@ Rectangle { Drag.hotSpot.y: 0 Drag.mimeData: { "text/plain": item.display } Drag.dragType: Drag.Automatic - Drag.onDragStarted: { - } - Drag.onDragFinished: { - if (dropAction == Qt.MoveAction) { - item.display = "" - } - } - } // Item + Drag.onDragFinished: if (dropAction == Qt.MoveAction) item.display = "" + } + Examples.CheckBox { + id: acceptDropCB + anchors.right: parent.right + checked: true + text: "accept drop" + } } diff --git a/examples/quick/externaldraganddrop/externaldraganddrop.pro b/examples/quick/externaldraganddrop/externaldraganddrop.pro index 646781e7d1..0a592a84f3 100644 --- a/examples/quick/externaldraganddrop/externaldraganddrop.pro +++ b/examples/quick/externaldraganddrop/externaldraganddrop.pro @@ -2,9 +2,10 @@ TEMPLATE = app QT += quick qml SOURCES += main.cpp -RESOURCES += externaldraganddrop.qrc +RESOURCES += externaldraganddrop.qrc ../shared/shared.qrc EXAMPLE_FILES = \ + externaldraganddrop.qml \ DragAndDropTextItem.qml target.path = $$[QT_INSTALL_EXAMPLES]/quick/externaldraganddrop diff --git a/examples/quick/externaldraganddrop/externaldraganddrop.qml b/examples/quick/externaldraganddrop/externaldraganddrop.qml index 9c33d1e468..47a76a259a 100644 --- a/examples/quick/externaldraganddrop/externaldraganddrop.qml +++ b/examples/quick/externaldraganddrop/externaldraganddrop.qml @@ -82,8 +82,8 @@ Item { DragAndDropTextItem { Layout.fillWidth: true height: 142 + dropEnabled: false display: "Drag out into other applications." } - } } -- cgit v1.2.3