From 38d3090a4a8858bb2cd6676edc5f001d523b96bd Mon Sep 17 00:00:00 2001
From: con <qtc-committer@nokia.com>
Date: Mon, 11 Oct 2010 10:23:30 +0200
Subject: [PATCH] Share some code between all projects and current projects
 find.

Also some const correctness.
---
 .../projectexplorer/allprojectsfind.cpp       |  9 +++-
 src/plugins/projectexplorer/allprojectsfind.h |  4 +-
 .../projectexplorer/currentprojectfind.cpp    | 50 ++-----------------
 .../projectexplorer/currentprojectfind.h      | 10 ++--
 src/plugins/texteditor/basefilefind.h         |  2 +-
 src/plugins/texteditor/findincurrentfile.cpp  |  2 +-
 src/plugins/texteditor/findincurrentfile.h    |  2 +-
 src/plugins/texteditor/findinfiles.cpp        |  2 +-
 src/plugins/texteditor/findinfiles.h          |  2 +-
 9 files changed, 24 insertions(+), 59 deletions(-)

diff --git a/src/plugins/projectexplorer/allprojectsfind.cpp b/src/plugins/projectexplorer/allprojectsfind.cpp
index 89ae73506ce..8c437c62676 100644
--- a/src/plugins/projectexplorer/allprojectsfind.cpp
+++ b/src/plugins/projectexplorer/allprojectsfind.cpp
@@ -72,9 +72,14 @@ bool AllProjectsFind::isEnabled() const
             && m_plugin->session()->projects().count() > 0;
 }
 
