diff options
Diffstat (limited to 'src/nfc/qnearfieldtarget_android.cpp')
-rw-r--r-- | src/nfc/qnearfieldtarget_android.cpp | 62 |
1 files changed, 24 insertions, 38 deletions
diff --git a/src/nfc/qnearfieldtarget_android.cpp b/src/nfc/qnearfieldtarget_android.cpp index 50c5c1b3..78da6ac2 100644 --- a/src/nfc/qnearfieldtarget_android.cpp +++ b/src/nfc/qnearfieldtarget_android.cpp @@ -147,25 +147,19 @@ QNearFieldTarget::RequestId NearFieldTarget::readNdefMessages() // Making sure that target is still in range QNearFieldTarget::RequestId requestId(new QNearFieldTarget::RequestIdPrivate); if (!m_intent.isValid()) { - QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, - Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::TargetOutOfRangeError), - Q_ARG(const QNearFieldTarget::RequestId&, requestId)); + reportError(QNearFieldTarget::TargetOutOfRangeError, requestId); return requestId; } // Getting Ndef technology object if (!setTagTechnology({NDEFTECHNOLOGY})) { - QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, - Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::UnsupportedError), - Q_ARG(const QNearFieldTarget::RequestId&, requestId)); + reportError(QNearFieldTarget::UnsupportedError, requestId); return requestId; } // Connect if (!connect()) { - QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, - Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::TargetOutOfRangeError), - Q_ARG(const QNearFieldTarget::RequestId&, requestId)); + reportError(QNearFieldTarget::TargetOutOfRangeError, requestId); return requestId; } @@ -174,9 +168,7 @@ QNearFieldTarget::RequestId NearFieldTarget::readNdefMessages() if (catchJavaExceptions()) ndefMessage = QAndroidJniObject(); if (!ndefMessage.isValid()) { - QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, - Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::NdefReadError), - Q_ARG(const QNearFieldTarget::RequestId&, requestId)); + reportError(QNearFieldTarget::NdefReadError, requestId); return requestId; } @@ -191,13 +183,17 @@ QNearFieldTarget::RequestId NearFieldTarget::readNdefMessages() // Sending QNdefMessage, requestCompleted and exit. QNdefMessage qNdefMessage = QNdefMessage::fromByteArray(ndefMessageQBA); - QMetaObject::invokeMethod(this, "ndefMessageRead", Qt::QueuedConnection, - Q_ARG(const QNdefMessage&, qNdefMessage)); - QMetaObject::invokeMethod(this, "requestCompleted", Qt::QueuedConnection, - Q_ARG(const QNearFieldTarget::RequestId&, requestId)); - QMetaObject::invokeMethod(this, "ndefMessageRead", Qt::QueuedConnection, - Q_ARG(const QNdefMessage&, qNdefMessage), - Q_ARG(const QNearFieldTarget::RequestId&, requestId)); + QMetaObject::invokeMethod(this, [this, qNdefMessage]() { + Q_EMIT this->QNearFieldTarget::ndefMessageRead(qNdefMessage); + }, Qt::QueuedConnection); + QMetaObject::invokeMethod(this, [this, requestId]() { + Q_EMIT this->requestCompleted(requestId); + }, Qt::QueuedConnection); + QMetaObject::invokeMethod(this, [this, qNdefMessage, requestId]() { + //TODO This is an Android specific signal in NearFieldTarget. + // We need to check if it is still necessary. + Q_EMIT this->ndefMessageRead(qNdefMessage, requestId); + }, Qt::QueuedConnection); return requestId; } @@ -245,9 +241,7 @@ QNearFieldTarget::RequestId NearFieldTarget::sendCommand(const QByteArray &comma // Connecting QNearFieldTarget::RequestId requestId = QNearFieldTarget::RequestId(new QNearFieldTarget::RequestIdPrivate()); if (!connect()) { - QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, - Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::TargetOutOfRangeError), - Q_ARG(const QNearFieldTarget::RequestId&, requestId)); + reportError(QNearFieldTarget::TargetOutOfRangeError, requestId); return requestId; } @@ -259,9 +253,7 @@ QNearFieldTarget::RequestId NearFieldTarget::sendCommand(const QByteArray &comma // Writing QAndroidJniObject myNewVal = m_tagTech.callObjectMethod("transceive", "([B)[B", jba); if (catchJavaExceptions()) { - QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, - Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::CommandError), - Q_ARG(const QNearFieldTarget::RequestId&, requestId)); + reportError(QNearFieldTarget::CommandError, requestId); return requestId; } QByteArray result = jbyteArrayToQByteArray(myNewVal.object<jbyteArray>()); @@ -273,8 +265,9 @@ QNearFieldTarget::RequestId NearFieldTarget::sendCommand(const QByteArray &comma // Closing connection disconnect(); // IOException at this point does not matter anymore. } - QMetaObject::invokeMethod(this, "requestCompleted", Qt::QueuedConnection, - Q_ARG(const QNearFieldTarget::RequestId&, requestId)); + QMetaObject::invokeMethod(this, [this, requestId]() { + Q_EMIT this->requestCompleted(requestId); + }, Qt::QueuedConnection); return requestId; } @@ -297,7 +290,6 @@ QNearFieldTarget::RequestId NearFieldTarget::writeNdefMessages(const QList<QNdef QAndroidJniEnvironment env; const char *writeMethod; - QAndroidJniObject tagTechnology; if (!setTagTechnology({NDEFFORMATABLETECHNOLOGY, NDEFTECHNOLOGY})) return QNearFieldTarget::RequestId(); @@ -311,9 +303,7 @@ QNearFieldTarget::RequestId NearFieldTarget::writeNdefMessages(const QList<QNdef // Connecting QNearFieldTarget::RequestId requestId = QNearFieldTarget::RequestId(new QNearFieldTarget::RequestIdPrivate()); if (!connect()) { - QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, - Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::TargetOutOfRangeError), - Q_ARG(const QNearFieldTarget::RequestId&, requestId)); + reportError(QNearFieldTarget::TargetOutOfRangeError, requestId); return requestId; } @@ -324,18 +314,14 @@ QNearFieldTarget::RequestId NearFieldTarget::writeNdefMessages(const QList<QNdef env->SetByteArrayRegion(jba.object<jbyteArray>(), 0, ba.size(), reinterpret_cast<jbyte*>(ba.data())); QAndroidJniObject jmessage = QAndroidJniObject("android/nfc/NdefMessage", "([B)V", jba.object<jbyteArray>()); if (catchJavaExceptions()) { - QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, - Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::UnknownError), - Q_ARG(const QNearFieldTarget::RequestId&, requestId)); + reportError(QNearFieldTarget::UnknownError, requestId); return requestId; } // Writing - tagTechnology.callMethod<void>(writeMethod, "(Landroid/nfc/NdefMessage;)V", jmessage.object<jobject>()); + m_tagTech.callMethod<void>(writeMethod, "(Landroid/nfc/NdefMessage;)V", jmessage.object<jobject>()); if (catchJavaExceptions()) { - QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, - Q_ARG(QNearFieldTarget::Error, QNearFieldTarget::NdefWriteError), - Q_ARG(const QNearFieldTarget::RequestId&, requestId)); + reportError(QNearFieldTarget::NdefWriteError, requestId); return requestId; } |