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; }
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); }