summary refs log tree commit diff
path: root/include
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-01-24 20:46:37 +0200
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-01-24 20:46:37 +0200
commit1fad9398fce58a8d7bf96bdaa2629a80b336b14c (patch)
tree28483acf18d91d6ccfa40eaa0564e50dd9291c51 /include
parentRemove trailing whitespace from text messages (diff)
downloadnheko-1fad9398fce58a8d7bf96bdaa2629a80b336b14c.tar.xz
Use more stl containers & minor refactorings
Diffstat (limited to 'include')
-rw-r--r--include/AvatarProvider.h4
-rw-r--r--include/Cache.h5
-rw-r--r--include/ChatPage.h14
-rw-r--r--include/CommunitiesList.h25
-rw-r--r--include/Community.h42
-rw-r--r--include/QuickSwitcher.h4
-rw-r--r--include/RoomList.h26
-rw-r--r--include/timeline/TimelineViewManager.h12
8 files changed, 57 insertions, 75 deletions
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_;
 };