| 437 | } |
| 438 | |
| 439 | void ResourceUpdateDialog::appendResource(CheckUpdateTask::Update const& info, QStringList requiredBy) |
| 440 | { |
| 441 | auto item_top = new QTreeWidgetItem(ui->modTreeWidget); |
| 442 | item_top->setCheckState(0, info.enabled ? Qt::CheckState::Checked : Qt::CheckState::Unchecked); |
| 443 | if (!info.enabled) { |
| 444 | item_top->setToolTip(0, tr("Mod was disabled as it may be already installed.")); |
| 445 | } |
| 446 | item_top->setText(0, info.name); |
| 447 | item_top->setExpanded(true); |
| 448 | |
| 449 | auto provider_item = new QTreeWidgetItem(item_top); |
| 450 | QString provider_name = ModPlatform::ProviderCapabilities::readableName(info.provider); |
| 451 | provider_item->setText(0, tr("Provider: %1").arg(provider_name)); |
| 452 | provider_item->setData(0, Qt::UserRole, provider_name); |
| 453 | |
| 454 | auto old_version_item = new QTreeWidgetItem(item_top); |
| 455 | old_version_item->setText(0, tr("Old version: %1").arg(info.old_version)); |
| 456 | old_version_item->setData(0, Qt::UserRole, info.old_version); |
| 457 | |
| 458 | auto new_version_item = new QTreeWidgetItem(item_top); |
| 459 | new_version_item->setText(0, tr("New version: %1").arg(info.new_version)); |
| 460 | new_version_item->setData(0, Qt::UserRole, info.new_version); |
| 461 | |
| 462 | if (info.new_version_type.has_value()) { |
| 463 | auto new_version_type_item = new QTreeWidgetItem(item_top); |
| 464 | new_version_type_item->setText(0, tr("New Version Type: %1").arg(info.new_version_type.value().toString())); |
| 465 | new_version_type_item->setData(0, Qt::UserRole, info.new_version_type.value().toString()); |
| 466 | } |
| 467 | |
| 468 | if (!requiredBy.isEmpty()) { |
| 469 | auto requiredByItem = new QTreeWidgetItem(item_top); |
| 470 | if (requiredBy.length() == 1) { |
| 471 | requiredByItem->setText(0, tr("Required by: %1").arg(requiredBy.back())); |
| 472 | requiredByItem->setData(0, Qt::UserRole, requiredBy.back()); |
| 473 | } else { |
| 474 | requiredByItem->setText(0, tr("Required by:")); |
| 475 | for (auto req : requiredBy) { |
| 476 | auto reqItem = new QTreeWidgetItem(requiredByItem); |
| 477 | reqItem->setText(0, req); |
| 478 | } |
| 479 | } |
| 480 | |
| 481 | ui->toggleDepsButton->show(); |
| 482 | m_deps << item_top; |
| 483 | } |
| 484 | |
| 485 | auto changelog_item = new QTreeWidgetItem(item_top); |
| 486 | changelog_item->setText(0, tr("Changelog of the latest version")); |
| 487 | |
| 488 | auto changelog = new QTreeWidgetItem(changelog_item); |
| 489 | auto changelog_area = new QTextBrowser(); |
| 490 | |
| 491 | QString text = info.changelog; |
| 492 | changelog->setData(0, Qt::UserRole, text); |
| 493 | if (info.provider == ModPlatform::ResourceProvider::MODRINTH) { |
| 494 | text = markdownToHTML(info.changelog.toUtf8()); |
| 495 | } |
| 496 | |