QString CModListView::genChangelogText(CModEntry &mod) { QString headerTemplate = "<p><span style=\" font-weight:600;\">%1: </span></p>"; QString entryBegin = "<p align=\"justify\"><ul>"; QString entryEnd = "</ul></p>"; QString entryLine = "<li>%1</li>"; //QString versionSeparator = "<hr/>"; QString result; QVariantMap changelog = mod.getValue("changelog").toMap(); QList<QString> versions = changelog.keys(); std::sort(versions.begin(), versions.end(), [](QString lesser, QString greater) { return !CModEntry::compareVersions(lesser, greater); }); for (auto & version : versions) { result += headerTemplate.arg(version); result += entryBegin; for (auto & line : changelog.value(version).toStringList()) result += entryLine.arg(line); result += entryEnd; } return result; }
QString CModListView::genModInfoText(CModEntry &mod) { QString prefix = "<p><span style=\" font-weight:600;\">%1: </span>"; // shared prefix QString lineTemplate = prefix + "%2</p>"; QString urlTemplate = prefix + "<a href=\"%2\"><span style=\" text-decoration: underline; color:#0000ff;\">%2</span></a></p>"; QString textTemplate = prefix + "</p><p align=\"justify\">%2</p>"; QString noteTemplate = "<p align=\"justify\">%1: %2</p>"; QString result; result += "<html><body>"; result += replaceIfNotEmpty(mod.getValue("name"), lineTemplate.arg("Mod name")); result += replaceIfNotEmpty(mod.getValue("installedVersion"), lineTemplate.arg("Installed version")); result += replaceIfNotEmpty(mod.getValue("latestVersion"), lineTemplate.arg("Latest version")); result += replaceIfNotEmpty(CModEntry::sizeToString(mod.getValue("size").toDouble()), lineTemplate.arg("Download size")); result += replaceIfNotEmpty(mod.getValue("author"), lineTemplate.arg("Authors")); result += replaceIfNotEmpty(mod.getValue("contact"), urlTemplate.arg("Home")); result += replaceIfNotEmpty(mod.getValue("depends"), lineTemplate.arg("Required mods")); result += replaceIfNotEmpty(mod.getValue("conflicts"), lineTemplate.arg("Conflicting mods")); result += replaceIfNotEmpty(mod.getValue("description"), textTemplate.arg("Description")); result += "<p></p>"; // to get some empty space QString unknownDeps = "This mod can not be installed or enabled because following dependencies are not present"; QString blockingMods = "This mod can not be enabled because following mods are incompatible with this mod"; QString hasActiveDependentMods = "This mod can not be disabled because it is required to run following mods"; QString hasDependentMods = "This mod can not be uninstalled or updated because it is required to run following mods"; QString notes; notes += replaceIfNotEmpty(findInvalidDependencies(mod.getName()), noteTemplate.arg(unknownDeps)); notes += replaceIfNotEmpty(findBlockingMods(mod.getName()), noteTemplate.arg(blockingMods)); if (mod.isEnabled()) notes += replaceIfNotEmpty(findDependentMods(mod.getName(), true), noteTemplate.arg(hasActiveDependentMods)); if (mod.isInstalled()) notes += replaceIfNotEmpty(findDependentMods(mod.getName(), false), noteTemplate.arg(hasDependentMods)); if (notes.size()) result += textTemplate.arg("Notes").arg(notes); result += "</body></html>"; return result; }