23#include <QtCore/qmutex.h>
29class QDirPrivate :
public QSharedData
32 enum PathNormalization {
33 DefaultNormalization = 0x00,
34 UrlNormalizationMode = 0x01,
37 Q_DECLARE_FLAGS(PathNormalizations, PathNormalization)
39 explicit QDirPrivate(
const QString &path,
const QStringList &nameFilters_ = QStringList(),
40 QDir::SortFlags sort_ = QDir::SortFlags(QDir::Name | QDir::IgnoreCase),
41 QDir::Filters filters_ = QDir::AllEntries);
43 explicit QDirPrivate(
const QDirPrivate ©);
47#ifndef QT_BOOTSTRAPPED
48 static QDirListing::IteratorFlags toDirListingFlags(QDir::Filters filters);
49 static bool checkNonDirListingFlags(
const QDirListing::DirEntry &dirEntry,
50 QDir::Filters filters);
52 void initFileLists(
const QDir &dir)
const;
55 static void sortFileList(QDir::SortFlags,
const QFileInfoList &, QStringList *, QFileInfoList *);
57 static inline QChar getFilterSepChar(
const QString &nameFilter);
59 static inline QStringList splitFilters(
const QString &nameFilter, QChar sep = {});
62 void setPath(
const QString &path);
64 enum MetaDataClearing { KeepMetaData, IncludingMetaData };
65 void clearCache(MetaDataClearing mode);
67 QString resolveAbsoluteEntry()
const;
69 QStringList nameFilters;
71 QDir::Filters filters;
73 std::unique_ptr<QAbstractFileEngine> fileEngine;
75 QFileSystemEntry dirEntry;
81 QFileInfoList fileInfos;
82 std::atomic<
bool> fileListsInitialized =
false;
83 QFileSystemEntry absoluteDirEntry;
84 QFileSystemMetaData metaData;
86 mutable FileCache fileCache;
89Q_DECLARE_OPERATORS_FOR_FLAGS(
QDirPrivate::PathNormalizations)
91bool qt_isPathNormalized(
const QString &path, QDirPrivate::PathNormalizations flags)
noexcept;
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 qt_isPathNormalized(const QString &path, QDirPrivate::PathNormalizations flags) noexcept
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 qsizetype findStartOfNonNormalizedPath(const QChar *in, qsizetype i, qsizetype n, QDirPrivate::PathNormalizations flags) noexcept
static bool checkDotOrDotDot(const QDirListing::DirEntry &dirEntry, QDir::Filters filters)
Q_AUTOTEST_EXPORT bool qt_normalizePathSegments(QString *path, QDirPrivate::PathNormalizations flags)
bool qt_isPathNormalized(const QString &path, QDirPrivate::PathNormalizations flags) noexcept
QDirSortItem(const QFileInfo &fi, QDir::SortFlags sort)