Share some code between all projects and current projects find.

Also some const correctness.
This commit is contained in:
con
2010-10-11 10:23:30 +02:00
parent 4e7c07d97a
commit 38d3090a4a
9 changed files with 24 additions and 59 deletions

View File

@@ -72,9 +72,14 @@ bool AllProjectsFind::isEnabled() const
&& m_plugin->session()->projects().count() > 0; && m_plugin->session()->projects().count() > 0;
} }
Utils::FileIterator *AllProjectsFind::files() QList<Project *> AllProjectsFind::projects() const
{ {
Q_ASSERT(m_plugin->session()); Q_ASSERT(m_plugin->session());
return m_plugin->session()->projects();
}
Utils::FileIterator *AllProjectsFind::files() const
{
QList<QRegExp> filterRegs; QList<QRegExp> filterRegs;
QStringList nameFilters = fileNameFilters(); QStringList nameFilters = fileNameFilters();
foreach (const QString &filter, nameFilters) { foreach (const QString &filter, nameFilters) {
@@ -82,7 +87,7 @@ Utils::FileIterator *AllProjectsFind::files()
} }
QStringList files; QStringList files;
QStringList projectFiles; QStringList projectFiles;
foreach (const Project *project, m_plugin->session()->projects()) { foreach (const Project *project, projects()) {
projectFiles = project->files(Project::AllFiles); projectFiles = project->files(Project::AllFiles);
if (!filterRegs.isEmpty()) { if (!filterRegs.isEmpty()) {
foreach (const QString &file, projectFiles) { foreach (const QString &file, projectFiles) {

View File

@@ -40,6 +40,7 @@
namespace ProjectExplorer { namespace ProjectExplorer {
class ProjectExplorerPlugin; class ProjectExplorerPlugin;
class Project;
namespace Internal { namespace Internal {
@@ -60,7 +61,8 @@ public:
void readSettings(QSettings *settings); void readSettings(QSettings *settings);
protected: protected:
Utils::FileIterator *files(); virtual QList<Project *> projects() const;
Utils::FileIterator *files() const;
private: private:
ProjectExplorerPlugin *m_plugin; ProjectExplorerPlugin *m_plugin;

View File

@@ -47,9 +47,8 @@ using namespace ProjectExplorer::Internal;
using namespace TextEditor; using namespace TextEditor;
CurrentProjectFind::CurrentProjectFind(ProjectExplorerPlugin *plugin, SearchResultWindow *resultWindow) CurrentProjectFind::CurrentProjectFind(ProjectExplorerPlugin *plugin, SearchResultWindow *resultWindow)
: BaseFileFind(resultWindow), : AllProjectsFind(plugin, resultWindow),
m_plugin(plugin), m_plugin(plugin)
m_configWidget(0)
{ {
connect(m_plugin, SIGNAL(currentProjectChanged(ProjectExplorer::Project*)), connect(m_plugin, SIGNAL(currentProjectChanged(ProjectExplorer::Project*)),
this, SIGNAL(changed())); this, SIGNAL(changed()));
@@ -70,50 +69,9 @@ bool CurrentProjectFind::isEnabled() const
return m_plugin->currentProject() != 0 && BaseFileFind::isEnabled(); return m_plugin->currentProject() != 0 && BaseFileFind::isEnabled();
} }
Utils::FileIterator *CurrentProjectFind::files() QList<Project *> CurrentProjectFind::projects() const
{ {
Project *project = m_plugin->currentProject(); return QList<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;
} }
void CurrentProjectFind::writeSettings(QSettings *settings) void CurrentProjectFind::writeSettings(QSettings *settings)

View File

@@ -30,9 +30,10 @@
#ifndef CURRENTPROJECTFIND_H #ifndef CURRENTPROJECTFIND_H
#define CURRENTPROJECTFIND_H #define CURRENTPROJECTFIND_H
#include "allprojectsfind.h"
#include <find/ifindfilter.h> #include <find/ifindfilter.h>
#include <find/searchresultwindow.h> #include <find/searchresultwindow.h>
#include <texteditor/basefilefind.h>
#include <QtCore/QPointer> #include <QtCore/QPointer>
@@ -43,10 +44,11 @@ QT_END_NAMESPACE
namespace ProjectExplorer { namespace ProjectExplorer {
class ProjectExplorerPlugin; class ProjectExplorerPlugin;
class Project;
namespace Internal { namespace Internal {
class CurrentProjectFind : public TextEditor::BaseFileFind class CurrentProjectFind : public AllProjectsFind
{ {
Q_OBJECT Q_OBJECT
@@ -58,16 +60,14 @@ public:
bool isEnabled() const; bool isEnabled() const;
QWidget *createConfigWidget();
void writeSettings(QSettings *settings); void writeSettings(QSettings *settings);
void readSettings(QSettings *settings); void readSettings(QSettings *settings);
protected: protected:
Utils::FileIterator *files(); QList<Project *> projects() const;
private: private:
ProjectExplorerPlugin *m_plugin; ProjectExplorerPlugin *m_plugin;
QPointer<QWidget> m_configWidget;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -73,7 +73,7 @@ public:
const QList<Find::SearchResultItem> &items); const QList<Find::SearchResultItem> &items);
protected: protected:
virtual Utils::FileIterator *files() = 0; virtual Utils::FileIterator *files() const = 0;
void writeCommonSettings(QSettings *settings); void writeCommonSettings(QSettings *settings);
void readCommonSettings(QSettings *settings, const QString &defaultFilter); void readCommonSettings(QSettings *settings, const QString &defaultFilter);
QWidget *createPatternWidget(); QWidget *createPatternWidget();

View File

@@ -62,7 +62,7 @@ QString FindInCurrentFile::displayName() const
return tr("Current File"); return tr("Current File");
} }
Utils::FileIterator *FindInCurrentFile::files() Utils::FileIterator *FindInCurrentFile::files() const
{ {
QStringList fileList; QStringList fileList;
if (isEnabled()) if (isEnabled())

View File

@@ -61,7 +61,7 @@ public:
void readSettings(QSettings *settings); void readSettings(QSettings *settings);
protected: protected:
Utils::FileIterator *files(); Utils::FileIterator *files() const;
private slots: private slots:
void handleFileChange(Core::IEditor *editor); void handleFileChange(Core::IEditor *editor);

View File

@@ -63,7 +63,7 @@ void FindInFiles::findAll(const QString &txt, Find::FindFlags findFlags)
BaseFileFind::findAll(txt, findFlags); BaseFileFind::findAll(txt, findFlags);
} }
Utils::FileIterator *FindInFiles::files() Utils::FileIterator *FindInFiles::files() const
{ {
return new Utils::SubDirFileIterator(QStringList() << m_directory->currentText(), return new Utils::SubDirFileIterator(QStringList() << m_directory->currentText(),
fileNameFilters()); fileNameFilters());

View File

@@ -59,7 +59,7 @@ public:
void readSettings(QSettings *settings); void readSettings(QSettings *settings);
protected: protected:
Utils::FileIterator *files(); Utils::FileIterator *files() const;
private slots: private slots:
void openFileBrowser(); void openFileBrowser();