forked from qt-creator/qt-creator
Utils: Use callbacks when iterating remote file systems
This will make recursion easier and has the potential to avoid creating big intermediate lists. Change-Id: I44d42925dae9c0048338c7d0a6aa26606f314c28 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -721,8 +721,11 @@ FilePaths FilePath::dirEntries(const QStringList &nameFilters,
|
||||
QDir::SortFlags sort) const
|
||||
{
|
||||
if (needsDevice()) {
|
||||
QTC_ASSERT(s_deviceHooks.dirEntries, return {});
|
||||
return s_deviceHooks.dirEntries(*this, nameFilters, filters, sort);
|
||||
QTC_ASSERT(s_deviceHooks.iterateDirectory, return {});
|
||||
FilePaths result;
|
||||
const auto callBack = [&result](const FilePath &path) { result.append(path); return true; };
|
||||
s_deviceHooks.iterateDirectory(*this, callBack, nameFilters, filters);
|
||||
return result;
|
||||
}
|
||||
|
||||
const QFileInfoList entryInfoList = QDir(m_data).entryInfoList(nameFilters, filters, sort);
|
||||
@@ -741,10 +744,9 @@ void FilePath::iterateDirectory(const std::function<bool(const FilePath &item)>
|
||||
QDirIterator::IteratorFlags flags) const
|
||||
{
|
||||
if (needsDevice()) {
|
||||
for (const FilePath &filePath :
|
||||
s_deviceHooks.dirEntries(*this, nameFilters, filters, QDir::NoSort))
|
||||
if (!callBack(filePath))
|
||||
return;
|
||||
QTC_ASSERT(s_deviceHooks.iterateDirectory, return);
|
||||
s_deviceHooks.iterateDirectory(*this, callBack, nameFilters, filters);
|
||||
return;
|
||||
}
|
||||
|
||||
QDirIterator it(m_data, nameFilters, filters, flags);
|
||||
|
||||
Reference in New Issue
Block a user