summary refs log tree commit diff
path: root/src/UsersModel.cpp
diff options
context:
space:
mode:
authorDeepBlueV7.X <nicolas.werner@hotmail.de>2020-11-25 21:59:23 +0100
committerGitHub <noreply@github.com>2020-11-25 21:59:23 +0100
commit54d75466c71f339893dbec44793531b001cf9b87 (patch)
tree1ab1ed3fa72dea0b2ab8ed861a0d0fe685864c1c /src/UsersModel.cpp
parentMerge pull request #337 from trilene/master (diff)
parentOpen completer on tab (diff)
downloadnheko-54d75466c71f339893dbec44793531b001cf9b87.tar.xz
Merge pull request #335 from Nheko-Reborn/qml-text-input
Qml text input
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 {}; +}