aboutsummaryrefslogtreecommitdiff
path: root/source/QXmppMessage.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-02-18 13:42:38 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-02-18 13:42:38 +0000
commitc913e78592620d195eea725e13bd6821789a5b76 (patch)
tree9f2511a7c2fe09e685960cecc1683a1cc8c74988 /source/QXmppMessage.cpp
parentc12a2d1eca2d73d0842584724629e00dbbc52952 (diff)
downloadqxmpp-c913e78592620d195eea725e13bd6821789a5b76.tar.gz
move parsing of XMPP messages to QXmppMessage
Diffstat (limited to 'source/QXmppMessage.cpp')
-rw-r--r--source/QXmppMessage.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/source/QXmppMessage.cpp b/source/QXmppMessage.cpp
index 9fb0037b..cd8c905c 100644
--- a/source/QXmppMessage.cpp
+++ b/source/QXmppMessage.cpp
@@ -24,6 +24,7 @@
#include "QXmppMessage.h"
#include "QXmppUtils.h"
+#include <QDomElement>
#include <QXmlStreamWriter>
QXmppMessage::QXmppMessage(const QString& from, const QString& to, const
@@ -108,6 +109,30 @@ void QXmppMessage::setTypeFromStr(const QString& str)
}
}
+void QXmppMessage::parse(QDomElement &element)
+{
+ setFrom(element.attribute("from"));
+ setTo(element.attribute("to"));
+ setTypeFromStr(element.attribute("type"));
+ setBody(unescapeString(
+ element.firstChildElement("body").text()));
+ setSubject(unescapeString(
+ element.firstChildElement("subject").text()));
+ setThread(element.firstChildElement("thread").text());
+
+ QDomElement errorElement = element.
+ firstChildElement("error");
+ if(!errorElement.isNull())
+ {
+ QXmppStanza::Error error = parseError(errorElement);
+ setError(error);
+ }
+
+ QDomElement xElement = element.firstChildElement("x");
+ if(!xElement.isNull())
+ setExtension(QXmppElement(xElement));
+}
+
void QXmppMessage::toXml(QXmlStreamWriter *xmlWriter) const
{