forked from mirror/nheko
parent
fee00746c8
commit
3ef0d9db3c
@ -0,0 +1,69 @@ |
|||||||
|
#include <QDesktopServices> |
||||||
|
#include <QLabel> |
||||||
|
#include <QPushButton> |
||||||
|
#include <QUrl> |
||||||
|
#include <QVBoxLayout> |
||||||
|
|
||||||
|
#include "dialogs/FallbackAuth.h" |
||||||
|
|
||||||
|
#include "Config.h" |
||||||
|
#include "MatrixClient.h" |
||||||
|
|
||||||
|
using namespace dialogs; |
||||||
|
|
||||||
|
FallbackAuth::FallbackAuth(const QString &authType, const QString &session, QWidget *parent) |
||||||
|
: QWidget(parent) |
||||||
|
{ |
||||||
|
setAutoFillBackground(true); |
||||||
|
setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint); |
||||||
|
setWindowModality(Qt::WindowModal); |
||||||
|
setAttribute(Qt::WA_DeleteOnClose, true); |
||||||
|
|
||||||
|
auto layout = new QVBoxLayout(this); |
||||||
|
layout->setSpacing(conf::modals::WIDGET_SPACING); |
||||||
|
layout->setMargin(conf::modals::WIDGET_MARGIN); |
||||||
|
|
||||||
|
auto buttonLayout = new QHBoxLayout(); |
||||||
|
buttonLayout->setSpacing(8); |
||||||
|
buttonLayout->setMargin(0); |
||||||
|
|
||||||
|
openBtn_ = new QPushButton(tr("Open Fallback in Browser"), this); |
||||||
|
cancelBtn_ = new QPushButton(tr("Cancel"), this); |
||||||
|
confirmBtn_ = new QPushButton(tr("Confirm"), this); |
||||||
|
confirmBtn_->setDefault(true); |
||||||
|
|
||||||
|
buttonLayout->addStretch(1); |
||||||
|
buttonLayout->addWidget(openBtn_); |
||||||
|
buttonLayout->addWidget(cancelBtn_); |
||||||
|
buttonLayout->addWidget(confirmBtn_); |
||||||
|
|
||||||
|
QFont font; |
||||||
|
font.setPointSizeF(font.pointSizeF() * conf::modals::LABEL_MEDIUM_SIZE_RATIO); |
||||||
|
|
||||||
|
auto label = new QLabel( |
||||||
|
tr("Open the fallback, follow the steps and confirm after completing them."), this); |
||||||
|
label->setFont(font); |
||||||
|
|
||||||
|
layout->addWidget(label); |
||||||
|
layout->addLayout(buttonLayout); |
||||||
|
|
||||||
|
connect(openBtn_, &QPushButton::clicked, [session, authType]() { |
||||||
|
const auto url = QString("https://%1:%2/_matrix/client/r0/auth/%4/" |
||||||
|
"fallback/web?session=%3") |
||||||
|
.arg(QString::fromStdString(http::client()->server())) |
||||||
|
.arg(http::client()->port()) |
||||||
|
.arg(session) |
||||||
|
.arg(authType); |
||||||
|
|
||||||
|
QDesktopServices::openUrl(url); |
||||||
|
}); |
||||||
|
|
||||||
|
connect(confirmBtn_, &QPushButton::clicked, this, [this]() { |
||||||
|
emit confirmation(); |
||||||
|
emit close(); |
||||||
|
}); |
||||||
|
connect(cancelBtn_, &QPushButton::clicked, this, [this]() { |
||||||
|
emit cancel(); |
||||||
|
emit close(); |
||||||
|
}); |
||||||
|
} |
@ -0,0 +1,26 @@ |
|||||||
|
#pragma once |
||||||
|
|
||||||
|
#include <QWidget> |
||||||
|
|
||||||
|
class QPushButton; |
||||||
|
class QLabel; |
||||||
|
|
||||||
|
namespace dialogs { |
||||||
|
|
||||||
|
class FallbackAuth : public QWidget |
||||||
|
{ |
||||||
|
Q_OBJECT |
||||||
|
|
||||||
|
public: |
||||||
|
FallbackAuth(const QString &authType, const QString &session, QWidget *parent = nullptr); |
||||||
|
|
||||||
|
signals: |
||||||
|
void confirmation(); |
||||||
|
void cancel(); |
||||||
|
|
||||||
|
private: |
||||||
|
QPushButton *openBtn_; |
||||||
|
QPushButton *confirmBtn_; |
||||||
|
QPushButton *cancelBtn_; |
||||||
|
}; |
||||||
|
} // dialogs
|
Loading…
Reference in new issue