add per-room user model

This commit is contained in:
Jussi Kuokkanen 2020-09-07 12:51:28 +03:00 committed by Nicolas Werner
parent 07259b9cb7
commit a3c4fece7e
3 changed files with 53 additions and 0 deletions

View File

@ -303,6 +303,7 @@ set(SRC_FILES
src/TrayIcon.cpp
src/UserInfoWidget.cpp
src/UserSettingsPage.cpp
src/UsersModel.cpp
src/Utils.cpp
src/WebRTCSession.cpp
src/WelcomePage.cpp

28
src/UsersModel.cpp Normal file
View File

@ -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 {};
}

24
src/UsersModel.h Normal file
View File

@ -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_;
};