diff options
Diffstat (limited to 'src/dialogs/JoinRoom.cpp')
-rw-r--r-- | src/dialogs/JoinRoom.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/dialogs/JoinRoom.cpp b/src/dialogs/JoinRoom.cpp new file mode 100644 index 00000000..05c0f455 --- /dev/null +++ b/src/dialogs/JoinRoom.cpp @@ -0,0 +1,69 @@ +#include <QLabel> +#include <QStyleOption> +#include <QVBoxLayout> + +#include "dialogs/JoinRoom.h" + +#include "Config.h" +#include "ui/FlatButton.h" +#include "ui/TextField.h" +#include "ui/Theme.h" + +using namespace dialogs; + +JoinRoom::JoinRoom(QWidget *parent) + : QFrame(parent) +{ + setMaximumSize(400, 400); + + auto layout = new QVBoxLayout(this); + layout->setSpacing(30); + layout->setMargin(20); + + auto buttonLayout = new QHBoxLayout(); + buttonLayout->setSpacing(0); + buttonLayout->setMargin(0); + + confirmBtn_ = new FlatButton("JOIN", this); + confirmBtn_->setFontSize(conf::btn::fontSize); + + cancelBtn_ = new FlatButton(tr("CANCEL"), this); + cancelBtn_->setFontSize(conf::btn::fontSize); + + buttonLayout->addStretch(1); + buttonLayout->addWidget(confirmBtn_); + buttonLayout->addWidget(cancelBtn_); + + QFont font; + font.setPixelSize(conf::headerFontSize); + + roomInput_ = new TextField(this); + roomInput_->setLabel(tr("Room ID or alias")); + + layout->addWidget(roomInput_); + layout->addLayout(buttonLayout); + + // TODO: input validation with error messages. + connect(confirmBtn_, &QPushButton::clicked, [this]() { + emit closing(true, roomInput_->text()); + roomInput_->clear(); + }); + connect(cancelBtn_, &QPushButton::clicked, [this]() { emit closing(false, ""); }); +} + +void +JoinRoom::paintEvent(QPaintEvent *) +{ + QStyleOption opt; + opt.init(this); + QPainter p(this); + style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); +} + +void +JoinRoom::showEvent(QShowEvent *event) +{ + roomInput_->setFocus(); + + QFrame::showEvent(event); +} |