BaseFileFind: Reuse FileContainer

Reuse it in BaseFileFind::files() and in
InternalEngine::executeSearch().

Change-Id: I2fed4e6af37e83d76deaa8d847564aa4950fc223
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Jarek Kobus
2023-05-24 17:20:27 +02:00
parent 8c9683a627
commit 27302694ab
14 changed files with 43 additions and 48 deletions

View File

@@ -47,7 +47,7 @@ bool AllProjectsFind::isEnabled() const
return BaseFileFind::isEnabled() && ProjectManager::hasProjects(); return BaseFileFind::isEnabled() && ProjectManager::hasProjects();
} }
FileIterator *AllProjectsFind::files(const QStringList &nameFilters, FileContainer AllProjectsFind::files(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QVariant &additionalParameters) const const QVariant &additionalParameters) const
{ {
@@ -55,7 +55,7 @@ FileIterator *AllProjectsFind::files(const QStringList &nameFilters,
return filesForProjects(nameFilters, exclusionFilters, ProjectManager::projects()); return filesForProjects(nameFilters, exclusionFilters, ProjectManager::projects());
} }
FileIterator *AllProjectsFind::filesForProjects(const QStringList &nameFilters, FileContainer AllProjectsFind::filesForProjects(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QList<Project *> &projects) const const QList<Project *> &projects) const
{ {
@@ -77,7 +77,7 @@ FileIterator *AllProjectsFind::filesForProjects(const QStringList &nameFilters,
encodings.insert(fileName, codec); encodings.insert(fileName, codec);
} }
} }
return new FileListIterator(encodings.keys(), encodings.values()); return FileListContainer(encodings.keys(), encodings.values());
} }
QVariant AllProjectsFind::additionalParameters() const QVariant AllProjectsFind::additionalParameters() const

View File

@@ -30,10 +30,10 @@ public:
void readSettings(QSettings *settings) override; void readSettings(QSettings *settings) override;
protected: protected:
Utils::FileIterator *files(const QStringList &nameFilters, Utils::FileContainer files(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QVariant &additionalParameters) const override; const QVariant &additionalParameters) const override;
Utils::FileIterator *filesForProjects(const QStringList &nameFilters, Utils::FileContainer filesForProjects(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QList<Project *> &projects) const; const QList<Project *> &projects) const;

View File

@@ -57,17 +57,17 @@ QVariant CurrentProjectFind::additionalParameters() const
return QVariant(); return QVariant();
} }
FileIterator *CurrentProjectFind::files(const QStringList &nameFilters, FileContainer CurrentProjectFind::files(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QVariant &additionalParameters) const const QVariant &additionalParameters) const
{ {
QTC_ASSERT(additionalParameters.isValid(), return new FileListIterator); QTC_ASSERT(additionalParameters.isValid(), return {});
const FilePath projectFile = FilePath::fromVariant(additionalParameters); const FilePath projectFile = FilePath::fromVariant(additionalParameters);
for (Project *project : ProjectManager::projects()) { for (Project *project : ProjectManager::projects()) {
if (project && projectFile == project->projectFilePath()) if (project && projectFile == project->projectFilePath())
return filesForProjects(nameFilters, exclusionFilters, {project}); return filesForProjects(nameFilters, exclusionFilters, {project});
} }
return new FileListIterator; return {};
} }
QString CurrentProjectFind::label() const QString CurrentProjectFind::label() const

View File

@@ -27,7 +27,7 @@ public:
void readSettings(QSettings *settings) override; void readSettings(QSettings *settings) override;
protected: protected:
Utils::FileIterator *files(const QStringList &nameFilters, Utils::FileContainer files(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QVariant &additionalParameters) const override; const QVariant &additionalParameters) const override;
QVariant additionalParameters() const override; QVariant additionalParameters() const override;

View File

