From 26f221ec23c3ece5bd5b19f080cbfd21c9ffb5f4 Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Sat, 10 Feb 2018 16:05:31 +0200 Subject: Move LeaveRoom dialog to MainWindow (#87) --- src/ChatPage.cc | 2 -- src/MainWindow.cc | 23 ++++++++++++++++++++++- src/RoomList.cc | 35 +++-------------------------------- src/TopRoomBar.cc | 29 +---------------------------- 4 files changed, 26 insertions(+), 63 deletions(-) (limited to 'src') diff --git a/src/ChatPage.cc b/src/ChatPage.cc index 78435713..ba7e2797 100644 --- a/src/ChatPage.cc +++ b/src/ChatPage.cc @@ -144,8 +144,6 @@ ChatPage::ChatPage(QSharedPointer client, connect(user_info_widget_, SIGNAL(logout()), client_.data(), SLOT(logout())); connect(client_.data(), SIGNAL(loggedOut()), this, SLOT(logout())); - connect( - top_bar_, &TopRoomBar::leaveRoom, this, [=]() { client_->leaveRoom(current_room_); }); connect(top_bar_, &TopRoomBar::inviteUsers, this, [=](QStringList users) { for (int ii = 0; ii < users.size(); ++ii) { QTimer::singleShot(ii * 1000, this, [=]() { diff --git a/src/MainWindow.cc b/src/MainWindow.cc index 9437b401..2ada704a 100644 --- a/src/MainWindow.cc +++ b/src/MainWindow.cc @@ -33,6 +33,7 @@ #include "TrayIcon.h" #include "UserSettingsPage.h" #include "WelcomePage.h" +#include "dialogs/LeaveRoom.h" MainWindow *MainWindow::instance_ = nullptr; @@ -262,4 +263,24 @@ MainWindow::hasActiveUser() settings.contains("auth/user_id"); } -MainWindow::~MainWindow() {} +void +MainWindow::openLeaveRoomDialog(const QString &room_id) +{ + auto roomToLeave = room_id.isEmpty() ? chat_page_->currentRoom() : room_id; + + leaveRoomDialog_ = QSharedPointer(new dialogs::LeaveRoom(this)); + + connect(leaveRoomDialog_.data(), &dialogs::LeaveRoom::closing, this, [=](bool leaving) { + leaveRoomModal_->fadeOut(); + + if (leaving) + client_->leaveRoom(roomToLeave); + }); + + leaveRoomModal_ = + QSharedPointer(new OverlayModal(this, leaveRoomDialog_.data())); + leaveRoomModal_->setDuration(0); + leaveRoomModal_->setColor(QColor(30, 30, 30, 170)); + + leaveRoomModal_->fadeIn(); +} diff --git a/src/RoomList.cc b/src/RoomList.cc index 8d4cf30b..099e5b1c 100644 --- a/src/RoomList.cc +++ b/src/RoomList.cc @@ -88,7 +88,9 @@ RoomList::addRoom(const QSharedPointer &settings, { auto room_item = new RoomInfoListItem(settings, state, room_id, scrollArea_); connect(room_item, &RoomInfoListItem::clicked, this, &RoomList::highlightSelectedRoom); - connect(room_item, &RoomInfoListItem::leaveRoom, this, &RoomList::openLeaveRoomDialog); + connect(room_item, &RoomInfoListItem::leaveRoom, this, [=](const QString &room_id) { + MainWindow::instance()->openLeaveRoomDialog(room_id); + }); rooms_.emplace(room_id, QSharedPointer(room_item)); @@ -189,28 +191,6 @@ RoomList::setInitialRooms(const std::map> emit roomChanged(room.first); } -void -RoomList::openLeaveRoomDialog(const QString &room_id) -{ - if (leaveRoomDialog_.isNull()) { - leaveRoomDialog_ = QSharedPointer(new dialogs::LeaveRoom(this)); - - connect(leaveRoomDialog_.data(), - &dialogs::LeaveRoom::closing, - this, - [=](bool leaving) { closeLeaveRoomDialog(leaving, room_id); }); - } - - if (leaveRoomModal_.isNull()) { - leaveRoomModal_ = QSharedPointer( - new OverlayModal(MainWindow::instance(), leaveRoomDialog_.data())); - leaveRoomModal_->setDuration(0); - leaveRoomModal_->setColor(QColor(30, 30, 30, 170)); - } - - leaveRoomModal_->fadeIn(); -} - void RoomList::sync(const std::map> &states, const std::map> &settings) @@ -362,15 +342,6 @@ RoomList::closeJoinRoomDialog(bool isJoining, QString roomAlias) client_->joinRoom(roomAlias); } -void -RoomList::closeLeaveRoomDialog(bool leaving, const QString &room_id) -{ - leaveRoomModal_->fadeOut(); - - if (leaving) - client_->leaveRoom(room_id); -} - void RoomList::setFilterRooms(bool isFilteringEnabled) { diff --git a/src/TopRoomBar.cc b/src/TopRoomBar.cc index d34e59ad..d3ae307f 100644 --- a/src/TopRoomBar.cc +++ b/src/TopRoomBar.cc @@ -119,24 +119,7 @@ TopRoomBar::TopRoomBar(QWidget *parent) leaveRoom_ = new QAction(tr("Leave room"), this); connect(leaveRoom_, &QAction::triggered, this, [=]() { - if (leaveRoomDialog_.isNull()) { - leaveRoomDialog_ = - QSharedPointer(new dialogs::LeaveRoom(this)); - - connect(leaveRoomDialog_.data(), - SIGNAL(closing(bool)), - this, - SLOT(closeLeaveRoomDialog(bool))); - } - - if (leaveRoomModal_.isNull()) { - leaveRoomModal_ = QSharedPointer( - new OverlayModal(MainWindow::instance(), leaveRoomDialog_.data())); - leaveRoomModal_->setDuration(0); - leaveRoomModal_->setColor(QColor(30, 30, 30, 170)); - } - - leaveRoomModal_->fadeIn(); + MainWindow::instance()->openLeaveRoomDialog(); }); menu_->addAction(toggleNotifications_); @@ -160,16 +143,6 @@ TopRoomBar::TopRoomBar(QWidget *parent) setLayout(topLayout_); } -void -TopRoomBar::closeLeaveRoomDialog(bool leaving) -{ - leaveRoomModal_->fadeOut(); - - if (leaving) { - emit leaveRoom(); - } -} - void TopRoomBar::updateRoomAvatarFromName(const QString &name) { -- cgit 1.5.1