aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/settings/SettingsKeyServer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/dialog/settings/SettingsKeyServer.cpp')
-rw-r--r--src/ui/dialog/settings/SettingsKeyServer.cpp138
1 files changed, 65 insertions, 73 deletions
diff --git a/src/ui/dialog/settings/SettingsKeyServer.cpp b/src/ui/dialog/settings/SettingsKeyServer.cpp
index 83bd2c80..5613ed45 100644
--- a/src/ui/dialog/settings/SettingsKeyServer.cpp
+++ b/src/ui/dialog/settings/SettingsKeyServer.cpp
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2021 Saturneric
+ * Copyright (C) 2021 Saturneric <[email protected]>
*
* This file is part of GpgFrontend.
*
@@ -20,7 +20,7 @@
* the gpg4usb project, which is under GPL-3.0-or-later.
*
* All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
+ * Saturneric <[email protected]> starting on May 12, 2021.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*
@@ -28,17 +28,21 @@
#include "SettingsKeyServer.h"
+#include <cstddef>
+
#include "core/function/GlobalSettingStation.h"
#include "core/thread/Task.h"
#include "core/thread/TaskRunnerGetter.h"
#include "ui/struct/SettingsObject.h"
+#include "ui/struct/settings/KeyServerSO.h"
#include "ui/thread/ListedKeyServerTestTask.h"
#include "ui_KeyServerSettings.h"
namespace GpgFrontend::UI {
KeyserverTab::KeyserverTab(QWidget* parent)
- : QWidget(parent), ui_(std::make_shared<Ui_KeyServerSettings>()) {
+ : QWidget(parent),
+ ui_(GpgFrontend::SecureCreateSharedObject<Ui_KeyServerSettings>()) {
ui_->setupUi(this);
ui_->keyServerListTable->setSizeAdjustPolicy(
QAbstractScrollArea::AdjustToContents);
@@ -48,25 +52,25 @@ KeyserverTab::KeyserverTab(QWidget* parent)
connect(ui_->testKeyServerButton, &QPushButton::clicked, this,
&KeyserverTab::slot_test_listed_key_server);
- ui_->keyServerListGroupBox->setTitle(_("Keyserver List"));
- ui_->operationsGroupBox->setTitle(_("Operations"));
+ ui_->keyServerListGroupBox->setTitle(tr("Keyserver List"));
+ ui_->operationsGroupBox->setTitle(tr("Operations"));
- ui_->keyServerListTable->horizontalHeaderItem(0)->setText(_("Default"));
+ ui_->keyServerListTable->horizontalHeaderItem(0)->setText(tr("Default"));
ui_->keyServerListTable->horizontalHeaderItem(1)->setText(
- _("Keyserver Address"));
- ui_->keyServerListTable->horizontalHeaderItem(2)->setText(_("Security"));
- ui_->keyServerListTable->horizontalHeaderItem(3)->setText(_("Available"));
+ tr("Keyserver Address"));
+ ui_->keyServerListTable->horizontalHeaderItem(2)->setText(tr("Security"));
+ ui_->keyServerListTable->horizontalHeaderItem(3)->setText(tr("Available"));
- ui_->addKeyServerPushButton->setText(_("Add"));
- ui_->testKeyServerButton->setText(_("Test Listed Keyserver"));
+ ui_->addKeyServerPushButton->setText(tr("Add"));
+ ui_->testKeyServerButton->setText(tr("Test Listed Keyserver"));
ui_->tipsLabel->setText(
- _("Tips: Please Double-click table item to edit it."));
- ui_->actionDelete_Selected_Key_Server->setText(_("Delete Selected"));
+ tr("Tips: Please Double-click table item to edit it."));
+ ui_->actionDelete_Selected_Key_Server->setText(tr("Delete Selected"));
ui_->actionDelete_Selected_Key_Server->setToolTip(
- _("Delete Selected Key Server"));
- ui_->actionSet_As_Default->setText(_("Set As Default"));
- ui_->actionSet_As_Default->setToolTip(_("Set As Default"));
+ tr("Delete Selected Key Server"));
+ ui_->actionSet_As_Default->setText(tr("Set As Default"));
+ ui_->actionSet_As_Default->setToolTip(tr("Set As Default"));
popup_menu_ = new QMenu(this);
popup_menu_->addAction(ui_->actionSet_As_Default);
@@ -74,7 +78,7 @@ KeyserverTab::KeyserverTab(QWidget* parent)
connect(ui_->keyServerListTable, &QTableWidget::itemChanged,
[=](QTableWidgetItem* item) {
- SPDLOG_DEBUG("item edited: {}", item->column());
+ GF_UI_LOG_DEBUG("item edited: {}", item->column());
if (item->column() != 1) return;
const auto row_size = ui_->keyServerListTable->rowCount();
// Update Actions
@@ -115,30 +119,18 @@ KeyserverTab::KeyserverTab(QWidget* parent)
}
void KeyserverTab::SetSettings() {
- try {
- SettingsObject key_server_json("key_server");
-
- const auto key_server_list =
- key_server_json.Check("server_list", nlohmann::json::array());
+ KeyServerSO key_server(SettingsObject("key_server"));
- for (const auto& key_server : key_server_list) {
- const auto key_server_str = key_server.get<std::string>();
- this->key_server_str_list_.append(key_server_str.c_str());
- }
+ if (key_server.server_list.empty()) key_server.ResetDefaultServerList();
+ for (const auto& key_server : key_server.server_list) {
+ this->key_server_str_list_.append(key_server);
+ }
- int default_key_server_index = key_server_json.Check("default_server", 0);
- if (default_key_server_index >= key_server_list.size()) {
- throw std::runtime_error("default_server index out of range");
- }
- std::string default_key_server =
- key_server_list[default_key_server_index].get<std::string>();
-
- if (!key_server_str_list_.contains(default_key_server.c_str()))
- key_server_str_list_.append(default_key_server.c_str());
- default_key_server_ = QString::fromStdString(default_key_server);
- } catch (const std::exception& e) {
- SPDLOG_ERROR("Error reading key-server settings: ", e.what());
+ const auto default_key_server = key_server.GetTargetServer();
+ if (!key_server_str_list_.contains(default_key_server)) {
+ key_server_str_list_.append(default_key_server);
}
+ default_key_server_ = default_key_server;
}
void KeyserverTab::slot_add_key_server() {
@@ -148,47 +140,47 @@ void KeyserverTab::slot_add_key_server() {
;
} else if (target_url.startsWith("http://")) {
QMessageBox::warning(
- this, _("Insecure keyserver address"),
- _("For security reasons, using HTTP as the communication protocol "
- "with "
- "the key server is not recommended. It is recommended to use "
- "HTTPS."));
+ this, tr("Insecure keyserver address"),
+ tr("For security reasons, using HTTP as the communication protocol "
+ "with "
+ "the key server is not recommended. It is recommended to use "
+ "HTTPS."));
}
key_server_str_list_.append(ui_->addKeyServerEdit->text());
} else {
auto ret = QMessageBox::warning(
- this, _("Warning"),
- _("You may not use HTTPS or HTTP as the protocol for communicating "
- "with the key server, which may not be wrong. But please check the "
- "address you entered again to make sure it is correct. Are you "
- "sure "
- "that want to add it into the keyserver list?"),
+ this, tr("Warning"),
+ tr("You may not use HTTPS or HTTP as the protocol for communicating "
+ "with the key server, which may not be wrong. But please check the "
+ "address you entered again to make sure it is correct. Are you "
+ "sure "
+ "that want to add it into the keyserver list?"),
QMessageBox::Ok | QMessageBox::Cancel);
- if (ret == QMessageBox::Cancel)
- return;
- else
- key_server_str_list_.append(ui_->addKeyServerEdit->text());
+ if (ret == QMessageBox::Cancel) return;
+ key_server_str_list_.append(ui_->addKeyServerEdit->text());
}
slot_refresh_table();
}
void KeyserverTab::ApplySettings() {
SettingsObject key_server_json("key_server");
- key_server_json["server_list"] = nlohmann::json::array();
- auto& key_server_list = key_server_json["server_list"];
+ KeyServerSO key_server;
+ auto& key_server_list = key_server.server_list;
const auto list_size = key_server_str_list_.size();
for (int i = 0; i < list_size; i++) {
const auto key_server = key_server_str_list_[i];
- if (default_key_server_ == key_server)
+ if (default_key_server_ == key_server) {
key_server_json["default_server"] = i;
- key_server_list.insert(key_server_list.end(), key_server.toStdString());
+ }
+ key_server_list << key_server;
}
+ key_server_json.Store(key_server.ToJson());
}
void KeyserverTab::slot_refresh_table() {
- SPDLOG_INFO("start refreshing key server table");
+ GF_UI_LOG_INFO("start refreshing key server table");
ui_->keyServerListTable->blockSignals(true);
ui_->keyServerListTable->setRowCount(key_server_str_list_.size());
@@ -205,13 +197,13 @@ void KeyserverTab::slot_refresh_table() {
tmp2->setTextAlignment(Qt::AlignCenter);
ui_->keyServerListTable->setItem(index, 1, tmp2);
- auto* tmp3 = new QTableWidgetItem(server.startsWith("https") ? _("true")
- : _("false"));
+ auto* tmp3 = new QTableWidgetItem(server.startsWith("https") ? tr("true")
+ : tr("false"));
tmp3->setTextAlignment(Qt::AlignCenter);
ui_->keyServerListTable->setItem(index, 2, tmp3);
tmp3->setFlags(tmp3->flags() ^ Qt::ItemIsEditable);
- auto* tmp4 = new QTableWidgetItem(_("unknown"));
+ auto* tmp4 = new QTableWidgetItem(tr("unknown"));
tmp4->setTextAlignment(Qt::AlignCenter);
ui_->keyServerListTable->setItem(index, 3, tmp4);
tmp4->setFlags(tmp3->flags() ^ Qt::ItemIsEditable);
@@ -225,7 +217,7 @@ void KeyserverTab::slot_refresh_table() {
}
void KeyserverTab::slot_test_listed_key_server() {
- auto timeout = QInputDialog::getInt(this, _("Set TCP Timeout"),
+ auto timeout = QInputDialog::getInt(this, tr("Set TCP Timeout"),
tr("timeout(ms): "), 2500, 200, 16000);
QStringList urls;
@@ -243,17 +235,17 @@ void KeyserverTab::slot_test_listed_key_server() {
this,
[=](std::vector<ListedKeyServerTestTask::KeyServerTestResultType>
result) {
- const auto row_size = ui_->keyServerListTable->rowCount();
+ const size_t row_size = ui_->keyServerListTable->rowCount();
if (result.size() != row_size) return;
ui_->keyServerListTable->blockSignals(true);
- for (int i = 0; i < row_size; i++) {
+ for (size_t i = 0; i < row_size; i++) {
const auto status = result[i];
- auto status_iem = ui_->keyServerListTable->item(i, 3);
- if (status == ListedKeyServerTestTask::kTestResultType_Success) {
- status_iem->setText(_("Reachable"));
+ auto* status_iem = ui_->keyServerListTable->item(i, 3);
+ if (status == ListedKeyServerTestTask::kTEST_RESULT_TYPE_SUCCESS) {
+ status_iem->setText(tr("Reachable"));
status_iem->setForeground(QBrush(QColor::fromRgb(0, 255, 0)));
} else {
- status_iem->setText(_("Not Reachable"));
+ status_iem->setText(tr("Not Reachable"));
status_iem->setForeground(QBrush(QColor::fromRgb(255, 0, 0)));
}
}
@@ -264,11 +256,11 @@ void KeyserverTab::slot_test_listed_key_server() {
auto* waiting_dialog = new QProgressDialog(this);
waiting_dialog->setMaximum(0);
waiting_dialog->setMinimum(0);
- auto waiting_dialog_label =
- new QLabel(QString(_("Test Key Server Connection...")) + "<br /><br />" +
- _("This test only tests the network connectivity of the key "
- "server. Passing the test does not mean that the key server "
- "is functionally available."));
+ auto* waiting_dialog_label = new QLabel(
+ tr("Test Key Server Connection...") + "<br /><br />" +
+ tr("This test only tests the network connectivity of the key "
+ "server. Passing the test does not mean that the key server "
+ "is functionally available."));
waiting_dialog_label->setWordWrap(true);
waiting_dialog->setLabel(waiting_dialog_label);
waiting_dialog->resize(420, 120);