aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/MainWindow.cpp15
-rw-r--r--src/ui/KeyImportDetailDialog.cpp16
-rwxr-xr-xsrc/ui/KeyMgmt.cpp12
-rw-r--r--src/ui/KeyServerImportDialog.cpp209
-rw-r--r--src/ui/widgets/InfoBoardWidget.cpp2
-rw-r--r--src/ui/widgets/KeyList.cpp94
-rw-r--r--src/ui/widgets/VerifyKeyDetailBox.cpp2
7 files changed, 254 insertions, 96 deletions
diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
index e2e610a2..42b04c76 100644
--- a/src/MainWindow.cpp
+++ b/src/MainWindow.cpp
@@ -133,7 +133,7 @@ void MainWindow::restoreSettings() {
settings.setValue("keyserver/keyServerList", keyServerList);
// set default keyserver, if it's not set
- QString defaultKeyServer = settings.value("keyserver/defaultKeyServer", QString("http://keys.gnupg.net")).toString();
+ QString defaultKeyServer = settings.value("keyserver/defaultKeyServer", QString("https://keyserver.ubuntu.com")).toString();
settings.setValue("keyserver/defaultKeyServer", defaultKeyServer);
// Iconstyle
@@ -376,16 +376,16 @@ void MainWindow::createActions() {
connect(copyMailAddressToClipboardAct, SIGNAL(triggered()), this, SLOT(slotCopyMailAddressToClipboard()));
// TODO: find central place for shared actions, to avoid code-duplication with keymgmt.cpp
- showKeyDetailsAct = new QAction(tr("Show Keydetails"), this);
+ showKeyDetailsAct = new QAction(tr("Show Key Details"), this);
showKeyDetailsAct->setToolTip(tr("Show Details for this Key"));
connect(showKeyDetailsAct, SIGNAL(triggered()), this, SLOT(slotShowKeyDetails()));
- refreshKeysFromKeyserverAct = new QAction(tr("Refresh key from keyserver"), this);
- refreshKeysFromKeyserverAct->setToolTip(tr("Refresh key from default keyserver"));
+ refreshKeysFromKeyserverAct = new QAction(tr("Refresh Key From Key Server"), this);
+ refreshKeysFromKeyserverAct->setToolTip(tr("Refresh key from default key server"));
connect(refreshKeysFromKeyserverAct, SIGNAL(triggered()), this, SLOT(refreshKeysFromKeyserver()));
- uploadKeyToServerAct = new QAction(tr("Upload Key(s) To Server"), this);
- uploadKeyToServerAct->setToolTip(tr("Upload The Selected Keys To Server"));
+ uploadKeyToServerAct = new QAction(tr("Upload Public Key(s) To Server"), this);
+ uploadKeyToServerAct->setToolTip(tr("Upload The Selected Public Keys To Server"));
connect(uploadKeyToServerAct, SIGNAL(triggered()), this, SLOT(uploadKeyToServer()));
/* Key-Shortcuts for Tab-Switchung-Action
*/
@@ -922,7 +922,8 @@ void MainWindow::refreshKeysFromKeyserver() {
return;
}
- auto *ksid = new KeyServerImportDialog(mCtx, mKeyList, this);
+ auto *ksid = new KeyServerImportDialog(mCtx, mKeyList, true, this);
+ ksid->show();
ksid->slotImport(*mKeyList->getSelected());
}
diff --git a/src/ui/KeyImportDetailDialog.cpp b/src/ui/KeyImportDetailDialog.cpp
index 4c60ad0f..3d8d1cdc 100644
--- a/src/ui/KeyImportDetailDialog.cpp
+++ b/src/ui/KeyImportDetailDialog.cpp
@@ -24,13 +24,17 @@
#include <ui/KeyImportDetailDialog.h>
-KeyImportDetailDialog::KeyImportDetailDialog(GpgME::GpgContext *ctx, GpgImportInformation result, QWidget *parent)
+KeyImportDetailDialog::KeyImportDetailDialog(GpgME::GpgContext *ctx, GpgImportInformation result, bool automatic,
+ QWidget *parent)
: QDialog(parent) {
mCtx = ctx;
mResult = std::move(result);
// If no key for import found, just show a message
if (mResult.considered == 0) {
- QMessageBox::information(nullptr, tr("Key import details"), tr("No keys found to import"));
+ if(automatic)
+ QMessageBox::information(nullptr, tr("Key Update Details"), tr("No keys found"));
+ else
+ QMessageBox::information(nullptr, tr("Key Import Details"), tr("No keys found to import"));
return;
}
@@ -46,7 +50,11 @@ KeyImportDetailDialog::KeyImportDetailDialog(GpgME::GpgContext *ctx, GpgImportIn
mvbox->addWidget(buttonBox);
this->setLayout(mvbox);
- this->setWindowTitle(tr("Key import details"));
+ if(automatic)
+ this->setWindowTitle(tr("Key Update Details"));
+ else
+ this->setWindowTitle(tr("Key Import Details"));
+
this->resize(QSize(600, 300));
this->setModal(true);
this->exec();
@@ -54,7 +62,7 @@ KeyImportDetailDialog::KeyImportDetailDialog(GpgME::GpgContext *ctx, GpgImportIn
void KeyImportDetailDialog::createGeneralInfoBox() {
// GridBox for general import information
- generalInfoBox = new QGroupBox(tr("Genral key import info"));
+ generalInfoBox = new QGroupBox(tr("General key info"));
auto *generalInfoBoxLayout = new QGridLayout(generalInfoBox);
generalInfoBoxLayout->addWidget(new QLabel(tr("Considered:")), 1, 0);
diff --git a/src/ui/KeyMgmt.cpp b/src/ui/KeyMgmt.cpp
index 326c20b2..6f9c64a2 100755
--- a/src/ui/KeyMgmt.cpp
+++ b/src/ui/KeyMgmt.cpp
@@ -142,7 +142,7 @@ void KeyMgmt::createActions()
deleteCheckedKeysAct->setIcon(QIcon(":button_delete.png"));
connect(deleteCheckedKeysAct, SIGNAL(triggered()), this, SLOT(slotDeleteCheckedKeys()));
- showKeyDetailsAct = new QAction(tr("Show Keydetails"), this);
+ showKeyDetailsAct = new QAction(tr("Show Key Details"), this);
showKeyDetailsAct->setToolTip(tr("Show Details for this Key"));
connect(showKeyDetailsAct, SIGNAL(triggered()), this, SLOT(slotShowKeyDetails()));
}
@@ -204,7 +204,7 @@ void KeyMgmt::createToolBars()
void KeyMgmt::slotImportKeys(QByteArray inBuffer)
{
GpgImportInformation result = mCtx->importKey(std::move(inBuffer));
- new KeyImportDetailDialog(mCtx, result, this);
+ new KeyImportDetailDialog(mCtx, result, false, this);
}
@@ -226,7 +226,7 @@ void KeyMgmt::slotImportKeyFromFile()
void KeyMgmt::slotImportKeyFromKeyServer()
{
- importDialog = new KeyServerImportDialog(mCtx, mKeyList, this);
+ importDialog = new KeyServerImportDialog(mCtx, mKeyList, false, this);
importDialog->show();
}
@@ -328,12 +328,6 @@ void KeyMgmt::slotGenerateKeyDialog()
void KeyMgmt::closeEvent(QCloseEvent *event)
{
- QSettings settings;
- //settings.setValue("geometry", saveGeometry());
- settings.setValue("keymgmt/windowState", saveState());
- settings.setValue("keymgmt/pos", pos());
- settings.setValue("keymgmt/size", size());
-
QMainWindow::closeEvent(event);
}
diff --git a/src/ui/KeyServerImportDialog.cpp b/src/ui/KeyServerImportDialog.cpp
index 88ec1c11..00ff4165 100644
--- a/src/ui/KeyServerImportDialog.cpp
+++ b/src/ui/KeyServerImportDialog.cpp
@@ -26,52 +26,101 @@
#include <utility>
-KeyServerImportDialog::KeyServerImportDialog(GpgME::GpgContext *ctx, KeyList *keyList, QWidget *parent)
+KeyServerImportDialog::KeyServerImportDialog(GpgME::GpgContext *ctx, KeyList *keyList, bool automatic,
+ QWidget *parent)
: QDialog(parent), appPath(qApp->applicationDirPath()),
- settings(appPath + "/conf/gpgfrontend.ini", QSettings::IniFormat), mCtx(ctx), mKeyList(keyList) {
+ settings(appPath + "/conf/gpgfrontend.ini", QSettings::IniFormat),
+ mCtx(ctx), mKeyList(keyList), mAutomatic(automatic) {
+
+ if(automatic) {
+ setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint);
+ }
+
// Buttons
closeButton = createButton(tr("&Close"), SLOT(close()));
- importButton = createButton(tr("&Import"), SLOT(slotImport()));
+ importButton = createButton(tr("&Import ALL"), SLOT(slotImport()));
searchButton = createButton(tr("&Search"), SLOT(slotSearch()));
// Line edit for search string
- searchLabel = new QLabel(tr("Search string:"));
+ searchLabel = new QLabel(tr("Search String:"));
searchLineEdit = new QLineEdit();
// combobox for keyserverlist
- keyServerLabel = new QLabel(tr("Keyserver:"));
+ keyServerLabel = new QLabel(tr("Key Server:"));
keyServerComboBox = createComboBox();
// table containing the keys found
createKeysTable();
message = new QLabel;
+ message->setFixedHeight(24);
icon = new QLabel;
+ icon->setFixedHeight(24);
+
+ // Network Waiting
+ waitingBar = new QProgressBar();
+ waitingBar->setVisible(false);
+ waitingBar->setRange(0, 0);
+ waitingBar->setFixedHeight(24);
+ waitingBar->setFixedWidth(260);
// Layout for messagebox
auto *messageLayout = new QHBoxLayout;
messageLayout->addWidget(icon);
messageLayout->addWidget(message);
+ messageLayout->addWidget(waitingBar);
messageLayout->addStretch();
// Layout for import and close button
auto *buttonsLayout = new QHBoxLayout;
buttonsLayout->addStretch();
- buttonsLayout->addWidget(importButton);
+ if(!automatic)
+ buttonsLayout->addWidget(importButton);
buttonsLayout->addWidget(closeButton);
auto *mainLayout = new QGridLayout;
- mainLayout->addWidget(searchLabel, 1, 0);
- mainLayout->addWidget(searchLineEdit, 1, 1);
- mainLayout->addWidget(searchButton, 1, 2);
- mainLayout->addWidget(keyServerLabel, 2, 0);
- mainLayout->addWidget(keyServerComboBox, 2, 1);
- mainLayout->addWidget(keysTable, 3, 0, 1, 3);
- mainLayout->addLayout(messageLayout, 4, 0, 1, 3);
- mainLayout->addLayout(buttonsLayout, 5, 0, 1, 3);
+
+ // 自动化调用界面布局
+ if(automatic) {
+ mainLayout->addLayout(messageLayout, 0, 0, 1, 3);
+ mainLayout->addLayout(buttonsLayout, 1, 0, 1, 3);
+ } else {
+ mainLayout->addWidget(searchLabel, 1, 0);
+ mainLayout->addWidget(searchLineEdit, 1, 1);
+ mainLayout->addWidget(searchButton, 1, 2);
+ mainLayout->addWidget(keyServerLabel, 2, 0);
+ mainLayout->addWidget(keyServerComboBox, 2, 1);
+ mainLayout->addWidget(keysTable, 3, 0, 1, 3);
+ mainLayout->addLayout(messageLayout, 4, 0, 1, 3);
+ mainLayout->addLayout(buttonsLayout, 6, 0, 1, 3);
+ }
this->setLayout(mainLayout);
this->setWindowTitle(tr("Import Keys from Keyserver"));
- this->resize(700, 300);
+
+ if(automatic) {
+ this->setMinimumHeight(80);
+ } else {
+ // Restore window size & location
+ if (this->settings.value("ImportKeyFromServer/setWindowSize").toBool()) {
+ QPoint pos = settings.value("ImportKeyFromServer/pos", QPoint(150, 150)).toPoint();
+ QSize size = settings.value("ImportKeyFromServer/size", QSize(500, 300)).toSize();
+ qDebug() << "Settings size" << size << "pos" << pos;
+ this->setMinimumSize(size);
+ this->move(pos);
+ } else {
+ qDebug() << "Use default min windows size and pos";
+ QPoint defaultPoint(150, 150);
+ QSize defaultMinSize(500, 300);
+ this->setMinimumSize(defaultMinSize);
+ this->move(defaultPoint);
+ this->settings.setValue("ImportKeyFromServer/pos", defaultPoint);
+ this->settings.setValue("ImportKeyFromServer/size", defaultMinSize);
+ this->settings.setValue("ImportKeyFromServer/setWindowSize", true);
+ }
+ }
+
+
+
this->setModal(true);
}
@@ -119,23 +168,35 @@ void KeyServerImportDialog::createKeysTable() {
void KeyServerImportDialog::setMessage(const QString &text, bool error) {
message->setText(text);
if (error) {
- QIcon undoicon = QIcon::fromTheme("dialog-error");
- QPixmap pixmap = undoicon.pixmap(QSize(32, 32), QIcon::Normal, QIcon::On);
- icon->setPixmap(pixmap);
+ icon->setPixmap(QPixmap(":error.png").scaled(QSize(24, 24), Qt::KeepAspectRatio));
} else {
- QIcon undoicon = QIcon::fromTheme("dialog-information");
- QPixmap pixmap = undoicon.pixmap(QSize(32, 32), QIcon::Normal, QIcon::On);
- icon->setPixmap(pixmap);
+ icon->setPixmap(QPixmap(":info.png").scaled(QSize(24, 24), Qt::KeepAspectRatio));
}
}
void KeyServerImportDialog::slotSearch() {
+
+ if (searchLineEdit->text().isEmpty()) {
+ setMessage(tr("<h4>Text is empty.</h4>"), false);
+ return;
+ }
+
QUrl urlFromRemote = keyServerComboBox->currentText() + "/pks/lookup?search=" + searchLineEdit->text() +
"&op=index&options=mr";
qnam = new QNetworkAccessManager(this);
QNetworkReply *reply = qnam->get(QNetworkRequest(urlFromRemote));
+
connect(reply, SIGNAL(finished()),
this, SLOT(slotSearchFinished()));
+
+ setLoading(true);
+
+ while (reply->isRunning()) {
+ QApplication::processEvents();
+ }
+
+ setLoading(false);
+
}
void KeyServerImportDialog::slotSearchFinished() {
@@ -147,29 +208,34 @@ void KeyServerImportDialog::slotSearchFinished() {
QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
if (reply->error()) {
- setMessage(tr("Couldn't contact keyserver!"), true);
- //setMessage(reply->error());
+ setMessage(tr("<h4>Couldn't contact keyserver!</h4>"), true);
qDebug() << reply->error();
+ return;
}
if (firstLine.contains("Error")) {
QString text = QString(reply->readLine(1024));
if (text.contains("Too many responses")) {
- setMessage(tr("Too many responses from keyserver!"), true);
+ setMessage(tr("<h4>CToo many responses from keyserver!</h4>"), true);
+ return;
} else if (text.contains("No keys found")) {
// if string looks like hex string, search again with 0x prepended
QRegExp rx("[0-9A-Fa-f]*");
QString query = searchLineEdit->text();
if (rx.exactMatch(query)) {
- setMessage(tr("No keys found, input may be kexId, retrying search with 0x."), true);
+ setMessage(tr("<h4>No keys found, input may be kexId, retrying search with 0x.</h4>"), true);
searchLineEdit->setText(query.prepend("0x"));
this->slotSearch();
+ return;
} else {
- setMessage(tr("No keys found containing the search string!"), true);
+ setMessage(tr("<h4>No keys found containing the search string!</h4>"), true);
+ return;
}
} else if (text.contains("Insufficiently specific words")) {
- setMessage(tr("Insufficiently specific search string!"), true);
+ setMessage(tr("<h4>Insufficiently specific search string!</h4>"), true);
+ return;
} else {
setMessage(text, true);
+ return;
}
} else {
int row = 0;
@@ -236,7 +302,7 @@ void KeyServerImportDialog::slotSearchFinished() {
}
}
}
- setMessage(tr("%1 keys found. Doubleclick a key to import it.").arg(row), false);
+ setMessage(tr("<h4>%1 keys found. Double click a key to import it.</h4>").arg(row), false);
}
keysTable->resizeColumnsToContents();
}
@@ -250,23 +316,34 @@ void KeyServerImportDialog::slotImport() {
}
}
-void KeyServerImportDialog::slotImport(QStringList keyIds) {
- QString keyserver = settings.value("keyserver/defaultKeyServer").toString();;
- slotImport(std::move(keyIds), QUrl(keyserver));
+void KeyServerImportDialog::slotImport(const QStringList& keyIds) {
+ QString keyserver = settings.value("keyserver/defaultKeyServer").toString();
+ qDebug() << "Select Key Server" << keyserver;
+ slotImport(keyIds, QUrl(keyserver));
}
-void KeyServerImportDialog::slotImport(QStringList keyIds, const QUrl &keyServerUrl) {
- foreach(QString keyId, keyIds) {
- QUrl reqUrl(
- keyServerUrl.scheme() + "://" + keyServerUrl.host() + ":11371/pks/lookup?op=get&search=0x" + keyId +
- "&options=mr");
- //qDebug() << "req to " << reqUrl;
- qnam = new QNetworkAccessManager(this);
- QNetworkReply *reply = qnam->get(QNetworkRequest(reqUrl));
- connect(reply, SIGNAL(finished()),
- this, SLOT(slotImportFinished()));
+void KeyServerImportDialog::slotImport(const QStringList& keyIds, const QUrl &keyServerUrl) {
+ for (const auto &keyId : keyIds) {
+ QUrl reqUrl(
+ keyServerUrl.scheme() + "://" + keyServerUrl.host() + "/pks/lookup?op=get&search=0x" + keyId +
+ "&options=mr");
+ qDebug() << "slotImport reqUrl" << reqUrl;
+ qnam = new QNetworkAccessManager(this);
+
+ QNetworkReply *reply = qnam->get(QNetworkRequest(reqUrl));
+
+ connect(reply, SIGNAL(finished()),
+ this, SLOT(slotImportFinished()));
+
+ setLoading(true);
+
+ while(reply->isRunning()) {
+ QApplication::processEvents();
}
+
+ setLoading(false);
+ }
}
void KeyServerImportDialog::slotImportFinished() {
@@ -275,12 +352,25 @@ void KeyServerImportDialog::slotImportFinished() {
QByteArray key = reply->readAll();
QVariant redirectionTarget = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
- if (reply->error()) {
- setMessage(tr("Error while contacting keyserver!"), true);
+
+ auto error = reply->error();
+ if (error != QNetworkReply::NoError) {
+ qDebug() << "Error From Reply" << reply->errorString();
+ switch (error) {
+ case QNetworkReply::ContentNotFoundError :
+ setMessage(tr("Key Not Found"), true);
+ break;
+ case QNetworkReply::TimeoutError :
+ setMessage(tr("Timeout"), true);
+ break;
+ case QNetworkReply::HostNotFoundError :
+ setMessage(tr("Key Server Not Found"), true);
+ break;
+ default:
+ setMessage(tr("Connection Error"), true);
+ }
return;
}
- this->importKeys(key.constData());
- setMessage(tr("Key imported"), false);
// Add keyserver to list in config-file, if it isn't contained
QStringList keyServerList = settings.value("keyserver/keyServerList").toStringList();
@@ -289,10 +379,35 @@ void KeyServerImportDialog::slotImportFinished() {
settings.setValue("keyserver/keyServerList", keyServerList);
}
reply->deleteLater();
- reply = nullptr;
+
+ this->importKeys(key.constData());
+ if(mAutomatic) {
+ setMessage(tr("<h4>Key Updated</h4>"), false);
+ } else {
+ setMessage(tr("<h4>Key Imported</h4>"), false);
+ }
+
+
}
void KeyServerImportDialog::importKeys(QByteArray inBuffer) {
GpgImportInformation result = mCtx->importKey(std::move(inBuffer));
- new KeyImportDetailDialog(mCtx, result, this);
+ if(mAutomatic) {
+ new KeyImportDetailDialog(mCtx, result, false, nullptr);
+ this->accept();
+ } else {
+ new KeyImportDetailDialog(mCtx, result, false, this);
+ }
+}
+
+void KeyServerImportDialog::setLoading(bool status) {
+ if (status) {
+ waitingBar->setVisible(true);
+ icon->setVisible(false);
+ message->setVisible(false);
+ } else {
+ waitingBar->setVisible(false);
+ icon->setVisible(true);
+ message->setVisible(true);
+ }
}
diff --git a/src/ui/widgets/InfoBoardWidget.cpp b/src/ui/widgets/InfoBoardWidget.cpp
index bfd0c643..76f82505 100644
--- a/src/ui/widgets/InfoBoardWidget.cpp
+++ b/src/ui/widgets/InfoBoardWidget.cpp
@@ -60,7 +60,7 @@ InfoBoardWidget::InfoBoardWidget(QWidget *parent, GpgME::GpgContext *ctx, KeyLis
}
void InfoBoardWidget::slotImportFromKeyserver() {
- auto *importDialog = new KeyServerImportDialog(mCtx, mKeyList, this);
+ auto *importDialog = new KeyServerImportDialog(mCtx, mKeyList, false, this);
importDialog->slotImport(*keysNotInList);
}
diff --git a/src/ui/widgets/KeyList.cpp b/src/ui/widgets/KeyList.cpp
index dccf1a56..4f0fe1c3 100644
--- a/src/ui/widgets/KeyList.cpp
+++ b/src/ui/widgets/KeyList.cpp
@@ -30,7 +30,8 @@ KeyList::KeyList(GpgME::GpgContext *ctx,
KeyListRow::KeyType selectType,
KeyListColumn::InfoType infoType,
QWidget *parent)
- : QWidget(parent), mSelectType(selectType), mInfoType(infoType)
+ : QWidget(parent), mSelectType(selectType), mInfoType(infoType), appPath(qApp->applicationDirPath()),
+ settings(appPath + "/conf/gpgfrontend.ini", QSettings::IniFormat)
{
mCtx = ctx;
@@ -380,55 +381,94 @@ void KeyList::dragEnterEvent(QDragEnterEvent *event)
void KeyList::importKeys(QByteArray inBuffer)
{
GpgImportInformation result = mCtx->importKey(std::move(inBuffer));
- new KeyImportDetailDialog(mCtx, result, this);
+ new KeyImportDetailDialog(mCtx, result, false, this);
}
-void KeyList::uploadKeyToServer(QByteArray *keys)
-{
- QUrl reqUrl("http://localhost:11371/pks/add");
+void KeyList::uploadKeyToServer(QByteArray *keys) {
+
+ // set default keyserver
+ QString keyserver = settings.value("keyserver/defaultKeyServer").toString();
+
+ QUrl reqUrl(keyserver + "/pks/add");
qnam = new QNetworkAccessManager(this);
- QUrl params;
- keys->replace("\n", "%0D%0A")
+ // Building Post Data
+ QByteArray postData;
+
+ keys->replace("\n", "%0A")
+ .replace("\r", "%0D")
.replace("(", "%28")
.replace(")", "%29")
.replace("/", "%2F")
.replace(":", "%3A")
- .replace("+","%2B")
+ .replace("+", "%2B")
+ .replace('=', "%3D")
.replace(' ', '+');
- QUrlQuery q;
+ QNetworkRequest request(reqUrl);
+ request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
- q.addQueryItem("keytext", *keys);
+ postData.append("keytext").append("=").append(*keys);
- params = q.query(QUrl::FullyEncoded).toUtf8();
+ // Send Post Data
+ QNetworkReply *reply = qnam->post(request, postData);
+ connect(reply, SIGNAL(finished()),
+ this, SLOT(uploadFinished()));
- QNetworkRequest req(reqUrl);
- req.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
+ // A Waiting Dialog
+ auto *dialog = new QDialog(this, Qt::CustomizeWindowHint | Qt::WindowTitleHint);
+ dialog->setModal(true);
+ dialog->setWindowTitle(tr("Uploading Public Key..."));
- QNetworkReply *reply = qnam->post(req,params.toEncoded());
- connect(reply, SIGNAL(finished()),
- this, SLOT(uploadFinished()));
- qDebug() << "REQURL: " << reqUrl;
- qDebug() << "PARAMS.ENCODED: " << params.toEncoded();
-}
+ auto *pb = new QProgressBar();
+ pb->setRange(0, 0);
+ pb->setFixedSize(260, 24);
-void KeyList::uploadFinished()
-{
+ auto *layout = new QVBoxLayout(dialog);
+ layout->addWidget(pb);
+ dialog->setLayout(layout);
+
+ dialog->show();
+
+ // Keep Waiting
+ while(reply->isRunning()) {
+ QApplication::processEvents();
+ }
+
+ // Done
+ dialog->hide();
+ dialog->close();
+}
+void KeyList::uploadFinished() {
auto *reply = qobject_cast<QNetworkReply *>(sender());
QByteArray response = reply->readAll();
- qDebug() << "RESPNOSE: " << response.data();
- //reply->readAll();
- qDebug() << "ERROR: " << reply->error();
- if (reply->error()) {
- qDebug() << "Error while contacting keyserver!";
+ qDebug() << "Response: " << response.data();
+
+ auto error = reply->error();
+ if (error != QNetworkReply::NoError) {
+ qDebug() << "Error From Reply" << reply->errorString();
+ QString message;
+ switch (error) {
+ case QNetworkReply::ContentNotFoundError :
+ message = tr("Key Not Found");
+ break;
+ case QNetworkReply::TimeoutError :
+ message = tr("Timeout");
+ break;
+ case QNetworkReply::HostNotFoundError :
+ message = tr("Key Server Not Found");
+ break;
+ default:
+ message = tr("Connection Error");
+ }
+ QMessageBox::critical(nullptr, "Upload Failed", message);
return;
} else {
+ QMessageBox::information(nullptr, "Upload Success", "Upload Public Key Successfully");
qDebug() << "Success while contacting keyserver!";
}
-
reply->deleteLater();
}
diff --git a/src/ui/widgets/VerifyKeyDetailBox.cpp b/src/ui/widgets/VerifyKeyDetailBox.cpp
index 3091d672..3a0695b8 100644
--- a/src/ui/widgets/VerifyKeyDetailBox.cpp
+++ b/src/ui/widgets/VerifyKeyDetailBox.cpp
@@ -141,7 +141,7 @@ VerifyKeyDetailBox::VerifyKeyDetailBox(QWidget *parent, GpgME::GpgContext *ctx,
}
void VerifyKeyDetailBox::slotImportFormKeyserver() {
- auto *importDialog = new KeyServerImportDialog(mCtx, mKeyList, this);
+ auto *importDialog = new KeyServerImportDialog(mCtx, mKeyList, false, this);
importDialog->slotImport(QStringList(fpr));
}