From e82ab45ed71d9b807dc23eae559c759f4584b79d Mon Sep 17 00:00:00 2001 From: Katja Marttila Date: Thu, 19 Nov 2020 07:25:01 +0200 Subject: 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 Reviewed-by: Arttu Tarkiainen --- src/libs/kdtools/updatesinfo.cpp | 30 ++++++++++++++++++++++++++++++ src/libs/kdtools/updatesinfodata_p.h | 2 ++ 2 files changed, 32 insertions(+) (limited to 'src/libs/kdtools') 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> 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 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 QT_FORWARD_DECLARE_CLASS(QDomElement) +QT_FORWARD_DECLARE_CLASS(QDomNodeList) namespace KDUpdater { @@ -60,6 +61,7 @@ public: private: void processLocalizedTag(const QDomElement &childE, QHash &info) const; + QVariant parseOperations(const QDomNodeList &operationNodes); }; } // namespace KDUpdater -- cgit v1.2.3