aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/CMakeLists.txt2
-rw-r--r--src/core/function/GlobalSettingStation.cpp402
-rw-r--r--src/core/function/GlobalSettingStation.h143
-rw-r--r--src/ui/GpgFrontendApplication.cpp3
-rw-r--r--src/ui/GpgFrontendUIInit.cpp2
-rw-r--r--src/ui/UserInterfaceUtils.cpp2
-rw-r--r--src/ui/dialog/Wizard.cpp2
-rw-r--r--src/ui/dialog/gnupg/GnuPGControllerDialog.cpp8
-rw-r--r--src/ui/dialog/keypair_details/KeyPairOperaTab.cpp2
-rw-r--r--src/ui/dialog/keypair_details/KeySetExpireDateDialog.cpp2
-rw-r--r--src/ui/dialog/settings/SettingsAdvanced.cpp2
-rw-r--r--src/ui/dialog/settings/SettingsGeneral.cpp4
-rw-r--r--src/ui/dialog/settings/SettingsNetwork.cpp4
-rw-r--r--src/ui/main_window/MainWindow.cpp20
-rw-r--r--src/ui/widgets/KeyList.cpp2
-rw-r--r--src/ui/widgets/TextEdit.cpp2
16 files changed, 375 insertions, 227 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 29b3e468..53129c84 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -78,7 +78,7 @@ if (MINGW)
endif ()
# spdlog
-target_link_libraries(gpgfrontend_core PUBLIC spdlog)
+target_link_libraries(gpgfrontend_core PRIVATE spdlog)
# link libarchive
target_link_libraries(gpgfrontend_core PRIVATE archive)
diff --git a/src/core/function/GlobalSettingStation.cpp b/src/core/function/GlobalSettingStation.cpp
index b5b653c6..166f57d2 100644
--- a/src/core/function/GlobalSettingStation.cpp
+++ b/src/core/function/GlobalSettingStation.cpp
@@ -28,136 +28,350 @@
#include "GlobalSettingStation.h"
+#include <memory>
+
#include "core/function/FileOperator.h"
-void GpgFrontend::GlobalSettingStation::SyncSettings() noexcept {
- using namespace libconfig;
- try {
- ui_cfg_.writeFile(ui_config_path_.u8string().c_str());
- SPDLOG_DEBUG("updated ui configuration successfully written to {}",
- ui_config_path_.u8string());
+namespace GpgFrontend {
+
+class GlobalSettingStation::Impl {
+ public:
+ /**
+ * @brief Construct a new Global Setting Station object
+ *
+ */
+ explicit Impl(int channel) noexcept {
+ using namespace std::filesystem;
+ using namespace libconfig;
+
+ SPDLOG_INFO("app path: {}", app_path_.u8string());
+ SPDLOG_INFO("app configure path: {}", app_configure_path_.u8string());
+ SPDLOG_INFO("app data path: {}", app_data_path_.u8string());
+ SPDLOG_INFO("app log path: {}", app_log_path_.u8string());
+ SPDLOG_INFO("app locale path: {}", app_locale_path_.u8string());
+ SPDLOG_INFO("app conf path: {}", main_config_path_.u8string());
+
+ SPDLOG_INFO("app log files total size: {}", GetLogFilesSize());
+ SPDLOG_INFO("app data objects files total size: {}",
+ GetDataObjectsFilesSize());
+
+ if (!is_directory(app_configure_path_))
+ create_directory(app_configure_path_);
+ if (!is_directory(app_data_path_)) create_directory(app_data_path_);
+ if (!is_directory(app_log_path_)) create_directory(app_log_path_);
+ if (!is_directory(config_dir_path_)) create_directory(config_dir_path_);
- } catch (const FileIOException &fioex) {
- SPDLOG_ERROR("i/o error while writing ui configuration file: {}",
- ui_config_path_.u8string());
+ if (!exists(main_config_path_)) {
+ try {
+ this->ui_cfg_.writeFile(main_config_path_.u8string().c_str());
+ SPDLOG_DEBUG("user interface configuration successfully written to {}",
+ main_config_path_.u8string());
+
+ } catch (const FileIOException &fioex) {
+ SPDLOG_DEBUG(
+ "i/o error while writing UserInterface configuration file {}",
+ main_config_path_.u8string());
+ }
+ } else {
+ try {
+ this->ui_cfg_.readFile(main_config_path_.u8string().c_str());
+ SPDLOG_DEBUG("user interface configuration successfully read from {}",
+ main_config_path_.u8string());
+ } catch (const FileIOException &fioex) {
+ SPDLOG_ERROR("i/o error while reading UserInterface configure file");
+ } catch (const ParseException &pex) {
+ SPDLOG_ERROR("parse error at {} : {} - {}", pex.getFile(),
+ pex.getLine(), pex.getError());
+ }
+ }
}
-}
-GpgFrontend::GlobalSettingStation::GlobalSettingStation(int channel) noexcept
- : SingletonFunctionObject<GlobalSettingStation>(channel) {
- using namespace std::filesystem;
- using namespace libconfig;
+ libconfig::Setting &GetMainSettings() noexcept { return ui_cfg_.getRoot(); }
- SPDLOG_INFO("app path: {}", app_path_.u8string());
- SPDLOG_INFO("app configure path: {}", app_configure_path_.u8string());
- SPDLOG_INFO("app data path: {}", app_data_path_.u8string());
- SPDLOG_INFO("app log path: {}", app_log_path_.u8string());
- SPDLOG_INFO("app locale path: {}", app_locale_path_.u8string());
- SPDLOG_INFO("app conf path: {}", ui_config_path_.u8string());
+ std::string GetLogFilesSize() const {
+ return get_human_readable_size(
+ get_files_size_at_path(app_log_path_, "*.log"));
+ }
- SPDLOG_INFO("app log files total size: {}", GetLogFilesSize());
- SPDLOG_INFO("app data objects files total size: {}",
- GetDataObjectsFilesSize());
+ std::string GetDataObjectsFilesSize() const {
+ return get_human_readable_size(
+ get_files_size_at_path(app_data_objs_path_, "*"));
+ }
+
+ void ClearAllLogFiles() const { delete_all_files(app_log_path_, "*.log"); }
- if (!is_directory(app_configure_path_)) create_directory(app_configure_path_);
- if (!is_directory(app_data_path_)) create_directory(app_data_path_);
- if (!is_directory(app_log_path_)) create_directory(app_log_path_);
- if (!is_directory(ui_config_dir_path_)) create_directory(ui_config_dir_path_);
+ void ClearAllDataObjects() const {
+ delete_all_files(app_data_objs_path_, "*");
+ }
- if (!exists(ui_config_path_)) {
+ /**
+ * @brief
+ *
+ * @return libconfig::Setting&
+ */
+ template <typename T>
+ T LookupSettings(std::string path, T default_value) noexcept {
+ T value = default_value;
try {
- this->ui_cfg_.writeFile(ui_config_path_.u8string().c_str());
- SPDLOG_DEBUG("user interface configuration successfully written to {}",
- ui_config_path_.u8string());
+ value = static_cast<T>(GetMainSettings().lookup(path));
+ } catch (...) {
+ SPDLOG_WARN("setting not found: {}", path);
+ }
+ return value;
+ }
- } catch (const FileIOException &fioex) {
- SPDLOG_DEBUG(
- "i/o error while writing UserInterface configuration file {}",
- ui_config_path_.u8string());
+ /**
+ * @brief Get the App Dir object
+ *
+ * @return std::filesystem::path
+ */
+ [[nodiscard]] std::filesystem::path GetAppDir() const { return app_path_; }
+
+ [[nodiscard]] std::filesystem::path GetAppDataPath() const {
+ return app_data_path_;
+ }
+
+ /**
+ * @brief Get the Log Dir object
+ *
+ * @return std::filesystem::path
+ */
+ [[nodiscard]] std::filesystem::path GetLogDir() const {
+ return app_log_path_;
+ }
+
+ /**
+ * @brief Get the Standalone Database Dir object
+ *
+ * @return std::filesystem::path
+ */
+ [[nodiscard]] std::filesystem::path GetStandaloneDatabaseDir() const {
+ auto db_path = app_configure_path_ / "db";
+ if (!std::filesystem::exists(db_path)) {
+ std::filesystem::create_directory(db_path);
}
- } else {
+ return db_path;
+ }
+
+ [[nodiscard]] std::filesystem::path GetAppConfigPath() const {
+ return app_configure_path_;
+ }
+
+ /**
+ * @brief Get the Standalone Gpg Bin Dir object
+ *
+ * @return std::filesystem::path
+ */
+ [[nodiscard]] std::filesystem::path GetStandaloneGpgBinDir() const {
+ return app_resource_path_ / "gpg1.4" / "gpg";
+ }
+
+ /**
+ * @brief Get the Locale Dir object
+ *
+ * @return std::filesystem::path
+ */
+ [[nodiscard]] std::filesystem::path GetLocaleDir() const {
+ return app_locale_path_;
+ }
+
+ /**
+ * @brief Get the Resource Dir object
+ *
+ * @return std::filesystem::path
+ */
+ [[nodiscard]] std::filesystem::path GetResourceDir() const {
+ return app_resource_path_;
+ }
+
+ /**
+ * @brief Get the Certs Dir object
+ *
+ * @return std::filesystem::path
+ */
+ [[nodiscard]] std::filesystem::path GetCertsDir() const {
+ return app_resource_path_ / "certs";
+ }
+
+ /**
+ * @brief sync the settings to the file
+ *
+ */
+ void SyncSettings() noexcept {
+ using namespace libconfig;
try {
- this->ui_cfg_.readFile(ui_config_path_.u8string().c_str());
- SPDLOG_DEBUG("user interface configuration successfully read from {}",
- ui_config_path_.u8string());
+ ui_cfg_.writeFile(main_config_path_.u8string().c_str());
+ SPDLOG_DEBUG("updated ui configuration successfully written to {}",
+ main_config_path_.u8string());
+
} catch (const FileIOException &fioex) {
- SPDLOG_ERROR("i/o error while reading UserInterface configure file");
- } catch (const ParseException &pex) {
- SPDLOG_ERROR("parse error at {} : {} - {}", pex.getFile(), pex.getLine(),
- pex.getError());
+ SPDLOG_ERROR("i/o error while writing ui configuration file: {}",
+ main_config_path_.u8string());
}
}
-}
-libconfig::Setting &
-GpgFrontend::GlobalSettingStation::GetUISettings() noexcept {
- return ui_cfg_.getRoot();
-}
+ private:
+ std::filesystem::path app_path_ = QCoreApplication::applicationDirPath()
+ .toStdString(); ///< Program Location
+ std::filesystem::path app_data_path_ =
+ QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation)
+ .toStdString(); ///< Program Data Location
+ std::filesystem::path app_log_path_ =
+ app_data_path_ / "logs"; ///< Program Data Location
+ std::filesystem::path app_data_objs_path_ =
+ app_data_path_ / "data_objs"; ///< Object storage path
+
+#ifdef LINUX_INSTALL_BUILD
+ std::filesystem::path app_resource_path_ =
+ std::filesystem::path(APP_LOCALSTATE_PATH) /
+ "gpgfrontend"; ///< Program Data Location
+#else
+ std::filesystem::path app_resource_path_ =
+ RESOURCE_DIR_BOOST_PATH(app_path_); ///< Program Data Location
+#endif
+
+#ifdef LINUX_INSTALL_BUILD
+ std::filesystem::path app_locale_path_ =
+ std::string(APP_LOCALE_PATH); ///< Program Data Location
+#else
+ std::filesystem::path app_locale_path_ =
+ app_resource_path_ / "locales"; ///< Program Data Location
+#endif
-void GpgFrontend::GlobalSettingStation::init_app_secure_key() {}
+ std::filesystem::path app_configure_path_ =
+ QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation)
+ .toStdString(); ///< Program Configure Location
+ std::filesystem::path config_dir_path_ =
+ app_configure_path_ / "conf"; ///< Configure File Directory Location
+ std::filesystem::path main_config_path_ =
+ config_dir_path_ / "main.cfg"; ///< Main Configure File Location
+ std::filesystem::path module_config_path_ =
+ config_dir_path_ / "module.cfg"; ///< Main Configure File Location
-int64_t GpgFrontend::GlobalSettingStation::get_files_size_at_path(
- std::filesystem::path path, std::string filename_pattern) const {
- auto dir = QDir(QString::fromStdString(path.u8string()));
- QFileInfoList fileList = dir.entryInfoList(
- QStringList() << QString::fromStdString(filename_pattern), QDir::Files);
- qint64 totalSize = 0;
+ libconfig::Config ui_cfg_; ///< UI Configure File
- for (const QFileInfo &fileInfo : fileList) {
- totalSize += fileInfo.size();
+ /**
+ * @brief
+ *
+ */
+ void init_app_secure_key() {}
+
+ /**
+ * @brief
+ *
+ */
+ int64_t get_files_size_at_path(std::filesystem::path path,
+ std::string filename_pattern) const {
+ auto dir = QDir(QString::fromStdString(path.u8string()));
+ QFileInfoList fileList = dir.entryInfoList(
+ QStringList() << QString::fromStdString(filename_pattern), QDir::Files);
+ qint64 totalSize = 0;
+
+ for (const QFileInfo &fileInfo : fileList) {
+ totalSize += fileInfo.size();
+ }
+ return totalSize;
}
- return totalSize;
-}
-std::string GpgFrontend::GlobalSettingStation::get_human_readable_size(
- int64_t size) const {
- double num = size;
- QStringList list;
- list << "KB"
- << "MB"
- << "GB"
- << "TB";
+ /**
+ * @brief
+ *
+ */
+ std::string get_human_readable_size(int64_t size) const {
+ double num = size;
+ QStringList list;
+ list << "KB"
+ << "MB"
+ << "GB"
+ << "TB";
- QStringListIterator i(list);
- QString unit("bytes");
+ QStringListIterator i(list);
+ QString unit("bytes");
- while (num >= 1024.0 && i.hasNext()) {
- unit = i.next();
- num /= 1024.0;
+ while (num >= 1024.0 && i.hasNext()) {
+ unit = i.next();
+ num /= 1024.0;
+ }
+ return (QString().setNum(num, 'f', 2) + " " + unit).toStdString();
+ }
+
+ /**
+ * @brief
+ *
+ */
+ void delete_all_files(std::filesystem::path path,
+ std::string filename_pattern) const {
+ auto dir = QDir(QString::fromStdString(path.u8string()));
+
+ QStringList logFiles = dir.entryList(
+ QStringList() << QString::fromStdString(filename_pattern), QDir::Files);
+
+ for (const auto &file : logFiles) {
+ QFile::remove(dir.absoluteFilePath(file));
+ }
}
- return (QString().setNum(num, 'f', 2) + " " + unit).toStdString();
+};
+
+GlobalSettingStation::GlobalSettingStation(int channel) noexcept
+ : SingletonFunctionObject<GlobalSettingStation>(channel),
+ p_(std::make_unique<Impl>(channel)) {}
+
+GlobalSettingStation::~GlobalSettingStation() noexcept = default;
+
+void GlobalSettingStation::SyncSettings() noexcept { p_->SyncSettings(); }
+
+libconfig::Setting &GlobalSettingStation::GetMainSettings() noexcept {
+ return p_->GetMainSettings();
+}
+
+std::filesystem::path GlobalSettingStation::GetAppDir() const {
+ return p_->GetAppDir();
}
-std::string GpgFrontend::GlobalSettingStation::GetLogFilesSize() const {
- return get_human_readable_size(
- get_files_size_at_path(app_log_path_, "*.log"));
+std::filesystem::path GlobalSettingStation::GetAppDataPath() const {
+ return p_->GetAppDataPath();
}
-std::string GpgFrontend::GlobalSettingStation::GetDataObjectsFilesSize() const {
- return get_human_readable_size(
- get_files_size_at_path(app_data_objs_path_, "*"));
+[[nodiscard]] std::filesystem::path GlobalSettingStation::GetLogDir() const {
+ return p_->GetLogDir();
}
-void GpgFrontend::GlobalSettingStation::ClearAllLogFiles() const {
- delete_all_files(app_log_path_, "*.log");
+std::filesystem::path GlobalSettingStation::GetStandaloneDatabaseDir() const {
+ return p_->GetStandaloneDatabaseDir();
}
-void GpgFrontend::GlobalSettingStation::ClearAllDataObjects() const {
- delete_all_files(app_data_objs_path_, "*");
+std::filesystem::path GlobalSettingStation::GetAppConfigPath() const {
+ return p_->GetAppConfigPath();
}
-void GpgFrontend::GlobalSettingStation::delete_all_files(
- std::filesystem::path path, std::string filename_pattern) const {
- auto dir = QDir(QString::fromStdString(path.u8string()));
+std::filesystem::path GlobalSettingStation::GetStandaloneGpgBinDir() const {
+ return p_->GetStandaloneGpgBinDir();
+}
- // 使用name filters来只选取以.log结尾的文件
- QStringList logFiles = dir.entryList(
- QStringList() << QString::fromStdString(filename_pattern), QDir::Files);
+std::filesystem::path GlobalSettingStation::GetLocaleDir() const {
+ return p_->GetLocaleDir();
+}
- // 遍历并删除所有符合条件的文件
- for (const auto &file : logFiles) {
- QFile::remove(dir.absoluteFilePath(file));
- }
+std::filesystem::path GlobalSettingStation::GetResourceDir() const {
+ return p_->GetResourceDir();
+}
+
+std::filesystem::path GlobalSettingStation::GetCertsDir() const {
+ return p_->GetCertsDir();
+}
+
+std::string GlobalSettingStation::GetLogFilesSize() const {
+ return p_->GetLogFilesSize();
+}
+
+std::string GlobalSettingStation::GetDataObjectsFilesSize() const {
+ return p_->GetDataObjectsFilesSize();
+}
+
+void GlobalSettingStation::ClearAllLogFiles() const { p_->ClearAllLogFiles(); }
+
+void GlobalSettingStation::ClearAllDataObjects() const {
+ p_->ClearAllDataObjects();
}
-GpgFrontend::GlobalSettingStation::~GlobalSettingStation() noexcept = default;
+} // namespace GpgFrontend \ No newline at end of file
diff --git a/src/core/function/GlobalSettingStation.h b/src/core/function/GlobalSettingStation.h
index 75610c92..8b76510b 100644
--- a/src/core/function/GlobalSettingStation.h
+++ b/src/core/function/GlobalSettingStation.h
@@ -30,6 +30,7 @@
#define GPGFRONTEND_GLOBALSETTINGSTATION_H
#include <filesystem>
+#include <memory>
#include "GpgFrontendBuildInstallInfo.h"
#include "core/GpgFrontendCore.h"
@@ -38,8 +39,11 @@
namespace GpgFrontend {
/**
- * @brief
+ * @class GlobalSettingStation
+ * @brief Singleton class for managing global settings in the application.
*
+ * This class handles reading and writing of global settings, as well as
+ * managing application directories and resource paths.
*/
class GPGFRONTEND_CORE_EXPORT GlobalSettingStation
: public SingletonFunctionObject<GlobalSettingStation> {
@@ -62,96 +66,64 @@ class GPGFRONTEND_CORE_EXPORT GlobalSettingStation
*
* @return libconfig::Setting&
*/
- libconfig::Setting &GetUISettings() noexcept;
-
- /**
- * @brief
- *
- * @return libconfig::Setting&
- */
- template <typename T>
- T LookupSettings(std::string path, T default_value) noexcept {
- T value = default_value;
- try {
- value = static_cast<T>(GetUISettings().lookup(path));
- } catch (...) {
- SPDLOG_WARN("setting not found: {}", path);
- }
- return value;
- }
+ libconfig::Setting &GetMainSettings() noexcept;
/**
* @brief Get the App Dir object
*
* @return std::filesystem::path
*/
- [[nodiscard]] std::filesystem::path GetAppDir() const { return app_path_; }
+ [[nodiscard]] std::filesystem::path GetAppDir() const;
- [[nodiscard]] std::filesystem::path GetAppDataPath() const {
- return app_data_path_;
- }
+ /**
+ * @brief Gets the application data directory.
+ * @return Path to the application data directory.
+ */
+ [[nodiscard]] std::filesystem::path GetAppDataPath() const;
/**
* @brief Get the Log Dir object
*
* @return std::filesystem::path
*/
- [[nodiscard]] std::filesystem::path GetLogDir() const {
- return app_log_path_;
- }
+ [[nodiscard]] std::filesystem::path GetLogDir() const;
/**
* @brief Get the Standalone Database Dir object
*
* @return std::filesystem::path
*/
- [[nodiscard]] std::filesystem::path GetStandaloneDatabaseDir() const {
- auto db_path = app_configure_path_ / "db";
- if (!std::filesystem::exists(db_path)) {
- std::filesystem::create_directory(db_path);
- }
- return db_path;
- }
+ [[nodiscard]] std::filesystem::path GetStandaloneDatabaseDir() const;
- [[nodiscard]] std::filesystem::path GetAppConfigPath() const {
- return app_configure_path_;
- }
+ [[nodiscard]] std::filesystem::path GetAppConfigPath() const;
/**
* @brief Get the Standalone Gpg Bin Dir object
*
* @return std::filesystem::path
*/
- [[nodiscard]] std::filesystem::path GetStandaloneGpgBinDir() const {
- return app_resource_path_ / "gpg1.4" / "gpg";
- }
+ [[nodiscard]] std::filesystem::path GetStandaloneGpgBinDir() const;
/**
* @brief Get the Locale Dir object
*
* @return std::filesystem::path
*/
- [[nodiscard]] std::filesystem::path GetLocaleDir() const {
- return app_locale_path_;
- }
+ [[nodiscard]] std::filesystem::path GetLocaleDir() const;
/**
* @brief Get the Resource Dir object
*
* @return std::filesystem::path
*/
- [[nodiscard]] std::filesystem::path GetResourceDir() const {
- return app_resource_path_;
- }
+ [[nodiscard]] std::filesystem::path GetResourceDir() const;
/**
* @brief Get the Certs Dir object
*
* @return std::filesystem::path
*/
- [[nodiscard]] std::filesystem::path GetCertsDir() const {
- return app_resource_path_ / "certs";
- }
+ [[nodiscard]] std::filesystem::path GetCertsDir() const;
[[nodiscard]] std::string GetLogFilesSize() const;
@@ -167,69 +139,26 @@ class GPGFRONTEND_CORE_EXPORT GlobalSettingStation
*/
void SyncSettings() noexcept;
- private:
- std::filesystem::path app_path_ = QCoreApplication::applicationDirPath()
- .toStdString(); ///< Program Location
- std::filesystem::path app_data_path_ =
- QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation)
- .toStdString(); ///< Program Data Location
- std::filesystem::path app_log_path_ =
- app_data_path_ / "logs"; ///< Program Data Location
- std::filesystem::path app_data_objs_path_ =
- app_data_path_ / "data_objs"; ///< Object storage path
-
-#ifdef LINUX_INSTALL_BUILD
- std::filesystem::path app_resource_path_ =
- std::filesystem::path(APP_LOCALSTATE_PATH) /
- "gpgfrontend"; ///< Program Data Location
-#else
- std::filesystem::path app_resource_path_ =
- RESOURCE_DIR_BOOST_PATH(app_path_); ///< Program Data Location
-#endif
-
-#ifdef LINUX_INSTALL_BUILD
- std::filesystem::path app_locale_path_ =
- std::string(APP_LOCALE_PATH); ///< Program Data Location
-#else
- std::filesystem::path app_locale_path_ =
- app_resource_path_ / "locales"; ///< Program Data Location
-#endif
-
- std::filesystem::path app_configure_path_ =
- QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation)
- .toStdString(); ///< Program Configure Location
- std::filesystem::path ui_config_dir_path_ =
- app_configure_path_ / "conf"; ///< Configure File Directory Location
- std::filesystem::path ui_config_path_ =
- ui_config_dir_path_ / "main.cfg"; ///< Main Configure File Location
-
- libconfig::Config ui_cfg_; ///< UI Configure File
-
- /**
- * @brief
- *
- */
- void init_app_secure_key();
-
- /**
- * @brief
- *
- */
- int64_t get_files_size_at_path(std::filesystem::path path,
- std::string filename_pattern) const;
-
/**
- * @brief
- *
+ * @brief Looks up a setting by path.
+ * @param path The path to the setting.
+ * @param default_value The default value to return if setting is not found.
+ * @return The setting value.
*/
- std::string get_human_readable_size(int64_t size) const;
+ template <typename T>
+ T LookupSettings(std::string path, T default_value) noexcept {
+ T value = default_value;
+ try {
+ value = static_cast<T>(GetMainSettings().lookup(path));
+ } catch (...) {
+ SPDLOG_WARN("setting not found: {}", path);
+ }
+ return value;
+ }
- /**
- * @brief
- *
- */
- void delete_all_files(std::filesystem::path path,
- std::string filename_pattern) const;
+ private:
+ class Impl;
+ std::unique_ptr<Impl> p_;
};
} // namespace GpgFrontend
diff --git a/src/ui/GpgFrontendApplication.cpp b/src/ui/GpgFrontendApplication.cpp
index 5c422f49..6f80f534 100644
--- a/src/ui/GpgFrontendApplication.cpp
+++ b/src/ui/GpgFrontendApplication.cpp
@@ -29,6 +29,7 @@
#include "ui/GpgFrontendApplication.h"
#include <QTextCodec>
+#include <boost/stacktrace.hpp>
#include "GpgFrontendBuildInfo.h"
@@ -77,6 +78,8 @@ bool GpgFrontendApplication::notify(QObject *receiver, QEvent *event) {
app_done = QApplication::notify(receiver, event);
} catch (const std::exception &ex) {
SPDLOG_ERROR("exception caught in notify: {}", ex.what());
+ SPDLOG_ERROR("exception stacktrace: {}",
+ boost::stacktrace::to_string(boost::stacktrace::stacktrace()));
QMessageBox::information(nullptr, _("Standard Exception Thrown"),
_("Oops, an standard exception was thrown "
"during the running of the "
diff --git a/src/ui/GpgFrontendUIInit.cpp b/src/ui/GpgFrontendUIInit.cpp
index 03132abc..49bc01fb 100644
--- a/src/ui/GpgFrontendUIInit.cpp
+++ b/src/ui/GpgFrontendUIInit.cpp
@@ -252,7 +252,7 @@ void ShutdownUILoggingSystem() {
void init_locale() {
// get the instance of the GlobalSettingStation
auto& settings =
- GpgFrontend::GlobalSettingStation::GetInstance().GetUISettings();
+ GpgFrontend::GlobalSettingStation::GetInstance().GetMainSettings();
// create general settings if not exist
if (!settings.exists("general") ||
diff --git a/src/ui/UserInterfaceUtils.cpp b/src/ui/UserInterfaceUtils.cpp
index 954ee42f..e44eae4d 100644
--- a/src/ui/UserInterfaceUtils.cpp
+++ b/src/ui/UserInterfaceUtils.cpp
@@ -341,7 +341,7 @@ void CommonUtils::SlotImportKeyFromKeyServer(
std::string target_keyserver;
try {
- auto &settings = GlobalSettingStation::GetInstance().GetUISettings();
+ auto &settings = GlobalSettingStation::GetInstance().GetMainSettings();
SettingsObject key_server_json("key_server");
// get key servers from settings
diff --git a/src/ui/dialog/Wizard.cpp b/src/ui/dialog/Wizard.cpp
index 2a73477b..24ffe496 100644
--- a/src/ui/dialog/Wizard.cpp
+++ b/src/ui/dialog/Wizard.cpp
@@ -57,7 +57,7 @@ Wizard::Wizard(QWidget* parent) : QWizard(parent) {
void Wizard::slot_wizard_accepted() {
// Don't show is mapped to show -> negation
try {
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
+ auto& settings = GlobalSettingStation::GetInstance().GetMainSettings();
if (!settings.exists("wizard")) {
settings.add("wizard", libconfig::Setting::TypeGroup);
}
diff --git a/src/ui/dialog/gnupg/GnuPGControllerDialog.cpp b/src/ui/dialog/gnupg/GnuPGControllerDialog.cpp
index 4bcd2957..f80b6c7a 100644
--- a/src/ui/dialog/gnupg/GnuPGControllerDialog.cpp
+++ b/src/ui/dialog/gnupg/GnuPGControllerDialog.cpp
@@ -101,7 +101,7 @@ GnuPGControllerDialog::GnuPGControllerDialog(QWidget* parent)
return;
}
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
+ auto& settings = GlobalSettingStation::GetInstance().GetMainSettings();
auto& general = settings["general"];
// update settings
@@ -138,7 +138,7 @@ GnuPGControllerDialog::GnuPGControllerDialog(QWidget* parent)
return;
}
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
+ auto& settings = GlobalSettingStation::GetInstance().GetMainSettings();
auto& general = settings["general"];
// update settings
@@ -268,7 +268,7 @@ void GnuPGControllerDialog::slot_update_custom_gnupg_install_path_label(
}
void GnuPGControllerDialog::set_settings() {
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
+ auto& settings = GlobalSettingStation::GetInstance().GetMainSettings();
try {
bool non_ascii_when_export =
@@ -319,7 +319,7 @@ void GnuPGControllerDialog::set_settings() {
void GnuPGControllerDialog::apply_settings() {
auto& settings =
- GpgFrontend::GlobalSettingStation::GetInstance().GetUISettings();
+ GpgFrontend::GlobalSettingStation::GetInstance().GetMainSettings();
if (!settings.exists("general") ||
settings.lookup("general").getType() != libconfig::Setting::TypeGroup)
diff --git a/src/ui/dialog/keypair_details/KeyPairOperaTab.cpp b/src/ui/dialog/keypair_details/KeyPairOperaTab.cpp
index cdc3d09e..d141c971 100644
--- a/src/ui/dialog/keypair_details/KeyPairOperaTab.cpp
+++ b/src/ui/dialog/keypair_details/KeyPairOperaTab.cpp
@@ -79,7 +79,7 @@ KeyPairOperaTab::KeyPairOperaTab(const std::string& key_id, QWidget* parent)
auto advance_h_box_layout = new QHBoxLayout();
// get settings
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
+ auto& settings = GlobalSettingStation::GetInstance().GetMainSettings();
// read settings
bool forbid_all_gnupg_connection = false;
try {
diff --git a/src/ui/dialog/keypair_details/KeySetExpireDateDialog.cpp b/src/ui/dialog/keypair_details/KeySetExpireDateDialog.cpp
index e3eb755a..ff4ed77f 100644
--- a/src/ui/dialog/keypair_details/KeySetExpireDateDialog.cpp
+++ b/src/ui/dialog/keypair_details/KeySetExpireDateDialog.cpp
@@ -100,7 +100,7 @@ void KeySetExpireDateDialog::slot_confirm() {
void KeySetExpireDateDialog::init() {
ui_->setupUi(this);
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
+ auto& settings = GlobalSettingStation::GetInstance().GetMainSettings();
bool longer_expiration_date = false;
try {
diff --git a/src/ui/dialog/settings/SettingsAdvanced.cpp b/src/ui/dialog/settings/SettingsAdvanced.cpp
index 03b0d761..f7c6eeaa 100644
--- a/src/ui/dialog/settings/SettingsAdvanced.cpp
+++ b/src/ui/dialog/settings/SettingsAdvanced.cpp
@@ -68,7 +68,7 @@ void AdvancedTab::SetSettings() {
void AdvancedTab::ApplySettings() {
auto& settings =
- GpgFrontend::GlobalSettingStation::GetInstance().GetUISettings();
+ GpgFrontend::GlobalSettingStation::GetInstance().GetMainSettings();
if (!settings.exists("advanced") ||
settings.lookup("advanced").getType() != libconfig::Setting::TypeGroup)
diff --git a/src/ui/dialog/settings/SettingsGeneral.cpp b/src/ui/dialog/settings/SettingsGeneral.cpp
index 72bb4a69..08d45adf 100644
--- a/src/ui/dialog/settings/SettingsGeneral.cpp
+++ b/src/ui/dialog/settings/SettingsGeneral.cpp
@@ -116,7 +116,7 @@ GeneralTab::GeneralTab(QWidget* parent)
* appropriately
**********************************/
void GeneralTab::SetSettings() {
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
+ auto& settings = GlobalSettingStation::GetInstance().GetMainSettings();
try {
bool save_key_checked = settings.lookup("general.save_key_checked");
@@ -186,7 +186,7 @@ void GeneralTab::SetSettings() {
*************************************/
void GeneralTab::ApplySettings() {
auto& settings =
- GpgFrontend::GlobalSettingStation::GetInstance().GetUISettings();
+ GpgFrontend::GlobalSettingStation::GetInstance().GetMainSettings();
if (!settings.exists("general") ||
settings.lookup("general").getType() != libconfig::Setting::TypeGroup)
diff --git a/src/ui/dialog/settings/SettingsNetwork.cpp b/src/ui/dialog/settings/SettingsNetwork.cpp
index c2e74ca9..83b97ed2 100644
--- a/src/ui/dialog/settings/SettingsNetwork.cpp
+++ b/src/ui/dialog/settings/SettingsNetwork.cpp
@@ -97,7 +97,7 @@ GpgFrontend::UI::NetworkTab::NetworkTab(QWidget *parent)
}
void GpgFrontend::UI::NetworkTab::SetSettings() {
- auto &settings = GlobalSettingStation::GetInstance().GetUISettings();
+ auto &settings = GlobalSettingStation::GetInstance().GetMainSettings();
try {
std::string proxy_host = settings.lookup("proxy.proxy_host");
@@ -190,7 +190,7 @@ void GpgFrontend::UI::NetworkTab::SetSettings() {
void GpgFrontend::UI::NetworkTab::ApplySettings() {
auto &settings =
- GpgFrontend::GlobalSettingStation::GetInstance().GetUISettings();
+ GpgFrontend::GlobalSettingStation::GetInstance().GetMainSettings();
if (!settings.exists("proxy") ||
settings.lookup("proxy").getType() != libconfig::Setting::TypeGroup)
diff --git a/src/ui/main_window/MainWindow.cpp b/src/ui/main_window/MainWindow.cpp
index a6c2a57c..8d6a9310 100644
--- a/src/ui/main_window/MainWindow.cpp
+++ b/src/ui/main_window/MainWindow.cpp
@@ -32,6 +32,7 @@
#include "core/function/CacheManager.h"
#include "core/function/GlobalSettingStation.h"
#include "core/function/gpg/GpgAdvancedOperator.h"
+#include "core/module/ModuleManager.h"
#include "main_window/GeneralMainWindow.h"
#include "nlohmann/json_fwd.hpp"
#include "spdlog/spdlog.h"
@@ -120,7 +121,7 @@ void MainWindow::Init() noexcept {
edit_->CurTextPage()->setFocus();
- auto &settings = GlobalSettingStation::GetInstance().GetUISettings();
+ auto &settings = GlobalSettingStation::GetInstance().GetMainSettings();
if (!settings.exists("wizard") ||
settings.lookup("wizard").getType() != libconfig::Setting::TypeGroup)
@@ -144,17 +145,18 @@ void MainWindow::Init() noexcept {
}
emit SignalLoaded();
+ Module::TriggerEvent("APPLICATION_LOADED");
// if not prohibit update checking
if (!prohibit_update_checking_) {
- auto *version_task = new VersionCheckTask();
+ // auto *version_task = new VersionCheckTask();
- connect(version_task, &VersionCheckTask::SignalUpgradeVersion, this,
- &MainWindow::slot_version_upgrade);
+ // connect(version_task, &VersionCheckTask::SignalUpgradeVersion, this,
+ // &MainWindow::slot_version_upgrade);
- Thread::TaskRunnerGetter::GetInstance()
- .GetTaskRunner(Thread::TaskRunnerGetter::kTaskRunnerType_Network)
- ->PostTask(version_task);
+ // Thread::TaskRunnerGetter::GetInstance()
+ // .GetTaskRunner(Thread::TaskRunnerGetter::kTaskRunnerType_Network)
+ // ->PostTask(version_task);
}
// before application exit
@@ -198,7 +200,7 @@ void MainWindow::restore_settings() {
key_server_json["default_server"] = 0;
}
- auto &settings = GlobalSettingStation::GetInstance().GetUISettings();
+ auto &settings = GlobalSettingStation::GetInstance().GetMainSettings();
if (!settings.exists("general") ||
settings.lookup("general").getType() != libconfig::Setting::TypeGroup)
@@ -303,7 +305,7 @@ void MainWindow::save_settings() {
for (const auto &key_id : *key_ids_need_to_store)
default_key_checked.push_back(key_id);
} else {
- auto &settings = GlobalSettingStation::GetInstance().GetUISettings();
+ auto &settings = GlobalSettingStation::GetInstance().GetMainSettings();
settings["general"].remove("save_key_checked");
}
diff --git a/src/ui/widgets/KeyList.cpp b/src/ui/widgets/KeyList.cpp
index 63c1eb24..e867735b 100644
--- a/src/ui/widgets/KeyList.cpp
+++ b/src/ui/widgets/KeyList.cpp
@@ -380,7 +380,7 @@ void KeyList::dropEvent(QDropEvent* event) {
dialog->exec();
if (dialog->result() == QDialog::Rejected) return;
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
+ auto& settings = GlobalSettingStation::GetInstance().GetMainSettings();
if (!settings.exists("general") ||
settings.lookup("general").getType() != libconfig::Setting::TypeGroup)
diff --git a/src/ui/widgets/TextEdit.cpp b/src/ui/widgets/TextEdit.cpp
index 56097b1a..f44c076c 100644
--- a/src/ui/widgets/TextEdit.cpp
+++ b/src/ui/widgets/TextEdit.cpp
@@ -632,7 +632,7 @@ void TextEdit::slot_file_page_path_changed(const QString& path) const {
void TextEdit::slot_save_status_to_cache_for_revovery() {
if (this->text_page_data_modified_count_++ % 8 != 0) return;
- auto& settings = GlobalSettingStation::GetInstance().GetUISettings();
+ auto& settings = GlobalSettingStation::GetInstance().GetMainSettings();
bool restore_text_editor_page = false;
try {
restore_text_editor_page =