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
qdirlisting.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// Copyright (C) 2024 Ahmad Samir <a.samirh78@gmail.com>
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4
5#ifndef QDILISTING_H
6#define QDILISTING_H
7
8#include <QtCore/qdir.h>
9
10#include <iterator>
11#include <memory>
12
14
16
17class Q_CORE_EXPORT QDirListing
18{
19public:
20 enum class IteratorFlag {
21 NoFlag = 0x0,
22 FollowSymlinks = 0x1,
23 Recursive = 0x2
24 };
25 Q_DECLARE_FLAGS(IteratorFlags, IteratorFlag)
26
27 QDirListing(const QDir &dir, IteratorFlags flags = IteratorFlag::NoFlag);
28 QDirListing(const QString &path, IteratorFlags flags = IteratorFlag::NoFlag);
29 QDirListing(const QString &path, QDir::Filters filter,
30 IteratorFlags flags = IteratorFlag::NoFlag);
31 QDirListing(const QString &path, const QStringList &nameFilters,
32 QDir::Filters filters = QDir::NoFilter,
33 IteratorFlags flags = IteratorFlag::NoFlag);
34
36
37 QString iteratorPath() const;
38
39 class Q_CORE_EXPORT DirEntry
40 {
41 friend class QDirListing;
42 QDirListingPrivate *dirListPtr = nullptr;
43 public:
44 QString fileName() const;
45 QString baseName() const;
46 QString completeBaseName() const;
47 QString suffix() const;
48 QString bundleName() const;
49 QString completeSuffix() const;
50 QString filePath() const;
51 bool isDir() const;
52 bool isFile() const;
53 bool isSymLink() const;
54 bool exists() const;
55 bool isHidden() const;
56 bool isReadable() const;
57 bool isWritable() const;
58 bool isExecutable() const;
59 QFileInfo fileInfo() const;
60 QString canonicalFilePath() const;
62 QString absolutePath() const;
63 qint64 size() const;
64
65 QDateTime birthTime(const QTimeZone &tz) const { return fileTime(QFile::FileBirthTime, tz); }
67 QDateTime lastModified(const QTimeZone &tz) const { return fileTime(QFile::FileModificationTime, tz); }
68 QDateTime lastRead(const QTimeZone &tz) const { return fileTime(QFile::FileAccessTime, tz); }
69 QDateTime fileTime(QFile::FileTime type, const QTimeZone &tz) const;
70 };
71
73 {
74 friend class QDirListing;
75 const_iterator(QDirListingPrivate *dp) : dirListPtr(dp) { dirEntry.dirListPtr = dp; }
76 QDirListingPrivate *dirListPtr = nullptr;
77 DirEntry dirEntry;
78 public:
79 using iterator_category = std::input_iterator_tag;
82 using pointer = const value_type *;
83 using reference = const value_type &;
84
85 const_iterator() = default;
86 reference operator*() const { return dirEntry; }
87 pointer operator->() const { return &dirEntry; }
88 Q_CORE_EXPORT const_iterator &operator++();
89 const_iterator operator++(int) { auto tmp = *this; operator++(); return tmp; };
90 friend bool operator==(const const_iterator &lhs, const const_iterator &rhs)
91 {
92 // This is only used for the sentinel end iterator
93 return lhs.dirListPtr == nullptr && rhs.dirListPtr == nullptr;
94 }
95 friend bool operator!=(const const_iterator &lhs, const const_iterator &rhs)
96 { return !(lhs == rhs); }
97 };
98
99 const_iterator begin() const;
100 const_iterator cbegin() const { return begin(); }
101 const_iterator end() const { return {}; }
102 const_iterator cend() const { return end(); }
103
104 // Qt compatibility
105 const_iterator constBegin() const { return begin(); }
106 const_iterator constEnd() const { return end(); }
107
108private:
109 Q_DISABLE_COPY(QDirListing)
110
111 std::unique_ptr<QDirListingPrivate> d;
112 friend class QDir;
113};
114
115Q_DECLARE_OPERATORS_FOR_FLAGS(QDirListing::IteratorFlags)
116
118
119#endif // QDILISTING_H
\inmodule QtCore\reentrant
Definition qdatetime.h:283
QDateTime birthTime(const QTimeZone &tz) const
Definition qdirlisting.h:65
QDateTime metadataChangeTime(const QTimeZone &tz) const
Definition qdirlisting.h:66
QDateTime lastRead(const QTimeZone &tz) const
See the QFileInfo methods with the same names.
Definition qdirlisting.h:68
QDateTime lastModified(const QTimeZone &tz) const
Definition qdirlisting.h:67
friend bool operator!=(const const_iterator &lhs, const const_iterator &rhs)
Definition qdirlisting.h:95
std::input_iterator_tag iterator_category
Definition qdirlisting.h:79
friend bool operator==(const const_iterator &lhs, const const_iterator &rhs)
Definition qdirlisting.h:90
const_iterator operator++(int)
Definition qdirlisting.h:89
reference operator*() const
Returns a {const QDirListing::DirEntry &} of the directory entry this iterator points to.
Definition qdirlisting.h:86
pointer operator->() const
Returns a {const QDirListing::DirEntry *} to the directory entry this iterator points to.
Definition qdirlisting.h:87
The QDirListing class provides an STL-style iterator for directory entries.
Definition qdirlisting.h:18
const_iterator cbegin() const
IteratorFlag
This enum class describes flags can be used to configure the behavior of QDirListing.
Definition qdirlisting.h:20
const_iterator constBegin() const
~QDirListing()
Destroys the QDirListing.
const_iterator end() const
const_iterator cend() const
begin()/cbegin() returns a QDirListing::const_iterator that enables iterating over directory entries ...
const_iterator constEnd() const
\inmodule QtCore
Definition qdir.h:20
@ NoFilter
Definition qdir.h:46
@ FileMetadataChangeTime
Definition qfiledevice.h:60
@ FileModificationTime
Definition qfiledevice.h:61
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
Definition qtimezone.h:26
Combined button and popup list for selecting options.
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition qflags.h:194
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLuint GLuint end
GLenum type
GLbitfield flags
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLbyte GLbyte tz
GLsizei const GLchar *const * path
static QString absolutePath(const QString &path)
QtPrivate::QRegularExpressionMatchIteratorRangeBasedForIterator begin(const QRegularExpressionMatchIterator &iterator)
static QString absoluteFilePath(const Options *options, const QString &relativeFileName)
Definition main.cpp:1902
return device isReadable() ? device -> read(static_cast< char * >(buf), size) :-1
long long qint64
Definition qtypes.h:60
QString dir
[11]
const QStringList filters({"Image files (*.png *.xpm *.jpg)", "Text files (*.txt)", "Any files (*)" })
[6]