React to externally left and joined rooms, and add "leave room" button in room menu (#75)
* Initial "join room" feature.
* React correctly to remotely joined rooms.
* Leaving rooms implemented both locally using the room menu
in nheko, and reacting properly when leaving a room remotely
from another client.
1 files changed, 20 insertions, 0 deletions
diff --git a/include/RoomList.h b/include/RoomList.h
index 573f43a8..c2f4255d 100644
--- a/include/RoomList.h
+++ b/include/RoomList.h
@@ -17,12 +17,16 @@
#pragma once
+#include <QPushButton>
#include <QScrollArea>
#include <QSharedPointer>
#include <QVBoxLayout>
#include <QWidget>
+#include "JoinRoomDialog.h"
+#include "LeaveRoomDialog.h"
#include "MatrixClient.h"
+#include "OverlayModal.h"
#include "RoomInfoListItem.h"
#include "RoomState.h"
#include "Sync.h"
@@ -41,6 +45,11 @@ public:
void clear();
+ void addRoom(const QSharedPointer<RoomSettings> &settings,
+ const RoomState &state,
+ const QString &room_id);
+ void removeRoom(const QString &room_id, bool reset);
+
signals:
void roomChanged(const QString &room_id);
void totalUnreadMessageCountUpdated(int count);
@@ -50,6 +59,9 @@ public slots:
void highlightSelectedRoom(const QString &room_id);
void updateUnreadMessageCount(const QString &roomid, int count);
void updateRoomDescription(const QString &roomid, const DescInfo &info);
+ void closeJoinRoomDialog(bool isJoining, QString roomAlias);
+ void openLeaveRoomDialog(const QString &room_id);
+ void closeLeaveRoomDialog(bool leaving, const QString &room_id);
private:
void calculateUnreadMessageCount();
@@ -59,6 +71,14 @@ private:
QScrollArea *scrollArea_;
QWidget *scrollAreaContents_;
+ QPushButton *joinRoomButton_;
+
+ OverlayModal *joinRoomModal_;
+ JoinRoomDialog *joinRoomDialog_;
+
+ OverlayModal *leaveRoomModal;
+ LeaveRoomDialog *leaveRoomDialog_;
+
QMap<QString, QSharedPointer<RoomInfoListItem>> rooms_;
QSharedPointer<MatrixClient> client_;
|