aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppMessage.cpp
diff options
context:
space:
mode:
author0xd34df00d <0xd34df00d@gmail.com>2014-02-28 23:37:06 +0400
committer0xd34df00d <0xd34df00d@gmail.com>2014-02-28 23:37:06 +0400
commit5619a6e81498da219561b7c9b030a07d89b76c41 (patch)
treec83ff225421c5d63f142356699a97c61b5469335 /src/base/QXmppMessage.cpp
parent9871db7e8378193440df1afeaecabe95250b9b58 (diff)
downloadqxmpp-5619a6e81498da219561b7c9b030a07d89b76c41.tar.gz
Namespace-based matching for known elements.
Diffstat (limited to 'src/base/QXmppMessage.cpp')
-rw-r--r--src/base/QXmppMessage.cpp29
1 files changed, 15 insertions, 14 deletions
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<QPair<QString, QString> > knownMessageSubelems()
{
- QStringList result;
- result << "body"
- << "subject"
- << "thread"
- << "html"
- << "received"
- << "request"
- << "delay"
- << "attention"
- << "addresses";
+ QList<QPair<QString, QString> > 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<QPair<QString, QString> > &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);
}