BuildConfigurationFactory: Introduce priorities

Introduce priorities for build configuration factories. This way
plugins can register specialized build configuration factories, that
e.g. can provide additional build steps.

A negative priority signifies that a factory is not prepared to
handle a request, the default build configuration factory shipped by
the build system plugin will report a priority of 0. Add 100 to that
for each specialization you add (e.g. a remote linux buildconfiguration
factory would report 100, a specialization of that for mer will
should report 200, etc.).

Change-Id: I141a7a5a79166afdb7657d46eb7e86bd18d3abf6
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Reviewed-by: Michal Klocek <michal.klocek@digia.com>
This commit is contained in:
Tobias Hunger
2013-07-24 12:42:24 +02:00
committed by Michal Klocek
parent 321ac6cc51
commit ac6a3fd5c7
12 changed files with 58 additions and 68 deletions

View File

@@ -254,15 +254,14 @@ ProjectExplorer::BuildInfo *QbsBuildConfigurationFactory::createBuildInfo(const
return info;
}
bool QbsBuildConfigurationFactory::canCreate(const ProjectExplorer::Target *parent) const
int QbsBuildConfigurationFactory::priority(const ProjectExplorer::Target *parent) const
{
return canHandle(parent);
return canHandle(parent) ? 0 : -1;
}
QList<ProjectExplorer::BuildInfo *> QbsBuildConfigurationFactory::availableBuilds(const ProjectExplorer::Target *parent) const
{
QList<ProjectExplorer::BuildInfo *> result;
QTC_ASSERT(canCreate(parent), return result);
const Utils::FileName buildDirectory = QbsProject::defaultBuildDirectory(parent->project()->projectFilePath());
@@ -273,16 +272,15 @@ QList<ProjectExplorer::BuildInfo *> QbsBuildConfigurationFactory::availableBuild
return result;
}
bool QbsBuildConfigurationFactory::canSetup(const ProjectExplorer::Kit *k, const QString &projectPath) const
int QbsBuildConfigurationFactory::priority(const ProjectExplorer::Kit *k, const QString &projectPath) const
{
return k && Core::MimeDatabase::findByFile(QFileInfo(projectPath))
.matchesType(QLatin1String(Constants::MIME_TYPE));
return (k && Core::ICore::findByFile(QFileInfo(projectPath))
.matchesType(QLatin1String(Constants::MIME_TYPE))) ? 0 : -1;
}
QList<ProjectExplorer::BuildInfo *> QbsBuildConfigurationFactory::availableSetups(const ProjectExplorer::Kit *k, const QString &projectPath) const
{
QList<ProjectExplorer::BuildInfo *> result;
QTC_ASSERT(canSetup(k, projectPath), return result);
const Utils::FileName buildDirectory = QbsProject::defaultBuildDirectory(projectPath);
@@ -302,7 +300,6 @@ QList<ProjectExplorer::BuildInfo *> QbsBuildConfigurationFactory::availableSetup
ProjectExplorer::BuildConfiguration *QbsBuildConfigurationFactory::create(ProjectExplorer::Target *parent,
const ProjectExplorer::BuildInfo *info) const
{
QTC_ASSERT(canCreate(parent), return 0);
QTC_ASSERT(info->factory() == this, return 0);
QTC_ASSERT(info->kitId == parent->kit()->id(), return 0);
QTC_ASSERT(!info->displayName.isEmpty(), return 0);