From b5edc14b09454b7c61477dd6b85b1327b1eec1da Mon Sep 17 00:00:00 2001 From: con <qtc-committer@nokia.com> Date: Thu, 18 Jun 2009 15:57:50 +0200 Subject: [PATCH] Do lazy updating of the file list in AllProjectsFilter. --- .../projectexplorer/allprojectsfilter.cpp | 18 +++++++++++++----- .../projectexplorer/allprojectsfilter.h | 6 +++++- src/plugins/quickopen/basefilefilter.cpp | 5 +++++ src/plugins/quickopen/basefilefilter.h | 1 + 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/plugins/projectexplorer/allprojectsfilter.cpp b/src/plugins/projectexplorer/allprojectsfilter.cpp index 7ab9bb4ce92..24a396d1fc7 100644 --- a/src/plugins/projectexplorer/allprojectsfilter.cpp +++ b/src/plugins/projectexplorer/allprojectsfilter.cpp @@ -40,16 +40,24 @@ using namespace ProjectExplorer; using namespace ProjectExplorer::Internal; AllProjectsFilter::AllProjectsFilter(ProjectExplorerPlugin *pe) + : m_projectExplorer(pe), m_filesUpToDate(false) { - m_projectExplorer = pe; connect(m_projectExplorer, SIGNAL(fileListChanged()), - this, SLOT(refreshInternally())); + this, SLOT(markFilesAsOutOfDate())); setShortcutString("a"); setIncludedByDefault(true); } -void AllProjectsFilter::refreshInternally() +void AllProjectsFilter::markFilesAsOutOfDate() { + m_filesUpToDate = false; +} + +void AllProjectsFilter::updateFiles() +{ + if (m_filesUpToDate) + return; + m_filesUpToDate = true; m_files.clear(); SessionManager *session = m_projectExplorer->session(); if (!session) @@ -64,7 +72,7 @@ void AllProjectsFilter::refresh(QFutureInterface<void> &future) { Q_UNUSED(future); // invokeAsyncronouslyOnGuiThread - connect(this, SIGNAL(invokeRefresh()), this, SLOT(refreshInternally())); + connect(this, SIGNAL(invokeRefresh()), this, SLOT(markFilesAsOutOfDate())); emit invokeRefresh(); - disconnect(this, SIGNAL(invokeRefresh()), this, SLOT(refreshInternally())); + disconnect(this, SIGNAL(invokeRefresh()), this, SLOT(markFilesAsOutOfDate())); } diff --git a/src/plugins/projectexplorer/allprojectsfilter.h b/src/plugins/projectexplorer/allprojectsfilter.h index f4865809431..f0cf3afea05 100644 --- a/src/plugins/projectexplorer/allprojectsfilter.h +++ b/src/plugins/projectexplorer/allprojectsfilter.h @@ -53,12 +53,16 @@ public: QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Low; } void refresh(QFutureInterface<void> &future); +protected: + void updateFiles(); + private slots: - void refreshInternally(); + void markFilesAsOutOfDate(); signals: void invokeRefresh(); private: ProjectExplorerPlugin *m_projectExplorer; + bool m_filesUpToDate; }; } // namespace Internal diff --git a/src/plugins/quickopen/basefilefilter.cpp b/src/plugins/quickopen/basefilefilter.cpp index ae09c3128c7..c895af5a7c2 100644 --- a/src/plugins/quickopen/basefilefilter.cpp +++ b/src/plugins/quickopen/basefilefilter.cpp @@ -43,6 +43,7 @@ BaseFileFilter::BaseFileFilter() QList<FilterEntry> BaseFileFilter::matchesFor(const QString &origEntry) { + updateFiles(); QList<FilterEntry> matches; QList<FilterEntry> badMatches; QString needle = trimWildcards(origEntry); @@ -104,3 +105,7 @@ void BaseFileFilter::generateFileNames() } m_forceNewSearchList = true; } + +void BaseFileFilter::updateFiles() +{ +} diff --git a/src/plugins/quickopen/basefilefilter.h b/src/plugins/quickopen/basefilefilter.h index e1ff1e10f20..30bf0591325 100644 --- a/src/plugins/quickopen/basefilefilter.h +++ b/src/plugins/quickopen/basefilefilter.h @@ -48,6 +48,7 @@ public: void accept(QuickOpen::FilterEntry selection) const; protected: + virtual void updateFiles(); void generateFileNames(); QStringList m_files; -- GitLab