diff options
author | Katja Marttila <katja.marttila@qt.io> | 2020-12-22 09:53:36 +0200 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2020-12-30 11:10:05 +0200 |
commit | 7be83635627ca1384862a8826de2d85979cdfc8e (patch) | |
tree | 5d25666643ae7de865f73b93ffa80bf3c97d594f /src/libs/kdtools | |
parent | a606c9915b8ff1d6001a83aa350400d6286706ff (diff) |
Allow disabling undo of GlobalSettings during uninstall
Task-number: QTIFW-1973
Change-Id: I89f15c8ed7d56c3e1bc72d3c740e9054363f9390
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src/libs/kdtools')
-rw-r--r-- | src/libs/kdtools/updateoperation.cpp | 34 | ||||
-rw-r--r-- | src/libs/kdtools/updateoperation.h | 2 |
2 files changed, 35 insertions, 1 deletions
diff --git a/src/libs/kdtools/updateoperation.cpp b/src/libs/kdtools/updateoperation.cpp index b884fa9fa..267cd8a80 100644 --- a/src/libs/kdtools/updateoperation.cpp +++ b/src/libs/kdtools/updateoperation.cpp @@ -190,7 +190,7 @@ QStringList UpdateOperation::arguments() const bool UpdateOperation::checkArgumentCount(int minArgCount, int maxArgCount, const QString &argDescription) { - const int argCount = arguments().count(); + const int argCount = parsePerformOperationArguments().count(); if (argCount < minArgCount || argCount > maxArgCount) { setError(InvalidArguments); QString countRange; @@ -226,6 +226,38 @@ bool UpdateOperation::checkArgumentCount(int argCount) return checkArgumentCount(argCount, argCount); } +/*! + Returns operation argument list without + \c UNDOOOPERATION arguments. +*/ +QStringList UpdateOperation::parsePerformOperationArguments() +{ + QStringList args; + int index = arguments().indexOf(QLatin1String("UNDOOPERATION")); + args = arguments().mid(0, index); + return args; +} + +/*! + Returns undo operation argument list. If the installation is + cancelled or failed, returns an empty list so that full undo + operation can be performed. +*/ +QStringList UpdateOperation::parseUndoOperationArguments() +{ + //Install has failed, allow a normal undo + if (m_core && (m_core->status() == QInstaller::PackageManagerCore::Canceled + || m_core->status() == QInstaller::PackageManagerCore::Failure)) { + return QStringList(); + } + int index = arguments().indexOf(QLatin1String("UNDOOPERATION")); + QStringList args; + if ((index != -1) && (arguments().length() > index + 1)) { + args = arguments().mid(index + 1); + } + return args; +} + struct StartsWith { StartsWith(const QString &searchTerm) diff --git a/src/libs/kdtools/updateoperation.h b/src/libs/kdtools/updateoperation.h index 45120ab95..b3642c78e 100644 --- a/src/libs/kdtools/updateoperation.h +++ b/src/libs/kdtools/updateoperation.h @@ -91,6 +91,8 @@ protected: bool deleteFileNowOrLater(const QString &file, QString *errorString = 0); bool checkArgumentCount(int minArgCount, int maxArgCount, const QString &argDescription = QString()); bool checkArgumentCount(int argCount); + QStringList parsePerformOperationArguments(); + QStringList parseUndoOperationArguments(); private: QString m_name; |