Update QFileSelector to use QSysInfo better
This reduces a bit of string duplication by relying on the constants defined in qglobal.cpp and detection via uname(2), in addition to adding the Linux distribution name as a selector. Change-Id: I64a46a0fc552c399db787125b1b32aae5c50056f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
This commit is contained in:
parent
23f663cad6
commit
bbded12df3
@ -145,7 +145,9 @@ QFileSelectorPrivate::QFileSelectorPrivate()
|
||||
Selectors normally available are
|
||||
\list
|
||||
\li platform, any of the following strings which match the platform the application is running
|
||||
on: android, blackberry, ios, osx, darwin, mac, linux, wince, unix, windows.
|
||||
on (list not exhaustive): android, blackberry, ios, osx, darwin, mac, linux, wince, unix,
|
||||
windows. On Linux, if it can be determined, the name of the distribution too, like debian,
|
||||
fedora or opensuse.
|
||||
\li locale, same as QLocale::system().name().
|
||||
\endlist
|
||||
|
||||
@ -351,10 +353,10 @@ QStringList QFileSelectorPrivate::platformSelectors()
|
||||
// similar, but not identical to QSysInfo::osType
|
||||
QStringList ret;
|
||||
#if defined(Q_OS_WIN)
|
||||
// can't fall back to QSysInfo because we need both "winphone" and "winrt" for the Windows Phone case
|
||||
ret << QStringLiteral("windows");
|
||||
# if defined(Q_OS_WINCE)
|
||||
ret << QStringLiteral("wince");
|
||||
# elif defined(Q_OS_WINRT)
|
||||
ret << QSysInfo::kernelType(); // "wince" and "winnt"
|
||||
# if defined(Q_OS_WINRT)
|
||||
ret << QStringLiteral("winrt");
|
||||
# if defined(Q_OS_WINPHONE)
|
||||
ret << QStringLiteral("winphone");
|
||||
@ -362,25 +364,16 @@ QStringList QFileSelectorPrivate::platformSelectors()
|
||||
# endif
|
||||
#elif defined(Q_OS_UNIX)
|
||||
ret << QStringLiteral("unix");
|
||||
# if defined(Q_OS_ANDROID)
|
||||
ret << QStringLiteral("android");
|
||||
# elif defined(Q_OS_BLACKBERRY)
|
||||
ret << QStringLiteral("blackberry");
|
||||
# elif defined(Q_OS_QNX)
|
||||
ret << QStringLiteral("qnx");
|
||||
# elif defined(Q_OS_LINUX)
|
||||
ret << QStringLiteral("linux");
|
||||
# elif defined(Q_OS_DARWIN)
|
||||
ret << QStringLiteral("darwin");
|
||||
ret << QStringLiteral("mac"); // compatibility synonym
|
||||
# if defined(Q_OS_IOS)
|
||||
ret << QStringLiteral("ios");
|
||||
# elif defined(Q_OS_OSX)
|
||||
ret << QStringLiteral("osx");
|
||||
# endif
|
||||
# else
|
||||
# if !defined(Q_OS_ANDROID) && !defined(Q_OS_BLACKBERRY)
|
||||
// we don't want "linux" for Android or "qnx" for Blackberry here
|
||||
ret << QSysInfo::kernelType();
|
||||
# ifdef Q_OS_MAC
|
||||
ret << QStringLiteral("mac"); // compatibility, since kernelType() is "darwin"
|
||||
# endif
|
||||
# endif
|
||||
QString productName = QSysInfo::productType();
|
||||
if (productName != QLatin1String("unknown"))
|
||||
ret << productName; // "opensuse", "fedora", "osx", "ios", "blackberry", "android"
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
0
tests/auto/corelib/io/qfileselector/platforms/test3
Normal file
0
tests/auto/corelib/io/qfileselector/platforms/test3
Normal file
@ -10,6 +10,8 @@
|
||||
<file>extras/+custom3/+custom4/test</file>
|
||||
<file>extras/+custom3/+custom5/test</file>
|
||||
<file>extras/+custom5/+custom3/test</file>
|
||||
|
||||
<!-- platforms/test: deepest possible selection -->
|
||||
<file>platforms/test</file>
|
||||
<file>platforms/+unix/+android/test</file>
|
||||
<file>platforms/+unix/+blackberry/test</file>
|
||||
@ -17,18 +19,11 @@
|
||||
<file>platforms/+unix/+darwin/+mac/+osx/test</file>
|
||||
<file>platforms/+unix/+darwin/+mac/test</file>
|
||||
<file>platforms/+unix/+darwin/test</file>
|
||||
<file>platforms/+windows/+wince/test</file>
|
||||
<file>platforms/+windows/test</file>
|
||||
<file>platforms/+windows/test2</file>
|
||||
<file>platforms/+unix/+linux/test</file>
|
||||
<file>platforms/+unix/test</file>
|
||||
<file>platforms/test2</file>
|
||||
<file>platforms/+android/test2</file>
|
||||
<file>platforms/+blackberry/test2</file>
|
||||
<file>platforms/+ios/test2</file>
|
||||
<file>platforms/+osx/test2</file>
|
||||
<file>platforms/+linux/test2</file>
|
||||
<file>platforms/+wince/test2</file>
|
||||
<file>platforms/+windows/+wince/test</file>
|
||||
<file>platforms/+windows/+winnt/test</file>
|
||||
<file>platforms/+windows/test</file>
|
||||
<file>platforms/+android/test</file>
|
||||
<file>platforms/+blackberry/test</file>
|
||||
<file>platforms/+ios/test</file>
|
||||
@ -37,5 +32,20 @@
|
||||
<file>platforms/+mac/test</file>
|
||||
<file>platforms/+linux/test</file>
|
||||
<file>platforms/+wince/test</file>
|
||||
|
||||
<!-- platforms/test2: shallow selection for the deepest selector -->
|
||||
<file>platforms/test2</file>
|
||||
<file>platforms/+android/test2</file>
|
||||
<file>platforms/+blackberry/test2</file>
|
||||
<file>platforms/+ios/test2</file>
|
||||
<file>platforms/+osx/test2</file>
|
||||
<file>platforms/+linux/test2</file>
|
||||
<file>platforms/+wince/test2</file>
|
||||
<file>platforms/+winnt/test2</file>
|
||||
|
||||
<!-- platforms/test3: selection for the family only -->
|
||||
<file>platforms/test3</file>
|
||||
<file>platforms/+windows/test3</file>
|
||||
<file>platforms/+unix/test3</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
@ -84,8 +84,10 @@ void tst_QFileSelector::basicTest_data()
|
||||
|
||||
QString test("/test");// '/' is here so dir string can also be selector string
|
||||
QString test2("/test2");
|
||||
QString test3("/test3");
|
||||
QString expectedPlatform1File(":/platforms");
|
||||
QString expectedPlatform2File(""); //Only the last selector
|
||||
QString expectedPlatform3File; // Only the first selector (the family)
|
||||
#if defined(Q_OS_UNIX) && !defined(Q_OS_ANDROID) && !defined(Q_OS_BLACKBERRY) && \
|
||||
!defined(Q_OS_DARWIN) && !defined(Q_OS_LINUX)
|
||||
/* We are only aware of specific unixes, and do not have test files for any of the others.
|
||||
@ -96,14 +98,26 @@ void tst_QFileSelector::basicTest_data()
|
||||
+ QString("unix/test");
|
||||
expectedPlatform2File = QString(":/platforms/test2");
|
||||
#else
|
||||
QString distributionName;
|
||||
# if (defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID)) || defined(Q_OS_FREEBSD)
|
||||
distributionName = QSysInfo::productType();
|
||||
# endif
|
||||
foreach (const QString &selector, QFileSelectorPrivate::platformSelectors()) {
|
||||
// skip the Linux distribution name (if any) since we don't have files for them
|
||||
if (selector == distributionName)
|
||||
continue;
|
||||
|
||||
expectedPlatform1File = expectedPlatform1File + QLatin1Char('/') + QLatin1Char(selectorIndicator)
|
||||
+ selector;
|
||||
expectedPlatform2File = selector;
|
||||
if (expectedPlatform3File.isNull())
|
||||
expectedPlatform3File = selector;
|
||||
}
|
||||
expectedPlatform1File += test;
|
||||
expectedPlatform2File = QLatin1String(":/platforms/") + QLatin1Char(selectorIndicator)
|
||||
+ expectedPlatform2File + test2;
|
||||
expectedPlatform3File = QLatin1String(":/platforms/") + QLatin1Char(selectorIndicator)
|
||||
+ expectedPlatform3File + test3;
|
||||
#endif
|
||||
|
||||
QTest::newRow("platform1") << QString(":/platforms/test") << QStringList()
|
||||
@ -112,6 +126,9 @@ void tst_QFileSelector::basicTest_data()
|
||||
QTest::newRow("platform2") << QString(":/platforms/test2") << QStringList()
|
||||
<< expectedPlatform2File;
|
||||
|
||||
QTest::newRow("platform3") << QString(":/platforms/test3") << QStringList()
|
||||
<< expectedPlatform3File;
|
||||
|
||||
QString resourceTestPath(":/extras/test");
|
||||
QString custom1("custom1");
|
||||
QTest::newRow("custom1-noselector") << resourceTestPath << QStringList()
|
||||
|
Loading…
x
Reference in New Issue
Block a user