aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/function/GlobalSettingStation.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/function/GlobalSettingStation.h')
-rw-r--r--src/core/function/GlobalSettingStation.h181
1 files changed, 30 insertions, 151 deletions
diff --git a/src/core/function/GlobalSettingStation.h b/src/core/function/GlobalSettingStation.h
index 80780f4b..85ac57b4 100644
--- a/src/core/function/GlobalSettingStation.h
+++ b/src/core/function/GlobalSettingStation.h
@@ -1,5 +1,5 @@
/**
- * Copyright (C) 2021 Saturneric
+ * Copyright (C) 2021 Saturneric <[email protected]>
*
* This file is part of GpgFrontend.
*
@@ -20,26 +20,24 @@
* the gpg4usb project, which is under GPL-3.0-or-later.
*
* All the source code of GpgFrontend was modified and released by
- * Saturneric<[email protected]> starting on May 12, 2021.
+ * Saturneric <[email protected]> starting on May 12, 2021.
*
* SPDX-License-Identifier: GPL-3.0-or-later
*
*/
-#ifndef GPGFRONTEND_GLOBALSETTINGSTATION_H
-#define GPGFRONTEND_GLOBALSETTINGSTATION_H
+#pragma once
-#include <filesystem>
-
-#include "GpgFrontendBuildInstallInfo.h"
-#include "core/GpgFrontendCore.h"
-#include "core/GpgFunctionObject.h"
+#include "core/function/basic/GpgFunctionObject.h"
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> {
@@ -58,179 +56,60 @@ class GPGFRONTEND_CORE_EXPORT GlobalSettingStation
~GlobalSettingStation() noexcept override;
/**
- * @brief
- *
- * @return libconfig::Setting&
- */
- libconfig::Setting &GetUISettings() noexcept;
-
- /**
- * @brief
+ * @brief Get the Settings object
*
- * @return libconfig::Setting&
+ * @return QSettings
*/
- 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;
- }
+ [[nodiscard]] auto GetSettings() const -> QSettings;
/**
* @brief Get the App Dir object
*
- * @return std::filesystem::path
+ * @return QString
*/
- [[nodiscard]] std::filesystem::path GetAppDir() const { return app_path_; }
-
- [[nodiscard]] std::filesystem::path GetAppDataPath() const {
- return app_data_path_;
- }
+ [[nodiscard]] auto GetAppDir() const -> QString;
/**
- * @brief Get the Log Dir object
- *
- * @return std::filesystem::path
+ * @brief Gets the application data directory.
+ * @return Path to the application data directory.
*/
- [[nodiscard]] std::filesystem::path GetLogDir() const {
- return app_log_path_;
- }
+ [[nodiscard]] auto GetAppDataPath() const -> QString;
/**
- * @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 GetAppConfigPath() const {
- return app_configure_path_;
- }
-
- /**
- * @brief Get the Standalone Gpg Bin Dir object
+ * @brief Get the Log Dir object
*
- * @return std::filesystem::path
+ * @return QString
*/
- [[nodiscard]] std::filesystem::path GetStandaloneGpgBinDir() const {
- return app_resource_path_ / "gpg1.4" / "gpg";
- }
+ [[nodiscard]] auto GetLogDir() const -> QString;
/**
- * @brief Get the Locale Dir object
+ * @brief Get the Log Files Size object
*
- * @return std::filesystem::path
+ * @return QString
*/
- [[nodiscard]] std::filesystem::path GetLocaleDir() const {
- return app_locale_path_;
- }
+ [[nodiscard]] auto GetLogFilesSize() const -> QString;
/**
- * @brief Get the Resource Dir object
+ * @brief Get the Data Objects Files Size object
*
- * @return std::filesystem::path
+ * @return QString
*/
- [[nodiscard]] std::filesystem::path GetResourceDir() const {
- return app_resource_path_;
- }
+ [[nodiscard]] auto GetDataObjectsFilesSize() const -> QString;
/**
- * @brief Get the Certs Dir object
+ * @brief clear all log files
*
- * @return std::filesystem::path
*/
- [[nodiscard]] std::filesystem::path GetCertsDir() const {
- return app_resource_path_ / "certs";
- }
-
- [[nodiscard]] std::string GetLogFilesSize() const;
-
- [[nodiscard]] std::string GetDataObjectsFilesSize() const;
-
void ClearAllLogFiles() const;
- void ClearAllDataObjects() const;
-
/**
- * @brief sync the settings to the file
+ * @brief clear all data objects
*
*/
- void SyncSettings() noexcept;
+ void ClearAllDataObjects() const;
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
- *
- */
- std::string get_human_readable_size(int64_t size) const;
-
- /**
- * @brief
- *
- */
- void delete_all_files(std::filesystem::path path,
- std::string filename_pattern) const;
+ class Impl;
+ SecureUniquePtr<Impl> p_;
};
} // namespace GpgFrontend
-
-#endif // GPGFRONTEND_GLOBALSETTINGSTATION_H