aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Bodson <yann.bodson@nokia.com>2012-06-07 13:21:56 +1000
committerQt by Nokia <qt-info@nokia.com>2012-06-12 15:40:13 +0200
commit7e4d6efadf71d6c8ec5d06cdffcee117f01c6160 (patch)
treed9168983007b7b6619735c0a9d5dda6e40ed947e
parente883fa03efad4384f030cec5f13c22346356e3bf (diff)
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 <andrew.den-exter@nokia.com>
-rw-r--r--src/quick/items/qquickscalegrid.cpp14
-rw-r--r--tests/auto/quick/qquickborderimage/data/valid1.sci7
-rw-r--r--tests/auto/quick/qquickborderimage/data/valid2.sci7
-rw-r--r--tests/auto/quick/qquickborderimage/data/valid3.sci7
-rw-r--r--tests/auto/quick/qquickborderimage/data/valid4.sci7
-rw-r--r--tests/auto/quick/qquickborderimage/tst_qquickborderimage.cpp29
6 files changed, 66 insertions, 5 deletions
diff --git a/src/quick/items/qquickscalegrid.cpp b/src/quick/items/qquickscalegrid.cpp
index de10d8de47..f64a19b48a 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 0000000000..6925c48af6
--- /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 0000000000..a0247818bb
--- /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 0000000000..688b072a87
--- /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 0000000000..39db0aeb8a
--- /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 173f230203..c6c3f6cbd6 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<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);