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 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'source/QXmppStanza.cpp') 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; +} + -- cgit v1.2.3