summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-28 21:11:40 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-28 21:11:40 +0300
commite224440f5df4e39df3fed5f30e13c773a65fe01b (patch)
tree2c8c41b45da6a78e5638a76d6cecc566d239afc2 /src
parentSave the changes between syncs in cache (diff)
downloadnheko-e224440f5df4e39df3fed5f30e13c773a65fe01b.tar.xz
Display user avatar changes
Diffstat (limited to 'src')
-rw-r--r--src/AvatarProvider.cc42
-rw-r--r--src/EmojiPickButton.cc2
-rw-r--r--src/Login.cc2
-rw-r--r--src/LoginPage.cc2
-rw-r--r--src/Profile.cc1
-rw-r--r--src/Register.cc1
-rw-r--r--src/RegisterPage.cc2
7 files changed, 29 insertions, 23 deletions
diff --git a/src/AvatarProvider.cc b/src/AvatarProvider.cc

index ab938cb1..7e8c9e49 100644 --- a/src/AvatarProvider.cc +++ b/src/AvatarProvider.cc
@@ -21,8 +21,7 @@ QSharedPointer<MatrixClient> AvatarProvider::client_; -QMap<QString, QImage> AvatarProvider::userAvatars_; -QMap<QString, QUrl> AvatarProvider::avatarUrls_; +QMap<QString, AvatarData> AvatarProvider::avatars_; QMap<QString, QList<TimelineItem *>> AvatarProvider::toBeResolved_; void @@ -46,45 +45,50 @@ AvatarProvider::updateAvatar(const QString &uid, const QImage &img) toBeResolved_.remove(uid); } - userAvatars_.insert(uid, img); + auto avatarData = avatars_[uid]; + avatarData.img = img; + + avatars_.insert(uid, avatarData); } void AvatarProvider::resolve(const QString &userId, TimelineItem *item) { - if (userAvatars_.contains(userId)) { - auto img = userAvatars_[userId]; + if (!avatars_.contains(userId)) + return; - item->setUserAvatar(img); + auto img = avatars_[userId].img; + if (!img.isNull()) { + item->setUserAvatar(img); return; } - if (avatarUrls_.contains(userId)) { - // Add the current timeline item to the waiting list for this avatar. - if (!toBeResolved_.contains(userId)) { - client_->fetchUserAvatar(userId, avatarUrls_[userId]); + // Add the current timeline item to the waiting list for this avatar. + if (!toBeResolved_.contains(userId)) { + client_->fetchUserAvatar(userId, avatars_[userId].url); - QList<TimelineItem *> timelineItems; - timelineItems.push_back(item); + QList<TimelineItem *> timelineItems; + timelineItems.push_back(item); - toBeResolved_.insert(userId, timelineItems); - } else { - toBeResolved_[userId].push_back(item); - } + toBeResolved_.insert(userId, timelineItems); + } else { + toBeResolved_[userId].push_back(item); } } void AvatarProvider::setAvatarUrl(const QString &userId, const QUrl &url) { - avatarUrls_.insert(userId, url); + AvatarData data; + data.url = url; + + avatars_.insert(userId, data); } void AvatarProvider::clear() { - userAvatars_.clear(); - avatarUrls_.clear(); + avatars_.clear(); toBeResolved_.clear(); } diff --git a/src/EmojiPickButton.cc b/src/EmojiPickButton.cc
index 17716f6f..a63ca0b2 100644 --- a/src/EmojiPickButton.cc +++ b/src/EmojiPickButton.cc
@@ -15,8 +15,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "EmojiPanel.h" #include "EmojiPickButton.h" +#include "EmojiPanel.h" EmojiPickButton::EmojiPickButton(QWidget *parent) : FlatButton(parent) diff --git a/src/Login.cc b/src/Login.cc
index 69338f2c..a9e303f9 100644 --- a/src/Login.cc +++ b/src/Login.cc
@@ -15,8 +15,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "Deserializable.h" #include "Login.h" +#include "Deserializable.h" LoginRequest::LoginRequest() {} diff --git a/src/LoginPage.cc b/src/LoginPage.cc
index c1ba352c..528b7442 100644 --- a/src/LoginPage.cc +++ b/src/LoginPage.cc
@@ -15,11 +15,11 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "LoginPage.h" #include "Config.h" #include "FlatButton.h" #include "InputValidator.h" #include "LoadingIndicator.h" -#include "LoginPage.h" #include "MatrixClient.h" #include "OverlayModal.h" #include "RaisedButton.h" diff --git a/src/Profile.cc b/src/Profile.cc
index 38795e49..8eaafe07 100644 --- a/src/Profile.cc +++ b/src/Profile.cc
@@ -16,6 +16,7 @@ */ #include "Deserializable.h" + #include "Profile.h" void diff --git a/src/Register.cc b/src/Register.cc
index 0fe2ddce..7453c943 100644 --- a/src/Register.cc +++ b/src/Register.cc
@@ -16,6 +16,7 @@ */ #include "Deserializable.h" + #include "Register.h" RegisterRequest::RegisterRequest(const QString &username, const QString &password) diff --git a/src/RegisterPage.cc b/src/RegisterPage.cc
index d8186f65..304a7dc0 100644 --- a/src/RegisterPage.cc +++ b/src/RegisterPage.cc
@@ -15,13 +15,13 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "RegisterPage.h" #include "Avatar.h" #include "Config.h" #include "FlatButton.h" #include "InputValidator.h" #include "MatrixClient.h" #include "RaisedButton.h" -#include "RegisterPage.h" #include "TextField.h" RegisterPage::RegisterPage(QSharedPointer<MatrixClient> client, QWidget *parent)