MCPcopy Create free account
hub / github.com/PolyMC/PolyMC / appendMod

Method appendMod

launcher/ui/dialogs/ModUpdateDialog.cpp:349–401  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

347}
348
349void ModUpdateDialog::appendMod(CheckUpdateTask::UpdatableMod const& info)
350{
351 auto item_top = new QTreeWidgetItem(ui->modTreeWidget);
352 item_top->setCheckState(0, Qt::CheckState::Checked);
353 item_top->setText(0, info.name);
354 item_top->setExpanded(true);
355
356 auto provider_item = new QTreeWidgetItem(item_top);
357 provider_item->setText(0, tr("Provider: %1").arg(ProviderCaps.readableName(info.provider)));
358
359 auto old_version_item = new QTreeWidgetItem(item_top);
360 old_version_item->setText(0, tr("Old version: %1").arg(info.old_version.isEmpty() ? tr("Not installed") : info.old_version));
361
362 auto new_version_item = new QTreeWidgetItem(item_top);
363 new_version_item->setText(0, tr("New version: %1").arg(info.new_version));
364
365 auto changelog_item = new QTreeWidgetItem(item_top);
366 changelog_item->setText(0, tr("Changelog of the latest version"));
367
368 auto changelog = new QTreeWidgetItem(changelog_item);
369 auto changelog_area = new QTextBrowser();
370
371 switch (info.provider) {
372 case ModPlatform::Provider::MODRINTH: {
373 HoeDown h;
374 // HoeDown bug?: \n aren't converted to <br>
375 auto text = h.process(info.changelog.toUtf8());
376
377 // Don't convert if there's an HTML tag right after (Qt rendering weirdness)
378 text.remove(QRegularExpression("(\n+)(?=<)"));
379 text.replace('\n', "<br>");
380
381 changelog_area->setHtml(text);
382 break;
383 }
384 case ModPlatform::Provider::FLAME: {
385 changelog_area->setHtml(info.changelog);
386 break;
387 }
388 }
389
390 changelog_area->setOpenExternalLinks(true);
391 changelog_area->setLineWrapMode(QTextBrowser::LineWrapMode::NoWrap);
392 changelog_area->setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAsNeeded);
393
394 // HACK: Is there a better way of achieving this?
395 auto font_height = QFontMetrics(changelog_area->font()).height();
396 changelog_area->setMaximumHeight((changelog_area->toPlainText().count(QRegularExpression("\n|<br>")) + 2) * font_height);
397
398 ui->modTreeWidget->setItemWidget(changelog, 0, changelog_area);
399
400 ui->modTreeWidget->addTopLevelItem(item_top);
401}
402
403auto ModUpdateDialog::getTasks() -> const QList<ModDownloadTask*>
404{

Callers 1

confirmMethod · 0.45

Calls 8

readableNameMethod · 0.80
isEmptyMethod · 0.80
processMethod · 0.80
toPlainTextMethod · 0.80
setTextMethod · 0.45
removeMethod · 0.45
replaceMethod · 0.45
countMethod · 0.45

Tested by

no test coverage detected