diff options
author | hjk <hjk@qt.io> | 2020-01-09 17:32:51 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2020-01-10 12:46:38 +0000 |
commit | 1eaf44a270dbc8ed3fb6aab24c7d267510acfd84 (patch) | |
tree | 60136b971fe2705d7008007965a0e0ed086e4468 | |
parent | 675c414b0799f6bed356d77f9f114578b19bfea7 (diff) |
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>
20 files changed, 45 insertions, 65 deletions
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp index eb9b7ad930..257d547f36 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp @@ -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}; }); diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h index 0a9671e8b8..1e6fa46fba 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h +++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h @@ -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(); }; diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 4865485b1e..8f5565f908 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -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: diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index b02204af49..a495d135e4 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -109,10 +109,8 @@ private: class CMakeProjectImporter; -class CMakeBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory +class CMakeBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory { - Q_OBJECT - public: CMakeBuildConfigurationFactory(); diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp index 00302f6d35..1cda2387f4 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp @@ -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 {}; diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp index a1714ef8a6..a5629ce2a1 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp @@ -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; diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h index 778cb98b3b..f2aa9e6dbd 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.h @@ -94,10 +94,8 @@ public: CompilationDatabaseEditorFactory(); }; -class CompilationDatabaseBuildConfigurationFactory - : public ProjectExplorer::BuildConfigurationFactory +class CompilationDatabaseBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory { - Q_OBJECT public: CompilationDatabaseBuildConfigurationFactory(); }; diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp index 3c04417c77..cab18f9082 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp @@ -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}; diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.h b/src/plugins/genericprojectmanager/genericbuildconfiguration.h index fbb3970128..32200199bf 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.h +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.h @@ -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(); }; diff --git a/src/plugins/nim/project/nimblebuildconfiguration.cpp b/src/plugins/nim/project/nimblebuildconfiguration.cpp index 4035589f14..336545c201 100644 --- a/src/plugins/nim/project/nimblebuildconfiguration.cpp +++ b/src/plugins/nim/project/nimblebuildconfiguration.cpp @@ -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")) }; }); } diff --git a/src/plugins/nim/project/nimblebuildconfiguration.h b/src/plugins/nim/project/nimblebuildconfiguration.h index 707e5cef21..2d3f0a93f3 100644 --- a/src/plugins/nim/project/nimblebuildconfiguration.h +++ b/src/plugins/nim/project/nimblebuildconfiguration.h @@ -48,12 +48,10 @@ private: BuildType m_buildType; }; -class NimbleBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory +class NimbleBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory { - Q_OBJECT - public: NimbleBuildConfigurationFactory(); }; -} +} // Nim diff --git a/src/plugins/nim/project/nimbuildconfiguration.cpp b/src/plugins/nim/project/nimbuildconfiguration.cpp index 82133cb1a0..29eeb31d1e 100644 --- a/src/plugins/nim/project/nimbuildconfiguration.cpp +++ b/src/plugins/nim/project/nimbuildconfiguration.cpp @@ -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")) }; }); } diff --git a/src/plugins/nim/project/nimbuildconfiguration.h b/src/plugins/nim/project/nimbuildconfiguration.h index 54fd0727ce..cd39e6e40d 100644 --- a/src/plugins/nim/project/nimbuildconfiguration.h +++ b/src/plugins/nim/project/nimbuildconfiguration.h @@ -52,12 +52,10 @@ private: }; -class NimBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory +class NimBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory { - Q_OBJECT - public: NimBuildConfigurationFactory(); }; -} +} // Nim diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index 95b53b11f6..00de9bb71e 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -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; } diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp index 0fedc5e88d..02c306c15e 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp @@ -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; diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h index cd303ab52e..c540acff73 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h @@ -95,10 +95,8 @@ private: QbsBuildSystem *m_buildSystem = nullptr; }; -class QbsBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory +class QbsBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory { - Q_OBJECT - public: QbsBuildConfigurationFactory(); diff --git a/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp b/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp index 9e30a86cad..01acfec13e 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp +++ b/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp @@ -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"; diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp index fdf0baf2aa..ca2680deec 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp @@ -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; diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h index 28cabf1693..c2e947127f 100644 --- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h +++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h @@ -153,8 +153,6 @@ private: class QMAKEPROJECTMANAGER_EXPORT QmakeBuildConfigurationFactory : public ProjectExplorer::BuildConfigurationFactory { - Q_OBJECT - public: QmakeBuildConfigurationFactory(); diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectimporter.cpp b/src/plugins/qmakeprojectmanager/qmakeprojectimporter.cpp index 2af28afa03..2a16f1e7fd 100644 --- a/src/plugins/qmakeprojectmanager/qmakeprojectimporter.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeprojectimporter.cpp @@ -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 {}; |