forked from qt-creator/qt-creator
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:
@@ -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
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -148,11 +148,10 @@ public:
|
||||
QFuture<SearchResultItems> executeSearch(const TextEditor::FileFindParameters ¶meters,
|
||||
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());
|
||||
|
||||
}
|
||||
|
@@ -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;
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user