diff options
20 files changed, 61 insertions, 62 deletions
diff --git a/src/corelib/doc/snippets/code/src_corelib_io_qabstractfileengine.cpp b/src/corelib/doc/snippets/code/src_corelib_io_qabstractfileengine.cpp index f1315a78f0..394db15f9f 100644 --- a/src/corelib/doc/snippets/code/src_corelib_io_qabstractfileengine.cpp +++ b/src/corelib/doc/snippets/code/src_corelib_io_qabstractfileengine.cpp @@ -39,9 +39,10 @@ QAbstractSocketEngine *ZipEngineHandler::create(const QString &fileName) const //! [2] QAbstractFileEngine::IteratorUniquePtr -CustomFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames) +CustomFileEngine::beginEntryList(const QString &path, QDir::Filters filters, + const QStringList &filterNames) { - return std::make_unique<CustomFileEngineIterator>(filters, filterNames); + return std::make_unique<CustomFileEngineIterator>(path, filters, filterNames); } //! [2] @@ -50,8 +51,8 @@ CustomFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filte class CustomIterator : public QAbstractFileEngineIterator { public: - CustomIterator(const QStringList &nameFilters, QDir::Filters filters) - : QAbstractFileEngineIterator(nameFilters, filters), index(0) + CustomIterator(const QString &path, const QStringList &nameFilters, QDir::Filters filters) + : QAbstractFileEngineIterator(path, nameFilters, filters), index(0) { // In a real iterator, these entries are fetched from the // file system based on the value of path(). diff --git a/src/corelib/io/qabstractfileengine.cpp b/src/corelib/io/qabstractfileengine.cpp index 55655adfc4..2ad732cf3b 100644 --- a/src/corelib/io/qabstractfileengine.cpp +++ b/src/corelib/io/qabstractfileengine.cpp @@ -902,10 +902,11 @@ bool QAbstractFileEngine::cloneTo(QAbstractFileEngine *target) Constructs a QAbstractFileEngineIterator, using the entry filters \a filters, and wildcard name filters \a nameFilters. */ -QAbstractFileEngineIterator::QAbstractFileEngineIterator(QDir::Filters filters, +QAbstractFileEngineIterator::QAbstractFileEngineIterator(const QString &path, QDir::Filters filters, const QStringList &nameFilters) : m_filters(filters), - m_nameFilters(nameFilters) + m_nameFilters(nameFilters), + m_path(appendSlashIfNeeded(path)) { } @@ -920,10 +921,8 @@ QAbstractFileEngineIterator::~QAbstractFileEngineIterator() /*! - Returns the path for this iterator. It can be set using setPath(). - Typically the path is passed to beginEntryList(), which sets the path. - - \note The path should't be changed once iteration begins. + Returns the path for this iterator. The path is set by beginEntryList(). + The path should't be changed once iteration begins. \sa nameFilters(), filters() */ @@ -933,17 +932,6 @@ QString QAbstractFileEngineIterator::path() const } /*! - \internal - - Sets the iterator path to \a path. This function is called from within - QDirListing. -*/ -void QAbstractFileEngineIterator::setPath(const QString &path) -{ - m_path = appendSlashIfNeeded(path); -} - -/*! Returns the name filters for this iterator. \sa QDir::nameFilters(), filters(), path() @@ -1027,16 +1015,18 @@ QFileInfo QAbstractFileEngineIterator::currentFileInfo() const */ /*! - Returns a QAbstractFileEngine::IteratorUniquePtr, that uses \a filters - for entry filtering and \a filterNames for name filtering. This function - is called by QDirListing to initiate directory iteration. + Returns a QAbstractFileEngine::IteratorUniquePtr, that can be used + to iterate over the entries in \a path, using \a filters for entry + filtering and \a filterNames for name filtering. This function is called + by QDirListing to initiate directory iteration. \sa QDirListing */ QAbstractFileEngine::IteratorUniquePtr -QAbstractFileEngine::beginEntryList(QDir::Filters filters, +QAbstractFileEngine::beginEntryList(const QString &path, QDir::Filters filters, const QStringList &filterNames) { + Q_UNUSED(path); Q_UNUSED(filters); Q_UNUSED(filterNames); return {}; diff --git a/src/corelib/io/qabstractfileengine_p.h b/src/corelib/io/qabstractfileengine_p.h index eef83fc46d..8d6a1b8a35 100644 --- a/src/corelib/io/qabstractfileengine_p.h +++ b/src/corelib/io/qabstractfileengine_p.h @@ -130,7 +130,7 @@ public: using IteratorUniquePtr = std::unique_ptr<Iterator>; virtual IteratorUniquePtr - beginEntryList(QDir::Filters filters, const QStringList &filterNames); + beginEntryList(const QString &path, QDir::Filters filters, const QStringList &filterNames); virtual IteratorUniquePtr endEntryList() { return {}; } virtual qint64 read(char *data, qint64 maxlen); @@ -198,13 +198,13 @@ public: class Q_CORE_EXPORT QAbstractFileEngineIterator { public: - QAbstractFileEngineIterator(QDir::Filters filters, const QStringList &nameFilters); + QAbstractFileEngineIterator(const QString &path, QDir::Filters filters, + const QStringList &nameFilters); virtual ~QAbstractFileEngineIterator(); virtual QString next() = 0; virtual bool hasNext() const = 0; - void setPath(const QString &path); QString path() const; QStringList nameFilters() const; QDir::Filters filters() const; diff --git a/src/corelib/io/qdirlisting.cpp b/src/corelib/io/qdirlisting.cpp index 8200366a5a..b673fa77e1 100644 --- a/src/corelib/io/qdirlisting.cpp +++ b/src/corelib/io/qdirlisting.cpp @@ -165,8 +165,7 @@ void QDirListingPrivate::pushDirectory(QDirEntryInfo &entryInfo) if (engine) { engine->setFileName(path); - if (auto it = engine->beginEntryList(filters, nameFilters)) { - it->setPath(path); + if (auto it = engine->beginEntryList(path, filters, nameFilters)) { fileEngineIterators.emplace(std::move(it)); } else { // No iterator; no entry list. diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp index df8dd494ee..ee96e801f2 100644 --- a/src/corelib/io/qfsfileengine.cpp +++ b/src/corelib/io/qfsfileengine.cpp @@ -792,9 +792,10 @@ qint64 QFSFileEnginePrivate::writeFdFh(const char *data, qint64 len) \internal */ QAbstractFileEngine::IteratorUniquePtr -QFSFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames) +QFSFileEngine::beginEntryList(const QString &path, QDir::Filters filters, + const QStringList &filterNames) { - return std::make_unique<QFSFileEngineIterator>(filters, filterNames); + return std::make_unique<QFSFileEngineIterator>(path, filters, filterNames); } #endif // QT_NO_FILESYSTEMITERATOR diff --git a/src/corelib/io/qfsfileengine_iterator.cpp b/src/corelib/io/qfsfileengine_iterator.cpp index c65b6e5d3e..f9d802b17f 100644 --- a/src/corelib/io/qfsfileengine_iterator.cpp +++ b/src/corelib/io/qfsfileengine_iterator.cpp @@ -9,8 +9,9 @@ QT_BEGIN_NAMESPACE -QFSFileEngineIterator::QFSFileEngineIterator(QDir::Filters filters, const QStringList &filterNames) - : QAbstractFileEngineIterator(filters, filterNames), +QFSFileEngineIterator::QFSFileEngineIterator(const QString &path, QDir::Filters filters, + const QStringList &filterNames) + : QAbstractFileEngineIterator(path, filters, filterNames), done(false) { } diff --git a/src/corelib/io/qfsfileengine_iterator_p.h b/src/corelib/io/qfsfileengine_iterator_p.h index 7980605fbd..4ad1bb0350 100644 --- a/src/corelib/io/qfsfileengine_iterator_p.h +++ b/src/corelib/io/qfsfileengine_iterator_p.h @@ -26,7 +26,7 @@ QT_BEGIN_NAMESPACE class QFSFileEngineIterator : public QAbstractFileEngineIterator { public: - QFSFileEngineIterator(QDir::Filters filters, const QStringList &filterNames); + QFSFileEngineIterator(const QString &path, QDir::Filters filters, const QStringList &filterNames); ~QFSFileEngineIterator(); QString next() override; diff --git a/src/corelib/io/qfsfileengine_p.h b/src/corelib/io/qfsfileengine_p.h index a2dc699305..3cc3b43a0b 100644 --- a/src/corelib/io/qfsfileengine_p.h +++ b/src/corelib/io/qfsfileengine_p.h @@ -82,7 +82,7 @@ public: int handle() const override; #ifndef QT_NO_FILESYSTEMITERATOR - IteratorUniquePtr beginEntryList(QDir::Filters filters, + IteratorUniquePtr beginEntryList(const QString &path, QDir::Filters filters, const QStringList &filterNames) override; #endif diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp index d61846084a..dfc925b416 100644 --- a/src/corelib/io/qresource.cpp +++ b/src/corelib/io/qresource.cpp @@ -1535,9 +1535,10 @@ QDateTime QResourceFileEngine::fileTime(FileTime time) const \internal */ QAbstractFileEngine::IteratorUniquePtr -QResourceFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames) +QResourceFileEngine::beginEntryList(const QString &path, QDir::Filters filters, + const QStringList &filterNames) { - return std::make_unique<QResourceFileEngineIterator>(filters, filterNames); + return std::make_unique<QResourceFileEngineIterator>(path, filters, filterNames); } bool QResourceFileEngine::extension(Extension extension, const ExtensionOption *option, ExtensionReturn *output) diff --git a/src/corelib/io/qresource_iterator.cpp b/src/corelib/io/qresource_iterator.cpp index 58bdefdd20..c0f0106911 100644 --- a/src/corelib/io/qresource_iterator.cpp +++ b/src/corelib/io/qresource_iterator.cpp @@ -8,9 +8,10 @@ QT_BEGIN_NAMESPACE -QResourceFileEngineIterator::QResourceFileEngineIterator(QDir::Filters filters, +QResourceFileEngineIterator::QResourceFileEngineIterator(const QString &path, QDir::Filters filters, const QStringList &filterNames) - : QAbstractFileEngineIterator(filters, filterNames), index(-1) + : QAbstractFileEngineIterator(path, filters, filterNames), + index(-1) { } diff --git a/src/corelib/io/qresource_iterator_p.h b/src/corelib/io/qresource_iterator_p.h index 7bc546e44a..8a29ef0219 100644 --- a/src/corelib/io/qresource_iterator_p.h +++ b/src/corelib/io/qresource_iterator_p.h @@ -24,7 +24,8 @@ class QResourceFileEngineIteratorPrivate; class QResourceFileEngineIterator : public QAbstractFileEngineIterator { public: - QResourceFileEngineIterator(QDir::Filters filters, const QStringList &filterNames); + QResourceFileEngineIterator(const QString &path, QDir::Filters filters, + const QStringList &filterNames); ~QResourceFileEngineIterator(); QString next() override; diff --git a/src/corelib/io/qresource_p.h b/src/corelib/io/qresource_p.h index 01ff3c8c5f..4df37b4c0e 100644 --- a/src/corelib/io/qresource_p.h +++ b/src/corelib/io/qresource_p.h @@ -49,7 +49,7 @@ public: QDateTime fileTime(FileTime time) const override; - IteratorUniquePtr beginEntryList(QDir::Filters filters, + IteratorUniquePtr beginEntryList(const QString &path, QDir::Filters filters, const QStringList &filterNames) override; bool extension(Extension extension, const ExtensionOption *option = nullptr, ExtensionReturn *output = nullptr) override; diff --git a/src/plugins/platforms/android/androidcontentfileengine.cpp b/src/plugins/platforms/android/androidcontentfileengine.cpp index 316daef1da..67221080b2 100644 --- a/src/plugins/platforms/android/androidcontentfileengine.cpp +++ b/src/plugins/platforms/android/androidcontentfileengine.cpp @@ -249,9 +249,10 @@ QString AndroidContentFileEngine::fileName(FileName f) const } QAbstractFileEngine::IteratorUniquePtr -AndroidContentFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames) +AndroidContentFileEngine::beginEntryList(const QString &path, QDir::Filters filters, + const QStringList &filterNames) { - return std::make_unique<AndroidContentFileEngineIterator>(filters, filterNames); + return std::make_unique<AndroidContentFileEngineIterator>(path, filters, filterNames); } AndroidContentFileEngineHandler::AndroidContentFileEngineHandler() = default; @@ -265,9 +266,9 @@ QAbstractFileEngine* AndroidContentFileEngineHandler::create(const QString &file return new AndroidContentFileEngine(fileName); } -AndroidContentFileEngineIterator::AndroidContentFileEngineIterator(QDir::Filters filters, - const QStringList &filterNames) - : QAbstractFileEngineIterator(filters, filterNames) +AndroidContentFileEngineIterator::AndroidContentFileEngineIterator( + const QString &path, QDir::Filters filters, const QStringList &filterNames) + : QAbstractFileEngineIterator(path, filters, filterNames) { } diff --git a/src/plugins/platforms/android/androidcontentfileengine.h b/src/plugins/platforms/android/androidcontentfileengine.h index adaff7f665..dd7985db80 100644 --- a/src/plugins/platforms/android/androidcontentfileengine.h +++ b/src/plugins/platforms/android/androidcontentfileengine.h @@ -30,7 +30,7 @@ public: QDateTime fileTime(FileTime time) const override; FileFlags fileFlags(FileFlags type = FileInfoAll) const override; QString fileName(FileName file = DefaultName) const override; - IteratorUniquePtr beginEntryList(QDir::Filters filters, + IteratorUniquePtr beginEntryList(const QString &path, QDir::Filters filters, const QStringList &filterNames) override; private: @@ -52,7 +52,8 @@ public: class AndroidContentFileEngineIterator : public QAbstractFileEngineIterator { public: - AndroidContentFileEngineIterator(QDir::Filters filters, const QStringList &filterNames); + AndroidContentFileEngineIterator(const QString &path, QDir::Filters filters, + const QStringList &filterNames); ~AndroidContentFileEngineIterator(); QString next() override; bool hasNext() const override; diff --git a/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp b/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp index 6d5479a559..20ce0b5710 100644 --- a/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp +++ b/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp @@ -171,7 +171,7 @@ public: AndroidAbstractFileEngineIterator(QDir::Filters filters, const QStringList &nameFilters, const QString &path) - : QAbstractFileEngineIterator(filters, nameFilters) + : QAbstractFileEngineIterator(path, filters, nameFilters) { m_currentIterator = FolderIterator::fromCache(cleanedAssetPath(path), true); } @@ -368,8 +368,9 @@ public: } IteratorUniquePtr - beginEntryList(QDir::Filters filters, const QStringList &filterNames) override + beginEntryList(const QString &, QDir::Filters filters, const QStringList &filterNames) override { + // AndroidAbstractFileEngineIterator use `m_fileName` as the path if (m_assetInfo && m_assetInfo->type == AssetItem::Type::Folder) return std::make_unique<AndroidAbstractFileEngineIterator>(filters, filterNames, m_fileName); return nullptr; diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h index 3d27dc48ed..0ad54a9e11 100644 --- a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h @@ -29,7 +29,7 @@ public: void setFileName(const QString &file) override; #ifndef QT_NO_FILESYSTEMITERATOR - IteratorUniquePtr beginEntryList(QDir::Filters filters, + IteratorUniquePtr beginEntryList(const QString &path, QDir::Filters filters, const QStringList &filterNames) override; #endif diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm index a3593669cf..87cc6d5bea 100644 --- a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm @@ -258,8 +258,8 @@ public: QIOSAssetEnumerator *m_enumerator; QIOSFileEngineIteratorAssetsLibrary( - QDir::Filters filters, const QStringList &nameFilters) - : QAbstractFileEngineIterator(filters, nameFilters) + const QString &path, QDir::Filters filters, const QStringList &nameFilters) + : QAbstractFileEngineIterator(path, filters, nameFilters) , m_enumerator(new QIOSAssetEnumerator([[[ALAssetsLibrary alloc] init] autorelease], ALAssetsGroupAll)) { } @@ -441,9 +441,10 @@ void QIOSFileEngineAssetsLibrary::setFileName(const QString &file) #ifndef QT_NO_FILESYSTEMITERATOR QAbstractFileEngine::IteratorUniquePtr -QIOSFileEngineAssetsLibrary::beginEntryList(QDir::Filters filters, const QStringList &filterNames) +QIOSFileEngineAssetsLibrary::beginEntryList( + const QString &path, QDir::Filters filters, const QStringList &filterNames) { - return std::make_unique<QIOSFileEngineIteratorAssetsLibrary>(filters, filterNames); + return std::make_unique<QIOSFileEngineIteratorAssetsLibrary>(path, filters, filterNames); } QT_END_NAMESPACE diff --git a/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp b/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp index cf8d5af583..bb5d78cecf 100644 --- a/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp +++ b/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp @@ -430,8 +430,8 @@ public: class Iterator : public QAbstractFileEngineIterator { public: - Iterator(QDir::Filters filters, const QStringList &filterNames) - : QAbstractFileEngineIterator(filters, filterNames) + Iterator(const QString &path, QDir::Filters filters, const QStringList &filterNames) + : QAbstractFileEngineIterator(path, filters, filterNames) { names.append("foo"); names.append("bar"); @@ -461,9 +461,9 @@ public: } IteratorUniquePtr - beginEntryList(QDir::Filters filters, const QStringList &filterNames) override + beginEntryList(const QString &path, QDir::Filters filters, const QStringList &filterNames) override { - return std::make_unique<Iterator>(filters, filterNames); + return std::make_unique<Iterator>(path, filters, filterNames); } FileFlags fileFlags(FileFlags type) const override { diff --git a/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp b/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp index d534feb3ce..9a17ae4994 100644 --- a/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp +++ b/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp @@ -437,7 +437,7 @@ public: { } IteratorUniquePtr - beginEntryList(QDir::Filters, const QStringList &) override + beginEntryList(const QString &, QDir::Filters, const QStringList &) override { return nullptr; } }; diff --git a/tests/auto/corelib/io/qdirlisting/tst_qdirlisting.cpp b/tests/auto/corelib/io/qdirlisting/tst_qdirlisting.cpp index 1b550e1f0d..d66079d7ab 100644 --- a/tests/auto/corelib/io/qdirlisting/tst_qdirlisting.cpp +++ b/tests/auto/corelib/io/qdirlisting/tst_qdirlisting.cpp @@ -421,7 +421,7 @@ public: : QFSFileEngine(fileName) { } - IteratorUniquePtr beginEntryList(QDir::Filters, const QStringList &) override + IteratorUniquePtr beginEntryList(const QString &, QDir::Filters, const QStringList &) override { return nullptr; } }; |