mirror of
https://github.com/chenx-dust/EZ4Connect.git
synced 2026-09-20 02:13:32 +08:00
83 lines
2.3 KiB
C++
83 lines
2.3 KiB
C++
#include "ssologinwebview.h"
|
|
#include "ui_ssologinwebview.h"
|
|
|
|
#include <QDialogButtonBox>
|
|
#include <QLineEdit>
|
|
#include <QToolButton>
|
|
#include <QWebEngineHistory>
|
|
#include <QWebEngineView>
|
|
#include <QWebEnginePage>
|
|
#include <QtWebEngineCore>
|
|
#include <QUrl>
|
|
|
|
SsoLoginWebView::SsoLoginWebView(QWidget *parent)
|
|
: QDialog(parent)
|
|
, ui(new Ui::SsoLoginWebView)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
setAttribute(Qt::WA_DeleteOnClose);
|
|
setModal(true);
|
|
|
|
setupConnections();
|
|
}
|
|
|
|
SsoLoginWebView::~SsoLoginWebView()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void SsoLoginWebView::setupConnections()
|
|
{
|
|
connect(ui->backButton, &QToolButton::clicked, ui->webEngineView, &QWebEngineView::back);
|
|
connect(ui->forwardButton, &QToolButton::clicked, ui->webEngineView, &QWebEngineView::forward);
|
|
connect(ui->reloadButton, &QToolButton::clicked, ui->webEngineView, &QWebEngineView::reload);
|
|
|
|
connect(ui->addressLineEdit, &QLineEdit::returnPressed, this, [&]()
|
|
{
|
|
const QUrl target = QUrl::fromUserInput(ui->addressLineEdit->text());
|
|
ui->webEngineView->load(target);
|
|
});
|
|
|
|
connect(ui->webEngineView, &QWebEngineView::urlChanged, this, [&](const QUrl &url)
|
|
{
|
|
ui->addressLineEdit->setText(url.toString());
|
|
});
|
|
|
|
connect(ui->webEngineView->page(), &QWebEnginePage::navigationRequested, this,
|
|
[&](QWebEngineNavigationRequest &request) {
|
|
if (request.navigationType() == QWebEngineNavigationRequest::NavigationType::RedirectNavigation &&
|
|
request.url().host() == callbackServerHost)
|
|
{
|
|
QUrlQuery queries(request.url());
|
|
loginCompleted(queries.queryItemValue("ticket"));
|
|
request.reject();
|
|
this->close();
|
|
}
|
|
else
|
|
request.accept();
|
|
});
|
|
|
|
|
|
connect(ui->dialogButtonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
|
|
}
|
|
|
|
void SsoLoginWebView::setInitialUrl(const QUrl &url)
|
|
{
|
|
if (!url.isEmpty())
|
|
{
|
|
ui->addressLineEdit->setText(url.toString());
|
|
ui->webEngineView->load(url);
|
|
}
|
|
}
|
|
|
|
void SsoLoginWebView::setCallbackServerHost(const QString &host)
|
|
{
|
|
callbackServerHost = host;
|
|
}
|
|
|
|
QUrl SsoLoginWebView::currentUrl() const
|
|
{
|
|
return ui->webEngineView->url();
|
|
}
|