FilePath: Add function which iterates through the directory

Change-Id: Iaebd2b08341781307b98b6aae61b0b44b127ce18
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Artem Sokolovskii
2021-09-14 14:20:50 +02:00
parent 342a24d56a
commit d543ab0fbd
2 changed files with 22 additions and 0 deletions

View File

@@ -33,6 +33,7 @@
#include "qtcassert.h"
#include "savefile.h"
#include <QtGlobal>
#include <QDataStream>
#include <QDateTime>
#include <QDebug>
@@ -721,6 +722,22 @@ QList<FilePath> FilePath::dirEntries(QDir::Filters filters) const
return dirEntries({}, filters);
}
void FilePath::iterateDirectory(const std::function<void(const FilePath &item)> &callBack,
const QStringList &nameFilters,
QDir::Filters filters,
QDirIterator::IteratorFlags flags)
{
if (needsDevice()) {
for (const FilePath &filePath :
s_deviceHooks.dirEntries(*this, nameFilters, filters, QDir::NoSort))
callBack(filePath);
}
QDirIterator it(m_data, nameFilters, filters, flags);
while (it.hasNext())
callBack(FilePath::fromString(it.next()));
}
QByteArray FilePath::fileContents(qint64 maxSize, qint64 offset) const
{
if (needsDevice()) {

View File

@@ -30,6 +30,7 @@
#include "hostosinfo.h"
#include <QDir>
#include <QDirIterator>
#include <QMetaType>
#include <functional>
@@ -155,6 +156,10 @@ public:
[[nodiscard]] Environment deviceEnvironment() const;
[[nodiscard]] FilePath onDevice(const FilePath &deviceTemplate) const;
[[nodiscard]] FilePath withNewPath(const QString &newPath) const;
void iterateDirectory(const std::function<void(const FilePath &item)> &callBack,
const QStringList &nameFilters,
QDir::Filters filters = QDir::NoFilter,
QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags);
// makes sure that capitalization of directories is canonical
// on Windows and macOS. This is rarely needed.