Find: Avoid saving default values for advanced search

Change-Id: I69454675c15a9eb92d0665ea6f88f0969a532eb8
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Eike Ziller
2024-05-28 15:05:06 +02:00
parent f870e7ffdf
commit f7c7cd0ae9
9 changed files with 56 additions and 29 deletions

View File

@@ -169,8 +169,10 @@ QWidget *SymbolsFindFilter::createConfigWidget()
Store SymbolsFindFilter::save() const
{
Store s;
s.insert(SETTINGS_SYMBOLTYPES, int(m_symbolsToSearch));
s.insert(SETTINGS_SEARCHSCOPE, int(m_scope));
if (m_symbolsToSearch != SearchSymbols::AllTypes)
s.insert(SETTINGS_SYMBOLTYPES, int(m_symbolsToSearch));
if (m_scope != SymbolSearcher::SearchProjectsOnly)
s.insert(SETTINGS_SEARCHSCOPE, int(m_scope));
return s;
}

View File

@@ -113,16 +113,19 @@ QWidget *AllProjectsFind::createConfigWidget()
return m_configWidget;
}
const char kDefaultInclusion[] = "*";
const char kDefaultExclusion[] = "";
Store AllProjectsFind::save() const
{
Store s;
writeCommonSettings(s);
writeCommonSettings(s, kDefaultInclusion, kDefaultExclusion);
return s;
}
void AllProjectsFind::restore(const Utils::Store &s)
{
readCommonSettings(s, "*", "");
readCommonSettings(s, kDefaultInclusion, kDefaultExclusion);
}
QByteArray AllProjectsFind::settingsKey() const

View File

@@ -118,16 +118,19 @@ void CurrentProjectFind::setupSearch(Core::SearchResult *search)
});
}
const char kDefaultInclusion[] = "*";
const char kDefaultExclusion[] = "";
Store CurrentProjectFind::save() const
{
Store s;
writeCommonSettings(s);
writeCommonSettings(s, kDefaultInclusion, kDefaultExclusion);
return s;
}
void CurrentProjectFind::restore(const Store &s)
{
readCommonSettings(s, "*", "");
readCommonSettings(s, kDefaultInclusion, kDefaultExclusion);
}
QByteArray CurrentProjectFind::settingsKey() const

View File

@@ -29,20 +29,20 @@ QString FilesInAllProjectsFind::displayName() const
}
const char kSettingsKey[] = "FilesInAllProjectDirectories";
const char kDefaultInclusion[]
= "CMakeLists.txt,*.cmake,*.pro,*.pri,*.qbs,*.cpp,*.h,*.mm,*.qml,*.md,*.txt,*.qdoc";
const char kDefaultExclusion[] = "*/.git/*,*/.cvs/*,*/.svn/*,*.autosave,*/build/*";
Store FilesInAllProjectsFind::save() const
{
Store s;
writeCommonSettings(s);
writeCommonSettings(s, kDefaultInclusion, kDefaultExclusion);
return s;
}
void FilesInAllProjectsFind::restore(const Utils::Store &s)
{
readCommonSettings(
s,
"CMakeLists.txt,*.cmake,*.pro,*.pri,*.qbs,*.cpp,*.h,*.mm,*.qml,*.md,*.txt,*.qdoc",
"*/.git/*,*/.cvs/*,*/.svn/*,*.autosave,*/build/*");
readCommonSettings(s, kDefaultInclusion, kDefaultExclusion);
}
QByteArray FilesInAllProjectsFind::settingsKey() const

View File

