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 | |
| parent | 451dd12c708bc42a26386e43f1968f2122211581 (diff) | |
| download | qxmpp-2b81524fb99270b7fc06d5f1b5ec52dec651c125.tar.gz | |
use QXmppVCardIq instead of intermediate VCard class
Diffstat (limited to 'examples/GuiClient')
| -rw-r--r-- | examples/GuiClient/mainDialog.cpp | 18 | ||||
| -rw-r--r-- | examples/GuiClient/utils.cpp | 7 | ||||
| -rw-r--r-- | examples/GuiClient/utils.h | 2 | ||||
| -rw-r--r-- | examples/GuiClient/vCardManager.cpp | 167 | ||||
| -rw-r--r-- | examples/GuiClient/vCardManager.h | 16 |
5 files changed, 130 insertions, 80 deletions
diff --git a/examples/GuiClient/mainDialog.cpp b/examples/GuiClient/mainDialog.cpp index dcbb7e60..d9f72f27 100644 --- a/examples/GuiClient/mainDialog.cpp +++ b/examples/GuiClient/mainDialog.cpp @@ -152,8 +152,7 @@ void mainDialog::rosterChanged(const QString& bareJid) bool check = m_vCardManager.isVCardAvailable(bareJid);
if(check)
{
- m_rosterItemModel.updateAvatar(bareJid,
- m_vCardManager.getVCard(bareJid).image);
+ m_rosterItemModel.updateAvatar(bareJid, m_vCardManager.getAvatar(bareJid));
}
else
{
@@ -438,8 +437,8 @@ void mainDialog::updateVCard(const QString& bareJid) if(bareJid != m_xmppClient.configuration().jidBare())
{
m_rosterItemModel.updateAvatar(bareJid,
- m_vCardManager.getVCard(bareJid).image);
- m_rosterItemModel.updateName(bareJid, m_vCardManager.getVCard(bareJid).fullName);
+ m_vCardManager.getAvatar(bareJid));
+ m_rosterItemModel.updateName(bareJid, m_vCardManager.getVCard(bareJid).fullName());
}
else
{
@@ -448,7 +447,7 @@ void mainDialog::updateVCard(const QString& bareJid) else
m_statusWidget.setDisplayName(m_vCardManager.getSelfFullName());
- m_statusWidget.setAvatar(m_vCardManager.getVCard(bareJid).image);
+ m_statusWidget.setAvatar(m_vCardManager.getAvatar(bareJid));
}
}
@@ -459,13 +458,14 @@ void mainDialog::showProfile(const QString& bareJid) profileDialog dlg(this, bareJid, m_xmppClient);
dlg.setBareJid(bareJid);
- if(!m_vCardManager.getVCard(bareJid).imageOriginal.isNull())
- dlg.setAvatar(m_vCardManager.getVCard(bareJid).imageOriginal);
+ // TODO use original image
+ if(!m_vCardManager.getAvatar(bareJid).isNull())
+ dlg.setAvatar(m_vCardManager.getAvatar(bareJid));
QStringList resources = m_xmppClient.rosterManager().getResources(bareJid);
- dlg.setFullName(m_vCardManager.getVCard(bareJid).fullName);
+ dlg.setFullName(m_vCardManager.getVCard(bareJid).fullName());
- if(m_vCardManager.getVCard(bareJid).fullName.isEmpty())
+ if(m_vCardManager.getVCard(bareJid).fullName().isEmpty())
dlg.setFullName(m_xmppClient.rosterManager().getRosterEntry(bareJid).name());
dlg.exec();
diff --git a/examples/GuiClient/utils.cpp b/examples/GuiClient/utils.cpp index 08adbc8a..251a7366 100644 --- a/examples/GuiClient/utils.cpp +++ b/examples/GuiClient/utils.cpp @@ -99,9 +99,12 @@ QString presenceToStatusText(const QXmppPresence& presence) return statusText;
}
-QString getSettingsDir()
+QString getSettingsDir(const QString& bareJid)
{
- return "appCache/";
+ if(bareJid.isEmpty())
+ return "appCache/";
+ else
+ return QString("appCache/%1/").arg(bareJid);
}
QString getImageHash(const QByteArray& image)
diff --git a/examples/GuiClient/utils.h b/examples/GuiClient/utils.h index 6bc94e05..020811df 100644 --- a/examples/GuiClient/utils.h +++ b/examples/GuiClient/utils.h @@ -36,7 +36,7 @@ int comparisonWeightsPresenceType(QXmppPresence::Type); QString presenceToStatusText(const QXmppPresence& presence);
-QString getSettingsDir();
+QString getSettingsDir(const QString& bareJid = "");
QString getImageHash(const QByteArray& image);
QImage getImageFromByteArray(const QByteArray& image);
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(); +} diff --git a/examples/GuiClient/vCardManager.h b/examples/GuiClient/vCardManager.h index bb0700ee..aecde92a 100644 --- a/examples/GuiClient/vCardManager.h +++ b/examples/GuiClient/vCardManager.h @@ -39,21 +39,12 @@ class vCardManager : public QObject Q_OBJECT
public:
- class vCard
- {
- public:
- QString fullName;
- QString imageHash;
- QImage image;
- QImage imageOriginal;
- };
-
vCardManager(QXmppClient* client);
void requestVCard(const QString& bareJid);
// bool isVCardReceived(const QString& bareJid);
bool isVCardAvailable(const QString& bareJid);
-
- vCardManager::vCard& getVCard(const QString& bareJid);
+ QImage getAvatar(const QString& bareJid) const;
+ QXmppVCardIq& getVCard(const QString& bareJid);
void loadAllFromCache();
void saveToCache(const QString& bareJid);
QString getSelfFullName();
@@ -68,8 +59,7 @@ private: QString m_selfFullName;
QXmppClient* m_client;
-// QMap<QString, QXmppVCard> m_mapBareJidVcard;
- QMap<QString, vCardManager::vCard> m_mapBareJidVCard;
+ QMap<QString, QXmppVCardIq> m_mapBareJidVcard;
};
#endif // VCARDMANAGER_H
|
