diff --git a/src/plugins/updateinfo/updateinfoplugin.cpp b/src/plugins/updateinfo/updateinfoplugin.cpp index 7fcd36111c5..4644823ed52 100644 --- a/src/plugins/updateinfo/updateinfoplugin.cpp +++ b/src/plugins/updateinfo/updateinfoplugin.cpp @@ -159,6 +159,23 @@ void UpdateInfoPlugin::collectCheckForUpdatesOutput(const QString &contents) d->m_collectedOutput += contents; } +static QStringList availableUpdates(const QDomDocument &document) +{ + if (document.isNull() || !document.firstChildElement().hasChildNodes()) + return {}; + QStringList result; + const QDomNodeList updates = document.firstChildElement().elementsByTagName("update"); + for (int i = 0; i < updates.size(); ++i) { + const QDomNode node = updates.item(i); + if (node.isElement()) { + const QDomElement element = node.toElement(); + if (element.hasAttribute("name")) + result.append(element.attribute("name")); + } + } + return result; +} + void UpdateInfoPlugin::checkForUpdatesFinished() { setLastCheckDate(QDate::currentDate()); @@ -181,6 +198,15 @@ void UpdateInfoPlugin::checkForUpdatesFinished() Core::ICore::infoBar()->removeInfo(InstallUpdates); startUpdater(); }); + const QStringList updates = availableUpdates(document); + info.setDetailsWidgetCreator([updates]() -> QWidget * { + const QString updateText = updates.join("
" + tr("Available Updates:") + "