From 329514428e11a42958316b4178c2a4ac35ce29d7 Mon Sep 17 00:00:00 2001 From: Manjeet Dahiya Date: Thu, 23 Sep 2010 05:23:30 +0000 Subject: add collection and cache management class for discoveryInfoIqs --- examples/GuiClient/capabilitiesCollection.cpp | 47 +++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 examples/GuiClient/capabilitiesCollection.cpp (limited to 'examples/GuiClient/capabilitiesCollection.cpp') diff --git a/examples/GuiClient/capabilitiesCollection.cpp b/examples/GuiClient/capabilitiesCollection.cpp new file mode 100644 index 00000000..f8d8a02e --- /dev/null +++ b/examples/GuiClient/capabilitiesCollection.cpp @@ -0,0 +1,47 @@ +#include "capabilitiesCollection.h" + +#include "QXmppClient.h" +#include "QXmppDiscoveryManager.h" +#include + +capabilitiesCollection::capabilitiesCollection(QXmppClient* client) : + QObject(client), m_client(client) +{ + QXmppDiscoveryManager* ext = m_client->findExtension(); + if(ext) + { + bool check = connect(ext, SIGNAL(infoReceived(const QXmppDiscoveryIq&)), + SLOT(infoReceived(const QXmppDiscoveryIq&))); + Q_ASSERT(check); + } +} + +bool capabilitiesCollection::isCapabilityAvailable(const QString& nodeVer) +{ + return m_mapCapabilities.contains(nodeVer); +} + +void capabilitiesCollection::requestInfo(const QString& jid, const QString& node) +{ + QXmppDiscoveryManager* ext = m_client->findExtension(); + if(ext) + { + ext->requestInfo(jid, node); + } +} + +void capabilitiesCollection::infoReceived(const QXmppDiscoveryIq& discoIqRcv) +{ + QXmppDiscoveryIq discoIq = discoIqRcv; + if(discoIq.queryType() == QXmppDiscoveryIq::InfoQuery && + discoIq.type() == QXmppIq::Result) + { + if(!discoIq.queryNode().isEmpty()) + { + discoIq.setTo(""); + discoIq.setFrom(""); + discoIq.setId(""); + m_mapCapabilities[discoIq.queryNode()] = discoIq; + } + } +} -- cgit v1.2.3