diff options
author | Saturn&Eric <[email protected]> | 2023-03-31 21:27:08 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2023-03-31 21:27:08 +0000 |
commit | 3cb863592a548edc074dde045493e0f83e5d694a (patch) | |
tree | 242534c257e723f49080428db22118c75706e233 /src/ui/dialog/settings/SettingsNetwork.cpp | |
parent | Merge pull request #91 from saturneric/dev/2.0.10/main (diff) | |
parent | feat: add project security document (diff) | |
download | GpgFrontend-2.1.0.tar.gz GpgFrontend-2.1.0.zip |
Merge pull request #93 from saturneric/dev/2.0.10/mainv2.1.0
Develop 2.1.0.2
Diffstat (limited to 'src/ui/dialog/settings/SettingsNetwork.cpp')
-rw-r--r-- | src/ui/dialog/settings/SettingsNetwork.cpp | 133 |
1 files changed, 90 insertions, 43 deletions
diff --git a/src/ui/dialog/settings/SettingsNetwork.cpp b/src/ui/dialog/settings/SettingsNetwork.cpp index fe3d450e..0713856d 100644 --- a/src/ui/dialog/settings/SettingsNetwork.cpp +++ b/src/ui/dialog/settings/SettingsNetwork.cpp @@ -29,7 +29,7 @@ #include "SettingsNetwork.h" #include "core/function/GlobalSettingStation.h" -#include "ui/thread/ProxyConnectionTestThread.h" +#include "ui/thread/ProxyConnectionTestTask.h" #include "ui_NetworkSettings.h" GpgFrontend::UI::NetworkTab::NetworkTab(QWidget *parent) @@ -37,7 +37,28 @@ GpgFrontend::UI::NetworkTab::NetworkTab(QWidget *parent) ui_->setupUi(this); connect(ui_->enableProxyCheckBox, &QCheckBox::stateChanged, this, - [=](int state) { switch_ui_enabled(state == Qt::Checked); }); + [=](int state) { + switch_ui_enabled(state == Qt::Checked); + // when selecting no proxy option, apply it immediately + if (state != Qt::Checked) apply_proxy_settings(); + }); + + connect( + ui_->autoImportMissingKeyCheckBox, &QCheckBox::stateChanged, this, + [=](int state) { + ui_->forbidALLGnuPGNetworkConnectionCheckBox->setCheckState( + state == Qt::Checked + ? Qt::Unchecked + : ui_->forbidALLGnuPGNetworkConnectionCheckBox->checkState()); + }); + + connect(ui_->forbidALLGnuPGNetworkConnectionCheckBox, + &QCheckBox::stateChanged, this, [=](int state) { + ui_->autoImportMissingKeyCheckBox->setCheckState( + state == Qt::Checked + ? Qt::Unchecked + : ui_->autoImportMissingKeyCheckBox->checkState()); + }); connect( ui_->proxyTypeComboBox, &QComboBox::currentTextChanged, this, @@ -47,7 +68,7 @@ GpgFrontend::UI::NetworkTab::NetworkTab(QWidget *parent) &NetworkTab::slot_test_proxy_connection_result); ui_->proxyGroupBox->setTitle(_("Proxy")); - ui_->capabilityGroupBox->setTitle(_("Network Capability")); + ui_->capabilityGroupBox->setTitle(_("Network Ability")); ui_->operationsGroupBox->setTitle(_("Operations")); ui_->enableProxyCheckBox->setText(_("Enable Proxy")); @@ -59,12 +80,18 @@ GpgFrontend::UI::NetworkTab::NetworkTab(QWidget *parent) ui_->usernameLabel->setText(_("Username")); ui_->passwordLabel->setText(_("Password")); - ui_->forbidALLCheckBox->setText(_("Forbid all network connection.")); - ui_->forbidALLCheckBox->setDisabled(true); + ui_->checkProxyConnectionButton->setText( + _("Apply Proxy Settings and Check Proxy Connection")); + ui_->forbidALLGnuPGNetworkConnectionCheckBox->setText( + _("Forbid all GnuPG network connection.")); ui_->prohibitUpdateCheck->setText( _("Prohibit checking for version updates when the program starts.")); - ui_->checkProxyConnectionButton->setText(_("Check Proxy Connection")); + ui_->autoImportMissingKeyCheckBox->setText( + _("Automatically import a missing key for signature verification.")); + ui_->networkAbilityTipsLabel->setText( + _("Tips: These Option Changes take effect only after the " + "application restart.")); SetSettings(); } @@ -120,21 +147,17 @@ void GpgFrontend::UI::NetworkTab::SetSettings() { SPDLOG_ERROR("setting operation error: proxy_enable"); } - { - auto state = ui_->enableProxyCheckBox->checkState(); - switch_ui_enabled(state == Qt::Checked); - } - - ui_->forbidALLCheckBox->setCheckState(Qt::Unchecked); + ui_->forbidALLGnuPGNetworkConnectionCheckBox->setCheckState(Qt::Unchecked); try { - bool forbid_all_connection = - settings.lookup("network.forbid_all_connection"); - if (forbid_all_connection) - ui_->forbidALLCheckBox->setCheckState(Qt::Checked); + bool forbid_all_gnupg_connection = + settings.lookup("network.forbid_all_gnupg_connection"); + if (forbid_all_gnupg_connection) + ui_->forbidALLGnuPGNetworkConnectionCheckBox->setCheckState(Qt::Checked); else - ui_->forbidALLCheckBox->setCheckState(Qt::Unchecked); + ui_->forbidALLGnuPGNetworkConnectionCheckBox->setCheckState( + Qt::Unchecked); } catch (...) { - SPDLOG_ERROR("setting operation error: forbid_all_connection"); + SPDLOG_ERROR("setting operation error: forbid_all_gnupg_connection"); } ui_->prohibitUpdateCheck->setCheckState(Qt::Unchecked); @@ -148,6 +171,21 @@ void GpgFrontend::UI::NetworkTab::SetSettings() { } catch (...) { SPDLOG_ERROR("setting operation error: prohibit_update_checking"); } + + ui_->autoImportMissingKeyCheckBox->setCheckState(Qt::Unchecked); + try { + bool auto_import_missing_key = + settings.lookup("network.auto_import_missing_key"); + if (auto_import_missing_key) + ui_->autoImportMissingKeyCheckBox->setCheckState(Qt::Checked); + else + ui_->autoImportMissingKeyCheckBox->setCheckState(Qt::Unchecked); + } catch (...) { + SPDLOG_ERROR("setting operation error: auto_import_missing_key"); + } + + switch_ui_enabled(ui_->enableProxyCheckBox->isChecked()); + switch_ui_proxy_type(ui_->proxyTypeComboBox->currentText()); } void GpgFrontend::UI::NetworkTab::ApplySettings() { @@ -207,11 +245,13 @@ void GpgFrontend::UI::NetworkTab::ApplySettings() { auto &network = settings["network"]; - if (!network.exists("forbid_all_connection")) - network.add("forbid_all_connection", libconfig::Setting::TypeBoolean) = - ui_->forbidALLCheckBox->isChecked(); + if (!network.exists("forbid_all_gnupg_connection")) + network.add("forbid_all_gnupg_connection", + libconfig::Setting::TypeBoolean) = + ui_->forbidALLGnuPGNetworkConnectionCheckBox->isChecked(); else { - network["forbid_all_connection"] = ui_->forbidALLCheckBox->isChecked(); + network["forbid_all_gnupg_connection"] = + ui_->forbidALLGnuPGNetworkConnectionCheckBox->isChecked(); } if (!network.exists("prohibit_update_checking")) @@ -221,6 +261,14 @@ void GpgFrontend::UI::NetworkTab::ApplySettings() { network["prohibit_update_checking"] = ui_->prohibitUpdateCheck->isChecked(); } + if (!network.exists("auto_import_missing_key")) + network.add("auto_import_missing_key", libconfig::Setting::TypeBoolean) = + ui_->autoImportMissingKeyCheckBox->isChecked(); + else { + network["auto_import_missing_key"] = + ui_->autoImportMissingKeyCheckBox->isChecked(); + } + apply_proxy_settings(); } @@ -232,9 +280,9 @@ void GpgFrontend::UI::NetworkTab::slot_test_proxy_connection_result() { tr("Server Url"), QLineEdit::Normal, "https://", &ok); if (ok && !url.isEmpty()) { - auto thread = new ProxyConnectionTestThread(url, 800, this); - connect(thread, - &GpgFrontend::UI::ProxyConnectionTestThread:: + auto task = new ProxyConnectionTestTask(url, 800); + connect(task, + &GpgFrontend::UI::ProxyConnectionTestTask:: SignalProxyConnectionTestResult, this, [=](const QString &result) { if (result == "Reachable") { @@ -248,7 +296,6 @@ void GpgFrontend::UI::NetworkTab::slot_test_proxy_connection_result() { "proxy server. Proxy settings may be invalid.")); } }); - connect(thread, &QThread::finished, thread, &QThread::deleteLater); // Waiting Dialog auto *waiting_dialog = new QProgressDialog(this); @@ -261,43 +308,43 @@ void GpgFrontend::UI::NetworkTab::slot_test_proxy_connection_result() { waiting_dialog_label->setWordWrap(true); waiting_dialog->setLabel(waiting_dialog_label); waiting_dialog->resize(420, 120); - connect(thread, &QThread::finished, [=]() { - waiting_dialog->finished(0); + connect(task, &Thread::Task::SignalTaskEnd, [=]() { + waiting_dialog->close(); waiting_dialog->deleteLater(); }); - connect(waiting_dialog, &QProgressDialog::canceled, [=]() { - SPDLOG_DEBUG("cancel clicked"); - if (thread->isRunning()) thread->terminate(); - }); // Show Waiting Dialog waiting_dialog->show(); waiting_dialog->setFocus(); - thread->start(); + Thread::TaskRunnerGetter::GetInstance() + .GetTaskRunner(Thread::TaskRunnerGetter::kTaskRunnerType_Network) + ->PostTask(task); + QEventLoop loop; - connect(thread, &QThread::finished, &loop, &QEventLoop::quit); + connect(task, &Thread::Task::SignalTaskEnd, &loop, &QEventLoop::quit); + connect(waiting_dialog, &QProgressDialog::canceled, &loop, + &QEventLoop::quit); loop.exec(); } } void GpgFrontend::UI::NetworkTab::apply_proxy_settings() { // apply settings - QNetworkProxy _proxy; + QNetworkProxy proxy; if (ui_->enableProxyCheckBox->isChecked() && proxy_type_ != QNetworkProxy::DefaultProxy) { - _proxy.setType(proxy_type_); - _proxy.setHostName(ui_->proxyServerAddressEdit->text()); - _proxy.setPort(ui_->portSpin->value()); + proxy.setType(proxy_type_); + proxy.setHostName(ui_->proxyServerAddressEdit->text()); + proxy.setPort(ui_->portSpin->value()); if (!ui_->usernameEdit->text().isEmpty()) { - _proxy.setUser(ui_->usernameEdit->text()); - _proxy.setPassword(ui_->passwordEdit->text()); + proxy.setUser(ui_->usernameEdit->text()); + proxy.setPassword(ui_->passwordEdit->text()); } } else { - _proxy.setType(proxy_type_); + proxy.setType(proxy_type_); } - - QNetworkProxy::setApplicationProxy(_proxy); + QNetworkProxy::setApplicationProxy(proxy); } void GpgFrontend::UI::NetworkTab::switch_ui_enabled(bool enabled) { |