23#include <QtCore/qmutex.h>
29class QDirPrivate :
public QSharedData
32 enum PathNormalization {
33 DefaultNormalization = 0x00,
34 UrlNormalizationMode = 0x01,
37 Q_DECLARE_FLAGS(PathNormalizations, PathNormalization)
38 Q_FLAGS(PathNormalizations)
40 explicit QDirPrivate(
const QString &path,
const QStringList &nameFilters_ = QStringList(),
41 QDir::SortFlags sort_ = QDir::SortFlags(QDir::Name | QDir::IgnoreCase),
42 QDir::Filters filters_ = QDir::AllEntries);
44 explicit QDirPrivate(
const QDirPrivate ©);
48#ifndef QT_BOOTSTRAPPED
49 static QDirListing::IteratorFlags toDirListingFlags(QDir::Filters filters);
50 static bool checkNonDirListingFlags(
const QDirListing::DirEntry &dirEntry,
51 QDir::Filters filters);
53 void initFileLists(
const QDir &dir)
const;
56 static void sortFileList(QDir::SortFlags,
const QFileInfoList &, QStringList *, QFileInfoList *);
58 static inline QChar getFilterSepChar(
const QString &nameFilter);
60 static inline QStringList splitFilters(
const QString &nameFilter, QChar sep = {});
63 void setPath(
const QString &path);
65 enum MetaDataClearing { KeepMetaData, IncludingMetaData };
66 void clearCache(MetaDataClearing mode);
68 QString resolveAbsoluteEntry()
const;
70 QStringList nameFilters;
72 QDir::Filters filters;
74 std::unique_ptr<QAbstractFileEngine> fileEngine;
76 QFileSystemEntry dirEntry;
82 QFileInfoList fileInfos;
83 std::atomic<
bool> fileListsInitialized =
false;
84 QFileSystemEntry absoluteDirEntry;
85 QFileSystemMetaData metaData;
87 mutable FileCache fileCache;
90Q_DECLARE_OPERATORS_FOR_FLAGS(
QDirPrivate::PathNormalizations)
QDirPrivate(const QDirPrivate ©)
void clearCache(MetaDataClearing mode)
void initFileLists(const QDir &dir) const
QString resolveAbsoluteEntry() const
bool operator()(const QDirSortItem &, const QDirSortItem &) const
QDirSortItemComparator(QDir::SortFlags flags, QCollator *coll=nullptr)
int compareStrings(const QString &a, const QString &b, Qt::CaseSensitivity cs) const
Combined button and popup list for selecting options.
static void appendIfMatchesNonDirListingFlags(const QDirListing::DirEntry &dirEntry, QDir::Filters filters, QFileInfoList &l)
static qsizetype rootLength(QStringView name, QDirPrivate::PathNormalizations flags)
static bool qt_cleanPath(QString *path)
bool comparesEqual(const QDir &lhs, const QDir &rhs)
static bool treatAsAbsolute(const QString &path)
static bool checkPermissions(const QDirListing::DirEntry &dirEntry, QDir::Filters filters)
bool qt_normalizePathSegments(QString *path, QDirPrivate::PathNormalizations flags)
static bool checkDotOrDotDot(const QDirListing::DirEntry &dirEntry, QDir::Filters filters)
Q_AUTOTEST_EXPORT bool qt_normalizePathSegments(QString *path, QDirPrivate::PathNormalizations flags)
QDirSortItem(const QFileInfo &fi, QDir::SortFlags sort)