/******************************************************************************************** * * * 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 = userOfCurrentChannel.count(); qDebug() << "count of current channel users" << count; return count; } QVariant UserModel::data( const QModelIndex &index, int role ) const { auto userList = userOfCurrentChannel.values(); 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() ) { userMap.insert( channelId, user ); setCurrent(getCurrent()); } else { return true; } //TODO: give some meainingfull return return true; } QString UserModel::getCurrent() const { return current; } void UserModel::setCurrent( const QString &value ) { current = value; userOfCurrentChannel.clear(); beginResetModel(); QList<QSharedPointer<RocketChatUser>> userList = userMap.values(value); for(auto current:userList){ userOfCurrentChannel.insert(current->getUserName(),current); } endResetModel(); } void UserModel::onCurrentChannelChanged( const QString &newText ) { current = newText; } QHash<int, QByteArray> UserModel::roleNames() const { QHash<int, QByteArray> roles; roles[UserName] = QByteArrayLiteral( "username" ); roles[UserId] = QByteArrayLiteral( "userId" ); return roles; }