5#ifndef QANDROIDPLATFORMDRAG_H
6#define QANDROIDPLATFORMDRAG_H
8#include <qpa/qplatformdrag.h>
9#include <QtCore/qjnitypes.h>
10#include <QtCore/qjniobject.h>
11#include <QtCore/qjniarray.h>
12#include <QtCore/qstringlist.h>
16#if QT_CONFIG(draganddrop)
20Q_DECLARE_JNI_CLASS(QtDragManager,
"org/qtproject/qt/android/QtDragManager");
26class QAndroidPlatformDrag :
public QPlatformDrag
29 QAndroidPlatformDrag();
30 ~QAndroidPlatformDrag();
32 Qt::DropAction drag(QDrag *drag) override;
33 void cancelDrag() override;
34 bool ownsDragObject()
const override;
36 static bool registerNatives(QJniEnvironment &env);
39 static bool handleNativeDragEvent(jlong nativePointer,
int viewId,
int action,
float x,
40 float y,
const QStringList &mimeTypes,
41 const QStringList &clipData,
bool result);
42 bool deliverDragEvent(
int viewId,
int action,
float x,
float y,
43 const QStringList &mimeTypes,
const QStringList &clipData,
46 static QString shareableUri(
const QString &value);
48 static jboolean onDragEvent(JNIEnv *env, jobject obj, jlong nativePointer,
49 jint viewId, jint action, jfloat x, jfloat y,
50 QJniArray<QString> mimeTypes, QJniArray<QString> clipData,
52 Q_DECLARE_JNI_NATIVE_METHOD_IN_CURRENT_SCOPE(onDragEvent)
54 QtJniTypes::QtDragManager m_dragManager =
nullptr;
55 std::unique_ptr<QMimeData> m_externalMimeData;
56 Qt::DropAction m_executedAction = Qt::IgnoreAction;
57 QEventLoop *m_dragLoop =
nullptr;
60 static QAndroidPlatformDrag *s_currentDrag;