From 5be0f372b58f87b70683cb71267f4f6aa698163b Mon Sep 17 00:00:00 2001 From: Zam Date: Tue, 14 Aug 2018 14:10:56 +0800 Subject: support XEP-0237 Roster Versioning --- src/base/QXmppRosterIq.cpp | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'src/base/QXmppRosterIq.cpp') diff --git a/src/base/QXmppRosterIq.cpp b/src/base/QXmppRosterIq.cpp index b41dc799..3f92834b 100644 --- a/src/base/QXmppRosterIq.cpp +++ b/src/base/QXmppRosterIq.cpp @@ -45,6 +45,26 @@ QList QXmppRosterIq::items() const return m_items; } +/// Returns the roster version of IQ. +/// +/// \return version as a QString +/// + +QString QXmppRosterIq::version() const +{ + return m_version; +} + +/// Sets the roster version of IQ. +/// +/// \param version as a QString +/// + +void QXmppRosterIq::setVersion(const QString &version) +{ + m_version = version; +} + /// \cond bool QXmppRosterIq::isRosterIq(const QDomElement &element) { @@ -53,9 +73,10 @@ bool QXmppRosterIq::isRosterIq(const QDomElement &element) void QXmppRosterIq::parseElementFromChild(const QDomElement &element) { - QDomElement itemElement = element. - firstChildElement("query"). - firstChildElement("item"); + QDomElement queryElement = element.firstChildElement("query"); + QDomElement itemElement = queryElement.firstChildElement("item"); + + setVersion(queryElement.attribute("ver")); while(!itemElement.isNull()) { QXmppRosterIq::Item item; @@ -70,6 +91,9 @@ void QXmppRosterIq::toXmlElementFromChild(QXmlStreamWriter *writer) const writer->writeStartElement("query"); writer->writeAttribute( "xmlns", ns_roster); + // XEP-0237 roster versioning - If the server does not advertise support for roster versioning, the client MUST NOT include the 'ver' attribute. + if(!version().isEmpty()) + writer->writeAttribute( "ver", version()); for(int i = 0; i < m_items.count(); ++i) m_items.at(i).toXml(writer); writer->writeEndElement(); -- cgit v1.2.3