static std::string SerializeMetadata(const IAddon& addon) { CVariant variant; variant["author"] = addon.Author(); variant["disclaimer"] = addon.Disclaimer(); variant["broken"] = addon.Broken(); variant["size"] = addon.PackageSize(); variant["path"] = addon.Path(); variant["icon"] = addon.Icon(); variant["art"] = CVariant(CVariant::VariantTypeObject); for (const auto& item : addon.Art()) variant["art"][item.first] = item.second; variant["screenshots"] = CVariant(CVariant::VariantTypeArray); for (const auto& item : addon.Screenshots()) variant["screenshots"].push_back(item); variant["extensions"] = CVariant(CVariant::VariantTypeArray); variant["extensions"].push_back(ADDON::CAddonInfo::TranslateType(addon.Type(), false)); variant["dependencies"] = CVariant(CVariant::VariantTypeArray); for (const auto& dep : addon.GetDependencies()) { CVariant info(CVariant::VariantTypeObject); info["addonId"] = dep.id; info["version"] = dep.requiredVersion.asString(); info["optional"] = dep.optional; variant["dependencies"].push_back(std::move(info)); } variant["extrainfo"] = CVariant(CVariant::VariantTypeArray); for (const auto& kv : addon.ExtraInfo()) { CVariant info(CVariant::VariantTypeObject); info["key"] = kv.first; info["value"] = kv.second; variant["extrainfo"].push_back(std::move(info)); } std::string json; CJSONVariantWriter::Write(variant, json, true); return json; }
bool CAddonSystemSettings::IsActive(const IAddon& addon) { AddonPtr active; return GetActive(addon.Type(), active) && active->ID() == addon.ID(); }