69 lines
1.4 KiB
C++
69 lines
1.4 KiB
C++
// Copyright (C) 2016 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
|
|
|
#include "qfsfileengine_iterator_p.h"
|
|
#include "qfileinfo_p.h"
|
|
#include "qvariant.h"
|
|
|
|
#ifndef QT_NO_FILESYSTEMITERATOR
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
QFSFileEngineIterator::QFSFileEngineIterator(QDir::Filters filters, const QStringList &filterNames)
|
|
: QAbstractFileEngineIterator(filters, filterNames)
|
|
, done(false)
|
|
{
|
|
}
|
|
|
|
QFSFileEngineIterator::~QFSFileEngineIterator()
|
|
{
|
|
}
|
|
|
|
bool QFSFileEngineIterator::hasNext() const
|
|
{
|
|
if (!done && !nativeIterator) {
|
|
nativeIterator.reset(new QFileSystemIterator(QFileSystemEntry(path()),
|
|
filters(), nameFilters()));
|
|
advance();
|
|
}
|
|
|
|
return !done;
|
|
}
|
|
|
|
QString QFSFileEngineIterator::next()
|
|
{
|
|
if (!hasNext())
|
|
return QString();
|
|
|
|
advance();
|
|
return currentFilePath();
|
|
}
|
|
|
|
void QFSFileEngineIterator::advance() const
|
|
{
|
|
currentInfo = nextInfo;
|
|
|
|
QFileSystemEntry entry;
|
|
QFileSystemMetaData data;
|
|
if (nativeIterator->advance(entry, data)) {
|
|
nextInfo = QFileInfo(new QFileInfoPrivate(entry, data));
|
|
} else {
|
|
done = true;
|
|
nativeIterator.reset();
|
|
}
|
|
}
|
|
|
|
QString QFSFileEngineIterator::currentFileName() const
|
|
{
|
|
return currentInfo.fileName();
|
|
}
|
|
|
|
QFileInfo QFSFileEngineIterator::currentFileInfo() const
|
|
{
|
|
return currentInfo;
|
|
}
|
|
|
|
QT_END_NAMESPACE
|
|
|
|
#endif // QT_NO_FILESYSTEMITERATOR
|