// SPDX-FileCopyrightText: Nheko Contributors // // SPDX-License-Identifier: GPL-3.0-or-later #ifndef INVITEESMODEL_H #define INVITEESMODEL_H #include #include class Invitee final : public QObject { Q_OBJECT public: Invitee(QString mxid, QString displayName = "", QString avatarUrl = "", QObject *parent = nullptr); signals: void userInfoLoaded(); private: const QString mxid_; QString displayName_; QString avatarUrl_; friend class InviteesModel; }; class InviteesModel final : public QAbstractListModel { Q_OBJECT Q_PROPERTY(int count READ rowCount NOTIFY countChanged) public: enum Roles { Mxid, DisplayName, AvatarUrl, }; InviteesModel(QObject *parent = nullptr); Q_INVOKABLE void addUser(QString mxid, QString displayName = "", QString avatarUrl = ""); Q_INVOKABLE void removeUser(QString mxid); [[nodiscard]] QHash roleNames() const override; [[nodiscard]] int rowCount(const QModelIndex & = QModelIndex()) const override { return (int)invitees_.size(); } [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QStringList mxids(); signals: void accept(); void countChanged(); private: QVector invitees_; }; #endif // INVITEESMODEL_H