bool GetSettingValue(CAddon& addon, const std::string& key, typename TSetting::Value& value) { if (key.empty() || !addon.HasSettings()) return false; auto setting = addon.GetSettings()->GetSetting(key); if (setting == nullptr || setting->GetType() != TSetting::Type()) return false; value = std::static_pointer_cast<TSetting>(setting)->GetValue(); return true; }
CAddon::CAddon(const CAddon &rhs) : m_props(rhs.Props()) { m_settings = rhs.m_settings; m_addonXmlDoc = rhs.m_addonXmlDoc; m_settingsLoaded = rhs.m_settingsLoaded; m_userSettingsLoaded = rhs.m_userSettingsLoaded; m_hasSettings = rhs.m_hasSettings; BuildProfilePath(); m_userSettingsPath = URIUtils::AddFileToFolder(Profile(), "settings.xml"); m_strLibName = rhs.m_strLibName; m_enabled = rhs.Enabled(); m_hasStrings = false; m_checkedStrings = false; }
bool UpdateSettingValue(CAddon& addon, const std::string& key, typename TSetting::Value value) { if (key.empty() || !addon.HasSettings()) return false; // try to get the setting auto setting = addon.GetSettings()->GetSetting(key); // if the setting doesn't exist, try to add it if (setting == nullptr) { setting = addon.GetSettings()->AddSetting(key, value); if (setting == nullptr) { CLog::Log(LOGERROR, "CAddon[%s]: failed to add undefined setting \"%s\"", addon.ID().c_str(), key.c_str()); return false; } } if (setting->GetType() != TSetting::Type()) return false; return std::static_pointer_cast<TSetting>(setting)->SetValue(value); }