Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qdiriterator.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
59#include "qdiriterator.h"
60#include "qdir_p.h"
62#include "qdirlisting.h"
63#include "qdirentryinfo_p.h"
64
65#include <QtCore/qset.h>
66#include <QtCore/qstack.h>
67#include <QtCore/qvariant.h>
68#if QT_CONFIG(regularexpression)
69#include <QtCore/qregularexpression.h>
70#endif
71
72#include <QtCore/private/qfilesystemiterator_p.h>
73#include <QtCore/private/qfilesystementry_p.h>
74#include <QtCore/private/qfilesystemmetadata_p.h>
75#include <QtCore/private/qfilesystemengine_p.h>
76#include <QtCore/private/qfileinfo_p.h>
77#include <QtCore/private/qduplicatetracker_p.h>
78
79#include <memory>
80#include <stack>
81#include <vector>
82
84
85using namespace Qt::StringLiterals;
86
88{
89 static QDirListing::IteratorFlags toDirListingFlags(QDirIterator::IteratorFlags flags)
90 {
92 QDirListing::IteratorFlags listerFlags;
93
95 listerFlags.setFlag(F::NoFlag);
97 listerFlags.setFlag(F::FollowSymlinks);
99 listerFlags.setFlag(F::Recursive);
100
101 return listerFlags;
102 }
103
104public:
105 QDirIteratorPrivate(const QDir &dir, QDirIterator::IteratorFlags flags)
106 : lister(dir, toDirListingFlags(flags))
107 {
108 init();
109 }
110 QDirIteratorPrivate(const QString &path, QDirIterator::IteratorFlags flags)
111 : lister(path, toDirListingFlags(flags))
112 {
113 init();
114 }
116 QDirIterator::IteratorFlags flags)
117 : lister(path, filters, toDirListingFlags(flags))
118 {
119 init();
120 }
121 QDirIteratorPrivate(const QString &path, const QStringList &nameFilters, QDir::Filters filters,
122 QDirIterator::IteratorFlags flags)
123 : lister(path, nameFilters, filters, toDirListingFlags(flags))
124 {
125 init();
126 }
127
128 void init()
129 {
130 it = lister.begin();
131 if (it != lister.end())
133 }
134
135 void advance()
136 {
138 if (++it != lister.end()) {
140 }
141 }
142
147};
148
166{
167}
168
182QDirIterator::QDirIterator(const QString &path, QDir::Filters filters, IteratorFlags flags)
184{
185}
186
201{
202}
203
223 QDir::Filters filters, IteratorFlags flags)
224 : d(new QDirIteratorPrivate(path, nameFilters, filters, flags))
225{
226}
227
234
248{
249 d->advance();
250 return d->currentFileInfo.filePath();
251}
252
268{
269 d->advance();
270 return d->currentFileInfo;
271}
272
280{
281 return d->it != d->lister.end();
282}
283
295{
296 return d->currentFileInfo.fileName();
297}
298
305{
306 return d->currentFileInfo.filePath();
307}
308
315{
316 return d->currentFileInfo;
317}
318
323{
324 return d->lister.iteratorPath();
325}
326
QDirIteratorPrivate(const QDir &dir, QDirIterator::IteratorFlags flags)
QDirIteratorPrivate(const QString &path, const QStringList &nameFilters, QDir::Filters filters, QDirIterator::IteratorFlags flags)
QDirListing::const_iterator it
QDirIteratorPrivate(const QString &path, QDir::Filters filters, QDirIterator::IteratorFlags flags)
QDirIteratorPrivate(const QString &path, QDirIterator::IteratorFlags flags)
bool hasNext() const
Returns true if there is at least one more entry in the directory; otherwise, false is returned.
QDirIterator(const QDir &dir, IteratorFlags flags=NoIteratorFlags)
Constructs a QDirIterator that can iterate over dir's entrylist, using dir's name filters and regular...
QString fileName() const
Returns the file name for the current directory entry, without the path prepended.
QString next()
Advances the iterator to the next entry, and returns the file path of this new entry.
~QDirIterator()
Destroys the QDirIterator.
QFileInfo fileInfo() const
Returns a QFileInfo for the current directory entry.
QFileInfo nextFileInfo()
QString filePath() const
Returns the full file path for the current directory entry.
QString path() const
Returns the base directory of the iterator.
QFileInfo fileInfo() const
The QDirListing class provides an STL-style iterator for directory entries.
Definition qdirlisting.h:18
IteratorFlag
This enum class describes flags can be used to configure the behavior of QDirListing.
Definition qdirlisting.h:20
const_iterator begin() const
const_iterator end() const
QString iteratorPath() const
Returns the directory path used to construct this QDirListing.
\inmodule QtCore
Definition qdir.h:20
QString fileName() const
QString filePath() const
Returns the path of the file system entry this QFileInfo refers to; the path may be absolute or relat...
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
Combined button and popup list for selecting options.
GLbitfield flags
GLsizei const GLchar *const * path
QString dir
[11]
const QStringList filters({"Image files (*.png *.xpm *.jpg)", "Text files (*.txt)", "Any files (*)" })
[6]