BaseFileFind: Coding style

Use braced initializer lists, range-based for, more const, more auto,
more unique_ptr, avoid sender().

Change-Id: Id43c81c498247a6d3722fab1937c83d80e701ec2
Reviewed-by: Xing Xiong
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
Eike Ziller
2019-02-18 15:05:13 +01:00
parent 4a1cb7695c
commit aa14e396f0
2 changed files with 42 additions and 39 deletions

View File

@@ -65,18 +65,17 @@ public:
InternalEngine() : m_widget(new QWidget) {} InternalEngine() : m_widget(new QWidget) {}
~InternalEngine() override { delete m_widget;} ~InternalEngine() override { delete m_widget;}
QString title() const override { return TextEditor::SearchEngine::tr("Internal"); } QString title() const override { return TextEditor::SearchEngine::tr("Internal"); }
QString toolTip() const override { return QString(); } QString toolTip() const override { return {}; }
QWidget *widget() const override { return m_widget; } QWidget *widget() const override { return m_widget; }
QVariant parameters() const override { return QVariant(); } QVariant parameters() const override { return {}; }
void readSettings(QSettings * /*settings*/) override {} void readSettings(QSettings * /*settings*/) override {}
void writeSettings(QSettings * /*settings*/) const override {} void writeSettings(QSettings * /*settings*/) const override {}
QFuture<Utils::FileSearchResultList> executeSearch( QFuture<Utils::FileSearchResultList> executeSearch(
const TextEditor::FileFindParameters &parameters, const TextEditor::FileFindParameters &parameters,
BaseFileFind *baseFileFind) override BaseFileFind *baseFileFind) override
{ {
auto func = parameters.flags & FindRegularExpression const auto func = parameters.flags & FindRegularExpression ? Utils::findInFilesRegExp
? Utils::findInFilesRegExp : Utils::findInFiles;
: Utils::findInFiles;
return func(parameters.text, return func(parameters.text,
baseFileFind->files(parameters.nameFilters, parameters.exclusionFilters, baseFileFind->files(parameters.nameFilters, parameters.exclusionFilters,
@@ -112,7 +111,8 @@ public:
class BaseFileFindPrivate class BaseFileFindPrivate
{ {
public: public:
~BaseFileFindPrivate() { delete m_internalSearchEngine; } BaseFileFindPrivate() : m_internalSearchEngine(std::make_unique<InternalEngine>()) {}
QPointer<IFindSupport> m_currentFindSupport; QPointer<IFindSupport> m_currentFindSupport;
QLabel *m_resultLabel = nullptr; QLabel *m_resultLabel = nullptr;
@@ -125,7 +125,7 @@ public:
QPointer<QComboBox> m_filterCombo; QPointer<QComboBox> m_filterCombo;
QPointer<QComboBox> m_exclusionCombo; QPointer<QComboBox> m_exclusionCombo;
QVector<SearchEngine *> m_searchEngines; QVector<SearchEngine *> m_searchEngines;
SearchEngine *m_internalSearchEngine; std::unique_ptr<SearchEngine> m_internalSearchEngine;
int m_currentSearchEngineIndex = -1; int m_currentSearchEngineIndex = -1;
}; };
@@ -182,8 +182,7 @@ void SearchEngine::setEnabled(bool enabled)
BaseFileFind::BaseFileFind() : d(new BaseFileFindPrivate) BaseFileFind::BaseFileFind() : d(new BaseFileFindPrivate)
{ {
d->m_internalSearchEngine = new InternalEngine; addSearchEngine(d->m_internalSearchEngine.get());
addSearchEngine(d->m_internalSearchEngine);
} }
BaseFileFind::~BaseFileFind() BaseFileFind::~BaseFileFind()
@@ -200,14 +199,14 @@ QStringList BaseFileFind::fileNameFilters() const
{ {
if (d->m_filterCombo) if (d->m_filterCombo)
return splitFilterUiText(d->m_filterCombo->currentText()); return splitFilterUiText(d->m_filterCombo->currentText());
return QStringList(); return {};
} }
QStringList BaseFileFind::fileExclusionFilters() const QStringList BaseFileFind::fileExclusionFilters() const
{ {
if (d->m_exclusionCombo) if (d->m_exclusionCombo)
return splitFilterUiText(d->m_exclusionCombo->currentText()); return splitFilterUiText(d->m_exclusionCombo->currentText());
return QStringList(); return {};
} }
SearchEngine *BaseFileFind::currentSearchEngine() const SearchEngine *BaseFileFind::currentSearchEngine() const
@@ -233,11 +232,11 @@ void BaseFileFind::setCurrentSearchEngine(int index)
static void displayResult(QFutureWatcher<FileSearchResultList> *watcher, static void displayResult(QFutureWatcher<FileSearchResultList> *watcher,
SearchResult *search, int index) SearchResult *search, int index)
{ {
FileSearchResultList results = watcher->resultAt(index); const FileSearchResultList results = watcher->resultAt(index);
QList<SearchResultItem> items; QList<SearchResultItem> items;
foreach (const FileSearchResult &result, results) { for (const FileSearchResult &result : results) {
SearchResultItem item; SearchResultItem item;
item.path = QStringList() << QDir::toNativeSeparators(result.fileName); item.path = QStringList(QDir::toNativeSeparators(result.fileName));
item.mainRange.begin.line = result.lineNumber; item.mainRange.begin.line = result.lineNumber;
item.mainRange.begin.column = result.matchStart; item.mainRange.begin.column = result.matchStart;
item.mainRange.end = item.mainRange.begin; item.mainRange.end = item.mainRange.begin;
@@ -258,7 +257,7 @@ void BaseFileFind::runNewSearch(const QString &txt, FindFlags findFlags,
updateComboEntries(d->m_filterCombo, true); updateComboEntries(d->m_filterCombo, true);
if (d->m_exclusionCombo) if (d->m_exclusionCombo)
updateComboEntries(d->m_exclusionCombo, true); updateComboEntries(d->m_exclusionCombo, true);
QString tooltip = toolTip(); const QString tooltip = toolTip();
SearchResult *search = SearchResultWindow::instance()->startNewSearch( SearchResult *search = SearchResultWindow::instance()->startNewSearch(
label(), label(),
@@ -276,20 +275,26 @@ void BaseFileFind::runNewSearch(const QString &txt, FindFlags findFlags,
parameters.searchEngineParameters = currentSearchEngine()->parameters(); parameters.searchEngineParameters = currentSearchEngine()->parameters();
parameters.searchEngineIndex = d->m_currentSearchEngineIndex; parameters.searchEngineIndex = d->m_currentSearchEngineIndex;
search->setUserData(qVariantFromValue(parameters)); search->setUserData(qVariantFromValue(parameters));
connect(search, &SearchResult::activated, this, &BaseFileFind::openEditor); connect(search, &SearchResult::activated, this, [this, search](const SearchResultItem &item) {
openEditor(search, item);
});
if (searchMode == SearchResultWindow::SearchAndReplace) if (searchMode == SearchResultWindow::SearchAndReplace)
connect(search, &SearchResult::replaceButtonClicked, this, &BaseFileFind::doReplace); connect(search, &SearchResult::replaceButtonClicked, this, &BaseFileFind::doReplace);
connect(search, &SearchResult::visibilityChanged, this, &BaseFileFind::hideHighlightAll); connect(search, &SearchResult::visibilityChanged, this, &BaseFileFind::hideHighlightAll);
connect(search, &SearchResult::searchAgainRequested, this, &BaseFileFind::searchAgain); connect(search, &SearchResult::searchAgainRequested, this, [this, search] {
searchAgain(search);
});
connect(this, &BaseFileFind::enabledChanged, search, &SearchResult::requestEnabledCheck); connect(this, &BaseFileFind::enabledChanged, search, &SearchResult::requestEnabledCheck);
connect(search, &SearchResult::requestEnabledCheck, this, &BaseFileFind::recheckEnabled); connect(search, &SearchResult::requestEnabledCheck, this, [this, search] {
recheckEnabled(search);
});
runSearch(search); runSearch(search);
} }
void BaseFileFind::runSearch(SearchResult *search) void BaseFileFind::runSearch(SearchResult *search)
{ {
FileFindParameters parameters = search->userData().value<FileFindParameters>(); const FileFindParameters parameters = search->userData().value<FileFindParameters>();
auto label = new CountingLabel; auto label = new CountingLabel;
connect(search, &SearchResult::countChanged, label, &CountingLabel::updateCount); connect(search, &SearchResult::countChanged, label, &CountingLabel::updateCount);
auto statusLabel = new CountingLabel; auto statusLabel = new CountingLabel;
@@ -341,7 +346,7 @@ void BaseFileFind::doReplace(const QString &text,
const QList<SearchResultItem> &items, const QList<SearchResultItem> &items,
bool preserveCase) bool preserveCase)
{ {
QStringList files = replaceAll(text, items, preserveCase); const QStringList files = replaceAll(text, items, preserveCase);
if (!files.isEmpty()) { if (!files.isEmpty()) {
Utils::FadingIndicator::showText(ICore::mainWindow(), Utils::FadingIndicator::showText(ICore::mainWindow(),
tr("%n occurrences replaced.", nullptr, items.size()), tr("%n occurrences replaced.", nullptr, items.size()),
@@ -391,7 +396,7 @@ QList<QPair<QWidget *, QWidget *>> BaseFileFind::createPatternWidgets()
void BaseFileFind::writeCommonSettings(QSettings *settings) void BaseFileFind::writeCommonSettings(QSettings *settings)
{ {
std::function<QStringList(const QStringList &)> fromNativeSeparators = [](const QStringList &files) { const auto fromNativeSeparators = [](const QStringList &files) -> QStringList {
return Utils::transform(files, &QDir::fromNativeSeparators); return Utils::transform(files, &QDir::fromNativeSeparators);
}; };
@@ -404,7 +409,7 @@ void BaseFileFind::writeCommonSettings(QSettings *settings)
settings->setValue("currentExclusionFilter", settings->setValue("currentExclusionFilter",
QDir::fromNativeSeparators(d->m_exclusionCombo->currentText())); QDir::fromNativeSeparators(d->m_exclusionCombo->currentText()));
foreach (SearchEngine *searchEngine, d->m_searchEngines) for (const SearchEngine *searchEngine : qAsConst(d->m_searchEngines))
searchEngine->writeSettings(settings); searchEngine->writeSettings(settings);
settings->setValue("currentSearchEngineIndex", d->m_currentSearchEngineIndex); settings->setValue("currentSearchEngineIndex", d->m_currentSearchEngineIndex);
} }
@@ -412,13 +417,13 @@ void BaseFileFind::writeCommonSettings(QSettings *settings)
void BaseFileFind::readCommonSettings(QSettings *settings, const QString &defaultFilter, void BaseFileFind::readCommonSettings(QSettings *settings, const QString &defaultFilter,
const QString &defaultExclusionFilter) const QString &defaultExclusionFilter)
{ {
std::function<QStringList(const QStringList &)> toNativeSeparators = [](const QStringList &files) { const auto toNativeSeparators = [](const QStringList &files) -> QStringList {
return Utils::transform(files, &QDir::toNativeSeparators); return Utils::transform(files, &QDir::toNativeSeparators);
}; };
QStringList filters = settings->value("filters").toStringList(); const QStringList filterSetting = settings->value("filters").toStringList();
if (filters.isEmpty()) const QStringList filters = filterSetting.isEmpty() ? QStringList(defaultFilter)
filters << defaultFilter; : filterSetting;
const QVariant currentFilter = settings->value("currentFilter"); const QVariant currentFilter = settings->value("currentFilter");
d->m_filterSetting = currentFilter.isValid() ? currentFilter.toString() d->m_filterSetting = currentFilter.isValid() ? currentFilter.toString()
: filters.first(); : filters.first();
@@ -436,16 +441,15 @@ void BaseFileFind::readCommonSettings(QSettings *settings, const QString &defaul
if (d->m_exclusionCombo) if (d->m_exclusionCombo)
syncComboWithSettings(d->m_exclusionCombo, d->m_exclusionSetting); syncComboWithSettings(d->m_exclusionCombo, d->m_exclusionSetting);
foreach (SearchEngine* searchEngine, d->m_searchEngines) for (SearchEngine* searchEngine : qAsConst(d->m_searchEngines))
searchEngine->readSettings(settings); searchEngine->readSettings(settings);
const int currentSearchEngineIndex = settings->value("currentSearchEngineIndex", 0).toInt(); const int currentSearchEngineIndex = settings->value("currentSearchEngineIndex", 0).toInt();
syncSearchEngineCombo(currentSearchEngineIndex); syncSearchEngineCombo(currentSearchEngineIndex);
} }
void BaseFileFind::openEditor(const SearchResultItem &item) void BaseFileFind::openEditor(SearchResult *result, const SearchResultItem &item)
{ {
auto result = qobject_cast<SearchResult *>(sender()); const FileFindParameters parameters = result->userData().value<FileFindParameters>();
FileFindParameters parameters = result->userData().value<FileFindParameters>();
IEditor *openedEditor = IEditor *openedEditor =
d->m_searchEngines[parameters.searchEngineIndex]->openEditor(item, parameters); d->m_searchEngines[parameters.searchEngineIndex]->openEditor(item, parameters);
if (!openedEditor) if (!openedEditor)
@@ -468,16 +472,14 @@ void BaseFileFind::hideHighlightAll(bool visible)
d->m_currentFindSupport->clearHighlights(); d->m_currentFindSupport->clearHighlights();
} }
void BaseFileFind::searchAgain() void BaseFileFind::searchAgain(SearchResult *search)
{ {
auto search = qobject_cast<SearchResult *>(sender());
search->restart(); search->restart();
runSearch(search); runSearch(search);
} }
void BaseFileFind::recheckEnabled() void BaseFileFind::recheckEnabled(SearchResult *search)
{ {
auto search = qobject_cast<SearchResult *>(sender());
if (!search) if (!search)
return; return;
search->setSearchAgainEnabled(isEnabled()); search->setSearchAgainEnabled(isEnabled());
@@ -493,7 +495,7 @@ QStringList BaseFileFind::replaceAll(const QString &text,
RefactoringChanges refactoring; RefactoringChanges refactoring;
QHash<QString, QList<SearchResultItem> > changes; QHash<QString, QList<SearchResultItem> > changes;
foreach (const SearchResultItem &item, items) for (const SearchResultItem &item : items)
changes[QDir::fromNativeSeparators(item.path.first())].append(item); changes[QDir::fromNativeSeparators(item.path.first())].append(item);
// Checking for files without write permissions // Checking for files without write permissions
@@ -523,7 +525,7 @@ QStringList BaseFileFind::replaceAll(const QString &text,
ChangeSet changeSet; ChangeSet changeSet;
RefactoringFilePtr file = refactoring.file(fileName); RefactoringFilePtr file = refactoring.file(fileName);
QSet<QPair<int, int> > processed; QSet<QPair<int, int> > processed;
foreach (const SearchResultItem &item, changeItems) { for (const SearchResultItem &item : changeItems) {
const QPair<int, int> &p = qMakePair(item.mainRange.begin.line, const QPair<int, int> &p = qMakePair(item.mainRange.begin.line,
item.mainRange.begin.column); item.mainRange.begin.column);
if (processed.contains(p)) if (processed.contains(p))

View File

@@ -67,6 +67,7 @@ class TEXTEDITOR_EXPORT SearchEngine : public QObject
public: public:
SearchEngine(QObject *parent = nullptr); SearchEngine(QObject *parent = nullptr);
~SearchEngine() override; ~SearchEngine() override;
virtual QString title() const = 0; virtual QString title() const = 0;
virtual QString toolTip() const = 0; // add %1 placeholder where the find flags should be put virtual QString toolTip() const = 0; // add %1 placeholder where the find flags should be put
virtual QWidget *widget() const = 0; virtual QWidget *widget() const = 0;
@@ -132,13 +133,13 @@ signals:
void currentSearchEngineChanged(); void currentSearchEngineChanged();
private: private:
void openEditor(const Core::SearchResultItem &item); void openEditor(Core::SearchResult *result, const Core::SearchResultItem &item);
void doReplace(const QString &txt, void doReplace(const QString &txt,
const QList<Core::SearchResultItem> &items, const QList<Core::SearchResultItem> &items,
bool preserveCase); bool preserveCase);
void hideHighlightAll(bool visible); void hideHighlightAll(bool visible);
void searchAgain(); void searchAgain(Core::SearchResult *search);
void recheckEnabled(); void recheckEnabled(Core::SearchResult *search);
void runNewSearch(const QString &txt, Core::FindFlags findFlags, void runNewSearch(const QString &txt, Core::FindFlags findFlags,
Core::SearchResultWindow::SearchMode searchMode); Core::SearchResultWindow::SearchMode searchMode);