diff --git a/include/Cache.h b/include/Cache.h
index c141a42a..1f6c59f0 100644
--- a/include/Cache.h
+++ b/include/Cache.h
@@ -48,6 +48,9 @@ public:
bool isFormatValid();
void setCurrentFormat();
+ QByteArray image(const QString &url) const;
+ void saveImage(const QString &url, const QByteArray &data);
+
private:
void setNextBatchToken(lmdb::txn &txn, const QString &token);
void insertRoomState(lmdb::txn &txn, const QString &roomid, const RoomState &state);
@@ -56,6 +59,7 @@ private:
lmdb::dbi stateDb_;
lmdb::dbi roomDb_;
lmdb::dbi invitesDb_;
+ lmdb::dbi imagesDb_;
bool isMounted_;
diff --git a/include/MatrixClient.h b/include/MatrixClient.h
index 2e76061f..2627f578 100644
--- a/include/MatrixClient.h
+++ b/include/MatrixClient.h
@@ -98,7 +98,10 @@ signals:
void fileUploaded(const QString &roomid, const QString &filename, const QString &url);
void audioUploaded(const QString &roomid, const QString &filename, const QString &url);
- void roomAvatarRetrieved(const QString &roomid, const QPixmap &img);
+ void roomAvatarRetrieved(const QString &roomid,
+ const QPixmap &img,
+ const QString &url,
+ const QByteArray &data);
void userAvatarRetrieved(const QString &userId, const QImage &img);
void ownAvatarRetrieved(const QPixmap &img);
void imageDownloaded(const QString &event_id, const QPixmap &img);
diff --git a/include/RoomList.h b/include/RoomList.h
index 8487df10..ed05e0be 100644
--- a/include/RoomList.h
+++ b/include/RoomList.h
@@ -30,6 +30,7 @@
class LeaveRoomDialog;
class MatrixClient;
+class Cache;
class OverlayModal;
class RoomInfoListItem;
class RoomSettings;
@@ -45,6 +46,7 @@ public:
RoomList(QSharedPointer<MatrixClient> client, QWidget *parent = 0);
~RoomList();
+ void setCache(QSharedPointer<Cache> cache) { cache_ = cache; }
void setInitialRooms(const QMap<QString, QSharedPointer<RoomSettings>> &settings,
const QMap<QString, RoomState> &states);
void sync(const QMap<QString, RoomState> &states,
@@ -52,6 +54,7 @@ public:
void syncInvites(const std::map<std::string, mtx::responses::InvitedRoom> &rooms);
void clear();
+ void updateAvatar(const QString &room_id, const QString &url);
void addRoom(const QMap<QString, QSharedPointer<RoomSettings>> &settings,
const RoomState &state,
@@ -64,6 +67,7 @@ signals:
void totalUnreadMessageCountUpdated(int count);
void acceptInvite(const QString &room_id);
void declineInvite(const QString &room_id);
+ void roomAvatarChanged(const QString &room_id, const QPixmap &img);
public slots:
void updateRoomAvatar(const QString &roomid, const QPixmap &img);
@@ -96,4 +100,5 @@ private:
QMap<QString, QSharedPointer<RoomInfoListItem>> rooms_;
QSharedPointer<MatrixClient> client_;
+ QSharedPointer<Cache> cache_;
};
|