Skip to content
Snippets Groups Projects
usermodel.cpp 1.65 KiB
Newer Older
Armin Felder's avatar
Armin Felder committed
#include "usermodel.h"

UserModel::UserModel( QObject *parent ): QAbstractListModel( parent )
{

}

int UserModel::rowCount( const QModelIndex &parent ) const
{
    Q_UNUSED( parent );
    int count = userMap.values( current ).count();
    qDebug() << "count  of current channel users" << count;
    return count;
}

QVariant UserModel::data( const QModelIndex &index, int role ) const
{
    auto userList = userMap.values( current );

    if ( userList.count() < index.row() ) {
        return QVariant();
    }

    auto user = userList.at( index.row() );

    if ( role == UserRoles::UserName ) {
        return user->getUserName();
    };

    return QVariant();
}

bool UserModel::insertUser( QString channelId, QSharedPointer<RocketChatUser> user )
{

    if ( duplicateCheck.contains( user->getUserId() ) ) {
        return false;
    }

    auto values =  userMap.values( channelId );
    int index = values.count();

    if ( channelId == current ) {
        beginInsertRows( QModelIndex(), index, index );
    }

    userMap.insert( channelId, user );
    bool inserted = insertRow(index-1);
    if(!inserted){
        qDebug() << "row was not inserted";
    }
    if ( channelId == current ) {
        endInsertRows();
        emit countChanged();
    }


    return true;
}

QString UserModel::getCurrent() const
{
    return current;
}

void UserModel::setCurrent( const QString &value )
{
    current = value;
}

void UserModel::onCurrentChannelChanged( const QString &newText )
{
    current = newText;
}

QHash<int, QByteArray> UserModel::roleNames() const
{
    QHash<int, QByteArray> roles;
    roles[UserName] = "username";
    roles[UserId] =  "userId";
    return roles;
}