diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2019-08-29 16:22:53 +0200 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2019-08-30 13:20:07 +0200 |
commit | ca3be922349d5fa282578fbb6c1dc2bd25d1f5aa (patch) | |
tree | ff0be3de9093e606bc57edae305a2f3f564b9cc2 /src/corelib/io/qfileinfo.cpp | |
parent | f00bbd5eb77d0d4669e0a15a277c3937c49ed813 (diff) |
Remove QFileInfo::type and related enum from 5.14
The API is problematic for several reasons:
- the mixing of flags and enum in a single enum type
- the name "type" as somewhat overloaded
- the ease of misuse when comparing the result rather than testing
for a bit being set
In light of this, focus for 5.14 on the new isShortcut and
isSymbolicLink functions, thus migitating the problematic
isSymLink which conflates the two concepts.
Change-Id: I57e02321edd5061f69a775f04a0932ef89adf866
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src/corelib/io/qfileinfo.cpp')
-rw-r--r-- | src/corelib/io/qfileinfo.cpp | 93 |
1 files changed, 27 insertions, 66 deletions
diff --git a/src/corelib/io/qfileinfo.cpp b/src/corelib/io/qfileinfo.cpp index b720966d8f..a6f8b45ea3 100644 --- a/src/corelib/io/qfileinfo.cpp +++ b/src/corelib/io/qfileinfo.cpp @@ -311,19 +311,6 @@ QDateTime &QFileInfoPrivate::getFileTime(QAbstractFileEngine::FileTime request) */ /*! - \enum QFileInfo::FileType - - This enum is returned by type() to describe the type of the file system - entity described by the QFileInfo object. - - \value Unknown The object refers to an unknown item. - \value Regular The object refers to a regular file. - \value Directory The object refers to a directory. - \value SymbolicLink The object refers to a symbolic link. - \value Shortcut The object refers to a shortcut. -*/ - -/*! \fn QFileInfo &QFileInfo::operator=(QFileInfo &&other) Move-assigns \a other to this QFileInfo instance. @@ -1008,7 +995,11 @@ bool QFileInfo::isNativePath() const */ bool QFileInfo::isFile() const { - return (type() & FileTypeMask) == Regular; + Q_D(const QFileInfo); + return d->checkAttribute<bool>( + QFileSystemMetaData::FileType, + [d]() { return d->metaData.isFile(); }, + [d]() { return d->getFileFlags(QAbstractFileEngine::FileType); }); } /*! @@ -1019,7 +1010,11 @@ bool QFileInfo::isFile() const */ bool QFileInfo::isDir() const { - return (type() & FileTypeMask) == Directory; + Q_D(const QFileInfo); + return d->checkAttribute<bool>( + QFileSystemMetaData::DirectoryType, + [d]() { return d->metaData.isDirectory(); }, + [d]() { return d->getFileFlags(QAbstractFileEngine::DirectoryType); }); } @@ -1070,8 +1065,6 @@ bool QFileInfo::isSymLink() const } /*! - \fn bool QFileInfo::isSymbolicLink() const - Returns \c true if this object points to a symbolic link; otherwise returns \c false. @@ -1091,9 +1084,16 @@ bool QFileInfo::isSymLink() const \sa isFile(), isDir(), isShortcut(), symLinkTarget() */ -/*! - \fn bool QFileInfo::isShortcut() const +bool QFileInfo::isSymbolicLink() const +{ + Q_D(const QFileInfo); + return d->checkAttribute<bool>( + QFileSystemMetaData::LegacyLinkType, + [d]() { return d->metaData.isLink(); }, + [d]() { return d->getFileFlags(QAbstractFileEngine::LinkType); }); +} +/*! Returns \c true if this object points to a shortcut; otherwise returns \c false. @@ -1110,6 +1110,14 @@ bool QFileInfo::isSymLink() const \sa isFile(), isDir(), isSymbolicLink(), symLinkTarget() */ +bool QFileInfo::isShortcut() const +{ + Q_D(const QFileInfo); + return d->checkAttribute<bool>( + QFileSystemMetaData::LegacyLinkType, + [d]() { return d->metaData.isLnkFile(); }, + [d]() { return d->getFileFlags(QAbstractFileEngine::LinkType); }); +} /*! Returns \c true if the object points to a directory or to a symbolic @@ -1314,53 +1322,6 @@ qint64 QFileInfo::size() const }); } -/*! - Returns the QFileInfo::FileTypes. - - QFileInfo::FileTypes combines with an indirection flag (link type) and a - base type it refers to. - - For example, \c SymbolicLink combines with \c Regular meaning a symlink to - a regular file. - - In addition, FileTypeMask and LinkTypeMask are used to extract the base - type and link type respectively. - - \sa isFile(), isDir(), isShortcut(), isSymbolicLink() -*/ -QFileInfo::FileTypes QFileInfo::type() const -{ - Q_D(const QFileInfo); - - QFileInfo::FileTypes type = QFileInfo::Unknown; - if (d->checkAttribute<bool>( - QFileSystemMetaData::LegacyLinkType, - [d]() { return d->metaData.isLnkFile(); }, - [d]() { return d->getFileFlags(QAbstractFileEngine::LinkType); })) { - type = QFileInfo::Shortcut; - } else if (d->checkAttribute<bool>( - QFileSystemMetaData::LegacyLinkType, - [d]() { return d->metaData.isLink(); }, - [d]() { return d->getFileFlags(QAbstractFileEngine::LinkType); })) { - type = QFileInfo::SymbolicLink; - } - - if (d->checkAttribute<bool>( - QFileSystemMetaData::DirectoryType, - [d]() { return d->metaData.isDirectory(); }, - [d]() { return d->getFileFlags(QAbstractFileEngine::DirectoryType); })) { - return type | QFileInfo::Directory; - } - - if (d->checkAttribute<bool>( - QFileSystemMetaData::FileType, - [d]() { return d->metaData.isFile(); }, - [d]() { return d->getFileFlags(QAbstractFileEngine::FileType); })) { - return type | QFileInfo::Regular; - } - return type; -} - #if QT_DEPRECATED_SINCE(5, 10) /*! \deprecated |