diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2023-04-25 00:05:01 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2023-05-16 08:13:02 +0000 |
commit | e2df60abc2acf465c2941719ab6e56573d07a762 (patch) | |
tree | 14019ad1b8c963b32e54714b15791a73b2f206d8 | |
parent | 318ac763392edf37bd2e18b15efebc7274f222b5 (diff) | |
download | qt-creator-e2df60abc2acf465c2941719ab6e56573d07a762.tar.gz |
BaseFileFilter: Remove me - I'm not needed anymore
Change-Id: I19effcb846f57838b47352c19aec0d521e1c3ecd
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
-rw-r--r-- | src/plugins/coreplugin/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/plugins/coreplugin/coreplugin.qbs | 2 | ||||
-rw-r--r-- | src/plugins/coreplugin/locator/basefilefilter.cpp | 254 | ||||
-rw-r--r-- | src/plugins/coreplugin/locator/basefilefilter.h | 61 |
4 files changed, 0 insertions, 318 deletions
diff --git a/src/plugins/coreplugin/CMakeLists.txt b/src/plugins/coreplugin/CMakeLists.txt index 0869553d8c..1507b345c9 100644 --- a/src/plugins/coreplugin/CMakeLists.txt +++ b/src/plugins/coreplugin/CMakeLists.txt @@ -99,7 +99,6 @@ add_qtc_plugin(Core iwelcomepage.cpp iwelcomepage.h iwizardfactory.cpp iwizardfactory.h jsexpander.cpp jsexpander.h - locator/basefilefilter.cpp locator/basefilefilter.h locator/commandlocator.cpp locator/commandlocator.h locator/directoryfilter.cpp locator/directoryfilter.h locator/executefilter.cpp locator/executefilter.h diff --git a/src/plugins/coreplugin/coreplugin.qbs b/src/plugins/coreplugin/coreplugin.qbs index 654f2e6bcb..2467567f01 100644 --- a/src/plugins/coreplugin/coreplugin.qbs +++ b/src/plugins/coreplugin/coreplugin.qbs @@ -327,8 +327,6 @@ Project { name: "Locator" prefix: "locator/" files: [ - "basefilefilter.cpp", - "basefilefilter.h", "commandlocator.cpp", "commandlocator.h", "directoryfilter.cpp", diff --git a/src/plugins/coreplugin/locator/basefilefilter.cpp b/src/plugins/coreplugin/locator/basefilefilter.cpp deleted file mode 100644 index d7f96b8ec1..0000000000 --- a/src/plugins/coreplugin/locator/basefilefilter.cpp +++ /dev/null @@ -1,254 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#include "basefilefilter.h" - -#include <utils/algorithm.h> -#include <utils/filepath.h> -#include <utils/link.h> -#include <utils/qtcassert.h> - -#include <QDir> -#include <QRegularExpression> - -using namespace Utils; - -namespace Core { -namespace Internal { - -class Data -{ -public: - void clear() - { - iterator.clear(); - previousResultPaths.clear(); - previousEntry.clear(); - } - - QSharedPointer<BaseFileFilter::Iterator> iterator; - FilePaths previousResultPaths; - bool forceNewSearchList; - QString previousEntry; -}; - -class BaseFileFilterPrivate -{ -public: - Data m_data; - Data m_current; -}; - -} // Internal - -/*! - \class Core::BaseFileFilter - \inheaderfile coreplugin/locator/basefilefilter.h - \inmodule QtCreator - - \brief The BaseFileFilter class is a base class for locator filter classes. -*/ - -/*! - \class Core::BaseFileFilter::Iterator - \inmodule QtCreator - \internal -*/ - -/*! - \class Core::BaseFileFilter::ListIterator - \inmodule QtCreator - \internal -*/ - -BaseFileFilter::Iterator::~Iterator() = default; - -/*! - \internal -*/ -BaseFileFilter::BaseFileFilter() - : d(new Internal::BaseFileFilterPrivate) -{ - d->m_data.forceNewSearchList = true; - setFileIterator(new ListIterator({})); -} - -/*! - \internal -*/ -BaseFileFilter::~BaseFileFilter() -{ - delete d; -} - -/*! - \reimp -*/ -void BaseFileFilter::prepareSearch(const QString &entry) -{ - Q_UNUSED(entry) - d->m_current = d->m_data; - d->m_data.forceNewSearchList = false; -} - -ILocatorFilter::MatchLevel BaseFileFilter::matchLevelFor(const QRegularExpressionMatch &match, - const QString &matchText) -{ - const int consecutivePos = match.capturedStart(1); - if (consecutivePos == 0) - return MatchLevel::Best; - if (consecutivePos > 0) { - const QChar prevChar = matchText.at(consecutivePos - 1); - if (prevChar == '_' || prevChar == '.') - return MatchLevel::Better; - } - if (match.capturedStart() == 0) - return MatchLevel::Good; - return MatchLevel::Normal; -} - -/*! - \reimp -*/ -QList<LocatorFilterEntry> BaseFileFilter::matchesFor(QFutureInterface<LocatorFilterEntry> &future, const QString &origEntry) -{ - QList<LocatorFilterEntry> entries[int(MatchLevel::Count)]; - // If search string contains spaces, treat them as wildcard '*' and search in full path - const QString entry = QDir::fromNativeSeparators(origEntry).replace(' ', '*'); - const Link link = Link::fromString(entry, true); - - const QRegularExpression regexp = createRegExp(link.targetFilePath.toString()); - if (!regexp.isValid()) { - d->m_current.clear(); // free memory - return {}; - } - auto containsPathSeparator = [](const QString &candidate) { - return candidate.contains('/') || candidate.contains('*'); - }; - - const bool hasPathSeparator = containsPathSeparator(link.targetFilePath.toString()); - const bool containsPreviousEntry = !d->m_current.previousEntry.isEmpty() - && link.targetFilePath.toString().contains(d->m_current.previousEntry); - const bool pathSeparatorAdded = !containsPathSeparator(d->m_current.previousEntry) - && hasPathSeparator; - const bool searchInPreviousResults = !d->m_current.forceNewSearchList && containsPreviousEntry - && !pathSeparatorAdded; - if (searchInPreviousResults) - d->m_current.iterator.reset(new ListIterator(d->m_current.previousResultPaths)); - - QTC_ASSERT(d->m_current.iterator.data(), return QList<LocatorFilterEntry>()); - d->m_current.previousResultPaths.clear(); - d->m_current.previousEntry = link.targetFilePath.toString(); - d->m_current.iterator->toFront(); - bool canceled = false; - while (d->m_current.iterator->hasNext()) { - if (future.isCanceled()) { - canceled = true; - break; - } - - d->m_current.iterator->next(); - FilePath path = d->m_current.iterator->filePath(); - QString matchText = hasPathSeparator ? path.toString() : path.fileName(); - QRegularExpressionMatch match = regexp.match(matchText); - - if (match.hasMatch()) { - LocatorFilterEntry filterEntry; - filterEntry.displayName = path.fileName(); - filterEntry.filePath = path; - filterEntry.extraInfo = path.shortNativePath(); - filterEntry.linkForEditor = Link(path, link.targetLine, link.targetColumn); - const MatchLevel matchLevel = matchLevelFor(match, matchText); - if (hasPathSeparator) { - match = regexp.match(filterEntry.extraInfo); - filterEntry.highlightInfo = - highlightInfo(match, LocatorFilterEntry::HighlightInfo::ExtraInfo); - } else { - filterEntry.highlightInfo = highlightInfo(match); - } - - entries[int(matchLevel)].append(filterEntry); - d->m_current.previousResultPaths.append(path); - } - } - - if (canceled) { - // we keep the old list of previous search results if this search was canceled - // so a later search without forceNewSearchList will use that previous list instead of an - // incomplete list of a canceled search - d->m_current.clear(); // free memory - } else { - d->m_current.iterator.clear(); - QMetaObject::invokeMethod(this, &BaseFileFilter::updatePreviousResultData, - Qt::QueuedConnection); - } - - for (auto &entry : entries) { - if (entry.size() < 1000) - Utils::sort(entry, LocatorFilterEntry::compareLexigraphically); - } - - return std::accumulate(std::begin(entries), std::end(entries), QList<LocatorFilterEntry>()); -} - -/*! - Takes ownership of the \a iterator. The previously set iterator might not be deleted until - a currently running search is finished. -*/ - -void BaseFileFilter::setFileIterator(BaseFileFilter::Iterator *iterator) -{ - d->m_data.clear(); - d->m_data.forceNewSearchList = true; - d->m_data.iterator.reset(iterator); -} - -/*! - Returns the file iterator. -*/ -QSharedPointer<BaseFileFilter::Iterator> BaseFileFilter::fileIterator() -{ - return d->m_data.iterator; -} - -void BaseFileFilter::updatePreviousResultData() -{ - if (d->m_data.forceNewSearchList) // in the meantime the iterator was reset / cache invalidated - return; // do not update with the new result list etc - d->m_data.previousEntry = d->m_current.previousEntry; - d->m_data.previousResultPaths = d->m_current.previousResultPaths; - // forceNewSearchList was already reset in prepareSearch -} - -BaseFileFilter::ListIterator::ListIterator(const FilePaths &filePaths) -{ - m_filePaths = filePaths; - toFront(); -} - -void BaseFileFilter::ListIterator::toFront() -{ - m_pathPosition = m_filePaths.constBegin() - 1; -} - -bool BaseFileFilter::ListIterator::hasNext() const -{ - QTC_ASSERT(m_pathPosition != m_filePaths.constEnd(), return false); - return m_pathPosition + 1 != m_filePaths.constEnd(); -} - -FilePath BaseFileFilter::ListIterator::next() -{ - QTC_ASSERT(m_pathPosition != m_filePaths.constEnd(), return {}); - ++m_pathPosition; - QTC_ASSERT(m_pathPosition != m_filePaths.constEnd(), return {}); - return *m_pathPosition; -} - -FilePath BaseFileFilter::ListIterator::filePath() const -{ - QTC_ASSERT(m_pathPosition != m_filePaths.constEnd(), return {}); - return *m_pathPosition; -} - -} // Core diff --git a/src/plugins/coreplugin/locator/basefilefilter.h b/src/plugins/coreplugin/locator/basefilefilter.h deleted file mode 100644 index 55289e57b0..0000000000 --- a/src/plugins/coreplugin/locator/basefilefilter.h +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (C) 2016 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include "ilocatorfilter.h" - -#include <utils/filepath.h> - -#include <QSharedPointer> - -namespace Core { - -namespace Internal { class BaseFileFilterPrivate; } - -class CORE_EXPORT BaseFileFilter : public ILocatorFilter -{ - Q_OBJECT - -public: - class CORE_EXPORT Iterator { - public: - virtual ~Iterator(); - virtual void toFront() = 0; - virtual bool hasNext() const = 0; - virtual Utils::FilePath next() = 0; - virtual Utils::FilePath filePath() const = 0; - }; - - class CORE_EXPORT ListIterator final : public Iterator { - public: - ListIterator(const Utils::FilePaths &filePaths); - - void toFront() override; - bool hasNext() const override; - Utils::FilePath next() override; - Utils::FilePath filePath() const override; - - private: - Utils::FilePaths m_filePaths; - Utils::FilePaths::const_iterator m_pathPosition; - }; - - BaseFileFilter(); - ~BaseFileFilter() override; - void prepareSearch(const QString &entry) override; - QList<LocatorFilterEntry> matchesFor(QFutureInterface<LocatorFilterEntry> &future, - const QString &entry) override; -protected: - void setFileIterator(Iterator *iterator); - QSharedPointer<Iterator> fileIterator(); - -private: - static MatchLevel matchLevelFor(const QRegularExpressionMatch &match, - const QString &matchText); - void updatePreviousResultData(); - - Internal::BaseFileFilterPrivate *d = nullptr; -}; - -} // namespace Core |