diff options
| author | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-11 20:00:44 +0000 |
|---|---|---|
| committer | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-11 20:00:44 +0000 |
| commit | 2b81524fb99270b7fc06d5f1b5ec52dec651c125 (patch) | |
| tree | 38a7086d43e59e722620101655732899690f54da /examples/GuiClient/vCardManager.cpp | |
| parent | 451dd12c708bc42a26386e43f1968f2122211581 (diff) | |
| download | qxmpp-2b81524fb99270b7fc06d5f1b5ec52dec651c125.tar.gz | |
use QXmppVCardIq instead of intermediate VCard class
Diffstat (limited to 'examples/GuiClient/vCardManager.cpp')
| -rw-r--r-- | examples/GuiClient/vCardManager.cpp | 167 |
1 files changed, 112 insertions, 55 deletions
diff --git a/examples/GuiClient/vCardManager.cpp b/examples/GuiClient/vCardManager.cpp index ada8fb30..4909c906 100644 --- a/examples/GuiClient/vCardManager.cpp +++ b/examples/GuiClient/vCardManager.cpp @@ -28,9 +28,11 @@ #include "utils.h" #include "QXmppVCardManager.h" #include <QFile> +#include <QDir> #include <QDomDocument> #include <QTextStream> #include <QCoreApplication> +#include <QDomDocument> vCardManager::vCardManager(QXmppClient* client) : QObject(client), m_client(client) @@ -46,36 +48,34 @@ void vCardManager::vCardReceived(const QXmppVCardIq& vcard) m_selfFullName = vcard.fullName(); } -// m_mapBareJidVcard[from] = vcard; - - m_mapBareJidVCard[from].fullName = vcard.fullName(); + m_mapBareJidVcard[from] = vcard; - if(m_mapBareJidVCard[from].imageHash == getImageHash(vcard.photo())) - { - emit vCardReadyToUse(from); - return; - } +// if(m_mapBareJidVCard[from].imageHash == getImageHash(vcard.photo())) +// { +// emit vCardReadyToUse(from); +// return; +// } - if(!m_mapBareJidVCard[from].imageHash.isEmpty()) - { - QString fileName = getSettingsDir() + m_mapBareJidVCard[from].imageHash; - QFile file1(fileName + "_original.png"); - QFile file2(fileName + "_scaled.png"); - file1.remove(); - file2.remove(); - } +// if(!m_mapBareJidVCard[from].imageHash.isEmpty()) +// { +// QString fileName = getSettingsDir() + m_mapBareJidVCard[from].imageHash; +// QFile file1(fileName + "_original.png"); +// QFile file2(fileName + "_scaled.png"); +// file1.remove(); +// file2.remove(); +// } - m_mapBareJidVCard[from].imageHash = getImageHash(vcard.photo()); +// m_mapBareJidVCard[from].imageHash = getImageHash(vcard.photo()); - QImage image = getImageFromByteArray(vcard.photo()); - m_mapBareJidVCard[from].imageOriginal = image; +// QImage image = getImageFromByteArray(vcard.photo()); +// m_mapBareJidVCard[from].imageOriginal = image; - if(!image.isNull()) - m_mapBareJidVCard[from].image = image.scaledToWidth(32); +// if(!image.isNull()) +// m_mapBareJidVCard[from].image = image.scaledToWidth(32); - QString fileName = getSettingsDir() + m_mapBareJidVCard[from].imageHash; - m_mapBareJidVCard[from].imageOriginal.save(fileName + "_original.png", "PNG"); - m_mapBareJidVCard[from].image.save(fileName + "_scaled.png", "PNG"); +// QString fileName = getSettingsDir() + m_mapBareJidVCard[from].imageHash; +// m_mapBareJidVCard[from].imageOriginal.save(fileName + "_original.png", "PNG"); +// m_mapBareJidVCard[from].image.save(fileName + "_scaled.png", "PNG"); saveToCache(from); @@ -84,7 +84,7 @@ void vCardManager::vCardReceived(const QXmppVCardIq& vcard) bool vCardManager::isVCardAvailable(const QString& bareJid) { - return m_mapBareJidVCard.contains(bareJid); + return m_mapBareJidVcard.contains(bareJid); } void vCardManager::requestVCard(const QString& bareJid) @@ -93,27 +93,49 @@ void vCardManager::requestVCard(const QString& bareJid) m_client->vCardManager().requestVCard(bareJid); } -vCardManager::vCard& vCardManager::getVCard(const QString& bareJid) +//TODO not a good way to handle +QXmppVCardIq& vCardManager::getVCard(const QString& bareJid) { - return m_mapBareJidVCard[bareJid]; + return m_mapBareJidVcard[bareJid]; } void vCardManager::saveToCache(const QString& bareJid) { - QString fileBareJidImageMap = getSettingsDir() + m_client->configuration().jidBare() + "_jidimage"; - QFile file(fileBareJidImageMap); +// QString fileBareJidImageMap = getSettingsDir() + m_client->configuration().jidBare() + "_jidimage"; +// QFile file(fileBareJidImageMap); + +// if(!file.open(QIODevice::ReadWrite)) +// return; - if(!file.open(QIODevice::ReadWrite)) - return; +// QTextStream out(&file); +// QMap<QString, vCardManager::vCard>::const_iterator i = m_mapBareJidVCard.constBegin(); +// while(i != m_mapBareJidVCard.constEnd()) +// { +// out << i.key() << "\n" << i.value().imageHash << "\n"; +// ++i; +// } +// file.close(); - QTextStream out(&file); - QMap<QString, vCardManager::vCard>::const_iterator i = m_mapBareJidVCard.constBegin(); - while(i != m_mapBareJidVCard.constEnd()) + 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()) { - out << i.key() << "\n" << i.value().imageHash << "\n"; - ++i; + QString fileVCard = getSettingsDir(m_client->configuration().jidBare()) + "vCards/" + bareJid + ".xml"; + QFile file(fileVCard); + + if(file.open(QIODevice::ReadWrite)) + { + QXmlStreamWriter stream(&file); + m_mapBareJidVcard[bareJid].toXml(&stream); + file.close(); + } } - file.close(); // if(!m_mapBareJidVCard.contains(bareJid)) // return; @@ -152,26 +174,52 @@ void vCardManager::saveToCache(const QString& bareJid) void vCardManager::loadAllFromCache() { - QString fileBareJidImageMap = getSettingsDir() + m_client->configuration().jidBare() + "_jidimage"; - QFile file(fileBareJidImageMap); - if(!file.open(QIODevice::ReadOnly)) - return; - - QString bareJid, imageHash; - while(!file.atEnd()) + QDir dirVCards(getSettingsDir(m_client->configuration().jidBare())+ "vCards/"); + if(dirVCards.exists()) { - bareJid = file.readLine(); - bareJid = bareJid.trimmed(); - imageHash = file.readLine(); - imageHash = imageHash.trimmed(); - m_mapBareJidVCard[bareJid].imageHash = imageHash; - m_mapBareJidVCard[bareJid].image.load( - getSettingsDir() + m_mapBareJidVCard[bareJid].imageHash + "_scaled.png"); - m_mapBareJidVCard[bareJid].imageOriginal.load( - getSettingsDir() + m_mapBareJidVCard[bareJid].imageHash + "_original.png"); - QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); + QStringList list = dirVCards.entryList(QStringList("*.xml")); + foreach(QString fileName, list) + { + QFile file(getSettingsDir(m_client->configuration().jidBare())+ "vCards/" + fileName); + if(file.open(QIODevice::ReadOnly)) + { + QDomDocument doc; + if(doc.setContent(&file, true)) + { + QXmppVCardIq vCardIq; + vCardIq.parse(doc.documentElement()); + m_mapBareJidVcard[m_client->configuration().jidBare()] = vCardIq; + QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); + } + } + } } - file.close(); + +// QString fileBareJidImageMap = getSettingsDir() + m_client->configuration().jidBare() + "_jidimage"; +// QFile file(fileBareJidImageMap); +// if(!file.open(QIODevice::ReadOnly)) +// return; + +// QString bareJid, imageHash; +// while(!file.atEnd()) +// { +// bareJid = file.readLine(); +// bareJid = bareJid.trimmed(); +// imageHash = file.readLine(); +// imageHash = imageHash.trimmed(); + +// if(m_mapBareJidVcard.contains(bareJid)) +// m_mapBareJidVCard[bareJid].fullName = m_mapBareJidVcard[bareJid].fullName(); + +// m_mapBareJidVCard[bareJid].imageHash = imageHash; +// m_mapBareJidVCard[bareJid].image.load( +// getSettingsDir() + m_mapBareJidVCard[bareJid].imageHash + "_scaled.png"); +// m_mapBareJidVCard[bareJid].imageOriginal.load( +// getSettingsDir() + m_mapBareJidVCard[bareJid].imageHash + "_original.png"); +// QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); +// } +// file.close(); + // QString fileBareJidImageMap = getSettingsDir() + m_client->configuration().jidBare() + "_jidimage.xml"; // QDomDocument doc(m_client->configuration().jidBare() + "_jidimage"); @@ -200,3 +248,12 @@ QString vCardManager::getSelfFullName() { return m_selfFullName; } + +// this should return scaled image +QImage vCardManager::getAvatar(const QString& bareJid) const +{ + if(m_mapBareJidVcard.contains(bareJid)) + return m_mapBareJidVcard[bareJid].photoAsImage(); + else + return QImage(); +} |
