From c12a2d1eca2d73d0842584724629e00dbbc52952 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Thu, 18 Feb 2010 13:36:55 +0000 Subject: move stanza error parsing to QXmppStanza --- source/QXmppStanza.cpp | 30 ++++++++++++++++++++++++++++++ source/QXmppStanza.h | 3 +++ 2 files changed, 33 insertions(+) (limited to 'source') diff --git a/source/QXmppStanza.cpp b/source/QXmppStanza.cpp index 5c5fadbe..f8bc1fa7 100644 --- a/source/QXmppStanza.cpp +++ b/source/QXmppStanza.cpp @@ -26,6 +26,7 @@ #include "QXmppUtils.h" #include "QXmppConstants.h" +#include #include uint QXmppStanza::s_uniqeIdNo = 0; @@ -330,3 +331,32 @@ bool QXmppStanza::isErrorStanza() return !(m_error.getTypeStr().isEmpty() && m_error.getConditionStr().isEmpty()); } + +QXmppStanza::Error QXmppStanza::parseError(const QDomElement &errorElement) +{ + QXmppStanza::Error error; + + if(errorElement.isNull()) + return error; + + QString type = errorElement.attribute("type"); + QString text; + QString cond; + QDomElement element = errorElement.firstChildElement(); + while(!element.isNull()) + { + if(element.tagName() == "text") + text = element.text(); + else if(element.namespaceURI() == ns_stanza) + { + cond = element.tagName(); + } + element = element.nextSiblingElement(); + } + + error.setConditionFromStr(cond); + error.setTypeFromStr(type); + error.setText(text); + return error; +} + diff --git a/source/QXmppStanza.h b/source/QXmppStanza.h index 05ccf024..591f1741 100644 --- a/source/QXmppStanza.h +++ b/source/QXmppStanza.h @@ -117,6 +117,9 @@ public: void setExtension(const QXmppElement &element); bool isErrorStanza(); + // FIXME : make this method protected + static QXmppStanza::Error parseError(const QDomElement&); + private: static uint s_uniqeIdNo; QString m_to; -- cgit v1.2.3