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 ++++++++++++++++++++++ examples/GuiClient/capabilitiesCollection.h | 56 +++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 examples/GuiClient/capabilitiesCollection.cpp create mode 100644 examples/GuiClient/capabilitiesCollection.h (limited to 'examples/GuiClient') 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; + } + } +} 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 +#include +#include + +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 m_mapCapabilities; +}; + +#endif // CAPABILITIESCOLLECTION_H -- cgit v1.2.3