aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppIq.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-07-21 19:38:41 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2012-07-21 19:38:41 +0200
commit0e6baa86a0009341a3cc7d0e256b314adf7d82b4 (patch)
treed8e11e2af512bfbcc763651a984dc2cb6522932b /src/base/QXmppIq.cpp
parent92729ab1a47e45adf19d57d60427ff2e7858e0b4 (diff)
downloadqxmpp-0e6baa86a0009341a3cc7d0e256b314adf7d82b4.tar.gz
refactor iq type parsing
Diffstat (limited to 'src/base/QXmppIq.cpp')
-rw-r--r--src/base/QXmppIq.cpp72
1 files changed, 17 insertions, 55 deletions
diff --git a/src/base/QXmppIq.cpp b/src/base/QXmppIq.cpp
index 128aa5d5..67f22274 100644
--- a/src/base/QXmppIq.cpp
+++ b/src/base/QXmppIq.cpp
@@ -28,6 +28,13 @@
#include <QDomElement>
#include <QXmlStreamWriter>
+static const char* iq_types[] = {
+ "error",
+ "get",
+ "set",
+ "result"
+};
+
/// Constructs a QXmppIq with the specified \a type.
///
/// \param type
@@ -59,7 +66,15 @@ void QXmppIq::setType(QXmppIq::Type type)
void QXmppIq::parse(const QDomElement &element)
{
QXmppStanza::parse(element);
- setTypeFromStr(element.attribute("type"));
+
+ const QString type = element.attribute("type");
+ for (int i = Error; i <= Result; i++) {
+ if (type == iq_types[i]) {
+ m_type = static_cast<Type>(i);
+ break;
+ }
+ }
+
parseElementFromChild(element);
}
@@ -82,10 +97,7 @@ void QXmppIq::toXml( QXmlStreamWriter *xmlWriter ) const
helperToXmlAddAttribute(xmlWriter, "id", id());
helperToXmlAddAttribute(xmlWriter, "to", to());
helperToXmlAddAttribute(xmlWriter, "from", from());
- if(getTypeStr().isEmpty())
- helperToXmlAddAttribute(xmlWriter, "type", "get");
- else
- helperToXmlAddAttribute(xmlWriter, "type", getTypeStr());
+ helperToXmlAddAttribute(xmlWriter, "type", iq_types[m_type]);
toXmlElementFromChild(xmlWriter);
error().toXml(xmlWriter);
xmlWriter->writeEndElement();
@@ -97,53 +109,3 @@ void QXmppIq::toXmlElementFromChild( QXmlStreamWriter *writer ) const
extension.toXml(writer);
}
/// \endcond
-
-QString QXmppIq::getTypeStr() const
-{
- switch(m_type)
- {
- case QXmppIq::Error:
- return "error";
- case QXmppIq::Get:
- return "get";
- case QXmppIq::Set:
- return "set";
- case QXmppIq::Result:
- return "result";
- default:
- qWarning("QXmppIq::getTypeStr() invalid type %d", (int)m_type);
- return "";
- }
-}
-
-void QXmppIq::setTypeFromStr(const QString& str)
-{
- if(str == "error")
- {
- setType(QXmppIq::Error);
- return;
- }
- else if(str == "get")
- {
- setType(QXmppIq::Get);
- return;
- }
- else if(str == "set")
- {
- setType(QXmppIq::Set);
- return;
- }
- else if(str == "result")
- {
- setType(QXmppIq::Result);
- return;
- }
- else
- {
- setType(static_cast<QXmppIq::Type>(-1));
- qWarning("QXmppIq::setTypeFromStr() invalid input string type: %s",
- qPrintable(str));
- return;
- }
-}
-