aboutsummaryrefslogtreecommitdiff
path: root/examples/GuiClient
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
parentbad9325f21e9a58bbfa2dc5747ab418eb97918ff (diff)
downloadqxmpp-329514428e11a42958316b4178c2a4ac35ce29d7.tar.gz
add collection and cache management class for discoveryInfoIqs
Diffstat (limited to 'examples/GuiClient')
-rw-r--r--examples/GuiClient/capabilitiesCollection.cpp47
-rw-r--r--examples/GuiClient/capabilitiesCollection.h56
2 files changed, 103 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;
+ }
+ }
+}
diff --git a/examples/GuiClient/capabilitiesCollection.h b/examples/GuiClient/capabilitiesCollection.h
new file mode 100644
index 00000000..0fa44341
--- /dev/null
+++ b/examples/GuiClient/capabilitiesCollection.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2008-2010 The QXmpp developers
+ *
+ * Author:
+ * Manjeet Dahiya
+ *
+ * Source:
+ * http://code.google.com/p/qxmpp
+ *
+ * This file is a part of QXmpp library.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ */
+
+
+#ifndef CAPABILITIESCOLLECTION_H
+#define CAPABILITIESCOLLECTION_H
+
+#include <QObject>
+#include <QDomElement>
+#include <QMap>
+
+class QXmppClient;
+
+#include "QXmppDiscoveryIq.h"
+
+class capabilitiesCollection : public QObject
+{
+ Q_OBJECT
+
+public:
+ capabilitiesCollection(QXmppClient* client);
+ bool isCapabilityAvailable(const QString& nodeVer);
+ void requestInfo(const QString& jid, const QString& nodeVer);
+
+signals:
+
+private slots:
+ void infoReceived(const QXmppDiscoveryIq&);
+
+private:
+ QXmppClient* m_client;
+
+ QMap<QString, QXmppDiscoveryIq> m_mapCapabilities;
+};
+
+#endif // CAPABILITIESCOLLECTION_H