9#include <QtCore/QJniEnvironment>
10#include <QtCore/QJniObject>
11#include <QtCore/private/qjnihelpers_p.h>
13#ifndef QT_NO_CLIPBOARD
15using namespace QtJniTypes;
26 clipboardManager->emitChanged(QClipboard::Clipboard);
31 m_clipboardManager = QtClipboardManager::construct(QtAndroidPrivate::context(),
32 reinterpret_cast<jlong>(
this));
43 QMimeData *data =
new QMimeData;
44 if (m_clipboardManager.callMethod<jboolean>(
"hasClipboardText")) {
45 data->setText(m_clipboardManager.callMethod<QString>(
"getClipboardText"));
47 if (m_clipboardManager.callMethod<jboolean>(
"hasClipboardHtml")) {
48 data->setHtml(m_clipboardManager.callMethod<QString>(
"getClipboardHtml"));
50 if (m_clipboardManager.callMethod<jboolean>(
"hasClipboardUri")) {
51 auto uris = m_clipboardManager.callMethod<QString[]>(
"getClipboardUris");
54 for (
const QString &uri : uris)
65 Q_ASSERT(supportsMode(mode));
68 data = getClipboardMimeData();
74 m_clipboardManager.callMethod<
void>(
"clearClipData");
80 auto context = QtAndroidPrivate::context();
81 if (data->hasUrls()) {
82 QList<QUrl> urls = data->urls();
83 for (
const auto &u : std::as_const(urls))
84 m_clipboardManager.callMethod<
void>(
"setClipboardUri", context, u.toEncoded());
85 }
else if (data->hasHtml()) {
86 m_clipboardManager.callMethod<
void>(
"setClipboardHtml",
87 context, data->text(), data->html());
88 }
else if (data->hasText()) {
89 m_clipboardManager.callMethod<
void>(
"setClipboardText", context, data->text());
99 if (data && supportsMode(mode))
100 setClipboardMimeData(data);
107 return QClipboard::Clipboard == mode;
112 bool success = env.registerNativeMethods(Traits<QtClipboardManager>::className(),
113 { Q_JNI_NATIVE_SCOPED_METHOD(onClipboardDataChanged, QAndroidPlatformClipboard) });
115 qCritical() <<
"QtClipboardManager: registerNativeMethods() failed";