summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@nokia.com>2011-12-13 10:50:57 +0100
committerEike Ziller <eike.ziller@nokia.com>2011-12-19 12:07:05 +0100
commit2538f8001c9fc2809d4179c1f06082632c24f9e0 (patch)
treed1c200e22d016366a6f8307b13efd578c755f605 /src/plugins/projectexplorer
parente1c388f1d2adfe09ea65f9bf3966256ef15e5fe8 (diff)
downloadqt-creator-2538f8001c9fc2809d4179c1f06082632c24f9e0.tar.gz
Implement "Search Again" for file/text searches
Task-number: QTCREATORBUG-621 Change-Id: I6fb7df3d943353497b73b9813684ae973b708913 Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
Diffstat (limited to 'src/plugins/projectexplorer')
-rw-r--r--src/plugins/projectexplorer/allprojectsfind.cpp19
-rw-r--r--src/plugins/projectexplorer/allprojectsfind.h8
-rw-r--r--src/plugins/projectexplorer/currentprojectfind.cpp25
-rw-r--r--src/plugins/projectexplorer/currentprojectfind.h4
4 files changed, 44 insertions, 12 deletions
diff --git a/src/plugins/projectexplorer/allprojectsfind.cpp b/src/plugins/projectexplorer/allprojectsfind.cpp
index 329ad3c66e..e461cabd7f 100644
--- a/src/plugins/projectexplorer/allprojectsfind.cpp
+++ b/src/plugins/projectexplorer/allprojectsfind.cpp
@@ -77,22 +77,24 @@ bool AllProjectsFind::isEnabled() const
&& m_plugin->session()->projects().count() > 0;
}
-QList<Project *> AllProjectsFind::projects() const
+Utils::FileIterator *AllProjectsFind::files(const QStringList &nameFilters,
+ const QVariant &additionalParameters) const
{
- Q_ASSERT(m_plugin->session());
- return m_plugin->session()->projects();
+ Q_UNUSED(additionalParameters)
+ QTC_ASSERT(m_plugin->session(), return new Utils::FileIterator());
+ return filesForProjects(nameFilters, m_plugin->session()->projects());
}
-Utils::FileIterator *AllProjectsFind::files() const
+Utils::FileIterator *AllProjectsFind::filesForProjects(const QStringList &nameFilters,
+ const QList<Project *> &projects) const
{
QList<QRegExp> filterRegs;
- QStringList nameFilters = fileNameFilters();
foreach (const QString &filter, nameFilters) {
filterRegs << QRegExp(filter, Qt::CaseInsensitive, QRegExp::Wildcard);
}
QMap<QString, QTextCodec *> openEditorEncodings = TextEditor::ITextEditor::openedTextEditorsEncodings();
QMap<QString, QTextCodec *> encodings;
- foreach (const Project *project, projects()) {
+ foreach (const Project *project, projects) {
QStringList projectFiles = project->files(Project::AllFiles);
QStringList filteredFiles;
if (!filterRegs.isEmpty()) {
@@ -117,6 +119,11 @@ Utils::FileIterator *AllProjectsFind::files() const
return new Utils::FileIterator(encodings.keys(), encodings.values());
}
+QVariant AllProjectsFind::additionalParameters() const
+{
+ return QVariant();
+}
+
QString AllProjectsFind::label() const
{
return tr("All Projects:");
diff --git a/src/plugins/projectexplorer/allprojectsfind.h b/src/plugins/projectexplorer/allprojectsfind.h
index c379175b78..5ad82338ff 100644
--- a/src/plugins/projectexplorer/allprojectsfind.h
+++ b/src/plugins/projectexplorer/allprojectsfind.h
@@ -61,8 +61,12 @@ public:
void readSettings(QSettings *settings);
protected:
- virtual QList<Project *> projects() const;
- Utils::FileIterator *files() const;
+ Utils::FileIterator *files(const QStringList &nameFilters,
+ const QVariant &additionalParameters) const;
+ Utils::FileIterator *filesForProjects(const QStringList &nameFilters,
+ const QList<Project *> &projects) const;
+
+ QVariant additionalParameters() const;
QString label() const;
QString toolTip() const;
diff --git a/src/plugins/projectexplorer/currentprojectfind.cpp b/src/plugins/projectexplorer/currentprojectfind.cpp
index eaaabb61d2..746eb8bc01 100644
--- a/src/plugins/projectexplorer/currentprojectfind.cpp
+++ b/src/plugins/projectexplorer/currentprojectfind.cpp
@@ -34,7 +34,9 @@
#include "projectexplorer.h"
#include "project.h"
+#include "session.h"
+#include <coreplugin/ifile.h>
#include <utils/qtcassert.h>
#include <QtCore/QDebug>
@@ -70,14 +72,31 @@ bool CurrentProjectFind::isEnabled() const
return m_plugin->currentProject() != 0 && BaseFileFind::isEnabled();
}
-QList<Project *> CurrentProjectFind::projects() const
+QVariant CurrentProjectFind::additionalParameters() const
{
- return QList<Project *>() << m_plugin->currentProject();
+ if (m_plugin->currentProject() && m_plugin->currentProject()->file())
+ return qVariantFromValue(m_plugin->currentProject()->file()->fileName());
+ return QVariant();
+}
+
+Utils::FileIterator *CurrentProjectFind::files(const QStringList &nameFilters,
+ const QVariant &additionalParameters) const
+{
+ QTC_ASSERT(m_plugin->session(), return new Utils::FileIterator());
+ QTC_ASSERT(additionalParameters.isValid(), return new Utils::FileIterator());
+ QList<Project *> allProjects = m_plugin->session()->projects();
+ QString projectFile = additionalParameters.toString();
+ foreach (Project *project, allProjects) {
+ if (project->file() && projectFile == project->file()->fileName())
+ return filesForProjects(nameFilters, QList<Project *>() << project);
+ }
+ return new Utils::FileIterator();
}
QString CurrentProjectFind::label() const
{
- return tr("Project '%1':").arg(projects().first()->displayName());
+ QTC_ASSERT(m_plugin->currentProject(), return QString());
+ return tr("Project '%1':").arg(m_plugin->currentProject()->displayName());
}
void CurrentProjectFind::writeSettings(QSettings *settings)
diff --git a/src/plugins/projectexplorer/currentprojectfind.h b/src/plugins/projectexplorer/currentprojectfind.h
index 5e276b54ba..35477d16da 100644
--- a/src/plugins/projectexplorer/currentprojectfind.h
+++ b/src/plugins/projectexplorer/currentprojectfind.h
@@ -62,7 +62,9 @@ public:
void readSettings(QSettings *settings);
protected:
- QList<Project *> projects() const;
+ Utils::FileIterator *files(const QStringList &nameFilters,
+ const QVariant &additionalParameters) const;
+ QVariant additionalParameters() const;
QString label() const;
private: