From 77c0ef6aafcdcc52cb2d07ce085ee4b3574c36d9 Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Thu, 21 Jun 2018 11:01:53 +0200 Subject: QQuickStyle::addStylePath(): fix support for qrc paths The code lacked handling for the "qrc" scheme. Task-number: QTBUG-68222 Change-Id: Ia0dfdb748b8bdb40c893375b9de77bd8c05986b6 Reviewed-by: Richard Moe Gustavsen --- tests/auto/qquickstyle/qquickstyle.pro | 8 +++++ .../qquickstyle/qrcStyles1/QrcStyle1/Button.qml | 2 ++ .../qquickstyle/qrcStyles2/QrcStyle2/Button.qml | 2 ++ tests/auto/qquickstyle/tst_qquickstyle.cpp | 39 ++++++++++++++++++++++ 4 files changed, 51 insertions(+) create mode 100644 tests/auto/qquickstyle/qrcStyles1/QrcStyle1/Button.qml create mode 100644 tests/auto/qquickstyle/qrcStyles2/QrcStyle2/Button.qml (limited to 'tests') diff --git a/tests/auto/qquickstyle/qquickstyle.pro b/tests/auto/qquickstyle/qquickstyle.pro index da74b6cd..983e5438 100644 --- a/tests/auto/qquickstyle/qquickstyle.pro +++ b/tests/auto/qquickstyle/qquickstyle.pro @@ -10,3 +10,11 @@ QT_PRIVATE += core-private gui-private quickcontrols2-private include (../shared/util.pri) TESTDATA = $$PWD/data/* + +qrcStyles1.files = $$files(qrcStyles1/QrcStyle1/*.qml) +qrcStyles1.prefix = / +RESOURCES += qrcStyles1 + +qrcStyles2.files = $$files(qrcStyles2/QrcStyle2/*.qml) +qrcStyles2.prefix = / +RESOURCES += qrcStyles2 diff --git a/tests/auto/qquickstyle/qrcStyles1/QrcStyle1/Button.qml b/tests/auto/qquickstyle/qrcStyles1/QrcStyle1/Button.qml new file mode 100644 index 00000000..5b08222c --- /dev/null +++ b/tests/auto/qquickstyle/qrcStyles1/QrcStyle1/Button.qml @@ -0,0 +1,2 @@ +import QtQuick.Templates 2.0 as T +T.Button { } diff --git a/tests/auto/qquickstyle/qrcStyles2/QrcStyle2/Button.qml b/tests/auto/qquickstyle/qrcStyles2/QrcStyle2/Button.qml new file mode 100644 index 00000000..5b08222c --- /dev/null +++ b/tests/auto/qquickstyle/qrcStyles2/QrcStyle2/Button.qml @@ -0,0 +1,2 @@ +import QtQuick.Templates 2.0 as T +T.Button { } diff --git a/tests/auto/qquickstyle/tst_qquickstyle.cpp b/tests/auto/qquickstyle/tst_qquickstyle.cpp index 555e1686..324d0b08 100644 --- a/tests/auto/qquickstyle/tst_qquickstyle.cpp +++ b/tests/auto/qquickstyle/tst_qquickstyle.cpp @@ -55,6 +55,8 @@ private slots: void commandLineArgument(); void environmentVariables(); void availableStyles(); + void qrcStylePaths_data(); + void qrcStylePaths(); private: void loadControls(); @@ -167,6 +169,43 @@ void tst_QQuickStyle::availableStyles() } } +void tst_QQuickStyle::qrcStylePaths_data() +{ + QTest::addColumn("stylePath"); + QTest::addColumn("expectedStyleName"); + + QTest::addRow("qrc:/qrcStyles1") << QString::fromLatin1("qrc:/qrcStyles1") << QString::fromLatin1("QrcStyle1"); + QTest::addRow(":/qrcStyles2") << QString::fromLatin1(":/qrcStyles2") << QString::fromLatin1("QrcStyle2"); +} + +void tst_QQuickStyle::qrcStylePaths() +{ + QFETCH(QString, stylePath); + QFETCH(QString, expectedStyleName); + + QQuickStyle::addStylePath(stylePath); + + const QStringList paths = QQuickStylePrivate::stylePaths(); + QString expectedStylePath = stylePath; + if (expectedStylePath.startsWith(QLatin1String("qrc"))) + expectedStylePath.remove(0, 3); + if (!paths.contains(expectedStylePath)) { + QString message; + QDebug stream(&message); + stream.nospace() << "QQuickStylePrivate::stylePaths() doesn't contain " << expectedStylePath << ":\n" << paths; + QFAIL(qPrintable(message)); + } + + const QStringList styles = QQuickStyle::availableStyles(); + QVERIFY(!styles.isEmpty()); + if (!styles.contains(expectedStyleName)) { + QString message; + QDebug stream(&message); + stream.nospace() << "QQuickStyle::availableStyles() doesn't contain " << expectedStyleName << ":\n" << styles; + QFAIL(qPrintable(message)); + } +} + QTEST_MAIN(tst_QQuickStyle) #include "tst_qquickstyle.moc" -- cgit v1.2.3