From 6b90c5471d0943a02173da487178e7c5a70443f9 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Fri, 23 Dec 2022 00:09:01 -0600 Subject: [PATCH] Save settings changes functionality --- .../scwx/qt/manager/settings_manager.cpp | 19 +++++++++++++++++-- .../scwx/qt/manager/settings_manager.hpp | 1 + scwx-qt/source/scwx/qt/ui/settings_dialog.cpp | 6 +++--- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/scwx-qt/source/scwx/qt/manager/settings_manager.cpp b/scwx-qt/source/scwx/qt/manager/settings_manager.cpp index 4063fb0c..be161245 100644 --- a/scwx-qt/source/scwx/qt/manager/settings_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/settings_manager.cpp @@ -24,6 +24,9 @@ static boost::json::value ConvertSettingsToJson(); static void GenerateDefaultSettings(); static bool LoadSettings(const boost::json::object& settingsJson); +static bool initialized_ {false}; +static std::string settingsPath_ {}; + void Initialize() { std::string appDataPath { @@ -39,9 +42,10 @@ void Initialize() } } - std::string settingsPath {appDataPath + "/settings.json"}; + settingsPath_ = appDataPath + "/settings.json"; + initialized_ = true; - ReadSettings(settingsPath); + ReadSettings(settingsPath_); } void ReadSettings(const std::string& settingsPath) @@ -71,6 +75,17 @@ void ReadSettings(const std::string& settingsPath) }; } +void SaveSettings() +{ + if (initialized_) + { + logger_->info("Saving settings"); + + boost::json::value settingsJson = ConvertSettingsToJson(); + util::json::WriteJsonFile(settingsPath_, settingsJson); + } +} + settings::GeneralSettings& general_settings() { static settings::GeneralSettings generalSettings_; diff --git a/scwx-qt/source/scwx/qt/manager/settings_manager.hpp b/scwx-qt/source/scwx/qt/manager/settings_manager.hpp index df4f6919..75a10e87 100644 --- a/scwx-qt/source/scwx/qt/manager/settings_manager.hpp +++ b/scwx-qt/source/scwx/qt/manager/settings_manager.hpp @@ -15,6 +15,7 @@ namespace SettingsManager void Initialize(); void ReadSettings(const std::string& settingsPath); +void SaveSettings(); settings::GeneralSettings& general_settings(); settings::MapSettings& map_settings(); diff --git a/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp b/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp index 8126a960..74c9d79b 100644 --- a/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp +++ b/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp @@ -373,7 +373,7 @@ void SettingsDialogImpl::UpdateRadarDialogLocation(const std::string& id) void SettingsDialogImpl::ApplyChanges() { - logger_->info("Apply settings changes"); + logger_->info("Applying settings changes"); bool committed = false; @@ -384,13 +384,13 @@ void SettingsDialogImpl::ApplyChanges() if (committed) { - logger_->info("Saving changes"); + manager::SettingsManager::SaveSettings(); } } void SettingsDialogImpl::DiscardChanges() { - logger_->info("Discard settings changes"); + logger_->info("Discarding settings changes"); for (auto& setting : settings_) {