-Utils::FileIterator *AllProjectsFind::files()
+QList<Project *> AllProjectsFind::projects() const
 {
     Q_ASSERT(m_plugin->session());
+    return m_plugin->session()->projects();
+}
+
+Utils::FileIterator *AllProjectsFind::files() const
+{
     QList<QRegExp> filterRegs;
     QStringList nameFilters = fileNameFilters();
     foreach (const QString &filter, nameFilters) {
@@ -82,7 +87,7 @@ Utils::FileIterator *AllProjectsFind::files()
     }
     QStringList files;
     QStringList projectFiles;
-    foreach (const Project *project, m_plugin->session()->projects()) {
+    foreach (const Project *project, projects()) {
         projectFiles = project->files(Project::AllFiles);
         if (!filterRegs.isEmpty()) {
             foreach (const QString &file, projectFiles) {
diff --git a/src/plugins/projectexplorer/allprojectsfind.h b/src/plugins/projectexplorer/allprojectsfind.h
index d6484e5d60b..96c2dff6eac 100644
--- a/src/plugins/projectexplorer/allprojectsfind.h
+++ b/src/plugins/projectexplorer/allprojectsfind.h
@@ -40,6 +40,7 @@
 namespace ProjectExplorer {
 
 class ProjectExplorerPlugin;
+class Project;
 
 namespace Internal {
 
@@ -60,7 +61,8 @@ public:
     void readSettings(QSettings *settings);
 
 protected:
-    Utils::FileIterator *files();
+    virtual QList<Project *> projects() const;
+    Utils::FileIterator *files() const;
 
 private:
     ProjectExplorerPlugin *m_plugin;
diff --git a/src/plugins/projectexplorer/currentprojectfind.cpp b/src/plugins/projectexplorer/currentprojectfind.cpp
index 2e929c5cbe5..a3c64cb4ca3 100644
--- a/src/plugins/projectexplorer/currentprojectfind.cpp
+++ b/src/plugins/projectexplorer/currentprojectfind.cpp
@@ -47,9 +47,8 @@ using namespace ProjectExplorer::Internal;
 using namespace TextEditor;
 
 CurrentProjectFind::CurrentProjectFind(ProjectExplorerPlugin *plugin, SearchResultWindow *resultWindow)
-  : BaseFileFind(resultWindow),
-    m_plugin(plugin),
-    m_configWidget(0)
+  : AllProjectsFind(plugin, resultWindow),
+    m_plugin(plugin)
 {
     connect(m_plugin, SIGNAL(currentProjectChanged(ProjectExplorer::Project*)),
             this, SIGNAL(changed()));
@@ -70,50 +69,9 @@ bool CurrentProjectFind::isEnabled() const
     return m_plugin->currentProject() != 0 && BaseFileFind::isEnabled();
 }
 
-Utils::FileIterator *CurrentProjectFind::files()
+QList<Project *> CurrentProjectFind::projects() const
 {
-    Project *project = m_plugin->currentProject();
-    Q_ASSERT(project);
-    QList<QRegExp> filterRegs;
-    QStringList nameFilters = fileNameFilters();
-    foreach (const QString &filter, nameFilters) {
-        filterRegs << QRegExp(filter, Qt::CaseInsensitive, QRegExp::Wildcard);
-    }
-    QStringList files;
-    if (!filterRegs.isEmpty()) {
-        foreach (const QString &file, project->files(Project::AllFiles)) {
-            foreach (const QRegExp &reg, filterRegs) {
-                if (reg.exactMatch(file) || reg.exactMatch(QFileInfo(file).fileName())) {
-                    files.append(file);
-                    break;
-                }
-            }
-        }
-    } else {
-        files += project->files(Project::AllFiles);
-    }
-    files.removeDuplicates();
-    return new Utils::FileIterator(files);
-}
-
-QWidget *CurrentProjectFind::createConfigWidget()
-{
-    if (!m_configWidget) {
-        m_configWidget = new QWidget;
-        QGridLayout * const layout = new QGridLayout(m_configWidget);
-        layout->setMargin(0);
-        m_configWidget->setLayout(layout);
-        QLabel * const filePatternLabel = new QLabel(tr("File &pattern:"));
-        filePatternLabel->setMinimumWidth(80);
-        filePatternLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
-        filePatternLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
-        QWidget *patternWidget = createPatternWidget();
-        filePatternLabel->setBuddy(patternWidget);
-        layout->addWidget(filePatternLabel, 0, 0, Qt::AlignRight);
-        layout->addWidget(patternWidget, 0, 1);
-        m_configWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
-    }
-    return m_configWidget;
+    return QList<Project *>() << m_plugin->currentProject();
 }
 
 void CurrentProjectFind::writeSettings(QSettings *settings)
diff --git a/src/plugins/projectexplorer/currentprojectfind.h b/src/plugins/projectexplorer/currentprojectfind.h
index 80661895954..dc0c5f7d5c3 100644
--- a/src/plugins/projectexplorer/currentprojectfind.h
+++ b/src/plugins/projectexplorer/currentprojectfind.h
@@ -30,9 +30,10 @@
 #ifndef CURRENTPROJECTFIND_H
 #define CURRENTPROJECTFIND_H
 
+#include "allprojectsfind.h"
+
 #include <find/ifindfilter.h>
 #include <find/searchresultwindow.h>
-#include <texteditor/basefilefind.h>
 
 #include <QtCore/QPointer>
 
@@ -43,10 +44,11 @@ QT_END_NAMESPACE
 namespace ProjectExplorer {
 
 class ProjectExplorerPlugin;
+class Project;
 
 namespace Internal {
 
-class CurrentProjectFind : public TextEditor::BaseFileFind
+class CurrentProjectFind : public AllProjectsFind
 {
     Q_OBJECT
 
@@ -58,16 +60,14 @@ public:
 
     bool isEnabled() const;
 
-    QWidget *createConfigWidget();
     void writeSettings(QSettings *settings);
     void readSettings(QSettings *settings);
 
 protected:
-    Utils::FileIterator *files();
+    QList<Project *> projects() const;
 
 private:
     ProjectExplorerPlugin *m_plugin;
-    QPointer<QWidget> m_configWidget;
 };
 
 } // namespace Internal
diff --git a/src/plugins/texteditor/basefilefind.h b/src/plugins/texteditor/basefilefind.h
index b00c6a110c0..83577aa60a9 100644
--- a/src/plugins/texteditor/basefilefind.h
+++ b/src/plugins/texteditor/basefilefind.h
@@ -73,7 +73,7 @@ public:
                                   const QList<Find::SearchResultItem> &items);
 
 protected:
-    virtual Utils::FileIterator *files() = 0;
+    virtual Utils::FileIterator *files() const = 0;
     void writeCommonSettings(QSettings *settings);
     void readCommonSettings(QSettings *settings, const QString &defaultFilter);
     QWidget *createPatternWidget();
diff --git a/src/plugins/texteditor/findincurrentfile.cpp b/src/plugins/texteditor/findincurrentfile.cpp
index 01c060133f9..002d1ab145e 100644
--- a/src/plugins/texteditor/findincurrentfile.cpp
+++ b/src/plugins/texteditor/findincurrentfile.cpp
@@ -62,7 +62,7 @@ QString FindInCurrentFile::displayName() const
     return tr("Current File");
 }
 
-Utils::FileIterator *FindInCurrentFile::files()
+Utils::FileIterator *FindInCurrentFile::files() const
 {
     QStringList fileList;
     if (isEnabled())
diff --git a/src/plugins/texteditor/findincurrentfile.h b/src/plugins/texteditor/findincurrentfile.h
index b42064d99c8..c6010dc0e2b 100644
--- a/src/plugins/texteditor/findincurrentfile.h
+++ b/src/plugins/texteditor/findincurrentfile.h
@@ -61,7 +61,7 @@ public:
     void readSettings(QSettings *settings);
 
 protected:
-    Utils::FileIterator *files();
+    Utils::FileIterator *files() const;
 
 private slots:
     void handleFileChange(Core::IEditor *editor);
diff --git a/src/plugins/texteditor/findinfiles.cpp b/src/plugins/texteditor/findinfiles.cpp
index b6b02ef31b0..43ac897abd7 100644
--- a/src/plugins/texteditor/findinfiles.cpp
+++ b/src/plugins/texteditor/findinfiles.cpp
@@ -63,7 +63,7 @@ void FindInFiles::findAll(const QString &txt, Find::FindFlags findFlags)
     BaseFileFind::findAll(txt, findFlags);
 }
 
-Utils::FileIterator *FindInFiles::files()
+Utils::FileIterator *FindInFiles::files() const
 {
     return new Utils::SubDirFileIterator(QStringList() << m_directory->currentText(),
                                          fileNameFilters());
diff --git a/src/plugins/texteditor/findinfiles.h b/src/plugins/texteditor/findinfiles.h
index 569e5ce781d..125f9714cda 100644
--- a/src/plugins/texteditor/findinfiles.h
+++ b/src/plugins/texteditor/findinfiles.h
@@ -59,7 +59,7 @@ public:
     void readSettings(QSettings *settings);
 
 protected:
-    Utils::FileIterator *files();
+    Utils::FileIterator *files() const;
 
 private slots:
     void openFileBrowser();
-- 
GitLab