From 8059bf62049d730fff13aa1764fe2df6f8cacf91 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 16 Feb 2018 12:26:58 +0100 Subject: [PATCH] Project: Make setRequiredKitPredicate private Make calling Project::supportsKit(...) the default implementation. Change-Id: I0e47972097e760e2ff3be229afb85eff839146b8 Reviewed-by: hjk --- src/plugins/cmakeprojectmanager/cmakeproject.cpp | 2 +- src/plugins/cmakeprojectmanager/cmakeproject.h | 2 +- src/plugins/nim/project/nimproject.cpp | 2 +- src/plugins/nim/project/nimproject.h | 8 ++++---- src/plugins/projectexplorer/project.cpp | 4 +++- src/plugins/projectexplorer/project.h | 8 ++++++-- src/plugins/qmakeprojectmanager/qmakeproject.cpp | 3 +-- src/plugins/qmakeprojectmanager/qmakeproject.h | 2 +- src/plugins/qmlprojectmanager/qmlproject.cpp | 2 +- src/plugins/qmlprojectmanager/qmlproject.h | 2 +- 10 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 64cf50b6e4d..cd29127f6a7 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -376,7 +376,7 @@ bool CMakeProject::knowsAllBuildExecutables() const return false; } -bool CMakeProject::supportsKit(Kit *k, QString *errorMessage) const +bool CMakeProject::supportsKit(const Kit *k, QString *errorMessage) const { if (!CMakeKitInformation::cmakeTool(k)) { if (errorMessage) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index a747504740b..c8e80df7b14 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -72,7 +72,7 @@ public: bool requiresTargetPanel() const final; bool knowsAllBuildExecutables() const final; - bool supportsKit(ProjectExplorer::Kit *k, QString *errorMessage = 0) const final; + bool supportsKit(const ProjectExplorer::Kit *k, QString *errorMessage = nullptr) const final; void runCMake(); void runCMakeAndScanProjectTree(); diff --git a/src/plugins/nim/project/nimproject.cpp b/src/plugins/nim/project/nimproject.cpp index 47bd87ee12b..82a412e41bd 100644 --- a/src/plugins/nim/project/nimproject.cpp +++ b/src/plugins/nim/project/nimproject.cpp @@ -159,7 +159,7 @@ void NimProject::updateProject() emitParsingFinished(true); } -bool NimProject::supportsKit(Kit *k, QString *errorMessage) const +bool NimProject::supportsKit(const Kit *k, QString *errorMessage) const { auto tc = dynamic_cast(ToolChainKitInformation::toolChain(k, Constants::C_NIMLANGUAGE_ID)); if (!tc) { diff --git a/src/plugins/nim/project/nimproject.h b/src/plugins/nim/project/nimproject.h index 50e03a3fa31..5311b54ef0b 100644 --- a/src/plugins/nim/project/nimproject.h +++ b/src/plugins/nim/project/nimproject.h @@ -41,17 +41,17 @@ class NimProject : public ProjectExplorer::Project public: explicit NimProject(const Utils::FileName &fileName); - bool needsConfiguration() const override; - bool supportsKit(ProjectExplorer::Kit *k, QString *errorMessage) const override; + bool needsConfiguration() const final; + bool supportsKit(const ProjectExplorer::Kit *k, QString *errorMessage) const final; Utils::FileNameList nimFiles() const; - QVariantMap toMap() const override; + QVariantMap toMap() const final; bool addFiles(const QStringList &filePaths); bool removeFiles(const QStringList &filePaths); bool renameFile(const QString &filePath, const QString &newFilePath); protected: - RestoreResult fromMap(const QVariantMap &map, QString *errorMessage) override; + RestoreResult fromMap(const QVariantMap &map, QString *errorMessage) final; private: void scheduleProjectScan(); diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index f2704e6119e..abcd9e9a018 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -200,6 +200,8 @@ Project::Project(const QString &mimeType, const Utils::FileName &fileName, // Only set up containernode after d is set so that it will find the project directory! d->m_containerNode = std::make_unique(this); + + setRequiredKitPredicate([this](const Kit *k) { return supportsKit(k); }); } Project::~Project() @@ -329,7 +331,7 @@ Target *Project::target(Kit *k) const return Utils::findOrDefault(d->m_targets, Utils::equal(&Target::kit, k)); } -bool Project::supportsKit(Kit *k, QString *errorMessage) const +bool Project::supportsKit(const Kit *k, QString *errorMessage) const { Q_UNUSED(k); Q_UNUSED(errorMessage); diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index 28b50551895..4e8864222a7 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -123,7 +123,7 @@ public: Target *activeTarget() const; Target *target(Core::Id id) const; Target *target(Kit *k) const; - virtual bool supportsKit(Kit *k, QString *errorMessage = nullptr) const; + virtual bool supportsKit(const Kit *k, QString *errorMessage = nullptr) const; Target *createTarget(Kit *k); static bool copySteps(Target *sourceTarget, Target *newTarget); @@ -230,7 +230,8 @@ protected: void emitParsingFinished(bool success); void setDisplayName(const QString &name); - void setRequiredKitPredicate(const Kit::Predicate &predicate); + // Used to pre-check kits in the TargetSetupPage. RequiredKitPredicate + // is used to select kits available in the TargetSetupPage void setPreferredKitPredicate(const Kit::Predicate &predicate); void setId(Core::Id id); @@ -242,6 +243,9 @@ protected: virtual void projectLoaded(); // Called when the project is fully loaded. private: + // The predicate used to select kits available in TargetSetupPage. + void setRequiredKitPredicate(const Kit::Predicate &predicate); + void handleSubTreeChanged(FolderNode *node); void setActiveTarget(Target *target); ProjectPrivate *d; diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 84c335b0635..eece4ecc84c 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -168,7 +168,6 @@ QmakeProject::QmakeProject(const FileName &fileName) : s_projects.append(this); setId(Constants::QMAKEPROJECT_ID); setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); - setRequiredKitPredicate(QtSupport::QtKitInformation::qtVersionPredicate()); setDisplayName(fileName.toFileInfo().completeBaseName()); const QTextCodec *codec = Core::EditorManager::defaultTextCodec(); @@ -589,7 +588,7 @@ void QmakeProject::buildFinished(bool success) m_qmakeVfs->invalidateContents(); } -bool QmakeProject::supportsKit(Kit *k, QString *errorMessage) const +bool QmakeProject::supportsKit(const Kit *k, QString *errorMessage) const { QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(k); if (!version && errorMessage) diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h index acb45f1161f..743be56ce7c 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.h +++ b/src/plugins/qmakeprojectmanager/qmakeproject.h @@ -61,7 +61,7 @@ public: QmakeProFile *rootProFile() const; - bool supportsKit(ProjectExplorer::Kit *k, QString *errorMesage) const final; + bool supportsKit(const ProjectExplorer::Kit *k, QString *errorMesage) const final; QmakeProFileNode *rootProjectNode() const final; diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 471ef4a13b5..cd943af1418 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -266,7 +266,7 @@ void QmlProject::refreshTargetDirectory() updateDeploymentData(target); } -bool QmlProject::supportsKit(Kit *k, QString *errorMessage) const +bool QmlProject::supportsKit(const Kit *k, QString *errorMessage) const { QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(k); if (!version) { diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h index 4ecd7b226e6..9741fb41773 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.h +++ b/src/plugins/qmlprojectmanager/qmlproject.h @@ -48,7 +48,7 @@ public: explicit QmlProject(const Utils::FileName &filename); ~QmlProject() override; - bool supportsKit(ProjectExplorer::Kit *k, QString *errorMessage) const override; + bool supportsKit(const ProjectExplorer::Kit *k, QString *errorMessage = nullptr) const final; bool validProjectFile() const;