Allow setting horizontal and vertical tile modes in sci files
authorYann Bodson <yann.bodson@nokia.com>
Thu, 7 Jun 2012 03:21:56 +0000 (13:21 +1000)
committerQt by Nokia <qt-info@nokia.com>
Tue, 12 Jun 2012 13:40:13 +0000 (15:40 +0200)
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 <andrew.den-exter@nokia.com>

src/quick/items/qquickscalegrid.cpp
tests/auto/quick/qquickborderimage/data/valid1.sci [new file with mode: 0644]
tests/auto/quick/qquickborderimage/data/valid2.sci [new file with mode: 0644]
tests/auto/quick/qquickborderimage/data/valid3.sci [new file with mode: 0644]
tests/auto/quick/qquickborderimage/data/valid4.sci [new file with mode: 0644]
tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp

index de10d8d..f64a19b 100644 (file)
@@ -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 (file)
index 0000000..6925c48
--- /dev/null
@@ -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 (file)
index 0000000..a024781
--- /dev/null
@@ -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 (file)
index 0000000..688b072
--- /dev/null
@@ -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 (file)
index 0000000..39db0ae
--- /dev/null
@@ -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
index 173f230..c6c3f6c 100644 (file)
@@ -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<QString>("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<QQuickBorderImage*>(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);