#ifndef USERMODEL_H #define USERMODEL_H #include <QAbstractListModel> #include <QSharedPointer> #include <QMultiMap> #include <QSet> #include <QDebug> #include "repos/entities/rocketchatuser.h" class UserModel: public QAbstractListModel { Q_OBJECT Q_PROPERTY(QString currentChannel READ getCurrent WRITE setCurrent NOTIFY currentChannelChanged) enum UserRoles { UserName = Qt::UserRole + 1, UserId }; public: UserModel( QObject *parent = 0 ); int rowCount( const QModelIndex &parent = QModelIndex() ) const; QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const; bool insertUser(const QString&, const QSharedPointer<RocketChatUser>&); QString getCurrent() const; void setCurrent(const QString &value); void onCurrentChannelChanged(const QString &newText); protected: QHash<int, QByteArray> roleNames() const; QSet<QString> duplicateCheck; QMultiMap<QString, QSharedPointer<RocketChatUser>> userMap; QString current; signals: void currentChannelChanged(const QString &newText); void countChanged(); }; #endif // USERMODEL_H