diff --git a/SettingsManager.cpp b/SettingsManager.cpp index 45f284a6..73791a4b 100644 --- a/SettingsManager.cpp +++ b/SettingsManager.cpp @@ -44,12 +44,22 @@ json SettingsManager::GetSettings(std::string settings_key) return(empty); } +void SettingsManager::SetSettings(std::string settings_key, json new_settings) +{ + settings_data[settings_key] = new_settings; +} + void SettingsManager::LoadSettings(std::string filename) { + /*---------------------------------------------------------*\ + | Store settings filename, so we can save to it later | + \*---------------------------------------------------------*/ + settings_filename = filename; + /*---------------------------------------------------------*\ | Open input file in binary mode | \*---------------------------------------------------------*/ - std::ifstream settings_file(filename, std::ios::in | std::ios::binary); + std::ifstream settings_file(settings_filename, std::ios::in | std::ios::binary); /*---------------------------------------------------------*\ | Read settings into JSON store | @@ -70,4 +80,25 @@ void SettingsManager::LoadSettings(std::string filename) settings_data.clear(); } } + + settings_file.close(); } + +void SettingsManager::SaveSettings() +{ + std::ofstream settings_file(settings_filename, std::ios::out | std::ios::binary); + + if(settings_file) + { + try + { + settings_file << settings_data.dump(4); + } + catch(std::exception e) + { + + } + + settings_file.close(); + } +} \ No newline at end of file diff --git a/SettingsManager.h b/SettingsManager.h index 204eb820..48a3dbd0 100644 --- a/SettingsManager.h +++ b/SettingsManager.h @@ -22,9 +22,14 @@ public: ~SettingsManager(); json GetSettings(std::string settings_key); + void SetSettings(std::string settings_key, json new_settings); + void LoadSettings(std::string filename); + void SaveSettings(); + private: - json settings_data; - json settings_prototype; + json settings_data; + json settings_prototype; + std::string settings_filename; };