summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/android/androidjniclipboard.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-05-07 13:07:34 +0200
committerLiang Qi <liang.qi@qt.io>2017-05-07 13:08:18 +0200
commitd1ea4813458b383e66ce4df69d1833b8b6a279c4 (patch)
tree3bdc16da993e5de56b669e6774fb0748075ddd90 /src/plugins/platforms/android/androidjniclipboard.cpp
parent1c87d4e1a1d0e1972f6dc85e55ea9be8a42797ba (diff)
parent0b1ec78c2d4871afcc89d5b046926b88f0819a7c (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: src/network/access/qnetworkreply.cpp tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp Change-Id: Iadf766269454087e69fb216fc3857d85b0ddfaad
Diffstat (limited to 'src/plugins/platforms/android/androidjniclipboard.cpp')
-rw-r--r--src/plugins/platforms/android/androidjniclipboard.cpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/plugins/platforms/android/androidjniclipboard.cpp b/src/plugins/platforms/android/androidjniclipboard.cpp
index 17ff0e0bbb..833996403c 100644
--- a/src/plugins/platforms/android/androidjniclipboard.cpp
+++ b/src/plugins/platforms/android/androidjniclipboard.cpp
@@ -38,7 +38,6 @@
****************************************************************************/
#include "androidjniclipboard.h"
-#include "androidjnimain.h"
#include <QtCore/private/qjni_p.h>
QT_BEGIN_NAMESPACE
@@ -46,10 +45,23 @@ QT_BEGIN_NAMESPACE
using namespace QtAndroid;
namespace QtAndroidClipboard
{
- void setClipboardListener(QAndroidPlatformClipboard *listener)
+ QAndroidPlatformClipboard *m_manager = nullptr;
+
+ static char const *const QtNativeClassName = "org/qtproject/qt5/android/QtNative";
+ static JNINativeMethod methods[] = {
+ {"onClipboardDataChanged", "()V", (void *)onClipboardDataChanged}
+ };
+
+ void setClipboardManager(QAndroidPlatformClipboard *manager)
{
- Q_UNUSED(listener);
+ m_manager = manager;
QJNIObjectPrivate::callStaticMethod<void>(applicationClass(), "registerClipboardManager");
+ jclass appClass = QtAndroid::applicationClass();
+ QJNIEnvironmentPrivate env;
+ if (env->RegisterNatives(appClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) {
+ __android_log_print(ANDROID_LOG_FATAL,"Qt", "RegisterNatives failed");
+ return;
+ }
}
void setClipboardText(const QString &text)
@@ -73,6 +85,11 @@ namespace QtAndroidClipboard
"()Ljava/lang/String;");
return text.toString();
}
+
+ void onClipboardDataChanged(JNIEnv */*env*/, jobject /*thiz*/)
+ {
+ m_manager->emitChanged(QClipboard::Clipboard);
+ }
}
QT_END_NAMESPACE