diff --git a/include/AvatarProvider.h b/include/AvatarProvider.h
index 77f9ebb4..f3441290 100644
--- a/include/AvatarProvider.h
+++ b/include/AvatarProvider.h
@@ -48,6 +48,6 @@ private:
static QSharedPointer<MatrixClient> client_;
using UserID = QString;
- static QMap<UserID, AvatarData> avatars_;
- static QMap<UserID, QList<std::function<void(QImage)>>> toBeResolved_;
+ static std::map<UserID, AvatarData> avatars_;
+ static std::map<UserID, std::vector<std::function<void(QImage)>>> toBeResolved_;
};
diff --git a/include/Cache.h b/include/Cache.h
index e8d797dd..93668b8c 100644
--- a/include/Cache.h
+++ b/include/Cache.h
@@ -18,7 +18,6 @@
#pragma once
#include <QDir>
-#include <QMap>
#include <json.hpp>
#include <lmdb++.h>
#include <mtx/responses.hpp>
@@ -53,7 +52,7 @@ public:
Cache(const QString &userId, QObject *parent = nullptr);
void setState(const QString &nextBatchToken,
- const QMap<QString, QSharedPointer<RoomState>> &states);
+ const std::map<QString, QSharedPointer<RoomState>> &states);
bool isInitialized() const;
QString nextBatchToken() const;
@@ -90,7 +89,7 @@ public:
void saveImage(const QString &url, const QByteArray &data);
signals:
- void statesLoaded(QMap<QString, RoomState> states);
+ void statesLoaded(std::map<QString, RoomState> states);
private:
void setNextBatchToken(lmdb::txn &txn, const QString &token);
diff --git a/include/ChatPage.h b/include/ChatPage.h
index 3da84b33..3cc6e6c8 100644
--- a/include/ChatPage.h
+++ b/include/ChatPage.h
@@ -95,7 +95,7 @@ private:
static ChatPage *instance_;
using UserID = QString;
- using RoomStates = QMap<UserID, QSharedPointer<RoomState>>;
+ using RoomStates = std::map<UserID, QSharedPointer<RoomState>>;
using Membership = mtx::events::StateEvent<mtx::events::state::Member>;
using Memberships = std::map<std::string, Membership>;
@@ -105,7 +105,7 @@ private:
void removeLeftRooms(const LeftRooms &rooms);
void updateJoinedRooms(const JoinedRooms &rooms);
- QMap<QString, QSharedPointer<RoomState>> generateMembershipDifference(
+ std::map<QString, QSharedPointer<RoomState>> generateMembershipDifference(
const JoinedRooms &rooms,
const RoomStates &states) const;
@@ -160,18 +160,18 @@ private:
QString current_room_;
QString current_community_;
- QMap<QString, QPixmap> room_avatars_;
- QMap<QString, QPixmap> community_avatars_;
+ std::map<QString, QPixmap> roomAvatars_;
+ std::map<QString, QPixmap> community_avatars_;
UserInfoWidget *user_info_widget_;
RoomStates roomStates_;
- QMap<QString, QSharedPointer<RoomSettings>> roomSettings_;
+ std::map<QString, QSharedPointer<RoomSettings>> roomSettings_;
- QMap<QString, QSharedPointer<Community>> communityManager_;
+ std::map<QString, QSharedPointer<Community>> communities_;
// Keeps track of the users currently typing on each room.
- QMap<QString, QList<QString>> typingUsers_;
+ std::map<QString, QList<QString>> typingUsers_;
QTimer *typingRefresher_;
QSharedPointer<QuickSwitcher> quickSwitcher_;
diff --git a/include/CommunitiesList.h b/include/CommunitiesList.h
index 53715363..8bb6aaad 100644
--- a/include/CommunitiesList.h
+++ b/include/CommunitiesList.h
@@ -3,7 +3,6 @@
#include <QScrollArea>
#include <QSharedPointer>
#include <QVBoxLayout>
-#include <QWidget>
#include "CommunitiesListItem.h"
#include "Community.h"
@@ -16,27 +15,33 @@ class CommunitiesList : public QWidget
public:
CommunitiesList(QSharedPointer<MatrixClient> client, QWidget *parent = nullptr);
- ~CommunitiesList();
- void setCommunities(const QMap<QString, QSharedPointer<Community>> &communities);
- void clear();
+ void setCommunities(const std::map<QString, QSharedPointer<Community>> &communities);
+ void clear() { communities_.clear(); }
+
+ void addCommunity(QSharedPointer<Community> community, const QString &id);
+ void removeCommunity(const QString &id);
- void addCommunity(QSharedPointer<Community> community, const QString &community_id);
- void removeCommunity(const QString &community_id);
signals:
- void communityChanged(const QString &community_id);
+ void communityChanged(const QString &id);
public slots:
- void updateCommunityAvatar(const QString &community_id, const QPixmap &img);
- void highlightSelectedCommunity(const QString &community_id);
+ void updateCommunityAvatar(const QString &id, const QPixmap &img);
+ void highlightSelectedCommunity(const QString &id);
private:
+ //! Check whether or not a community id is currently managed.
+ bool communityExists(const QString &id)
+ {
+ return communities_.find(id) != communities_.end();
+ }
+
QVBoxLayout *topLayout_;
QVBoxLayout *contentsLayout_;
QWidget *scrollAreaContents_;
QScrollArea *scrollArea_;
- QMap<QString, QSharedPointer<CommunitiesListItem>> communities_;
+ std::map<QString, QSharedPointer<CommunitiesListItem>> communities_;
QSharedPointer<MatrixClient> client_;
};
diff --git a/include/Community.h b/include/Community.h
index 5f3adba0..5b759e55 100644
--- a/include/Community.h
+++ b/include/Community.h
@@ -13,11 +13,11 @@ public:
void parseProfile(const QJsonObject &profile);
void parseRooms(const QJsonObject &rooms);
- inline QUrl getAvatar() const;
- inline QString getName() const;
- inline QString getShortDescription() const;
- inline QString getLongDescription() const;
- inline const QList<QString> getRoomList() const;
+ QUrl getAvatar() const { return avatar_; }
+ QString getName() const { return name_; }
+ QString getShortDescription() const { return short_description_; }
+ QString getLongDescription() const { return long_description_; }
+ std::vector<QString> getRoomList() const { return rooms_; }
private:
QUrl avatar_;
@@ -25,35 +25,5 @@ private:
QString short_description_;
QString long_description_;
- QList<QString> rooms_;
+ std::vector<QString> rooms_;
};
-
-inline QUrl
-Community::getAvatar() const
-{
- return avatar_;
-}
-
-inline QString
-Community::getName() const
-{
- return name_;
-}
-
-inline QString
-Community::getShortDescription() const
-{
- return short_description_;
-}
-
-inline QString
-Community::getLongDescription() const
-{
- return long_description_;
-}
-
-inline const QList<QString>
-Community::getRoomList() const
-{
- return rooms_;
-}
diff --git a/include/QuickSwitcher.h b/include/QuickSwitcher.h
index 5cbd0f1f..115161ab 100644
--- a/include/QuickSwitcher.h
+++ b/include/QuickSwitcher.h
@@ -47,7 +47,7 @@ class QuickSwitcher : public QFrame
public:
explicit QuickSwitcher(QWidget *parent = nullptr);
- void setRoomList(const QMap<QString, QString> &rooms);
+ void setRoomList(const std::map<QString, QString> &rooms);
signals:
void closing();
@@ -65,5 +65,5 @@ private:
RoomSearchInput *roomSearch_;
QCompleter *completer_;
- QMap<QString, QString> rooms_;
+ std::map<QString, QString> rooms_;
};
diff --git a/include/RoomList.h b/include/RoomList.h
index 43b95f12..ed93f17d 100644
--- a/include/RoomList.h
+++ b/include/RoomList.h
@@ -17,7 +17,6 @@
#pragma once
-#include <QMap>
#include <QPushButton>
#include <QScrollArea>
#include <QSharedPointer>
@@ -50,22 +49,22 @@ public:
~RoomList();
void setCache(QSharedPointer<Cache> cache) { cache_ = cache; }
- void setInitialRooms(const QMap<QString, QSharedPointer<RoomSettings>> &settings,
- const QMap<QString, QSharedPointer<RoomState>> &states);
- void sync(const QMap<QString, QSharedPointer<RoomState>> &states,
- const QMap<QString, QSharedPointer<RoomSettings>> &settings);
+ void setInitialRooms(const std::map<QString, QSharedPointer<RoomSettings>> &settings,
+ const std::map<QString, QSharedPointer<RoomState>> &states);
+ void sync(const std::map<QString, QSharedPointer<RoomState>> &states,
+ const std::map<QString, QSharedPointer<RoomSettings>> &settings);
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,
+ void addRoom(const QSharedPointer<RoomSettings> &settings,
const QSharedPointer<RoomState> &state,
const QString &room_id);
void addInvitedRoom(const QString &room_id, const mtx::responses::InvitedRoom &room);
void removeRoom(const QString &room_id, bool reset);
void setFilterRooms(bool filterRooms);
- void setRoomFilter(QList<QString> room_ids);
+ void setRoomFilter(std::vector<QString> room_ids);
signals:
void roomChanged(const QString &room_id);
@@ -92,7 +91,14 @@ private slots:
void sortRoomsByLastMessage();
private:
+ //! Return the first non-null room.
+ std::pair<QString, QSharedPointer<RoomInfoListItem>> firstRoom() const;
void calculateUnreadMessageCount();
+ bool roomExists(const QString &room_id) { return rooms_.find(room_id) != rooms_.end(); }
+ bool filterItemExists(const QString &id)
+ {
+ return std::find(roomFilter_.begin(), roomFilter_.end(), id) != roomFilter_.end();
+ }
QVBoxLayout *topLayout_;
QVBoxLayout *contentsLayout_;
@@ -106,11 +112,11 @@ private:
QSharedPointer<OverlayModal> leaveRoomModal_;
QSharedPointer<dialogs::LeaveRoom> leaveRoomDialog_;
- QMap<QString, QSharedPointer<RoomInfoListItem>> rooms_;
+ std::map<QString, QSharedPointer<RoomInfoListItem>> rooms_;
QString selectedRoom_;
- bool filterRooms_ = false;
- QList<QString> roomFilter_ = QList<QString>(); // which rooms to include in the room list
+ //! Which rooms to include in the room list.
+ std::vector<QString> roomFilter_;
QSharedPointer<MatrixClient> client_;
QSharedPointer<Cache> cache_;
diff --git a/include/timeline/TimelineViewManager.h b/include/timeline/TimelineViewManager.h
index c19031c6..81fedfb2 100644
--- a/include/timeline/TimelineViewManager.h
+++ b/include/timeline/TimelineViewManager.h
@@ -17,7 +17,6 @@
#pragma once
-#include <QMap>
#include <QSharedPointer>
#include <QStackedWidget>
@@ -41,13 +40,13 @@ public:
// Initialize with timeline events.
void initialize(const mtx::responses::Rooms &rooms);
// Empty initialization.
- void initialize(const QList<QString> &rooms);
+ void initialize(const std::vector<QString> &rooms);
void addRoom(const mtx::responses::JoinedRoom &room, const QString &room_id);
void addRoom(const QString &room_id);
void sync(const mtx::responses::Rooms &rooms);
- void clearAll();
+ void clearAll() { views_.clear(); }
// Check if all the timelines have been loaded.
bool hasLoaded() const;
@@ -55,7 +54,7 @@ public:
static QString chooseRandomColor();
static QString displayName(const QString &userid);
- static QMap<QString, QString> DISPLAY_NAMES;
+ static std::map<QString, QString> DISPLAY_NAMES;
signals:
void clearRoomMessageCount(QString roomid);
@@ -78,7 +77,10 @@ private slots:
void messageSendFailed(const QString &roomid, int txnid);
private:
+ //! Check if the given room id is managed by a TimelineView.
+ bool timelineViewExists(const QString &id) { return views_.find(id) != views_.end(); }
+
QString active_room_;
- QMap<QString, QSharedPointer<TimelineView>> views_;
+ std::map<QString, QSharedPointer<TimelineView>> views_;
QSharedPointer<MatrixClient> client_;
};
|