Use more stl containers & minor refactorings

This commit is contained in:
Konstantinos Sideris 2018-01-24 20:46:37 +02:00
parent 9eedcd700a
commit 1fad9398fc
16 changed files with 292 additions and 328 deletions

View file

@ -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_;
};

View file

@ -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);

View file

@ -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_;

View file

@ -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_;
};

View file

@ -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_;
}

View file

@ -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_;
};

View file

@ -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_;

View file

@ -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_;
};