forked from qt-creator/qt-creator
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:
@@ -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 ¶meters,
|
const TextEditor::FileFindParameters ¶meters,
|
||||||
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))
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user