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

View File

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

View File

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

View File

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

View File

@@ -47,7 +47,7 @@ void FilesInAllProjectsFind::readSettings(QSettings *settings)
settings->endGroup();
}
Utils::FileIterator *FilesInAllProjectsFind::files(const QStringList &nameFilters,
FileContainer FilesInAllProjectsFind::files(const QStringList &nameFilters,
const QStringList &exclusionFilters,
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) {
return p->projectFilePath().parentDir();
});
return new SubDirFileIterator(FilePaths(dirs.constBegin(), dirs.constEnd()),
nameFilters,
exclusionFilters,
Core::EditorManager::defaultTextCodec());
return SubDirFileContainer(FilePaths(dirs.constBegin(), dirs.constEnd()), nameFilters,
exclusionFilters, Core::EditorManager::defaultTextCodec());
}
QString FilesInAllProjectsFind::label() const

View File

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

View File

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

View File

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

View File

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

View File

@@ -29,7 +29,7 @@ public:
void readSettings(QSettings *settings) override;
protected:
Utils::FileIterator *files(const QStringList &nameFilters,
Utils::FileContainer files(const QStringList &nameFilters,
const QStringList &exclusionFilters,
const 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");
}
FileIterator *FindInFiles::files(const QStringList &nameFilters,
FileContainer FindInFiles::files(const QStringList &nameFilters,
const QStringList &exclusionFilters,
const QVariant &additionalParameters) const
{
return new SubDirFileIterator({FilePath::fromVariant(additionalParameters)},
nameFilters,
exclusionFilters,
EditorManager::defaultTextCodec());
return SubDirFileContainer({FilePath::fromVariant(additionalParameters)}, nameFilters,
exclusionFilters, EditorManager::defaultTextCodec());
}
QVariant FindInFiles::additionalParameters() const

View File

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

View File

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

View File

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