From 6fae98477bdcd72afdec7e31a8fee2c57fbc623a Mon Sep 17 00:00:00 2001 From: Rainer Keller Date: Wed, 19 Oct 2022 11:15:16 +0200 Subject: [PATCH] McuSupport: Fix invalid regular expression is considered valid If a match was empty it was the same case as if no regular expression was set. Adding a new case that is triggered when there is a version detector but it returns an empty version string. Change-Id: I26c2f803b2c6a95b85d6b781085bfa9cd4b51975 Reviewed-by: Christian Stenger Reviewed-by: --- src/plugins/mcusupport/mcuabstractpackage.h | 1 + src/plugins/mcusupport/mcupackage.cpp | 26 +++++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/plugins/mcusupport/mcuabstractpackage.h b/src/plugins/mcusupport/mcuabstractpackage.h index e4240a41c5b..7f2de3b0514 100644 --- a/src/plugins/mcusupport/mcuabstractpackage.h +++ b/src/plugins/mcusupport/mcuabstractpackage.h @@ -22,6 +22,7 @@ public: InvalidPath, ValidPathInvalidPackage, ValidPackageMismatchedVersion, + ValidPackageVersionNotDetected, ValidPackage }; diff --git a/src/plugins/mcusupport/mcupackage.cpp b/src/plugins/mcusupport/mcupackage.cpp index 051ce8d642e..d79fe8c8a8f 100644 --- a/src/plugins/mcusupport/mcupackage.cpp +++ b/src/plugins/mcusupport/mcupackage.cpp @@ -132,14 +132,22 @@ void McuPackage::updateStatus() m_detectedVersion = validPath && validPackage && m_versionDetector ? m_versionDetector->parseVersion(basePath()) : QString(); - const bool validVersion = m_detectedVersion.isEmpty() || m_versions.isEmpty() - || m_versions.contains(m_detectedVersion); - m_status = validPath ? (validPackage ? (validVersion ? Status::ValidPackage - : Status::ValidPackageMismatchedVersion) - : Status::ValidPathInvalidPackage) - : m_path.isEmpty() ? Status::EmptyPath - : Status::InvalidPath; + const bool validVersion = m_versions.isEmpty() || m_versions.contains(m_detectedVersion); + + if (m_path.isEmpty()) { + m_status = Status::EmptyPath; + } else if (!validPath) { + m_status = Status::InvalidPath; + } else if (!validPackage) { + m_status = Status::ValidPathInvalidPackage; + } else if (m_versionDetector && m_detectedVersion.isEmpty()) { + m_status = Status::ValidPackageVersionNotDetected; + } else if (!validVersion) { + m_status = Status::ValidPackageMismatchedVersion; + } else { + m_status = Status::ValidPackage; + } emit statusChanged(); } @@ -161,6 +169,7 @@ void McuPackage::updateStatusUi() m_infoLabel->setType(InfoLabel::Ok); break; case Status::ValidPackageMismatchedVersion: + case Status::ValidPackageVersionNotDetected: m_infoLabel->setType(InfoLabel::Warning); break; default: @@ -215,6 +224,9 @@ QString McuPackage::statusText() const ? tr("Path is empty.") : tr("Path is empty, %1 not found.").arg(displayRequiredPath); break; + case Status::ValidPackageVersionNotDetected: + response = tr("Path %1 exists, but version could not be detected.").arg(displayPackagePath); + break; } return response; }