summary refs log tree commit diff
path: root/src/SideBarActions.cc
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-12-10 15:22:01 +0200
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-12-10 15:22:01 +0200
commit19bae2a2e63cc520d25a50658a3d923e083c0098 (patch)
tree781d97e9ef826331b63322f31cc47152aa29326b /src/SideBarActions.cc
parentAdd debug info on travis builds (diff)
downloadnheko-19bae2a2e63cc520d25a50658a3d923e083c0098.tar.xz
Add gui option for joining rooms (#25)
Diffstat (limited to 'src/SideBarActions.cc')
-rw-r--r--src/SideBarActions.cc43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/SideBarActions.cc b/src/SideBarActions.cc

index 3e741406..f6e99270 100644 --- a/src/SideBarActions.cc +++ b/src/SideBarActions.cc
@@ -1,6 +1,8 @@ #include <QIcon> #include "Config.h" +#include "MainWindow.h" +#include "OverlayModal.h" #include "SideBarActions.h" #include "Theme.h" @@ -27,12 +29,53 @@ SideBarActions::SideBarActions(QWidget *parent) settingsBtn_->setIconSize( QSize(conf::sidebarActions::iconSize, conf::sidebarActions::iconSize)); + addMenu_ = new Menu(this); + createRoomAction_ = new QAction(tr("Create new room"), this); + joinRoomAction_ = new QAction(tr("Join a room"), this); + + connect(joinRoomAction_, &QAction::triggered, this, [=]() { + if (joinRoomDialog_.isNull()) { + joinRoomDialog_ = + QSharedPointer<dialogs::JoinRoom>(new dialogs::JoinRoom(this)); + + connect(joinRoomDialog_.data(), + &dialogs::JoinRoom::closing, + this, + [=](bool isJoining, const QString &room) { + joinRoomModal_->fadeOut(); + + if (isJoining && !room.isEmpty()) + emit joinRoom(room); + }); + } + + if (joinRoomModal_.isNull()) { + joinRoomModal_ = QSharedPointer<OverlayModal>( + new OverlayModal(MainWindow::instance(), joinRoomDialog_.data())); + joinRoomModal_->setDuration(0); + joinRoomModal_->setColor(QColor(30, 30, 30, 170)); + } + + joinRoomModal_->fadeIn(); + }); + + addMenu_->addAction(createRoomAction_); + addMenu_->addAction(joinRoomAction_); + createRoomBtn_ = new FlatButton(this); createRoomBtn_->setIcon(createRoomIcon); createRoomBtn_->setCornerRadius(conf::sidebarActions::iconSize / 2); createRoomBtn_->setIconSize( QSize(conf::sidebarActions::iconSize, conf::sidebarActions::iconSize)); + connect(createRoomBtn_, &QPushButton::clicked, this, [=]() { + auto pos = mapToGlobal(createRoomBtn_->pos()); + auto padding = conf::sidebarActions::iconSize / 2; + + addMenu_->popup( + QPoint(pos.x() + padding, pos.y() - padding - addMenu_->sizeHint().height())); + }); + joinRoomBtn_ = new FlatButton(this); joinRoomBtn_->setIcon(joinRoomIcon); joinRoomBtn_->setCornerRadius(conf::sidebarActions::iconSize / 2);