diff options
author | Fabian Bumberger <fbumberger@rim.com> | 2013-09-25 18:07:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-30 15:00:59 +0200 |
commit | 171a0e2568c639ac40329a9d2ace01344eb395b0 (patch) | |
tree | cafc0d50acadf9b0fd5edeb6a05f3b47dd8956d6 /src/imports | |
parent | 2ef02cb4d0474dce51658d381743de96204dce72 (diff) |
Alter the way type and TNF are treated in the qml API
Change-Id: Iff972e1645447a57eb72e3006318a9dd5b2d5c9b
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
Diffstat (limited to 'src/imports')
-rw-r--r-- | src/imports/nfc/qdeclarativendeffilter.cpp | 14 | ||||
-rw-r--r-- | src/imports/nfc/qdeclarativendeffilter_p.h | 8 | ||||
-rw-r--r-- | src/imports/nfc/qdeclarativenearfield.cpp | 41 | ||||
-rw-r--r-- | src/imports/nfc/qdeclarativenearfield_p.h | 2 |
4 files changed, 39 insertions, 26 deletions
diff --git a/src/imports/nfc/qdeclarativendeffilter.cpp b/src/imports/nfc/qdeclarativendeffilter.cpp index cdb99461..ae551774 100644 --- a/src/imports/nfc/qdeclarativendeffilter.cpp +++ b/src/imports/nfc/qdeclarativendeffilter.cpp @@ -119,6 +119,20 @@ void QDeclarativeNdefFilter::setType(const QString &t) emit typeChanged(); } +QDeclarativeNdefRecord::TypeNameFormat QDeclarativeNdefFilter::typeNameFormat() const +{ + return m_typeNameFormat; +} + +void QDeclarativeNdefFilter::setTypeNameFormat(QDeclarativeNdefRecord::TypeNameFormat format) +{ + if (m_typeNameFormat == format) + return; + + m_typeNameFormat = format; + Q_EMIT(typeNameFormatChanged()); +} + int QDeclarativeNdefFilter::minimum() const { return m_minimum; diff --git a/src/imports/nfc/qdeclarativendeffilter_p.h b/src/imports/nfc/qdeclarativendeffilter_p.h index d64db531..8622aece 100644 --- a/src/imports/nfc/qdeclarativendeffilter_p.h +++ b/src/imports/nfc/qdeclarativendeffilter_p.h @@ -43,21 +43,25 @@ #define QDECLARATIVENDEFFILTER_P_H #include <QtCore/QObject> +#include <qdeclarativendefrecord.h> class QDeclarativeNdefFilter : public QObject { Q_OBJECT Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged) + Q_PROPERTY(QDeclarativeNdefRecord::TypeNameFormat typeNameFormat READ typeNameFormat WRITE setTypeNameFormat NOTIFY typeNameFormatChanged) Q_PROPERTY(int minimum READ minimum WRITE setMinimum NOTIFY minimumChanged) Q_PROPERTY(int maximum READ maximum WRITE setMaximum NOTIFY maximumChanged) - public: explicit QDeclarativeNdefFilter(QObject *parent = 0); QString type() const; void setType(const QString &t); + QDeclarativeNdefRecord::TypeNameFormat typeNameFormat() const; + void setTypeNameFormat(QDeclarativeNdefRecord::TypeNameFormat format); + int minimum() const; void setMinimum(int value); @@ -68,11 +72,13 @@ signals: void typeChanged(); void minimumChanged(); void maximumChanged(); + void typeNameFormatChanged(); private: QString m_type; int m_minimum; int m_maximum; + QDeclarativeNdefRecord::TypeNameFormat m_typeNameFormat; }; #endif // QDECLARATIVENDEFFILTER_P_H diff --git a/src/imports/nfc/qdeclarativenearfield.cpp b/src/imports/nfc/qdeclarativenearfield.cpp index 681e2e9e..81a27730 100644 --- a/src/imports/nfc/qdeclarativenearfield.cpp +++ b/src/imports/nfc/qdeclarativenearfield.cpp @@ -72,7 +72,7 @@ \code NearField { - filter: [ NdefFilter { type: "urn:nfc:wkt:U"; minimum: 1; maximum: 1 } ] + filter: [ NdefFilter { type: "U"; typeNameFormat: NdefRecord.NfcRtd; minimum: 1; maximum: 1 } ] orderMatch: false onMessageRecordsChanged: displayMessage() @@ -143,7 +143,7 @@ void QDeclarativeNearField::componentComplete() { m_componentCompleted = true; - if (!m_filter.isEmpty()) + if (!m_filterList.isEmpty()) registerMessageHandler(); } @@ -156,27 +156,20 @@ void QDeclarativeNearField::registerMessageHandler() m_manager->unregisterNdefMessageHandler(m_messageHandlerId); // no filter abort - if (m_filter.isEmpty()) + if (m_filterList.isEmpty()) return; - QNdefFilter filter; - filter.setOrderMatch(m_orderMatch); - foreach (QDeclarativeNdefFilter *f, m_filter) { - const QString type = f->type(); - uint min = f->minimum() < 0 ? UINT_MAX : f->minimum(); - uint max = f->maximum() < 0 ? UINT_MAX : f->maximum(); - - if (type.startsWith(QLatin1String("urn:nfc:wkt:"))) - filter.appendRecord(QNdefRecord::NfcRtd, type.mid(12).toUtf8(), min, max); - else if (type.startsWith(QLatin1String("urn:nfc:ext:"))) - filter.appendRecord(QNdefRecord::ExternalRtd, type.mid(12).toUtf8(), min, max); - else if (type.startsWith(QLatin1String("urn:nfc:mime"))) - filter.appendRecord(QNdefRecord::Mime, type.mid(13).toUtf8(), min, max); - else - qWarning("Unknown NDEF record type %s", qPrintable(type)); + QNdefFilter ndefFilter; + ndefFilter.setOrderMatch(m_orderMatch); + foreach (const QDeclarativeNdefFilter *filter, m_filterList) { + const QString type = filter->type(); + uint min = filter->minimum() < 0 ? UINT_MAX : filter->minimum(); + uint max = filter->maximum() < 0 ? UINT_MAX : filter->maximum(); + + ndefFilter.appendRecord(static_cast<QNdefRecord::TypeNameFormat>(filter->typeNameFormat()), type.toUtf8(), min, max); } - m_messageHandlerId = m_manager->registerNdefMessageHandler(filter, this, SLOT(_q_handleNdefMessage(QNdefMessage))); + m_messageHandlerId = m_manager->registerNdefMessageHandler(ndefFilter, this, SLOT(_q_handleNdefMessage(QNdefMessage))); } void QDeclarativeNearField::_q_handleNdefMessage(const QNdefMessage &message) @@ -246,7 +239,7 @@ void QDeclarativeNearField::append_filter(QQmlListProperty<QDeclarativeNdefFilte return; filter->setParent(nearField); - nearField->m_filter.append(filter); + nearField->m_filterList.append(filter); emit nearField->filterChanged(); if (nearField->m_componentCompleted) @@ -259,7 +252,7 @@ int QDeclarativeNearField::count_filters(QQmlListProperty<QDeclarativeNdefFilter if (!nearField) return 0; - return nearField->m_filter.count(); + return nearField->m_filterList.count(); } QDeclarativeNdefFilter *QDeclarativeNearField::at_filter(QQmlListProperty<QDeclarativeNdefFilter> *list, @@ -269,7 +262,7 @@ QDeclarativeNdefFilter *QDeclarativeNearField::at_filter(QQmlListProperty<QDecla if (!nearField) return 0; - return nearField->m_filter.at(index); + return nearField->m_filterList.at(index); } void QDeclarativeNearField::clear_filter(QQmlListProperty<QDeclarativeNdefFilter> *list) @@ -278,8 +271,8 @@ void QDeclarativeNearField::clear_filter(QQmlListProperty<QDeclarativeNdefFilter if (!nearField) return; - qDeleteAll(nearField->m_filter); - nearField->m_filter.clear(); + qDeleteAll(nearField->m_filterList); + nearField->m_filterList.clear(); emit nearField->filterChanged(); if (nearField->m_componentCompleted) nearField->registerMessageHandler(); diff --git a/src/imports/nfc/qdeclarativenearfield_p.h b/src/imports/nfc/qdeclarativenearfield_p.h index d3f4b50f..ad551308 100644 --- a/src/imports/nfc/qdeclarativenearfield_p.h +++ b/src/imports/nfc/qdeclarativenearfield_p.h @@ -87,7 +87,7 @@ private slots: private: QList<QDeclarativeNdefRecord *> m_message; - QList<QDeclarativeNdefFilter *> m_filter; + QList<QDeclarativeNdefFilter *> m_filterList; bool m_orderMatch; bool m_componentCompleted; bool m_messageUpdating; |