From e2be03e254a956024c9d67b19b8a809c9692b6f1 Mon Sep 17 00:00:00 2001 From: Manjeet Dahiya Date: Tue, 20 Oct 2009 11:43:45 +0000 Subject: Using QXmlStreamWriter for directly writing to the socket. This will avoid string concatenations and problems with XML escaping rules. and Fix for Issue 19: XMPP Version < 1.0 send NonSASL Auth query --- source/QXmppRosterIq.cpp | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) (limited to 'source/QXmppRosterIq.cpp') diff --git a/source/QXmppRosterIq.cpp b/source/QXmppRosterIq.cpp index 44708ded..bcc675ce 100644 --- a/source/QXmppRosterIq.cpp +++ b/source/QXmppRosterIq.cpp @@ -25,7 +25,7 @@ #include "QXmppRosterIq.h" #include "QXmppConstants.h" #include "QXmppUtils.h" -#include +#include QXmppRosterIq::QXmppRosterIq(QXmppIq::Type type) : QXmppIq(type) @@ -53,19 +53,14 @@ QList QXmppRosterIq::getItems() const return m_items; } -QByteArray QXmppRosterIq::toXmlElementFromChild() const +void QXmppRosterIq::toXmlElementFromChild(QXmlStreamWriter *writer) const { - QString data; - QTextStream stream(&data); + writer->writeStartElement("query"); + writer->writeAttribute( "xmlns", ns_roster); - stream << ""; for(int i = 0; i < m_items.count(); ++i) - stream << m_items.at(i).toXml(); - stream << ""; - - return data.toAscii(); + m_items.at(i).toXml(writer); + writer->writeEndElement(); } QXmppRosterIq::Item::SubscriptionType @@ -159,24 +154,19 @@ void QXmppRosterIq::Item::setSubscriptionTypeFromStr(const QString& type) qWarning("QXmppRosterIq::Item::setTypeFromStr(): invalid type"); } -QString QXmppRosterIq::Item::toXml() const +void QXmppRosterIq::Item::toXml(QXmlStreamWriter *writer) const { - QString data; - QTextStream stream(&data); - - stream << ""; + writer->writeStartElement("item"); + helperToXmlAddAttribute(writer,"jid", m_bareJid); + helperToXmlAddAttribute(writer,"name", m_name); + helperToXmlAddAttribute(writer,"subscription", getSubscriptionTypeStr()); + helperToXmlAddAttribute(writer, "ask", getSubscriptionStatus()); QSet::const_iterator i = m_groups.constBegin(); while(i != m_groups.constEnd()) { - helperToXmlAddElement(stream, "group", *i); + helperToXmlAddTextElement(writer,"group", *i); ++i; } - stream << ""; - return data.toAscii(); + writer->writeEndElement(); } -- cgit v1.2.3