From 9ac35032521f8a5520264678ab8173a598baa76e Mon Sep 17 00:00:00 2001 From: WrinklyNinja Date: Fri, 15 Aug 2014 18:59:38 +0100 Subject: [PATCH] Implemented save settings and user edits on quit. --- src/backend/game.cpp | 1 + src/gui/app.cpp | 19 +++++++++++++++++++ src/gui/app.h | 2 +- src/gui/main_win.cpp | 4 ++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/backend/game.cpp b/src/backend/game.cpp index 4e0fad1b..25afaa11 100644 --- a/src/backend/game.cpp +++ b/src/backend/game.cpp @@ -104,6 +104,7 @@ namespace loot { } void MetadataList::Save(const boost::filesystem::path& filepath) { + BOOST_LOG_TRIVIAL(trace) << "Saving metadata list to: " << filepath; YAML::Emitter yout; yout.SetIndent(2); yout << YAML::BeginMap diff --git a/src/gui/app.cpp b/src/gui/app.cpp index 14494247..e8ab315f 100644 --- a/src/gui/app.cpp +++ b/src/gui/app.cpp @@ -258,4 +258,23 @@ namespace loot { void LootState::UpdateSettings(const YAML::Node& settings) { _settings = settings; } + + void LootState::SaveSettings() { + _settings["lastGame"] = _games[_currentGame].FolderName(); + + //Save settings. + try { + BOOST_LOG_TRIVIAL(debug) << "Saving LOOT settings."; + YAML::Emitter yout; + yout.SetIndent(2); + yout << _settings; + + loot::ofstream out(loot::g_path_settings); + out << yout.c_str(); + out.close(); + } + catch (std::exception &e) { + BOOST_LOG_TRIVIAL(error) << "Failed to save LOOT's settings. Error: " << e.what(); + } + } } \ No newline at end of file diff --git a/src/gui/app.h b/src/gui/app.h index 7b9dd226..ead14ff6 100644 --- a/src/gui/app.h +++ b/src/gui/app.h @@ -74,7 +74,7 @@ namespace loot { const YAML::Node& GetSettings() const; void UpdateSettings(const YAML::Node& settings); - + void SaveSettings(); private: YAML::Node _settings; std::vector _games; diff --git a/src/gui/main_win.cpp b/src/gui/main_win.cpp index 8071159c..920b639f 100644 --- a/src/gui/main_win.cpp +++ b/src/gui/main_win.cpp @@ -145,5 +145,9 @@ int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmd if (hMutex != NULL) ReleaseMutex(hMutex); + // Now save LOOT's settings and user metadata. + g_app_state.CurrentGame().userlist.Save(g_app_state.CurrentGame().UserlistPath()); + g_app_state.SaveSettings(); + return 0; } \ No newline at end of file