diff --git a/src/framework/core/config.cpp b/src/framework/core/config.cpp index f4524b60..95bbeb08 100644 --- a/src/framework/core/config.cpp +++ b/src/framework/core/config.cpp @@ -22,6 +22,7 @@ #include "config.h" #include "resourcemanager.h" +#include "configmanager.h" #include @@ -54,6 +55,7 @@ bool Config::unload() if(isLoaded()) { m_confsDoc = nullptr; m_fileName = ""; + g_configs.remove(this); return true; } return false; @@ -148,7 +150,7 @@ OTMLNodePtr Config::getNode(const std::string& key) bool Config::isLoaded() { - return !m_fileName.empty(); + return !m_fileName.empty() && m_confsDoc; } std::string Config::getFileName() diff --git a/src/framework/core/configmanager.cpp b/src/framework/core/configmanager.cpp index b11fc382..12f0fa73 100644 --- a/src/framework/core/configmanager.cpp +++ b/src/framework/core/configmanager.cpp @@ -117,9 +117,13 @@ bool ConfigManager::unload(const std::string& file) ConfigPtr config = get(file); if(config) { config->unload(); - m_configs.remove(config); config = nullptr; return true; } return false; } + +void ConfigManager::remove(const ConfigPtr config) +{ + m_configs.remove(config); +} diff --git a/src/framework/core/configmanager.h b/src/framework/core/configmanager.h index fea43dac..772983e8 100644 --- a/src/framework/core/configmanager.h +++ b/src/framework/core/configmanager.h @@ -38,7 +38,9 @@ public: ConfigPtr create(const std::string& file); ConfigPtr loadSettings(const std::string file); ConfigPtr load(const std::string& file); + bool unload(const std::string& file); + void remove(const ConfigPtr config); protected: ConfigPtr m_settings; diff --git a/src/framework/luafunctions.cpp b/src/framework/luafunctions.cpp index 9f23f549..27433a89 100644 --- a/src/framework/luafunctions.cpp +++ b/src/framework/luafunctions.cpp @@ -194,6 +194,7 @@ void Application::registerLuaFunctions() // Config g_lua.registerClass(); g_lua.bindClassMemberFunction("save", &Config::save); + g_lua.bindClassMemberFunction("unload", &Config::unload); g_lua.bindClassMemberFunction("setValue", &Config::setValue); g_lua.bindClassMemberFunction("setList", &Config::setList); g_lua.bindClassMemberFunction("getValue", &Config::getValue);