summary refs log tree commit diff
path: root/src/TopRoomBar.cc
diff options
context:
space:
mode:
authorMax Sandholm <max@sandholm.org>2017-10-01 19:49:36 +0300
committermujx <mujx@users.noreply.github.com>2017-10-01 19:49:36 +0300
commit7ad45d8d6448c60b4c81c80fa8d6d81afd6e4a02 (patch)
tree821124200c7dac85128790115d527791c1fc4945 /src/TopRoomBar.cc
parentMore badges (diff)
downloadnheko-7ad45d8d6448c60b4c81c80fa8d6d81afd6e4a02.tar.xz
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.
Diffstat (limited to 'src/TopRoomBar.cc')
-rw-r--r--src/TopRoomBar.cc25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/TopRoomBar.cc b/src/TopRoomBar.cc

index 1805f063..f8a7e600 100644 --- a/src/TopRoomBar.cc +++ b/src/TopRoomBar.cc
@@ -18,6 +18,7 @@ #include <QStyleOption> #include "Config.h" +#include "MainWindow.h" #include "TopRoomBar.h" TopRoomBar::TopRoomBar(QWidget *parent) @@ -83,7 +84,21 @@ TopRoomBar::TopRoomBar(QWidget *parent) roomSettings_->toggleNotifications(); }); + leaveRoom_ = new QAction(tr("Leave room"), this); + connect(leaveRoom_, &QAction::triggered, this, [=]() { + leaveRoomDialog_ = new LeaveRoomDialog(this); + connect( + leaveRoomDialog_, SIGNAL(closing(bool)), this, SLOT(closeLeaveRoomDialog(bool))); + + leaveRoomModal = new OverlayModal(MainWindow::instance(), leaveRoomDialog_); + leaveRoomModal->setDuration(100); + leaveRoomModal->setColor(QColor(55, 55, 55, 170)); + + leaveRoomModal->fadeIn(); + }); + menu_->addAction(toggleNotifications_); + menu_->addAction(leaveRoom_); connect(settingsBtn_, &QPushButton::clicked, this, [=]() { if (roomSettings_->isNotificationsEnabled()) @@ -100,6 +115,16 @@ TopRoomBar::TopRoomBar(QWidget *parent) } void +TopRoomBar::closeLeaveRoomDialog(bool leaving) +{ + leaveRoomModal->fadeOut(); + + if (leaving) { + emit leaveRoom(); + } +} + +void TopRoomBar::updateRoomAvatarFromName(const QString &name) { QChar letter = '?';