diff options
author | Eike Ziller <eike.ziller@nokia.com> | 2011-12-13 10:50:57 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@nokia.com> | 2011-12-19 12:07:05 +0100 |
commit | 2538f8001c9fc2809d4179c1f06082632c24f9e0 (patch) | |
tree | d1c200e22d016366a6f8307b13efd578c755f605 /src/plugins/projectexplorer | |
parent | e1c388f1d2adfe09ea65f9bf3966256ef15e5fe8 (diff) | |
download | qt-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.cpp | 19 | ||||
-rw-r--r-- | src/plugins/projectexplorer/allprojectsfind.h | 8 | ||||
-rw-r--r-- | src/plugins/projectexplorer/currentprojectfind.cpp | 25 | ||||
-rw-r--r-- | src/plugins/projectexplorer/currentprojectfind.h | 4 |
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: |