/******************************************************************************************** * * * Copyright (C) 2017 Armin Felder, Dennis Beier * * This file is part of RocketChatMobileEngine <https://git.fairkom.net/chat/fairchat>. * * * * RocketChatMobileEngine is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * RocketChatMobileEngine is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with RocketChatMobileEngine. If not, see <http://www.gnu.org/licenses/>. * * * ********************************************************************************************/ #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( const QString &channelId, const QSharedPointer<RocketChatUser> &user ) { if ( !user.isNull() && !duplicateCheck.contains( user->getUserId() ) ) { auto values = userMap.values( channelId ); int index = values.count(); if ( channelId == current ) { beginInsertRows( QModelIndex(), index, index ); } userMap.insert( channelId, user ); if ( channelId == current ) { endInsertRows(); emit countChanged(); } } else { return true; } //TODO: give some meainingfull return 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; }