From 7ffc1f53491595e6fc3389d569a6d57fb5a9b23f Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 8 Aug 2019 14:40:42 +0200 Subject: [PATCH] UpdateInfo: Show details about available updates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTCREATORBUG-22817 Change-Id: I6b4d54bd89d6343e9f8ae13304ef013db9a786b6 Reviewed-by: André Hartmann --- src/plugins/updateinfo/updateinfoplugin.cpp | 26 +++++++++++++++++++++ 1 file changed, 26 insertions(+) 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("
  • "); + auto label = new QLabel; + label->setText("

    " + tr("Available Updates:") + "

    • " + updateText + + "

    "); + label->setContentsMargins(0, 0, 0, 8); + return label; + }); Core::ICore::infoBar()->unsuppressInfo(InstallUpdates); Core::ICore::infoBar()->addInfo(info); } else {