From 68b7f71c483fdaa820f95496c6a4b640dd13f610 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Fri, 19 Feb 2010 17:30:04 +0000 Subject: allow multiple extensions for XMPP stanzas --- source/QXmppPresence.cpp | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'source/QXmppPresence.cpp') 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 +#include #include 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(); -- cgit v1.2.3