}
/*!
+ \since 5.0
+ Returns true if the file path can be used directly with native APIs.
+ Returns false if the file is otherwise supported by a virtual file system
+ inside Qt, such as \l{the Qt Resource System}.
+
+ \bold{Note:} Native paths may still require conversion of path separators
+ and character encoding, depending on platform and input requirements of the
+ native API.
+
+ \sa QDir::toNativeSeparators(), QFile::encodeName(), filePath(),
+ absoluteFilePath(), canonicalFilePath()
+*/
+bool QFileInfo::isNativePath() const
+{
+ Q_D(const QFileInfo);
+ if (d->isDefaultConstructed)
+ return false;
+ if (d->fileEngine == 0)
+ return true;
+ return d->getFileFlags(QAbstractFileEngine::LocalDiskFlag);
+}
+
+/*!
Returns true if this object points to a file or to a symbolic
link to a file. Returns false if the
object points to something which isn't a file, such as a directory.
void isBundle_data();
void isBundle();
- void isLocalFs_data();
- void isLocalFs();
+ void isNativePath_data();
+ void isNativePath();
void refresh();
QCOMPARE(fi.isBundle(), isBundle);
}
-void tst_QFileInfo::isLocalFs_data()
+void tst_QFileInfo::isNativePath_data()
{
QTest::addColumn<QString>("path");
- QTest::addColumn<bool>("isLocalFs");
+ QTest::addColumn<bool>("isNativePath");
+
+ QTest::newRow("default-constructed") << QString() << false;
+ QTest::newRow("empty") << QString("") << true;
QTest::newRow("local root") << QString::fromLatin1("/") << true;
QTest::newRow("local non-existent file") << QString::fromLatin1("/abrakadabra.boo") << true;
QTest::newRow("qresource root") << QString::fromLatin1(":/") << false;
}
-void tst_QFileInfo::isLocalFs()
+void tst_QFileInfo::isNativePath()
{
QFETCH(QString, path);
- QFETCH(bool, isLocalFs);
+ QFETCH(bool, isNativePath);
QFileInfo info(path);
- QFileInfoPrivate *privateInfo = getPrivate(info);
- QCOMPARE((privateInfo->fileEngine == 0), isLocalFs);
- if (privateInfo->fileEngine)
- QCOMPARE(bool(privateInfo->fileEngine->fileFlags(QAbstractFileEngine::LocalDiskFlag)
- & QAbstractFileEngine::LocalDiskFlag), isLocalFs);
+ if (path.isNull())
+ info = QFileInfo();
+ QCOMPARE(info.isNativePath(), isNativePath);
}
void tst_QFileInfo::refresh()