From a6956715a7cdf0856a451329222b342b4362f946 Mon Sep 17 00:00:00 2001 From: Armin Felder <armin.felder@osalliance.com> Date: Mon, 25 Jun 2018 17:11:40 +0200 Subject: [PATCH] improved user list --- CustomModels/usermodel.cpp | 16 ++++++++++++---- CustomModels/usermodel.h | 5 +++-- engine.pro | 3 ++- persistancelayer.cpp | 1 + repos/entities/rocketchatuser.cpp | 10 ++++++++++ repos/entities/rocketchatuser.h | 6 +++++- services/rocketchatchannelservice.cpp | 6 ++++-- sql/migrations/4.sql | 2 +- 8 files changed, 38 insertions(+), 11 deletions(-) diff --git a/CustomModels/usermodel.cpp b/CustomModels/usermodel.cpp index be7a82b..ab4a0a8 100644 --- a/CustomModels/usermodel.cpp +++ b/CustomModels/usermodel.cpp @@ -49,19 +49,25 @@ QVariant UserModel::data( const QModelIndex &index, int role ) const return user->getUserName(); }; + if ( role == UserRoles::name ) { + return user->getName(); + } + return QVariant(); } bool UserModel::insertUser( const QString &channelId, const QSharedPointer<RocketChatUser> &user ) { + beginResetModel(); if ( !user.isNull() ) { userMap.insert( channelId, user ); - setCurrent(getCurrent()); + setCurrent( getCurrent() ); } else { return true; } + endResetModel(); //TODO: give some meainingfull return return true; } @@ -77,9 +83,10 @@ void UserModel::setCurrent( const QString &value ) userOfCurrentChannel.clear(); beginResetModel(); - QList<QSharedPointer<RocketChatUser>> userList = userMap.values(value); - for(auto current:userList){ - userOfCurrentChannel.insert(current->getUserName(),current); + QList<QSharedPointer<RocketChatUser>> userList = userMap.values( value ); + + for ( auto current : userList ) { + userOfCurrentChannel.insert( current->getUserName(), current ); } endResetModel(); @@ -95,5 +102,6 @@ QHash<int, QByteArray> UserModel::roleNames() const QHash<int, QByteArray> roles; roles[UserName] = QByteArrayLiteral( "username" ); roles[UserId] = QByteArrayLiteral( "userId" ); + roles[name] = QByteArrayLiteral( "name" ); return roles; } diff --git a/CustomModels/usermodel.h b/CustomModels/usermodel.h index 0563320..4b22298 100644 --- a/CustomModels/usermodel.h +++ b/CustomModels/usermodel.h @@ -37,7 +37,8 @@ class UserModel: public QAbstractListModel Q_PROPERTY( QString currentChannel READ getCurrent WRITE setCurrent NOTIFY currentChannelChanged ) enum UserRoles { UserName = Qt::UserRole + 1, - UserId + UserId, + name }; public: UserModel( QObject *parent = 0 ); @@ -52,7 +53,7 @@ class UserModel: public QAbstractListModel QHash<int, QByteArray> roleNames() const; QSet<QString> duplicateCheck; QMultiMap<QString, QSharedPointer<RocketChatUser>> userMap; - QMap<QString,QSharedPointer<RocketChatUser>> userOfCurrentChannel; + QMap<QString, QSharedPointer<RocketChatUser>> userOfCurrentChannel; QString current; signals: void currentChannelChanged( const QString &newText ); diff --git a/engine.pro b/engine.pro index 2a054ec..b9dddf1 100644 --- a/engine.pro +++ b/engine.pro @@ -280,6 +280,7 @@ RESOURCES += \ sql.qrc DISTFILES += \ - sql/migrations/3.sql + sql/migrations/3.sql \ + sql/migrations/4.sql diff --git a/persistancelayer.cpp b/persistancelayer.cpp index c3602f3..bec51d3 100755 --- a/persistancelayer.cpp +++ b/persistancelayer.cpp @@ -320,6 +320,7 @@ void PersistanceLayer::upgradeSchema() if ( !query.exec() ) { qWarning() << "migration to DB ver " << currentTarget << " failed"; qWarning() << query.lastError(); + qWarning() << query.lastQuery(); exit( EXIT_FAILURE ); } } diff --git a/repos/entities/rocketchatuser.cpp b/repos/entities/rocketchatuser.cpp index 5ac7c55..b94bb87 100755 --- a/repos/entities/rocketchatuser.cpp +++ b/repos/entities/rocketchatuser.cpp @@ -81,3 +81,13 @@ bool RocketChatUser::operator==(const RocketChatUser lhs) { return lhs.getUserId() == this->getUserId(); } + +QString RocketChatUser::getName() const +{ + return mName; +} + +void RocketChatUser::setName(const QString &name) +{ + mName = name; +} diff --git a/repos/entities/rocketchatuser.h b/repos/entities/rocketchatuser.h index 0b2c80f..b3e5495 100755 --- a/repos/entities/rocketchatuser.h +++ b/repos/entities/rocketchatuser.h @@ -53,13 +53,17 @@ class RocketChatUser : public QObject status getStatus() const; void setStatus( status ); - inline bool operator==(const RocketChatUser lhs); + inline bool operator==( const RocketChatUser lhs ); + + QString getName() const; + void setName( const QString &name ); private: QString mUserName; QString mSurname; QString mLastname; QString mUserId; + QString mName; status mStatus = status::OFFLINE; signals: diff --git a/services/rocketchatchannelservice.cpp b/services/rocketchatchannelservice.cpp index f1fcd4d..bab0ff9 100755 --- a/services/rocketchatchannelservice.cpp +++ b/services/rocketchatchannelservice.cpp @@ -312,8 +312,10 @@ void RocketChatChannelService::loadUsersOfChannel( QSharedPointer<RocketChatChan for ( const auto ¤t : records ) { if ( current.type() == QJsonValue::Object ) { QJsonObject userObject = current.toObject(); - QString name = userObject["username"].toString(); - QSharedPointer<RocketChatUser> user( new RocketChatUser( name ) ); + QString username = userObject["username"].toString(); + QString name = userObject["name"].toString(); + QSharedPointer<RocketChatUser> user( new RocketChatUser( username ) ); + user->setName( name ); userList.append( user ); } else if ( current.type() == QJsonValue::String ) { QString name = current.toString(); diff --git a/sql/migrations/4.sql b/sql/migrations/4.sql index e1aaaab..dc7df83 100644 --- a/sql/migrations/4.sql +++ b/sql/migrations/4.sql @@ -1,2 +1,2 @@ -ALTER TABLE rooms add username varchar(100) DEFAULT ""; +ALTER TABLE rooms ADD username varchar(100) DEFAULT ""; REPLACE INTO app_info (db_ver) VALUES(4); -- GitLab