From bf09d179928c29983b4d18d1eef506615ac24234 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Wed, 28 Jun 2023 22:42:22 +0200 Subject: [PATCH] BaseFileFind: Replace additionalParameters() with searchDir() The FileFindParameters::additionalParameters, holding QVariant, was ambiguous. Since GitGrep and SilverSearcher need a search directory input unconditionally, replace the additionalParameters field with searchDir of FilePath type. For Internal search engine, this field isn't used - the searchDir is already passed in FindInFiles::fileContainerProvider() with lambda capture; for other BaseFileFind subclasses, not combined with non-Internal search engine, the field isn't used anyway. This change closes the chain of patches to eliminate the usage of ambiguous QVariant type inside FileFindParameters. Change-Id: Icddd1cfe46e86ea892221862d9d267f9c9fa173c Reviewed-by: Orgad Shaneh Reviewed-by: Qt CI Bot --- src/plugins/git/gitgrep.cpp | 15 ++++++--------- src/plugins/projectexplorer/allprojectsfind.cpp | 5 ----- src/plugins/projectexplorer/allprojectsfind.h | 2 -- .../projectexplorer/currentprojectfind.cpp | 8 -------- src/plugins/projectexplorer/currentprojectfind.h | 1 - .../silversearcher/findinfilessilversearcher.cpp | 4 +--- src/plugins/texteditor/basefilefind.cpp | 2 +- src/plugins/texteditor/basefilefind.h | 4 ++-- src/plugins/texteditor/findincurrentfile.cpp | 5 ----- src/plugins/texteditor/findincurrentfile.h | 1 - src/plugins/texteditor/findinfiles.cpp | 13 ++++--------- src/plugins/texteditor/findinfiles.h | 3 +-- src/plugins/texteditor/findinopenfiles.cpp | 5 ----- src/plugins/texteditor/findinopenfiles.h | 1 - 14 files changed, 15 insertions(+), 54 deletions(-) diff --git a/src/plugins/git/gitgrep.cpp b/src/plugins/git/gitgrep.cpp index ccd9ac5af91..8961f45c77a 100644 --- a/src/plugins/git/gitgrep.cpp +++ b/src/plugins/git/gitgrep.cpp @@ -134,10 +134,7 @@ static SearchResultItems parse(const QFuture &future, const QString &input static void runGitGrep(QPromise &promise, const FileFindParameters ¶meters, const GitGrepParameters &gitParameters) { - const FilePath directory = FilePath::fromString(parameters.additionalParameters.toString()); - const QString ref = gitParameters.ref.isEmpty() ? QString() : gitParameters.ref + ':'; - - const auto setupProcess = [&](Process &process) { + const auto setupProcess = [¶meters, gitParameters](Process &process) { const FilePath vcsBinary = GitClient::instance()->vcsBinary(); const Environment environment = GitClient::instance()->processEnvironment(); @@ -173,12 +170,13 @@ static void runGitGrep(QPromise &promise, const FileFindParam process.setEnvironment(environment); process.setCommand({vcsBinary, arguments}); - process.setWorkingDirectory(directory); + process.setWorkingDirectory(parameters.searchDir); }; - const auto outputParser = [&ref, &directory](const QFuture &future, const QString &input, + const QString ref = gitParameters.ref.isEmpty() ? QString() : gitParameters.ref + ':'; + const auto outputParser = [&ref, ¶meters](const QFuture &future, const QString &input, const std::optional ®Exp) { - return parse(future, input, regExp, ref, directory); + return parse(future, input, regExp, ref, parameters.searchDir); }; TextEditor::searchInProcessOutput(promise, parameters, setupProcess, outputParser); @@ -274,9 +272,8 @@ EditorOpener GitGrep::editorOpener() const if (params.ref.isEmpty() || itemPath.isEmpty()) return nullptr; const FilePath path = FilePath::fromUserInput(itemPath.first()); - const FilePath topLevel = FilePath::fromString(parameters.additionalParameters.toString()); IEditor *editor = GitClient::instance()->openShowEditor( - topLevel, params.ref, path, GitClient::ShowEditor::OnlyIfDifferent); + parameters.searchDir, params.ref, path, GitClient::ShowEditor::OnlyIfDifferent); if (editor) editor->gotoLine(item.mainRange().begin.line, item.mainRange().begin.column); return editor; diff --git a/src/plugins/projectexplorer/allprojectsfind.cpp b/src/plugins/projectexplorer/allprojectsfind.cpp index c9fdcb11225..0f99b2db00e 100644 --- a/src/plugins/projectexplorer/allprojectsfind.cpp +++ b/src/plugins/projectexplorer/allprojectsfind.cpp @@ -79,11 +79,6 @@ FileContainer AllProjectsFind::filesForProjects(const QStringList &nameFilters, return FileListContainer(encodings.keys(), encodings.values()); } -QVariant AllProjectsFind::additionalParameters() const -{ - return QVariant(); -} - QString AllProjectsFind::label() const { return Tr::tr("All Projects:"); diff --git a/src/plugins/projectexplorer/allprojectsfind.h b/src/plugins/projectexplorer/allprojectsfind.h index c4d70e1a1c5..d3fcd536d57 100644 --- a/src/plugins/projectexplorer/allprojectsfind.h +++ b/src/plugins/projectexplorer/allprojectsfind.h @@ -33,8 +33,6 @@ protected: static Utils::FileContainer filesForProjects(const QStringList &nameFilters, const QStringList &exclusionFilters, const QList &projects); - - QVariant additionalParameters() const override; QString label() const override; QString toolTip() const override; diff --git a/src/plugins/projectexplorer/currentprojectfind.cpp b/src/plugins/projectexplorer/currentprojectfind.cpp index 7bd8bd332c9..4cece1f5b6f 100644 --- a/src/plugins/projectexplorer/currentprojectfind.cpp +++ b/src/plugins/projectexplorer/currentprojectfind.cpp @@ -49,14 +49,6 @@ bool CurrentProjectFind::isEnabled() const return ProjectTree::currentProject() != nullptr && BaseFileFind::isEnabled(); } -QVariant CurrentProjectFind::additionalParameters() const -{ - Project *project = ProjectTree::currentProject(); - if (project) - return project->projectFilePath().toVariant(); - return QVariant(); -} - static FilePath currentProjectFilePath() { Project *project = ProjectTree::currentProject(); diff --git a/src/plugins/projectexplorer/currentprojectfind.h b/src/plugins/projectexplorer/currentprojectfind.h index 4ac5e4eeb30..c9ed8cdba33 100644 --- a/src/plugins/projectexplorer/currentprojectfind.h +++ b/src/plugins/projectexplorer/currentprojectfind.h @@ -27,7 +27,6 @@ public: void readSettings(QSettings *settings) override; protected: - QVariant additionalParameters() const override; QString label() const override; private: diff --git a/src/plugins/silversearcher/findinfilessilversearcher.cpp b/src/plugins/silversearcher/findinfilessilversearcher.cpp index a339b671398..728367d1e5e 100644 --- a/src/plugins/silversearcher/findinfilessilversearcher.cpp +++ b/src/plugins/silversearcher/findinfilessilversearcher.cpp @@ -57,8 +57,6 @@ static void runSilverSeacher(QPromise &promise, const FileFindParameters ¶meters, const QString &searchOptions) { const auto setupProcess = [parameters, searchOptions](Process &process) { - const FilePath directory - = FilePath::fromUserInput(parameters.additionalParameters.toString()); QStringList arguments = {"--parallel", "--ackmate"}; if (parameters.flags & FindCaseSensitively) @@ -85,7 +83,7 @@ static void runSilverSeacher(QPromise &promise, if (!searchOptions.isEmpty()) arguments << searchOptions.split(' '); - arguments << "--" << parameters.text << directory.normalizedPathName().toString(); + arguments << "--" << parameters.text << parameters.searchDir.normalizedPathName().toString(); process.setCommand({"ag", arguments}); }; diff --git a/src/plugins/texteditor/basefilefind.cpp b/src/plugins/texteditor/basefilefind.cpp index 7435d00b264..4372abba6b0 100644 --- a/src/plugins/texteditor/basefilefind.cpp +++ b/src/plugins/texteditor/basefilefind.cpp @@ -313,7 +313,7 @@ void BaseFileFind::runNewSearch(const QString &txt, FindFlags findFlags, parameters.flags = findFlags; parameters.nameFilters = fileNameFilters(); parameters.exclusionFilters = fileExclusionFilters(); - parameters.additionalParameters = additionalParameters(); + parameters.searchDir = searchDir(); parameters.fileContainerProvider = fileContainerProvider(); parameters.editorOpener = searchEngine->editorOpener(); parameters.searchExecutor = searchEngine->searchExecutor(); diff --git a/src/plugins/texteditor/basefilefind.h b/src/plugins/texteditor/basefilefind.h index 58a51263cae..da740d15bc5 100644 --- a/src/plugins/texteditor/basefilefind.h +++ b/src/plugins/texteditor/basefilefind.h @@ -40,7 +40,7 @@ public: QString text; QStringList nameFilters; QStringList exclusionFilters; - QVariant additionalParameters; + Utils::FilePath searchDir; Utils::FindFlags flags; FileContainerProvider fileContainerProvider = {}; EditorOpener editorOpener = {}; @@ -102,7 +102,7 @@ public: bool preserveCase = false); protected: - virtual QVariant additionalParameters() const = 0; + virtual Utils::FilePath searchDir() const { return {}; } virtual QString label() const = 0; // see Core::SearchResultWindow::startNewSearch virtual QString toolTip() const = 0; // see Core::SearchResultWindow::startNewSearch, // add %1 placeholder where the find flags should be put diff --git a/src/plugins/texteditor/findincurrentfile.cpp b/src/plugins/texteditor/findincurrentfile.cpp index 197d02f53e6..2a61602569a 100644 --- a/src/plugins/texteditor/findincurrentfile.cpp +++ b/src/plugins/texteditor/findincurrentfile.cpp @@ -47,11 +47,6 @@ FileContainerProvider FindInCurrentFile::fileContainerProvider() const }; } -QVariant FindInCurrentFile::additionalParameters() const -{ - return m_currentDocument->filePath().toVariant(); -} - QString FindInCurrentFile::label() const { return Tr::tr("File \"%1\":").arg(m_currentDocument->filePath().fileName()); diff --git a/src/plugins/texteditor/findincurrentfile.h b/src/plugins/texteditor/findincurrentfile.h index 5eb75de05b0..7b0b17712c8 100644 --- a/src/plugins/texteditor/findincurrentfile.h +++ b/src/plugins/texteditor/findincurrentfile.h @@ -29,7 +29,6 @@ public: void readSettings(QSettings *settings) override; protected: - QVariant additionalParameters() const override; QString label() const override; QString toolTip() const override; diff --git a/src/plugins/texteditor/findinfiles.cpp b/src/plugins/texteditor/findinfiles.cpp index 3f073f82296..89a4c0763b0 100644 --- a/src/plugins/texteditor/findinfiles.cpp +++ b/src/plugins/texteditor/findinfiles.cpp @@ -61,23 +61,18 @@ QString FindInFiles::displayName() const FileContainerProvider FindInFiles::fileContainerProvider() const { return [nameFilters = fileNameFilters(), exclusionFilters = fileExclusionFilters(), - filePath = path()] { + filePath = searchDir()] { return SubDirFileContainer({filePath}, nameFilters, exclusionFilters, EditorManager::defaultTextCodec()); }; } -QVariant FindInFiles::additionalParameters() const -{ - return path().toVariant(); -} - QString FindInFiles::label() const { QString title = currentSearchEngine()->title(); const QChar slash = QLatin1Char('/'); - const QStringList &nonEmptyComponents = path().toFileInfo().absoluteFilePath() + const QStringList &nonEmptyComponents = searchDir().toFileInfo().absoluteFilePath() .split(slash, Qt::SkipEmptyParts); return Tr::tr("%1 \"%2\":") .arg(title) @@ -88,7 +83,7 @@ QString FindInFiles::toolTip() const { //: the last arg is filled by BaseFileFind::runNewSearch QString tooltip = Tr::tr("Path: %1\nFilter: %2\nExcluding: %3\n%4") - .arg(path().toUserOutput()) + .arg(searchDir().toUserOutput()) .arg(fileNameFilters().join(',')) .arg(fileExclusionFilters().join(',')); @@ -186,7 +181,7 @@ QWidget *FindInFiles::createConfigWidget() return m_configWidget; } -FilePath FindInFiles::path() const +FilePath FindInFiles::searchDir() const { return m_directory->filePath(); } diff --git a/src/plugins/texteditor/findinfiles.h b/src/plugins/texteditor/findinfiles.h index 3713ab0b1d7..d874e110383 100644 --- a/src/plugins/texteditor/findinfiles.h +++ b/src/plugins/texteditor/findinfiles.h @@ -44,7 +44,7 @@ signals: void pathChanged(const Utils::FilePath &directory); protected: - QVariant additionalParameters() const override; + Utils::FilePath searchDir() const override; QString label() const override; QString toolTip() const override; void syncSearchEngineCombo(int selectedSearchEngineIndex) override; @@ -53,7 +53,6 @@ private: FileContainerProvider fileContainerProvider() const override; void setValid(bool valid); void searchEnginesSelectionChanged(int index); - Utils::FilePath path() const; QPointer m_configWidget; QPointer m_directory; diff --git a/src/plugins/texteditor/findinopenfiles.cpp b/src/plugins/texteditor/findinopenfiles.cpp index 6b3e7dbe9cb..2f2ee8de1d4 100644 --- a/src/plugins/texteditor/findinopenfiles.cpp +++ b/src/plugins/texteditor/findinopenfiles.cpp @@ -57,11 +57,6 @@ FileContainerProvider FindInOpenFiles::fileContainerProvider() const }; } -QVariant FindInOpenFiles::additionalParameters() const -{ - return {}; -} - QString FindInOpenFiles::label() const { return Tr::tr("Open documents:"); diff --git a/src/plugins/texteditor/findinopenfiles.h b/src/plugins/texteditor/findinopenfiles.h index a96cd4f0611..969a5ea5318 100644 --- a/src/plugins/texteditor/findinopenfiles.h +++ b/src/plugins/texteditor/findinopenfiles.h @@ -22,7 +22,6 @@ public: void readSettings(QSettings *settings) override; protected: - QVariant additionalParameters() const override; QString label() const override; QString toolTip() const override;