diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-09-12 14:50:20 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-09-12 14:50:20 +0200 |
| commit | c9b81bc66f2449fe4ca1d55259d6f70178f1a91d (patch) | |
| tree | b8f9fa1bc49cfe1a04cf6d1026ee821ee932c279 /src/base | |
| parent | ef8fce0bb434c5fdc22630a0890a3c0fa4c7cc1f (diff) | |
| download | qxmpp-c9b81bc66f2449fe4ca1d55259d6f70178f1a91d.tar.gz | |
QXmppTransferManager: use actual data forms instead of manually parsing them
Diffstat (limited to 'src/base')
| -rw-r--r-- | src/base/QXmppStreamInitiationIq.cpp | 22 | ||||
| -rw-r--r-- | src/base/QXmppStreamInitiationIq.h | 5 |
2 files changed, 26 insertions, 1 deletions
diff --git a/src/base/QXmppStreamInitiationIq.cpp b/src/base/QXmppStreamInitiationIq.cpp index 9b34bb59..361701ec 100644 --- a/src/base/QXmppStreamInitiationIq.cpp +++ b/src/base/QXmppStreamInitiationIq.cpp @@ -27,6 +27,16 @@ #include "QXmppStreamInitiationIq.h" #include "QXmppUtils.h" +QXmppDataForm QXmppStreamInitiationIq::featureForm() const +{ + return m_featureForm; +} + +void QXmppStreamInitiationIq::setFeatureForm(const QXmppDataForm &form) +{ + m_featureForm = form; +} + QString QXmppStreamInitiationIq::mimeType() const { return m_mimeType; @@ -87,7 +97,11 @@ void QXmppStreamInitiationIq::parseElementFromChild(const QDomElement &element) QDomElement itemElement = siElement.firstChildElement(); while (!itemElement.isNull()) { - m_siItems.append(QXmppElement(itemElement)); + if (itemElement.tagName() == "feature" && itemElement.namespaceURI() == ns_feature_negotiation) { + m_featureForm.parse(itemElement.firstChildElement()); + } else { + m_siItems.append(QXmppElement(itemElement)); + } itemElement = itemElement.nextSiblingElement(); } } @@ -102,6 +116,12 @@ void QXmppStreamInitiationIq::toXmlElementFromChild(QXmlStreamWriter *writer) co helperToXmlAddAttribute(writer, "profile", ns_stream_initiation_file_transfer); foreach (const QXmppElement &item, m_siItems) item.toXml(writer); + if (!m_featureForm.isNull()) { + writer->writeStartElement("feature"); + writer->writeAttribute("xmlns", ns_feature_negotiation); + m_featureForm.toXml(writer); + writer->writeEndElement(); + } writer->writeEndElement(); } /// \endcond diff --git a/src/base/QXmppStreamInitiationIq.h b/src/base/QXmppStreamInitiationIq.h index 888fcfb0..2feb5e7e 100644 --- a/src/base/QXmppStreamInitiationIq.h +++ b/src/base/QXmppStreamInitiationIq.h @@ -26,6 +26,7 @@ #include <QDateTime> +#include "QXmppDataForm.h" #include "QXmppIq.h" class QDomElement; @@ -39,6 +40,9 @@ public: FileTransfer, }; + QXmppDataForm featureForm() const; + void setFeatureForm(const QXmppDataForm &form); + QString mimeType() const; void setMimeType(const QString &mimeType); @@ -60,6 +64,7 @@ protected: /// \endcond private: + QXmppDataForm m_featureForm; QString m_mimeType; Profile m_profile; QString m_siId; |
