aboutsummaryrefslogtreecommitdiff
path: root/source/QXmppPresence.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-02-19 17:30:04 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-02-19 17:30:04 +0000
commit68b7f71c483fdaa820f95496c6a4b640dd13f610 (patch)
treebcc59a4a9c58fc69c61893c5e6a828a21bf7e4f4 /source/QXmppPresence.cpp
parenta64840aee77b706ca62a8b80a51857e79639231e (diff)
downloadqxmpp-68b7f71c483fdaa820f95496c6a4b640dd13f610.tar.gz
allow multiple extensions for XMPP stanzas
Diffstat (limited to 'source/QXmppPresence.cpp')
-rw-r--r--source/QXmppPresence.cpp35
1 files changed, 34 insertions, 1 deletions
diff --git a/source/QXmppPresence.cpp b/source/QXmppPresence.cpp
index 80424066..62098545 100644
--- a/source/QXmppPresence.cpp
+++ b/source/QXmppPresence.cpp
@@ -25,6 +25,7 @@
#include "QXmppPresence.h"
#include "QXmppUtils.h"
#include <QtDebug>
+#include <QDomElement>
#include <QXmlStreamWriter>
QXmppPresence::QXmppPresence(QXmppPresence::Type type,
@@ -64,6 +65,37 @@ void QXmppPresence::setStatus(const QXmppPresence::Status& status)
m_status = status;
}
+void QXmppPresence::parse(const QDomElement &element)
+{
+ setTypeFromStr(element.attribute("type"));
+ setFrom(element.attribute("from"));
+ setTo(element.attribute("to"));
+
+ QString statusText = element.
+ firstChildElement("status").text();
+ QString show = element.
+ firstChildElement("show").text();
+ int priority = element.
+ firstChildElement("priority").text().toInt();
+ QXmppPresence::Status status;
+ status.setTypeFromStr(show);
+ status.setStatusText(statusText);
+ status.setPriority(priority);
+ setStatus(status);
+
+ QDomElement errorElement = element.
+ firstChildElement("error");
+ if(!errorElement.isNull())
+ {
+ QXmppStanza::Error error = parseError(errorElement);
+ setError(error);
+ }
+
+ QDomElement xElement = element.firstChildElement("x");
+ if(!xElement.isNull())
+ setExtensions(QXmppElement(xElement));
+}
+
void QXmppPresence::toXml(QXmlStreamWriter *xmlWriter ) const
{
@@ -80,7 +112,8 @@ void QXmppPresence::toXml(QXmlStreamWriter *xmlWriter ) const
helperToXmlAddTextElement(xmlWriter,"show", getStatus().getTypeStr());
getError().toXml(xmlWriter);
- getExtension().toXml(xmlWriter);
+ foreach (const QXmppElement &extension, getExtensions())
+ extension.toXml(xmlWriter);
xmlWriter->writeEndElement();