예제 #1
0
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;
}
예제 #2
0
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;
}