forked from qt-creator/qt-creator
ProjectExplorer: De-QObject-ify BuildConfigurationFactories
The QObject was not heavily used. Object name was for debugging only, translation context can be taken from the corresponding BuildConfiguration objects, the qobject_casts in the three big importers are replaced by dynamic_cast, which is good enough in that context. Take the opportunity to re-use translations from base BuildConfiguration for the common cases and sprinkle in some 'final'. Change-Id: I8e9727c98c6e943cb333556861c24e701c2bdf45 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -78,13 +78,13 @@ AutotoolsBuildConfigurationFactory::AutotoolsBuildConfigurationFactory()
|
||||
|
||||
setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) {
|
||||
BuildInfo info(this);
|
||||
info.typeName = tr("Build");
|
||||
info.typeName = BuildConfiguration::tr("Build");
|
||||
info.buildDirectory = forSetup
|
||||
? FilePath::fromString(projectPath.toFileInfo().absolutePath()) : projectPath;
|
||||
info.kitId = k->id();
|
||||
if (forSetup) {
|
||||
//: The name of the build configuration created by default for a autotools project.
|
||||
info.displayName = tr("Default");
|
||||
info.displayName = BuildConfiguration::tr("Default");
|
||||
}
|
||||
return QList<BuildInfo>{info};
|
||||
});
|
||||
|
||||
@@ -40,10 +40,8 @@ class AutotoolsBuildConfiguration : public ProjectExplorer::BuildConfiguration
|
||||
AutotoolsBuildConfiguration(ProjectExplorer::Target *target, Core::Id id);
|
||||
};
|
||||
|
||||
class AutotoolsBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory
|
||||
class AutotoolsBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
AutotoolsBuildConfigurationFactory();
|
||||
};
|
||||
|
||||
@@ -467,27 +467,27 @@ BuildInfo CMakeBuildConfigurationFactory::createBuildInfo(const Kit *k,
|
||||
switch (buildType) {
|
||||
case BuildTypeNone:
|
||||
info.typeName = "Build";
|
||||
info.displayName = tr("Build");
|
||||
info.displayName = BuildConfiguration::tr("Build");
|
||||
info.buildType = BuildConfiguration::Unknown;
|
||||
break;
|
||||
case BuildTypeDebug:
|
||||
info.typeName = "Debug";
|
||||
info.displayName = tr("Debug");
|
||||
info.displayName = BuildConfiguration::tr("Debug");
|
||||
info.buildType = BuildConfiguration::Debug;
|
||||
break;
|
||||
case BuildTypeRelease:
|
||||
info.typeName = "Release";
|
||||
info.displayName = tr("Release");
|
||||
info.displayName = BuildConfiguration::tr("Release");
|
||||
info.buildType = BuildConfiguration::Release;
|
||||
break;
|
||||
case BuildTypeMinSizeRel:
|
||||
info.typeName = "MinSizeRel";
|
||||
info.displayName = tr("Minimum Size Release");
|
||||
info.displayName = CMakeBuildConfiguration::tr("Minimum Size Release");
|
||||
info.buildType = BuildConfiguration::Release;
|
||||
break;
|
||||
case BuildTypeRelWithDebInfo:
|
||||
info.typeName = "RelWithDebInfo";
|
||||
info.displayName = tr("Release with Debug Information");
|
||||
info.displayName = CMakeBuildConfiguration::tr("Release with Debug Information");
|
||||
info.buildType = BuildConfiguration::Profile;
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -109,10 +109,8 @@ private:
|
||||
|
||||
class CMakeProjectImporter;
|
||||
|
||||
class CMakeBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory
|
||||
class CMakeBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
CMakeBuildConfigurationFactory();
|
||||
|
||||
|
||||
@@ -338,7 +338,7 @@ Kit *CMakeProjectImporter::createKit(void *directoryData) const
|
||||
const QList<BuildInfo> CMakeProjectImporter::buildInfoListForKit(const Kit *k, void *directoryData) const
|
||||
{
|
||||
auto data = static_cast<const DirectoryData *>(directoryData);
|
||||
auto factory = qobject_cast<CMakeBuildConfigurationFactory *>(
|
||||
auto factory = dynamic_cast<CMakeBuildConfigurationFactory *>(
|
||||
BuildConfigurationFactory::find(k, projectFilePath()));
|
||||
if (!factory)
|
||||
return {};
|
||||
|
||||
@@ -540,7 +540,7 @@ CompilationDatabaseBuildConfigurationFactory::CompilationDatabaseBuildConfigurat
|
||||
setSupportedProjectMimeTypeName(Constants::COMPILATIONDATABASEMIMETYPE);
|
||||
|
||||
setBuildGenerator([this](const Kit *kit, const FilePath &projectPath, bool) {
|
||||
const QString name = tr("Release");
|
||||
const QString name = BuildConfiguration::tr("Release");
|
||||
ProjectExplorer::BuildInfo info(this);
|
||||
info.typeName = name;
|
||||
info.displayName = name;
|
||||
|
||||
@@ -94,10 +94,8 @@ public:
|
||||
CompilationDatabaseEditorFactory();
|
||||
};
|
||||
|
||||
class CompilationDatabaseBuildConfigurationFactory
|
||||
: public ProjectExplorer::BuildConfigurationFactory
|
||||
class CompilationDatabaseBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
CompilationDatabaseBuildConfigurationFactory();
|
||||
};
|
||||
|
||||
@@ -65,9 +65,7 @@ GenericBuildConfiguration::GenericBuildConfiguration(Target *parent, Core::Id id
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
\class GenericBuildConfigurationFactory
|
||||
*/
|
||||
// GenericBuildConfigurationFactory
|
||||
|
||||
GenericBuildConfigurationFactory::GenericBuildConfigurationFactory()
|
||||
{
|
||||
@@ -79,13 +77,13 @@ GenericBuildConfigurationFactory::GenericBuildConfigurationFactory()
|
||||
|
||||
setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) {
|
||||
BuildInfo info(this);
|
||||
info.typeName = tr("Build");
|
||||
info.typeName = BuildConfiguration::tr("Build");
|
||||
info.buildDirectory = forSetup ? Project::projectDirectory(projectPath) : projectPath;
|
||||
info.kitId = k->id();
|
||||
|
||||
if (forSetup) {
|
||||
//: The name of the build configuration created by default for a generic project.
|
||||
info.displayName = tr("Default");
|
||||
info.displayName = BuildConfiguration::tr("Default");
|
||||
}
|
||||
|
||||
return QList<BuildInfo>{info};
|
||||
|
||||
@@ -40,10 +40,8 @@ class GenericBuildConfiguration : public ProjectExplorer::BuildConfiguration
|
||||
void addToEnvironment(Utils::Environment &env) const final;
|
||||
};
|
||||
|
||||
class GenericBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory
|
||||
class GenericBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
GenericBuildConfigurationFactory();
|
||||
};
|
||||
|
||||
@@ -99,8 +99,8 @@ NimbleBuildConfigurationFactory::NimbleBuildConfigurationFactory()
|
||||
return info;
|
||||
};
|
||||
return QList<BuildInfo>{
|
||||
oneBuild(BuildConfiguration::Debug, tr("Debug")),
|
||||
oneBuild(BuildConfiguration::Release, tr("Release"))
|
||||
oneBuild(BuildConfiguration::Debug, BuildConfiguration::tr("Debug")),
|
||||
oneBuild(BuildConfiguration::Release, BuildConfiguration::tr("Release"))
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
@@ -48,12 +48,10 @@ private:
|
||||
BuildType m_buildType;
|
||||
};
|
||||
|
||||
class NimbleBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory
|
||||
class NimbleBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
NimbleBuildConfigurationFactory();
|
||||
};
|
||||
|
||||
}
|
||||
} // Nim
|
||||
|
||||
@@ -148,8 +148,8 @@ NimBuildConfigurationFactory::NimBuildConfigurationFactory()
|
||||
return info;
|
||||
};
|
||||
return QList<BuildInfo>{
|
||||
oneBuild(BuildConfiguration::Debug, tr("Debug")),
|
||||
oneBuild(BuildConfiguration::Release, tr("Release"))
|
||||
oneBuild(BuildConfiguration::Debug, BuildConfiguration::tr("Debug")),
|
||||
oneBuild(BuildConfiguration::Release, BuildConfiguration::tr("Release"))
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
@@ -52,12 +52,10 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class NimBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory
|
||||
class NimBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
NimBuildConfigurationFactory();
|
||||
};
|
||||
|
||||
}
|
||||
} // Nim
|
||||
|
||||
@@ -132,13 +132,14 @@ private:
|
||||
Internal::BuildConfigurationPrivate *d = nullptr;
|
||||
};
|
||||
|
||||
class PROJECTEXPLORER_EXPORT BuildConfigurationFactory : public QObject
|
||||
class PROJECTEXPLORER_EXPORT BuildConfigurationFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
protected:
|
||||
BuildConfigurationFactory();
|
||||
~BuildConfigurationFactory() override;
|
||||
BuildConfigurationFactory(const BuildConfigurationFactory &) = delete;
|
||||
BuildConfigurationFactory &operator=(const BuildConfigurationFactory &) = delete;
|
||||
|
||||
virtual ~BuildConfigurationFactory(); // Needed for dynamic_casts in importers.
|
||||
|
||||
public:
|
||||
// List of build information that can be used to create a new build configuration via
|
||||
@@ -178,7 +179,6 @@ protected:
|
||||
template <class BuildConfig>
|
||||
void registerBuildConfiguration(Core::Id buildConfigId)
|
||||
{
|
||||
setObjectName(buildConfigId.toString() + "BuildConfigurationFactory");
|
||||
m_creator = [buildConfigId](Target *t) { return new BuildConfig(t, buildConfigId); };
|
||||
m_buildConfigId = buildConfigId;
|
||||
}
|
||||
|
||||
@@ -430,20 +430,18 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory()
|
||||
|
||||
BuildInfo info = createBuildInfo(k, BuildConfiguration::Debug);
|
||||
//: The name of the debug build configuration created by default for a qbs project.
|
||||
info.displayName = tr("Debug");
|
||||
info.displayName = BuildConfiguration::tr("Debug");
|
||||
//: Non-ASCII characters in directory suffix may cause build issues.
|
||||
info.buildDirectory
|
||||
= defaultBuildDirectory(projectPath, k, tr("Debug", "Shadow build directory suffix"),
|
||||
info.buildType);
|
||||
const QString dbg = QbsBuildConfiguration::tr("Debug", "Shadow build directory suffix");
|
||||
info.buildDirectory = defaultBuildDirectory(projectPath, k, dbg, info.buildType);
|
||||
result << info;
|
||||
|
||||
info = createBuildInfo(k, BuildConfiguration::Release);
|
||||
//: The name of the release build configuration created by default for a qbs project.
|
||||
info.displayName = tr("Release");
|
||||
info.displayName = BuildConfiguration::tr("Release");
|
||||
//: Non-ASCII characters in directory suffix may cause build issues.
|
||||
info.buildDirectory
|
||||
= defaultBuildDirectory(projectPath, k, tr("Release", "Shadow build directory suffix"),
|
||||
info.buildType);
|
||||
const QString rel = QbsBuildConfiguration::tr("Release", "Shadow build directory suffix");
|
||||
info.buildDirectory = defaultBuildDirectory(projectPath, k, rel, info.buildType);
|
||||
result << info;
|
||||
|
||||
} else {
|
||||
@@ -462,7 +460,7 @@ BuildInfo QbsBuildConfigurationFactory::createBuildInfo(const Kit *k,
|
||||
BuildInfo info(this);
|
||||
info.kitId = k->id();
|
||||
info.buildType = type;
|
||||
info.typeName = tr("Build");
|
||||
info.typeName = BuildConfiguration::tr("Build");
|
||||
QVariantMap config;
|
||||
config.insert("configName", type == BuildConfiguration::Debug ? "Debug" : "Release");
|
||||
info.extraInfo = config;
|
||||
|
||||
@@ -95,10 +95,8 @@ private:
|
||||
QbsBuildSystem *m_buildSystem = nullptr;
|
||||
};
|
||||
|
||||
class QbsBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory
|
||||
class QbsBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QbsBuildConfigurationFactory();
|
||||
|
||||
|
||||
@@ -221,7 +221,7 @@ Kit *QbsProjectImporter::createKit(void *directoryData) const
|
||||
const QList<BuildInfo> QbsProjectImporter::buildInfoListForKit(const Kit *k, void *directoryData) const
|
||||
{
|
||||
qCDebug(qbsPmLog) << "creating build info for kit" << k->displayName();
|
||||
const auto factory = qobject_cast<QbsBuildConfigurationFactory *>(
|
||||
const auto factory = dynamic_cast<QbsBuildConfigurationFactory *>(
|
||||
BuildConfigurationFactory::find(k, projectFilePath()));
|
||||
if (!factory) {
|
||||
qCDebug(qbsPmLog) << "no build config factory found";
|
||||
|
||||
@@ -750,9 +750,9 @@ BuildInfo QmakeBuildConfigurationFactory::createBuildInfo(const Kit *k,
|
||||
|
||||
if (type == BuildConfiguration::Release) {
|
||||
//: The name of the release build configuration created by default for a qmake project.
|
||||
info.displayName = tr("Release");
|
||||
info.displayName = BuildConfiguration::tr("Release");
|
||||
//: Non-ASCII characters in directory suffix may cause build issues.
|
||||
suffix = tr("Release", "Shadow build directory suffix");
|
||||
suffix = QmakeBuildConfiguration::tr("Release", "Shadow build directory suffix");
|
||||
if (settings.qtQuickCompiler == TriState::Default) {
|
||||
if (version && version->isQtQuickCompilerSupported())
|
||||
extraInfo.config.useQtQuickCompiler = TriState::Enabled;
|
||||
@@ -760,14 +760,14 @@ BuildInfo QmakeBuildConfigurationFactory::createBuildInfo(const Kit *k,
|
||||
} else {
|
||||
if (type == BuildConfiguration::Debug) {
|
||||
//: The name of the debug build configuration created by default for a qmake project.
|
||||
info.displayName = tr("Debug");
|
||||
info.displayName = BuildConfiguration::tr("Debug");
|
||||
//: Non-ASCII characters in directory suffix may cause build issues.
|
||||
suffix = tr("Debug", "Shadow build directory suffix");
|
||||
suffix = QmakeBuildConfiguration::tr("Debug", "Shadow build directory suffix");
|
||||
} else if (type == BuildConfiguration::Profile) {
|
||||
//: The name of the profile build configuration created by default for a qmake project.
|
||||
info.displayName = tr("Profile");
|
||||
info.displayName = BuildConfiguration::tr("Profile");
|
||||
//: Non-ASCII characters in directory suffix may cause build issues.
|
||||
suffix = tr("Profile", "Shadow build directory suffix");
|
||||
suffix = QmakeBuildConfiguration::tr("Profile", "Shadow build directory suffix");
|
||||
if (settings.separateDebugInfo == TriState::Default)
|
||||
extraInfo.config.separateDebugInfo = TriState::Enabled;
|
||||
|
||||
|
||||
@@ -153,8 +153,6 @@ private:
|
||||
|
||||
class QMAKEPROJECTMANAGER_EXPORT QmakeBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QmakeBuildConfigurationFactory();
|
||||
|
||||
|
||||
@@ -235,7 +235,7 @@ Kit *QmakeProjectImporter::createKit(void *directoryData) const
|
||||
const QList<BuildInfo> QmakeProjectImporter::buildInfoListForKit(const Kit *k, void *directoryData) const
|
||||
{
|
||||
auto *data = static_cast<DirectoryData *>(directoryData);
|
||||
auto factory = qobject_cast<QmakeBuildConfigurationFactory *>(
|
||||
auto factory = dynamic_cast<QmakeBuildConfigurationFactory *>(
|
||||
BuildConfigurationFactory::find(k, projectFilePath()));
|
||||
if (!factory)
|
||||
return {};
|
||||
|
||||
Reference in New Issue
Block a user