From 5a671a2987f0d905d786587fb700ab6d3e6ddf25 Mon Sep 17 00:00:00 2001 From: Manjeet Dahiya Date: Sun, 26 Sep 2010 10:56:08 +0000 Subject: vCardManager to vCardCache --- examples/GuiClient/GuiClient.pro | 4 +- examples/GuiClient/mainDialog.cpp | 34 ++++----- examples/GuiClient/mainDialog.h | 4 +- examples/GuiClient/vCardCache.cpp | 141 ++++++++++++++++++++++++++++++++++++ examples/GuiClient/vCardCache.h | 64 ++++++++++++++++ examples/GuiClient/vCardManager.cpp | 141 ------------------------------------ examples/GuiClient/vCardManager.h | 64 ---------------- 7 files changed, 226 insertions(+), 226 deletions(-) create mode 100644 examples/GuiClient/vCardCache.cpp create mode 100644 examples/GuiClient/vCardCache.h delete mode 100644 examples/GuiClient/vCardManager.cpp delete mode 100644 examples/GuiClient/vCardManager.h (limited to 'examples/GuiClient') diff --git a/examples/GuiClient/GuiClient.pro b/examples/GuiClient/GuiClient.pro index aab59ea2..dd528beb 100644 --- a/examples/GuiClient/GuiClient.pro +++ b/examples/GuiClient/GuiClient.pro @@ -21,7 +21,7 @@ SOURCES += main.cpp \ avatarWidget.cpp \ statusTextWidget.cpp \ customToolButton.cpp \ - vCardManager.cpp \ + vCardCache.cpp \ profileDialog.cpp \ capabilitiesCache.cpp \ accountsCache.cpp @@ -43,7 +43,7 @@ HEADERS += messageGraphicsItem.h \ avatarWidget.h \ statusTextWidget.h \ customToolButton.h \ - vCardManager.h \ + vCardCache.h \ profileDialog.h \ capabilitiesCache.h \ accountsCache.h diff --git a/examples/GuiClient/mainDialog.cpp b/examples/GuiClient/mainDialog.cpp index 1c7ee434..c0972317 100644 --- a/examples/GuiClient/mainDialog.cpp +++ b/examples/GuiClient/mainDialog.cpp @@ -45,7 +45,7 @@ mainDialog::mainDialog(QWidget *parent): QDialog(parent, Qt::Window), ui(new Ui::mainDialogClass), m_rosterItemModel(this), - m_rosterItemSortFilterModel(this), m_vCardManager(&m_xmppClient), + m_rosterItemSortFilterModel(this), m_vCardCache(&m_xmppClient), m_capabilitiesCache(&m_xmppClient), m_accountsCache(this), m_trayIcon(this), m_trayIconMenu(this), m_quitAction("Quit", this), m_signOutAction("Sign out", this) @@ -152,11 +152,11 @@ mainDialog::mainDialog(QWidget *parent): QDialog(parent, Qt::Window), Q_ASSERT(check); check = connect(&m_xmppClient.vCardManager(), - SIGNAL(vCardReceived(const QXmppVCardIq&)), &m_vCardManager, + SIGNAL(vCardReceived(const QXmppVCardIq&)), &m_vCardCache, SLOT(vCardReceived(const QXmppVCardIq&))); Q_ASSERT(check); - check = connect(&m_vCardManager, + check = connect(&m_vCardCache, SIGNAL(vCardReadyToUse(const QString&)), SLOT(updateVCard(const QString&))); Q_ASSERT(check); @@ -167,14 +167,14 @@ void mainDialog::rosterChanged(const QString& bareJid) m_rosterItemModel.updateRosterEntry(bareJid, m_xmppClient.rosterManager(). getRosterEntry(bareJid)); - bool check = m_vCardManager.isVCardAvailable(bareJid); + bool check = m_vCardCache.isVCardAvailable(bareJid); if(check) { updateVCard(bareJid); } else { - m_vCardManager.requestVCard(bareJid); + m_vCardCache.requestVCard(bareJid); } } @@ -227,11 +227,11 @@ void mainDialog::presenceChanged(const QString& bareJid, const QString& resource // QXmppPresence::Type presenceType = presences.begin().value().getType(); -// if(!m_vCardManager.isVCardAvailable(bareJid) && +// if(!m_vCardCache.isVCardAvailable(bareJid) && // presenceType == QXmppPresence::Available) // { // m_rosterItemModel.updateAvatar(bareJid, -// m_vCardManager.getVCard(bareJid).image); +// m_vCardCache.getVCard(bareJid).image); // } } @@ -418,7 +418,7 @@ void mainDialog::signIn() m_rosterItemModel.clear(); - m_vCardManager.loadAllFromCache(); + m_vCardCache.loadAllFromCache(); m_capabilitiesCache.loadAllFromCache(); startConnection(); @@ -514,17 +514,17 @@ void mainDialog::updateVCard(const QString& bareJid) if(bareJid != m_xmppClient.configuration().jidBare()) { m_rosterItemModel.updateAvatar(bareJid, - m_vCardManager.getAvatar(bareJid)); - m_rosterItemModel.updateName(bareJid, m_vCardManager.getVCard(bareJid).fullName()); + m_vCardCache.getAvatar(bareJid)); + m_rosterItemModel.updateName(bareJid, m_vCardCache.getVCard(bareJid).fullName()); } else { - if(m_vCardManager.getSelfFullName().isEmpty()) + if(m_vCardCache.getSelfFullName().isEmpty()) m_statusWidget.setDisplayName(m_xmppClient.configuration().jidBare()); else - m_statusWidget.setDisplayName(m_vCardManager.getSelfFullName()); + m_statusWidget.setDisplayName(m_vCardCache.getSelfFullName()); - m_statusWidget.setAvatar(m_vCardManager.getAvatar(bareJid)); + m_statusWidget.setAvatar(m_vCardCache.getAvatar(bareJid)); } } @@ -536,13 +536,13 @@ void mainDialog::showProfile(const QString& bareJid) profileDialog dlg(this, bareJid, m_xmppClient, m_capabilitiesCache); dlg.setBareJid(bareJid); // TODO use original image - if(!m_vCardManager.getAvatar(bareJid).isNull()) - dlg.setAvatar(m_vCardManager.getAvatar(bareJid)); + if(!m_vCardCache.getAvatar(bareJid).isNull()) + dlg.setAvatar(m_vCardCache.getAvatar(bareJid)); QStringList resources = m_xmppClient.rosterManager().getResources(bareJid); - dlg.setFullName(m_vCardManager.getVCard(bareJid).fullName()); + dlg.setFullName(m_vCardCache.getVCard(bareJid).fullName()); - if(m_vCardManager.getVCard(bareJid).fullName().isEmpty()) + if(m_vCardCache.getVCard(bareJid).fullName().isEmpty()) dlg.setFullName(m_xmppClient.rosterManager().getRosterEntry(bareJid).name()); dlg.exec(); diff --git a/examples/GuiClient/mainDialog.h b/examples/GuiClient/mainDialog.h index 5e60476d..9c3f6ae9 100644 --- a/examples/GuiClient/mainDialog.h +++ b/examples/GuiClient/mainDialog.h @@ -33,7 +33,7 @@ #include #include "statusWidget.h" #include "chatDialog.h" -#include "vCardManager.h" +#include "vCardCache.h" #include "capabilitiesCache.h" #include "accountsCache.h" #include @@ -99,7 +99,7 @@ private: rosterItemModel m_rosterItemModel; rosterItemSortFilterProxyModel m_rosterItemSortFilterModel; statusWidget m_statusWidget; - vCardManager m_vCardManager; + vCardCache m_vCardCache; capabilitiesCache m_capabilitiesCache; accountsCache m_accountsCache; diff --git a/examples/GuiClient/vCardCache.cpp b/examples/GuiClient/vCardCache.cpp new file mode 100644 index 00000000..858edd5d --- /dev/null +++ b/examples/GuiClient/vCardCache.cpp @@ -0,0 +1,141 @@ +/* + * 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 "vCardCache.h" +#include "QXmppClient.h" +#include "QXmppUtils.h" +#include "utils.h" +#include "QXmppVCardManager.h" +#include +#include +#include +#include +#include +#include + +vCardCache::vCardCache(QXmppClient* client) : QObject(client), + m_client(client) +{ +} + +void vCardCache::vCardReceived(const QXmppVCardIq& vcard) +{ + QString from = vcard.from(); + if(from.isEmpty() && m_client) + { + from = m_client->configuration().jidBare(); + m_selfFullName = vcard.fullName(); + } + + m_mapBareJidVcard[from] = vcard; + + saveToCache(from); + + emit vCardReadyToUse(from); +} + +bool vCardCache::isVCardAvailable(const QString& bareJid) +{ + return m_mapBareJidVcard.contains(bareJid); +} + +void vCardCache::requestVCard(const QString& bareJid) +{ + if(m_client) + m_client->vCardManager().requestVCard(bareJid); +} + +//TODO not a good way to handle +QXmppVCardIq& vCardCache::getVCard(const QString& bareJid) +{ + return m_mapBareJidVcard[bareJid]; +} + +void vCardCache::saveToCache(const QString& bareJid) +{ + 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())+ "vCards/")) + dir2.mkpath(getSettingsDir(m_client->configuration().jidBare())+ "vCards/"); + + foreach(QString bareJid, m_mapBareJidVcard.keys()) + { + QString fileVCard = getSettingsDir(m_client->configuration().jidBare()) + "vCards/" + bareJid + ".xml"; + QFile file(fileVCard); + + if(file.open(QIODevice::ReadWrite)) + { + QXmlStreamWriter stream(&file); + stream.setAutoFormatting(true); + stream.setAutoFormattingIndent(2); + m_mapBareJidVcard[bareJid].toXml(&stream); + file.close(); + } + } +} + +void vCardCache::loadAllFromCache() +{ + m_mapBareJidVcard.clear(); + + QDir dirVCards(getSettingsDir(m_client->configuration().jidBare())+ "vCards/"); + if(dirVCards.exists()) + { + QStringList list = dirVCards.entryList(QStringList("*.xml")); + foreach(QString fileName, list) + { + QFile file(getSettingsDir(m_client->configuration().jidBare())+ "vCards/" + fileName); + QString bareJid = fileName; + bareJid.chop(4); + if(file.open(QIODevice::ReadOnly)) + { + QDomDocument doc; + if(doc.setContent(&file, true)) + { + QXmppVCardIq vCardIq; + vCardIq.parse(doc.documentElement()); + m_mapBareJidVcard[bareJid] = vCardIq; + QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); + } + } + } + } +} + +QString vCardCache::getSelfFullName() +{ + return m_selfFullName; +} + +// this should return scaled image +QImage vCardCache::getAvatar(const QString& bareJid) const +{ + if(m_mapBareJidVcard.contains(bareJid)) + return getImageFromByteArray(m_mapBareJidVcard[bareJid].photo()); + else + return QImage(); +} diff --git a/examples/GuiClient/vCardCache.h b/examples/GuiClient/vCardCache.h new file mode 100644 index 00000000..f96ff18c --- /dev/null +++ b/examples/GuiClient/vCardCache.h @@ -0,0 +1,64 @@ +/* + * 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 VCARDMANAGER_H +#define VCARDMANAGER_H + +#include +#include +#include +#include "QXmppVCardIq.h" + +// use sqlite + +class QXmppClient; + +class vCardCache : public QObject +{ + Q_OBJECT + +public: + vCardCache(QXmppClient* client); + void requestVCard(const QString& bareJid); + bool isVCardAvailable(const QString& bareJid); + QImage getAvatar(const QString& bareJid) const; + QXmppVCardIq& getVCard(const QString& bareJid); + void loadAllFromCache(); + void saveToCache(const QString& bareJid); + QString getSelfFullName(); + +signals: + void vCardReadyToUse(const QString& bareJid); + +public slots: + void vCardReceived(const QXmppVCardIq&); + +private: + QString m_selfFullName; + QXmppClient* m_client; + + QMap m_mapBareJidVcard; +}; + +#endif // VCARDMANAGER_H diff --git a/examples/GuiClient/vCardManager.cpp b/examples/GuiClient/vCardManager.cpp deleted file mode 100644 index 778b7a08..00000000 --- a/examples/GuiClient/vCardManager.cpp +++ /dev/null @@ -1,141 +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 "vCardManager.h" -#include "QXmppClient.h" -#include "QXmppUtils.h" -#include "utils.h" -#include "QXmppVCardManager.h" -#include -#include -#include -#include -#include -#include - -vCardManager::vCardManager(QXmppClient* client) : QObject(client), - m_client(client) -{ -} - -void vCardManager::vCardReceived(const QXmppVCardIq& vcard) -{ - QString from = vcard.from(); - if(from.isEmpty() && m_client) - { - from = m_client->configuration().jidBare(); - m_selfFullName = vcard.fullName(); - } - - m_mapBareJidVcard[from] = vcard; - - saveToCache(from); - - emit vCardReadyToUse(from); -} - -bool vCardManager::isVCardAvailable(const QString& bareJid) -{ - return m_mapBareJidVcard.contains(bareJid); -} - -void vCardManager::requestVCard(const QString& bareJid) -{ - if(m_client) - m_client->vCardManager().requestVCard(bareJid); -} - -//TODO not a good way to handle -QXmppVCardIq& vCardManager::getVCard(const QString& bareJid) -{ - return m_mapBareJidVcard[bareJid]; -} - -void vCardManager::saveToCache(const QString& bareJid) -{ - 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())+ "vCards/")) - dir2.mkpath(getSettingsDir(m_client->configuration().jidBare())+ "vCards/"); - - foreach(QString bareJid, m_mapBareJidVcard.keys()) - { - QString fileVCard = getSettingsDir(m_client->configuration().jidBare()) + "vCards/" + bareJid + ".xml"; - QFile file(fileVCard); - - if(file.open(QIODevice::ReadWrite)) - { - QXmlStreamWriter stream(&file); - stream.setAutoFormatting(true); - stream.setAutoFormattingIndent(2); - m_mapBareJidVcard[bareJid].toXml(&stream); - file.close(); - } - } -} - -void vCardManager::loadAllFromCache() -{ - m_mapBareJidVcard.clear(); - - QDir dirVCards(getSettingsDir(m_client->configuration().jidBare())+ "vCards/"); - if(dirVCards.exists()) - { - QStringList list = dirVCards.entryList(QStringList("*.xml")); - foreach(QString fileName, list) - { - QFile file(getSettingsDir(m_client->configuration().jidBare())+ "vCards/" + fileName); - QString bareJid = fileName; - bareJid.chop(4); - if(file.open(QIODevice::ReadOnly)) - { - QDomDocument doc; - if(doc.setContent(&file, true)) - { - QXmppVCardIq vCardIq; - vCardIq.parse(doc.documentElement()); - m_mapBareJidVcard[bareJid] = vCardIq; - QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); - } - } - } - } -} - -QString vCardManager::getSelfFullName() -{ - return m_selfFullName; -} - -// this should return scaled image -QImage vCardManager::getAvatar(const QString& bareJid) const -{ - if(m_mapBareJidVcard.contains(bareJid)) - return getImageFromByteArray(m_mapBareJidVcard[bareJid].photo()); - else - return QImage(); -} diff --git a/examples/GuiClient/vCardManager.h b/examples/GuiClient/vCardManager.h deleted file mode 100644 index dcd5e774..00000000 --- a/examples/GuiClient/vCardManager.h +++ /dev/null @@ -1,64 +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 VCARDMANAGER_H -#define VCARDMANAGER_H - -#include -#include -#include -#include "QXmppVCardIq.h" - -// use sqlite - -class QXmppClient; - -class vCardManager : public QObject -{ - Q_OBJECT - -public: - vCardManager(QXmppClient* client); - void requestVCard(const QString& bareJid); - bool isVCardAvailable(const QString& bareJid); - QImage getAvatar(const QString& bareJid) const; - QXmppVCardIq& getVCard(const QString& bareJid); - void loadAllFromCache(); - void saveToCache(const QString& bareJid); - QString getSelfFullName(); - -signals: - void vCardReadyToUse(const QString& bareJid); - -public slots: - void vCardReceived(const QXmppVCardIq&); - -private: - QString m_selfFullName; - QXmppClient* m_client; - - QMap m_mapBareJidVcard; -}; - -#endif // VCARDMANAGER_H -- cgit v1.2.3