2 files changed, 52 insertions, 0 deletions
diff --git a/src/UsersModel.cpp b/src/UsersModel.cpp
new file mode 100644
index 00000000..c63292bb
--- /dev/null
+++ b/src/UsersModel.cpp
@@ -0,0 +1,28 @@
+#include "UsersModel.h"
+
+#include "Cache.h"
+#include "CompletionModelRoles.h"
+
+#include <QPixmap>
+
+UsersModel::UsersModel(const std::string &roomId, QObject *parent)
+ : QAbstractListModel(parent)
+{
+ roomMembers_ = cache::getMembers(roomId, 0, 9999);
+}
+
+QVariant
+UsersModel::data(const QModelIndex &index, int role) const
+{
+ if (hasIndex(index.row(), index.column(), index.parent())) {
+ switch (role) {
+ case CompletionModel::CompletionRole:
+ case CompletionModel::SearchRole:
+ case Qt::DisplayRole:
+ return roomMembers_[index.row()].display_name;
+ case Avatar:
+ return roomMembers_[index.row()].avatar;
+ }
+ }
+ return {};
+}
diff --git a/src/UsersModel.h b/src/UsersModel.h
new file mode 100644
index 00000000..09ccbf25
--- /dev/null
+++ b/src/UsersModel.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include <QAbstractListModel>
+
+class RoomMember;
+
+class UsersModel : public QAbstractListModel
+{
+public:
+ enum Roles
+ {
+ Avatar = Qt::UserRole // QImage avatar
+ };
+
+ UsersModel(const std::string &roomId, QObject *parent = nullptr);
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override
+ {
+ return (parent == QModelIndex()) ? roomMembers_.size() : 0;
+ }
+ QVariant data(const QModelIndex &index, int role) const override;
+
+private:
+ std::vector<RoomMember> roomMembers_;
+};
|