diff options
-rw-r--r-- | connection.cpp | 5 | ||||
-rw-r--r-- | connection.h | 1 | ||||
-rw-r--r-- | room.cpp | 12 | ||||
-rw-r--r-- | room.h | 1 |
4 files changed, 14 insertions, 5 deletions
diff --git a/connection.cpp b/connection.cpp index f9f1490c..7920125d 100644 --- a/connection.cpp +++ b/connection.cpp @@ -207,7 +207,10 @@ JoinRoomJob* Connection::joinRoom(const QString& roomAlias) void Connection::leaveRoom(Room* room) { - callApi<LeaveRoomJob>(room->id()); + auto job = callApi<LeaveRoomJob>(room->id()); + connect( job, &BaseJob::success, [=] () { + emit leftRoom(room); + }); } RoomMessagesJob* Connection::getMessages(Room* room, const QString& from) const diff --git a/connection.h b/connection.h index e3f33155..0b8500b9 100644 --- a/connection.h +++ b/connection.h @@ -105,6 +105,7 @@ namespace QMatrixClient void syncDone(); void newRoom(Room* room); void joinedRoom(Room* room); + void leftRoom(Room* room); void loginError(QString error); void networkError(size_t nextAttempt, int inMilliseconds); @@ -371,16 +371,20 @@ QList< User* > Room::users() const return d->membersMap.values(); } -QStringList Room::memberNames() const { +QStringList Room::memberNames() const +{ QStringList res; - - for (auto u : d->membersMap.values()) { + for (auto u : d->membersMap) res.append( this->roomMembername(u) ); - } return res; } +int Room::memberCount() const +{ + return d->membersMap.size(); +} + void Room::Private::insertMemberIntoMap(User *u) { auto namesakes = membersMap.values(u->name()); @@ -94,6 +94,7 @@ namespace QMatrixClient Q_INVOKABLE QList<User*> users() const; Q_INVOKABLE QStringList memberNames() const; + Q_INVOKABLE int memberCount() const; /** * @brief Produces a disambiguated name for a given user in |