From 02d78d7607803fc5242815e31de720b65d19cf5f Mon Sep 17 00:00:00 2001 From: Kevin Yue Date: Mon, 17 Feb 2020 23:46:49 +0800 Subject: [PATCH] Update UI --- GPClient/GPClient.pro | 3 ++ GPClient/com.yuezk.qt.GPClient.svg | 12 +++--- GPClient/connected.png | Bin 0 -> 18199 bytes GPClient/gpclient.cpp | 60 ++++++++++++++++++---------- GPClient/gpclient.h | 1 + GPClient/gpclient.ui | 33 ++++++++++++--- GPClient/not_connected.png | Bin 0 -> 16393 bytes GPClient/pending.png | Bin 0 -> 16369 bytes GPClient/resources.qrc | 11 +++++ GPClient/styles.css | 0 GPService/systemd/gpservice.service | 2 +- 11 files changed, 87 insertions(+), 35 deletions(-) create mode 100644 GPClient/connected.png create mode 100644 GPClient/not_connected.png create mode 100644 GPClient/pending.png create mode 100644 GPClient/resources.qrc create mode 100644 GPClient/styles.css diff --git a/GPClient/GPClient.pro b/GPClient/GPClient.pro index 57b6da9..9755d1e 100644 --- a/GPClient/GPClient.pro +++ b/GPClient/GPClient.pro @@ -54,3 +54,6 @@ desktop_icon.path = /usr/share/pixmaps/ desktop_icon.files = com.yuezk.qt.GPClient.svg INSTALLS += desktop_entry desktop_icon + +RESOURCES += \ + resources.qrc diff --git a/GPClient/com.yuezk.qt.GPClient.svg b/GPClient/com.yuezk.qt.GPClient.svg index c6a0609..ee0ebd3 100644 --- a/GPClient/com.yuezk.qt.GPClient.svg +++ b/GPClient/com.yuezk.qt.GPClient.svg @@ -16,11 +16,11 @@ viewBox="0 0 96 96" style="enable-background:new 0 0 96 96;" xml:space="preserve" - sodipodi:docname="logo.svg" + sodipodi:docname="com.yuezk.qt.GPClient.svg" inkscape:version="0.92.4 5da689c313, 2019-01-14">image/svg+xml \ No newline at end of file + d="m 50.35,48.2 c 0,-1 -0.8,-1.8 -1.8,-1.8 -1,0 -1.8,0.8 -1.8,1.8 0,0.7 0.4,1.3 1,1.6 l -1,5.2 h 3.6 l -1,-5.2 c 0.6,-0.3 1,-0.9 1,-1.6 z" /> \ No newline at end of file diff --git a/GPClient/connected.png b/GPClient/connected.png new file mode 100644 index 0000000000000000000000000000000000000000..e6e4e50422d426e241cfad923f0403660bbf2944 GIT binary patch literal 18199 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 literal 0 HcmV?d00001 diff --git a/GPClient/gpclient.cpp b/GPClient/gpclient.cpp index f760764..7f61b2b 100644 --- a/GPClient/gpclient.cpp +++ b/GPClient/gpclient.cpp @@ -3,23 +3,26 @@ #include "samlloginwindow.h" #include +#include +#include +#include +#include +#include GPClient::GPClient(QWidget *parent) : QMainWindow(parent) , ui(new Ui::GPClient) { ui->setupUi(this); - setFixedSize(width(), height()); moveCenter(); + // Restore portal from the previous settings settings = new QSettings("com.yuezk.qt", "GPClient"); ui->portalInput->setText(settings->value("portal", "").toString()); QObject::connect(this, &GPClient::connectFailed, [this]() { - ui->connectButton->setDisabled(false); - ui->connectButton->setText("Connect"); - ui->statusLabel->setText("Not Connected"); + updateConnectionStatus("not_connected"); }); // QNetworkAccessManager setup @@ -38,8 +41,7 @@ GPClient::GPClient(QWidget *parent) int status = vpn->status(); if (status != 0) { - ui->statusLabel->setText("Connected"); - ui->connectButton->setText("Disconnect"); + updateConnectionStatus("connected"); } } @@ -61,15 +63,19 @@ void GPClient::on_connectButton_clicked() QString portal = ui->portalInput->text(); settings->setValue("portal", portal); ui->statusLabel->setText("Authenticating..."); - ui->connectButton->setDisabled(true); + updateConnectionStatus("pending"); samlLogin(portal); } else if (btnText == "Cancel") { ui->statusLabel->setText("Canceling..."); - ui->connectButton->setDisabled(true); + updateConnectionStatus("pending"); + + if (reply->isRunning()) { + reply->abort(); + } vpn->disconnect(); } else { ui->statusLabel->setText("Disconnecting..."); - ui->connectButton->setDisabled(true); + updateConnectionStatus("pending"); vpn->disconnect(); } } @@ -118,7 +124,6 @@ void GPClient::preloginResultFinished() loginWindow->login(samlRequest); loginWindow->exec(); } - delete reply; } void GPClient::onLoginSuccess(QJsonObject loginResult) @@ -141,27 +146,38 @@ void GPClient::onLoginSuccess(QJsonObject loginResult) } QString host = QString("https://%1/%2:%3").arg(loginResult.value("server").toString(), shortpath, cookieName); - qDebug() << "Server:" << host << ", User:" << user << "Cookie:" << cookieValue; - qDebug() << "openconnect --protocol=gp -u" << user << "--passwd-on-stdin" << host; - - ui->statusLabel->setText("Connecting..."); - ui->connectButton->setText("Cancel"); - ui->connectButton->setDisabled(false); vpn->connect(host, user, cookieValue); + ui->statusLabel->setText("Connecting..."); + updateConnectionStatus("pending"); +} + +void GPClient::updateConnectionStatus(QString status) +{ + if (status == "not_connected") { + ui->statusLabel->setText("Not Connected"); + ui->statusImage->setStyleSheet("image: url(:/images/not_connected.png); padding: 15;"); + ui->connectButton->setText("Connect"); + ui->connectButton->setDisabled(false); + } else if (status == "pending") { + ui->statusImage->setStyleSheet("image: url(:/images/pending.png); padding: 15;"); + ui->connectButton->setText("Cancel"); + ui->connectButton->setDisabled(false); + } else if (status == "connected") { + ui->statusLabel->setText("Connected"); + ui->statusImage->setStyleSheet("image: url(:/images/connected.png); padding: 15;"); + ui->connectButton->setText("Disconnect"); + ui->connectButton->setDisabled(false); + } } void GPClient::onVPNConnected() { - ui->statusLabel->setText("Connected"); - ui->connectButton->setText("Disconnect"); - ui->connectButton->setDisabled(false); + updateConnectionStatus("connected"); } void GPClient::onVPNDisconnected() { - ui->statusLabel->setText("Not Connected"); - ui->connectButton->setText("Connect"); - ui->connectButton->setDisabled(false); + updateConnectionStatus("not_connected"); } void GPClient::onVPNLogAvailable(QString log) diff --git a/GPClient/gpclient.h b/GPClient/gpclient.h index f7d5264..d8f79d0 100644 --- a/GPClient/gpclient.h +++ b/GPClient/gpclient.h @@ -41,6 +41,7 @@ private: QSettings *settings; void moveCenter(); + void updateConnectionStatus(QString status); void samlLogin(const QString portal); }; #endif // GPCLIENT_H diff --git a/GPClient/gpclient.ui b/GPClient/gpclient.ui index 02f07e7..ad50a25 100644 --- a/GPClient/gpclient.ui +++ b/GPClient/gpclient.ui @@ -7,15 +7,18 @@ 0 0 260 - 300 + 338 GP VPN Client - - com.yuezk.qt.GPClient.svgcom.yuezk.qt.GPClient.svg + + :/images/logo.svg:/images/logo.svg + + + @@ -47,12 +50,28 @@ 15 - + + + 15 + + + + + #statusImage { + image: url(:/images/not_connected.png); + padding: 15 +} + + + + + + - 18 + 14 50 false false @@ -101,6 +120,8 @@ - + + + diff --git a/GPClient/not_connected.png b/GPClient/not_connected.png new file mode 100644 index 0000000000000000000000000000000000000000..99adc1be0b877614e5e5a4168fc8cff9e74c0caf GIT binary patch literal 16393 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 W8} + + com.yuezk.qt.GPClient.svg + connected.png + pending.png + not_connected.png + + + styles.css + + diff --git a/GPClient/styles.css b/GPClient/styles.css new file mode 100644 index 0000000..e69de29 diff --git a/GPService/systemd/gpservice.service b/GPService/systemd/gpservice.service index e811c96..9574461 100644 --- a/GPService/systemd/gpservice.service +++ b/GPService/systemd/gpservice.service @@ -6,4 +6,4 @@ Wants=network.target [Service] Type=dbus BusName=com.yuezk.qt.GPService -ExecStart=/usr/local/bin/gpservice --no-dtls -U nm-openconnect +ExecStart=/usr/local/bin/gpservice