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 ®, 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