aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/function/GlobalSettingStation.h
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2023-10-17 18:06:44 +0000
committersaturneric <[email protected]>2023-10-17 18:06:44 +0000
commit9eb339dd2b463cc86bbeed73e349afe0b3ad7a23 (patch)
tree7383cb1c44828e33d05d32f07dff595c8e27d380 /src/core/function/GlobalSettingStation.h
parentfix: improve module (diff)
downloadGpgFrontend-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.h143
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