Skip to content
Snippets Groups Projects
usermodel.h 1.17 KiB
Newer Older
Armin Felder's avatar
Armin Felder committed
#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
{
Armin Felder's avatar
Armin Felder committed
        Q_OBJECT
Armin Felder's avatar
Armin Felder committed
    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>&);
Armin Felder's avatar
Armin Felder committed
        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