From 47d54961c7684f75b845dbd3c3ebc276a9d94de8 Mon Sep 17 00:00:00 2001 From: Ivan Solovev Date: Tue, 25 May 2021 17:13:34 +0200 Subject: [PATCH] QtNFC: remove QNearFieldTarget::ndefMessagesWritten signal ndefMessagesWritten signal basically duplicates the requestCompleted signal, but does not provide a request id parameter to track, which messages were actually written. Given that, the signal is removed. One should now use requestCompleted and check the request id instead. [ChangeLog][QtNFC][QNearFieldTarget] Remove ndefMessagesWritten signal. Use requestCompleted signal instead. Task-number: QTBUG-93854 Change-Id: Ic7f97eabfa83879b0da0cf34310a2982621cf8de Reviewed-by: Alex Blasche --- examples/nfc/ndefeditor/doc/src/ndefeditor.qdoc | 2 +- examples/nfc/ndefeditor/mainwindow.cpp | 14 ++++++++------ examples/nfc/ndefeditor/mainwindow.h | 2 +- src/nfc/ApiChangesQt6.txt | 1 + src/nfc/doc/src/nfc-overview.qdoc | 5 +++-- src/nfc/qnearfieldtagtype1.cpp | 1 - src/nfc/qnearfieldtarget.cpp | 12 +----------- src/nfc/qnearfieldtarget.h | 1 - src/nfc/qnearfieldtarget_android.cpp | 4 +++- src/nfc/qnearfieldtarget_p.h | 1 - .../qnearfieldtagtype1/tst_qnearfieldtagtype1.cpp | 3 --- .../qnearfieldtagtype2/tst_qnearfieldtagtype2.cpp | 9 ++++++--- 12 files changed, 24 insertions(+), 31 deletions(-) diff --git a/examples/nfc/ndefeditor/doc/src/ndefeditor.qdoc b/examples/nfc/ndefeditor/doc/src/ndefeditor.qdoc index eb638200..a8ea4761 100644 --- a/examples/nfc/ndefeditor/doc/src/ndefeditor.qdoc +++ b/examples/nfc/ndefeditor/doc/src/ndefeditor.qdoc @@ -56,7 +56,7 @@ Tag by calling the method QNearFieldManager::startTargetDetection. Once the target is detected the MainWindow connects the following signals to its internal private slots: QNearFieldTarget::ndefMessageRead, QNearFieldTarget::NdefReadError, -QNearFieldTarget::ndefMessagesWritten, +QNearFieldTarget::requestCompleted, QNearFieldTarget::NdefWriteError and QNearFieldTarget::error \snippet ndefeditor/mainwindow.cpp QNearFieldTarget detected diff --git a/examples/nfc/ndefeditor/mainwindow.cpp b/examples/nfc/ndefeditor/mainwindow.cpp index b4317528..cbb223de 100644 --- a/examples/nfc/ndefeditor/mainwindow.cpp +++ b/examples/nfc/ndefeditor/mainwindow.cpp @@ -242,7 +242,7 @@ void MainWindow::targetDetected(QNearFieldTarget *target) targetError(QNearFieldTarget::NdefReadError, m_request); break; case WriteNdef: - connect(target, &QNearFieldTarget::ndefMessagesWritten, this, &MainWindow::ndefMessageWritten); + connect(target, &QNearFieldTarget::requestCompleted, this, &MainWindow::ndefMessageWritten); connect(target, &QNearFieldTarget::error, this, &MainWindow::targetError); m_request = target->writeNdefMessages(QList() << ndefMessage()); @@ -287,12 +287,14 @@ void MainWindow::ndefMessageRead(const QNdefMessage &message) ui->statusBar->clearMessage(); } -void MainWindow::ndefMessageWritten() +void MainWindow::ndefMessageWritten(const QNearFieldTarget::RequestId &id) { - ui->status->setStyleSheet(QString()); - m_manager->stopTargetDetection(); - m_request = QNearFieldTarget::RequestId(); - ui->statusBar->clearMessage(); + if (id == m_request) { + ui->status->setStyleSheet(QString()); + m_manager->stopTargetDetection(); + m_request = QNearFieldTarget::RequestId(); + ui->statusBar->clearMessage(); + } } void MainWindow::targetError(QNearFieldTarget::Error error, const QNearFieldTarget::RequestId &id) diff --git a/examples/nfc/ndefeditor/mainwindow.h b/examples/nfc/ndefeditor/mainwindow.h index 234efcd2..2e95bca4 100644 --- a/examples/nfc/ndefeditor/mainwindow.h +++ b/examples/nfc/ndefeditor/mainwindow.h @@ -91,7 +91,7 @@ private slots: void targetLost(QNearFieldTarget *target); void ndefMessageRead(const QNdefMessage &message); - void ndefMessageWritten(); + void ndefMessageWritten(const QNearFieldTarget::RequestId &id); void targetError(QNearFieldTarget::Error error, const QNearFieldTarget::RequestId &id); private: diff --git a/src/nfc/ApiChangesQt6.txt b/src/nfc/ApiChangesQt6.txt index 48c9cc5b..ce7b520e 100644 --- a/src/nfc/ApiChangesQt6.txt +++ b/src/nfc/ApiChangesQt6.txt @@ -12,3 +12,4 @@ This document lists the API changed done to QtNFC between Qt 5.15 and Qt 6. - Added NfcTagType4A and NfcTagType4B to QNearFieldTarget::Type. - Changed the type of typeInfo in QNdefNfcSmartPosterRecord from QByteArray to QString. - Removed TargetAccessModes, setTargetAccessModes and targetAccessModes from QNearFieldManager. No replacement available. +- Removed ndefMessagesWritten signal. A requestCompleted signal is used instead. diff --git a/src/nfc/doc/src/nfc-overview.qdoc b/src/nfc/doc/src/nfc-overview.qdoc index 46be57ad..568888f4 100644 --- a/src/nfc/doc/src/nfc-overview.qdoc +++ b/src/nfc/doc/src/nfc-overview.qdoc @@ -115,6 +115,7 @@ may consist of zero or more \l QNdefRecord entries, which can be identified by t For more information about processing of records, see the \l QNdefRecord class documentation. As the above code demonstrates, writing of NDEF messages is triggered via \l QNearFieldTarget::writeNdefMessages(). The successful completion of the write operation -is indicated by the emission of the \l QNearFieldTarget::ndefMessagesWritten() signal. Any -type of error during read or write is indicated via \l QNearFieldTarget::error(). +is indicated by the emission of the \l QNearFieldTarget::requestCompleted() signal with the +corresponding request id. Any type of error during read or write is indicated via +\l QNearFieldTarget::error(). */ diff --git a/src/nfc/qnearfieldtagtype1.cpp b/src/nfc/qnearfieldtagtype1.cpp index 48f2ce89..9cb17590 100644 --- a/src/nfc/qnearfieldtagtype1.cpp +++ b/src/nfc/qnearfieldtagtype1.cpp @@ -300,7 +300,6 @@ void QNearFieldTagType1Private::progressToNextNdefWriteMessageState() m_writeNdefMessageState = NotWritingNdefMessage; delete m_tlvWriter; m_tlvWriter = nullptr; - Q_EMIT q->ndefMessagesWritten(); Q_EMIT q->requestCompleted(m_writeNdefRequestId); m_writeNdefRequestId = QNearFieldTarget::RequestId(); } else { diff --git a/src/nfc/qnearfieldtarget.cpp b/src/nfc/qnearfieldtarget.cpp index 68071bf3..67c012dc 100644 --- a/src/nfc/qnearfieldtarget.cpp +++ b/src/nfc/qnearfieldtarget.cpp @@ -138,14 +138,6 @@ QT_BEGIN_NAMESPACE \sa readNdefMessages() */ -/*! - \fn void QNearFieldTarget::ndefMessagesWritten() - - This signal is emitted when NDEF messages have been successfully written to the target. - - \sa writeNdefMessages() -*/ - /*! \fn void QNearFieldTarget::requestCompleted(const QNearFieldTarget::RequestId &id) @@ -347,7 +339,7 @@ QNearFieldTarget::RequestId QNearFieldTarget::readNdefMessages() to track the completion status of the request. An invalid request id will be returned if the target does not support reading NDEF messages. - The ndefMessagesWritten() signal will be emitted when the write operation completes + The requestCompleted() signal will be emitted when the write operation completes successfully; otherwise the error() signal is emitted. */ QNearFieldTarget::RequestId QNearFieldTarget::writeNdefMessages(const QList &messages) @@ -431,8 +423,6 @@ QNearFieldTarget::QNearFieldTarget(QNearFieldTargetPrivate *backend, QObject *pa this, &QNearFieldTarget::disconnected); connect(d, &QNearFieldTargetPrivate::ndefMessageRead, this, &QNearFieldTarget::ndefMessageRead); - connect(d, &QNearFieldTargetPrivate::ndefMessagesWritten, - this, &QNearFieldTarget::ndefMessagesWritten); connect(d, &QNearFieldTargetPrivate::requestCompleted, this, &QNearFieldTarget::requestCompleted); connect(d, &QNearFieldTargetPrivate::error, diff --git a/src/nfc/qnearfieldtarget.h b/src/nfc/qnearfieldtarget.h index 6a0a4e1a..b64054b6 100644 --- a/src/nfc/qnearfieldtarget.h +++ b/src/nfc/qnearfieldtarget.h @@ -142,7 +142,6 @@ Q_SIGNALS: void disconnected(); void ndefMessageRead(const QNdefMessage &message); - void ndefMessagesWritten(); void requestCompleted(const QNearFieldTarget::RequestId &id); diff --git a/src/nfc/qnearfieldtarget_android.cpp b/src/nfc/qnearfieldtarget_android.cpp index a75d33a6..5d52ad84 100644 --- a/src/nfc/qnearfieldtarget_android.cpp +++ b/src/nfc/qnearfieldtarget_android.cpp @@ -300,7 +300,9 @@ QNearFieldTarget::RequestId QNearFieldTargetPrivateImpl::writeNdefMessages(const return requestId; } - QMetaObject::invokeMethod(this, &QNearFieldTargetPrivate::ndefMessagesWritten, Qt::QueuedConnection); + QMetaObject::invokeMethod(this, [this, requestId]() { + Q_EMIT this->requestCompleted(requestId); + }, Qt::QueuedConnection); return requestId; } diff --git a/src/nfc/qnearfieldtarget_p.h b/src/nfc/qnearfieldtarget_p.h index 68c69fdb..3b4c7be0 100644 --- a/src/nfc/qnearfieldtarget_p.h +++ b/src/nfc/qnearfieldtarget_p.h @@ -97,7 +97,6 @@ Q_SIGNALS: void disconnected(); void ndefMessageRead(const QNdefMessage &message); - void ndefMessagesWritten(); void requestCompleted(const QNearFieldTarget::RequestId &id); diff --git a/tests/auto/qnearfieldtagtype1/tst_qnearfieldtagtype1.cpp b/tests/auto/qnearfieldtagtype1/tst_qnearfieldtagtype1.cpp index 504f42fc..42a62b7a 100644 --- a/tests/auto/qnearfieldtagtype1/tst_qnearfieldtagtype1.cpp +++ b/tests/auto/qnearfieldtagtype1/tst_qnearfieldtagtype1.cpp @@ -422,7 +422,6 @@ void tst_QNearFieldTagType1::ndefMessages() requestCompletedSpy.clear(); errorSpy.clear(); - QSignalSpy ndefMessageWriteSpy(target, SIGNAL(ndefMessagesWritten())); QNearFieldTarget::RequestId writeId = target->writeNdefMessages(messages); QVERIFY(writeId.isValid()); @@ -436,8 +435,6 @@ void tst_QNearFieldTagType1::ndefMessages() requestCompletedSpy.takeFirst().first().value(); } - QVERIFY(!ndefMessageWriteSpy.isEmpty()); - QVERIFY(target->hasNdefMessage()); ndefMessageReadSpy.clear(); diff --git a/tests/auto/qnearfieldtagtype2/tst_qnearfieldtagtype2.cpp b/tests/auto/qnearfieldtagtype2/tst_qnearfieldtagtype2.cpp index f4b7cd0b..4ea9bc42 100644 --- a/tests/auto/qnearfieldtagtype2/tst_qnearfieldtagtype2.cpp +++ b/tests/auto/qnearfieldtagtype2/tst_qnearfieldtagtype2.cpp @@ -311,10 +311,13 @@ void tst_QNearFieldTagType2::ndefMessages() messages.append(message); - QSignalSpy ndefMessageWriteSpy(target, SIGNAL(ndefMessagesWritten())); - target->writeNdefMessages(messages); + QSignalSpy requestCompleteSpy(target, &QNearFieldTagType2::requestCompleted); + id = target->writeNdefMessages(messages); - QTRY_VERIFY(!ndefMessageWriteSpy.isEmpty()); + QTRY_VERIFY(!requestCompleteSpy.isEmpty()); + const auto completedId = + requestCompleteSpy.takeFirst().first().value(); + QCOMPARE(completedId, id); QVERIFY(target->hasNdefMessage());