From 3ca4544869531830805fc2080bffda39f805fcb9 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 24 Sep 2020 14:39:46 +0200 Subject: [PATCH] UpdateInfo: Include package versions in update notification Fixes: QTCREATORBUG-24692 Change-Id: I5e3327b92b533dd21eabbd14402b81c1c5ad8d92 Reviewed-by: Alessandro Portale --- src/plugins/updateinfo/updateinfoplugin.cpp | 22 ++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/plugins/updateinfo/updateinfoplugin.cpp b/src/plugins/updateinfo/updateinfoplugin.cpp index 0abba718efb..1ca096b07f8 100644 --- a/src/plugins/updateinfo/updateinfoplugin.cpp +++ b/src/plugins/updateinfo/updateinfoplugin.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -159,18 +160,24 @@ void UpdateInfoPlugin::collectCheckForUpdatesOutput(const QString &contents) d->m_collectedOutput += contents; } -static QStringList availableUpdates(const QDomDocument &document) +struct Update +{ + QString name; + QString version; +}; + +static QList availableUpdates(const QDomDocument &document) { if (document.isNull() || !document.firstChildElement().hasChildNodes()) return {}; - QStringList result; + QList 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")); + result.append({element.attribute("name"), element.attribute("version")}); } } return result; @@ -197,9 +204,14 @@ void UpdateInfoPlugin::checkForUpdatesFinished() Core::ICore::infoBar()->removeInfo(InstallUpdates); startUpdater(); }); - const QStringList updates = availableUpdates(document); + const QList updates = availableUpdates(document); info.setDetailsWidgetCreator([updates]() -> QWidget * { - const QString updateText = updates.join("
  • "); + const QString updateText = Utils::transform(updates, [](const Update &u) { + return u.version.isEmpty() + ? u.name + : tr("%1 (%2)", "Package name and version") + .arg(u.name, u.version); + }).join("
  • "); auto label = new QLabel; label->setText("

    " + tr("Available updates:") + "

    • " + updateText + "

    ");