From f0ddddce663e30a88c5c5246743145fe8dd8e11a Mon Sep 17 00:00:00 2001 From: Manjeet Dahiya Date: Thu, 23 Sep 2010 08:36:23 +0000 Subject: bugfixes and improvements --- examples/GuiClient/capabilitiesCollection.cpp | 30 ++++++++++++++++++++------- examples/GuiClient/capabilitiesCollection.h | 1 + examples/GuiClient/mainDialog.cpp | 4 ++-- 3 files changed, 26 insertions(+), 9 deletions(-) (limited to 'examples/GuiClient') diff --git a/examples/GuiClient/capabilitiesCollection.cpp b/examples/GuiClient/capabilitiesCollection.cpp index 8b662342..ea3e5228 100644 --- a/examples/GuiClient/capabilitiesCollection.cpp +++ b/examples/GuiClient/capabilitiesCollection.cpp @@ -53,7 +53,21 @@ void capabilitiesCollection::requestInfo(const QString& jid, const QString& node QXmppDiscoveryManager* ext = m_client->findExtension(); if(ext) { - ext->requestInfo(jid, node); + bool alreadyRequested = false; + foreach(QString key, m_mapIdNodeVer.keys()) + { + if(m_mapIdNodeVer[key] == node) + { + alreadyRequested = true; + break; + } + } + + if(!alreadyRequested) + { + QString id = ext->requestInfo(jid, node); + m_mapIdNodeVer[id] = node; + } } } @@ -63,14 +77,16 @@ void capabilitiesCollection::infoReceived(const QXmppDiscoveryIq& discoIqRcv) if(discoIq.queryType() == QXmppDiscoveryIq::InfoQuery && discoIq.type() == QXmppIq::Result) { - if(!discoIq.queryNode().isEmpty()) + if(discoIq.queryNode().isEmpty()) { - discoIq.setTo(""); - discoIq.setFrom(""); - discoIq.setId(""); - m_mapCapabilities[discoIq.queryNode()] = discoIq; - saveToCache(discoIq.queryNode()); + discoIq.setQueryNode(m_mapIdNodeVer[discoIq.id()]); } + + discoIq.setTo(""); + discoIq.setFrom(""); + discoIq.setId(""); + m_mapCapabilities[discoIq.queryNode()] = discoIq; + saveToCache(discoIq.queryNode()); } } diff --git a/examples/GuiClient/capabilitiesCollection.h b/examples/GuiClient/capabilitiesCollection.h index 216ff4c2..c4636321 100644 --- a/examples/GuiClient/capabilitiesCollection.h +++ b/examples/GuiClient/capabilitiesCollection.h @@ -54,6 +54,7 @@ private: QXmppClient* m_client; QMap m_mapCapabilities; + QMap m_mapIdNodeVer; }; #endif // CAPABILITIESCOLLECTION_H diff --git a/examples/GuiClient/mainDialog.cpp b/examples/GuiClient/mainDialog.cpp index 04bb76f4..32ef899a 100644 --- a/examples/GuiClient/mainDialog.cpp +++ b/examples/GuiClient/mainDialog.cpp @@ -191,8 +191,8 @@ void mainDialog::presenceChanged(const QString& bareJid, const QString& resource extension.attribute("xmlns") == ns_capabilities) { QString node = extension.attribute("node"); - QString ver = extension.attribute("node"); - QString exts = extension.attribute("node"); + QString ver = extension.attribute("ver"); + QString exts = extension.attribute("ext"); nodeVer = node + "#" + ver; if(!m_capabilitiesCollection.isCapabilityAvailable(nodeVer)) m_capabilitiesCollection.requestInfo(jid, nodeVer); -- cgit v1.2.3