aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/widgets/KeyList.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/widgets/KeyList.cpp')
-rw-r--r--src/ui/widgets/KeyList.cpp94
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();
}