DirectoryFilter: Remove the old matchesFor() implementation

Change-Id: Iae8a2e3adda7fdaec69873bf4b171da98eee4874
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Jarek Kobus
2023-04-24 23:55:20 +02:00
parent 0dbc208a07
commit 0672314844
4 changed files with 23 additions and 28 deletions

View File

@@ -83,8 +83,7 @@ DirectoryFilter::DirectoryFilter(Id id)
const auto groupSetup = [this] { const auto groupSetup = [this] {
if (!m_directories.isEmpty()) if (!m_directories.isEmpty())
return TaskAction::Continue; // Async task will run return TaskAction::Continue; // Async task will run
m_files.clear(); m_cache.setFilePaths({});
updateFileIterator();
return TaskAction::StopWithDone; // Group stops, skips async task return TaskAction::StopWithDone; // Group stops, skips async task
}; };
const auto asyncSetup = [this](Async<FilePaths> &async) { const auto asyncSetup = [this](Async<FilePaths> &async) {
@@ -92,8 +91,8 @@ DirectoryFilter::DirectoryFilter(Id id)
displayName()); displayName());
}; };
const auto asyncDone = [this](const Async<FilePaths> &async) { const auto asyncDone = [this](const Async<FilePaths> &async) {
m_files = async.isResultAvailable() ? async.result() : FilePaths(); if (async.isResultAvailable())
updateFileIterator(); m_cache.setFilePaths(async.result());
}; };
const Group root { const Group root {
OnGroupSetup(groupSetup), OnGroupSetup(groupSetup),
@@ -113,10 +112,11 @@ void DirectoryFilter::saveState(QJsonObject &object) const
} }
if (m_filters != kFiltersDefault) if (m_filters != kFiltersDefault)
object.insert(kFiltersKey, QJsonArray::fromStringList(m_filters)); object.insert(kFiltersKey, QJsonArray::fromStringList(m_filters));
if (!m_files.isEmpty()) const std::optional<FilePaths> files = m_cache.filePaths();
object.insert(kFilesKey, if (files) {
QJsonArray::fromStringList( object.insert(kFilesKey, QJsonArray::fromStringList(
Utils::transform(m_files, &Utils::FilePath::toString))); Utils::transform(*files, &FilePath::toString)));
}
if (m_exclusionFilters != kExclusionFiltersDefault) if (m_exclusionFilters != kExclusionFiltersDefault)
object.insert(kExclusionFiltersKey, QJsonArray::fromStringList(m_exclusionFilters)); object.insert(kExclusionFiltersKey, QJsonArray::fromStringList(m_exclusionFilters));
} }
@@ -138,7 +138,10 @@ void DirectoryFilter::restoreState(const QJsonObject &object)
m_directories = toFilePaths(object.value(kDirectoriesKey).toArray()); m_directories = toFilePaths(object.value(kDirectoriesKey).toArray());
m_filters = toStringList( m_filters = toStringList(
object.value(kFiltersKey).toArray(QJsonArray::fromStringList(kFiltersDefault))); object.value(kFiltersKey).toArray(QJsonArray::fromStringList(kFiltersDefault)));
m_files = FileUtils::toFilePathList(toStringList(object.value(kFilesKey).toArray())); if (object.contains(kFilesKey)) {
m_cache.setFilePaths(FileUtils::toFilePathList(
toStringList(object.value(kFilesKey).toArray())));
}
m_exclusionFilters = toStringList( m_exclusionFilters = toStringList(
object.value(kExclusionFiltersKey) object.value(kExclusionFiltersKey)
.toArray(QJsonArray::fromStringList(kExclusionFiltersDefault))); .toArray(QJsonArray::fromStringList(kExclusionFiltersDefault)));
@@ -161,7 +164,7 @@ void DirectoryFilter::restoreState(const QByteArray &state)
in >> shortcut; in >> shortcut;
in >> defaultFilter; in >> defaultFilter;
in >> files; in >> files;
m_files = FileUtils::toFilePathList(files); m_cache.setFilePaths(FileUtils::toFilePathList(files));
if (!in.atEnd()) // Qt Creator 4.3 and later if (!in.atEnd()) // Qt Creator 4.3 and later
in >> m_exclusionFilters; in >> m_exclusionFilters;
else else
@@ -178,7 +181,6 @@ void DirectoryFilter::restoreState(const QByteArray &state)
} else { } else {
ILocatorFilter::restoreState(state); ILocatorFilter::restoreState(state);
} }
updateFileIterator();
} }
class DirectoryFilterOptions : public QDialog class DirectoryFilterOptions : public QDialog
@@ -381,12 +383,6 @@ void DirectoryFilter::updateOptionButtons()
m_dialog->removeButton->setEnabled(haveSelectedItem); m_dialog->removeButton->setEnabled(haveSelectedItem);
} }
void DirectoryFilter::updateFileIterator()
{
m_cache.setFilePaths(m_files);
setFileIterator(new BaseFileFilter::ListIterator(m_files));
}
void DirectoryFilter::setIsCustomFilter(bool value) void DirectoryFilter::setIsCustomFilter(bool value)
{ {
m_isCustomFilter = value; m_isCustomFilter = value;

View File

@@ -3,19 +3,14 @@
#pragma once #pragma once
#include "basefilefilter.h" #include "ilocatorfilter.h"
#include <coreplugin/core_global.h> #include <coreplugin/core_global.h>
#include <QByteArray>
namespace Core { namespace Core {
// TODO: Don't derive from BaseFileFilter, flatten the hierarchy class CORE_EXPORT DirectoryFilter : public ILocatorFilter
class CORE_EXPORT DirectoryFilter : public BaseFileFilter
{ {
Q_OBJECT
public: public:
DirectoryFilter(Utils::Id id); DirectoryFilter(Utils::Id id);
void restoreState(const QByteArray &state) override; void restoreState(const QByteArray &state) override;
@@ -38,8 +33,6 @@ private:
void handleEditDirectory(); void handleEditDirectory();
void handleRemoveDirectory(); void handleRemoveDirectory();
void updateOptionButtons(); void updateOptionButtons();
// TODO: Remove me, replace with direct "m_cache.setFilePaths()" call
void updateFileIterator();
Utils::FilePaths m_directories; Utils::FilePaths m_directories;
QStringList m_filters; QStringList m_filters;
@@ -47,8 +40,6 @@ private:
// Our config dialog, uses in addDirectory and editDirectory // Our config dialog, uses in addDirectory and editDirectory
// to give their dialogs the right parent // to give their dialogs the right parent
class DirectoryFilterOptions *m_dialog = nullptr; class DirectoryFilterOptions *m_dialog = nullptr;
// TODO: Remove me, use the cache instead.
Utils::FilePaths m_files;
bool m_isCustomFilter = true; bool m_isCustomFilter = true;
LocatorFileCache m_cache; LocatorFileCache m_cache;
}; };

View File

@@ -1361,6 +1361,11 @@ void LocatorFileCache::setGeneratorProvider(const GeneratorProvider &provider)
d->setGeneratorProvider(provider); d->setGeneratorProvider(provider);
} }
std::optional<FilePaths> LocatorFileCache::filePaths() const
{
return d->m_filePaths;
}
/*! /*!
Sets the file path generator. Sets the file path generator.
@@ -1413,6 +1418,7 @@ void LocatorFileCache::setFilePathsGenerator(const FilePathsGenerator &generator
void LocatorFileCache::setFilePaths(const FilePaths &filePaths) void LocatorFileCache::setFilePaths(const FilePaths &filePaths)
{ {
setFilePathsGenerator(filePathsGenerator(filePaths)); setFilePathsGenerator(filePathsGenerator(filePaths));
d->m_filePaths = filePaths;
} }
/*! /*!

View File

@@ -321,6 +321,8 @@ public:
void setFilePaths(const Utils::FilePaths &filePaths); void setFilePaths(const Utils::FilePaths &filePaths);
void setGeneratorProvider(const GeneratorProvider &provider); void setGeneratorProvider(const GeneratorProvider &provider);
std::optional<Utils::FilePaths> filePaths() const;
static FilePathsGenerator filePathsGenerator(const Utils::FilePaths &filePaths); static FilePathsGenerator filePathsGenerator(const Utils::FilePaths &filePaths);
LocatorMatcherTask matcher() const; LocatorMatcherTask matcher() const;