diff --git a/CustomModels/usermodel.cpp b/CustomModels/usermodel.cpp index be7a82b4fe4a235dc904109eb3730a384b32b09e..ab4a0a846dd13f5b4ee21c55fea65fce6ed5a062 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 0563320d6a7c6a417ce899e36f183fe17d09307d..4b222980036130b317e11f3ca5f8c3e91cd2663b 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 2a054ec756eee4f416eb7a971b72194bb3a5d24c..b9dddf132d6835c4142037aa4a2a7c2f959b1e26 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 c3602f303f4ee03425602dec5c26ee55457fe096..bec51d305f2d543866710c33fbd152e1a6bfb1ba 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 5ac7c5527fa0d19f992dc726ad7e926be49dc263..b94bb87736684c2b875db5b98fb67d6447d41350 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 0b2c80faf8037c52906a579959fbd6c7c9780f46..b3e549573c7eb0fb6d11e2dc03eb3453a2f35c2d 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 f1fcd4dc6682dc289e46bc5ae7fe1e344e97b05c..bab0ff99270848fb8fd0f8725a6c017400673b0b 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 e1aaaab38332dd220246fe454cbe9af1f805daa2..dc7df832656ac1fca67e90f8ae3b6071768aec40 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);