summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/UsersModel.cpp28
-rw-r--r--src/UsersModel.h24
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_; +};