@@ -442,25 +442,34 @@ FilePath BaseFileFind::searchDir() const
return d->m_searchDir;
}
void BaseFileFind::writeCommonSettings(Store &s) const
void BaseFileFind::writeCommonSettings(
Store &s, const QString &defaultFilter, const QString &defaultExclusionFilter) const
{
const auto fromNativeSeparators = [](const QStringList &files) -> QStringList {
return Utils::transform(files, &QDir::fromNativeSeparators);
};
s.insert("filters", fromNativeSeparators(d->m_filterStrings.stringList()));
if (d->m_filterCombo)
s.insert("currentFilter", QDir::fromNativeSeparators(d->m_filterCombo->currentText()));
s.insert("exclusionFilters", fromNativeSeparators(d->m_exclusionStrings.stringList()));
if (d->m_exclusionCombo) {
s.insert(
"currentExclusionFilter",
QDir::fromNativeSeparators(d->m_exclusionCombo->currentText()));
}
const QStringList filterStrings = fromNativeSeparators(d->m_filterStrings.stringList());
if (filterStrings.size() != 1 || filterStrings.first() != defaultFilter)
s.insert("filters", filterStrings);
const QString currentFilter = d->m_filterCombo
? QDir::fromNativeSeparators(d->m_filterCombo->currentText())
: d->m_filterSetting;
if (currentFilter != defaultFilter)
s.insert("currentFilter", currentFilter);
const QStringList exclusionFilters = fromNativeSeparators(d->m_exclusionStrings.stringList());
if (exclusionFilters.size() != 1 || exclusionFilters.first() != defaultExclusionFilter)
s.insert("exclusionFilters", exclusionFilters);
const QString currentExclusionFilter = d->m_exclusionCombo ? QDir::fromNativeSeparators(
d->m_exclusionCombo->currentText())
: d->m_exclusionSetting;
if (currentExclusionFilter != defaultExclusionFilter)
s.insert("currentExclusionFilter", currentExclusionFilter);
for (const SearchEngine *searchEngine : std::as_const(d->m_searchEngines))
searchEngine->writeSettings(s);
s.insert("currentSearchEngineIndex", d->m_currentSearchEngineIndex);
if (d->m_currentSearchEngineIndex != 0)
s.insert("currentSearchEngineIndex", d->m_currentSearchEngineIndex);
}
void BaseFileFind::readCommonSettings(

View File

@@ -108,7 +108,8 @@ protected:
virtual QString toolTip() const = 0; // see Core::SearchResultWindow::startNewSearch,
// add %1 placeholder where the find flags should be put
void writeCommonSettings(Utils::Store &s) const;
void writeCommonSettings(
Utils::Store &s, const QString &defaultFilter, const QString &defaultExclusionFilter) const;
void readCommonSettings(
const Utils::Store &s, const QString &defaultFilter, const QString &defaultExclusionFilter);
QList<QPair<QWidget *, QWidget *>> createPatternWidgets();

View File

@@ -100,16 +100,19 @@ void FindInCurrentFile::handleFileChange(Core::IEditor *editor)
}
}
const char kDefaultInclusion[] = "*";
const char kDefaultExclusion[] = "";
Store FindInCurrentFile::save() const
{
Store s;
writeCommonSettings(s);
writeCommonSettings(s, kDefaultInclusion, kDefaultExclusion);
return s;
}
void FindInCurrentFile::restore(const Store &s)
{
readCommonSettings(s, "*", "");
readCommonSettings(s, kDefaultInclusion, kDefaultExclusion);
}
QByteArray FindInCurrentFile::settingsKey() const

View File

@@ -188,16 +188,19 @@ QWidget *FindInFiles::createConfigWidget()
return m_configWidget;
}
const char kDefaultInclusion[] = "*.cpp,*.h";
const char kDefaultExclusion[] = "*/.git/*,*/.cvs/*,*/.svn/*,*.autosave,*/build/*";
Store FindInFiles::save() const
{
Store s;
writeCommonSettings(s);
writeCommonSettings(s, kDefaultInclusion, kDefaultExclusion);
return s;
}
void FindInFiles::restore(const Utils::Store &s)
{
readCommonSettings(s, "*.cpp,*.h", "*/.git/*,*/.cvs/*,*/.svn/*,*.autosave,*/build/*");
readCommonSettings(s, kDefaultInclusion, kDefaultExclusion);
}
QByteArray FindInFiles::settingsKey() const

View File

@@ -93,16 +93,19 @@ bool FindInOpenFiles::isEnabled() const
return Core::DocumentModel::entryCount() > 0;
}
const char kDefaultInclusion[] = "*";
const char kDefaultExclusion[] = "";
Store FindInOpenFiles::save() const
{
Store s;
writeCommonSettings(s);
writeCommonSettings(s, kDefaultInclusion, kDefaultExclusion);
return s;
}
void FindInOpenFiles::restore(const Store &s)
{
readCommonSettings(s, "*", "");
readCommonSettings(s, kDefaultInclusion, kDefaultExclusion);
}
QByteArray FindInOpenFiles::settingsKey() const