// 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