summary refs log tree commit diff
path: root/src/ReadReceiptsModel.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ReadReceiptsModel.h')
-rw-r--r--src/ReadReceiptsModel.h27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/ReadReceiptsModel.h b/src/ReadReceiptsModel.h
index f2e39f88..9e26bcd5 100644
--- a/src/ReadReceiptsModel.h
+++ b/src/ReadReceiptsModel.h
@@ -8,15 +8,13 @@
 #include <QAbstractListModel>
 #include <QDateTime>
 #include <QObject>
+#include <QSortFilterProxyModel>
 #include <QString>
 
 class ReadReceiptsModel : public QAbstractListModel
 {
         Q_OBJECT
 
-        Q_PROPERTY(QString eventId READ eventId CONSTANT)
-        Q_PROPERTY(QString roomId READ roomId CONSTANT)
-
 public:
         enum Roles
         {
@@ -24,6 +22,7 @@ public:
                 DisplayName,
                 AvatarUrl,
                 Timestamp,
+                RawTimestamp,
         };
 
         explicit ReadReceiptsModel(QString event_id, QString room_id, QObject *parent = nullptr);
@@ -51,4 +50,26 @@ private:
         QVector<QPair<QString, QDateTime>> readReceipts_;
 };
 
+class ReadReceiptsProxy : public QSortFilterProxyModel
+{
+        Q_OBJECT
+
+        Q_PROPERTY(QString eventId READ eventId CONSTANT)
+        Q_PROPERTY(QString roomId READ roomId CONSTANT)
+
+public:
+        explicit ReadReceiptsProxy(QString event_id, QString room_id, QObject *parent = nullptr);
+
+        QString eventId() const { return event_id_; }
+        QString roomId() const { return room_id_; }
+
+        bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const;
+
+private:
+        QString event_id_;
+        QString room_id_;
+
+        ReadReceiptsModel model_;
+};
+
 #endif // READRECEIPTSMODEL_H