Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool UserModel::insertUser( QString channelId, QSharedPointer<RocketChatUser> user )
- {
- auto values = userMap.values( channelId );
- int index = values.count();
- auto qIndex = QModelIndex();
- if ( channelId == current ) {
- beginInsertRows( qIndex, index, index );
- }
- userMap.insert( channelId, user );
- if ( channelId == current ) {
- endInsertRows();
- }
- }
- class UserModel: public QAbstractListModel
- {
- Q_OBJECT
- Q_PROPERTY(QString currentChannel READ getCurrent WRITE setCurrent NOTIFY currentChannelChanged)
- enum UserRoles {
- UserName = Qt::UserRole + 1,
- UserId
- };
- public:
- UserModel( QObject *parent = 0 );
- int rowCount( const QModelIndex &parent = QModelIndex() ) const;
- QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const;
- bool insertUser(QString,QSharedPointer<RocketChatUser>);
- QString getCurrent() const;
- void setCurrent(const QString &value);
- void onCurrentChannelChanged(const QString &newText);
- protected:
- QHash<int, QByteArray> roleNames() const;
- QSet<QString> duplicateCheck;
- QMultiMap<QString, QSharedPointer<RocketChatUser>> userMap;
- QString current;
- signals:
- void currentChannelChanged(const QString &newText);
- };
- UserModel userModel;
- context->setContextProperty("userModel",&userModel);
- Drawer {
- z: 9
- width: Math.min(window.width, window.height) / 3 * 2
- height: window.height
- edge: Qt.LeftEdge
- ListView {
- anchors.fill: parent
- spacing: 1
- header: ToolBar {
- Text {
- text: qsTr("Users in channel")
- anchors.centerIn: parent
- }
- width: parent.width - 1
- }
- id: userListView
- model: userModel
- delegate: RowLayout {
- width: parent.width
- Button {
- anchors.fill: parent
- text: model.username
- }
- /*BusyIndicator{
- id: loadingUserIndicator
- anchors.centerIn: parent
- }*/
- }
- Component.onCompleted: {
- userModel.currentChannel = channelView.currentChannel
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement