From b54eebb2ce03418b020190ace403e7f3cb23054f Mon Sep 17 00:00:00 2001 From: Manjeet Dahiya Date: Sun, 26 Sep 2010 07:36:51 +0000 Subject: capabilitiesCollection to capabilitiesCache --- examples/GuiClient/GuiClient.pro | 4 +- examples/GuiClient/capabilitiesCache.cpp | 178 ++++++++++++++++++++++++++ examples/GuiClient/capabilitiesCache.h | 63 +++++++++ examples/GuiClient/capabilitiesCollection.cpp | 178 -------------------------- examples/GuiClient/capabilitiesCollection.h | 63 --------- examples/GuiClient/mainDialog.h | 4 +- examples/GuiClient/profileDialog.cpp | 2 +- examples/GuiClient/profileDialog.h | 6 +- 8 files changed, 249 insertions(+), 249 deletions(-) create mode 100644 examples/GuiClient/capabilitiesCache.cpp create mode 100644 examples/GuiClient/capabilitiesCache.h delete mode 100644 examples/GuiClient/capabilitiesCollection.cpp delete mode 100644 examples/GuiClient/capabilitiesCollection.h (limited to 'examples/GuiClient') diff --git a/examples/GuiClient/GuiClient.pro b/examples/GuiClient/GuiClient.pro index 9bc0f0de..aab59ea2 100644 --- a/examples/GuiClient/GuiClient.pro +++ b/examples/GuiClient/GuiClient.pro @@ -23,7 +23,7 @@ SOURCES += main.cpp \ customToolButton.cpp \ vCardManager.cpp \ profileDialog.cpp \ - capabilitiesCollection.cpp \ + capabilitiesCache.cpp \ accountsCache.cpp HEADERS += messageGraphicsItem.h \ @@ -45,7 +45,7 @@ HEADERS += messageGraphicsItem.h \ customToolButton.h \ vCardManager.h \ profileDialog.h \ - capabilitiesCollection.h \ + capabilitiesCache.h \ accountsCache.h FORMS += mainDialog.ui \ diff --git a/examples/GuiClient/capabilitiesCache.cpp b/examples/GuiClient/capabilitiesCache.cpp new file mode 100644 index 00000000..5c01e06f --- /dev/null +++ b/examples/GuiClient/capabilitiesCache.cpp @@ -0,0 +1,178 @@ +/* + * 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. + * + */ + + +#include "capabilitiesCache.h" + +#include "QXmppClient.h" +#include "QXmppDiscoveryManager.h" +#include + +#include +#include +#include + +capabilitiesCache::capabilitiesCache(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 capabilitiesCache::isCapabilityAvailable(const QString& nodeVer) +{ + return m_mapCapabilities.contains(nodeVer); +} + +void capabilitiesCache::requestInfo(const QString& jid, const QString& node) +{ + QXmppDiscoveryManager* ext = m_client->findExtension(); + if(ext) + { + 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; + } + } +} + +void capabilitiesCache::infoReceived(const QXmppDiscoveryIq& discoIqRcv) +{ + QXmppDiscoveryIq discoIq = discoIqRcv; + if(discoIq.queryType() == QXmppDiscoveryIq::InfoQuery && + discoIq.type() == QXmppIq::Result) + { + if(discoIq.queryNode().isEmpty()) + { + discoIq.setQueryNode(m_mapIdNodeVer[discoIq.id()]); + m_mapIdNodeVer.remove(discoIq.id()); + } + + discoIq.setTo(""); + discoIq.setFrom(""); + discoIq.setId(""); + m_mapCapabilities[discoIq.queryNode()] = discoIq; + saveToCache(discoIq.queryNode()); + } +} + +void capabilitiesCache::loadAllFromCache() +{ + m_mapCapabilities.clear(); + + QDir dirCaps(getSettingsDir(m_client->configuration().jidBare())+ "capabilities/"); + if(dirCaps.exists()) + { + QStringList list = dirCaps.entryList(QStringList("*.xml")); + foreach(QString fileName, list) + { + QFile file(getSettingsDir(m_client->configuration().jidBare())+ "capabilities/" + fileName); + if(file.open(QIODevice::ReadOnly)) + { + QDomDocument doc; + if(doc.setContent(&file, true)) + { + QXmppDiscoveryIq discoIq; + discoIq.parse(doc.documentElement()); + m_mapCapabilities[discoIq.queryNode()] = discoIq; + QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); + } + } + } + } +} + +void capabilitiesCache::saveToCache(const QString& nodeVer) +{ + if(!m_mapCapabilities.contains(nodeVer)) + return; + + QString fileName = getImageHash(nodeVer.toUtf8()); + QDir dir; + if(!dir.exists(getSettingsDir(m_client->configuration().jidBare()))) + dir.mkpath(getSettingsDir(m_client->configuration().jidBare())); + + QDir dir2; + if(!dir2.exists(getSettingsDir(m_client->configuration().jidBare())+ "capabilities/")) + dir2.mkpath(getSettingsDir(m_client->configuration().jidBare())+ "capabilities/"); + + QString fileCapability = getSettingsDir(m_client->configuration().jidBare()) + "capabilities/" + fileName + ".xml"; + QFile file(fileCapability); + + if(file.open(QIODevice::ReadWrite)) + { + QXmlStreamWriter stream(&file); + stream.setAutoFormatting(true); + stream.setAutoFormattingIndent(2); + m_mapCapabilities[nodeVer].toXml(&stream); + file.close(); + } +} + +QStringList capabilitiesCache::getFeatures(const QString& nodeVer) +{ + if(!m_mapCapabilities.contains(nodeVer)) + return QStringList(); + + return m_mapCapabilities[nodeVer].features(); +} + +QStringList capabilitiesCache::getIdentities(const QString& nodeVer) +{ + if(!m_mapCapabilities.contains(nodeVer)) + return QStringList(); + + QStringList idList; + QList list = m_mapCapabilities[nodeVer].identities(); + foreach(QXmppDiscoveryIq::Identity identity, list) + { + QStringList tmpList; + if(!identity.name().isEmpty()) + tmpList << identity.name(); + if(!identity.category().isEmpty()) + tmpList << identity.category(); + if(!identity.type().isEmpty()) + tmpList << identity.type(); + if(!identity.language().isEmpty()) + tmpList << identity.language(); + idList << tmpList.join(" | "); + } + return idList; +} + diff --git a/examples/GuiClient/capabilitiesCache.h b/examples/GuiClient/capabilitiesCache.h new file mode 100644 index 00000000..530076dc --- /dev/null +++ b/examples/GuiClient/capabilitiesCache.h @@ -0,0 +1,63 @@ +/* + * 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 capabilitiesCache : public QObject +{ + Q_OBJECT + +public: + capabilitiesCache(QXmppClient* client); + bool isCapabilityAvailable(const QString& nodeVer); + void requestInfo(const QString& jid, const QString& nodeVer); + + void loadAllFromCache(); + void saveToCache(const QString& nodeVer); + + QStringList getFeatures(const QString& nodeVer); + QStringList getIdentities(const QString& nodeVer); + +signals: + +private slots: + void infoReceived(const QXmppDiscoveryIq&); + +private: + QXmppClient* m_client; + + QMap m_mapCapabilities; + QMap m_mapIdNodeVer; +}; + +#endif // CAPABILITIESCOLLECTION_H diff --git a/examples/GuiClient/capabilitiesCollection.cpp b/examples/GuiClient/capabilitiesCollection.cpp deleted file mode 100644 index 138e5182..00000000 --- a/examples/GuiClient/capabilitiesCollection.cpp +++ /dev/null @@ -1,178 +0,0 @@ -/* - * 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. - * - */ - - -#include "capabilitiesCollection.h" - -#include "QXmppClient.h" -#include "QXmppDiscoveryManager.h" -#include - -#include -#include -#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) - { - 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; - } - } -} - -void capabilitiesCollection::infoReceived(const QXmppDiscoveryIq& discoIqRcv) -{ - QXmppDiscoveryIq discoIq = discoIqRcv; - if(discoIq.queryType() == QXmppDiscoveryIq::InfoQuery && - discoIq.type() == QXmppIq::Result) - { - if(discoIq.queryNode().isEmpty()) - { - discoIq.setQueryNode(m_mapIdNodeVer[discoIq.id()]); - m_mapIdNodeVer.remove(discoIq.id()); - } - - discoIq.setTo(""); - discoIq.setFrom(""); - discoIq.setId(""); - m_mapCapabilities[discoIq.queryNode()] = discoIq; - saveToCache(discoIq.queryNode()); - } -} - -void capabilitiesCollection::loadAllFromCache() -{ - m_mapCapabilities.clear(); - - QDir dirCaps(getSettingsDir(m_client->configuration().jidBare())+ "capabilities/"); - if(dirCaps.exists()) - { - QStringList list = dirCaps.entryList(QStringList("*.xml")); - foreach(QString fileName, list) - { - QFile file(getSettingsDir(m_client->configuration().jidBare())+ "capabilities/" + fileName); - if(file.open(QIODevice::ReadOnly)) - { - QDomDocument doc; - if(doc.setContent(&file, true)) - { - QXmppDiscoveryIq discoIq; - discoIq.parse(doc.documentElement()); - m_mapCapabilities[discoIq.queryNode()] = discoIq; - QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); - } - } - } - } -} - -void capabilitiesCollection::saveToCache(const QString& nodeVer) -{ - if(!m_mapCapabilities.contains(nodeVer)) - return; - - QString fileName = getImageHash(nodeVer.toUtf8()); - QDir dir; - if(!dir.exists(getSettingsDir(m_client->configuration().jidBare()))) - dir.mkpath(getSettingsDir(m_client->configuration().jidBare())); - - QDir dir2; - if(!dir2.exists(getSettingsDir(m_client->configuration().jidBare())+ "capabilities/")) - dir2.mkpath(getSettingsDir(m_client->configuration().jidBare())+ "capabilities/"); - - QString fileCapability = getSettingsDir(m_client->configuration().jidBare()) + "capabilities/" + fileName + ".xml"; - QFile file(fileCapability); - - if(file.open(QIODevice::ReadWrite)) - { - QXmlStreamWriter stream(&file); - stream.setAutoFormatting(true); - stream.setAutoFormattingIndent(2); - m_mapCapabilities[nodeVer].toXml(&stream); - file.close(); - } -} - -QStringList capabilitiesCollection::getFeatures(const QString& nodeVer) -{ - if(!m_mapCapabilities.contains(nodeVer)) - return QStringList(); - - return m_mapCapabilities[nodeVer].features(); -} - -QStringList capabilitiesCollection::getIdentities(const QString& nodeVer) -{ - if(!m_mapCapabilities.contains(nodeVer)) - return QStringList(); - - QStringList idList; - QList list = m_mapCapabilities[nodeVer].identities(); - foreach(QXmppDiscoveryIq::Identity identity, list) - { - QStringList tmpList; - if(!identity.name().isEmpty()) - tmpList << identity.name(); - if(!identity.category().isEmpty()) - tmpList << identity.category(); - if(!identity.type().isEmpty()) - tmpList << identity.type(); - if(!identity.language().isEmpty()) - tmpList << identity.language(); - idList << tmpList.join(" | "); - } - return idList; -} - diff --git a/examples/GuiClient/capabilitiesCollection.h b/examples/GuiClient/capabilitiesCollection.h deleted file mode 100644 index 59a78758..00000000 --- a/examples/GuiClient/capabilitiesCollection.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * 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); - - void loadAllFromCache(); - void saveToCache(const QString& nodeVer); - - QStringList getFeatures(const QString& nodeVer); - QStringList getIdentities(const QString& nodeVer); - -signals: - -private slots: - void infoReceived(const QXmppDiscoveryIq&); - -private: - QXmppClient* m_client; - - QMap m_mapCapabilities; - QMap m_mapIdNodeVer; -}; - -#endif // CAPABILITIESCOLLECTION_H diff --git a/examples/GuiClient/mainDialog.h b/examples/GuiClient/mainDialog.h index 39fb903b..f70387c3 100644 --- a/examples/GuiClient/mainDialog.h +++ b/examples/GuiClient/mainDialog.h @@ -34,7 +34,7 @@ #include "statusWidget.h" #include "chatDialog.h" #include "vCardManager.h" -#include "capabilitiesCollection.h" +#include "capabilitiesCache.h" #include "accountsCache.h" #include #include @@ -99,7 +99,7 @@ private: rosterItemSortFilterProxyModel m_rosterItemSortFilterModel; statusWidget m_statusWidget; vCardManager m_vCardManager; - capabilitiesCollection m_capabilitiesCollection; + capabilitiesCache m_capabilitiesCollection; accountsCache m_accountsCache; // map of bare jids and respective chatdlg diff --git a/examples/GuiClient/profileDialog.cpp b/examples/GuiClient/profileDialog.cpp index 7cef4599..fc5c0a44 100644 --- a/examples/GuiClient/profileDialog.cpp +++ b/examples/GuiClient/profileDialog.cpp @@ -11,7 +11,7 @@ #include "QXmppEntityTimeIq.h" #include "QXmppConstants.h" -profileDialog::profileDialog(QWidget *parent, const QString& bareJid, QXmppClient& client, capabilitiesCollection& caps) : +profileDialog::profileDialog(QWidget *parent, const QString& bareJid, QXmppClient& client, capabilitiesCache& caps) : QDialog(parent, Qt::WindowTitleHint|Qt::WindowSystemMenuHint), ui(new Ui::profileDialog), m_bareJid(bareJid), m_xmppClient(client), m_caps(caps) { diff --git a/examples/GuiClient/profileDialog.h b/examples/GuiClient/profileDialog.h index aafbc357..efe54a67 100644 --- a/examples/GuiClient/profileDialog.h +++ b/examples/GuiClient/profileDialog.h @@ -3,7 +3,7 @@ #include #include -#include "capabilitiesCollection.h" +#include "capabilitiesCache.h" namespace Ui { class profileDialog; @@ -18,7 +18,7 @@ class profileDialog : public QDialog Q_OBJECT public: - explicit profileDialog(QWidget *parent, const QString& bareJid, QXmppClient& client, capabilitiesCollection& caps); + explicit profileDialog(QWidget *parent, const QString& bareJid, QXmppClient& client, capabilitiesCache& caps); ~profileDialog(); void setClientRef(QXmppClient& m_xmppClient); @@ -39,7 +39,7 @@ private: Ui::profileDialog *ui; QString m_bareJid; QXmppClient& m_xmppClient; // reference to the active QXmppClient (No ownership) - capabilitiesCollection& m_caps; // reference to the active QXmppClient (No ownership) + capabilitiesCache& m_caps; // reference to the active QXmppClient (No ownership) QMap m_versions; QMap m_time; }; -- cgit v1.2.3