aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ui/import_export/KeyServerImportDialog.cpp119
1 files changed, 47 insertions, 72 deletions
diff --git a/src/ui/import_export/KeyServerImportDialog.cpp b/src/ui/import_export/KeyServerImportDialog.cpp
index 2d30c021..e359238c 100644
--- a/src/ui/import_export/KeyServerImportDialog.cpp
+++ b/src/ui/import_export/KeyServerImportDialog.cpp
@@ -33,13 +33,14 @@
#include "core/function/GlobalSettingStation.h"
#include "core/function/gpg/GpgKeyImportExporter.h"
#include "ui/SignalStation.h"
+#include "ui/struct/SettingsObject.h"
namespace GpgFrontend::UI {
KeyServerImportDialog::KeyServerImportDialog(bool automatic, QWidget* parent)
: QDialog(parent), m_automatic_(automatic) {
// Layout for messagebox
- auto* messageLayout = new QHBoxLayout;
+ auto* message_layout = new QHBoxLayout();
if (automatic) {
setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint);
@@ -67,14 +68,14 @@ KeyServerImportDialog::KeyServerImportDialog(bool automatic, QWidget* parent)
// table containing the keys found
create_keys_table();
- message_ = new QLabel;
+ message_ = new QLabel();
message_->setFixedHeight(24);
- icon_ = new QLabel;
+ icon_ = new QLabel();
icon_->setFixedHeight(24);
- messageLayout->addWidget(icon_);
- messageLayout->addWidget(message_);
- messageLayout->addStretch();
+ message_layout->addWidget(icon_);
+ message_layout->addWidget(message_);
+ message_layout->addStretch();
}
// Network Waiting
@@ -82,13 +83,13 @@ KeyServerImportDialog::KeyServerImportDialog(bool automatic, QWidget* parent)
waiting_bar_->setVisible(false);
waiting_bar_->setRange(0, 0);
waiting_bar_->setFixedWidth(200);
- messageLayout->addWidget(waiting_bar_);
+ message_layout->addWidget(waiting_bar_);
auto* mainLayout = new QGridLayout;
// 自动化调用界面布局
if (automatic) {
- mainLayout->addLayout(messageLayout, 0, 0, 1, 3);
+ mainLayout->addLayout(message_layout, 0, 0, 1, 3);
} else {
mainLayout->addWidget(search_label_, 1, 0);
mainLayout->addWidget(search_line_edit_, 1, 1);
@@ -96,7 +97,7 @@ KeyServerImportDialog::KeyServerImportDialog(bool automatic, QWidget* parent)
mainLayout->addWidget(key_server_label_, 2, 0);
mainLayout->addWidget(key_server_combo_box_, 2, 1);
mainLayout->addWidget(keys_table_, 3, 0, 1, 3);
- mainLayout->addLayout(messageLayout, 4, 0, 1, 3);
+ mainLayout->addLayout(message_layout, 4, 0, 1, 3);
// Layout for import and close button
auto* buttonsLayout = new QHBoxLayout;
@@ -122,18 +123,24 @@ KeyServerImportDialog::KeyServerImportDialog(bool automatic, QWidget* parent)
auto size = QSize(800, 500);
try {
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
+ SettingsObject key_server_import_state("key_server_import_state");
+ bool window_save = key_server_import_state.Check("window_save", true);
+
+ // Restore window size & location
+ if (window_save) {
+ int x = key_server_import_state.Check("window_pos").Check("x", pos.x()),
+ y = key_server_import_state.Check("window_pos").Check("y", pos.y());
- int x, y, width, height;
- x = settings.lookup("window.import_from_keyserver.position.x");
- y = settings.lookup("window.import_from_keyserver.position.y");
- width = settings.lookup("window.import_from_keyserver.size.width");
- height = settings.lookup("window.import_from_keyserver.size.height");
- pos = QPoint(x, y);
- size = QSize(width, height);
+ pos = QPoint(x, y);
+ int width = key_server_import_state.Check("window_size")
+ .Check("width", size.width()),
+ height = key_server_import_state.Check("window_size")
+ .Check("height", size.height());
+ size = QSize(width, height);
+ }
} catch (...) {
- LOG(WARNING) << "cannot read pos or size from settings";
+ LOG(WARNING) << "cannot read pos or size from settings object";
}
this->resize(size);
@@ -155,25 +162,25 @@ QComboBox* KeyServerImportDialog::create_comboBox() {
auto* comboBox = new QComboBox;
comboBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
-
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];
- comboBox->addItem(server_url.c_str());
+ SettingsObject key_server_json("key_server");
+
+ const auto key_server_list =
+ key_server_json.Check("server_list", nlohmann::json::array());
+
+ for (const auto& key_server : key_server_list) {
+ const auto key_server_str = key_server.get<std::string>();
+ comboBox->addItem(key_server_str.c_str());
}
- } catch (...) {
- LOG(ERROR) << _("Setting Operation Error") << _("server_list");
- }
- // set default keyserver in combobox
- try {
- std::string default_server = settings.lookup("keyserver.default_server");
- comboBox->setCurrentText(default_server.c_str());
+ 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>();
+
+ comboBox->setCurrentText(default_key_server.c_str());
} catch (...) {
- LOG(ERROR) << _("Setting Operation Error") << _("default_server");
+ LOG(ERROR) << _("Setting Operation Error") << "server_list"
+ << "default_server";
}
return comboBox;
@@ -565,47 +572,15 @@ void KeyServerImportDialog::slot_save_window_state() {
if (m_automatic_) return;
- auto& settings =
- GpgFrontend::GlobalSettingStation::GetInstance().GetUISettings();
+ SettingsObject key_server_import_state("key_server_import_state");
- if (!settings.exists("window") ||
- settings.lookup("window").getType() != libconfig::Setting::TypeGroup)
- settings.add("window", libconfig::Setting::TypeGroup);
-
- auto& window = settings["window"];
-
- if (!window.exists("import_from_keyserver") ||
- window.lookup("import_from_keyserver").getType() !=
- libconfig::Setting::TypeGroup)
- window.add("import_from_keyserver", libconfig::Setting::TypeGroup);
-
- auto& import_from_keyserver = window["import_from_keyserver"];
-
- if (!import_from_keyserver.exists("position") ||
- import_from_keyserver.lookup("position").getType() !=
- libconfig::Setting::TypeGroup) {
- auto& position =
- import_from_keyserver.add("position", libconfig::Setting::TypeGroup);
- position.add("x", libconfig::Setting::TypeInt) = pos().x();
- position.add("y", libconfig::Setting::TypeInt) = pos().y();
- } else {
- import_from_keyserver["position"]["x"] = pos().x();
- import_from_keyserver["position"]["y"] = pos().y();
- }
-
- if (!import_from_keyserver.exists("size") ||
- import_from_keyserver.lookup("size").getType() !=
- libconfig::Setting::TypeGroup) {
- auto& size =
- import_from_keyserver.add("size", libconfig::Setting::TypeGroup);
- size.add("width", libconfig::Setting::TypeInt) = QWidget::width();
- size.add("height", libconfig::Setting::TypeInt) = QWidget::height();
- } else {
- import_from_keyserver["size"]["width"] = QWidget::width();
- import_from_keyserver["size"]["height"] = QWidget::height();
- }
+ // window position and size
+ key_server_import_state["window_pos"]["x"] = pos().x();
+ key_server_import_state["window_pos"]["y"] = pos().y();
- GlobalSettingStation::GetInstance().SyncSettings();
+ key_server_import_state["window_size"]["width"] = size().width();
+ key_server_import_state["window_size"]["height"] = size().height();
+ key_server_import_state["window_save"] = true;
}
} // namespace GpgFrontend::UI