aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/settings/SettingsKeyServer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/settings/SettingsKeyServer.cpp')
-rw-r--r--src/ui/settings/SettingsKeyServer.cpp234
1 files changed, 112 insertions, 122 deletions
diff --git a/src/ui/settings/SettingsKeyServer.cpp b/src/ui/settings/SettingsKeyServer.cpp
index 533c8316..f2eaf9a9 100644
--- a/src/ui/settings/SettingsKeyServer.cpp
+++ b/src/ui/settings/SettingsKeyServer.cpp
@@ -1,4 +1,6 @@
/**
+ * Copyright (C) 2021 Saturneric
+ *
* This file is part of GpgFrontend.
*
* GpgFrontend is free software: you can redistribute it and/or modify
@@ -6,104 +8,108 @@
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
- * Foobar is distributed in the hope that it will be useful,
+ * GpgFrontend is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with Foobar. If not, see <https://www.gnu.org/licenses/>.
+ * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * The initial version of the source code is inherited from
+ * the gpg4usb project, which is under GPL-3.0-or-later.
*
- * The initial version of the source code is inherited from gpg4usb-team.
- * Their source code version also complies with GNU General Public License.
+ * All the source code of GpgFrontend was modified and released by
+ * Saturneric<[email protected]> starting on May 12, 2021.
*
- * The source code version of this software was modified and released
- * by Saturneric<[email protected]> starting on May 12, 2021.
+ * SPDX-License-Identifier: GPL-3.0-or-later
*
*/
#include "SettingsKeyServer.h"
-#include "GlobalSettingStation.h"
-#include "ui/thread/TestListedKeyServerThread.h"
+#include "core/function/GlobalSettingStation.h"
+#include "ui/struct/SettingsObject.h"
+#include "ui/thread/ListedKeyServerTestThread.h"
#include "ui_KeyServerSettings.h"
namespace GpgFrontend::UI {
KeyserverTab::KeyserverTab(QWidget* parent)
- : QWidget(parent), ui(std::make_shared<Ui_KeyServerSettings>()) {
- ui->setupUi(this);
- ui->keyServerListTable->setSizeAdjustPolicy(
+ : QWidget(parent), ui_(std::make_shared<Ui_KeyServerSettings>()) {
+ ui_->setupUi(this);
+ ui_->keyServerListTable->setSizeAdjustPolicy(
QAbstractScrollArea::AdjustToContents);
- connect(ui->addKeyServerPushButton, &QPushButton::clicked, this,
- &KeyserverTab::addKeyServer);
- connect(ui->testKeyServerButton, &QPushButton::clicked, this,
- &KeyserverTab::slotTestListedKeyServer);
+ connect(ui_->addKeyServerPushButton, &QPushButton::clicked, this,
+ &KeyserverTab::slot_add_key_server);
+ connect(ui_->testKeyServerButton, &QPushButton::clicked, this,
+ &KeyserverTab::slot_test_listed_key_server);
- ui->keyServerListGroupBox->setTitle(_("Keyserver List"));
- ui->operationsGroupBox->setTitle(_("Operations"));
+ ui_->keyServerListGroupBox->setTitle(_("Keyserver List"));
+ ui_->operationsGroupBox->setTitle(_("Operations"));
- ui->keyServerListTable->horizontalHeaderItem(0)->setText(_("Default"));
- ui->keyServerListTable->horizontalHeaderItem(1)->setText(
+ ui_->keyServerListTable->horizontalHeaderItem(0)->setText(_("Default"));
+ ui_->keyServerListTable->horizontalHeaderItem(1)->setText(
_("Keyserver Address"));
- ui->keyServerListTable->horizontalHeaderItem(2)->setText(_("Security"));
- ui->keyServerListTable->horizontalHeaderItem(3)->setText(_("Available"));
+ ui_->keyServerListTable->horizontalHeaderItem(2)->setText(_("Security"));
+ ui_->keyServerListTable->horizontalHeaderItem(3)->setText(_("Available"));
- ui->addKeyServerPushButton->setText(_("Add"));
- ui->testKeyServerButton->setText(_("Test Listed Keyserver"));
+ ui_->addKeyServerPushButton->setText(_("Add"));
+ ui_->testKeyServerButton->setText(_("Test Listed Keyserver"));
- ui->tipsLabel->setText(_("Tips: Please Double-click table item to edit it."));
- ui->actionDelete_Selected_Key_Server->setText(_("Delete Selected"));
- ui->actionDelete_Selected_Key_Server->setToolTip(
+ ui_->tipsLabel->setText(
+ _("Tips: Please Double-click table item to edit it."));
+ ui_->actionDelete_Selected_Key_Server->setText(_("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"));
+ ui_->actionSet_As_Default->setText(_("Set As Default"));
+ ui_->actionSet_As_Default->setToolTip(_("Set As Default"));
- popupMenu = new QMenu(this);
- popupMenu->addAction(ui->actionSet_As_Default);
- popupMenu->addAction(ui->actionDelete_Selected_Key_Server);
+ popup_menu_ = new QMenu(this);
+ popup_menu_->addAction(ui_->actionSet_As_Default);
+ popup_menu_->addAction(ui_->actionDelete_Selected_Key_Server);
- connect(ui->keyServerListTable, &QTableWidget::itemChanged,
+ connect(ui_->keyServerListTable, &QTableWidget::itemChanged,
[=](QTableWidgetItem* item) {
LOG(INFO) << "item edited" << item->column();
if (item->column() != 1) return;
- const auto row_size = ui->keyServerListTable->rowCount();
+ const auto row_size = ui_->keyServerListTable->rowCount();
// Update Actions
if (row_size > 0) {
- keyServerStrList.clear();
+ key_server_str_list_.clear();
for (int i = 0; i < row_size; i++) {
const auto key_server =
- ui->keyServerListTable->item(i, 1)->text();
- keyServerStrList.append(key_server);
+ ui_->keyServerListTable->item(i, 1)->text();
+ key_server_str_list_.append(key_server);
}
}
});
- connect(ui->actionSet_As_Default, &QAction::triggered, [=]() {
- const auto row_size = ui->keyServerListTable->rowCount();
+ connect(ui_->actionSet_As_Default, &QAction::triggered, [=]() {
+ const auto row_size = ui_->keyServerListTable->rowCount();
for (int i = 0; i < row_size; i++) {
- const auto item = ui->keyServerListTable->item(i, 1);
+ const auto item = ui_->keyServerListTable->item(i, 1);
if (!item->isSelected()) continue;
- this->defaultKeyServer = item->text();
+ this->default_key_server_ = item->text();
}
- this->refreshTable();
+ this->slot_refresh_table();
});
- connect(ui->actionDelete_Selected_Key_Server, &QAction::triggered, [=]() {
- const auto row_size = ui->keyServerListTable->rowCount();
+ connect(ui_->actionDelete_Selected_Key_Server, &QAction::triggered, [=]() {
+ const auto row_size = ui_->keyServerListTable->rowCount();
for (int i = 0; i < row_size; i++) {
- const auto item = ui->keyServerListTable->item(i, 1);
+ const auto item = ui_->keyServerListTable->item(i, 1);
if (!item->isSelected()) continue;
- this->keyServerStrList.removeAt(i);
+ this->key_server_str_list_.removeAt(i);
break;
}
- this->refreshTable();
+ this->slot_refresh_table();
});
// Read key-list from ini-file and fill it into combobox
- setSettings();
- refreshTable();
+ SetSettings();
+ slot_refresh_table();
}
/**********************************
@@ -111,33 +117,31 @@ KeyserverTab::KeyserverTab(QWidget* parent)
* and set the buttons and checkboxes
* appropriately
**********************************/
-void KeyserverTab::setSettings() {
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
+void KeyserverTab::SetSettings() {
+ SettingsObject key_server_json("key_server");
- try {
- auto& server_list = settings.lookup("keyserver.server_list");
- const auto server_list_size = server_list.getLength();
- for (int i = 0; i < server_list_size; i++) {
- std::string server_url = server_list[i];
- keyServerStrList.append(server_url.c_str());
- }
- } catch (...) {
- LOG(ERROR) << _("Setting Operation Error") << _("server_list");
- }
+ const auto key_server_list =
+ key_server_json.Check("server_list", nlohmann::json::array());
- try {
- std::string default_server = settings.lookup("keyserver.default_server");
- if (!keyServerStrList.contains(default_server.c_str()))
- keyServerStrList.append(default_server.c_str());
- defaultKeyServer = QString::fromStdString(default_server);
- } catch (...) {
- LOG(ERROR) << _("Setting Operation Error") << _("default_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());
}
+
+ auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
+
+ int default_key_server_index = key_server_json.Check("default_server", 0);
+ 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);
}
-void KeyserverTab::addKeyServer() {
- auto target_url = ui->addKeyServerEdit->text();
- if (url_reg.match(target_url).hasMatch()) {
+void KeyserverTab::slot_add_key_server() {
+ auto target_url = ui_->addKeyServerEdit->text();
+ if (url_reg_.match(target_url).hasMatch()) {
if (target_url.startsWith("https://")) {
;
} else if (target_url.startsWith("http://")) {
@@ -148,7 +152,7 @@ void KeyserverTab::addKeyServer() {
"the key server is not recommended. It is recommended to use "
"HTTPS."));
}
- keyServerStrList.append(ui->addKeyServerEdit->text());
+ key_server_str_list_.append(ui_->addKeyServerEdit->text());
} else {
auto ret = QMessageBox::warning(
this, _("Warning"),
@@ -162,99 +166,85 @@ void KeyserverTab::addKeyServer() {
if (ret == QMessageBox::Cancel)
return;
else
- keyServerStrList.append(ui->addKeyServerEdit->text());
+ key_server_str_list_.append(ui_->addKeyServerEdit->text());
}
- refreshTable();
+ slot_refresh_table();
}
-void KeyserverTab::applySettings() {
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
-
- if (!settings.exists("keyserver") ||
- settings.lookup("keyserver").getType() != libconfig::Setting::TypeGroup)
- settings.add("keyserver", libconfig::Setting::TypeGroup);
-
- auto& keyserver = settings["keyserver"];
-
- if (keyserver.exists("server_list")) keyserver.remove("server_list");
-
- keyserver.add("server_list", libconfig::Setting::TypeList);
-
- const auto row_size = ui->keyServerListTable->rowCount();
- auto& server_list = keyserver["server_list"];
- for (int i = 0; i < row_size; i++) {
- const auto key_server = ui->keyServerListTable->item(i, 1)->text();
- server_list.add(libconfig::Setting::TypeString) = key_server.toStdString();
- }
-
- if (!keyserver.exists("default_server")) {
- keyserver.add("default_server", libconfig::Setting::TypeString) =
- defaultKeyServer.toStdString();
- } else {
- keyserver["default_server"] = defaultKeyServer.toStdString();
+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"];
+
+ 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)
+ key_server_json["default_server"] = i;
+ key_server_list.insert(key_server_list.end(), key_server.toStdString());
}
}
-void KeyserverTab::refreshTable() {
+void KeyserverTab::slot_refresh_table() {
LOG(INFO) << "Start Refreshing Key Server Table";
- ui->keyServerListTable->blockSignals(true);
- ui->keyServerListTable->setRowCount(keyServerStrList.size());
+ ui_->keyServerListTable->blockSignals(true);
+ ui_->keyServerListTable->setRowCount(key_server_str_list_.size());
int index = 0;
- for (const auto& server : keyServerStrList) {
+ for (const auto& server : key_server_str_list_) {
auto* tmp1 =
- new QTableWidgetItem(server == defaultKeyServer ? "*" : QString{});
+ new QTableWidgetItem(server == default_key_server_ ? "*" : QString{});
tmp1->setTextAlignment(Qt::AlignCenter);
- ui->keyServerListTable->setItem(index, 0, tmp1);
+ ui_->keyServerListTable->setItem(index, 0, tmp1);
tmp1->setFlags(tmp1->flags() ^ Qt::ItemIsEditable);
auto* tmp2 = new QTableWidgetItem(server);
tmp2->setTextAlignment(Qt::AlignCenter);
- ui->keyServerListTable->setItem(index, 1, tmp2);
+ ui_->keyServerListTable->setItem(index, 1, tmp2);
auto* tmp3 = new QTableWidgetItem(server.startsWith("https") ? _("true")
: _("false"));
tmp3->setTextAlignment(Qt::AlignCenter);
- ui->keyServerListTable->setItem(index, 2, tmp3);
+ ui_->keyServerListTable->setItem(index, 2, tmp3);
tmp3->setFlags(tmp3->flags() ^ Qt::ItemIsEditable);
auto* tmp4 = new QTableWidgetItem(_("unknown"));
tmp4->setTextAlignment(Qt::AlignCenter);
- ui->keyServerListTable->setItem(index, 3, tmp4);
+ ui_->keyServerListTable->setItem(index, 3, tmp4);
tmp4->setFlags(tmp3->flags() ^ Qt::ItemIsEditable);
index++;
}
- const auto column_count = ui->keyServerListTable->columnCount();
+ const auto column_count = ui_->keyServerListTable->columnCount();
for (int i = 0; i < column_count; i++) {
- ui->keyServerListTable->resizeColumnToContents(i);
+ ui_->keyServerListTable->resizeColumnToContents(i);
}
- ui->keyServerListTable->blockSignals(false);
+ ui_->keyServerListTable->blockSignals(false);
}
-void KeyserverTab::slotTestListedKeyServer() {
+void KeyserverTab::slot_test_listed_key_server() {
auto timeout =
QInputDialog::getInt(this, _("Set TCP Timeout"), tr("timeout(ms): "),
QLineEdit::Normal, 500, 2000);
QStringList urls;
- const auto row_size = ui->keyServerListTable->rowCount();
+ const auto row_size = ui_->keyServerListTable->rowCount();
for (int i = 0; i < row_size; i++) {
- const auto keyserver_url = ui->keyServerListTable->item(i, 1)->text();
+ const auto keyserver_url = ui_->keyServerListTable->item(i, 1)->text();
urls.push_back(keyserver_url);
}
- auto thread = new TestListedKeyServerThread(urls, timeout, this);
+ auto thread = new ListedKeyServerTestThread(urls, timeout, this);
connect(thread,
- &GpgFrontend::UI::TestListedKeyServerThread::
- signalKeyServerListTestResult,
+ &GpgFrontend::UI::ListedKeyServerTestThread::
+ SignalKeyServerListTestResult,
this, [=](const QStringList& result) {
- const auto row_size = ui->keyServerListTable->rowCount();
+ const auto row_size = ui_->keyServerListTable->rowCount();
if (result.size() != row_size) return;
- ui->keyServerListTable->blockSignals(true);
+ ui_->keyServerListTable->blockSignals(true);
for (int i = 0; i < row_size; i++) {
const auto status = result[i];
- auto status_iem = ui->keyServerListTable->item(i, 3);
+ auto status_iem = ui_->keyServerListTable->item(i, 3);
if (status == "Reachable") {
status_iem->setText(_("Reachable"));
status_iem->setForeground(QBrush(QColor::fromRgb(0, 255, 0)));
@@ -263,7 +253,7 @@ void KeyserverTab::slotTestListedKeyServer() {
status_iem->setForeground(QBrush(QColor::fromRgb(255, 0, 0)));
}
}
- ui->keyServerListTable->blockSignals(false);
+ ui_->keyServerListTable->blockSignals(false);
});
connect(thread, &QThread::finished, thread, &QThread::deleteLater);
@@ -300,8 +290,8 @@ void KeyserverTab::slotTestListedKeyServer() {
void KeyserverTab::contextMenuEvent(QContextMenuEvent* event) {
QWidget::contextMenuEvent(event);
- if (ui->keyServerListTable->selectedItems().length() > 0) {
- popupMenu->exec(event->globalPos());
+ if (ui_->keyServerListTable->selectedItems().length() > 0) {
+ popup_menu_->exec(event->globalPos());
}
}