summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qfileinfo.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2017-07-02 00:25:16 -0700
committerThiago Macieira <thiago.macieira@intel.com>2017-07-06 00:23:57 +0000
commitd38122f4a2698038958f3a1c4654d8eba20bff95 (patch)
tree1d90a9ec343f4368331860e19d3fce005fd5b655 /src/corelib/io/qfileinfo.cpp
parent11975fc9ecb63685a437652e3aabc55f57443365 (diff)
Rewrite QFileInfo::{created,lastModified,lastRead} using fileTime()
Better code reusal. Change-Id: I8d96dea9955d4c749b99fffd14cd72a7f4e040c9 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib/io/qfileinfo.cpp')
-rw-r--r--src/corelib/io/qfileinfo.cpp66
1 files changed, 27 insertions, 39 deletions
diff --git a/src/corelib/io/qfileinfo.cpp b/src/corelib/io/qfileinfo.cpp
index ee232f0f14..f7358d61b3 100644
--- a/src/corelib/io/qfileinfo.cpp
+++ b/src/corelib/io/qfileinfo.cpp
@@ -1310,16 +1310,7 @@ qint64 QFileInfo::size() const
*/
QDateTime QFileInfo::created() const
{
- Q_D(const QFileInfo);
- if (d->isDefaultConstructed)
- return QDateTime();
- if (d->fileEngine == 0) {
- if (!d->cache_enabled || !d->metaData.hasFlags(QFileSystemMetaData::CreationTime))
- if (!QFileSystemEngine::fillMetaData(d->fileEntry, d->metaData, QFileSystemMetaData::CreationTime))
- return QDateTime();
- return d->metaData.creationTime().toLocalTime();
- }
- return d->getFileTime(QAbstractFileEngine::CreationTime).toLocalTime();
+ return fileTime(QFile::FileCreationTime);
}
/*!
@@ -1329,16 +1320,7 @@ QDateTime QFileInfo::created() const
*/
QDateTime QFileInfo::lastModified() const
{
- Q_D(const QFileInfo);
- if (d->isDefaultConstructed)
- return QDateTime();
- if (d->fileEngine == 0) {
- if (!d->cache_enabled || !d->metaData.hasFlags(QFileSystemMetaData::ModificationTime))
- if (!QFileSystemEngine::fillMetaData(d->fileEntry, d->metaData, QFileSystemMetaData::ModificationTime))
- return QDateTime();
- return d->metaData.modificationTime().toLocalTime();
- }
- return d->getFileTime(QAbstractFileEngine::ModificationTime).toLocalTime();
+ return fileTime(QFile::FileModificationTime);
}
/*!
@@ -1351,16 +1333,7 @@ QDateTime QFileInfo::lastModified() const
*/
QDateTime QFileInfo::lastRead() const
{
- Q_D(const QFileInfo);
- if (d->isDefaultConstructed)
- return QDateTime();
- if (d->fileEngine == 0) {
- if (!d->cache_enabled || !d->metaData.hasFlags(QFileSystemMetaData::AccessTime))
- if (!QFileSystemEngine::fillMetaData(d->fileEntry, d->metaData, QFileSystemMetaData::AccessTime))
- return QDateTime();
- return d->metaData.accessTime().toLocalTime();
- }
- return d->getFileTime(QAbstractFileEngine::AccessTime).toLocalTime();
+ return fileTime(QFile::FileAccessTime);
}
/*!
@@ -1373,19 +1346,34 @@ QDateTime QFileInfo::lastRead() const
*/
QDateTime QFileInfo::fileTime(QFile::FileTime time) const
{
- switch (time) {
- case QFile::FileCreationTime:
- return created();
+ Q_STATIC_ASSERT(int(QFile::FileAccessTime) == int(QAbstractFileEngine::AccessTime));
+ Q_STATIC_ASSERT(int(QFile::FileCreationTime) == int(QAbstractFileEngine::CreationTime));
+ Q_STATIC_ASSERT(int(QFile::FileModificationTime) == int(QAbstractFileEngine::ModificationTime));
- case QFile::FileModificationTime:
- return lastModified();
+ Q_D(const QFileInfo);
+ auto fetime = QAbstractFileEngine::FileTime(time);
+ if (d->isDefaultConstructed)
+ return QDateTime();
+ if (d->fileEngine)
+ return d->getFileTime(fetime).toLocalTime();
+ QFileSystemMetaData::MetaDataFlags flag;
+ switch (time) {
case QFile::FileAccessTime:
- return lastRead();
-
- default:
- Q_UNREACHABLE();
+ flag = QFileSystemMetaData::AccessTime;
+ break;
+ case QFile::FileCreationTime:
+ flag = QFileSystemMetaData::CreationTime;
+ break;
+ case QFile::FileModificationTime:
+ flag = QFileSystemMetaData::ModificationTime;
+ break;
}
+
+ if (!d->cache_enabled || !d->metaData.hasFlags(flag))
+ if (!QFileSystemEngine::fillMetaData(d->fileEntry, d->metaData, flag))
+ return QDateTime();
+ return d->metaData.fileTime(fetime).toLocalTime();
}
/*!