[SCM] ktp-common-internals packaging branch, master, updated. debian/15.12.1-2-1839-gf0635e9
Maximiliano Curia
maxy at moszumanska.debian.org
Mon May 9 09:06:36 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=81836cc
The following commit has been merged in the master branch:
commit 81836cc571eebccb428d7a5afcdbd6b36174698a
Author: Martin Klapetek <martin.klapetek at gmail.com>
Date: Thu Mar 14 13:38:33 2013 +0100
Load avatar from cache for offline contacts
REVIEW: 109460
---
KTp/contact.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++--
KTp/contact.h | 1 +
2 files changed, 43 insertions(+), 2 deletions(-)
diff --git a/KTp/contact.cpp b/KTp/contact.cpp
index 26c8847..84ae642 100644
--- a/KTp/contact.cpp
+++ b/KTp/contact.cpp
@@ -22,12 +22,15 @@
#include <TelepathyQt/Connection>
#include <TelepathyQt/ContactCapabilities>
#include <TelepathyQt/AvatarData>
+#include <TelepathyQt/Utils>
#include <QBitmap>
#include <QPixmap>
#include <QPixmapCache>
#include <KIconLoader>
+#include <KConfigGroup>
+#include <KConfig>
#include "capabilities-hack-private.h"
@@ -105,17 +108,31 @@ QPixmap KTp::Contact::avatarPixmap()
{
QPixmap avatar;
QString file = avatarData().fileName;
- if (file.isEmpty()) {
- avatar = KIconLoader::global()->loadIcon(QLatin1String("im-user"), KIconLoader::NoGroup, 96);
+
+ //if the user is offline, look into the cache for avatar
+ if (file.isEmpty() && presence().type() == Tp::ConnectionPresenceTypeOffline) {
+ KConfig config(QLatin1String("ktelepathy-avatarsrc"));
+ KConfigGroup avatarTokenGroup = config.group(id());
+ QString avatarToken = avatarTokenGroup.readEntry(QLatin1String("avatarToken"));
+
+ if (!avatarToken.isEmpty()) {
+ avatar.load(buildAvatarPath(avatarToken));
+ }
} else {
avatar.load(file);
}
+
+ if (avatar.isNull()) {
+ avatar = KIconLoader::global()->loadIcon(QLatin1String("im-user"), KIconLoader::NoGroup, 96);
+ }
+
if (presence().type() == Tp::ConnectionPresenceTypeOffline) {
if (!QPixmapCache::find(keyCache(),avatar)){
avatarToGray(avatar);
QPixmapCache::insert(keyCache(), avatar);
}
}
+
return avatar;
}
@@ -138,3 +155,26 @@ QString KTp::Contact::keyCache() const
return avatarToken()+QLatin1String("-offline");
}
+QString KTp::Contact::buildAvatarPath(const QString &avatarToken)
+{
+ QString cacheDir = QString::fromLatin1(qgetenv("XDG_CACHE_HOME"));
+ if (cacheDir.isEmpty()) {
+ cacheDir = QString::fromLatin1("%1/.cache").arg(QLatin1String(qgetenv("HOME")));
+ }
+
+ if (manager().isNull()) {
+ return QString();
+ }
+
+ if (manager()->connection().isNull()) {
+ return QString();
+ }
+
+ Tp::ConnectionPtr conn = manager()->connection();
+ QString path = QString::fromLatin1("%1/telepathy/avatars/%2/%3").
+ arg(cacheDir).arg(conn->cmName()).arg(conn->protocolName());
+
+ QString avatarFileName = QString::fromLatin1("%1/%2").arg(path).arg(Tp::escapeAsIdentifier(avatarToken));
+
+ return avatarFileName;
+}
diff --git a/KTp/contact.h b/KTp/contact.h
index da4f895..32af16b 100644
--- a/KTp/contact.h
+++ b/KTp/contact.h
@@ -53,6 +53,7 @@ Q_SIGNALS:
private:
void avatarToGray(QPixmap &avatar);
QString keyCache() const;
+ QString buildAvatarPath(const QString &avatarToken);
};
--
ktp-common-internals packaging
More information about the pkg-kde-commits
mailing list