summary refs log tree commit diff
path: root/src/UsersModel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/UsersModel.cpp')
-rw-r--r--src/UsersModel.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/UsersModel.cpp b/src/UsersModel.cpp
new file mode 100644

index 00000000..4be37503 --- /dev/null +++ b/src/UsersModel.cpp
@@ -0,0 +1,53 @@ +#include "UsersModel.h" + +#include "Cache.h" +#include "CompletionModelRoles.h" + +UsersModel::UsersModel(const std::string &roomId, QObject *parent) + : QAbstractListModel(parent) + , room_id(roomId) +{ + roomMembers_ = cache::roomMembers(roomId); + for (const auto &m : roomMembers_) { + displayNames.push_back(QString::fromStdString(cache::displayName(room_id, m))); + userids.push_back(QString::fromStdString(m)); + } +} + +QHash<int, QByteArray> +UsersModel::roleNames() const +{ + return { + {CompletionModel::CompletionRole, "completionRole"}, + {CompletionModel::SearchRole, "searchRole"}, + {CompletionModel::SearchRole2, "searchRole2"}, + {Roles::DisplayName, "displayName"}, + {Roles::AvatarUrl, "avatarUrl"}, + {Roles::UserID, "userid"}, + }; +} + +QVariant +UsersModel::data(const QModelIndex &index, int role) const +{ + if (hasIndex(index.row(), index.column(), index.parent())) { + switch (role) { + case CompletionModel::CompletionRole: + return QString("[%1](https://matrix.to/#/%2)") + .arg(displayNames[index.row()]) + .arg(userids[index.row()]); + case CompletionModel::SearchRole: + case Qt::DisplayRole: + case Roles::DisplayName: + return displayNames[index.row()]; + case CompletionModel::SearchRole2: + return userids[index.row()]; + case Roles::AvatarUrl: + return cache::avatarUrl(QString::fromStdString(room_id), + QString::fromStdString(roomMembers_[index.row()])); + case Roles::UserID: + return userids[index.row()]; + } + } + return {}; +}