From a223e59d85fef58de695ecf8c37047a553bc5ede Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 30 Sep 2016 14:23:08 +0200 Subject: [PATCH] CMake: Polish cmakelocatorfilter Change-Id: I02566f27c57c2531c4c6085dc9c703f379a194f1 Reviewed-by: Tim Jenssen --- .../cmakelocatorfilter.cpp | 46 +++++++------------ .../cmakeprojectmanager/cmakelocatorfilter.h | 4 +- 2 files changed, 18 insertions(+), 32 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp index b4628f02818..be57d155979 100644 --- a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp @@ -35,7 +35,6 @@ #include #include -#include using namespace CMakeProjectManager; using namespace CMakeProjectManager::Internal; @@ -50,12 +49,12 @@ CMakeLocatorFilter::CMakeLocatorFilter() setPriority(High); connect(SessionManager::instance(), &SessionManager::projectAdded, - this, &CMakeLocatorFilter::slotProjectListUpdated); + this, &CMakeLocatorFilter::projectListUpdated); connect(SessionManager::instance(), &SessionManager::projectRemoved, - this, &CMakeLocatorFilter::slotProjectListUpdated); + this, &CMakeLocatorFilter::projectListUpdated); // Initialize the filter - slotProjectListUpdated(); + projectListUpdated(); } void CMakeLocatorFilter::prepareSearch(const QString &entry) @@ -63,13 +62,13 @@ void CMakeLocatorFilter::prepareSearch(const QString &entry) m_result.clear(); foreach (Project *p, SessionManager::projects()) { CMakeProject *cmakeProject = qobject_cast(p); - if (cmakeProject) { - foreach (const CMakeBuildTarget &ct, cmakeProject->buildTargets()) { - if (ct.title.contains(entry)) { - Core::LocatorFilterEntry entry(this, ct.title, cmakeProject->projectFilePath().toString()); - entry.extraInfo = FileUtils::shortNativePath(cmakeProject->projectFilePath()); - m_result.append(entry); - } + if (!cmakeProject) + continue; + foreach (const CMakeBuildTarget &ct, cmakeProject->buildTargets()) { + if (ct.title.contains(entry)) { + Core::LocatorFilterEntry entry(this, ct.title, cmakeProject->projectFilePath().toString()); + entry.extraInfo = FileUtils::shortNativePath(cmakeProject->projectFilePath()); + m_result.append(entry); } } } @@ -85,18 +84,15 @@ QList CMakeLocatorFilter::matchesFor(QFutureInterface< void CMakeLocatorFilter::accept(Core::LocatorFilterEntry selection) const { // Get the project containing the target selected - CMakeProject *cmakeProject = nullptr; - - foreach (Project *p, SessionManager::projects()) { - cmakeProject = qobject_cast(p); - if (cmakeProject && cmakeProject->projectFilePath().toString() == selection.internalData.toString()) - break; - } + const auto cmakeProject = qobject_cast( + Utils::findOrDefault(SessionManager::projects(), [selection](Project *p) { + return p->projectFilePath().toString() == selection.internalData.toString(); + })); if (!cmakeProject || !cmakeProject->activeTarget() || !cmakeProject->activeTarget()->activeBuildConfiguration()) return; // Find the make step - ProjectExplorer::BuildStepList *buildStepList = cmakeProject->activeTarget()->activeBuildConfiguration() + BuildStepList *buildStepList = cmakeProject->activeTarget()->activeBuildConfiguration() ->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); auto buildStep = buildStepList->firstOfType(); if (!buildStep) @@ -117,16 +113,8 @@ void CMakeLocatorFilter::refresh(QFutureInterface &future) Q_UNUSED(future) } -void CMakeLocatorFilter::slotProjectListUpdated() +void CMakeLocatorFilter::projectListUpdated() { - CMakeProject *cmakeProject = 0; - - foreach (Project *p, SessionManager::projects()) { - cmakeProject = qobject_cast(p); - if (cmakeProject) - break; - } - // Enable the filter if there's at least one CMake project - setEnabled(cmakeProject); + setEnabled(Utils::contains(SessionManager::projects(), [](Project *p) { return qobject_cast(p); })); } diff --git a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.h b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.h index a0448a0ae9c..374c5816fa7 100644 --- a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.h +++ b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.h @@ -27,8 +27,6 @@ #include -#include - namespace CMakeProjectManager { namespace Internal { @@ -46,7 +44,7 @@ public: void refresh(QFutureInterface &future) override; private: - void slotProjectListUpdated(); + void projectListUpdated(); QList m_result; };