From 2a1596c16baad77fc80391c66694101f91028deb Mon Sep 17 00:00:00 2001 From: Kitsune Ral Date: Sun, 9 Sep 2018 18:23:17 +0900 Subject: Room::beforeDestruction() This is to allow connecting to before-destruction of one specific room, rather than any room under a connection (for which Connection::aboutToDeleteRoom() still exists). --- lib/connection.cpp | 6 ++++-- lib/room.h | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/connection.cpp b/lib/connection.cpp index 4a24de09..cf3446ff 100644 --- a/lib/connection.cpp +++ b/lib/connection.cpp @@ -656,7 +656,7 @@ ForgetRoomJob* Connection::forgetRoom(const QString& id) qCDebug(MAIN) << "Room" << r->objectName() << "in state" << toCString(r->joinState()) << "will be deleted"; - emit aboutToDeleteRoom(r); + emit r->beforeDestruction(r); r->deleteLater(); } }); @@ -995,6 +995,8 @@ Room* Connection::provideRoom(const QString& id, JoinState joinState) } d->roomMap.insert(roomKey, room); d->firstTimeRooms.push_back(room); + connect(room, &Room::beforeDestruction, + this, &Connection::aboutToDeleteRoom); emit newRoom(room); } if (joinState == JoinState::Invite) @@ -1015,7 +1017,7 @@ Room* Connection::provideRoom(const QString& id, JoinState joinState) if (prevInvite) { qCDebug(MAIN) << "Deleting Invite state for room" << prevInvite->id(); - emit aboutToDeleteRoom(prevInvite); + emit prevInvite->beforeDestruction(prevInvite); prevInvite->deleteLater(); } } diff --git a/lib/room.h b/lib/room.h index 9b909a98..7d2ecfef 100644 --- a/lib/room.h +++ b/lib/room.h @@ -400,6 +400,9 @@ namespace QMatrixClient void fileTransferFailed(QString id, QString errorMessage = {}); void fileTransferCancelled(QString id); + /// The room is about to be deleted + void beforeDestruction(Room*); + public: // Used by Connection - not a part of the client API QJsonObject toJson() const; void updateData(SyncRoomData&& data ); -- cgit v1.2.3