diff options
-rw-r--r-- | src/corelib/io/qfileselector.cpp | 35 | ||||
-rw-r--r-- | tests/auto/corelib/io/qfileselector/platforms/+unix/test3 (renamed from tests/auto/corelib/io/qfileselector/platforms/+windows/test2) | 0 | ||||
-rw-r--r-- | tests/auto/corelib/io/qfileselector/platforms/+windows/+winnt/test | 0 | ||||
-rw-r--r-- | tests/auto/corelib/io/qfileselector/platforms/+windows/test3 | 0 | ||||
-rw-r--r-- | tests/auto/corelib/io/qfileselector/platforms/+winnt/test2 | 0 | ||||
-rw-r--r-- | tests/auto/corelib/io/qfileselector/platforms/test3 | 0 | ||||
-rw-r--r-- | tests/auto/corelib/io/qfileselector/qfileselector.qrc | 30 | ||||
-rw-r--r-- | tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp | 17 |
8 files changed, 51 insertions, 31 deletions
diff --git a/src/corelib/io/qfileselector.cpp b/src/corelib/io/qfileselector.cpp index 95fa970b2d..b95e628b0f 100644 --- a/src/corelib/io/qfileselector.cpp +++ b/src/corelib/io/qfileselector.cpp @@ -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; } diff --git a/tests/auto/corelib/io/qfileselector/platforms/+windows/test2 b/tests/auto/corelib/io/qfileselector/platforms/+unix/test3 index e69de29bb2..e69de29bb2 100644 --- a/tests/auto/corelib/io/qfileselector/platforms/+windows/test2 +++ b/tests/auto/corelib/io/qfileselector/platforms/+unix/test3 diff --git a/tests/auto/corelib/io/qfileselector/platforms/+windows/+winnt/test b/tests/auto/corelib/io/qfileselector/platforms/+windows/+winnt/test new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/auto/corelib/io/qfileselector/platforms/+windows/+winnt/test diff --git a/tests/auto/corelib/io/qfileselector/platforms/+windows/test3 b/tests/auto/corelib/io/qfileselector/platforms/+windows/test3 new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/auto/corelib/io/qfileselector/platforms/+windows/test3 diff --git a/tests/auto/corelib/io/qfileselector/platforms/+winnt/test2 b/tests/auto/corelib/io/qfileselector/platforms/+winnt/test2 new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/auto/corelib/io/qfileselector/platforms/+winnt/test2 diff --git a/tests/auto/corelib/io/qfileselector/platforms/test3 b/tests/auto/corelib/io/qfileselector/platforms/test3 new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/auto/corelib/io/qfileselector/platforms/test3 diff --git a/tests/auto/corelib/io/qfileselector/qfileselector.qrc b/tests/auto/corelib/io/qfileselector/qfileselector.qrc index 8fe7b841d2..661647f933 100644 --- a/tests/auto/corelib/io/qfileselector/qfileselector.qrc +++ b/tests/auto/corelib/io/qfileselector/qfileselector.qrc @@ -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> diff --git a/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp b/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp index 26bb4189d7..831db9e0b4 100644 --- a/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp +++ b/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp @@ -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() |