QT_BEGIN_NAMESPACE QString QFileInfoPrivate::getFileName(QAbstractFileEngine::FileName name) const { if (cache_enabled && !fileNames[(int)name].isNull()) return fileNames[(int)name]; QString ret; if (fileEngine == 0) { // local file; use the QFileSystemEngine directly switch (name) { case QAbstractFileEngine::CanonicalName: case QAbstractFileEngine::CanonicalPathName: { QFileSystemEntry entry = QFileSystemEngine::canonicalName(fileEntry, metaData); if (cache_enabled) { // be smart and store both fileNames[QAbstractFileEngine::CanonicalName] = entry.filePath(); fileNames[QAbstractFileEngine::CanonicalPathName] = entry.path(); } if (name == QAbstractFileEngine::CanonicalName) ret = entry.filePath(); else ret = entry.path(); break; } case QAbstractFileEngine::LinkName: ret = QFileSystemEngine::getLinkTarget(fileEntry, metaData).filePath(); break; case QAbstractFileEngine::BundleName: ret = QFileSystemEngine::bundleName(fileEntry); break; case QAbstractFileEngine::AbsoluteName: case QAbstractFileEngine::AbsolutePathName: { QFileSystemEntry entry = QFileSystemEngine::absoluteName(fileEntry); if (cache_enabled) { // be smart and store both fileNames[QAbstractFileEngine::AbsoluteName] = entry.filePath(); fileNames[QAbstractFileEngine::AbsolutePathName] = entry.path(); } if (name == QAbstractFileEngine::AbsoluteName) ret = entry.filePath(); else ret = entry.path(); break; } default: break; } } else { ret = fileEngine->fileName(name); } if (ret.isNull()) ret = QLatin1String(""); if (cache_enabled) fileNames[(int)name] = ret; return ret; }
void tst_QFileSystemEntry::defaultCtor() { QFileSystemEntry entry; QVERIFY(entry.filePath().isNull()); QVERIFY(entry.nativeFilePath().isNull()); QVERIFY(entry.fileName().isNull()); QCOMPARE(entry.path(), QString(".")); QVERIFY(entry.baseName().isNull()); QVERIFY(entry.completeBaseName().isNull()); QVERIFY(entry.suffix().isNull()); QVERIFY(entry.completeSuffix().isNull()); QVERIFY(!entry.isAbsolute()); QVERIFY(entry.isRelative()); QVERIFY(entry.isClean()); #if defined(Q_OS_WIN) QVERIFY(!entry.isDriveRoot()); #endif QVERIFY(!entry.isRoot()); QVERIFY(entry.isEmpty()); }