diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-02-19 17:30:04 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-02-19 17:30:04 +0000 |
| commit | 68b7f71c483fdaa820f95496c6a4b640dd13f610 (patch) | |
| tree | bcc59a4a9c58fc69c61893c5e6a828a21bf7e4f4 /source/QXmppPresence.cpp | |
| parent | a64840aee77b706ca62a8b80a51857e79639231e (diff) | |
| download | qxmpp-68b7f71c483fdaa820f95496c6a4b640dd13f610.tar.gz | |
allow multiple extensions for XMPP stanzas
Diffstat (limited to 'source/QXmppPresence.cpp')
| -rw-r--r-- | source/QXmppPresence.cpp | 35 |
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(); |
