diff options
author | Saturneric <[email protected]> | 2021-06-21 20:31:25 +0000 |
---|---|---|
committer | Saturneric <[email protected]> | 2021-06-21 20:31:25 +0000 |
commit | b90ea800086973ae73bb4a4fd3427a90361ce383 (patch) | |
tree | b5e6f058d7ef310efc07a7ee584a22675fa486fc /src/ui/widgets/KeyList.cpp | |
parent | Merge branch 'develop' (diff) | |
download | GpgFrontend-b90ea800086973ae73bb4a4fd3427a90361ce383.tar.gz GpgFrontend-b90ea800086973ae73bb4a4fd3427a90361ce383.zip |
Repair and improve the functions and UI related to the upload and update of the key server.
Improve part of the UI description.
Repair the problems in the project configuration file.
Diffstat (limited to 'src/ui/widgets/KeyList.cpp')
-rw-r--r-- | src/ui/widgets/KeyList.cpp | 94 |
1 files changed, 67 insertions, 27 deletions
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(); } |