From 7e4d6efadf71d6c8ec5d06cdffcee117f01c6160 Mon Sep 17 00:00:00 2001 From: Yann Bodson Date: Thu, 7 Jun 2012 13:21:56 +1000 Subject: [PATCH] Allow setting horizontal and vertical tile modes in sci files It was still using the old 'tileRule' name. Also make sci file parser less strict with h/v tile mode values. Task-number: QTBUG-26022 Change-Id: I41b7571b42a0fb9bd2cfab8ce2e76e57addabefd Reviewed-by: Andrew den Exter --- src/quick/items/qquickscalegrid.cpp | 14 +++++++---- tests/auto/quick/qquickborderimage/data/valid1.sci | 7 ++++++ tests/auto/quick/qquickborderimage/data/valid2.sci | 7 ++++++ tests/auto/quick/qquickborderimage/data/valid3.sci | 7 ++++++ tests/auto/quick/qquickborderimage/data/valid4.sci | 7 ++++++ .../qquickborderimage/tst_qquickborderimage.cpp | 29 ++++++++++++++++++++++ 6 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 tests/auto/quick/qquickborderimage/data/valid1.sci create mode 100644 tests/auto/quick/qquickborderimage/data/valid2.sci create mode 100644 tests/auto/quick/qquickborderimage/data/valid3.sci create mode 100644 tests/auto/quick/qquickborderimage/data/valid4.sci diff --git a/src/quick/items/qquickscalegrid.cpp b/src/quick/items/qquickscalegrid.cpp index de10d8d..f64a19b 100644 --- a/src/quick/items/qquickscalegrid.cpp +++ b/src/quick/items/qquickscalegrid.cpp @@ -152,9 +152,9 @@ QQuickGridScaledImage::QQuickGridScaledImage(QIODevice *data) b = list[1].toInt(); else if (list[0] == QLatin1String("source")) imgFile = list[1]; - else if (list[0] == QLatin1String("horizontalTileRule")) + else if (list[0] == QLatin1String("horizontalTileRule") || list[0] == QLatin1String("horizontalTileMode")) _h = stringToRule(list[1]); - else if (list[0] == QLatin1String("verticalTileRule")) + else if (list[0] == QLatin1String("verticalTileRule") || list[0] == QLatin1String("verticalTileMode")) _v = stringToRule(list[1]); } @@ -170,11 +170,15 @@ QQuickGridScaledImage::QQuickGridScaledImage(QIODevice *data) QQuickBorderImage::TileMode QQuickGridScaledImage::stringToRule(const QString &s) { - if (s == QLatin1String("Stretch")) + QString string = s; + if (string.startsWith(QLatin1Char('"')) && string.endsWith(QLatin1Char('"'))) + string = string.mid(1, string.size() - 2); // remove leading/trailing quotes. + + if (string == QLatin1String("Stretch") || string == QLatin1String("BorderImage.Stretch")) return QQuickBorderImage::Stretch; - if (s == QLatin1String("Repeat")) + if (string == QLatin1String("Repeat") || string == QLatin1String("BorderImage.Repeat")) return QQuickBorderImage::Repeat; - if (s == QLatin1String("Round")) + if (string == QLatin1String("Round") || string == QLatin1String("BorderImage.Round")) return QQuickBorderImage::Round; qWarning("QQuickGridScaledImage: Invalid tile rule specified. Using Stretch."); diff --git a/tests/auto/quick/qquickborderimage/data/valid1.sci b/tests/auto/quick/qquickborderimage/data/valid1.sci new file mode 100644 index 0000000..6925c48 --- /dev/null +++ b/tests/auto/quick/qquickborderimage/data/valid1.sci @@ -0,0 +1,7 @@ +border.left: 10 +border.top: 20 +border.right: 30 +border.bottom: 40 +horizontalTileMode: Round +verticalTileMode: Repeat +source: colors.png diff --git a/tests/auto/quick/qquickborderimage/data/valid2.sci b/tests/auto/quick/qquickborderimage/data/valid2.sci new file mode 100644 index 0000000..a024781 --- /dev/null +++ b/tests/auto/quick/qquickborderimage/data/valid2.sci @@ -0,0 +1,7 @@ +border.left: 10 +border.top: 20 +border.right: 30 +border.bottom: 40 +horizontalTileMode: "Round" +verticalTileMode: "Repeat" +source: colors.png diff --git a/tests/auto/quick/qquickborderimage/data/valid3.sci b/tests/auto/quick/qquickborderimage/data/valid3.sci new file mode 100644 index 0000000..688b072 --- /dev/null +++ b/tests/auto/quick/qquickborderimage/data/valid3.sci @@ -0,0 +1,7 @@ +border.left: 10 +border.top: 20 +border.right: 30 +border.bottom: 40 +horizontalTileMode: BorderImage.Round +verticalTileMode: BorderImage.Repeat +source: colors.png diff --git a/tests/auto/quick/qquickborderimage/data/valid4.sci b/tests/auto/quick/qquickborderimage/data/valid4.sci new file mode 100644 index 0000000..39db0ae --- /dev/null +++ b/tests/auto/quick/qquickborderimage/data/valid4.sci @@ -0,0 +1,7 @@ +border.left: 10 +border.top: 20 +border.right: 30 +border.bottom: 40 +horizontalTileMode: "BorderImage.Round" +verticalTileMode: "BorderImage.Repeat" +source: colors.png diff --git a/tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp b/tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp index 173f230..c6c3f6c 100644 --- a/tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp +++ b/tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp @@ -79,6 +79,8 @@ private slots: void sciSource(); void sciSource_data(); void invalidSciFile(); + void validSciFiles_data(); + void validSciFiles(); void pendingRemoteRequest(); void pendingRemoteRequest_data(); @@ -342,6 +344,33 @@ void tst_qquickborderimage::invalidSciFile() delete obj; } +void tst_qquickborderimage::validSciFiles_data() +{ + QTest::addColumn("source"); + + QTest::newRow("valid1") << testFileUrl("valid1.sci").toString(); + QTest::newRow("valid2") << testFileUrl("valid2.sci").toString(); + QTest::newRow("valid3") << testFileUrl("valid3.sci").toString(); + QTest::newRow("valid4") << testFileUrl("valid4.sci").toString(); +} + +void tst_qquickborderimage::validSciFiles() +{ + QFETCH(QString, source); + + QString componentStr = "import QtQuick 2.0\nBorderImage { source: \"" + source +"\"; width: 300; height: 300 }"; + QQmlComponent component(&engine); + component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); + QQuickBorderImage *obj = qobject_cast(component.create()); + QVERIFY(obj != 0); + QCOMPARE(obj->width(), 300.); + QCOMPARE(obj->height(), 300.); + QCOMPARE(obj->horizontalTileMode(), QQuickBorderImage::Round); + QCOMPARE(obj->verticalTileMode(), QQuickBorderImage::Repeat); + + delete obj; +} + void tst_qquickborderimage::pendingRemoteRequest() { QFETCH(QString, source); -- 2.7.4