aboutsummaryrefslogtreecommitdiff
path: root/examples/GuiClient/vCardManager.cpp
diff options
context:
space:
mode:
authorManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-11 20:00:44 +0000
committerManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-11 20:00:44 +0000
commit2b81524fb99270b7fc06d5f1b5ec52dec651c125 (patch)
tree38a7086d43e59e722620101655732899690f54da /examples/GuiClient/vCardManager.cpp
parent451dd12c708bc42a26386e43f1968f2122211581 (diff)
downloadqxmpp-2b81524fb99270b7fc06d5f1b5ec52dec651c125.tar.gz
use QXmppVCardIq instead of intermediate VCard class
Diffstat (limited to 'examples/GuiClient/vCardManager.cpp')
-rw-r--r--examples/GuiClient/vCardManager.cpp167
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();
+}