Fetch user profile image by using UserImageProvider.
[situare] / src / qmlui / userimageprovider.cpp
index 6b1ec51..c767e01 100644 (file)
@@ -1,9 +1,11 @@
 #include "userimageprovider.h"
 #include "../user/friendmodel.h"
+#include "../user/profile.h"
 
-UserImageProvider::UserImageProvider(FriendModel* friendModel) :
+UserImageProvider::UserImageProvider(FriendModel* friendModel, Profile *profile) :
     QDeclarativeImageProvider(QDeclarativeImageProvider::Image),
-    friendModel(friendModel)
+    friendModel(friendModel),
+    profile(profile)
 {
 }
 
@@ -13,9 +15,8 @@ UserImageProvider::~UserImageProvider()
 
 QImage UserImageProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
 {
-    Q_UNUSED(size);
-    Q_UNUSED(requestedSize);
     Q_ASSERT(friendModel);
+    Q_ASSERT(profile);
 
     for (int i=0; i<friendModel->rowCount(); ++i) {
         const QModelIndex index = friendModel->index(i);
@@ -23,6 +24,8 @@ QImage UserImageProvider::requestImage(const QString &id, QSize *size, const QSi
             const QPixmap pixmap = friendModel->data(index, FriendModel::ImageRole).value<QPixmap>();
             if (!pixmap.isNull()) {
                 QImage image = pixmap.toImage();
+                size->setHeight(image.height());
+                size->setWidth(image.width());
                 if (requestedSize.isValid())
                     image = image.scaled(requestedSize);
                 return image;
@@ -30,5 +33,14 @@ QImage UserImageProvider::requestImage(const QString &id, QSize *size, const QSi
             break;
         }
     }
+    if ((profile->userId() == id) && !profile->pixmap().isNull()) {
+        QImage image = profile->pixmap().toImage();
+        size->setHeight(image.height());
+        size->setWidth(image.width());
+        if (requestedSize.isValid())
+            image = image.scaled(requestedSize);
+        return image;
+    }
+
     return QImage();
 }