PE: Let build config factories handle multiple project mime types

Change-Id: I95ee363357da9f210672c42b5c6be3378fa51d9a
Reviewed-by: Jaime Resano <Jaime.RESANO-AISA@qt.io>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Kandeler
2025-03-10 16:05:30 +01:00
parent 896739d136
commit 74e57329aa
2 changed files with 14 additions and 5 deletions

View File

@@ -1270,10 +1270,13 @@ 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))
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)

View File

@@ -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<Utils::Id> m_supportedTargetDeviceTypes;
QString m_supportedProjectMimeTypeName;
QStringList m_supportedProjectMimeTypeNames;
IssueReporter m_issueReporter;
BuildGenerator m_buildGenerator;
};