From beeb60e4a12b47ae619e52629040aff5a8f43db2 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sat, 22 May 2021 00:57:14 +0200 Subject: Sort the room list --- src/timeline/RoomlistModel.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src/timeline/RoomlistModel.h') diff --git a/src/timeline/RoomlistModel.h b/src/timeline/RoomlistModel.h index c4c9d9ba..c3374bd2 100644 --- a/src/timeline/RoomlistModel.h +++ b/src/timeline/RoomlistModel.h @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -24,10 +25,13 @@ public: RoomName, RoomId, LastMessage, + Time, Timestamp, HasUnreadMessages, HasLoudNotification, NotificationCount, + IsInvite, + IsSpace, }; RoomlistModel(TimelineViewManager *parent = nullptr); @@ -73,4 +77,26 @@ private: std::vector roomids; QHash> models; std::map roomReadStatus; + + friend class FilteredRoomlistModel; +}; + +class FilteredRoomlistModel : public QSortFilterProxyModel +{ + Q_OBJECT +public: + FilteredRoomlistModel(RoomlistModel *model, QObject *parent = nullptr); + bool lessThan(const QModelIndex &left, const QModelIndex &right) const override; + +public slots: + int roomidToIndex(QString roomid) + { + return mapFromSource(roomlistmodel->index(roomlistmodel->roomidToIndex(roomid))) + .row(); + } + +private: + short int calculateImportance(const QModelIndex &idx) const; + RoomlistModel *roomlistmodel; + bool sortByImportance = true; }; -- cgit 1.5.1