[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