@@ -47,7 +47,7 @@ void FilesInAllProjectsFind::readSettings(QSettings *settings)
settings->endGroup(); settings->endGroup();
} }
Utils::FileIterator *FilesInAllProjectsFind::files(const QStringList &nameFilters, FileContainer FilesInAllProjectsFind::files(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QVariant &additionalParameters) const const QVariant &additionalParameters) const
{ {
@@ -55,10 +55,8 @@ Utils::FileIterator *FilesInAllProjectsFind::files(const QStringList &nameFilter
const QSet<FilePath> dirs = Utils::transform<QSet>(ProjectManager::projects(), [](Project *p) { const QSet<FilePath> dirs = Utils::transform<QSet>(ProjectManager::projects(), [](Project *p) {
return p->projectFilePath().parentDir(); return p->projectFilePath().parentDir();
}); });
return new SubDirFileIterator(FilePaths(dirs.constBegin(), dirs.constEnd()), return SubDirFileContainer(FilePaths(dirs.constBegin(), dirs.constEnd()), nameFilters,
nameFilters, exclusionFilters, Core::EditorManager::defaultTextCodec());
exclusionFilters,
Core::EditorManager::defaultTextCodec());
} }
QString FilesInAllProjectsFind::label() const QString FilesInAllProjectsFind::label() const

View File

@@ -20,7 +20,7 @@ public:
void readSettings(QSettings *settings) override; void readSettings(QSettings *settings) override;
protected: protected:
Utils::FileIterator *files(const QStringList &nameFilters, Utils::FileContainer files(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QVariant &additionalParameters) const override; const QVariant &additionalParameters) const override;
QString label() const override; QString label() const override;

View File

@@ -148,11 +148,10 @@ public:
QFuture<SearchResultItems> executeSearch(const TextEditor::FileFindParameters &parameters, QFuture<SearchResultItems> executeSearch(const TextEditor::FileFindParameters &parameters,
BaseFileFind *baseFileFind) override BaseFileFind *baseFileFind) override
{ {
return Utils::findInFiles(parameters.text, const FileContainer container = baseFileFind->files(parameters.nameFilters,
baseFileFind->files(parameters.nameFilters,
parameters.exclusionFilters, parameters.exclusionFilters,
parameters.additionalParameters), parameters.additionalParameters);
parameters.flags, return Utils::findInFiles(parameters.text, container, parameters.flags,
TextDocument::openedTextDocumentContents()); TextDocument::openedTextDocumentContents());
} }

View File

@@ -18,10 +18,7 @@ class IEditor;
class SearchResult; class SearchResult;
} // namespace Core } // namespace Core
namespace Utils { namespace Utils { class Process; }
class FileIterator;
class Process;
}
namespace TextEditor { namespace TextEditor {
@@ -98,7 +95,7 @@ public:
/* returns the list of unique files that were passed in items */ /* returns the list of unique files that were passed in items */
static Utils::FilePaths replaceAll(const QString &txt, const Utils::SearchResultItems &items, static Utils::FilePaths replaceAll(const QString &txt, const Utils::SearchResultItems &items,
bool preserveCase = false); bool preserveCase = false);
virtual Utils::FileIterator *files(const QStringList &nameFilters, virtual Utils::FileContainer files(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QVariant &additionalParameters) const = 0; const QVariant &additionalParameters) const = 0;

View File

@@ -15,6 +15,8 @@
#include <QSettings> #include <QSettings>
using namespace Utils;
namespace TextEditor::Internal { namespace TextEditor::Internal {
FindInCurrentFile::FindInCurrentFile() FindInCurrentFile::FindInCurrentFile()
@@ -34,19 +36,18 @@ QString FindInCurrentFile::displayName() const
return Tr::tr("Current File"); return Tr::tr("Current File");
} }
Utils::FileIterator *FindInCurrentFile::files(const QStringList &nameFilters, FileContainer FindInCurrentFile::files(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QVariant &additionalParameters) const const QVariant &additionalParameters) const
{ {
Q_UNUSED(nameFilters) Q_UNUSED(nameFilters)
Q_UNUSED(exclusionFilters) Q_UNUSED(exclusionFilters)
const auto fileName = Utils::FilePath::fromVariant(additionalParameters); const auto fileName = FilePath::fromVariant(additionalParameters);
QMap<Utils::FilePath, QTextCodec *> openEditorEncodings QMap<FilePath, QTextCodec *> openEditorEncodings = TextDocument::openedTextDocumentEncodings();
= TextDocument::openedTextDocumentEncodings();
QTextCodec *codec = openEditorEncodings.value(fileName); QTextCodec *codec = openEditorEncodings.value(fileName);
if (!codec) if (!codec)
codec = Core::EditorManager::defaultTextCodec(); codec = Core::EditorManager::defaultTextCodec();
return new Utils::FileListIterator({fileName}, {codec}); return FileListContainer({fileName}, {codec});
} }
QVariant FindInCurrentFile::additionalParameters() const QVariant FindInCurrentFile::additionalParameters() const

View File

@@ -29,7 +29,7 @@ public:
void readSettings(QSettings *settings) override; void readSettings(QSettings *settings) override;
protected: protected:
Utils::FileIterator *files(const QStringList &nameFilters, Utils::FileContainer files(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QVariant &additionalParameters) const override; const QVariant &additionalParameters) const override;
QVariant additionalParameters() const override; QVariant additionalParameters() const override;

View File

@@ -58,14 +58,12 @@ QString FindInFiles::displayName() const
return Tr::tr("Files in File System"); return Tr::tr("Files in File System");
} }
FileIterator *FindInFiles::files(const QStringList &nameFilters, FileContainer FindInFiles::files(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QVariant &additionalParameters) const const QVariant &additionalParameters) const
{ {
return new SubDirFileIterator({FilePath::fromVariant(additionalParameters)}, return SubDirFileContainer({FilePath::fromVariant(additionalParameters)}, nameFilters,
nameFilters, exclusionFilters, EditorManager::defaultTextCodec());
exclusionFilters,
EditorManager::defaultTextCodec());
} }
QVariant FindInFiles::additionalParameters() const QVariant FindInFiles::additionalParameters() const

