From 74e57329aa02f73479ce8cf147b5102427f9d511 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 10 Mar 2025 16:05:30 +0100 Subject: [PATCH] PE: Let build config factories handle multiple project mime types Change-Id: I95ee363357da9f210672c42b5c6be3378fa51d9a Reviewed-by: Jaime Resano Reviewed-by: hjk --- .../projectexplorer/buildconfiguration.cpp | 16 ++++++++++++---- src/plugins/projectexplorer/buildconfiguration.h | 3 ++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index 1fd6b16775f..5a851e9724a 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -1270,9 +1270,12 @@ BuildConfigurationFactory *BuildConfigurationFactory::find(const Kit *k, const F QTC_ASSERT(k, return nullptr); const Utils::Id deviceType = RunDeviceTypeKitAspect::deviceTypeId(k); for (BuildConfigurationFactory *factory : std::as_const(g_buildConfigurationFactories)) { - if (Utils::mimeTypeForFile(projectPath).matchesName(factory->m_supportedProjectMimeTypeName) - && factory->supportsTargetDeviceType(deviceType)) - return factory; + if (!factory->supportsTargetDeviceType(deviceType)) + continue; + for (const QString &mimeType : std::as_const(factory->m_supportedProjectMimeTypeNames)) { + if (Utils::mimeTypeForFile(projectPath).matchesName(mimeType)) + return factory; + } } return nullptr; } @@ -1294,7 +1297,12 @@ void BuildConfigurationFactory::setSupportedProjectType(Utils::Id id) void BuildConfigurationFactory::setSupportedProjectMimeTypeName(const QString &mimeTypeName) { - m_supportedProjectMimeTypeName = mimeTypeName; + setSupportedProjectMimeTypeNames({mimeTypeName}); +} + +void BuildConfigurationFactory::setSupportedProjectMimeTypeNames(const QStringList &mimeTypeNames) +{ + m_supportedProjectMimeTypeNames = mimeTypeNames; } void BuildConfigurationFactory::addSupportedTargetDeviceType(Utils::Id id) diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index 200cb5fd44c..406e389499a 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -210,6 +210,7 @@ protected: bool supportsTargetDeviceType(Utils::Id id) const; void setSupportedProjectType(Utils::Id id); void setSupportedProjectMimeTypeName(const QString &mimeTypeName); + void setSupportedProjectMimeTypeNames(const QStringList &mimeTypeNames); void addSupportedTargetDeviceType(Utils::Id id); void setDefaultDisplayName(const QString &defaultDisplayName); @@ -229,7 +230,7 @@ private: Utils::Id m_buildConfigId; Utils::Id m_supportedProjectType; QList m_supportedTargetDeviceTypes; - QString m_supportedProjectMimeTypeName; + QStringList m_supportedProjectMimeTypeNames; IssueReporter m_issueReporter; BuildGenerator m_buildGenerator; };