From 5619a6e81498da219561b7c9b030a07d89b76c41 Mon Sep 17 00:00:00 2001 From: 0xd34df00d <0xd34df00d@gmail.com> Date: Fri, 28 Feb 2014 23:37:06 +0400 Subject: Namespace-based matching for known elements. --- src/base/QXmppMessage.cpp | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'src/base/QXmppMessage.cpp') diff --git a/src/base/QXmppMessage.cpp b/src/base/QXmppMessage.cpp index e88e40f1..db46271b 100644 --- a/src/base/QXmppMessage.cpp +++ b/src/base/QXmppMessage.cpp @@ -344,20 +344,20 @@ void QXmppMessage::setXhtml(const QString &xhtml) namespace { - static QStringList knownMessageSubelems() + static QList > knownMessageSubelems() { - QStringList result; - result << "body" - << "subject" - << "thread" - << "html" - << "received" - << "request" - << "delay" - << "attention" - << "addresses"; + QList > result; + result << qMakePair(QString("body"), QString()) + << qMakePair(QString("subject"), QString()) + << qMakePair(QString("thread"), QString()) + << qMakePair(QString("html"), QString()) + << qMakePair(QString("received"), QString(ns_message_receipts)) + << qMakePair(QString("request"), QString()) + << qMakePair(QString("delay"), QString()) + << qMakePair(QString("attention"), QString()) + << qMakePair(QString("addresses"), QString()); for (int i = QXmppMessage::Active; i <= QXmppMessage::Paused; i++) - result << chat_states[i]; + result << qMakePair(QString(chat_states[i]), QString()); return result; } } @@ -432,7 +432,7 @@ void QXmppMessage::parse(const QDomElement &element) // XEP-0224: Attention d->attentionRequested = element.firstChildElement("attention").namespaceURI() == ns_attention; - const QStringList &knownElems = knownMessageSubelems(); + const QList > &knownElems = knownMessageSubelems(); QXmppElementList extensions; QDomElement xElement = element.firstChildElement(); @@ -456,7 +456,8 @@ void QXmppMessage::parse(const QDomElement &element) else { extensions << QXmppElement(xElement); } - } else if (!knownElems.contains(xElement.tagName())) { + } else if (!knownElems.contains(qMakePair(xElement.tagName(), xElement.namespaceURI())) && + !knownElems.contains(qMakePair(xElement.tagName(), QString()))) { // other extensions extensions << QXmppElement(xElement); } -- cgit v1.2.3