summaryrefslogtreecommitdiffstats
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
parentc18a49915b4b98ac7f837a1feca3e243ac44940d (diff)
Display user avatar changes
-rw-r--r--include/AvatarProvider.h12
-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
8 files changed, 38 insertions, 26 deletions
diff --git a/include/AvatarProvider.h b/include/AvatarProvider.h
index a58ef0b7..906f2593 100644
--- a/include/AvatarProvider.h
+++ b/include/AvatarProvider.h
@@ -24,6 +24,12 @@
class MatrixClient;
class TimelineItem;
+struct AvatarData
+{
+ QImage img;
+ QUrl url;
+};
+
class AvatarProvider : public QObject
{
Q_OBJECT
@@ -39,8 +45,8 @@ private:
static void updateAvatar(const QString &uid, const QImage &img);
static QSharedPointer<MatrixClient> client_;
- static QMap<QString, QList<TimelineItem *>> toBeResolved_;
- static QMap<QString, QImage> userAvatars_;
- static QMap<QString, QUrl> avatarUrls_;
+ using UserID = QString;
+ static QMap<UserID, AvatarData> avatars_;
+ static QMap<UserID, QList<TimelineItem *>> toBeResolved_;
};
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)