BaseFileFind: Get rid of getAdditionalParameters()

Remove recheckEnabled() and introduce setupSearch()
virtual method. The latter is called just once per
SearchResult instance (on first search), so we may
store the additional parameter (current project
file path) in lambda capture.

Change-Id: I7683e818bec8f1d787bdb33c573248b252b47c78
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Jarek Kobus
2023-06-28 09:55:53 +02:00
parent b12ba08de0
commit 176ada90a8
4 changed files with 19 additions and 23 deletions

View File

@@ -83,16 +83,20 @@ void CurrentProjectFind::handleProjectChanged()
emit displayNameChanged();
}
void CurrentProjectFind::recheckEnabled(Core::SearchResult *search)
void CurrentProjectFind::setupSearch(Core::SearchResult *search)
{
const FilePath projectFile = FilePath::fromVariant(getAdditionalParameters(search));
for (Project *project : ProjectManager::projects()) {
Project *project = ProjectTree::currentProject();
const FilePath projectFile = project ? project->projectFilePath() : FilePath();
connect(this, &IFindFilter::enabledChanged, search, [search, projectFile] {
const QList<Project *> projects = ProjectManager::projects();
for (Project *project : projects) {
if (projectFile == project->projectFilePath()) {
search->setSearchAgainEnabled(true);
return;
}
}
search->setSearchAgainEnabled(false);
});
}
void CurrentProjectFind::writeSettings(QSettings *settings)

View File

@@ -35,7 +35,7 @@ protected:
private:
void handleProjectChanged();
void recheckEnabled(Core::SearchResult *search) override;
void setupSearch(Core::SearchResult *search) override;
};
} // namespace Internal

View File

@@ -313,6 +313,7 @@ void BaseFileFind::runNewSearch(const QString &txt, FindFlags findFlags,
tooltip.arg(IFindFilter::descriptionForFindFlags(findFlags)),
txt, searchMode, SearchResultWindow::PreserveCaseEnabled,
QString::fromLatin1("TextEditor"));
setupSearch(search);
search->setTextToReplace(txt);
search->setSearchAgainSupported(true);
FileFindParameters parameters;
@@ -333,9 +334,6 @@ void BaseFileFind::runNewSearch(const QString &txt, FindFlags findFlags,
connect(search, &SearchResult::searchAgainRequested, this, [this, search] {
searchAgain(search);
});
connect(this, &BaseFileFind::enabledChanged, search, [this, search] {
recheckEnabled(search);
});
runSearch(search);
}
@@ -525,11 +523,11 @@ void BaseFileFind::searchAgain(SearchResult *search)
runSearch(search);
}
void BaseFileFind::recheckEnabled(SearchResult *search)
void BaseFileFind::setupSearch(SearchResult *search)
{
if (!search)
return;
connect(this, &IFindFilter::enabledChanged, search, [this, search] {
search->setSearchAgainEnabled(isEnabled());
});
}
FilePaths BaseFileFind::replaceAll(const QString &text, const SearchResultItems &items,
@@ -600,11 +598,6 @@ FilePaths BaseFileFind::replaceAll(const QString &text, const SearchResultItems
return changes.keys();
}
QVariant BaseFileFind::getAdditionalParameters(SearchResult *search)
{
return search->userData().value<FileFindParameters>().additionalParameters;
}
QFuture<SearchResultItems> BaseFileFind::executeSearch(const FileFindParameters &parameters)
{
return d->m_searchEngines[parameters.searchEngineIndex]->executeSearch(parameters, this);

View File

@@ -101,7 +101,6 @@ public:
protected:
virtual QVariant additionalParameters() const = 0;
static QVariant getAdditionalParameters(Core::SearchResult *search);
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
@@ -126,7 +125,7 @@ private:
void doReplace(const QString &txt, const Utils::SearchResultItems &items, bool preserveCase);
void hideHighlightAll(bool visible);
void searchAgain(Core::SearchResult *search);
virtual void recheckEnabled(Core::SearchResult *search);
virtual void setupSearch(Core::SearchResult *search);
void runNewSearch(const QString &txt, Utils::FindFlags findFlags,
Core::SearchResultWindow::SearchMode searchMode);