summaryrefslogtreecommitdiffstats
path: root/src/libs/kdtools
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2020-11-19 07:25:01 +0200
committerKatja Marttila <katja.marttila@qt.io>2020-12-07 07:36:36 +0200
commite82ab45ed71d9b807dc23eae559c759f4584b79d (patch)
tree1ff8a7379a7c0fbd1908783404babd9b83e4d414 /src/libs/kdtools
parentb43ab89a64c6484a8af4be424ab695b956d7f7bc (diff)
Add option to define operations in component.xml
Operations can from now on be declared also in component.xml. The operations are performed, backuped and rollbacked the same way as they would be when defined from scripting api. Task-number: QTIFW-507 Change-Id: Ia509219b94737136c3de25db0cb0c72076b48380 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src/libs/kdtools')
-rw-r--r--src/libs/kdtools/updatesinfo.cpp30
-rw-r--r--src/libs/kdtools/updatesinfodata_p.h2
2 files changed, 32 insertions, 0 deletions
diff --git a/src/libs/kdtools/updatesinfo.cpp b/src/libs/kdtools/updatesinfo.cpp
index 2d7e001ea..3119b6240 100644
--- a/src/libs/kdtools/updatesinfo.cpp
+++ b/src/libs/kdtools/updatesinfo.cpp
@@ -154,6 +154,10 @@ bool UpdatesInfoData::parsePackageUpdateElement(const QDomElement &updateE)
} else if (childE.tagName() == QLatin1String("UpdateFile")) {
info.data[QLatin1String("CompressedSize")] = childE.attribute(QLatin1String("CompressedSize"));
info.data[QLatin1String("UncompressedSize")] = childE.attribute(QLatin1String("UncompressedSize"));
+ } else if (childE.tagName() == QLatin1String("Operations")) {
+ const QDomNodeList operationNodes = childE.childNodes();
+ QVariant operationListVariant = parseOperations(childE.childNodes());
+ info.data.insert(QLatin1String("Operations"), operationListVariant);
} else {
info.data[childE.tagName()] = childE.text();
}
@@ -197,6 +201,32 @@ void UpdatesInfoData::processLocalizedTag(const QDomElement &childE, QHash<QStri
info[childE.tagName()] = childE.text();
}
+QVariant UpdatesInfoData::parseOperations(const QDomNodeList &operationNodes)
+{
+ QVariant operationListVariant;
+ QList<QPair<QString, QVariant>> operationsList;
+ for (int i = 0; i < operationNodes.count(); ++i) {
+ const QDomNode operationNode = operationNodes.at(i);
+ if (operationNode.nodeName() == QLatin1String("Operation")) {
+ const QDomNodeList argumentNodes = operationNode.childNodes();
+ QStringList attributes;
+ for (int i = 0; i < argumentNodes.count(); ++i) {
+ const QDomNode argumentNode = argumentNodes.at(i);
+ if (argumentNode.nodeName() == QLatin1String("Argument")) {
+ QDomElement argumentElement = argumentNode.toElement();
+ attributes.append(argumentElement.text());
+ }
+ }
+ QPair<QString, QVariant> pair;
+ pair.first = operationNode.toElement().attributeNode(QLatin1String("name")).value();
+ pair.second = attributes;
+ operationsList.append(pair);
+ }
+ }
+ operationListVariant.setValue(operationsList);
+ return operationListVariant;
+}
+
//
// UpdatesInfo
diff --git a/src/libs/kdtools/updatesinfodata_p.h b/src/libs/kdtools/updatesinfodata_p.h
index 69b004bc3..07da6fcf0 100644
--- a/src/libs/kdtools/updatesinfodata_p.h
+++ b/src/libs/kdtools/updatesinfodata_p.h
@@ -33,6 +33,7 @@
#include <QSharedData>
QT_FORWARD_DECLARE_CLASS(QDomElement)
+QT_FORWARD_DECLARE_CLASS(QDomNodeList)
namespace KDUpdater {
@@ -60,6 +61,7 @@ public:
private:
void processLocalizedTag(const QDomElement &childE, QHash<QString, QVariant> &info) const;
+ QVariant parseOperations(const QDomNodeList &operationNodes);
};
} // namespace KDUpdater