aboutsummaryrefslogtreecommitdiff
path: root/examples/GuiClient/capabilitiesCollection.cpp
diff options
context:
space:
mode:
authorManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-23 05:23:30 +0000
committerManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-23 05:23:30 +0000
commit329514428e11a42958316b4178c2a4ac35ce29d7 (patch)
treee05de6e57f00bce05813d706f330c95fd8cf4ccb /examples/GuiClient/capabilitiesCollection.cpp
parentbad9325f21e9a58bbfa2dc5747ab418eb97918ff (diff)
downloadqxmpp-329514428e11a42958316b4178c2a4ac35ce29d7.tar.gz
add collection and cache management class for discoveryInfoIqs
Diffstat (limited to 'examples/GuiClient/capabilitiesCollection.cpp')
-rw-r--r--examples/GuiClient/capabilitiesCollection.cpp47
1 files changed, 47 insertions, 0 deletions
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 <QXmlStreamWriter>
+
+capabilitiesCollection::capabilitiesCollection(QXmppClient* client) :
+ QObject(client), m_client(client)
+{
+ QXmppDiscoveryManager* ext = m_client->findExtension<QXmppDiscoveryManager>();
+ 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<QXmppDiscoveryManager>();
+ 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;
+ }
+ }
+}