aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2020-09-24 14:39:46 +0200
committerEike Ziller <eike.ziller@qt.io>2020-09-29 05:48:28 +0000
commit3ca4544869531830805fc2080bffda39f805fcb9 (patch)
treef0d1b902f876b84e019494ce6b4b07cca2bcdd14
parent4c1c11b7b62ef231a2811d5ae94f7c36716230e0 (diff)
UpdateInfo: Include package versions in update notification
Fixes: QTCREATORBUG-24692 Change-Id: I5e3327b92b533dd21eabbd14402b81c1c5ad8d92 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
-rw-r--r--src/plugins/updateinfo/updateinfoplugin.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/plugins/updateinfo/updateinfoplugin.cpp b/src/plugins/updateinfo/updateinfoplugin.cpp
index 0abba718ef..1ca096b07f 100644
--- a/src/plugins/updateinfo/updateinfoplugin.cpp
+++ b/src/plugins/updateinfo/updateinfoplugin.cpp
@@ -32,6 +32,7 @@
#include <coreplugin/icore.h>
#include <coreplugin/settingsdatabase.h>
#include <coreplugin/shellcommand.h>
+#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/infobar.h>
#include <utils/synchronousprocess.h>
@@ -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<Update> availableUpdates(const QDomDocument &document)
{
if (document.isNull() || !document.firstChildElement().hasChildNodes())
return {};
- QStringList result;
+ QList<Update> 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<Update> updates = availableUpdates(document);
info.setDetailsWidgetCreator([updates]() -> QWidget * {
- const QString updateText = updates.join("</li><li>");
+ 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("</li><li>");
auto label = new QLabel;
label->setText("<qt><p>" + tr("Available updates:") + "<ul><li>" + updateText
+ "</li></ul></p></qt>");