View File

@@ -44,7 +44,7 @@ signals:
void pathChanged(const Utils::FilePath &directory); void pathChanged(const Utils::FilePath &directory);
protected: protected:
Utils::FileIterator *files(const QStringList &nameFilters, Utils::FileContainer files(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QVariant &additionalParameters) const override; const QVariant &additionalParameters) const override;
QVariant additionalParameters() const override; QVariant additionalParameters() const override;

View File

@@ -14,6 +14,8 @@
#include <QSettings> #include <QSettings>
using namespace Utils;
namespace TextEditor::Internal { namespace TextEditor::Internal {
FindInOpenFiles::FindInOpenFiles() FindInOpenFiles::FindInOpenFiles()
@@ -34,20 +36,20 @@ QString FindInOpenFiles::displayName() const
return Tr::tr("Open Documents"); return Tr::tr("Open Documents");
} }
Utils::FileIterator *FindInOpenFiles::files(const QStringList &nameFilters, FileContainer FindInOpenFiles::files(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QVariant &additionalParameters) const const QVariant &additionalParameters) const
{ {
Q_UNUSED(nameFilters) Q_UNUSED(nameFilters)
Q_UNUSED(exclusionFilters) Q_UNUSED(exclusionFilters)
Q_UNUSED(additionalParameters) Q_UNUSED(additionalParameters)
QMap<Utils::FilePath, QTextCodec *> openEditorEncodings QMap<FilePath, QTextCodec *> openEditorEncodings
= TextDocument::openedTextDocumentEncodings(); = TextDocument::openedTextDocumentEncodings();
Utils::FilePaths fileNames; FilePaths fileNames;
QList<QTextCodec *> codecs; QList<QTextCodec *> codecs;
const QList<Core::DocumentModel::Entry *> entries = Core::DocumentModel::entries(); const QList<Core::DocumentModel::Entry *> entries = Core::DocumentModel::entries();
for (Core::DocumentModel::Entry *entry : entries) { for (Core::DocumentModel::Entry *entry : entries) {
const Utils::FilePath fileName = entry->filePath(); const FilePath fileName = entry->filePath();
if (!fileName.isEmpty()) { if (!fileName.isEmpty()) {
fileNames.append(fileName); fileNames.append(fileName);
QTextCodec *codec = openEditorEncodings.value(fileName); QTextCodec *codec = openEditorEncodings.value(fileName);
@@ -57,12 +59,12 @@ Utils::FileIterator *FindInOpenFiles::files(const QStringList &nameFilters,
} }
} }
return new Utils::FileListIterator(fileNames, codecs); return FileListContainer(fileNames, codecs);
} }
QVariant FindInOpenFiles::additionalParameters() const QVariant FindInOpenFiles::additionalParameters() const
{ {
return QVariant(); return {};
} }
QString FindInOpenFiles::label() const QString FindInOpenFiles::label() const

View File

@@ -22,7 +22,7 @@ public:
void readSettings(QSettings *settings) override; void readSettings(QSettings *settings) override;
protected: protected:
Utils::FileIterator *files(const QStringList &nameFilters, Utils::FileContainer files(const QStringList &nameFilters,
const QStringList &exclusionFilters, const QStringList &exclusionFilters,
const QVariant &additionalParameters) const override; const QVariant &additionalParameters) const override;
QVariant additionalParameters() const override; QVariant additionalParameters() const override;