diff options
author | saturneric <[email protected]> | 2023-10-17 18:06:44 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2023-10-17 18:06:44 +0000 |
commit | 9eb339dd2b463cc86bbeed73e349afe0b3ad7a23 (patch) | |
tree | 7383cb1c44828e33d05d32f07dff595c8e27d380 /src/core/function/GlobalSettingStation.h | |
parent | fix: improve module (diff) | |
download | GpgFrontend-9eb339dd2b463cc86bbeed73e349afe0b3ad7a23.tar.gz GpgFrontend-9eb339dd2b463cc86bbeed73e349afe0b3ad7a23.zip |
refactor: use piml tech to rewrite GlobalSettingsStation
Diffstat (limited to 'src/core/function/GlobalSettingStation.h')
-rw-r--r-- | src/core/function/GlobalSettingStation.h | 143 |
1 files changed, 36 insertions, 107 deletions
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 |