QML the join room dialog
This commit is contained in:
parent
7eb9071b50
commit
e9ed12e27b
10 changed files with 92 additions and 144 deletions
|
|
@ -33,7 +33,6 @@
|
|||
#include "ui/SnackBar.h"
|
||||
|
||||
#include "dialogs/CreateRoom.h"
|
||||
#include "dialogs/JoinRoom.h"
|
||||
#include "dialogs/LeaveRoom.h"
|
||||
|
||||
MainWindow *MainWindow::instance_ = nullptr;
|
||||
|
|
@ -324,18 +323,6 @@ MainWindow::showOverlayProgressBar()
|
|||
showSolidOverlayModal(spinner_);
|
||||
}
|
||||
|
||||
void
|
||||
MainWindow::openJoinRoomDialog(std::function<void(const QString &room_id)> callback)
|
||||
{
|
||||
auto dialog = new dialogs::JoinRoom(this);
|
||||
connect(dialog, &dialogs::JoinRoom::joinRoom, this, [callback](const QString &room) {
|
||||
if (!room.isEmpty())
|
||||
callback(room);
|
||||
});
|
||||
|
||||
showDialog(dialog);
|
||||
}
|
||||
|
||||
void
|
||||
MainWindow::openCreateRoomDialog(
|
||||
std::function<void(const mtx::requests::CreateRoom &request)> callback)
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ struct CreateRoom;
|
|||
namespace dialogs {
|
||||
class CreateRoom;
|
||||
class InviteUsers;
|
||||
class JoinRoom;
|
||||
class LeaveRoom;
|
||||
class Logout;
|
||||
class MemberList;
|
||||
|
|
@ -64,6 +63,7 @@ public:
|
|||
void openCreateRoomDialog(
|
||||
std::function<void(const mtx::requests::CreateRoom &request)> callback);
|
||||
void openJoinRoomDialog(std::function<void(const QString &room_id)> callback);
|
||||
void openLogoutDialog();
|
||||
|
||||
void hideOverlay();
|
||||
void showSolidOverlayModal(QWidget *content, QFlags<Qt::AlignmentFlag> flags = Qt::AlignCenter);
|
||||
|
|
|
|||
|
|
@ -1,73 +0,0 @@
|
|||
// SPDX-FileCopyrightText: 2021 Nheko Contributors
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
#include "dialogs/JoinRoom.h"
|
||||
|
||||
#include "Config.h"
|
||||
#include "ui/TextField.h"
|
||||
|
||||
using namespace dialogs;
|
||||
|
||||
JoinRoom::JoinRoom(QWidget *parent)
|
||||
: QFrame(parent)
|
||||
{
|
||||
setAutoFillBackground(true);
|
||||
setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint);
|
||||
setWindowModality(Qt::WindowModal);
|
||||
setAttribute(Qt::WA_DeleteOnClose, true);
|
||||
|
||||
setMinimumWidth(conf::modals::MIN_WIDGET_WIDTH);
|
||||
setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
|
||||
|
||||
auto layout = new QVBoxLayout(this);
|
||||
layout->setSpacing(conf::modals::WIDGET_SPACING);
|
||||
layout->setMargin(conf::modals::WIDGET_MARGIN);
|
||||
|
||||
auto buttonLayout = new QHBoxLayout();
|
||||
buttonLayout->setSpacing(15);
|
||||
|
||||
confirmBtn_ = new QPushButton(tr("Join"), this);
|
||||
confirmBtn_->setDefault(true);
|
||||
cancelBtn_ = new QPushButton(tr("Cancel"), this);
|
||||
|
||||
buttonLayout->addStretch(1);
|
||||
buttonLayout->addWidget(cancelBtn_);
|
||||
buttonLayout->addWidget(confirmBtn_);
|
||||
|
||||
roomInput_ = new TextField(this);
|
||||
roomInput_->setLabel(tr("Room ID or alias"));
|
||||
|
||||
layout->addWidget(roomInput_);
|
||||
layout->addLayout(buttonLayout);
|
||||
layout->addStretch(1);
|
||||
|
||||
connect(roomInput_, &QLineEdit::returnPressed, this, &JoinRoom::handleInput);
|
||||
connect(confirmBtn_, &QPushButton::clicked, this, &JoinRoom::handleInput);
|
||||
connect(cancelBtn_, &QPushButton::clicked, this, &JoinRoom::close);
|
||||
}
|
||||
|
||||
void
|
||||
JoinRoom::handleInput()
|
||||
{
|
||||
if (roomInput_->text().isEmpty())
|
||||
return;
|
||||
|
||||
// TODO: input validation with error messages.
|
||||
emit joinRoom(roomInput_->text());
|
||||
roomInput_->clear();
|
||||
|
||||
emit close();
|
||||
}
|
||||
|
||||
void
|
||||
JoinRoom::showEvent(QShowEvent *event)
|
||||
{
|
||||
roomInput_->setFocus();
|
||||
|
||||
QFrame::showEvent(event);
|
||||
}
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
// SPDX-FileCopyrightText: 2021 Nheko Contributors
|
||||
//
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QFrame>
|
||||
|
||||
class QPushButton;
|
||||
class TextField;
|
||||
|
||||
namespace dialogs {
|
||||
|
||||
class JoinRoom : public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
JoinRoom(QWidget *parent = nullptr);
|
||||
|
||||
signals:
|
||||
void joinRoom(const QString &room);
|
||||
|
||||
protected:
|
||||
void showEvent(QShowEvent *event) override;
|
||||
|
||||
private slots:
|
||||
void handleInput();
|
||||
|
||||
private:
|
||||
QPushButton *confirmBtn_;
|
||||
QPushButton *cancelBtn_;
|
||||
|
||||
TextField *roomInput_;
|
||||
};
|
||||
|
||||
} // dialogs
|
||||
|
|
@ -21,6 +21,7 @@ Nheko::Nheko()
|
|||
connect(
|
||||
UserSettings::instance().get(), &UserSettings::themeChanged, this, &Nheko::colorsChanged);
|
||||
connect(ChatPage::instance(), &ChatPage::contentLoaded, this, &Nheko::updateUserProfile);
|
||||
connect(this, &Nheko::joinRoom, ChatPage::instance(), &ChatPage::joinRoom);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -96,13 +97,6 @@ Nheko::openCreateRoomDialog() const
|
|||
[](const mtx::requests::CreateRoom &req) { ChatPage::instance()->createRoom(req); });
|
||||
}
|
||||
|
||||
void
|
||||
Nheko::openJoinRoomDialog() const
|
||||
{
|
||||
MainWindow::instance()->openJoinRoomDialog(
|
||||
[](const QString &room_id) { ChatPage::instance()->joinRoom(room_id); });
|
||||
}
|
||||
|
||||
void
|
||||
Nheko::reparent(QWindow *win) const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@ public:
|
|||
Q_INVOKABLE void showUserSettingsPage() const;
|
||||
Q_INVOKABLE void logout() const;
|
||||
Q_INVOKABLE void openCreateRoomDialog() const;
|
||||
Q_INVOKABLE void openJoinRoomDialog() const;
|
||||
Q_INVOKABLE void reparent(QWindow *win) const;
|
||||
|
||||
public slots:
|
||||
|
|
@ -61,6 +60,8 @@ signals:
|
|||
void profileChanged();
|
||||
|
||||
void openLogoutDialog();
|
||||
void openJoinRoomDialog();
|
||||
void joinRoom(QString roomId);
|
||||
|
||||
private:
|
||||
QScopedPointer<UserProfile> currentUser_;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue