diff options
Diffstat (limited to 'tests/auto/declarative')
1362 files changed, 31698 insertions, 21662 deletions
diff --git a/tests/auto/declarative/.gitignore b/tests/auto/declarative/.gitignore index d937eb4..57608cf 100644 --- a/tests/auto/declarative/.gitignore +++ b/tests/auto/declarative/.gitignore @@ -1,4 +1,5 @@ tst_* !tst_*.* +tst_*.log tst_*.debug tst_*~ diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro index 42ff523..7834650 100644 --- a/tests/auto/declarative/declarative.pro +++ b/tests/auto/declarative/declarative.pro @@ -1,20 +1,19 @@ TEMPLATE = subdirs SUBDIRS += \ + examples \ graphicswidgets \ # Cover - layouts \ # Cover parserstress \ # Cover qmetaobjectbuilder \ # Cover qdeclarativeanimations \ # Cover qdeclarativebehaviors \ # Cover qdeclarativebinding \ # Cover + qdeclarativecomponent \ # Cover qdeclarativeconnection \ # Cover qdeclarativecontext \ # Cover - qdeclarativedatetimeformatter \ # Cover qdeclarativedebug \ # Cover qdeclarativedebugclient \ # Cover qdeclarativedebugservice \ # Cover qdeclarativedom \ # Cover - qdeclarativeeasefollow \ # Cover qdeclarativeecmascript \ # Cover qdeclarativeengine \ # Cover qdeclarativeerror \ # Cover @@ -25,10 +24,12 @@ SUBDIRS += \ qdeclarativeborderimage \ # Cover qdeclarativeflickable \ # Cover qdeclarativeflipable \ # Cover + qdeclarativefocusscope \ # Cover qdeclarativegridview \ # Cover qdeclarativeitem \ # Cover qdeclarativelistview \ # Cover qdeclarativeloader \ # Cover + qdeclarativelayouts \ # Cover qdeclarativemousearea \ # Cover qdeclarativeparticles \ # Cover qdeclarativepathview \ # Cover @@ -41,13 +42,14 @@ SUBDIRS += \ qdeclarativelanguage \ # Cover qdeclarativelistreference \ # Cover qdeclarativelistmodel \ # Cover - qdeclarativeproperty \ # Cover + qdeclarativeproperty \ # Cover qdeclarativemetatype \ # Cover qdeclarativemoduleplugin \ # Cover - qdeclarativenumberformatter \ # Cover qdeclarativepixmapcache \ # Cover qdeclarativepropertymap \ # Cover qdeclarativeqt \ # Cover + qdeclarativesmoothedanimation \ # Cover + qdeclarativesmoothedfollow\ # Cover qdeclarativespringfollow \ # Cover qdeclarativestates \ # Cover qdeclarativesystempalette \ # Cover @@ -55,11 +57,13 @@ SUBDIRS += \ qdeclarativexmllistmodel \ # Cover qpacketprotocol \ # Cover qdeclarativerepeater \ # Cover + qdeclarativeworkerscript \ # Cover qdeclarativevaluetypes \ # Cover qdeclarativexmlhttprequest \ # Cover qdeclarativeimageprovider \ # Cover qdeclarativestyledtext \ # Cover - sql # Cover + qdeclarativesqldatabase \ # Cover + qmlvisual # Cover contains(QT_CONFIG, webkit) { SUBDIRS += \ diff --git a/tests/auto/declarative/examples/examples.pro b/tests/auto/declarative/examples/examples.pro index b9bcd28..4c32524 100644 --- a/tests/auto/declarative/examples/examples.pro +++ b/tests/auto/declarative/examples/examples.pro @@ -3,3 +3,10 @@ contains(QT_CONFIG,declarative): QT += declarative macx:CONFIG -= app_bundle SOURCES += tst_examples.cpp + +include(../../../../tools/qml/qml.pri) + +DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/examples/tst_examples.cpp b/tests/auto/declarative/examples/tst_examples.cpp index 6160e7c..c650346 100644 --- a/tests/auto/declarative/examples/tst_examples.cpp +++ b/tests/auto/declarative/examples/tst_examples.cpp @@ -43,6 +43,9 @@ #include <QDir> #include <QProcess> #include <QDebug> +#include "qmlruntime.h" +#include <QDeclarativeView> +#include <QDeclarativeError> class tst_examples : public QObject { @@ -79,6 +82,23 @@ tst_examples::tst_examples() // Add directories you want excluded here excludedDirs << "examples/declarative/extending"; excludedDirs << "examples/declarative/plugins"; + excludedDirs << "examples/declarative/proxywidgets"; + excludedDirs << "examples/declarative/gestures"; + + excludedDirs << "examples/declarative/imageprovider"; + excludedDirs << "demos/declarative/minehunt"; + +#ifdef QT_NO_WEBKIT + excludedDirs << "examples/declarative/webview"; + excludedDirs << "demos/declarative/webbrowser"; +#endif + +#ifdef QT_NO_XMLPATTERNS + excludedDirs << "examples/declarative/xmldata"; + excludedDirs << "demos/declarative/twitter"; + excludedDirs << "demos/declarative/flickr"; + excludedDirs << "demos/declarative/photoviewer"; +#endif } /* @@ -88,24 +108,24 @@ to have them tested by the examples() test. void tst_examples::namingConvention(const QDir &d) { for (int ii = 0; ii < excludedDirs.count(); ++ii) { - QString s = QDir::toNativeSeparators(excludedDirs.at(ii)); + QString s = excludedDirs.at(ii); if (d.absolutePath().endsWith(s)) return; } - QStringList files = d.entryList(QStringList() << QLatin1String("*.qml"), + QStringList files = d.entryList(QStringList() << QLatin1String("*.qml"), QDir::Files); bool seenQml = !files.isEmpty(); bool seenLowercase = false; foreach (const QString &file, files) { - if (file.at(0).isLower()) + if (file.at(0).isLower()) seenLowercase = true; } if (!seenQml) { - QStringList dirs = d.entryList(QDir::Dirs | QDir::NoDotAndDotDot | + QStringList dirs = d.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks); foreach (const QString &dir, dirs) { QDir sub = d; @@ -129,14 +149,14 @@ void tst_examples::namingConvention() QStringList tst_examples::findQmlFiles(const QDir &d) { for (int ii = 0; ii < excludedDirs.count(); ++ii) { - QString s = QDir::toNativeSeparators(excludedDirs.at(ii)); + QString s = excludedDirs.at(ii); if (d.absolutePath().endsWith(s)) return QStringList(); } QStringList rv; - QStringList files = d.entryList(QStringList() << QLatin1String("*.qml"), + QStringList files = d.entryList(QStringList() << QLatin1String("*.qml"), QDir::Files); foreach (const QString &file, files) { if (file.at(0).isLower()) { @@ -144,7 +164,7 @@ QStringList tst_examples::findQmlFiles(const QDir &d) } } - QStringList dirs = d.entryList(QDir::Dirs | QDir::NoDotAndDotDot | + QStringList dirs = d.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::NoSymLinks); foreach (const QString &dir, dirs) { QDir sub = d; @@ -156,45 +176,50 @@ QStringList tst_examples::findQmlFiles(const QDir &d) } /* -This test runs all the examples in the declarative UI source tree and ensures +This test runs all the examples in the declarative UI source tree and ensures that they start and exit cleanly. Examples are any .qml files under the examples/ or demos/ directory that start -with a lower case letter. +with a lower case letter. */ void tst_examples::examples_data() { QTest::addColumn<QString>("file"); - QString examples = QLibraryInfo::location(QLibraryInfo::ExamplesPath); - QString demos = QLibraryInfo::location(QLibraryInfo::DemosPath); + QString examples = QLatin1String(SRCDIR) + "/../../../../demos/declarative/"; + QString demos = QLatin1String(SRCDIR) + "/../../../../examples/declarative/"; + QString snippets = QLatin1String(SRCDIR) + "/../../../../doc/src/snippets/"; QStringList files; files << findQmlFiles(QDir(examples)); files << findQmlFiles(QDir(demos)); + files << findQmlFiles(QDir(snippets)); foreach (const QString &file, files) - QTest::newRow(file.toLatin1().constData()) << file; + QTest::newRow(qPrintable(file)) << file; +} + +static void silentErrorsMsgHandler(QtMsgType, const char *) +{ } void tst_examples::examples() { QFETCH(QString, file); - QFileInfo fi(file); - QFileInfo dir(fi.path()); - QString script = "data/"+dir.baseName()+"/"+fi.baseName(); - QFileInfo testdata(script+".qml"); - QStringList arguments; - arguments << "-script" << (testdata.exists() ? script : QLatin1String("data/dummytest")) - << "-scriptopts" << "play,testerror,exitoncomplete,exitonfailure" - << file; - QProcess p; -qDebug() << qmlruntime << arguments; - p.start(qmlruntime, arguments); - QVERIFY(p.waitForFinished()); - QCOMPARE(p.exitStatus(), QProcess::NormalExit); - QCOMPARE(p.exitCode(), 0); + QDeclarativeViewer viewer; + + QtMsgHandler old = qInstallMsgHandler(silentErrorsMsgHandler); + QVERIFY(viewer.open(file)); + qInstallMsgHandler(old); + + if (viewer.view()->status() == QDeclarativeView::Error) + qWarning() << viewer.view()->errors(); + + QCOMPARE(viewer.view()->status(), QDeclarativeView::Ready); + viewer.show(); + + QTest::qWaitForWindowShown(&viewer); } QTEST_MAIN(tst_examples) diff --git a/tests/auto/declarative/graphicswidgets/data/graphicswidgets.qml b/tests/auto/declarative/graphicswidgets/data/graphicswidgets.qml index c00173d..714ae7c 100644 --- a/tests/auto/declarative/graphicswidgets/data/graphicswidgets.qml +++ b/tests/auto/declarative/graphicswidgets/data/graphicswidgets.qml @@ -1,58 +1,49 @@ import Qt 4.6 import Qt.widgets 4.6 -QGraphicsView { - objectName: "GView" - size: "800x600" - - QGraphicsScene { - objectName: "GScene" - sceneRect: "0,0,500x300" - +QGraphicsWidget { + layout: QGraphicsLinearLayout { + orientation: Qt.Horizontal QGraphicsWidget { layout: QGraphicsLinearLayout { - orientation: Qt.Horizontal - QGraphicsWidget { - layout: QGraphicsLinearLayout { - spacing: 10; orientation: Qt.Vertical - LayoutItem { - QGraphicsLinearLayout.stretchFactor: 1 - objectName: "left" - minimumSize: "100x100" - maximumSize: "300x300" - preferredSize: "100x100" - Rectangle { objectName: "yellowRect"; color: "yellow"; anchors.fill: parent } - } - LayoutItem { - QGraphicsLinearLayout.stretchFactor: 10 - objectName: "left" - minimumSize: "100x100" - maximumSize: "300x300" - preferredSize: "100x100" - Rectangle { objectName: "yellowRect"; color: "blue"; anchors.fill: parent } - } - } + spacing: 10; orientation: Qt.Vertical + LayoutItem { + QGraphicsLinearLayout.stretchFactor: 1 + objectName: "left" + minimumSize: "100x100" + maximumSize: "300x300" + preferredSize: "100x100" + Rectangle { objectName: "yellowRect"; color: "yellow"; anchors.fill: parent } } - QGraphicsWidget { - layout: QGraphicsLinearLayout { - spacing: 10; orientation: Qt.Vertical - LayoutItem { - objectName: "left" - minimumSize: "100x100" - maximumSize: "300x300" - preferredSize: "100x100" - Rectangle { objectName: "yellowRect"; color: "red"; anchors.fill: parent } - } - LayoutItem { - objectName: "left" - minimumSize: "100x100" - maximumSize: "300x300" - preferredSize: "100x100" - Rectangle { objectName: "yellowRect"; color: "green"; anchors.fill: parent } - } - } + LayoutItem { + QGraphicsLinearLayout.stretchFactor: 10 + objectName: "left" + minimumSize: "100x100" + maximumSize: "300x300" + preferredSize: "100x100" + Rectangle { objectName: "yellowRect"; color: "blue"; anchors.fill: parent } + } + } + } + QGraphicsWidget { + layout: QGraphicsLinearLayout { + spacing: 10; orientation: Qt.Vertical + LayoutItem { + objectName: "left" + minimumSize: "100x100" + maximumSize: "300x300" + preferredSize: "100x100" + Rectangle { objectName: "yellowRect"; color: "red"; anchors.fill: parent } + } + LayoutItem { + objectName: "left" + minimumSize: "100x100" + maximumSize: "300x300" + preferredSize: "100x100" + Rectangle { objectName: "yellowRect"; color: "green"; anchors.fill: parent } } } } } } + diff --git a/tests/auto/declarative/graphicswidgets/graphicswidgets.pro b/tests/auto/declarative/graphicswidgets/graphicswidgets.pro index 712c34c..b77b430 100644 --- a/tests/auto/declarative/graphicswidgets/graphicswidgets.pro +++ b/tests/auto/declarative/graphicswidgets/graphicswidgets.pro @@ -6,3 +6,5 @@ SOURCES += tst_graphicswidgets.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test diff --git a/tests/auto/declarative/graphicswidgets/tst_graphicswidgets.cpp b/tests/auto/declarative/graphicswidgets/tst_graphicswidgets.cpp index a85ceed..f1a71d5 100644 --- a/tests/auto/declarative/graphicswidgets/tst_graphicswidgets.cpp +++ b/tests/auto/declarative/graphicswidgets/tst_graphicswidgets.cpp @@ -42,7 +42,7 @@ #include <QFile> #include <QtDeclarative/qdeclarativeengine.h> #include <QtDeclarative/qdeclarativecomponent.h> -#include <QtGui/qgraphicsview.h> +#include <QtGui/qgraphicswidget.h> class tst_graphicswidgets : public QObject @@ -63,12 +63,9 @@ void tst_graphicswidgets::widgets() { QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/graphicswidgets.qml")); - QGraphicsView *obj = qobject_cast<QGraphicsView*>(c.create()); + QGraphicsWidget *obj = qobject_cast<QGraphicsWidget*>(c.create()); QVERIFY(obj != 0); - QVERIFY(obj->scene() != 0); - QList<QObject*> list; - QVERIFY(obj->scene()->children() != list); delete obj; } diff --git a/tests/auto/declarative/layouts/data/layouts.qml b/tests/auto/declarative/layouts/data/layouts.qml deleted file mode 100644 index 1792500..0000000 --- a/tests/auto/declarative/layouts/data/layouts.qml +++ /dev/null @@ -1,34 +0,0 @@ -import Qt 4.6 -import Qt.widgets 4.6 - -Item { - id: resizable - width:300 - height:300 - - GraphicsObjectContainer { - anchors.fill: parent - synchronizedResizing: true - - QGraphicsWidget { - - layout: QGraphicsLinearLayout { - spacing: 0 - LayoutItem { - objectName: "left" - minimumSize: "100x100" - maximumSize: "300x300" - preferredSize: "100x100" - Rectangle { objectName: "yellowRect"; color: "yellow"; anchors.fill: parent } - } - LayoutItem { - objectName: "right" - minimumSize: "100x100" - maximumSize: "400x400" - preferredSize: "200x200" - Rectangle { objectName: "greenRect"; color: "green"; anchors.fill: parent } - } - } - } - } -} diff --git a/tests/auto/declarative/layouts/layouts.pro b/tests/auto/declarative/layouts/layouts.pro deleted file mode 100644 index f38e155..0000000 --- a/tests/auto/declarative/layouts/layouts.pro +++ /dev/null @@ -1,7 +0,0 @@ -load(qttest_p4) -contains(QT_CONFIG,declarative): QT += declarative -SOURCES += tst_layouts.cpp -macx:CONFIG -= app_bundle - -# Define SRCDIR equal to test's source directory -DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/layouts/tst_layouts.cpp b/tests/auto/declarative/layouts/tst_layouts.cpp deleted file mode 100644 index 942125f..0000000 --- a/tests/auto/declarative/layouts/tst_layouts.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include <QtTest/QtTest> -#include <private/qlistmodelinterface_p.h> -#include <qdeclarativeview.h> -#include <private/qdeclarativelayoutitem_p.h> -#include <qdeclarativeexpression.h> -#include <QStyle> - -class tst_QDeclarativeLayouts : public QObject -{ - Q_OBJECT -public: - tst_QDeclarativeLayouts(); - -private slots: - void test_qml();//GraphicsLayout set up in Qml - void test_cpp();//GraphicsLayout set up in C++ - -private: - QDeclarativeView *createView(const QString &filename); -}; - -tst_QDeclarativeLayouts::tst_QDeclarativeLayouts() -{ -} - -void tst_QDeclarativeLayouts::test_qml() -{ - QDeclarativeView *canvas = createView(SRCDIR "/data/layouts.qml"); - - qApp->processEvents(); - QDeclarativeLayoutItem *left = static_cast<QDeclarativeLayoutItem*>(canvas->rootObject()->findChild<QDeclarativeItem*>("left")); - QVERIFY(left != 0); - - QDeclarativeLayoutItem *right = static_cast<QDeclarativeLayoutItem*>(canvas->rootObject()->findChild<QDeclarativeItem*>("right")); - QVERIFY(right != 0); - - qreal l = QApplication::style()->pixelMetric(QStyle::PM_LayoutLeftMargin); - qreal r = QApplication::style()->pixelMetric(QStyle::PM_LayoutRightMargin); - qreal t = QApplication::style()->pixelMetric(QStyle::PM_LayoutTopMargin); - qreal b = QApplication::style()->pixelMetric(QStyle::PM_LayoutBottomMargin); - QVERIFY2(l == r && r == t && t == b, "Test assumes equal margins."); - qreal gvMargin = l; - - QDeclarativeItem *rootItem = qobject_cast<QDeclarativeItem*>(canvas->rootObject()); - QVERIFY(rootItem != 0); - - //Preferred Size - rootItem->setWidth(300 + 2*gvMargin); - rootItem->setHeight(300 + 2*gvMargin); - - QCOMPARE(left->x(), gvMargin); - QCOMPARE(left->y(), gvMargin); - QCOMPARE(left->width(), 100.0); - QCOMPARE(left->height(), 300.0); - - QCOMPARE(right->x(), 100.0 + gvMargin); - QCOMPARE(right->y(), 0.0 + gvMargin); - QCOMPARE(right->width(), 200.0); - QCOMPARE(right->height(), 300.0); - - //Minimum Size - rootItem->setWidth(10+2*gvMargin); - rootItem->setHeight(10+2*gvMargin); - - QCOMPARE(left->x(), gvMargin); - QCOMPARE(left->width(), 100.0); - QCOMPARE(left->height(), 100.0); - - QCOMPARE(right->x(), 100.0 + gvMargin); - QCOMPARE(right->width(), 100.0); - QCOMPARE(right->height(), 100.0); - - //Between preferred and Maximum Size - /*Note that if set to maximum size (or above) GraphicsLinearLayout behavior - is to shrink them down to preferred size. So the exact maximum size can't - be used*/ - rootItem->setWidth(670 + 2*gvMargin); - rootItem->setHeight(300 + 2*gvMargin); - - QCOMPARE(left->x(), gvMargin); - QCOMPARE(left->width(), 270.0); - QCOMPARE(left->height(), 300.0); - - QCOMPARE(right->x(), 270.0 + gvMargin); - QCOMPARE(right->width(), 400.0); - QCOMPARE(right->height(), 300.0); - - delete canvas; -} - -void tst_QDeclarativeLayouts::test_cpp() -{ - //TODO: Waiting on QT-2407 to write this test -} - -QDeclarativeView *tst_QDeclarativeLayouts::createView(const QString &filename) -{ - QDeclarativeView *canvas = new QDeclarativeView(0); - canvas->setSource(QUrl::fromLocalFile(filename)); - - return canvas; -} - - -QTEST_MAIN(tst_QDeclarativeLayouts) - -#include "tst_layouts.moc" diff --git a/tests/auto/declarative/parserstress/parserstress.pro b/tests/auto/declarative/parserstress/parserstress.pro index 48f147a..8830511 100644 --- a/tests/auto/declarative/parserstress/parserstress.pro +++ b/tests/auto/declarative/parserstress/parserstress.pro @@ -5,3 +5,6 @@ macx:CONFIG -= app_bundle SOURCES += tst_parserstress.cpp DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/parserstress/tst_parserstress.cpp b/tests/auto/declarative/parserstress/tst_parserstress.cpp index 6ff5515..41c0a1b 100644 --- a/tests/auto/declarative/parserstress/tst_parserstress.cpp +++ b/tests/auto/declarative/parserstress/tst_parserstress.cpp @@ -113,7 +113,7 @@ void tst_parserstress::ecmascript() QString dataStr = QString::fromUtf8(data); - QString qml = "import Qt 4.6\n"; + QString qml = "import Qt 4.7\n"; qml+= "\n"; qml+= "QtObject {\n"; qml+= " property int test\n"; @@ -121,10 +121,8 @@ void tst_parserstress::ecmascript() qml+= dataStr + "\n"; qml+= " return 1;\n"; qml+= " }\n"; - qml+= " Script {\n"; - qml+= " function stress() {\n"; + qml+= " function stress() {\n"; qml+= dataStr; - qml+= " }\n"; qml+= " }\n"; qml+= "}\n"; diff --git a/tests/auto/declarative/qdeclarativeanchors/data/anchorsqgraphicswidget.qml b/tests/auto/declarative/qdeclarativeanchors/data/anchorsqgraphicswidget.qml new file mode 100644 index 0000000..ba424b9 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeanchors/data/anchorsqgraphicswidget.qml @@ -0,0 +1,163 @@ +import Qt 4.6 +import Qt.widgets 4.7 + +Rectangle { + color: "white" + width: 240 + height: 320 + Rectangle { id: masterRect; objectName: "masterRect"; x: 26; width: 96; height: 20; color: "red" } + QGraphicsWidget { + id: rect1; objectName: "rect1" + y: 20; width: 10; height: 10 + anchors.left: masterRect.left + } + QGraphicsWidget { + id: rect2; objectName: "rect2" + y: 20; width: 10; height: 10 + anchors.left: masterRect.right + } + QGraphicsWidget { + id: rect3; objectName: "rect3" + y: 20; width: 10; height: 10 + anchors.left: masterRect.horizontalCenter + } + QGraphicsWidget { + id: rect4; objectName: "rect4" + y: 30; width: 10; height: 10 + anchors.right: masterRect.left + } + QGraphicsWidget { + id: rect5; objectName: "rect5" + y: 30; width: 10; height: 10 + anchors.right: masterRect.right + } + QGraphicsWidget { + id: rect6; objectName: "rect6" + y: 30; width: 10; height: 10 + anchors.right: masterRect.horizontalCenter + } + QGraphicsWidget { + id: rect7; objectName: "rect7" + y: 50; width: 10; height: 10 + anchors.left: parent.left + } + QGraphicsWidget { + id: rect8; objectName: "rect8" + y: 50; width: 10; height: 10 + anchors.left: parent.right + } + QGraphicsWidget { + id: rect9; objectName: "rect9" + y: 50; width: 10; height: 10 + anchors.left: parent.horizontalCenter + } + QGraphicsWidget { + id: rect10; objectName: "rect10" + y: 60; width: 10; height: 10 + anchors.right: parent.left + } + QGraphicsWidget { + id: rect11; objectName: "rect11" + y: 60; width: 10; height: 10 + anchors.right: parent.right + } + QGraphicsWidget { + id: rect12; objectName: "rect12" + y: 60; width: 10; height: 10 + anchors.right: parent.horizontalCenter + } + QGraphicsWidget { + id: rect13; objectName: "rect13" + x: 200; width: 10; height: 10 + anchors.top: masterRect.bottom + } + QGraphicsWidget { + id: rect14; objectName: "rect14" + width: 10; height: 10; + anchors.verticalCenter: parent.verticalCenter + } + QGraphicsWidget { + id: rect15; objectName: "rect15" + y: 200; height: 10 + anchors.left: masterRect.left + anchors.right: masterRect.right + } + QGraphicsWidget { + id: rect16; objectName: "rect16" + y: 220; height: 10 + anchors.left: masterRect.left + anchors.horizontalCenter: masterRect.right + } + QGraphicsWidget { + id: rect17; objectName: "rect17" + y: 240; height: 10 + anchors.right: masterRect.right + anchors.horizontalCenter: masterRect.left + } + QGraphicsWidget { + id: rect18; objectName: "rect18" + x: 180; width: 10 + anchors.top: masterRect.bottom + anchors.bottom: rect12.top + } + QGraphicsWidget { + id: rect19; objectName: "rect19" + y: 70; width: 10; height: 10 + anchors.horizontalCenter: parent.horizontalCenter + } + QGraphicsWidget { + id: rect20; objectName: "rect20" + y: 70; width: 10; height: 10 + anchors.horizontalCenter: parent.right + } + QGraphicsWidget { + id: rect21; objectName: "rect21" + y: 70; width: 10; height: 10 + anchors.horizontalCenter: parent.left + } + QGraphicsWidget { + id: rect22; objectName: "rect22" + width: 10; height: 10 + anchors.centerIn: masterRect + } + QGraphicsWidget { + id: rect23; objectName: "rect23" + anchors.left: masterRect.left + anchors.leftMargin: 5 + anchors.right: masterRect.right + anchors.rightMargin: 5 + anchors.top: masterRect.top + anchors.topMargin: 5 + anchors.bottom: masterRect.bottom + anchors.bottomMargin: 5 + } + QGraphicsWidget { + id: rect24; objectName: "rect24" + width: 10; height: 10 + anchors.horizontalCenter: masterRect.left + anchors.horizontalCenterOffset: width/2 + } + QGraphicsWidget { + id: rect25; objectName: "rect25" + width: 10; height: 10 + anchors.verticalCenter: rect12.top + anchors.verticalCenterOffset: height/2 + } + Rectangle { + id: rect26; objectName: "rect26" + width: 10; height: 10 + anchors.baseline: masterRect.top + anchors.baselineOffset: height/2 + } + Text { + id: text1; objectName: "text1" + y: 200; + text: "Hello" + } + Text { + id: text2; objectName: "text2" + anchors.baseline: text1.baseline + anchors.left: text1.right + text: "World" + } +} diff --git a/tests/auto/declarative/qdeclarativeanchors/qdeclarativeanchors.pro b/tests/auto/declarative/qdeclarativeanchors/qdeclarativeanchors.pro index ca2f68f..a2403f2 100644 --- a/tests/auto/declarative/qdeclarativeanchors/qdeclarativeanchors.pro +++ b/tests/auto/declarative/qdeclarativeanchors/qdeclarativeanchors.pro @@ -4,3 +4,6 @@ SOURCES += tst_qdeclarativeanchors.cpp macx:CONFIG -= app_bundle DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp b/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp index 9d8ba6c..01b5bc5 100644 --- a/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp +++ b/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp @@ -40,6 +40,8 @@ ****************************************************************************/ #include <qtest.h> #include <QSignalSpy> +#include <QtGui/QGraphicsWidget> +#include <private/qgraphicsitem_p.h> #include <QtDeclarative/qdeclarativeengine.h> #include <QtDeclarative/qdeclarativecomponent.h> #include <QtDeclarative/qdeclarativeview.h> @@ -59,9 +61,11 @@ public: template<typename T> T *findItem(QGraphicsObject *parent, const QString &id); + QGraphicsObject *findObject(QGraphicsObject *parent, const QString &objectName); private slots: void basicAnchors(); + void basicAnchorsQGraphicsWidget(); void loops(); void illegalSets(); void illegalSets_data(); @@ -99,6 +103,25 @@ T *tst_qdeclarativeanchors::findItem(QGraphicsObject *parent, const QString &obj return 0; } +QGraphicsObject *tst_qdeclarativeanchors::findObject(QGraphicsObject *parent, const QString &objectName) +{ + QList<QGraphicsItem *> children = parent->childItems(); + for (int i = 0; i < children.count(); ++i) { + QGraphicsObject *item = children.at(i)->toGraphicsObject(); + if (item) { + if (objectName.isEmpty() || item->objectName() == objectName) { + return item; + } + item = findObject(item, objectName); + if (item) + return item; + } + } + + return 0; +} + + void tst_qdeclarativeanchors::basicAnchors() { QDeclarativeView *view = new QDeclarativeView; @@ -166,6 +189,73 @@ void tst_qdeclarativeanchors::basicAnchors() delete view; } +void tst_qdeclarativeanchors::basicAnchorsQGraphicsWidget() +{ + QDeclarativeView *view = new QDeclarativeView; + view->setSource(QUrl::fromLocalFile(SRCDIR "/data/anchorsqgraphicswidget.qml")); + + qApp->processEvents(); + + //sibling horizontal + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect1"))->x(), 26.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect2"))->x(), 122.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect3"))->x(), 74.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect4"))->x(), 16.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect5"))->x(), 112.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect6"))->x(), 64.0); + + //parent horizontal + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect7"))->x(), 0.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect8"))->x(), 240.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect9"))->x(), 120.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect10"))->x(), -10.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect11"))->x(), 230.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect12"))->x(), 110.0); + + //vertical + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect13"))->y(), 20.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect14"))->y(), 155.0); + + //stretch + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect15"))->x(), 26.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect15"))->property("width").toReal(), 96.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect16"))->x(), 26.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect16"))->property("width").toReal(), 192.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect17"))->x(), -70.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect17"))->property("width").toReal(), 192.0); + + //vertical stretch + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect18"))->y(), 20.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect18"))->property("height").toReal(), 40.0); + + //more parent horizontal + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect19"))->x(), 115.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect20"))->x(), 235.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect21"))->x(), -5.0); + + //centerIn + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect22"))->x(), 69.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect22"))->y(), 5.0); + + //margins + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect23"))->x(), 31.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect23"))->y(), 5.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect23"))->property("width").toReal(), 86.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect23"))->property("height").toReal(), 10.0); + + // offsets + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect24"))->x(), 26.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect25"))->y(), 60.0); + QCOMPARE(findObject(view->rootObject(), QLatin1String("rect26"))->y(), 5.0); + + //baseline + QDeclarativeText *text1 = findItem<QDeclarativeText>(view->rootObject(), QLatin1String("text1")); + QDeclarativeText *text2 = findItem<QDeclarativeText>(view->rootObject(), QLatin1String("text2")); + QCOMPARE(text1->y(), text2->y()); + + delete view; +} + // mostly testing that we don't crash void tst_qdeclarativeanchors::loops() { @@ -207,7 +297,7 @@ void tst_qdeclarativeanchors::illegalSets() QDeclarativeEngine engine; QDeclarativeComponent component(&engine); - component.setData(QByteArray("import Qt 4.6\n" + qml.toUtf8()), QUrl::fromLocalFile("")); + component.setData(QByteArray("import Qt 4.7\n" + qml.toUtf8()), QUrl::fromLocalFile("")); if (!component.isReady()) qWarning() << "Test errors:" << component.errors(); QVERIFY(component.isReady()); @@ -372,8 +462,17 @@ void tst_qdeclarativeanchors::crash1() QUrl source(QUrl::fromLocalFile(SRCDIR "/data/crash1.qml")); QString expect = "QML Text (" + source.toString() + ":4:5" + ") Possible anchor loop detected on fill."; + + QTest::ignoreMessage(QtWarningMsg, expect.toLatin1()); + + // QT-3245 ... anchor loop detection needs improving. + QTest::ignoreMessage(QtWarningMsg, expect.toLatin1()); + QTest::ignoreMessage(QtWarningMsg, expect.toLatin1()); + QTest::ignoreMessage(QtWarningMsg, expect.toLatin1()); + QTest::ignoreMessage(QtWarningMsg, expect.toLatin1()); + QTest::ignoreMessage(QtWarningMsg, expect.toLatin1()); + QTest::ignoreMessage(QtWarningMsg, expect.toLatin1()); QTest::ignoreMessage(QtWarningMsg, expect.toLatin1()); - QTest::ignoreMessage(QtWarningMsg, expect.toLatin1()); // XXX ideally, should be one message QDeclarativeView *view = new QDeclarativeView(source); qApp->processEvents(); @@ -391,7 +490,7 @@ void tst_qdeclarativeanchors::fill() QCOMPARE(rect->y(), 0.0 + 30.0); QCOMPARE(rect->width(), 200.0 - 10.0 - 20.0); QCOMPARE(rect->height(), 200.0 - 30.0 - 40.0); - //Alter Offsets (QTBUG-6631) + //Alter Offsets (tests QTBUG-6631) rect->anchors()->setLeftMargin(20.0); rect->anchors()->setRightMargin(0.0); rect->anchors()->setBottomMargin(0.0); @@ -412,7 +511,7 @@ void tst_qdeclarativeanchors::centerIn() QDeclarativeRectangle* rect = findItem<QDeclarativeRectangle>(view->rootObject(), QLatin1String("centered")); QCOMPARE(rect->x(), 75.0 + 10); QCOMPARE(rect->y(), 75.0 + 30); - //Alter Offsets (QTBUG-6631) + //Alter Offsets (tests QTBUG-6631) rect->anchors()->setHorizontalCenterOffset(-20.0); rect->anchors()->setVerticalCenterOffset(-10.0); QCOMPARE(rect->x(), 75.0 - 20.0); diff --git a/tests/auto/declarative/qdeclarativeanimatedimage/data/qmldir b/tests/auto/declarative/qdeclarativeanimatedimage/data/qmldir new file mode 100644 index 0000000..ef7c1f4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeanimatedimage/data/qmldir @@ -0,0 +1 @@ +# No local types diff --git a/tests/auto/declarative/qdeclarativeanimatedimage/data/stickmanerror1.qml b/tests/auto/declarative/qdeclarativeanimatedimage/data/stickmanerror1.qml new file mode 100644 index 0000000..5b0bdcb --- /dev/null +++ b/tests/auto/declarative/qdeclarativeanimatedimage/data/stickmanerror1.qml @@ -0,0 +1,6 @@ +import Qt 4.6 + +AnimatedImage { + sourceSize: "240x180" + source: "stickman.gif" +} diff --git a/tests/auto/declarative/qdeclarativeanimatedimage/data/stickmanscaled.qml b/tests/auto/declarative/qdeclarativeanimatedimage/data/stickmanscaled.qml new file mode 100644 index 0000000..f4d277a --- /dev/null +++ b/tests/auto/declarative/qdeclarativeanimatedimage/data/stickmanscaled.qml @@ -0,0 +1,7 @@ +import Qt 4.6 + +AnimatedImage { + width: 240 + height: 180 + source: "stickman.gif" +} diff --git a/tests/auto/declarative/qdeclarativeanimatedimage/qdeclarativeanimatedimage.pro b/tests/auto/declarative/qdeclarativeanimatedimage/qdeclarativeanimatedimage.pro index 2904986..74f9be0 100644 --- a/tests/auto/declarative/qdeclarativeanimatedimage/qdeclarativeanimatedimage.pro +++ b/tests/auto/declarative/qdeclarativeanimatedimage/qdeclarativeanimatedimage.pro @@ -5,3 +5,6 @@ SOURCES += tst_qdeclarativeanimatedimage.cpp ../shared/testhttpserver.cpp macx:CONFIG -= app_bundle DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeanimatedimage/tst_qdeclarativeanimatedimage.cpp b/tests/auto/declarative/qdeclarativeanimatedimage/tst_qdeclarativeanimatedimage.cpp index 31efc64..0fb080c 100644 --- a/tests/auto/declarative/qdeclarativeanimatedimage/tst_qdeclarativeanimatedimage.cpp +++ b/tests/auto/declarative/qdeclarativeanimatedimage/tst_qdeclarativeanimatedimage.cpp @@ -72,6 +72,8 @@ private slots: void frameCount(); void remote(); void remote_data(); + void sourceSize(); + void sourceSizeReadOnly(); void invalidSource(); }; @@ -139,12 +141,12 @@ void tst_qdeclarativeanimatedimage::remote() QFETCH(QString, fileName); QFETCH(bool, paused); - TestHTTPServer server(14445); + TestHTTPServer server(14449); QVERIFY(server.isValid()); server.serveDirectory(SRCDIR "/data"); QDeclarativeEngine engine; - QDeclarativeComponent component(&engine, QUrl("http://127.0.0.1:14445/" + fileName)); + QDeclarativeComponent component(&engine, QUrl("http://127.0.0.1:14449/" + fileName)); TRY_WAIT(component.isReady()); QDeclarativeAnimatedImage *anim = qobject_cast<QDeclarativeAnimatedImage *>(component.create()); @@ -155,10 +157,32 @@ void tst_qdeclarativeanimatedimage::remote() TRY_WAIT(anim->isPaused()); QCOMPARE(anim->currentFrame(), 2); } + QVERIFY(anim->status() != QDeclarativeAnimatedImage::Error); delete anim; } +void tst_qdeclarativeanimatedimage::sourceSize() +{ + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/stickmanscaled.qml")); + QDeclarativeAnimatedImage *anim = qobject_cast<QDeclarativeAnimatedImage *>(component.create()); + QVERIFY(anim); + QCOMPARE(anim->width(),240.0); + QCOMPARE(anim->height(),180.0); + QCOMPARE(anim->sourceSize(),QSize(160,120)); + + delete anim; +} + +void tst_qdeclarativeanimatedimage::sourceSizeReadOnly() +{ + QDeclarativeEngine engine; + QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/stickmanerror1.qml")); + QVERIFY(component.isError()); + QCOMPARE(component.errors().at(0).description(), QString("Invalid property assignment: \"sourceSize\" is a read-only property")); +} + void tst_qdeclarativeanimatedimage::remote_data() { QTest::addColumn<QString>("fileName"); @@ -172,7 +196,7 @@ void tst_qdeclarativeanimatedimage::invalidSource() { QDeclarativeEngine engine; QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6\n AnimatedImage { source: \"no-such-file.gif\" }", QUrl::fromLocalFile("")); + component.setData("import Qt 4.7\n AnimatedImage { source: \"no-such-file.gif\" }", QUrl::fromLocalFile("")); QVERIFY(component.isReady()); QTest::ignoreMessage(QtWarningMsg, "Error Reading Animated Image File QUrl( \"file:no-such-file.gif\" ) "); diff --git a/tests/auto/declarative/qdeclarativeanimations/data/badtype1.qml b/tests/auto/declarative/qdeclarativeanimations/data/badtype1.qml index 6381df3..2629cf4 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/badtype1.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/badtype1.qml @@ -7,6 +7,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: PropertyAnimation { from: "blue"; to: "green"; } + PropertyAnimation on x { from: "blue"; to: "green"; } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/badtype2.qml b/tests/auto/declarative/qdeclarativeanimations/data/badtype2.qml index 8d57e41..1543a2a 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/badtype2.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/badtype2.qml @@ -7,6 +7,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { from: "blue"; to: "green"; } + NumberAnimation on x { from: "blue"; to: "green"; } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/badtype3.qml b/tests/auto/declarative/qdeclarativeanimations/data/badtype3.qml index c4867c3..aa98c33 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/badtype3.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/badtype3.qml @@ -5,7 +5,7 @@ Rectangle { height: 320 Rectangle { color: "red" - color: ColorAnimation { from: 10; to: 15; } + ColorAnimation on color { from: 10; to: 15; } width: 50; height: 50 x: 100; y: 100 } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/dontAutoStart.qml b/tests/auto/declarative/qdeclarativeanimations/data/dontAutoStart.qml index d9660b6..d6bfe45 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/dontAutoStart.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/dontAutoStart.qml @@ -9,8 +9,8 @@ Rectangle { id: redRect width: 100; height: 100 color: Qt.rgba(1,0,0) - x: Behavior { - NumberAnimation { objectName: "MyAnim"; target: redRect; property: "y"; to: 300; repeat: true} + Behavior on x { + NumberAnimation { id: myAnim; objectName: "MyAnim"; target: redRect; property: "y"; to: 300; loops: Animation.Infinite} } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/dontStart.qml b/tests/auto/declarative/qdeclarativeanimations/data/dontStart.qml index 36417db..efed058 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/dontStart.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/dontStart.qml @@ -9,7 +9,7 @@ Rectangle { id: redRect width: 100; height: 100 color: Qt.rgba(1,0,0) - x: SequentialAnimation { + SequentialAnimation on x { running: false NumberAnimation { objectName: "MyAnim"; running: true } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/properties.qml b/tests/auto/declarative/qdeclarativeanimations/data/properties.qml index 7e73f57..4437815 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/properties.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/properties.qml @@ -9,6 +9,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { to: 200 } + NumberAnimation on x { to: 200 } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/properties2.qml b/tests/auto/declarative/qdeclarativeanimations/data/properties2.qml index 6c96155..b1f2020 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/properties2.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/properties2.qml @@ -9,6 +9,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { targets: theRect; properties: "x"; to: 200; } + NumberAnimation on x { targets: theRect; properties: "x"; to: 200; } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/properties3.qml b/tests/auto/declarative/qdeclarativeanimations/data/properties3.qml index ff08885..0a0ed6f 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/properties3.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/properties3.qml @@ -9,6 +9,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { target: theRect; property: "x"; to: 300; } + NumberAnimation on x { target: theRect; property: "x"; to: 300; } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/properties4.qml b/tests/auto/declarative/qdeclarativeanimations/data/properties4.qml index dab7e5f..a90f004 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/properties4.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/properties4.qml @@ -9,6 +9,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { target: theRect; property: "y"; to: 200; } + NumberAnimation on x { target: theRect; property: "y"; to: 200; } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/properties5.qml b/tests/auto/declarative/qdeclarativeanimations/data/properties5.qml index 38396b1..7d3cec9 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/properties5.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/properties5.qml @@ -9,6 +9,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { targets: theRect; properties: "y"; to: 200; } + NumberAnimation on x { targets: theRect; properties: "y"; to: 200; } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/rotation.qml b/tests/auto/declarative/qdeclarativeanimations/data/rotation.qml new file mode 100644 index 0000000..e9c57d4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeanimations/data/rotation.qml @@ -0,0 +1,48 @@ +import Qt 4.6 + +Rectangle { + width: 600; height: 200 + + Row { + spacing: 5 + Rectangle { + id: rr + objectName: "rr" + color: "red" + width: 100; height: 100 + } + Rectangle { + id: rr2 + objectName: "rr2" + color: "red" + width: 100; height: 100 + } + Rectangle { + id: rr3 + objectName: "rr3" + color: "red" + width: 100; height: 100 + } + Rectangle { + id: rr4 + objectName: "rr4" + color: "red" + width: 100; height: 100 + } + } + + states: State { + name: "state1" + PropertyChanges { target: rr; rotation: 370 } + PropertyChanges { target: rr2; rotation: 370 } + PropertyChanges { target: rr3; rotation: 370 } + PropertyChanges { target: rr4; rotation: 370 } + } + + transitions: Transition { + RotationAnimation { target: rr; direction: RotationAnimation.Numerical; duration: 1000 } + RotationAnimation { target: rr2; direction: RotationAnimation.Clockwise; duration: 1000 } + RotationAnimation { target: rr3; direction: RotationAnimation.Counterclockwise; duration: 1000 } + RotationAnimation { target: rr4; direction: RotationAnimation.Shortest; duration: 1000 } + } +} diff --git a/tests/auto/declarative/qdeclarativeanimations/data/valuesource.qml b/tests/auto/declarative/qdeclarativeanimations/data/valuesource.qml index c35063d..2260440 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/valuesource.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/valuesource.qml @@ -9,6 +9,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { id: anim; objectName: "MyAnim"; to: 200 } + NumberAnimation on x { id: anim; objectName: "MyAnim"; to: 200 } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/data/valuesource2.qml b/tests/auto/declarative/qdeclarativeanimations/data/valuesource2.qml index 1a60542..36d6c72 100644 --- a/tests/auto/declarative/qdeclarativeanimations/data/valuesource2.qml +++ b/tests/auto/declarative/qdeclarativeanimations/data/valuesource2.qml @@ -9,6 +9,6 @@ Rectangle { color: "red" width: 50; height: 50 x: 100; y: 100 - x: NumberAnimation { id: anim; objectName: "MyAnim"; running: false; to: 200 } + NumberAnimation on x { id: anim; objectName: "MyAnim"; running: false; to: 200 } } } diff --git a/tests/auto/declarative/qdeclarativeanimations/qdeclarativeanimations.pro b/tests/auto/declarative/qdeclarativeanimations/qdeclarativeanimations.pro index 8eac75f..ce38eeb 100644 --- a/tests/auto/declarative/qdeclarativeanimations/qdeclarativeanimations.pro +++ b/tests/auto/declarative/qdeclarativeanimations/qdeclarativeanimations.pro @@ -4,3 +4,6 @@ SOURCES += tst_qdeclarativeanimations.cpp macx:CONFIG -= app_bundle DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp index 53c63b5..959cc19 100644 --- a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp +++ b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp @@ -59,6 +59,7 @@ private slots: void simpleProperty(); void simpleNumber(); void simpleColor(); + void simpleRotation(); void alwaysRunToEnd(); void complete(); void resume(); @@ -73,6 +74,7 @@ private slots: void propertyValueSourceDefaultStart(); void dontStart(); void easingProperties(); + void rotation(); }; #define QTIMED_COMPARE(lhs, rhs) do { \ @@ -168,6 +170,32 @@ void tst_qdeclarativeanimations::simpleColor() QCOMPARE(rect.color(), QColor::fromRgbF(0.498039, 0, 0.498039, 1)); } +void tst_qdeclarativeanimations::simpleRotation() +{ + QDeclarativeRectangle rect; + QDeclarativeRotationAnimation animation; + animation.setTarget(&rect); + animation.setProperty("rotation"); + animation.setTo(270); + QVERIFY(animation.target() == &rect); + QVERIFY(animation.property() == "rotation"); + QVERIFY(animation.to() == 270); + QVERIFY(animation.direction() == QDeclarativeRotationAnimation::Numerical); + animation.start(); + QVERIFY(animation.isRunning()); + QTest::qWait(animation.duration()); + QTIMED_COMPARE(rect.rotation(), qreal(270)); + + rect.setRotation(0); + animation.start(); + animation.pause(); + QVERIFY(animation.isRunning()); + QVERIFY(animation.isPaused()); + animation.setCurrentTime(125); + QVERIFY(animation.currentTime() == 125); + QCOMPARE(rect.rotation(), qreal(135)); +} + void tst_qdeclarativeanimations::alwaysRunToEnd() { QDeclarativeRectangle rect; @@ -176,9 +204,9 @@ void tst_qdeclarativeanimations::alwaysRunToEnd() animation.setProperty("x"); animation.setTo(200); animation.setDuration(1000); - animation.setRepeat(true); + animation.setLoops(-1); animation.setAlwaysRunToEnd(true); - QVERIFY(animation.repeat() == true); + QVERIFY(animation.loops() == -1); QVERIFY(animation.alwaysRunToEnd() == true); animation.start(); QTest::qWait(1500); @@ -217,21 +245,21 @@ void tst_qdeclarativeanimations::resume() animation.setProperty("x"); animation.setFrom(10); animation.setTo(200); - animation.setDuration(500); + animation.setDuration(1000); QVERIFY(animation.from() == 10); animation.start(); - QTest::qWait(100); + QTest::qWait(400); animation.pause(); qreal x = rect.x(); - QVERIFY(x != qreal(200)); + QVERIFY(x != qreal(200) && x != qreal(10)); QVERIFY(animation.isRunning()); QVERIFY(animation.isPaused()); animation.resume(); QVERIFY(animation.isRunning()); QVERIFY(!animation.isPaused()); - QTest::qWait(100); + QTest::qWait(400); animation.stop(); QVERIFY(rect.x() > x); } @@ -620,7 +648,7 @@ void tst_qdeclarativeanimations::easingProperties() { { QDeclarativeEngine engine; - QString componentStr = "import Qt 4.6\nNumberAnimation { easing.type: \"InOutQuad\" }"; + QString componentStr = "import Qt 4.7\nNumberAnimation { easing.type: \"InOutQuad\" }"; QDeclarativeComponent animationComponent(&engine); animationComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativePropertyAnimation *animObject = qobject_cast<QDeclarativePropertyAnimation*>(animationComponent.create()); @@ -631,7 +659,7 @@ void tst_qdeclarativeanimations::easingProperties() { QDeclarativeEngine engine; - QString componentStr = "import Qt 4.6\nPropertyAnimation { easing.type: \"OutBounce\"; easing.amplitude: 5.0 }"; + QString componentStr = "import Qt 4.7\nPropertyAnimation { easing.type: \"OutBounce\"; easing.amplitude: 5.0 }"; QDeclarativeComponent animationComponent(&engine); animationComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativePropertyAnimation *animObject = qobject_cast<QDeclarativePropertyAnimation*>(animationComponent.create()); @@ -643,7 +671,7 @@ void tst_qdeclarativeanimations::easingProperties() { QDeclarativeEngine engine; - QString componentStr = "import Qt 4.6\nPropertyAnimation { easing.type: \"OutElastic\"; easing.amplitude: 5.0; easing.period: 3.0}"; + QString componentStr = "import Qt 4.7\nPropertyAnimation { easing.type: \"OutElastic\"; easing.amplitude: 5.0; easing.period: 3.0}"; QDeclarativeComponent animationComponent(&engine); animationComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativePropertyAnimation *animObject = qobject_cast<QDeclarativePropertyAnimation*>(animationComponent.create()); @@ -656,7 +684,7 @@ void tst_qdeclarativeanimations::easingProperties() { QDeclarativeEngine engine; - QString componentStr = "import Qt 4.6\nPropertyAnimation { easing.type: \"InOutBack\"; easing.overshoot: 2 }"; + QString componentStr = "import Qt 4.7\nPropertyAnimation { easing.type: \"InOutBack\"; easing.overshoot: 2 }"; QDeclarativeComponent animationComponent(&engine); animationComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativePropertyAnimation *animObject = qobject_cast<QDeclarativePropertyAnimation*>(animationComponent.create()); @@ -667,6 +695,36 @@ void tst_qdeclarativeanimations::easingProperties() } } +void tst_qdeclarativeanimations::rotation() +{ + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/rotation.qml")); + QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); + QVERIFY(rect); + + QDeclarativeRectangle *rr = rect->findChild<QDeclarativeRectangle*>("rr"); + QDeclarativeRectangle *rr2 = rect->findChild<QDeclarativeRectangle*>("rr2"); + QDeclarativeRectangle *rr3 = rect->findChild<QDeclarativeRectangle*>("rr3"); + QDeclarativeRectangle *rr4 = rect->findChild<QDeclarativeRectangle*>("rr4"); + + rect->setState("state1"); + QTest::qWait(800); + qreal r1 = rr->rotation(); + qreal r2 = rr2->rotation(); + qreal r3 = rr3->rotation(); + qreal r4 = rr4->rotation(); + + QVERIFY(r1 > qreal(0) && r1 < qreal(370)); + QVERIFY(r2 > qreal(0) && r2 < qreal(370)); + QVERIFY(r3 < qreal(0) && r3 > qreal(-350)); + QVERIFY(r4 > qreal(0) && r4 < qreal(10)); + QCOMPARE(r1,r2); + QVERIFY(r4 < r2); + + QTest::qWait(800); + QTIMED_COMPARE(rr->rotation() + rr2->rotation() + rr3->rotation() + rr4->rotation(), qreal(370*4)); +} + QTEST_MAIN(tst_qdeclarativeanimations) #include "tst_qdeclarativeanimations.moc" diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/binding.qml b/tests/auto/declarative/qdeclarativebehaviors/data/binding.qml index 201da37..e9fb286 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/binding.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/binding.qml @@ -9,7 +9,7 @@ Rectangle { objectName: "MyRect" width: 100; height: 100; color: "green" x: basex - x: Behavior { NumberAnimation { duration: 500; } } + Behavior on x { NumberAnimation { duration: 800; } } } MouseArea { id: clicker diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/color.qml b/tests/auto/declarative/qdeclarativebehaviors/data/color.qml index 91dbbd1..f2f4742 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/color.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/color.qml @@ -7,7 +7,7 @@ Rectangle { objectName: "MyRect" width: 100; height: 100; color: "green" - color: Behavior { ColorAnimation { duration: 500; } } + Behavior on color { ColorAnimation { duration: 500; } } } MouseArea { id: clicker diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/cpptrigger.qml b/tests/auto/declarative/qdeclarativebehaviors/data/cpptrigger.qml index 8d032f0..3ea9376 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/cpptrigger.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/cpptrigger.qml @@ -6,6 +6,6 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { NumberAnimation { duration: 500; } } + Behavior on x { NumberAnimation { duration: 500; } } } } diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/disabled.qml b/tests/auto/declarative/qdeclarativebehaviors/data/disabled.qml index 3c7078a..1403eb9 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/disabled.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/disabled.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { + Behavior on x { objectName: "MyBehavior"; enabled: false NumberAnimation { duration: 200; } diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/dontStart.qml b/tests/auto/declarative/qdeclarativebehaviors/data/dontStart.qml index ba7cc9c..5e1891a 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/dontStart.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/dontStart.qml @@ -9,8 +9,8 @@ Rectangle { id: redRect width: 100; height: 100 color: Qt.rgba(1,0,0) - x: Behavior { - NumberAnimation { objectName: "MyAnim"; running: true } + Behavior on x { + NumberAnimation {id: myAnim; objectName: "MyAnim"; running: true } } } diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/empty.qml b/tests/auto/declarative/qdeclarativebehaviors/data/empty.qml index 95d934a..5e30f03 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/empty.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/empty.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior {} + Behavior on x {} } MouseArea { id: clicker diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/explicit.qml b/tests/auto/declarative/qdeclarativebehaviors/data/explicit.qml index 1b2025a..ca0ea54 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/explicit.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/explicit.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { + Behavior on x { objectName: "MyBehavior"; NumberAnimation { target: rect; property: "x"; duration: 500; } } diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty.qml b/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty.qml index 14883d4..a6c4ed9 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - pos: Behavior { PropertyAnimation { duration: 500; } } + Behavior on pos { PropertyAnimation { duration: 500; } } } MouseArea { id: clicker diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty2.qml b/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty2.qml index b43ddbc..2dda220 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty2.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/groupProperty2.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - pos.x: Behavior { NumberAnimation { duration: 500; } } + Behavior on pos.x { NumberAnimation { duration: 500; } } } MouseArea { id: clicker diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/loop.qml b/tests/auto/declarative/qdeclarativebehaviors/data/loop.qml index 5f2c057..6187768 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/loop.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/loop.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { NumberAnimation { duration: 200; } } + Behavior on x { NumberAnimation { duration: 200; } } onXChanged: x = 100; } states: State { diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/nonSelecting2.qml b/tests/auto/declarative/qdeclarativebehaviors/data/nonSelecting2.qml index f267a05..640a7d1 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/nonSelecting2.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/nonSelecting2.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { + Behavior on x { objectName: "MyBehavior"; NumberAnimation { targets: rect; properties: "y"; duration: 200; } } diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/parent.qml b/tests/auto/declarative/qdeclarativebehaviors/data/parent.qml index 7c7fdcb..3860ec7 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/parent.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/parent.qml @@ -6,7 +6,7 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - parent: Behavior { + Behavior on parent { SequentialAnimation { PauseAnimation { duration: 500 } PropertyAction {} diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/reassignedAnimation.qml b/tests/auto/declarative/qdeclarativebehaviors/data/reassignedAnimation.qml index ba744b1..11b2d3a 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/reassignedAnimation.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/reassignedAnimation.qml @@ -6,10 +6,10 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { + Behavior on x { objectName: "MyBehavior" - NumberAnimation { duration: 200 } - NumberAnimation { duration: 1000 } + NumberAnimation {id: na1; duration: 200 } + NumberAnimation {id: na2; duration: 1000 } } } MouseArea { diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/scripttrigger.qml b/tests/auto/declarative/qdeclarativebehaviors/data/scripttrigger.qml index a91ca88..795b309 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/scripttrigger.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/scripttrigger.qml @@ -11,6 +11,6 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { NumberAnimation { duration: 500; } } + Behavior on x { NumberAnimation { duration: 800; } } } } diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/simple.qml b/tests/auto/declarative/qdeclarativebehaviors/data/simple.qml index ac98ed0..5e72bca 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/data/simple.qml +++ b/tests/auto/declarative/qdeclarativebehaviors/data/simple.qml @@ -6,9 +6,9 @@ Rectangle { id: rect objectName: "MyRect" width: 100; height: 100; color: "green" - x: Behavior { + Behavior on x { objectName: "MyBehavior"; - NumberAnimation { duration: 500; } + NumberAnimation {id: na; duration: 500; } } } MouseArea { diff --git a/tests/auto/declarative/qdeclarativebehaviors/data/startup.qml b/tests/auto/declarative/qdeclarativebehaviors/data/startup.qml new file mode 100644 index 0000000..f3ff620 --- /dev/null +++ b/tests/auto/declarative/qdeclarativebehaviors/data/startup.qml @@ -0,0 +1,17 @@ +import Qt 4.7 + +Rectangle { + width: 400 + height: 400 + + Rectangle { + objectName: "innerRect" + height: 100; width: 100; color: "green" + property real targetX: 100 + + x: targetX + Behavior on x { + NumberAnimation {} + } + } +} diff --git a/tests/auto/declarative/qdeclarativebehaviors/qdeclarativebehaviors.pro b/tests/auto/declarative/qdeclarativebehaviors/qdeclarativebehaviors.pro index a1dac32..c2781b8 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/qdeclarativebehaviors.pro +++ b/tests/auto/declarative/qdeclarativebehaviors/qdeclarativebehaviors.pro @@ -4,3 +4,6 @@ SOURCES += tst_qdeclarativebehaviors.cpp macx:CONFIG -= app_bundle DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp b/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp index f87330d..3bff2f5 100644 --- a/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp +++ b/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp @@ -45,6 +45,7 @@ #include <private/qdeclarativerectangle_p.h> #include <private/qdeclarativebehavior_p.h> #include <private/qdeclarativeanimation_p.h> +#include "../../../shared/util.h" class tst_qdeclarativebehaviors : public QObject { @@ -68,6 +69,7 @@ private slots: void reassignedAnimation(); void disabled(); void dontStart(); + void startup(); }; void tst_qdeclarativebehaviors::simpleBehavior() @@ -75,13 +77,15 @@ void tst_qdeclarativebehaviors::simpleBehavior() QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/simple.qml")); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); - QVERIFY(qobject_cast<QDeclarativeBehavior*>(rect->findChild<QDeclarativeBehavior*>("MyBehavior"))->animation()); + QTRY_VERIFY(rect); + QTRY_VERIFY(qobject_cast<QDeclarativeBehavior*>(rect->findChild<QDeclarativeBehavior*>("MyBehavior"))->animation()); rect->setState("moved"); - QTest::qWait(200); - qreal x = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x(); - QVERIFY(x > 0 && x < 200); //i.e. the behavior has been triggered + QTRY_VERIFY(qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x() > 0); + QTRY_VERIFY(qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x() < 200); + //i.e. the behavior has been triggered + + delete rect; } void tst_qdeclarativebehaviors::scriptTriggered() @@ -89,12 +93,14 @@ void tst_qdeclarativebehaviors::scriptTriggered() QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/scripttrigger.qml")); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); + QTRY_VERIFY(rect); rect->setColor(QColor("red")); - QTest::qWait(200); - qreal x = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x(); - QVERIFY(x > 0 && x < 200); //i.e. the behavior has been triggered + QTRY_VERIFY(qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x() > 0); + QTRY_VERIFY(qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x() < 200); + //i.e. the behavior has been triggered + + delete rect; } void tst_qdeclarativebehaviors::cppTriggered() @@ -102,15 +108,16 @@ void tst_qdeclarativebehaviors::cppTriggered() QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/cpptrigger.qml")); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); + QTRY_VERIFY(rect); QDeclarativeRectangle *innerRect = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect")); - QVERIFY(innerRect); + QTRY_VERIFY(innerRect); innerRect->setProperty("x", 200); - QTest::qWait(200); - qreal x = innerRect->x(); - QVERIFY(x > 0 && x < 200); //i.e. the behavior has been triggered + QTRY_VERIFY(innerRect->x() > 0); + QTRY_VERIFY(innerRect->x() < 200); //i.e. the behavior has been triggered + + delete rect; } void tst_qdeclarativebehaviors::loop() @@ -118,10 +125,12 @@ void tst_qdeclarativebehaviors::loop() QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/loop.qml")); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); + QTRY_VERIFY(rect); //don't crash rect->setState("moved"); + + delete rect; } void tst_qdeclarativebehaviors::colorBehavior() @@ -129,12 +138,14 @@ void tst_qdeclarativebehaviors::colorBehavior() QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/color.qml")); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); + QTRY_VERIFY(rect); rect->setState("red"); - QTest::qWait(200); - QColor color = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->color(); - QVERIFY(color != QColor("red") && color != QColor("green")); //i.e. the behavior has been triggered + QTRY_VERIFY(qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->color() != QColor("red")); + QTRY_VERIFY(qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->color() != QColor("green")); + //i.e. the behavior has been triggered + + delete rect; } void tst_qdeclarativebehaviors::parentBehavior() @@ -142,16 +153,13 @@ void tst_qdeclarativebehaviors::parentBehavior() QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/parent.qml")); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); + QTRY_VERIFY(rect); rect->setState("reparented"); - QTest::qWait(200); - QDeclarativeItem *newParent = rect->findChild<QDeclarativeItem*>("NewParent"); - QDeclarativeItem *parent = rect->findChild<QDeclarativeRectangle*>("MyRect")->parentItem(); - QVERIFY(parent != newParent); - QTest::qWait(600); - parent = rect->findChild<QDeclarativeRectangle*>("MyRect")->parentItem(); - QVERIFY(parent == newParent); + QTRY_VERIFY(rect->findChild<QDeclarativeRectangle*>("MyRect")->parentItem() != rect->findChild<QDeclarativeItem*>("NewParent")); + QTRY_VERIFY(rect->findChild<QDeclarativeRectangle*>("MyRect")->parentItem() == rect->findChild<QDeclarativeItem*>("NewParent")); + + delete rect; } void tst_qdeclarativebehaviors::replaceBinding() @@ -159,33 +167,30 @@ void tst_qdeclarativebehaviors::replaceBinding() QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/binding.qml")); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); + QTRY_VERIFY(rect); rect->setState("moved"); - QTest::qWait(200); QDeclarativeRectangle *innerRect = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect")); - QVERIFY(innerRect); - qreal x = innerRect->x(); - QVERIFY(x > 0 && x < 200); //i.e. the behavior has been triggered - QTest::qWait(600); - QCOMPARE(innerRect->x(), (qreal)200); + QTRY_VERIFY(innerRect); + QTRY_VERIFY(innerRect->x() > 0); + QTRY_VERIFY(innerRect->x() < 200); + //i.e. the behavior has been triggered + QTRY_COMPARE(innerRect->x(), (qreal)200); rect->setProperty("basex", 10); - QCOMPARE(innerRect->x(), (qreal)200); + QTRY_COMPARE(innerRect->x(), (qreal)200); rect->setProperty("movedx", 210); - QTest::qWait(600); - QCOMPARE(innerRect->x(), (qreal)210); + QTRY_COMPARE(innerRect->x(), (qreal)210); rect->setState(""); - QTest::qWait(200); - x = innerRect->x(); - QVERIFY(x > 10 && x < 210); //i.e. the behavior has been triggered - QTest::qWait(600); - QCOMPARE(innerRect->x(), (qreal)10); + QTRY_VERIFY(innerRect->x() > 10); + QTRY_VERIFY(innerRect->x() < 210); //i.e. the behavior has been triggered + QTRY_COMPARE(innerRect->x(), (qreal)10); rect->setProperty("movedx", 200); - QCOMPARE(innerRect->x(), (qreal)10); + QTRY_COMPARE(innerRect->x(), (qreal)10); rect->setProperty("basex", 20); - QTest::qWait(600); - QCOMPARE(innerRect->x(), (qreal)20); + QTRY_COMPARE(innerRect->x(), (qreal)20); + + delete rect; } void tst_qdeclarativebehaviors::group() @@ -194,24 +199,29 @@ void tst_qdeclarativebehaviors::group() QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/groupProperty.qml")); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); + QTRY_VERIFY(rect); rect->setState("moved"); - QTest::qWait(200); - qreal x = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x(); - QVERIFY(x > 0 && x < 200); //i.e. the behavior has been triggered + //QTest::qWait(200); + QTRY_VERIFY(qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x() > 0); + QTRY_VERIFY(qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x() < 200); + //i.e. the behavior has been triggered + + delete rect; } { QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/groupProperty2.qml")); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); + QTRY_VERIFY(rect); rect->setState("moved"); - QTest::qWait(200); - qreal x = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x(); - QVERIFY(x > 0 && x < 200); //i.e. the behavior has been triggered + QTRY_VERIFY(qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x() > 0); + QTRY_VERIFY(qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x() < 200); + //i.e. the behavior has been triggered + + delete rect; } } @@ -220,52 +230,56 @@ void tst_qdeclarativebehaviors::emptyBehavior() QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/empty.qml")); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); + QTRY_VERIFY(rect); rect->setState("moved"); qreal x = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x(); - QCOMPARE(x, qreal(200)); //should change immediately + QTRY_COMPARE(x, qreal(200)); //should change immediately + + delete rect; } void tst_qdeclarativebehaviors::explicitSelection() { - { - QDeclarativeEngine engine; - QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/explicit.qml")); - QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/explicit.qml")); + QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); + QTRY_VERIFY(rect); - rect->setState("moved"); - QTest::qWait(200); - qreal x = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x(); - QVERIFY(x > 0 && x < 200); //i.e. the behavior has been triggered - } + rect->setState("moved"); + QTRY_VERIFY(qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x() > 0); + QTRY_VERIFY(qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x() < 200); + //i.e. the behavior has been triggered + + delete rect; } void tst_qdeclarativebehaviors::nonSelectingBehavior() { - { - QDeclarativeEngine engine; - QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/nonSelecting2.qml")); - QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/nonSelecting2.qml")); + QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); + QTRY_VERIFY(rect); - rect->setState("moved"); - qreal x = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x(); - QCOMPARE(x, qreal(200)); //should change immediately - } + rect->setState("moved"); + qreal x = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x(); + QTRY_COMPARE(x, qreal(200)); //should change immediately + + delete rect; } void tst_qdeclarativebehaviors::reassignedAnimation() { QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/reassignedAnimation.qml")); - QTest::ignoreMessage(QtWarningMsg, QString("QML Behavior (" + QUrl::fromLocalFile(SRCDIR "/data/reassignedAnimation.qml").toString() + ":9:12) Cannot change the animation assigned to a Behavior.").toUtf8().constData()); + QTest::ignoreMessage(QtWarningMsg, QString("QML Behavior (" + QUrl::fromLocalFile(SRCDIR "/data/reassignedAnimation.qml").toString() + ":9:9) Cannot change the animation assigned to a Behavior.").toUtf8().constData()); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); - QCOMPARE(qobject_cast<QDeclarativeNumberAnimation*>( + QTRY_VERIFY(rect); + QTRY_COMPARE(qobject_cast<QDeclarativeNumberAnimation*>( qobject_cast<QDeclarativeBehavior*>( rect->findChild<QDeclarativeBehavior*>("MyBehavior"))->animation())->duration(), 200); + + delete rect; } void tst_qdeclarativebehaviors::disabled() @@ -273,12 +287,14 @@ void tst_qdeclarativebehaviors::disabled() QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/disabled.qml")); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); - QCOMPARE(rect->findChild<QDeclarativeBehavior*>("MyBehavior")->enabled(), false); + QTRY_VERIFY(rect); + QTRY_COMPARE(rect->findChild<QDeclarativeBehavior*>("MyBehavior")->enabled(), false); rect->setState("moved"); qreal x = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x(); - QCOMPARE(x, qreal(200)); //should change immediately + QTRY_COMPARE(x, qreal(200)); //should change immediately + + delete rect; } void tst_qdeclarativebehaviors::dontStart() @@ -289,11 +305,28 @@ void tst_qdeclarativebehaviors::dontStart() QTest::ignoreMessage(QtWarningMsg, "QDeclarativeAbstractAnimation: setRunning() cannot be used on non-root animation nodes"); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect); + QTRY_VERIFY(rect); QDeclarativeAbstractAnimation *myAnim = rect->findChild<QDeclarativeAbstractAnimation*>("MyAnim"); - QVERIFY(myAnim && myAnim->qtAnimation()); - QVERIFY(myAnim->qtAnimation()->state() == QAbstractAnimation::Stopped); + QTRY_VERIFY(myAnim && myAnim->qtAnimation()); + QTRY_VERIFY(myAnim->qtAnimation()->state() == QAbstractAnimation::Stopped); + + delete rect; +} + +void tst_qdeclarativebehaviors::startup() +{ + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/startup.qml")); + QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); + QTRY_VERIFY(rect); + + QDeclarativeRectangle *innerRect = rect->findChild<QDeclarativeRectangle*>("innerRect"); + QTRY_VERIFY(innerRect); + + QTRY_COMPARE(innerRect->x(), qreal(100)); //should be set immediately + + delete rect; } QTEST_MAIN(tst_qdeclarativebehaviors) diff --git a/tests/auto/declarative/qdeclarativebinding/data/test-binding.qml b/tests/auto/declarative/qdeclarativebinding/data/test-binding.qml index e9101e4..8f5b39e 100644 --- a/tests/auto/declarative/qdeclarativebinding/data/test-binding.qml +++ b/tests/auto/declarative/qdeclarativebinding/data/test-binding.qml @@ -12,5 +12,5 @@ Rectangle { Binding { target: screen; property: "text"; value: s1.text; objectName: "binding1" } Binding { target: screen; property: "color"; value: r1.color } - Binding { target: screen; property: "color"; when: screen.changeColor == true; value: r2.color } + Binding { target: screen; property: "color"; when: screen.changeColor == true; value: r2.color; objectName: "binding3" } } diff --git a/tests/auto/declarative/qdeclarativebinding/qdeclarativebinding.pro b/tests/auto/declarative/qdeclarativebinding/qdeclarativebinding.pro index 7879976..04dd6f5 100644 --- a/tests/auto/declarative/qdeclarativebinding/qdeclarativebinding.pro +++ b/tests/auto/declarative/qdeclarativebinding/qdeclarativebinding.pro @@ -6,3 +6,6 @@ SOURCES += tst_qdeclarativebinding.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp b/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp index 826df4f..8ab7b0b 100644 --- a/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp +++ b/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp @@ -69,17 +69,23 @@ void tst_qdeclarativebinding::binding() QDeclarativeEngine engine; QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/test-binding.qml")); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); - QVERIFY(rect != 0); + + QDeclarativeBind *binding3 = qobject_cast<QDeclarativeBind*>(rect->findChild<QDeclarativeBind*>("binding3")); + QVERIFY(binding3 != 0); + QCOMPARE(rect->color(), QColor("yellow")); QCOMPARE(rect->property("text").toString(), QString("Hello")); + QCOMPARE(binding3->when(), false); rect->setProperty("changeColor", true); QCOMPARE(rect->color(), QColor("red")); + QCOMPARE(binding3->when(), true); + QDeclarativeBind *binding = qobject_cast<QDeclarativeBind*>(rect->findChild<QDeclarativeBind*>("binding1")); QVERIFY(binding != 0); - QCOMPARE(binding->object(), rect); + QCOMPARE(binding->object(), qobject_cast<QObject*>(rect)); QCOMPARE(binding->property(), QLatin1String("text")); QCOMPARE(binding->value().toString(), QLatin1String("Hello")); diff --git a/tests/auto/declarative/qdeclarativeborderimage/qdeclarativeborderimage.pro b/tests/auto/declarative/qdeclarativeborderimage/qdeclarativeborderimage.pro index 0574ddb..e754923 100644 --- a/tests/auto/declarative/qdeclarativeborderimage/qdeclarativeborderimage.pro +++ b/tests/auto/declarative/qdeclarativeborderimage/qdeclarativeborderimage.pro @@ -7,3 +7,6 @@ SOURCES += tst_qdeclarativeborderimage.cpp ../shared/testhttpserver.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeborderimage/tst_qdeclarativeborderimage.cpp b/tests/auto/declarative/qdeclarativeborderimage/tst_qdeclarativeborderimage.cpp index 8aeba6d..8621239 100644 --- a/tests/auto/declarative/qdeclarativeborderimage/tst_qdeclarativeborderimage.cpp +++ b/tests/auto/declarative/qdeclarativeborderimage/tst_qdeclarativeborderimage.cpp @@ -55,8 +55,8 @@ #include "../shared/testhttpserver.h" -#define SERVER_PORT 14445 -#define SERVER_ADDR "http://127.0.0.1:14445" +#define SERVER_PORT 14446 +#define SERVER_ADDR "http://127.0.0.1:14446" #define TRY_WAIT(expr) \ do { \ @@ -99,7 +99,7 @@ tst_qdeclarativeborderimage::tst_qdeclarativeborderimage() void tst_qdeclarativeborderimage::noSource() { - QString componentStr = "import Qt 4.6\nBorderImage { source: \"\" }"; + QString componentStr = "import Qt 4.7\nBorderImage { source: \"\" }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeBorderImage *obj = qobject_cast<QDeclarativeBorderImage*>(component.create()); @@ -121,10 +121,10 @@ void tst_qdeclarativeborderimage::imageSource_data() QTest::newRow("local") << QUrl::fromLocalFile(SRCDIR "/data/colors.png").toString() << false << ""; QTest::newRow("local not found") << QUrl::fromLocalFile(SRCDIR "/data/no-such-file.png").toString() << false - << "Cannot open QUrl( \"" + QUrl::fromLocalFile(SRCDIR "/data/no-such-file.png").toString() + "\" ) "; + << "QML BorderImage (file::2:1) Cannot open: " + QUrl::fromLocalFile(SRCDIR "/data/no-such-file.png").toString(); QTest::newRow("remote") << SERVER_ADDR "/colors.png" << true << ""; QTest::newRow("remote not found") << SERVER_ADDR "/no-such-file.png" << true - << "\"Error downloading " SERVER_ADDR "/no-such-file.png - server replied: Not found\" "; + << "QML BorderImage (file::2:1) Error downloading " SERVER_ADDR "/no-such-file.png - server replied: Not found"; } void tst_qdeclarativeborderimage::imageSource() @@ -143,12 +143,12 @@ void tst_qdeclarativeborderimage::imageSource() if (!error.isEmpty()) QTest::ignoreMessage(QtWarningMsg, error.toUtf8()); - QString componentStr = "import Qt 4.6\nBorderImage { source: \"" + source + "\" }"; + QString componentStr = "import Qt 4.7\nBorderImage { source: \"" + source + "\" }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeBorderImage *obj = qobject_cast<QDeclarativeBorderImage*>(component.create()); QVERIFY(obj != 0); - + if (remote) TRY_WAIT(obj->status() == QDeclarativeBorderImage::Loading); @@ -170,7 +170,7 @@ void tst_qdeclarativeborderimage::imageSource() void tst_qdeclarativeborderimage::clearSource() { - QString componentStr = "import Qt 4.6\nBorderImage { source: srcImage }"; + QString componentStr = "import Qt 4.7\nBorderImage { source: srcImage }"; QDeclarativeContext *ctxt = engine.rootContext(); ctxt->setContextProperty("srcImage", QUrl::fromLocalFile(SRCDIR "/data/colors.png")); QDeclarativeComponent component(&engine); @@ -190,7 +190,7 @@ void tst_qdeclarativeborderimage::clearSource() void tst_qdeclarativeborderimage::resized() { - QString componentStr = "import Qt 4.6\nBorderImage { source: \"" + QUrl::fromLocalFile(SRCDIR "/data/colors.png").toString() + "\"; width: 300; height: 300 }"; + QString componentStr = "import Qt 4.7\nBorderImage { source: \"" + QUrl::fromLocalFile(SRCDIR "/data/colors.png").toString() + "\"; width: 300; height: 300 }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeBorderImage *obj = qobject_cast<QDeclarativeBorderImage*>(component.create()); @@ -205,7 +205,7 @@ void tst_qdeclarativeborderimage::resized() void tst_qdeclarativeborderimage::smooth() { - QString componentStr = "import Qt 4.6\nBorderImage { source: \"" SRCDIR "/data/colors.png\"; smooth: true; width: 300; height: 300 }"; + QString componentStr = "import Qt 4.7\nBorderImage { source: \"" SRCDIR "/data/colors.png\"; smooth: true; width: 300; height: 300 }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeBorderImage *obj = qobject_cast<QDeclarativeBorderImage*>(component.create()); @@ -222,7 +222,7 @@ void tst_qdeclarativeborderimage::smooth() void tst_qdeclarativeborderimage::tileModes() { { - QString componentStr = "import Qt 4.6\nBorderImage { source: \"" SRCDIR "/data/colors.png\"; width: 100; height: 300; horizontalTileMode: BorderImage.Repeat; verticalTileMode: BorderImage.Repeat }"; + QString componentStr = "import Qt 4.7\nBorderImage { source: \"" SRCDIR "/data/colors.png\"; width: 100; height: 300; horizontalTileMode: BorderImage.Repeat; verticalTileMode: BorderImage.Repeat }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeBorderImage *obj = qobject_cast<QDeclarativeBorderImage*>(component.create()); @@ -235,7 +235,7 @@ void tst_qdeclarativeborderimage::tileModes() delete obj; } { - QString componentStr = "import Qt 4.6\nBorderImage { source: \"" SRCDIR "/data/colors.png\"; width: 300; height: 150; horizontalTileMode: BorderImage.Round; verticalTileMode: BorderImage.Round }"; + QString componentStr = "import Qt 4.7\nBorderImage { source: \"" SRCDIR "/data/colors.png\"; width: 300; height: 150; horizontalTileMode: BorderImage.Round; verticalTileMode: BorderImage.Round }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeBorderImage *obj = qobject_cast<QDeclarativeBorderImage*>(component.create()); @@ -262,19 +262,19 @@ void tst_qdeclarativeborderimage::sciSource() server->serveDirectory(SRCDIR "/data"); } - QString componentStr = "import Qt 4.6\nBorderImage { source: \"" + source + "\"; width: 300; height: 300 }"; + QString componentStr = "import Qt 4.7\nBorderImage { source: \"" + source + "\"; width: 300; height: 300 }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeBorderImage *obj = qobject_cast<QDeclarativeBorderImage*>(component.create()); QVERIFY(obj != 0); - + if (remote) TRY_WAIT(obj->status() == QDeclarativeBorderImage::Loading); - + QCOMPARE(obj->source(), remote ? source : QUrl(source)); QCOMPARE(obj->width(), 300.); QCOMPARE(obj->height(), 300.); - + if (valid) { TRY_WAIT(obj->status() == QDeclarativeBorderImage::Ready); QCOMPARE(obj->border()->left(), 10); @@ -307,7 +307,7 @@ void tst_qdeclarativeborderimage::invalidSciFile() QTest::ignoreMessage(QtWarningMsg, "Unknown tile rule specified. Using Stretch "); // for "Roun" QTest::ignoreMessage(QtWarningMsg, "Unknown tile rule specified. Using Stretch "); // for "Repea" - QString componentStr = "import Qt 4.6\nBorderImage { source: \"" + QUrl::fromLocalFile(SRCDIR "/data/invalid.sci").toString() +"\"; width: 300; height: 300 }"; + QString componentStr = "import Qt 4.7\nBorderImage { source: \"" + QUrl::fromLocalFile(SRCDIR "/data/invalid.sci").toString() +"\"; width: 300; height: 300 }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeBorderImage *obj = qobject_cast<QDeclarativeBorderImage*>(component.create()); @@ -325,7 +325,7 @@ void tst_qdeclarativeborderimage::pendingRemoteRequest() { QFETCH(QString, source); - QString componentStr = "import Qt 4.6\nBorderImage { source: \"" + source + "\" }"; + QString componentStr = "import Qt 4.7\nBorderImage { source: \"" + source + "\" }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeBorderImage *obj = qobject_cast<QDeclarativeBorderImage*>(component.create()); @@ -342,8 +342,8 @@ void tst_qdeclarativeborderimage::pendingRemoteRequest_data() { QTest::addColumn<QString>("source"); - QTest::newRow("png file") << "http://no-such-qt-server-like-this/none.png"; - QTest::newRow("sci file") << "http://no-such-qt-server-like-this/none.sci"; + QTest::newRow("png file") << "http://localhost/none.png"; + QTest::newRow("sci file") << "http://localhost/none.sci"; } QTEST_MAIN(tst_qdeclarativeborderimage) diff --git a/tests/auto/declarative/qdeclarativecomponent/qdeclarativecomponent.pro b/tests/auto/declarative/qdeclarativecomponent/qdeclarativecomponent.pro new file mode 100644 index 0000000..e58c798 --- /dev/null +++ b/tests/auto/declarative/qdeclarativecomponent/qdeclarativecomponent.pro @@ -0,0 +1,11 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative +QT += script network +macx:CONFIG -= app_bundle + +SOURCES += tst_qdeclarativecomponent.cpp + +DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp b/tests/auto/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp new file mode 100644 index 0000000..c9e304c --- /dev/null +++ b/tests/auto/declarative/qdeclarativecomponent/tst_qdeclarativecomponent.cpp @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <qtest.h> + +#include <QtDeclarative/qdeclarativeengine.h> +#include <QtDeclarative/qdeclarativecomponent.h> + +class tst_qdeclarativecomponent : public QObject +{ + Q_OBJECT +public: + tst_qdeclarativecomponent() { } + +private slots: + void loadEmptyUrl(); + +private: + QDeclarativeEngine engine; +}; + +void tst_qdeclarativecomponent::loadEmptyUrl() +{ + QDeclarativeComponent c(&engine); + c.loadUrl(QUrl()); + + QVERIFY(c.isError()); + QCOMPARE(c.errors().count(), 1); + QDeclarativeError error = c.errors().first(); + QCOMPARE(error.url(), QUrl()); + QCOMPARE(error.line(), -1); + QCOMPARE(error.column(), -1); + QCOMPARE(error.description(), QLatin1String("Invalid empty URL")); +} + +QTEST_MAIN(tst_qdeclarativecomponent) + +#include "tst_qdeclarativecomponent.moc" diff --git a/tests/auto/declarative/qdeclarativeconnection/qdeclarativeconnection.pro b/tests/auto/declarative/qdeclarativeconnection/qdeclarativeconnection.pro index a6adfa4..959354d 100644 --- a/tests/auto/declarative/qdeclarativeconnection/qdeclarativeconnection.pro +++ b/tests/auto/declarative/qdeclarativeconnection/qdeclarativeconnection.pro @@ -6,3 +6,6 @@ SOURCES += tst_qdeclarativeconnection.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativecontext/qdeclarativecontext.pro b/tests/auto/declarative/qdeclarativecontext/qdeclarativecontext.pro index adace70..5db9a9e 100644 --- a/tests/auto/declarative/qdeclarativecontext/qdeclarativecontext.pro +++ b/tests/auto/declarative/qdeclarativecontext/qdeclarativecontext.pro @@ -4,3 +4,6 @@ SOURCES += tst_qdeclarativecontext.cpp macx:CONFIG -= app_bundle DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp b/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp index 5f03989..851460f 100644 --- a/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp +++ b/tests/auto/declarative/qdeclarativecontext/tst_qdeclarativecontext.cpp @@ -58,8 +58,10 @@ private slots: void engineMethod(); void parentContext(); void setContextProperty(); - void addDefaultObject(); + void setContextObject(); void destruction(); + void idAsContextProperty(); + void readOnlyContexts(); private: QDeclarativeEngine engine; @@ -170,8 +172,8 @@ void tst_qdeclarativecontext::parentContext() delete ctxt2; ctxt2 = 0; QCOMPARE(ctxt->parentContext(), engine->rootContext()); - QCOMPARE(ctxt3->parentContext(), ctxt2); - QCOMPARE(ctxt4->parentContext(), ctxt2); + QCOMPARE(ctxt3->parentContext(), (QDeclarativeContext *)0); + QCOMPARE(ctxt4->parentContext(), (QDeclarativeContext *)0); QCOMPARE(ctxt5->parentContext(), ctxt); QCOMPARE(ctxt6->parentContext(), engine->rootContext()); QCOMPARE(ctxt7->parentContext(), engine->rootContext()); @@ -179,9 +181,9 @@ void tst_qdeclarativecontext::parentContext() delete engine; engine = 0; QCOMPARE(ctxt->parentContext(), (QDeclarativeContext *)0); - QCOMPARE(ctxt3->parentContext(), ctxt2); - QCOMPARE(ctxt4->parentContext(), ctxt2); - QCOMPARE(ctxt5->parentContext(), ctxt); + QCOMPARE(ctxt3->parentContext(), (QDeclarativeContext *)0); + QCOMPARE(ctxt4->parentContext(), (QDeclarativeContext *)0); + QCOMPARE(ctxt5->parentContext(), (QDeclarativeContext *)0); QCOMPARE(ctxt6->parentContext(), (QDeclarativeContext *)0); QCOMPARE(ctxt7->parentContext(), (QDeclarativeContext *)0); @@ -223,28 +225,10 @@ private: int _c; }; -class TestObject2 : public QObject -{ - Q_OBJECT - Q_PROPERTY(int b READ b NOTIFY bChanged) - -public: - TestObject2() : _b(10) {} - - int b() const { return _b; } - void setB(int b) { _b = b; emit bChanged(); } - -signals: - void bChanged(); - -private: - int _b; -}; - #define TEST_CONTEXT_PROPERTY(ctxt, name, value) \ { \ QDeclarativeComponent component(&engine); \ - component.setData("import Qt 4.6; QtObject { property var test: " #name " }", QUrl()); \ + component.setData("import Qt 4.7; QtObject { property variant test: " #name " }", QUrl()); \ \ QObject *obj = component.create(ctxt); \ \ @@ -294,7 +278,7 @@ void tst_qdeclarativecontext::setContextProperty() // Changes in context properties { QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6; QtObject { property var test: a }", QUrl()); + component.setData("import Qt 4.7; QtObject { property variant test: a }", QUrl()); QObject *obj = component.create(&ctxt2); @@ -306,7 +290,7 @@ void tst_qdeclarativecontext::setContextProperty() } { QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6; QtObject { property var test: b }", QUrl()); + component.setData("import Qt 4.7; QtObject { property variant test: b }", QUrl()); QObject *obj = component.create(&ctxt2); @@ -320,7 +304,7 @@ void tst_qdeclarativecontext::setContextProperty() } { QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6; QtObject { property var test: e.a }", QUrl()); + component.setData("import Qt 4.7; QtObject { property variant test: e.a }", QUrl()); QObject *obj = component.create(&ctxt2); @@ -334,7 +318,7 @@ void tst_qdeclarativecontext::setContextProperty() // New context properties { QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6; QtObject { property var test: a }", QUrl()); + component.setData("import Qt 4.7; QtObject { property variant test: a }", QUrl()); QObject *obj = component.create(&ctxt2); @@ -348,7 +332,7 @@ void tst_qdeclarativecontext::setContextProperty() // Setting an object-variant context property { QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6; QtObject { id: root; property int a: 10; property int test: ctxtProp.a; property var obj: root; }", QUrl()); + component.setData("import Qt 4.7; QtObject { id: root; property int a: 10; property int test: ctxtProp.a; property variant obj: root; }", QUrl()); QDeclarativeContext ctxt(engine.rootContext()); ctxt.setContextProperty("ctxtProp", QVariant()); @@ -366,41 +350,37 @@ void tst_qdeclarativecontext::setContextProperty() } } -void tst_qdeclarativecontext::addDefaultObject() +void tst_qdeclarativecontext::setContextObject() { QDeclarativeContext ctxt(&engine); TestObject to; - TestObject2 to2; to.setA(2); to.setB(192); to.setC(18); - to2.setB(111999); - ctxt.addDefaultObject(&to2); - ctxt.addDefaultObject(&to); + ctxt.setContextObject(&to); ctxt.setContextProperty("c", QVariant(9)); // Static context properties TEST_CONTEXT_PROPERTY(&ctxt, a, QVariant(2)); - TEST_CONTEXT_PROPERTY(&ctxt, b, QVariant(111999)); + TEST_CONTEXT_PROPERTY(&ctxt, b, QVariant(192)); TEST_CONTEXT_PROPERTY(&ctxt, c, QVariant(9)); to.setA(12); to.setB(100); to.setC(7); - to2.setB(1612); ctxt.setContextProperty("c", QVariant(3)); TEST_CONTEXT_PROPERTY(&ctxt, a, QVariant(12)); - TEST_CONTEXT_PROPERTY(&ctxt, b, QVariant(1612)); + TEST_CONTEXT_PROPERTY(&ctxt, b, QVariant(100)); TEST_CONTEXT_PROPERTY(&ctxt, c, QVariant(3)); // Changes in context properties { QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6; QtObject { property var test: a }", QUrl()); + component.setData("import Qt 4.7; QtObject { property variant test: a }", QUrl()); QObject *obj = component.create(&ctxt); @@ -429,6 +409,55 @@ void tst_qdeclarativecontext::destruction() QCOMPARE(ctxt, expr.context()); } +void tst_qdeclarativecontext::idAsContextProperty() +{ + QDeclarativeComponent component(&engine); + component.setData("import Qt 4.7; QtObject { property variant a; a: QtObject { id: myObject } }", QUrl()); + + QObject *obj = component.create(); + QVERIFY(obj); + + QVariant a = obj->property("a"); + QVERIFY(a.userType() == QMetaType::QObjectStar); + + QVariant ctxt = qmlContext(obj)->contextProperty("myObject"); + QVERIFY(ctxt.userType() == QMetaType::QObjectStar); + + QVERIFY(a == ctxt); + + delete obj; +} + +// Internal contexts should be read-only +void tst_qdeclarativecontext::readOnlyContexts() +{ + QDeclarativeComponent component(&engine); + component.setData("import Qt 4.7; QtObject { id: me }", QUrl()); + + QObject *obj = component.create(); + QVERIFY(obj); + + QDeclarativeContext *context = qmlContext(obj); + QVERIFY(context); + + QVERIFY(qvariant_cast<QObject*>(context->contextProperty("me")) == obj); + QVERIFY(context->contextObject() == obj); + + QTest::ignoreMessage(QtWarningMsg, "QDeclarativeContext: Cannot set property on internal context."); + context->setContextProperty("hello", 12); + QVERIFY(context->contextProperty("hello") == QVariant()); + + QTest::ignoreMessage(QtWarningMsg, "QDeclarativeContext: Cannot set property on internal context."); + context->setContextProperty("hello", obj); + QVERIFY(context->contextProperty("hello") == QVariant()); + + QTest::ignoreMessage(QtWarningMsg, "QDeclarativeContext: Cannot set context object for internal context."); + context->setContextObject(0); + QVERIFY(context->contextObject() == obj); + + delete obj; +} + QTEST_MAIN(tst_qdeclarativecontext) #include "tst_qdeclarativecontext.moc" diff --git a/tests/auto/declarative/qdeclarativedatetimeformatter/qdeclarativedatetimeformatter.pro b/tests/auto/declarative/qdeclarativedatetimeformatter/qdeclarativedatetimeformatter.pro deleted file mode 100644 index 22f53e6..0000000 --- a/tests/auto/declarative/qdeclarativedatetimeformatter/qdeclarativedatetimeformatter.pro +++ /dev/null @@ -1,5 +0,0 @@ -load(qttest_p4) -contains(QT_CONFIG,declarative): QT += declarative -macx:CONFIG -= app_bundle - -SOURCES += tst_qdeclarativedatetimeformatter.cpp diff --git a/tests/auto/declarative/qdeclarativedatetimeformatter/tst_qdeclarativedatetimeformatter.cpp b/tests/auto/declarative/qdeclarativedatetimeformatter/tst_qdeclarativedatetimeformatter.cpp deleted file mode 100644 index 69d7900..0000000 --- a/tests/auto/declarative/qdeclarativedatetimeformatter/tst_qdeclarativedatetimeformatter.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include <qtest.h> -#include <QtDeclarative/qdeclarativeengine.h> -#include <QtDeclarative/qdeclarativecomponent.h> -#include <private/qdeclarativedatetimeformatter_p.h> -#include <QDebug> - -class tst_qdeclarativedatetimeformatter : public QObject -{ - Q_OBJECT -public: - tst_qdeclarativedatetimeformatter() {} - -private slots: - void date(); - void time(); - void dateTime(); -}; - -void tst_qdeclarativedatetimeformatter::date() -{ - QDeclarativeEngine engine; - QDeclarativeComponent formatterComponent(&engine); - formatterComponent.setData(QByteArray("import Qt 4.6\n DateTimeFormatter { date: \"2008-12-24\" }"), - QUrl::fromLocalFile("")); - QDeclarativeDateTimeFormatter *formatter = qobject_cast<QDeclarativeDateTimeFormatter*>(formatterComponent.create()); - if(formatterComponent.isError()) - qDebug() << formatterComponent.errors(); - QVERIFY(formatter != 0); - - QDate date(2008,12,24); - QCOMPARE(formatter->date(), date); - QCOMPARE(formatter->dateTime().date(), date); - QCOMPARE(formatter->dateText(),date.toString(Qt::SystemLocaleShortDate)); - - formatter->setLongStyle(true); - QVERIFY(formatter->longStyle()); - QCOMPARE(formatter->dateText(),date.toString(Qt::SystemLocaleLongDate)); - - formatter->setDateFormat("ddd MMMM d yy"); - QCOMPARE(formatter->dateFormat(), QLatin1String("ddd MMMM d yy")); - QCOMPARE(formatter->dateText(),date.toString("ddd MMMM d yy")); - - QVERIFY(formatter->timeText().isEmpty()); - QVERIFY(formatter->dateTimeText().isEmpty()); - - delete formatter; -} - -void tst_qdeclarativedatetimeformatter::time() -{ - QDeclarativeEngine engine; - QDeclarativeComponent formatterComponent(&engine); - formatterComponent.setData("import Qt 4.6\n DateTimeFormatter { time: \"14:15:38.200\" }", QUrl::fromLocalFile("")); - QDeclarativeDateTimeFormatter *formatter = qobject_cast<QDeclarativeDateTimeFormatter*>(formatterComponent.create()); - if(formatterComponent.isError()) - qDebug() << formatterComponent.errors(); - QVERIFY(formatter != 0); - - QTime time(14,15,38,200); - - QCOMPARE(formatter->time(),time); - QCOMPARE(formatter->dateTime().time(),time); - - QCOMPARE(formatter->timeText(),time.toString(Qt::SystemLocaleShortDate)); - - formatter->setLongStyle(true); - QCOMPARE(formatter->timeText(),time.toString(Qt::SystemLocaleLongDate)); - - formatter->setTimeFormat("H:m:s a"); - QCOMPARE(formatter->timeFormat(), QLatin1String("H:m:s a")); - QCOMPARE(formatter->timeText(),time.toString("H:m:s a")); - - formatter->setTimeFormat("hh:mm:ss.zzz"); - QCOMPARE(formatter->timeText(),time.toString("hh:mm:ss.zzz")); - - QVERIFY(formatter->dateText().isEmpty()); - QVERIFY(formatter->dateTimeText().isEmpty()); - - delete formatter; -} - -void tst_qdeclarativedatetimeformatter::dateTime() -{ - QDeclarativeEngine engine; - QDeclarativeComponent formatterComponent(&engine); - formatterComponent.setData("import Qt 4.6\n DateTimeFormatter { dateTime: \"1978-03-04T09:13:54\" }", QUrl::fromLocalFile("")); - QDeclarativeDateTimeFormatter *formatter = qobject_cast<QDeclarativeDateTimeFormatter*>(formatterComponent.create()); - if(formatterComponent.isError()) - qDebug() << formatterComponent.errors(); - QVERIFY(formatter != 0); - - QDateTime dateTime(QDate(1978,03,04),QTime(9,13,54)); - QCOMPARE(formatter->dateTime(),dateTime); - QCOMPARE(formatter->date(),dateTime.date()); - QCOMPARE(formatter->time(),dateTime.time()); - QCOMPARE(formatter->dateTimeText(),dateTime.toString(Qt::SystemLocaleShortDate)); - - formatter->setLongStyle(true); - QCOMPARE(formatter->dateTimeText(),dateTime.toString(Qt::SystemLocaleLongDate)); - - formatter->setDateTimeFormat("M/d/yy H:m:s a"); - QCOMPARE(formatter->dateTimeFormat(), QLatin1String("M/d/yy H:m:s a")); - QCOMPARE(formatter->dateTimeText(),dateTime.toString("M/d/yy H:m:s a")); - - delete formatter; -} - -QTEST_MAIN(tst_qdeclarativedatetimeformatter) - -#include "tst_qdeclarativedatetimeformatter.moc" diff --git a/tests/auto/declarative/qdeclarativedebug/qdeclarativedebug.pro b/tests/auto/declarative/qdeclarativedebug/qdeclarativedebug.pro index ff1d0d4..1214fcf 100644 --- a/tests/auto/declarative/qdeclarativedebug/qdeclarativedebug.pro +++ b/tests/auto/declarative/qdeclarativedebug/qdeclarativedebug.pro @@ -5,3 +5,6 @@ macx:CONFIG -= app_bundle HEADERS += ../shared/debugutil_p.h SOURCES += tst_qdeclarativedebug.cpp \ ../shared/debugutil.cpp + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp index 0c3ca76..133dcb8 100644 --- a/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp +++ b/tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp @@ -153,7 +153,7 @@ QDeclarativeDebugPropertyReference tst_QDeclarativeDebug::findProperty(const QLi void tst_QDeclarativeDebug::waitForQuery(QDeclarativeDebugQuery *query) { QVERIFY(query); - QCOMPARE(query->parent(), this); + QCOMPARE(query->parent(), qobject_cast<QObject*>(this)); QVERIFY(query->state() == QDeclarativeDebugQuery::Waiting); if (!QDeclarativeDebugTest::waitForSignal(query, SIGNAL(stateChanged(QDeclarativeDebugQuery::State)))) QFAIL("query timed out"); @@ -822,7 +822,7 @@ int main(int argc, char *argv[]) QApplication app(argc, argv); QList<QByteArray> qml; - qml << "import Qt 4.6\n" + qml << "import Qt 4.7\n" "Item {" "width: 10; height: 20; scale: blueRect.scale;" "Rectangle { id: blueRect; width: 500; height: 600; color: \"blue\"; }" @@ -832,7 +832,7 @@ int main(int argc, char *argv[]) "}" "}"; // add second component to test multiple root contexts - qml << "import Qt 4.6\n" + qml << "import Qt 4.7\n" "Item {}"; tst_QDeclarativeDebug_Factory factory; return QDeclarativeDebugTest::runTests(&factory, qml); diff --git a/tests/auto/declarative/qdeclarativedebugservice/qdeclarativedebugservice.pro b/tests/auto/declarative/qdeclarativedebugservice/qdeclarativedebugservice.pro index e375889..a62e148 100644 --- a/tests/auto/declarative/qdeclarativedebugservice/qdeclarativedebugservice.pro +++ b/tests/auto/declarative/qdeclarativedebugservice/qdeclarativedebugservice.pro @@ -5,3 +5,6 @@ macx:CONFIG -= app_bundle HEADERS += ../shared/debugutil_p.h SOURCES += tst_qdeclarativedebugservice.cpp \ ../shared/debugutil.cpp + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativedom/data/importdir/Bar.qml b/tests/auto/declarative/qdeclarativedom/data/import/Bar.qml index 2d1a4a3..2d1a4a3 100644 --- a/tests/auto/declarative/qdeclarativedom/data/importdir/Bar.qml +++ b/tests/auto/declarative/qdeclarativedom/data/import/Bar.qml diff --git a/tests/auto/declarative/qdeclarativedom/data/importlib/sublib/qmldir/Foo.qml b/tests/auto/declarative/qdeclarativedom/data/importlib/sublib/Foo.qml index 2d1a4a3..2d1a4a3 100644 --- a/tests/auto/declarative/qdeclarativedom/data/importlib/sublib/qmldir/Foo.qml +++ b/tests/auto/declarative/qdeclarativedom/data/importlib/sublib/Foo.qml diff --git a/tests/auto/declarative/qdeclarativedom/qdeclarativedom.pro b/tests/auto/declarative/qdeclarativedom/qdeclarativedom.pro index 35df26e..466c563 100644 --- a/tests/auto/declarative/qdeclarativedom/qdeclarativedom.pro +++ b/tests/auto/declarative/qdeclarativedom/qdeclarativedom.pro @@ -5,3 +5,6 @@ macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativedom.cpp DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp b/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp index 9543280..1f0c47c 100644 --- a/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp +++ b/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp @@ -81,7 +81,7 @@ private: void tst_qdeclarativedom::loadSimple() { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item {}"; QDeclarativeDomDocument document; @@ -94,13 +94,13 @@ void tst_qdeclarativedom::loadSimple() QVERIFY(!rootObject.isCustomType()); QVERIFY(rootObject.objectType() == "Qt/Item"); QVERIFY(rootObject.objectTypeMajorVersion() == 4); - QVERIFY(rootObject.objectTypeMinorVersion() == 6); + QVERIFY(rootObject.objectTypeMinorVersion() == 7); } // Test regular properties void tst_qdeclarativedom::loadProperties() { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item { id : item; x : 300; visible : true }"; QDeclarativeDomDocument document; @@ -134,7 +134,7 @@ void tst_qdeclarativedom::loadProperties() void tst_qdeclarativedom::loadGroupedProperties() { { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item { anchors.left: parent.left; anchors.right: parent.right }"; QDeclarativeDomDocument document; @@ -177,7 +177,7 @@ void tst_qdeclarativedom::loadGroupedProperties() } { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item { \n" " anchors {\n" " left: parent.left\n" @@ -228,7 +228,7 @@ void tst_qdeclarativedom::loadGroupedProperties() void tst_qdeclarativedom::loadChildObject() { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item { Item {} }"; QDeclarativeDomDocument document; @@ -273,8 +273,8 @@ void tst_qdeclarativedom::loadComposite() void tst_qdeclarativedom::testValueSource() { - QByteArray qml = "import Qt 4.6\n" - "Rectangle { height: SpringFollow { spring: 1.4; damping: .15; source: Math.min(Math.max(-130, value*2.2 - 130), 133); }}"; + QByteArray qml = "import Qt 4.7\n" + "Rectangle { SpringFollow on height { spring: 1.4; damping: .15; to: Math.min(Math.max(-130, value*2.2 - 130), 133); }}"; QDeclarativeEngine freshEngine; QDeclarativeDomDocument document; @@ -291,13 +291,13 @@ void tst_qdeclarativedom::testValueSource() QVERIFY(valueSourceObject.isValid()); QVERIFY(valueSourceObject.objectType() == "Qt/SpringFollow"); - + const QDeclarativeDomValue springValue = valueSourceObject.property("spring").value(); QVERIFY(!springValue.isInvalid()); QVERIFY(springValue.isLiteral()); QVERIFY(springValue.toLiteral().literal() == "1.4"); - const QDeclarativeDomValue sourceValue = valueSourceObject.property("source").value(); + const QDeclarativeDomValue sourceValue = valueSourceObject.property("to").value(); QVERIFY(!sourceValue.isInvalid()); QVERIFY(sourceValue.isBinding()); QVERIFY(sourceValue.toBinding().binding() == "Math.min(Math.max(-130, value*2.2 - 130), 133)"); @@ -305,8 +305,8 @@ void tst_qdeclarativedom::testValueSource() void tst_qdeclarativedom::testValueInterceptor() { - QByteArray qml = "import Qt 4.6\n" - "Rectangle { height: Behavior { NumberAnimation { duration: 100 } } }"; + QByteArray qml = "import Qt 4.7\n" + "Rectangle { Behavior on height { NumberAnimation { duration: 100 } } }"; QDeclarativeEngine freshEngine; QDeclarativeDomDocument document; @@ -332,9 +332,9 @@ void tst_qdeclarativedom::testValueInterceptor() // Test QDeclarativeDomDocument::imports() void tst_qdeclarativedom::loadImports() { - QByteArray qml = "import Qt 4.6\n" - "import importlib.sublib 4.7\n" - "import importlib.sublib 4.6 as NewFoo\n" + QByteArray qml = "import Qt 4.7\n" + "import importlib.sublib 1.1\n" + "import importlib.sublib 1.0 as NewFoo\n" "import 'import'\n" "import 'import' as X\n" "Item {}"; @@ -342,7 +342,7 @@ void tst_qdeclarativedom::loadImports() QDeclarativeEngine engine; engine.addImportPath(SRCDIR "/data"); QDeclarativeDomDocument document; - QVERIFY(document.load(&engine, qml)); + QVERIFY(document.load(&engine, qml, QUrl::fromLocalFile(SRCDIR "/data/dummy.qml"))); QCOMPARE(document.imports().size(), 5); @@ -350,19 +350,19 @@ void tst_qdeclarativedom::loadImports() QCOMPARE(import.type(), QDeclarativeDomImport::Library); QCOMPARE(import.uri(), QLatin1String("Qt")); QCOMPARE(import.qualifier(), QString()); - QCOMPARE(import.version(), QLatin1String("4.6")); + QCOMPARE(import.version(), QLatin1String("4.7")); import = document.imports().at(1); QCOMPARE(import.type(), QDeclarativeDomImport::Library); QCOMPARE(import.uri(), QLatin1String("importlib.sublib")); QCOMPARE(import.qualifier(), QString()); - QCOMPARE(import.version(), QLatin1String("4.7")); + QCOMPARE(import.version(), QLatin1String("1.1")); import = document.imports().at(2); QCOMPARE(import.type(), QDeclarativeDomImport::Library); QCOMPARE(import.uri(), QLatin1String("importlib.sublib")); QCOMPARE(import.qualifier(), QLatin1String("NewFoo")); - QCOMPARE(import.version(), QLatin1String("4.6")); + QCOMPARE(import.version(), QLatin1String("1.0")); import = document.imports().at(3); QCOMPARE(import.type(), QDeclarativeDomImport::File); @@ -380,7 +380,7 @@ void tst_qdeclarativedom::loadImports() // Test loading a file with errors void tst_qdeclarativedom::loadErrors() { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item {\n" " foo: 12\n" "}"; @@ -400,7 +400,7 @@ void tst_qdeclarativedom::loadErrors() // Test loading a file with syntax errors void tst_qdeclarativedom::loadSyntaxErrors() { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "asdf"; QDeclarativeDomDocument document; @@ -415,10 +415,10 @@ void tst_qdeclarativedom::loadSyntaxErrors() QCOMPARE(error.description(), QString("Syntax error")); } -// Test attempting to load a file with remote references +// Test attempting to load a file with remote references void tst_qdeclarativedom::loadRemoteErrors() { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item {\n" " Script {\n" " source: \"http://localhost/exampleQmlScript.js\"" @@ -440,7 +440,7 @@ void tst_qdeclarativedom::loadRemoteErrors() void tst_qdeclarativedom::loadDynamicProperty() { { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item {\n" " property int a\n" " property bool b\n" @@ -450,9 +450,8 @@ void tst_qdeclarativedom::loadDynamicProperty() " property url f\n" " property color g\n" " property date h\n" - " property var i\n" - " property variant j\n" - " property QtObject k\n" + " property variant i\n" + " property QtObject j\n" "}"; QDeclarativeDomDocument document; @@ -461,7 +460,7 @@ void tst_qdeclarativedom::loadDynamicProperty() QDeclarativeDomObject rootObject = document.rootObject(); QVERIFY(rootObject.isValid()); - QCOMPARE(rootObject.dynamicProperties().count(), 11); + QCOMPARE(rootObject.dynamicProperties().count(), 10); #define DP_TEST(index, name, type, test_position, test_length, propTypeName) \ { \ @@ -483,14 +482,13 @@ void tst_qdeclarativedom::loadDynamicProperty() DP_TEST(4, e, QVariant::String, 106, 17, "string"); DP_TEST(5, f, QVariant::Url, 128, 14, "url"); DP_TEST(6, g, QVariant::Color, 147, 16, "color"); - DP_TEST(7, h, QVariant::Date, 168, 15, "date"); - DP_TEST(8, i, qMetaTypeId<QVariant>(), 188, 14, "var"); - DP_TEST(9, j, qMetaTypeId<QVariant>(), 207, 18, "variant"); - DP_TEST(10, k, -1, 230, 19, "QtObject"); + DP_TEST(7, h, QVariant::DateTime, 168, 15, "date"); + DP_TEST(8, i, qMetaTypeId<QVariant>(), 188, 18, "variant"); + DP_TEST(9, j, -1, 211, 19, "QtObject"); } { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item {\n" " property int a: 12\n" " property int b: a + 6\n" @@ -504,7 +502,7 @@ void tst_qdeclarativedom::loadDynamicProperty() QVERIFY(rootObject.isValid()); QCOMPARE(rootObject.dynamicProperties().count(), 3); - + { QDeclarativeDomDynamicProperty d = rootObject.dynamicProperties().at(0); QVERIFY(d.isDefaultProperty() == false); @@ -534,7 +532,7 @@ void tst_qdeclarativedom::loadComponent() { // Explicit component { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item {\n" " Component {\n" " id: myComponent\n" @@ -565,7 +563,7 @@ void tst_qdeclarativedom::loadComponent() QVERIFY(component.isValid()); QVERIFY(component.objectType() == "Qt/Component"); QVERIFY(component.objectTypeMajorVersion() == 4); - QVERIFY(component.objectTypeMinorVersion() == 6); + QVERIFY(component.objectTypeMinorVersion() == 7); QVERIFY(component.objectClassName() == "Component"); QVERIFY(component.objectId() == "myComponent"); QVERIFY(component.properties().isEmpty()); @@ -582,7 +580,7 @@ void tst_qdeclarativedom::loadComponent() // Implicit component { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "ListView {\n" " delegate: Item {}\n" "}"; @@ -632,7 +630,7 @@ void tst_qdeclarativedom::object_dynamicProperty() // Valid object, no dynamic properties { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item {}"; QDeclarativeDomDocument document; @@ -647,7 +645,7 @@ void tst_qdeclarativedom::object_dynamicProperty() // Valid object, dynamic properties { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item {\n" " property int a\n" "}"; @@ -685,7 +683,7 @@ void tst_qdeclarativedom::object_property() // Valid object - no default { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item {\n" " x: 10\n" " y: 12\n" @@ -725,7 +723,7 @@ void tst_qdeclarativedom::object_property() // Valid object - with default { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item {\n" " x: 10\n" " y: 12\n" @@ -762,7 +760,7 @@ void tst_qdeclarativedom::object_property() QVERIFY(y.value().toLiteral().literal() == "12"); QCOMPARE(y.position(), 35); QCOMPARE(y.length(), 1); - + QDeclarativeDomProperty data = rootObject.property("data"); QVERIFY(data.isValid()); QVERIFY(data.propertyName() == "data"); @@ -784,9 +782,9 @@ void tst_qdeclarativedom::object_url() QCOMPARE(object.url(), QUrl()); } - // Valid builtin object + // Valid builtin object { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "Item {}"; QDeclarativeDomDocument document; @@ -799,7 +797,7 @@ void tst_qdeclarativedom::object_url() // Valid composite object { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "MyItem {}"; QUrl myUrl = QUrl::fromLocalFile(SRCDIR "/data/main.qml"); @@ -817,14 +815,14 @@ void tst_qdeclarativedom::object_url() // Test copy constructors and operators void tst_qdeclarativedom::copy() { - QByteArray qml = "import Qt 4.6\n" + QByteArray qml = "import Qt 4.7\n" "MyItem {\n" " id: myItem\n" " property int a: 10\n" " x: 10\n" " y: x + 10\n" - " z: NumberAnimation {}\n" - " opacity: Behavior {}\n" + " NumberAnimation on z {}\n" + " Behavior on opacity {}\n" " Component {\n" " Item{}\n" " }\n" @@ -1031,7 +1029,7 @@ void tst_qdeclarativedom::copy() QDeclarativeDomObject object = document.rootObject(); QDeclarativeDomProperty property = object.property("data"); QCOMPARE(property.value().toList().values().count(), 1); - QDeclarativeDomComponent component = + QDeclarativeDomComponent component = property.value().toList().values().at(0).toObject().toComponent(); QCOMPARE(component.componentRoot().objectClassName(), QByteArray("Item")); @@ -1192,19 +1190,19 @@ void tst_qdeclarativedom::copy() // Tests the position/length of various elements void tst_qdeclarativedom::position() { - QByteArray qml = "import Qt 4.6\n" - /*14*/ "Item {\n" - /*21*/ " id: myItem\n" - /*36*/ " property int a: 10\n" - /*59*/ " x: 10\n" - /*69*/ " y: x + 10\n" - /*83*/ " z: NumberAnimation {}\n" - /*109*/ " opacity: Behavior {}\n" - /*134*/ " Component {\n" - /*150*/ " Item{}\n" - /*165*/ " }\n" - /*171*/ " children: [ Item{}, Item{} ]\n" - /*204*/ "}\n"; + QByteArray qml = "import Qt 4.7\n" + "Item {\n" + " id: myItem\n" + " property int a: 10\n" + " x: 10\n" + " y: x + 10\n" + " NumberAnimation on z {}\n" + " Behavior on opacity {}\n" + " Component {\n" + " Item{}\n" + " }\n" + " children: [ Item{}, Item{} ]\n" + "}\n"; QDeclarativeDomDocument document; @@ -1227,19 +1225,19 @@ void tst_qdeclarativedom::position() QCOMPARE(y.length(), 1); QDeclarativeDomProperty z = root.property("z"); - QCOMPARE(z.position(), 87); + QCOMPARE(z.position(), 106); QCOMPARE(z.length(), 1); QDeclarativeDomProperty opacity = root.property("opacity"); - QCOMPARE(opacity.position(), 113); + QCOMPARE(opacity.position(), 127); QCOMPARE(opacity.length(), 7); QDeclarativeDomProperty data = root.property("data"); - QCOMPARE(data.position(), 138); + QCOMPARE(data.position(), 142); QCOMPARE(data.length(), 0); QDeclarativeDomProperty children = root.property("children"); - QCOMPARE(children.position(), 175); + QCOMPARE(children.position(), 179); QCOMPARE(children.length(), 8); QDeclarativeDomList dataList = data.value().toList(); @@ -1249,30 +1247,30 @@ void tst_qdeclarativedom::position() // All QDeclarativeDomObject QCOMPARE(root.position(), 14); - QCOMPARE(root.length(), 191); + QCOMPARE(root.length(), 195); QDeclarativeDomObject numberAnimation = z.value().toValueSource().object(); - QCOMPARE(numberAnimation.position(), 90); - QCOMPARE(numberAnimation.length(), 18); + QCOMPARE(numberAnimation.position(), 87); + QCOMPARE(numberAnimation.length(), 23); QDeclarativeDomObject behavior = opacity.value().toValueInterceptor().object(); - QCOMPARE(behavior.position(), 122); - QCOMPARE(behavior.length(), 11); + QCOMPARE(behavior.position(), 115); + QCOMPARE(behavior.length(), 22); QDeclarativeDomObject component = dataList.values().at(0).toObject(); - QCOMPARE(component.position(), 138); + QCOMPARE(component.position(), 142); QCOMPARE(component.length(), 32); QDeclarativeDomObject componentRoot = component.toComponent().componentRoot(); - QCOMPARE(componentRoot.position(), 158); + QCOMPARE(componentRoot.position(), 162); QCOMPARE(componentRoot.length(), 6); QDeclarativeDomObject child1 = childrenList.values().at(0).toObject(); - QCOMPARE(child1.position(), 187); + QCOMPARE(child1.position(), 191); QCOMPARE(child1.length(), 6); QDeclarativeDomObject child2 = childrenList.values().at(1).toObject(); - QCOMPARE(child2.position(), 195); + QCOMPARE(child2.position(), 199); QCOMPARE(child2.length(), 6); // All QDeclarativeDomValue @@ -1285,23 +1283,23 @@ void tst_qdeclarativedom::position() QCOMPARE(yValue.length(), 6); QDeclarativeDomValue zValue = z.value(); - QCOMPARE(zValue.position(), 90); - QCOMPARE(zValue.length(), 18); + QCOMPARE(zValue.position(), 87); + QCOMPARE(zValue.length(), 23); QDeclarativeDomValue opacityValue = opacity.value(); - QCOMPARE(opacityValue.position(), 122); - QCOMPARE(opacityValue.length(), 11); + QCOMPARE(opacityValue.position(), 115); + QCOMPARE(opacityValue.length(), 22); QDeclarativeDomValue dataValue = data.value(); - QCOMPARE(dataValue.position(), 138); + QCOMPARE(dataValue.position(), 142); QCOMPARE(dataValue.length(), 32); QDeclarativeDomValue child1Value = childrenList.values().at(0); - QCOMPARE(child1Value.position(), 187); + QCOMPARE(child1Value.position(), 191); QCOMPARE(child1Value.length(), 6); QDeclarativeDomValue child2Value = childrenList.values().at(1); - QCOMPARE(child2Value.position(), 195); + QCOMPARE(child2Value.position(), 199); QCOMPARE(child2Value.length(), 6); // All QDeclarativeDomList diff --git a/tests/auto/declarative/qdeclarativeeasefollow/data/easefollow1.qml b/tests/auto/declarative/qdeclarativeeasefollow/data/easefollow1.qml deleted file mode 100644 index 0cc19eb..0000000 --- a/tests/auto/declarative/qdeclarativeeasefollow/data/easefollow1.qml +++ /dev/null @@ -1,3 +0,0 @@ -import Qt 4.6 - -EaseFollow {} diff --git a/tests/auto/declarative/qdeclarativeeasefollow/data/easefollow2.qml b/tests/auto/declarative/qdeclarativeeasefollow/data/easefollow2.qml deleted file mode 100644 index b65964e..0000000 --- a/tests/auto/declarative/qdeclarativeeasefollow/data/easefollow2.qml +++ /dev/null @@ -1,5 +0,0 @@ -import Qt 4.6 - -EaseFollow { - source: 10; duration: 300; enabled: true; reversingMode: EaseFollow.Immediate -} diff --git a/tests/auto/declarative/qdeclarativeeasefollow/data/easefollow3.qml b/tests/auto/declarative/qdeclarativeeasefollow/data/easefollow3.qml deleted file mode 100644 index f8886e9..0000000 --- a/tests/auto/declarative/qdeclarativeeasefollow/data/easefollow3.qml +++ /dev/null @@ -1,6 +0,0 @@ -import Qt 4.6 - -EaseFollow { - source: 10; velocity: 250; enabled: false; reversingMode: EaseFollow.Sync - maximumEasingTime: 150 -} diff --git a/tests/auto/declarative/qdeclarativeeasefollow/qdeclarativeeasefollow.pro b/tests/auto/declarative/qdeclarativeeasefollow/qdeclarativeeasefollow.pro deleted file mode 100644 index 71df4f4..0000000 --- a/tests/auto/declarative/qdeclarativeeasefollow/qdeclarativeeasefollow.pro +++ /dev/null @@ -1,8 +0,0 @@ -load(qttest_p4) -contains(QT_CONFIG,declarative): QT += declarative gui -macx:CONFIG -= app_bundle - -SOURCES += tst_qdeclarativeeasefollow.cpp - -# Define SRCDIR equal to test's source directory -DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/qdeclarativeeasefollow/tst_qdeclarativeeasefollow.cpp b/tests/auto/declarative/qdeclarativeeasefollow/tst_qdeclarativeeasefollow.cpp deleted file mode 100644 index 036eec0..0000000 --- a/tests/auto/declarative/qdeclarativeeasefollow/tst_qdeclarativeeasefollow.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include <qtest.h> -#include <QtDeclarative/qdeclarativeengine.h> -#include <QtDeclarative/qdeclarativecomponent.h> -#include <private/qdeclarativeeasefollow_p.h> -#include <private/qdeclarativevaluetype_p.h> -#include "../../../shared/util.h" - -class tst_qdeclarativeeasefollow : public QObject -{ - Q_OBJECT -public: - tst_qdeclarativeeasefollow(); - -private slots: - void defaultValues(); - void values(); - void disabled(); - -private: - QDeclarativeEngine engine; -}; - -tst_qdeclarativeeasefollow::tst_qdeclarativeeasefollow() -{ -} - -void tst_qdeclarativeeasefollow::defaultValues() -{ - QDeclarativeEngine engine; - QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/easefollow1.qml")); - QDeclarativeEaseFollow *obj = qobject_cast<QDeclarativeEaseFollow*>(c.create()); - - QVERIFY(obj != 0); - - QCOMPARE(obj->sourceValue(), 0.); - QCOMPARE(obj->velocity(), 200.); - QCOMPARE(obj->enabled(), true); - QCOMPARE(obj->duration(), -1.); - QCOMPARE(obj->maximumEasingTime(), -1.); - QCOMPARE(obj->reversingMode(), QDeclarativeEaseFollow::Eased); - - delete obj; -} - -void tst_qdeclarativeeasefollow::values() -{ - QDeclarativeEngine engine; - QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/easefollow2.qml")); - QDeclarativeEaseFollow *obj = qobject_cast<QDeclarativeEaseFollow*>(c.create()); - - QVERIFY(obj != 0); - - QCOMPARE(obj->sourceValue(), 10.); - QCOMPARE(obj->velocity(), 200.); - QCOMPARE(obj->enabled(), true); - QCOMPARE(obj->duration(), 300.); - QCOMPARE(obj->maximumEasingTime(), -1.); - QCOMPARE(obj->reversingMode(), QDeclarativeEaseFollow::Immediate); - - delete obj; -} - -void tst_qdeclarativeeasefollow::disabled() -{ - QDeclarativeEngine engine; - QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/easefollow3.qml")); - QDeclarativeEaseFollow *obj = qobject_cast<QDeclarativeEaseFollow*>(c.create()); - - QVERIFY(obj != 0); - - QCOMPARE(obj->sourceValue(), 10.); - QCOMPARE(obj->velocity(), 250.); - QCOMPARE(obj->enabled(), false); - QCOMPARE(obj->maximumEasingTime(), 150.); - QCOMPARE(obj->reversingMode(), QDeclarativeEaseFollow::Sync); - - delete obj; -} - -QTEST_MAIN(tst_qdeclarativeeasefollow) - -#include "tst_qdeclarativeeasefollow.moc" diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/NestedTypeTransientErrors.qml b/tests/auto/declarative/qdeclarativeecmascript/data/NestedTypeTransientErrors.qml index 7c32e56..28252df 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/NestedTypeTransientErrors.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/NestedTypeTransientErrors.qml @@ -3,7 +3,7 @@ import Qt 4.6 QtObject { property int b: obj.prop.a - property var prop; + property variant prop; prop: QtObject { property int a: 10 } diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/SpuriousWarning.qml b/tests/auto/declarative/qdeclarativeecmascript/data/SpuriousWarning.qml new file mode 100644 index 0000000..86c312c --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/SpuriousWarning.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +Item { + property int children: root.children.length +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/attachedPropertyScope.qml b/tests/auto/declarative/qdeclarativeecmascript/data/attachedPropertyScope.qml new file mode 100644 index 0000000..4b5464d --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/attachedPropertyScope.qml @@ -0,0 +1,9 @@ +import Qt 4.6 +import Qt.test 1.0 + +QtObject { + property int value: 9 + property int value2 + + MyQmlObject.onMySignal: value2 = value +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/compiled.qml b/tests/auto/declarative/qdeclarativeecmascript/data/compiled.qml new file mode 100644 index 0000000..1c88700 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/compiled.qml @@ -0,0 +1,44 @@ +import Qt 4.6 + +QtObject { + //real + property real test1: a + b + property real test2: a - b + property bool test3: (a < b) + property bool test4: (a > b) + property bool test5: (a == b) + property bool test6: (a != b) + + //int + property int test7: c + d + property int test8: d - c + property bool test9: (c < d) + property bool test10: (c > d) + property bool test11: (c == d) + property bool test12: (c != d) + + //string + property string test13: e + f + property string test14: e + " " + f + property bool test15: (e == f) + property bool test16: (e != f) + + //type conversion + property int test17: a + property real test18: d + property int test19: g + property real test20: g + property string test21: g + property string test22: h + property bool test23: i + + property real a: 4.5 + property real b: 11.2 + property int c: 9 + property int d: 176 + property string e: "Hello" + property string f: "World" + property variant g: 6.7 + property variant h: "!" + property variant i: true +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/deletedEngine.qml b/tests/auto/declarative/qdeclarativeecmascript/data/deletedEngine.qml new file mode 100644 index 0000000..6c538fe --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/deletedEngine.qml @@ -0,0 +1,11 @@ +import Qt 4.6 + +QtObject { + function calculate() { + return b * 13; + } + + property int a: calculate() + property int b: 3 +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/deletedObject.qml b/tests/auto/declarative/qdeclarativeecmascript/data/deletedObject.qml index 6bc3a17..29eba42 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/deletedObject.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/deletedObject.qml @@ -2,7 +2,7 @@ import Qt 4.6 import Qt.test 1.0 QtObject { - property var obj + property variant obj obj: MyQmlObject { id: myObject value: 92 diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/dynamicCreation.qml b/tests/auto/declarative/qdeclarativeecmascript/data/dynamicCreation.qml index ed5e571..2fef03a 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/dynamicCreation.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/dynamicCreation.qml @@ -18,4 +18,10 @@ MyQmlObject{ { obj.objectProperty = createQmlObject('TypeForDynamicCreation{}', obj); } + + function dontCrash() + { + var component = createComponent('file-doesnt-exist.qml'); + obj.objectProperty = component.createObject(); + } } diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/extensionObjects.qml b/tests/auto/declarative/qdeclarativeecmascript/data/extensionObjects.qml index a902312..566f5ed 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/extensionObjects.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/extensionObjects.qml @@ -1,4 +1,5 @@ import Qt.test 1.0 +import Qt 4.6 MyExtendedObject { @@ -7,4 +8,12 @@ MyExtendedObject coreProperty: extendedProperty extendedProperty: 9 + + property QtObject nested: MyExtendedObject { + baseProperty: baseExtendedProperty + baseExtendedProperty: 13 + + coreProperty: extendedProperty + extendedProperty: 9 + } } diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/functionErrors.qml b/tests/auto/declarative/qdeclarativeecmascript/data/functionErrors.qml new file mode 100644 index 0000000..4aca111 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/functionErrors.qml @@ -0,0 +1,10 @@ +import Qt 4.6 + +QtObject { + function myFunction() { + a = 10; + } + + Component.onCompleted: myFunction(); +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/idShortcutInvalidates.1.qml b/tests/auto/declarative/qdeclarativeecmascript/data/idShortcutInvalidates.1.qml index 2db0fc6..93054f8 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/idShortcutInvalidates.1.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/idShortcutInvalidates.1.qml @@ -4,7 +4,7 @@ import Qt 4.6 MyQmlObject { objectProperty: if(1) otherObject - property var obj + property variant obj obj: QtObject { id: otherObject diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/idShortcutInvalidates.qml b/tests/auto/declarative/qdeclarativeecmascript/data/idShortcutInvalidates.qml index f66428d..5ae8b14 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/idShortcutInvalidates.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/idShortcutInvalidates.qml @@ -4,7 +4,7 @@ import Qt 4.6 MyQmlObject { objectProperty: otherObject - property var obj + property variant obj obj: QtObject { id: otherObject diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/libraryScriptAssert.js b/tests/auto/declarative/qdeclarativeecmascript/data/libraryScriptAssert.js new file mode 100644 index 0000000..3ffdb33 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/libraryScriptAssert.js @@ -0,0 +1,6 @@ +.pragma library + +function test(target) +{ + var a = target.a; +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/libraryScriptAssert.qml b/tests/auto/declarative/qdeclarativeecmascript/data/libraryScriptAssert.qml new file mode 100644 index 0000000..9e8408f --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/libraryScriptAssert.qml @@ -0,0 +1,7 @@ +import Qt 4.6 +import "libraryScriptAssert.js" as Test + +QtObject { + id: root + Component.onCompleted: Test.test(root); +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/listProperties.qml b/tests/auto/declarative/qdeclarativeecmascript/data/listProperties.qml index 810f9b6..216e916 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/listProperties.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/listProperties.qml @@ -9,15 +9,12 @@ MyQmlObject { QtObject { property int a: 11 } ] - Script { - function calcTest1() { - var rv = 0; - for (var ii = 0; ii < root.objectListProperty.length; ++ii) { - rv += root.objectListProperty[ii].a; - } - return rv; + function calcTest1() { + var rv = 0; + for (var ii = 0; ii < root.objectListProperty.length; ++ii) { + rv += root.objectListProperty[ii].a; } - + return rv; } property int test1: calcTest1(); diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/listToVariant.qml b/tests/auto/declarative/qdeclarativeecmascript/data/listToVariant.qml index 47f4e50..e6d31c7 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/listToVariant.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/listToVariant.qml @@ -1,5 +1,5 @@ import Qt 4.6 QtObject { - property var test: children + property variant test: children } diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/methods.5.qml b/tests/auto/declarative/qdeclarativeecmascript/data/methods.5.qml index 3d45b15..5ba324a 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/methods.5.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/methods.5.qml @@ -1,7 +1,7 @@ import Qt 4.6 Item { - property alias x: item.x + property alias blah: item.x Item { id: item } function testFunction() { return 9; } diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/noSpuriousWarningsAtShutdown.2.qml b/tests/auto/declarative/qdeclarativeecmascript/data/noSpuriousWarningsAtShutdown.2.qml new file mode 100644 index 0000000..a762d6d --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/noSpuriousWarningsAtShutdown.2.qml @@ -0,0 +1,10 @@ +import Qt 4.6 + +Item { + id: root + + Item {} + + SpuriousWarning {} +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/noSpuriousWarningsAtShutdown.qml b/tests/auto/declarative/qdeclarativeecmascript/data/noSpuriousWarningsAtShutdown.qml new file mode 100644 index 0000000..a52c772 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/noSpuriousWarningsAtShutdown.qml @@ -0,0 +1,9 @@ +import Qt 4.6 + +Item { + id: root + + property int childrenCount: root.children.length + + Item {} +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/nullObjectBinding.qml b/tests/auto/declarative/qdeclarativeecmascript/data/nullObjectBinding.qml new file mode 100644 index 0000000..1bf0b81 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/nullObjectBinding.qml @@ -0,0 +1,8 @@ +import Qt 4.6 + +QtObject { + property QtObject test + test: if (1) model + property ListModel model +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/numberAssignment.qml b/tests/auto/declarative/qdeclarativeecmascript/data/numberAssignment.qml new file mode 100644 index 0000000..30a77e8 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/numberAssignment.qml @@ -0,0 +1,18 @@ +import Qt.test 1.0 + +NumberAssignment { + test1: if (1) 6.7 + test2: if (1) "6.7" + test3: if (1) 6 + test4: if (1) "6" + + test5: if (1) 6.7 + test6: if (1) "6.7" + test7: if (1) 6 + test8: if (1) "6" + + test9: if (1) 6.7 + test10: if (1) "6.7" + test11: if (1) 6 + test12: if (1) "6" +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/objectsCompareAsEqual.qml b/tests/auto/declarative/qdeclarativeecmascript/data/objectsCompareAsEqual.qml index 18e488a..edcd340 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/objectsCompareAsEqual.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/objectsCompareAsEqual.qml @@ -3,7 +3,7 @@ import Qt 4.6 Item { id: root - property var item: child + property variant item: child Item { id: child } property bool test1: child == child diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/ownership.qml b/tests/auto/declarative/qdeclarativeecmascript/data/ownership.qml new file mode 100644 index 0000000..72edf6e --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/ownership.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +QtObject { + Component.onCompleted: { var a = getObject(); a = null; } +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/propertyAssignmentErrors.qml b/tests/auto/declarative/qdeclarativeecmascript/data/propertyAssignmentErrors.qml new file mode 100644 index 0000000..c66f071 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/propertyAssignmentErrors.qml @@ -0,0 +1,22 @@ +import Qt 4.6 + +QtObject { + id: root + + property int a + property variant b + + Component.onCompleted: { + try { + root.a = undefined; + } catch(e) { + console.log (e.fileName + ":" + e.lineNumber + ":" + e); + } + + try { + root.a = "Hello"; + } catch(e) { + console.log (e.fileName + ":" + e.lineNumber + ":" + e); + } + } +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/qlistqobjectMethods.qml b/tests/auto/declarative/qdeclarativeecmascript/data/qlistqobjectMethods.qml new file mode 100644 index 0000000..5897e2a --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/qlistqobjectMethods.qml @@ -0,0 +1,6 @@ +import Qt 4.6 + +QtObject { + property int test: getObjects().length + property bool test2: getObjects()[0].trueProperty +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/qtbug_9792.qml b/tests/auto/declarative/qdeclarativeecmascript/data/qtbug_9792.qml new file mode 100644 index 0000000..9ac4430 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/qtbug_9792.qml @@ -0,0 +1,5 @@ +import Qt.test 1.0 + +MyQmlObject { + onBasicSignal: print("Hello world!"); +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/regExp.qml b/tests/auto/declarative/qdeclarativeecmascript/data/regExp.qml new file mode 100644 index 0000000..0dc404b --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/regExp.qml @@ -0,0 +1,7 @@ +import Qt.test 1.0 + +MyQmlObject{ + id: obj + objectName: "obj" + regExp: /[a-zA-z]/ +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scope.3.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scope.3.qml new file mode 100644 index 0000000..4ad7f34 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scope.3.qml @@ -0,0 +1,13 @@ +import Qt 4.6 + +Item { + id: root + + property int foo: 12 + property int console: 11 + + property bool test1: foo == 12 + property bool test2: console != 11 + property bool test3: root.console == 11 +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scope.4.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scope.4.qml new file mode 100644 index 0000000..d65b6e7 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scope.4.qml @@ -0,0 +1,12 @@ +import Qt.test 1.0 + +MyQmlObject { + id: a + property int b: 9 + + property int test + property string test2 + + // Should resolve to signal arguments, not to other elements in the file + onArgumentSignal: { test = a; test2 = b; } +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.1.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.1.qml new file mode 100644 index 0000000..2bdd706 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.1.qml @@ -0,0 +1,16 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property bool test: false + + id: root + + Script { + function testFunction() { + test = true; + } + } + + Component.onCompleted: root.argumentSignal.connect(testFunction); +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.2.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.2.qml new file mode 100644 index 0000000..fa90918 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.2.qml @@ -0,0 +1,22 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property bool test: false + + id: root + + Script { + function testFunction() { + if (this.b == 12) + test = true; + } + } + + Component.onCompleted: { + var a = new Object; + a.b = 12; + root.argumentSignal.connect(a, testFunction); + } +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.3.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.3.qml new file mode 100644 index 0000000..0d8e6ef --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.3.qml @@ -0,0 +1,15 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property bool test: false + + id: root + + function testFunction() { + test = true; + } + + Component.onCompleted: root.argumentSignal.connect(testFunction); +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.4.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.4.qml new file mode 100644 index 0000000..3e1ff1b --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.4.qml @@ -0,0 +1,12 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property bool test: false + + id: root + + Component.onCompleted: root.argumentSignal.connect(methodNoArgs); +} + + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.5.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.5.qml new file mode 100644 index 0000000..3ad5cbc --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.5.qml @@ -0,0 +1,11 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property bool test: false + + id: root + + Component.onCompleted: root.argumentSignal.connect(root, methodNoArgs); +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.6.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.6.qml new file mode 100644 index 0000000..8c35db1 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptConnect.6.qml @@ -0,0 +1,20 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property int test: 0 + + id: root + + Script { + function testFunction() { + test++; + } + } + + Component.onCompleted: { + root.argumentSignal.connect(testFunction); + root.argumentSignal.connect(testFunction); + } +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.1.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.1.qml new file mode 100644 index 0000000..45c4f73 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.1.qml @@ -0,0 +1,18 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property int test: 0 + + id: root + + Script { + function testFunction() { + test++; + } + } + + Component.onCompleted: root.argumentSignal.connect(testFunction); + + onBasicSignal: root.argumentSignal.disconnect(testFunction); +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.2.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.2.qml new file mode 100644 index 0000000..a47fe74 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.2.qml @@ -0,0 +1,19 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property int test: 0 + + id: root + + Script { + function testFunction() { + test++; + } + } + + Component.onCompleted: root.argumentSignal.connect(root, testFunction); + + onBasicSignal: root.argumentSignal.disconnect(root, testFunction); +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.3.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.3.qml new file mode 100644 index 0000000..c95ffbf --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.3.qml @@ -0,0 +1,19 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property int test: 0 + + id: root + + Script { + function testFunction() { + test++; + } + } + + Component.onCompleted: root.argumentSignal.connect(root, testFunction); + + onBasicSignal: root.argumentSignal.disconnect(testFunction); +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.4.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.4.qml new file mode 100644 index 0000000..342f24a --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptDisconnect.4.qml @@ -0,0 +1,20 @@ +import Qt.test 1.0 +import Qt 4.6 + +MyQmlObject { + property int test: 0 + + id: root + + Script { + function testFunction() { + test++; + } + function otherFunction() { + } + } + + Component.onCompleted: root.argumentSignal.connect(testFunction); + + onBasicSignal: root.argumentSignal.disconnect(otherFunction); +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.1.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.1.qml new file mode 100644 index 0000000..9b11fa9 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.1.qml @@ -0,0 +1,13 @@ +import Qt.test 1.0 + +MyQmlObject { + property string result + + Script{ + function f() { + result = b + } + + } + onArgumentSignal: f() +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.2.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.2.qml new file mode 100644 index 0000000..ec727e2 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.2.qml @@ -0,0 +1,11 @@ +import Qt.test 1.0 + +MyQmlObject { + property string result + property string aProp: "hello" + + Script{ + source: "scriptScope.js" + } + onBasicSignal: f() +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.js b/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.js new file mode 100644 index 0000000..5689930 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/scriptScope.js @@ -0,0 +1,5 @@ +var aProp = "world"; + +function f() { + result = aProp; +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/signalParameterTypes.qml b/tests/auto/declarative/qdeclarativeecmascript/data/signalParameterTypes.qml index 6fc8b02..ffbe317 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/signalParameterTypes.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/signalParameterTypes.qml @@ -6,9 +6,9 @@ MyQmlObject property int intProperty property real realProperty property color colorProperty - property var variantProperty + property variant variantProperty - signal mySignal(int a, real b, color c, var d) + signal mySignal(int a, real b, color c, variant d) onMySignal: { intProperty = a; realProperty = b; colorProperty = c; variantProperty = d; } diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/strictlyEquals.qml b/tests/auto/declarative/qdeclarativeecmascript/data/strictlyEquals.qml new file mode 100644 index 0000000..b9e455d --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/strictlyEquals.qml @@ -0,0 +1,17 @@ +import Qt 4.6 + +QtObject { + property bool test1: (a === true) + property bool test2: !(a === false) + property bool test3: (b === 11.2) + property bool test4: !(b === 9) + property bool test5: (c === 9) + property bool test6: !(c === 13) + property bool test7: (d === "Hello world") + property bool test8: !(d === "Hi") + + property bool a: true + property real b: 11.2 + property int c: 9 + property string d: "Hello world" +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/transientErrors.qml b/tests/auto/declarative/qdeclarativeecmascript/data/transientErrors.qml index fa7e01c..bd23544 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/data/transientErrors.qml +++ b/tests/auto/declarative/qdeclarativeecmascript/data/transientErrors.qml @@ -1,9 +1,9 @@ import Qt 4.6 QtObject { - property var obj: nested + property variant obj: nested - property var obj2 + property variant obj2 obj2: NestedTypeTransientErrors { id: nested } diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/variantsAssignedUndefined.qml b/tests/auto/declarative/qdeclarativeecmascript/data/variantsAssignedUndefined.qml new file mode 100644 index 0000000..5488e1a --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/variantsAssignedUndefined.qml @@ -0,0 +1,9 @@ +import Qt 4.6 + +QtObject { + property bool runTest: false + onRunTestChanged: test1 = undefined + + property variant test1: 10 + property variant test2: (runTest == false)?11:undefined +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/qdeclarativeecmascript.pro b/tests/auto/declarative/qdeclarativeecmascript/qdeclarativeecmascript.pro index 0e21cb2..eabed26 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/qdeclarativeecmascript.pro +++ b/tests/auto/declarative/qdeclarativeecmascript/qdeclarativeecmascript.pro @@ -8,3 +8,6 @@ HEADERS += testtypes.h # QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage # LIBS += -lgcov + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeecmascript/testtypes.cpp b/tests/auto/declarative/qdeclarativeecmascript/testtypes.cpp index 6a04704..0d07055 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/testtypes.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/testtypes.cpp @@ -43,7 +43,7 @@ class BaseExtensionObject : public QObject { Q_OBJECT - Q_PROPERTY(int baseExtendedProperty READ extendedProperty WRITE setExtendedProperty NOTIFY extendedPropertyChanged); + Q_PROPERTY(int baseExtendedProperty READ extendedProperty WRITE setExtendedProperty NOTIFY extendedPropertyChanged) public: BaseExtensionObject(QObject *parent) : QObject(parent), m_value(0) {} @@ -59,7 +59,7 @@ private: class ExtensionObject : public QObject { Q_OBJECT - Q_PROPERTY(int extendedProperty READ extendedProperty WRITE setExtendedProperty NOTIFY extendedPropertyChanged); + Q_PROPERTY(int extendedProperty READ extendedProperty WRITE setExtendedProperty NOTIFY extendedPropertyChanged) public: ExtensionObject(QObject *parent) : QObject(parent), m_value(0) {} @@ -74,12 +74,13 @@ private: void registerTypes() { - QML_REGISTER_TYPE(Qt.test, 1,0, MyQmlObject,MyQmlObject); - QML_REGISTER_TYPE(Qt.test, 1,0, MyDeferredObject,MyDeferredObject); - QML_REGISTER_TYPE(Qt.test, 1,0, MyQmlContainer,MyQmlContainer); - QML_REGISTER_EXTENDED_TYPE(Qt.test, 1,0, MyBaseExtendedObject,MyBaseExtendedObject,BaseExtensionObject); - QML_REGISTER_EXTENDED_TYPE(Qt.test, 1,0, MyExtendedObject,MyExtendedObject,ExtensionObject); - QML_REGISTER_TYPE(Qt.test, 1,0, MyTypeObject, MyTypeObject); + qmlRegisterType<MyQmlObject>("Qt.test", 1,0, "MyQmlObject"); + qmlRegisterType<MyDeferredObject>("Qt.test", 1,0, "MyDeferredObject"); + qmlRegisterType<MyQmlContainer>("Qt.test", 1,0, "MyQmlContainer"); + qmlRegisterExtendedType<MyBaseExtendedObject, BaseExtensionObject>("Qt.test", 1,0, "MyBaseExtendedObject"); + qmlRegisterExtendedType<MyExtendedObject, ExtensionObject>("Qt.test", 1,0, "MyExtendedObject"); + qmlRegisterType<MyTypeObject>("Qt.test", 1,0, "MyTypeObject"); + qmlRegisterType<NumberAssignment>("Qt.test", 1,0, "NumberAssignment"); } #include "testtypes.moc" diff --git a/tests/auto/declarative/qdeclarativeecmascript/testtypes.h b/tests/auto/declarative/qdeclarativeecmascript/testtypes.h index 8fbd071..4424419 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/testtypes.h +++ b/tests/auto/declarative/qdeclarativeecmascript/testtypes.h @@ -60,10 +60,21 @@ class MyQmlAttachedObject : public QObject { Q_OBJECT Q_PROPERTY(int value READ value CONSTANT) + Q_PROPERTY(int value2 READ value2 WRITE setValue2) public: - MyQmlAttachedObject(QObject *parent) : QObject(parent) {} + MyQmlAttachedObject(QObject *parent) : QObject(parent), m_value2(0) {} int value() const { return 19; } + int value2() const { return m_value2; } + void setValue2(int v) { m_value2 = v; } + + void emitMySignal() { emit mySignal(); } + +signals: + void mySignal(); + +private: + int m_value2; }; class MyQmlObject : public QObject @@ -79,6 +90,7 @@ class MyQmlObject : public QObject Q_PROPERTY(QObject *objectProperty READ objectProperty WRITE setObjectProperty NOTIFY objectChanged) Q_PROPERTY(QDeclarativeListProperty<QObject> objectListProperty READ objectListProperty CONSTANT) Q_PROPERTY(int resettableProperty READ resettableProperty WRITE setResettableProperty RESET resetProperty) + Q_PROPERTY(QRegExp regExp READ regExp WRITE setRegExp) public: MyQmlObject(): m_methodCalled(false), m_methodIntCalled(false), m_object(0), m_value(0), m_resetProperty(13) {} @@ -127,6 +139,9 @@ public: void setResettableProperty(int v) { m_resetProperty = v; } void resetProperty() { m_resetProperty = 13; } + QRegExp regExp() { return m_regExp; } + void setRegExp(const QRegExp ®Exp) { m_regExp = regExp; } + signals: void basicSignal(); void argumentSignal(int a, QString b, qreal c); @@ -151,6 +166,7 @@ private: QList<QObject *> m_objectQList; int m_value; int m_resetProperty; + QRegExp m_regExp; }; QML_DECLARE_TYPEINFO(MyQmlObject, QML_HAS_ATTACHED_PROPERTIES) @@ -194,28 +210,20 @@ public slots: class MyDefaultObject1 : public QObject { Q_OBJECT - Q_PROPERTY(int horseLegs READ horseLegs CONSTANT); - Q_PROPERTY(int antLegs READ antLegs CONSTANT); + Q_PROPERTY(int horseLegs READ horseLegs CONSTANT) + Q_PROPERTY(int antLegs READ antLegs CONSTANT) + Q_PROPERTY(int emuLegs READ emuLegs CONSTANT) public: int horseLegs() const { return 4; } int antLegs() const { return 6; } -}; - -class MyDefaultObject2 : public QObject -{ - Q_OBJECT - Q_PROPERTY(int antLegs READ antLegs CONSTANT); - Q_PROPERTY(int emuLegs READ emuLegs CONSTANT); -public: - int antLegs() const { return 5; } // Had an accident int emuLegs() const { return 2; } }; class MyDefaultObject3 : public QObject { Q_OBJECT - Q_PROPERTY(int antLegs READ antLegs CONSTANT); - Q_PROPERTY(int humanLegs READ humanLegs CONSTANT); + Q_PROPERTY(int antLegs READ antLegs CONSTANT) + Q_PROPERTY(int humanLegs READ humanLegs CONSTANT) public: int antLegs() const { return 7; } // Mutant int humanLegs() const { return 2; } @@ -226,9 +234,9 @@ class MyDeferredObject : public QObject { Q_OBJECT Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged) - Q_PROPERTY(QObject *objectProperty READ objectProperty WRITE setObjectProperty); - Q_PROPERTY(QObject *objectProperty2 READ objectProperty2 WRITE setObjectProperty2); - Q_CLASSINFO("DeferredPropertyNames", "value,objectProperty,objectProperty2"); + Q_PROPERTY(QObject *objectProperty READ objectProperty WRITE setObjectProperty) + Q_PROPERTY(QObject *objectProperty2 READ objectProperty2 WRITE setObjectProperty2) + Q_CLASSINFO("DeferredPropertyNames", "value,objectProperty,objectProperty2") public: MyDeferredObject() : m_value(0), m_object(0), m_object2(0) {} @@ -255,7 +263,7 @@ QML_DECLARE_TYPE(MyDeferredObject); class MyBaseExtendedObject : public QObject { Q_OBJECT -Q_PROPERTY(int baseProperty READ baseProperty WRITE setBaseProperty); +Q_PROPERTY(int baseProperty READ baseProperty WRITE setBaseProperty) public: MyBaseExtendedObject() : m_value(0) {} @@ -270,7 +278,7 @@ QML_DECLARE_TYPE(MyBaseExtendedObject); class MyExtendedObject : public MyBaseExtendedObject { Q_OBJECT -Q_PROPERTY(int coreProperty READ coreProperty WRITE setCoreProperty); +Q_PROPERTY(int coreProperty READ coreProperty WRITE setCoreProperty) public: MyExtendedObject() : m_value(0) {} @@ -288,34 +296,34 @@ class MyTypeObject : public QObject Q_ENUMS(MyEnum) Q_FLAGS(MyFlags) - Q_PROPERTY(QString id READ id WRITE setId); - Q_PROPERTY(QObject *objectProperty READ objectProperty WRITE setObjectProperty); - Q_PROPERTY(QDeclarativeComponent *componentProperty READ componentProperty WRITE setComponentProperty); - Q_PROPERTY(MyFlags flagProperty READ flagProperty WRITE setFlagProperty); - Q_PROPERTY(MyEnum enumProperty READ enumProperty WRITE setEnumProperty); - Q_PROPERTY(QString stringProperty READ stringProperty WRITE setStringProperty); - Q_PROPERTY(uint uintProperty READ uintProperty WRITE setUintProperty); - Q_PROPERTY(int intProperty READ intProperty WRITE setIntProperty); - Q_PROPERTY(qreal realProperty READ realProperty WRITE setRealProperty); - Q_PROPERTY(double doubleProperty READ doubleProperty WRITE setDoubleProperty); - Q_PROPERTY(float floatProperty READ floatProperty WRITE setFloatProperty); - Q_PROPERTY(QColor colorProperty READ colorProperty WRITE setColorProperty); - Q_PROPERTY(QDate dateProperty READ dateProperty WRITE setDateProperty); - Q_PROPERTY(QTime timeProperty READ timeProperty WRITE setTimeProperty); - Q_PROPERTY(QDateTime dateTimeProperty READ dateTimeProperty WRITE setDateTimeProperty); - Q_PROPERTY(QPoint pointProperty READ pointProperty WRITE setPointProperty); - Q_PROPERTY(QPointF pointFProperty READ pointFProperty WRITE setPointFProperty); - Q_PROPERTY(QSize sizeProperty READ sizeProperty WRITE setSizeProperty); - Q_PROPERTY(QSizeF sizeFProperty READ sizeFProperty WRITE setSizeFProperty); - Q_PROPERTY(QRect rectProperty READ rectProperty WRITE setRectProperty NOTIFY rectPropertyChanged); - Q_PROPERTY(QRect rectProperty2 READ rectProperty2 WRITE setRectProperty2); - Q_PROPERTY(QRectF rectFProperty READ rectFProperty WRITE setRectFProperty); - Q_PROPERTY(bool boolProperty READ boolProperty WRITE setBoolProperty); - Q_PROPERTY(QVariant variantProperty READ variantProperty WRITE setVariantProperty); - Q_PROPERTY(QVector3D vectorProperty READ vectorProperty WRITE setVectorProperty); - Q_PROPERTY(QUrl urlProperty READ urlProperty WRITE setUrlProperty); - - Q_PROPERTY(QDeclarativeScriptString scriptProperty READ scriptProperty WRITE setScriptProperty); + Q_PROPERTY(QString id READ id WRITE setId) + Q_PROPERTY(QObject *objectProperty READ objectProperty WRITE setObjectProperty) + Q_PROPERTY(QDeclarativeComponent *componentProperty READ componentProperty WRITE setComponentProperty) + Q_PROPERTY(MyFlags flagProperty READ flagProperty WRITE setFlagProperty) + Q_PROPERTY(MyEnum enumProperty READ enumProperty WRITE setEnumProperty) + Q_PROPERTY(QString stringProperty READ stringProperty WRITE setStringProperty) + Q_PROPERTY(uint uintProperty READ uintProperty WRITE setUintProperty) + Q_PROPERTY(int intProperty READ intProperty WRITE setIntProperty) + Q_PROPERTY(qreal realProperty READ realProperty WRITE setRealProperty) + Q_PROPERTY(double doubleProperty READ doubleProperty WRITE setDoubleProperty) + Q_PROPERTY(float floatProperty READ floatProperty WRITE setFloatProperty) + Q_PROPERTY(QColor colorProperty READ colorProperty WRITE setColorProperty) + Q_PROPERTY(QDate dateProperty READ dateProperty WRITE setDateProperty) + Q_PROPERTY(QTime timeProperty READ timeProperty WRITE setTimeProperty) + Q_PROPERTY(QDateTime dateTimeProperty READ dateTimeProperty WRITE setDateTimeProperty) + Q_PROPERTY(QPoint pointProperty READ pointProperty WRITE setPointProperty) + Q_PROPERTY(QPointF pointFProperty READ pointFProperty WRITE setPointFProperty) + Q_PROPERTY(QSize sizeProperty READ sizeProperty WRITE setSizeProperty) + Q_PROPERTY(QSizeF sizeFProperty READ sizeFProperty WRITE setSizeFProperty) + Q_PROPERTY(QRect rectProperty READ rectProperty WRITE setRectProperty NOTIFY rectPropertyChanged) + Q_PROPERTY(QRect rectProperty2 READ rectProperty2 WRITE setRectProperty2) + Q_PROPERTY(QRectF rectFProperty READ rectFProperty WRITE setRectFProperty) + Q_PROPERTY(bool boolProperty READ boolProperty WRITE setBoolProperty) + Q_PROPERTY(QVariant variantProperty READ variantProperty WRITE setVariantProperty) + Q_PROPERTY(QVector3D vectorProperty READ vectorProperty WRITE setVectorProperty) + Q_PROPERTY(QUrl urlProperty READ urlProperty WRITE setUrlProperty) + + Q_PROPERTY(QDeclarativeScriptString scriptProperty READ scriptProperty WRITE setScriptProperty) public: MyTypeObject() @@ -592,6 +600,71 @@ private: QVariantList m_actuals; }; +class NumberAssignment : public QObject +{ + Q_OBJECT +public: + Q_PROPERTY(qreal test1 READ test1 WRITE setTest1); + qreal _test1; + qreal test1() const { return _test1; } + void setTest1(qreal v) { _test1 = v; } + + Q_PROPERTY(qreal test2 READ test2 WRITE setTest2); + qreal _test2; + qreal test2() const { return _test2; } + void setTest2(qreal v) { _test2 = v; } + + Q_PROPERTY(qreal test3 READ test3 WRITE setTest3); + qreal _test3; + qreal test3() const { return _test3; } + void setTest3(qreal v) { _test3 = v; } + + Q_PROPERTY(qreal test4 READ test4 WRITE setTest4); + qreal _test4; + qreal test4() const { return _test4; } + void setTest4(qreal v) { _test4 = v; } + + Q_PROPERTY(int test5 READ test5 WRITE setTest5); + int _test5; + int test5() const { return _test5; } + void setTest5(int v) { _test5 = v; } + + Q_PROPERTY(int test6 READ test6 WRITE setTest6); + int _test6; + int test6() const { return _test6; } + void setTest6(int v) { _test6 = v; } + + Q_PROPERTY(int test7 READ test7 WRITE setTest7); + int _test7; + int test7() const { return _test7; } + void setTest7(int v) { _test7 = v; } + + Q_PROPERTY(int test8 READ test8 WRITE setTest8); + int _test8; + int test8() const { return _test8; } + void setTest8(int v) { _test8 = v; } + + Q_PROPERTY(unsigned int test9 READ test9 WRITE setTest9); + unsigned int _test9; + unsigned int test9() const { return _test9; } + void setTest9(unsigned int v) { _test9 = v; } + + Q_PROPERTY(unsigned int test10 READ test10 WRITE setTest10); + unsigned int _test10; + unsigned int test10() const { return _test10; } + void setTest10(unsigned int v) { _test10 = v; } + + Q_PROPERTY(unsigned int test11 READ test11 WRITE setTest11); + unsigned int _test11; + unsigned int test11() const { return _test11; } + void setTest11(unsigned int v) { _test11 = v; } + + Q_PROPERTY(unsigned int test12 READ test12 WRITE setTest12); + unsigned int _test12; + unsigned int test12() const { return _test12; } + void setTest12(unsigned int v) { _test12 = v; } +}; + void registerTypes(); #endif // TESTTYPES_H diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index 60c380c..098ac36 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -108,6 +108,8 @@ private slots: void selfDeletingBinding(); void extendedObjectPropertyLookup(); void scriptErrors(); + void functionErrors(); + void propertyAssignmentErrors(); void signalTriggeredBindings(); void listProperties(); void exceptionClearsOnReeval(); @@ -122,8 +124,25 @@ private slots: void listToVariant(); void multiEngineObject(); void deletedObject(); + void scriptScope(); + void attachedPropertyScope(); + void scriptConnect(); + void scriptDisconnect(); + void ownership(); + void qlistqobjectMethods(); + void strictlyEquals(); + void compiled(); + void numberAssignment(); void bug1(); + void dynamicCreationCrash(); + void regExpBug(); + void nullObjectBinding(); + void deletedEngine(); + void libraryScriptAssert(); + void variantsAssignedUndefined(); + void qtbug_9792(); + void noSpuriousWarningsAtShutdown(); void callQtInvokables(); private: @@ -344,7 +363,6 @@ void tst_qdeclarativeecmascript::basicExpressions() MyQmlObject object2; MyQmlObject object3; MyDefaultObject1 default1; - MyDefaultObject2 default2; MyDefaultObject3 default3; object1.setStringProperty("Object1"); object2.setStringProperty("Object2"); @@ -353,13 +371,12 @@ void tst_qdeclarativeecmascript::basicExpressions() QDeclarativeContext context(engine.rootContext()); QDeclarativeContext nestedContext(&context); - context.addDefaultObject(&default1); - context.addDefaultObject(&default2); + context.setContextObject(&default1); context.setContextProperty("a", QVariant(1944)); context.setContextProperty("b", QVariant("Milk")); context.setContextProperty("object", &object1); context.setContextProperty("objectOverride", &object2); - nestedContext.addDefaultObject(&default3); + nestedContext.setContextObject(&default3); nestedContext.setContextProperty("b", QVariant("Cow")); nestedContext.setContextProperty("objectOverride", &object3); nestedContext.setContextProperty("millipedeLegs", QVariant(100)); @@ -535,11 +552,20 @@ void tst_qdeclarativeecmascript::extensionObjects() QVERIFY(object != 0); QCOMPARE(object->baseProperty(), 13); QCOMPARE(object->coreProperty(), 9); - object->setProperty("extendedProperty", QVariant(11)); object->setProperty("baseExtendedProperty", QVariant(92)); QCOMPARE(object->coreProperty(), 11); QCOMPARE(object->baseProperty(), 92); + + MyExtendedObject *nested = qobject_cast<MyExtendedObject*>(qvariant_cast<QObject *>(object->property("nested"))); + QVERIFY(nested); + QCOMPARE(nested->baseProperty(), 13); + QCOMPARE(nested->coreProperty(), 9); + nested->setProperty("extendedProperty", QVariant(11)); + nested->setProperty("baseExtendedProperty", QVariant(92)); + QCOMPARE(nested->coreProperty(), 11); + QCOMPARE(nested->baseProperty(), 92); + } void tst_qdeclarativeecmascript::attachedProperties() @@ -728,6 +754,33 @@ void tst_qdeclarativeecmascript::scope() QCOMPARE(object->property("test5").toInt(), 24); QCOMPARE(object->property("test6").toInt(), 24); } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scope.3.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test1").toBool(), true); + QCOMPARE(object->property("test2").toBool(), true); + QCOMPARE(object->property("test3").toBool(), true); + } + + // Signal argument scope + { + QDeclarativeComponent component(&engine, TEST_FILE("scope.4.qml")); + MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toInt(), 0); + QCOMPARE(object->property("test2").toString(), QString()); + + emit object->argumentSignal(13, "Argument Scope", 9); + + QCOMPARE(object->property("test").toInt(), 13); + QCOMPARE(object->property("test2").toString(), QString("Argument Scope")); + + delete object; + } } /* @@ -858,6 +911,7 @@ void tst_qdeclarativeecmascript::dynamicDestruction() } QVERIFY(!createdQmlObject); + QDeclarativeEngine::setObjectOwnership(object, QDeclarativeEngine::JavaScriptOwnership); QMetaObject::invokeMethod(object, "killMe"); QVERIFY(object); QTest::qWait(0); @@ -950,6 +1004,44 @@ void tst_qdeclarativeecmascript::scriptErrors() } /* +Test file/lineNumbers for inline functions. +*/ +void tst_qdeclarativeecmascript::functionErrors() +{ + QDeclarativeComponent component(&engine, TEST_FILE("functionErrors.qml")); + QString url = component.url().toString(); + + QString warning = url + ":5: Error: Invalid write to global property \"a\""; + + QTest::ignoreMessage(QtWarningMsg, warning.toLatin1().constData()); + + QObject *object = component.create(); + QVERIFY(object != 0); + delete object; +} + +/* +Test various errors that can occur when assigning a property from script +*/ +void tst_qdeclarativeecmascript::propertyAssignmentErrors() +{ + QDeclarativeComponent component(&engine, TEST_FILE("propertyAssignmentErrors.qml")); + + QString url = component.url().toString(); + + QString warning1 = url + ":11:Error: Cannot assign [undefined] to int"; + QString warning2 = url + ":17:Error: Cannot assign QString to int"; + + QTest::ignoreMessage(QtDebugMsg, warning1.toLatin1().constData()); + QTest::ignoreMessage(QtDebugMsg, warning2.toLatin1().constData()); + + QObject *object = component.create(); + QVERIFY(object != 0); + + delete object; +} + +/* Test bindings still work when the reeval is triggered from within a signal script. */ @@ -1195,6 +1287,28 @@ void tst_qdeclarativeecmascript::bug1() delete object; } +// Don't crash in createObject when the component has errors. +void tst_qdeclarativeecmascript::dynamicCreationCrash() +{ + QDeclarativeComponent component(&engine, TEST_FILE("dynamicCreation.qml")); + MyQmlObject *object = qobject_cast<MyQmlObject*>(component.create()); + QVERIFY(object != 0); + + QTest::ignoreMessage(QtWarningMsg, "QDeclarativeComponent: Component is not ready"); + QMetaObject::invokeMethod(object, "dontCrash"); + QObject *created = object->objectProperty(); + QVERIFY(created == 0); +} + +//QTBUG-9367 +void tst_qdeclarativeecmascript::regExpBug() +{ + QDeclarativeComponent component(&engine, TEST_FILE("regExp.qml")); + MyQmlObject *object = qobject_cast<MyQmlObject*>(component.create()); + QVERIFY(object != 0); + QCOMPARE(object->regExp().pattern(), QLatin1String("[a-zA-z]")); +} + void tst_qdeclarativeecmascript::callQtInvokables() { MyInvokableObject o; @@ -1268,7 +1382,6 @@ void tst_qdeclarativeecmascript::callQtInvokables() o.reset(); { QScriptValue ret = engine->evaluate("object.method_NoArgs_QPointF()"); - QVERIFY(ret.isVariant()); QCOMPARE(ret.toVariant(), QVariant(QPointF(123, 4.5))); QCOMPARE(o.error(), false); QCOMPARE(o.invoked(), 3); @@ -1605,7 +1718,7 @@ void tst_qdeclarativeecmascript::listToVariant() MyQmlContainer container; QDeclarativeContext context(engine.rootContext()); - context.addDefaultObject(&container); + context.setContextObject(&container); QObject *object = component.create(&context); QVERIFY(object != 0); @@ -1657,6 +1770,509 @@ void tst_qdeclarativeecmascript::deletedObject() delete object; } +void tst_qdeclarativeecmascript::scriptScope() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptScope.1.qml")); + + MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create()); + QVERIFY(object != 0); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("result").toString(), QString()); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptScope.2.qml")); + + MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create()); + QVERIFY(object != 0); + emit object->basicSignal(); + QCOMPARE(object->property("result").toString(), QLatin1String("world")); + + delete object; + } +} + +void tst_qdeclarativeecmascript::attachedPropertyScope() +{ + QDeclarativeComponent component(&engine, TEST_FILE("attachedPropertyScope.qml")); + + QObject *object = component.create(); + QVERIFY(object != 0); + + MyQmlAttachedObject *attached = + qobject_cast<MyQmlAttachedObject *>(qmlAttachedPropertiesObject<MyQmlObject>(object)); + QVERIFY(attached != 0); + + QCOMPARE(object->property("value2").toInt(), 0); + + attached->emitMySignal(); + + QCOMPARE(object->property("value2").toInt(), 9); + + delete object; +} + +void tst_qdeclarativeecmascript::scriptConnect() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptConnect.1.qml")); + + MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), false); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptConnect.2.qml")); + + MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), false); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptConnect.3.qml")); + + MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), false); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptConnect.4.qml")); + + MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->methodCalled(), false); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->methodCalled(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptConnect.5.qml")); + + MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->methodCalled(), false); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->methodCalled(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptConnect.6.qml")); + + MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toInt(), 0); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 2); + + delete object; + } +} + +void tst_qdeclarativeecmascript::scriptDisconnect() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptDisconnect.1.qml")); + + MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toInt(), 0); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 1); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 2); + emit object->basicSignal(); + QCOMPARE(object->property("test").toInt(), 2); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 2); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptDisconnect.2.qml")); + + MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toInt(), 0); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 1); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 2); + emit object->basicSignal(); + QCOMPARE(object->property("test").toInt(), 2); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 2); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptDisconnect.3.qml")); + + MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toInt(), 0); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 1); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 2); + emit object->basicSignal(); + QCOMPARE(object->property("test").toInt(), 2); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 3); + + delete object; + } + { + QDeclarativeComponent component(&engine, TEST_FILE("scriptDisconnect.4.qml")); + + MyQmlObject *object = qobject_cast<MyQmlObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toInt(), 0); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 1); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 2); + emit object->basicSignal(); + QCOMPARE(object->property("test").toInt(), 2); + emit object->argumentSignal(19, "Hello world!", 10.3); + QCOMPARE(object->property("test").toInt(), 3); + + delete object; + } +} + +class OwnershipObject : public QObject +{ + Q_OBJECT +public: + OwnershipObject() { object = new QObject; } + + QPointer<QObject> object; + +public slots: + QObject *getObject() { return object; } +}; + +void tst_qdeclarativeecmascript::ownership() +{ + OwnershipObject own; + QDeclarativeContext *context = new QDeclarativeContext(engine.rootContext()); + context->setContextObject(&own); + + { + QDeclarativeComponent component(&engine, TEST_FILE("ownership.qml")); + + QVERIFY(own.object != 0); + + QObject *object = component.create(context); + QDeclarativeEnginePrivate::getScriptEngine(&engine)->collectGarbage(); + + QCoreApplication::processEvents(QEventLoop::DeferredDeletion); + + QVERIFY(own.object == 0); + + delete object; + } + + own.object = new QObject(&own); + + { + QDeclarativeComponent component(&engine, TEST_FILE("ownership.qml")); + + QVERIFY(own.object != 0); + + QObject *object = component.create(context); + QDeclarativeEnginePrivate::getScriptEngine(&engine)->collectGarbage(); + + QCoreApplication::processEvents(QEventLoop::DeferredDeletion); + + QVERIFY(own.object != 0); + + delete object; + } +} + +class QListQObjectMethodsObject : public QObject +{ + Q_OBJECT +public: + QListQObjectMethodsObject() { + m_objects.append(new MyQmlObject()); + m_objects.append(new MyQmlObject()); + } + + ~QListQObjectMethodsObject() { + qDeleteAll(m_objects); + } + +public slots: + QList<QObject *> getObjects() { return m_objects; } + +private: + QList<QObject *> m_objects; +}; + +// Tests that returning a QList<QObject*> from a method works +void tst_qdeclarativeecmascript::qlistqobjectMethods() +{ + QListQObjectMethodsObject obj; + QDeclarativeContext *context = new QDeclarativeContext(engine.rootContext()); + context->setContextObject(&obj); + + QDeclarativeComponent component(&engine, TEST_FILE("qlistqobjectMethods.qml")); + + QObject *object = component.create(context); + + QCOMPARE(object->property("test").toInt(), 2); + QCOMPARE(object->property("test2").toBool(), true); + + delete object; +} + +// QTBUG-9205 +void tst_qdeclarativeecmascript::strictlyEquals() +{ + QDeclarativeComponent component(&engine, TEST_FILE("strictlyEquals.qml")); + + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test1").toBool(), true); + QCOMPARE(object->property("test2").toBool(), true); + QCOMPARE(object->property("test3").toBool(), true); + QCOMPARE(object->property("test4").toBool(), true); + QCOMPARE(object->property("test5").toBool(), true); + QCOMPARE(object->property("test6").toBool(), true); + QCOMPARE(object->property("test7").toBool(), true); + QCOMPARE(object->property("test8").toBool(), true); + + delete object; +} + +void tst_qdeclarativeecmascript::compiled() +{ + QDeclarativeComponent component(&engine, TEST_FILE("compiled.qml")); + + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test1").toReal(), qreal(15.7)); + QCOMPARE(object->property("test2").toReal(), qreal(-6.7)); + QCOMPARE(object->property("test3").toBool(), true); + QCOMPARE(object->property("test4").toBool(), false); + QCOMPARE(object->property("test5").toBool(), false); + QCOMPARE(object->property("test6").toBool(), true); + + QCOMPARE(object->property("test7").toInt(), 185); + QCOMPARE(object->property("test8").toInt(), 167); + QCOMPARE(object->property("test9").toBool(), true); + QCOMPARE(object->property("test10").toBool(), false); + QCOMPARE(object->property("test11").toBool(), false); + QCOMPARE(object->property("test12").toBool(), true); + + QCOMPARE(object->property("test13").toString(), QLatin1String("HelloWorld")); + QCOMPARE(object->property("test14").toString(), QLatin1String("Hello World")); + QCOMPARE(object->property("test15").toBool(), false); + QCOMPARE(object->property("test16").toBool(), true); + + QCOMPARE(object->property("test17").toInt(), 4); + QCOMPARE(object->property("test18").toReal(), qreal(176)); + QEXPECT_FAIL("", "QTBUG-9538", Continue); + QCOMPARE(object->property("test19").toInt(), 6); + QCOMPARE(object->property("test20").toReal(), qreal(6.7)); + QCOMPARE(object->property("test21").toString(), QLatin1String("6.7")); + QCOMPARE(object->property("test22").toString(), QLatin1String("!")); + QCOMPARE(object->property("test23").toBool(), true); + + delete object; +} + +// Test that numbers assigned in bindings as strings work consistently +void tst_qdeclarativeecmascript::numberAssignment() +{ + QDeclarativeComponent component(&engine, TEST_FILE("numberAssignment.qml")); + + QObject *object = component.create(); + QVERIFY(object != 0); + + QVERIFY(object->property("test1") == QVariant((qreal)6.7)); + QVERIFY(object->property("test2") == QVariant((qreal)6.7)); + QVERIFY(object->property("test3") == QVariant((qreal)6)); + QVERIFY(object->property("test4") == QVariant((qreal)6)); + + QVERIFY(object->property("test5") == QVariant((int)7)); + QVERIFY(object->property("test6") == QVariant((int)7)); + QVERIFY(object->property("test7") == QVariant((int)6)); + QVERIFY(object->property("test8") == QVariant((int)6)); + + QVERIFY(object->property("test9") == QVariant((unsigned int)7)); + QVERIFY(object->property("test10") == QVariant((unsigned int)7)); + QVERIFY(object->property("test11") == QVariant((unsigned int)6)); + QVERIFY(object->property("test12") == QVariant((unsigned int)6)); + + delete object; +} + +// Test that assigning a null object works +// Regressed with: df1788b4dbbb2826ae63f26bdf166342595343f4 +void tst_qdeclarativeecmascript::nullObjectBinding() +{ + QDeclarativeComponent component(&engine, TEST_FILE("nullObjectBinding.qml")); + + QObject *object = component.create(); + QVERIFY(object != 0); + + QVERIFY(object->property("test") == QVariant::fromValue((QObject *)0)); + + delete object; +} + +// Test that bindings don't evaluate once the engine has been destroyed +void tst_qdeclarativeecmascript::deletedEngine() +{ + QDeclarativeEngine *engine = new QDeclarativeEngine; + QDeclarativeComponent component(engine, TEST_FILE("deletedEngine.qml")); + + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("a").toInt(), 39); + object->setProperty("b", QVariant(9)); + QCOMPARE(object->property("a").toInt(), 117); + + delete engine; + + QCOMPARE(object->property("a").toInt(), 117); + object->setProperty("b", QVariant(10)); + QCOMPARE(object->property("a").toInt(), 117); + + delete object; +} + +// Test the crashing part of QTBUG-9705 +void tst_qdeclarativeecmascript::libraryScriptAssert() +{ + QDeclarativeComponent component(&engine, TEST_FILE("libraryScriptAssert.qml")); + + QObject *object = component.create(); + QVERIFY(object != 0); + + delete object; +} + +void tst_qdeclarativeecmascript::variantsAssignedUndefined() +{ + QDeclarativeComponent component(&engine, TEST_FILE("variantsAssignedUndefined.qml")); + + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test1").toInt(), 10); + QCOMPARE(object->property("test2").toInt(), 11); + + object->setProperty("runTest", true); + + QCOMPARE(object->property("test1"), QVariant()); + QCOMPARE(object->property("test2"), QVariant()); + + + delete object; +} + +void tst_qdeclarativeecmascript::qtbug_9792() +{ + QDeclarativeComponent component(&engine, TEST_FILE("qtbug_9792.qml")); + + QDeclarativeContext *context = new QDeclarativeContext(engine.rootContext()); + + MyQmlObject *object = qobject_cast<MyQmlObject*>(component.create(context)); + QVERIFY(object != 0); + + QTest::ignoreMessage(QtDebugMsg, "Hello world!"); + object->basicSignal(); + + delete context; + + transientErrorsMsgCount = 0; + QtMsgHandler old = qInstallMsgHandler(transientErrorsMsgHandler); + + object->basicSignal(); + + qInstallMsgHandler(old); + + QCOMPARE(transientErrorsMsgCount, 0); + + delete object; +} + +// Test that we shut down without stupid warnings +void tst_qdeclarativeecmascript::noSpuriousWarningsAtShutdown() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("noSpuriousWarningsAtShutdown.qml")); + + QObject *o = component.create(); + + transientErrorsMsgCount = 0; + QtMsgHandler old = qInstallMsgHandler(transientErrorsMsgHandler); + + delete o; + + qInstallMsgHandler(old); + + QCOMPARE(transientErrorsMsgCount, 0); + } + + + { + QDeclarativeComponent component(&engine, TEST_FILE("noSpuriousWarningsAtShutdown.2.qml")); + + QObject *o = component.create(); + + transientErrorsMsgCount = 0; + QtMsgHandler old = qInstallMsgHandler(transientErrorsMsgHandler); + + delete o; + + qInstallMsgHandler(old); + + QCOMPARE(transientErrorsMsgCount, 0); + } +} + QTEST_MAIN(tst_qdeclarativeecmascript) #include "tst_qdeclarativeecmascript.moc" diff --git a/tests/auto/declarative/qdeclarativeengine/qdeclarativeengine.pro b/tests/auto/declarative/qdeclarativeengine/qdeclarativeengine.pro index 5b6530d..e0ea2e5 100644 --- a/tests/auto/declarative/qdeclarativeengine/qdeclarativeengine.pro +++ b/tests/auto/declarative/qdeclarativeengine/qdeclarativeengine.pro @@ -6,3 +6,6 @@ SOURCES += tst_qdeclarativeengine.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeengine/tst_qdeclarativeengine.cpp b/tests/auto/declarative/qdeclarativeengine/tst_qdeclarativeengine.cpp index 5dc5f19..5d8a52d 100644 --- a/tests/auto/declarative/qdeclarativeengine/tst_qdeclarativeengine.cpp +++ b/tests/auto/declarative/qdeclarativeengine/tst_qdeclarativeengine.cpp @@ -192,7 +192,7 @@ void tst_qdeclarativeengine::clearComponentCache() { QFile file("temp.qml"); QVERIFY(file.open(QIODevice::WriteOnly)); - file.write("import Qt 4.6\nQtObject {\nproperty int test: 10\n}\n"); + file.write("import Qt 4.7\nQtObject {\nproperty int test: 10\n}\n"); file.close(); } @@ -209,7 +209,7 @@ void tst_qdeclarativeengine::clearComponentCache() { QFile file("temp.qml"); QVERIFY(file.open(QIODevice::WriteOnly)); - file.write("import Qt 4.6\nQtObject {\nproperty int test: 11\n}\n"); + file.write("import Qt 4.7\nQtObject {\nproperty int test: 11\n}\n"); file.close(); } diff --git a/tests/auto/declarative/qdeclarativeerror/qdeclarativeerror.pro b/tests/auto/declarative/qdeclarativeerror/qdeclarativeerror.pro index 6591406..501f32c 100644 --- a/tests/auto/declarative/qdeclarativeerror/qdeclarativeerror.pro +++ b/tests/auto/declarative/qdeclarativeerror/qdeclarativeerror.pro @@ -4,3 +4,6 @@ SOURCES += tst_qdeclarativeerror.cpp macx:CONFIG -= app_bundle DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeflickable/qdeclarativeflickable.pro b/tests/auto/declarative/qdeclarativeflickable/qdeclarativeflickable.pro index 4b71381..07637c9 100644 --- a/tests/auto/declarative/qdeclarativeflickable/qdeclarativeflickable.pro +++ b/tests/auto/declarative/qdeclarativeflickable/qdeclarativeflickable.pro @@ -6,3 +6,6 @@ SOURCES += tst_qdeclarativeflickable.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp b/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp index cb87977..a345a60 100644 --- a/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp +++ b/tests/auto/declarative/qdeclarativeflickable/tst_qdeclarativeflickable.cpp @@ -147,7 +147,7 @@ void tst_qdeclarativeflickable::properties() void tst_qdeclarativeflickable::overShoot() { QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6; Flickable { overShoot: false; }", QUrl::fromLocalFile("")); + component.setData("import Qt 4.7; Flickable { overShoot: false; }", QUrl::fromLocalFile("")); QDeclarativeFlickable *flickable = qobject_cast<QDeclarativeFlickable*>(component.create()); QSignalSpy spy(flickable, SIGNAL(overShootChanged())); @@ -170,7 +170,7 @@ void tst_qdeclarativeflickable::overShoot() void tst_qdeclarativeflickable::maximumFlickVelocity() { QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6; Flickable { maximumFlickVelocity: 1.0; }", QUrl::fromLocalFile("")); + component.setData("import Qt 4.7; Flickable { maximumFlickVelocity: 1.0; }", QUrl::fromLocalFile("")); QDeclarativeFlickable *flickable = qobject_cast<QDeclarativeFlickable*>(component.create()); QSignalSpy spy(flickable, SIGNAL(maximumFlickVelocityChanged())); @@ -187,7 +187,7 @@ void tst_qdeclarativeflickable::maximumFlickVelocity() void tst_qdeclarativeflickable::flickDeceleration() { QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6; Flickable { flickDeceleration: 1.0; }", QUrl::fromLocalFile("")); + component.setData("import Qt 4.7; Flickable { flickDeceleration: 1.0; }", QUrl::fromLocalFile("")); QDeclarativeFlickable *flickable = qobject_cast<QDeclarativeFlickable*>(component.create()); QSignalSpy spy(flickable, SIGNAL(flickDecelerationChanged())); @@ -204,7 +204,7 @@ void tst_qdeclarativeflickable::flickDeceleration() void tst_qdeclarativeflickable::pressDelay() { QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6; Flickable { pressDelay: 100; }", QUrl::fromLocalFile("")); + component.setData("import Qt 4.7; Flickable { pressDelay: 100; }", QUrl::fromLocalFile("")); QDeclarativeFlickable *flickable = qobject_cast<QDeclarativeFlickable*>(component.create()); QSignalSpy spy(flickable, SIGNAL(pressDelayChanged())); diff --git a/tests/auto/declarative/qdeclarativeflipable/data/crash.qml b/tests/auto/declarative/qdeclarativeflipable/data/crash.qml new file mode 100644 index 0000000..ad40bf0 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeflipable/data/crash.qml @@ -0,0 +1,9 @@ +import Qt 4.6 + +Flipable { + transform: Rotation { + axis.y: 1 + axis.z: 0 + angle: 180 + } +} diff --git a/tests/auto/declarative/qdeclarativeflipable/data/flipable-abort.qml b/tests/auto/declarative/qdeclarativeflipable/data/flipable-abort.qml new file mode 100644 index 0000000..f6f2014 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeflipable/data/flipable-abort.qml @@ -0,0 +1,10 @@ +import Qt 4.6 + +Rectangle { + Flipable { + id: flipable + } + Rectangle { + visible: flipable.side == Flipable.Front + } +} diff --git a/tests/auto/declarative/qdeclarativeflipable/qdeclarativeflipable.pro b/tests/auto/declarative/qdeclarativeflipable/qdeclarativeflipable.pro index e29d324..9830b55 100644 --- a/tests/auto/declarative/qdeclarativeflipable/qdeclarativeflipable.pro +++ b/tests/auto/declarative/qdeclarativeflipable/qdeclarativeflipable.pro @@ -6,3 +6,6 @@ SOURCES += tst_qdeclarativeflipable.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeflipable/tst_qdeclarativeflipable.cpp b/tests/auto/declarative/qdeclarativeflipable/tst_qdeclarativeflipable.cpp index ed37c43..4155edb 100644 --- a/tests/auto/declarative/qdeclarativeflipable/tst_qdeclarativeflipable.cpp +++ b/tests/auto/declarative/qdeclarativeflipable/tst_qdeclarativeflipable.cpp @@ -41,6 +41,7 @@ #include <qtest.h> #include <QtDeclarative/qdeclarativeengine.h> #include <QtDeclarative/qdeclarativecomponent.h> +#include <QtDeclarative/qdeclarativeview.h> #include <private/qdeclarativeflipable_p.h> #include <private/qdeclarativevaluetype_p.h> #include <QFontMetrics> @@ -58,6 +59,10 @@ private slots: void checkFrontAndBack(); void setFrontAndBack(); + // below here task issues + void QTBUG_9161_crash(); + void QTBUG_8474_qgv_abort(); + private: QDeclarativeEngine engine; }; @@ -108,6 +113,26 @@ void tst_qdeclarativeflipable::setFrontAndBack() delete obj; } +void tst_qdeclarativeflipable::QTBUG_9161_crash() +{ + QDeclarativeView *canvas = new QDeclarativeView; + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/crash.qml")); + QGraphicsObject *root = canvas->rootObject(); + QVERIFY(root != 0); + canvas->show(); + delete canvas; +} + +void tst_qdeclarativeflipable::QTBUG_8474_qgv_abort() +{ + QDeclarativeView *canvas = new QDeclarativeView; + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/flipable-abort.qml")); + QGraphicsObject *root = canvas->rootObject(); + QVERIFY(root != 0); + canvas->show(); + delete canvas; +} + QTEST_MAIN(tst_qdeclarativeflipable) #include "tst_qdeclarativeflipable.moc" diff --git a/tests/auto/declarative/qdeclarativefocusscope/data/test.qml b/tests/auto/declarative/qdeclarativefocusscope/data/test.qml new file mode 100644 index 0000000..647e5bf --- /dev/null +++ b/tests/auto/declarative/qdeclarativefocusscope/data/test.qml @@ -0,0 +1,77 @@ +import Qt 4.6 + +Rectangle { + color: "white" + width: 800 + height: 600 + + Keys.onDigit9Pressed: console.log("Error - Root") + + FocusScope { + id: myScope + focus: true + + Keys.onDigit9Pressed: console.log("Error - FocusScope") + + Rectangle { + objectName: "item0" + height: 120 + width: 420 + + color: "transparent" + border.width: 5 + //border.color: myScope.wantsFocus?"blue":"black" + + Rectangle { + id: item1; objectName: "item1" + x: 10; y: 10 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: wantsFocus?"blue":"black" + Keys.onDigit9Pressed: console.debug("Top Left"); + KeyNavigation.right: item2 + focus: true + + Rectangle { + width: 50; height: 50; anchors.centerIn: parent + color: parent.focus?"red":"transparent" + } + } + + Rectangle { + id: item2; objectName: "item2" + x: 310; y: 10 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: wantsFocus?"blue":"black" + KeyNavigation.left: item1 + Keys.onDigit9Pressed: console.log("Top Right"); + + Rectangle { + width: 50; height: 50; anchors.centerIn: parent + color: parent.focus?"red":"transparent" + } + } + } + KeyNavigation.down: item3 + } + + Text { x:100; y:170; text: "Blue border indicates scoped focus\nBlack border indicates NOT scoped focus\nRed box indicates active focus\nUse arrow keys to navigate\nPress \"9\" to print currently focused item" } + + Rectangle { + id: item3; objectName: "item3" + x: 10; y: 300 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: wantsFocus?"blue":"black" + + Keys.onDigit9Pressed: console.log("Bottom Left"); + KeyNavigation.up: myScope + + Rectangle { + width: 50; height: 50; anchors.centerIn: parent + color: parent.focus?"red":"transparent" + } + } + +} diff --git a/tests/auto/declarative/qdeclarativefocusscope/data/test2.qml b/tests/auto/declarative/qdeclarativefocusscope/data/test2.qml new file mode 100644 index 0000000..277fda4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativefocusscope/data/test2.qml @@ -0,0 +1,39 @@ +import Qt 4.6 + +Rectangle { + color: "white" + width: 800 + height: 600 + + Text { text: "All five rectangles should be red" } + + FocusScope { + y: 100 + focus: true; objectName: "item1" + Rectangle { width: 50; height: 50; color: parent.wantsFocus?"red":"blue" } + + FocusScope { + y: 100 + focus: true; objectName: "item2" + Rectangle { width: 50; height: 50; color: parent.wantsFocus?"red":"blue" } + + FocusScope { + y: 100 + focus: true; objectName: "item3" + Rectangle { width: 50; height: 50; color: parent.wantsFocus?"red":"blue" } + + FocusScope { + y: 100 + focus: true; objectName: "item4" + Rectangle { width: 50; height: 50; color: parent.wantsFocus?"red":"blue" } + + FocusScope { + y: 100 + focus: true; objectName: "item5" + Rectangle { width: 50; height: 50; color: parent.wantsFocus?"red":"blue" } + } + } + } + } + } +} diff --git a/tests/auto/declarative/qdeclarativefocusscope/data/test3.qml b/tests/auto/declarative/qdeclarativefocusscope/data/test3.qml new file mode 100644 index 0000000..9344d07 --- /dev/null +++ b/tests/auto/declarative/qdeclarativefocusscope/data/test3.qml @@ -0,0 +1,52 @@ +import Qt 4.6 + +Rectangle { + color: "white" + width: 800 + height: 600 + + ListModel { + id: model + ListElement { name: "1" } + ListElement { name: "2" } + ListElement { name: "3" } + ListElement { name: "4" } + ListElement { name: "5" } + ListElement { name: "6" } + ListElement { name: "6" } + ListElement { name: "8" } + ListElement { name: "9" } + } + + Component { + id: verticalDelegate + FocusScope { + id: root + width: 50; height: 50; + Keys.onDigit9Pressed: console.log("Error - " + name) + Rectangle { + focus: true + Keys.onDigit9Pressed: console.log(name) + width: 50; height: 50; + color: root.ListView.isCurrentItem?"red":"green" + Text { text: name; anchors.centerIn: parent } + } + } + } + + ListView { + width: 800; height: 50; orientation: "Horizontal" + focus: true + model: model + delegate: verticalDelegate + preferredHighlightBegin: 100 + preferredHighlightEnd: 100 + highlightRangeMode: "StrictlyEnforceRange" + } + + + Text { + y: 100; x: 50 + text: "Currently selected element should be red\nPressing \"9\" should print the number of the currently selected item\nBe sure to scroll all the way to the right, pause, and then all the way to the left." + } +} diff --git a/tests/auto/declarative/qdeclarativefocusscope/data/test4.qml b/tests/auto/declarative/qdeclarativefocusscope/data/test4.qml new file mode 100644 index 0000000..d8bd390 --- /dev/null +++ b/tests/auto/declarative/qdeclarativefocusscope/data/test4.qml @@ -0,0 +1,76 @@ +import Qt 4.6 + +Rectangle { + color: "white" + width: 800 + height: 600 + + Keys.onDigit9Pressed: console.log("Error - Root") + + FocusScope { + id: myScope + + Keys.onDigit9Pressed: console.log("Error - FocusScope") + + Rectangle { + objectName: "item0" + height: 120 + width: 420 + + color: "transparent" + border.width: 5 + //border.color: myScope.wantsFocus?"blue":"black" + + Rectangle { + id: item1; objectName: "item1" + x: 10; y: 10 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: wantsFocus?"blue":"black" + Keys.onDigit9Pressed: console.log("Error - Top Left"); + KeyNavigation.right: item2 + focus: true + + Rectangle { + width: 50; height: 50; anchors.centerIn: parent + color: parent.focus?"red":"transparent" + } + } + + Rectangle { + id: item2; objectName: "item2" + x: 310; y: 10 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: wantsFocus?"blue":"black" + KeyNavigation.left: item1 + Keys.onDigit9Pressed: console.log("Error - Top Right"); + + Rectangle { + width: 50; height: 50; anchors.centerIn: parent + color: parent.focus?"red":"transparent" + } + } + } + KeyNavigation.down: item3 + } + + Text { x:100; y:170; text: "There should be no blue borders, or red squares.\nPressing \"9\" should do nothing.\nArrow keys should have no effect." } + + Rectangle { + id: item3; objectName: "item3" + x: 10; y: 300 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: wantsFocus?"blue":"black" + + Keys.onDigit9Pressed: console.log("Error - Bottom Left"); + KeyNavigation.up: myScope + + Rectangle { + width: 50; height: 50; anchors.centerIn: parent + color: parent.focus?"red":"transparent" + } + } + +} diff --git a/tests/auto/declarative/qdeclarativefocusscope/data/test5.qml b/tests/auto/declarative/qdeclarativefocusscope/data/test5.qml new file mode 100644 index 0000000..da452cf --- /dev/null +++ b/tests/auto/declarative/qdeclarativefocusscope/data/test5.qml @@ -0,0 +1,84 @@ +import Qt 4.6 + +Rectangle { + color: "white" + width: 800 + height: 600 + + Keys.onReturnPressed: console.log("Error - Root") + + FocusScope { + id: myScope + focus: true + + Keys.onReturnPressed: console.log("Error - FocusScope") + + Rectangle { + objectName: "item0" + height: 120 + width: 420 + + color: "transparent" + border.width: 5 + //border.color: myScope.wantsFocus?"blue":"black" + + Rectangle { + x: 10; y: 10 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: item1.wantsFocus?"blue":"black" + } + + TextEdit { + id: item1; objectName: "item1" + x: 20; y: 20 + width: 90; height: 90 + color: "white" + font.pixelSize: 20 + Keys.onReturnPressed: console.log("Top Left"); + KeyNavigation.right: item2 + focus: true + wrapMode: TextEdit.WordWrap + text: "Box 1" + } + + Rectangle { + id: item2; objectName: "item2" + x: 310; y: 10 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: wantsFocus?"blue":"black" + KeyNavigation.left: item1 + Keys.onReturnPressed: console.log("Top Right"); + + Rectangle { + width: 50; height: 50; anchors.centerIn: parent + color: parent.focus?"red":"transparent" + } + } + } + KeyNavigation.down: item3 + } + + Text { x:100; y:170; text: "Blue border indicates scoped focus\nBlack border indicates NOT scoped focus\nRed box or flashing cursor indicates active focus\nUse arrow keys to navigate\nPress Ctrl-Return to print currently focused item" } + + Rectangle { + x: 10; y: 300 + width: 100; height: 100; color: "green" + border.width: 5 + border.color: item3.wantsFocus?"blue":"black" + } + + TextEdit { + id: item3; objectName: "item3" + x: 20; y: 310 + width: 90; height: 90 + color: "white" + font.pixelSize: 20 + text: "Box 3" + + Keys.onReturnPressed: console.log("Bottom Left"); + KeyNavigation.up: myScope + wrapMode: TextEdit.WordWrap + } +} diff --git a/tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro b/tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro new file mode 100644 index 0000000..687c80c --- /dev/null +++ b/tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro @@ -0,0 +1,7 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative +SOURCES += tst_qdeclarativefocusscope.cpp +macx:CONFIG -= app_bundle + +DEFINES += SRCDIR=\\\"$$PWD\\\" + diff --git a/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp b/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp new file mode 100644 index 0000000..1bd8331 --- /dev/null +++ b/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp @@ -0,0 +1,278 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <qtest.h> +#include <QSignalSpy> +#include <QtDeclarative/qdeclarativeengine.h> +#include <QtDeclarative/qdeclarativecomponent.h> +#include <QtDeclarative/qdeclarativeview.h> +#include <private/qdeclarativerectangle_p.h> +#include <private/qdeclarativetextedit_p.h> +#include <private/qdeclarativetext_p.h> +#include <QtDeclarative/private/qdeclarativefocusscope_p.h> + + +class tst_qdeclarativefocusscope : public QObject +{ + Q_OBJECT +public: + tst_qdeclarativefocusscope() {} + + template<typename T> + T *findItem(QGraphicsObject *parent, const QString &id); + +private slots: + void basic(); + void nested(); + void noFocus(); + void textEdit(); +}; + +/* + Find an item with the specified id. +*/ +template<typename T> +T *tst_qdeclarativefocusscope::findItem(QGraphicsObject *parent, const QString &objectName) +{ + const QMetaObject &mo = T::staticMetaObject; + QList<QGraphicsItem *> children = parent->childItems(); + for (int i = 0; i < children.count(); ++i) { + QDeclarativeItem *item = qobject_cast<QDeclarativeItem *>(children.at(i)->toGraphicsObject()); + if (item) { + if (mo.cast(item) && (objectName.isEmpty() || item->objectName() == objectName)) { + return static_cast<T*>(item); + } + item = findItem<T>(item, objectName); + if (item) + return static_cast<T*>(item); + } + } + return 0; +} + +void tst_qdeclarativefocusscope::basic() +{ + QDeclarativeView *view = new QDeclarativeView; + view->setSource(QUrl::fromLocalFile(SRCDIR "/data/test.qml")); + + QDeclarativeRectangle *item0 = findItem<QDeclarativeRectangle>(view->rootObject(), QLatin1String("item0")); + QDeclarativeRectangle *item1 = findItem<QDeclarativeRectangle>(view->rootObject(), QLatin1String("item1")); + QDeclarativeRectangle *item2 = findItem<QDeclarativeRectangle>(view->rootObject(), QLatin1String("item2")); + QDeclarativeRectangle *item3 = findItem<QDeclarativeRectangle>(view->rootObject(), QLatin1String("item3")); + QVERIFY(item0 != 0); + QVERIFY(item1 != 0); + QVERIFY(item2 != 0); + QVERIFY(item3 != 0); + + view->show(); + qApp->setActiveWindow(view); + qApp->processEvents(); + +#ifdef Q_WS_X11 + // to be safe and avoid failing setFocus with window managers + qt_x11_wait_for_window_manager(view); +#endif + + QVERIFY(view->hasFocus()); + QVERIFY(view->scene()->hasFocus()); + QVERIFY(item0->wantsFocus() == true); + QVERIFY(item1->hasFocus() == true); + QVERIFY(item2->hasFocus() == false); + QVERIFY(item3->hasFocus() == false); + + QTest::keyClick(view, Qt::Key_Right); + QVERIFY(item0->wantsFocus() == true); + QVERIFY(item1->hasFocus() == false); + QVERIFY(item2->hasFocus() == true); + QVERIFY(item3->hasFocus() == false); + + QTest::keyClick(view, Qt::Key_Down); + QVERIFY(item0->wantsFocus() == false); + QVERIFY(item1->hasFocus() == false); + QVERIFY(item2->hasFocus() == false); + QVERIFY(item3->hasFocus() == true); + + delete view; +} + +void tst_qdeclarativefocusscope::nested() +{ + QDeclarativeView *view = new QDeclarativeView; + view->setSource(QUrl::fromLocalFile(SRCDIR "/data/test2.qml")); + + QDeclarativeFocusScope *item1 = findItem<QDeclarativeFocusScope>(view->rootObject(), QLatin1String("item1")); + QDeclarativeFocusScope *item2 = findItem<QDeclarativeFocusScope>(view->rootObject(), QLatin1String("item2")); + QDeclarativeFocusScope *item3 = findItem<QDeclarativeFocusScope>(view->rootObject(), QLatin1String("item3")); + QDeclarativeFocusScope *item4 = findItem<QDeclarativeFocusScope>(view->rootObject(), QLatin1String("item4")); + QDeclarativeFocusScope *item5 = findItem<QDeclarativeFocusScope>(view->rootObject(), QLatin1String("item5")); + QVERIFY(item1 != 0); + QVERIFY(item2 != 0); + QVERIFY(item3 != 0); + QVERIFY(item4 != 0); + QVERIFY(item5 != 0); + + view->show(); + qApp->setActiveWindow(view); + qApp->processEvents(); + +#ifdef Q_WS_X11 + // to be safe and avoid failing setFocus with window managers + qt_x11_wait_for_window_manager(view); +#endif + + QVERIFY(view->hasFocus()); + QVERIFY(view->scene()->hasFocus()); + + QVERIFY(item1->wantsFocus() == true); + QVERIFY(item1->hasFocus() == false); + QVERIFY(item2->wantsFocus() == true); + QVERIFY(item2->hasFocus() == false); + QVERIFY(item3->wantsFocus() == true); + QVERIFY(item3->hasFocus() == false); + QVERIFY(item4->wantsFocus() == true); + QVERIFY(item4->hasFocus() == false); + QVERIFY(item5->wantsFocus() == true); + QVERIFY(item5->hasFocus() == true); + delete view; +} + +void tst_qdeclarativefocusscope::noFocus() +{ + QDeclarativeView *view = new QDeclarativeView; + view->setSource(QUrl::fromLocalFile(SRCDIR "/data/test4.qml")); + + QDeclarativeRectangle *item0 = findItem<QDeclarativeRectangle>(view->rootObject(), QLatin1String("item0")); + QDeclarativeRectangle *item1 = findItem<QDeclarativeRectangle>(view->rootObject(), QLatin1String("item1")); + QDeclarativeRectangle *item2 = findItem<QDeclarativeRectangle>(view->rootObject(), QLatin1String("item2")); + QDeclarativeRectangle *item3 = findItem<QDeclarativeRectangle>(view->rootObject(), QLatin1String("item3")); + QVERIFY(item0 != 0); + QVERIFY(item1 != 0); + QVERIFY(item2 != 0); + QVERIFY(item3 != 0); + + view->show(); + qApp->setActiveWindow(view); + qApp->processEvents(); + +#ifdef Q_WS_X11 + // to be safe and avoid failing setFocus with window managers + qt_x11_wait_for_window_manager(view); +#endif + + QVERIFY(view->hasFocus()); + QVERIFY(view->scene()->hasFocus()); + QVERIFY(item0->wantsFocus() == false); + QVERIFY(item1->hasFocus() == false); + QVERIFY(item2->hasFocus() == false); + QVERIFY(item3->hasFocus() == false); + + QTest::keyClick(view, Qt::Key_Right); + QVERIFY(item0->wantsFocus() == false); + QVERIFY(item1->hasFocus() == false); + QVERIFY(item2->hasFocus() == false); + QVERIFY(item3->hasFocus() == false); + + QTest::keyClick(view, Qt::Key_Down); + QVERIFY(item0->wantsFocus() == false); + QVERIFY(item1->hasFocus() == false); + QVERIFY(item2->hasFocus() == false); + QVERIFY(item3->hasFocus() == false); + + delete view; +} + +void tst_qdeclarativefocusscope::textEdit() +{ + QDeclarativeView *view = new QDeclarativeView; + view->setSource(QUrl::fromLocalFile(SRCDIR "/data/test5.qml")); + + QDeclarativeRectangle *item0 = findItem<QDeclarativeRectangle>(view->rootObject(), QLatin1String("item0")); + QDeclarativeTextEdit *item1 = findItem<QDeclarativeTextEdit>(view->rootObject(), QLatin1String("item1")); + QDeclarativeRectangle *item2 = findItem<QDeclarativeRectangle>(view->rootObject(), QLatin1String("item2")); + QDeclarativeTextEdit *item3 = findItem<QDeclarativeTextEdit>(view->rootObject(), QLatin1String("item3")); + QVERIFY(item0 != 0); + QVERIFY(item1 != 0); + QVERIFY(item2 != 0); + QVERIFY(item3 != 0); + + view->show(); + qApp->setActiveWindow(view); + qApp->processEvents(); + +#ifdef Q_WS_X11 + // to be safe and avoid failing setFocus with window managers + qt_x11_wait_for_window_manager(view); +#endif + + QVERIFY(view->hasFocus()); + QVERIFY(view->scene()->hasFocus()); + QVERIFY(item0->wantsFocus() == true); + QVERIFY(item1->hasFocus() == true); + QVERIFY(item2->hasFocus() == false); + QVERIFY(item3->hasFocus() == false); + + QTest::keyClick(view, Qt::Key_Right); + QVERIFY(item0->wantsFocus() == true); + QVERIFY(item1->hasFocus() == true); + QVERIFY(item2->hasFocus() == false); + QVERIFY(item3->hasFocus() == false); + + QTest::keyClick(view, Qt::Key_Right); + QTest::keyClick(view, Qt::Key_Right); + QTest::keyClick(view, Qt::Key_Right); + QTest::keyClick(view, Qt::Key_Right); + QTest::keyClick(view, Qt::Key_Right); + QVERIFY(item0->wantsFocus() == true); + QVERIFY(item1->hasFocus() == false); + QVERIFY(item2->hasFocus() == true); + QVERIFY(item3->hasFocus() == false); + + QTest::keyClick(view, Qt::Key_Down); + QVERIFY(item0->wantsFocus() == false); + QVERIFY(item1->hasFocus() == false); + QVERIFY(item2->hasFocus() == false); + QVERIFY(item3->hasFocus() == true); + + delete view; +} + +QTEST_MAIN(tst_qdeclarativefocusscope) + +#include "tst_qdeclarativefocusscope.moc" diff --git a/tests/auto/declarative/qdeclarativefontloader/qdeclarativefontloader.pro b/tests/auto/declarative/qdeclarativefontloader/qdeclarativefontloader.pro index 0c736b4..9a8a3ff 100644 --- a/tests/auto/declarative/qdeclarativefontloader/qdeclarativefontloader.pro +++ b/tests/auto/declarative/qdeclarativefontloader/qdeclarativefontloader.pro @@ -1,8 +1,12 @@ load(qttest_p4) -contains(QT_CONFIG,declarative): QT += declarative gui +contains(QT_CONFIG,declarative): QT += declarative gui network macx:CONFIG -= app_bundle -SOURCES += tst_qdeclarativefontloader.cpp +HEADERS += ../shared/testhttpserver.h +SOURCES += tst_qdeclarativefontloader.cpp ../shared/testhttpserver.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativefontloader/tst_qdeclarativefontloader.cpp b/tests/auto/declarative/qdeclarativefontloader/tst_qdeclarativefontloader.cpp index a9762df..5cdc96c 100644 --- a/tests/auto/declarative/qdeclarativefontloader/tst_qdeclarativefontloader.cpp +++ b/tests/auto/declarative/qdeclarativefontloader/tst_qdeclarativefontloader.cpp @@ -43,6 +43,9 @@ #include <QtDeclarative/qdeclarativecomponent.h> #include <private/qdeclarativefontloader_p.h> #include "../../../shared/util.h" +#include "../shared/testhttpserver.h" + +#define SERVER_PORT 14448 class tst_qdeclarativefontloader : public QObject @@ -57,21 +60,26 @@ private slots: void localFont(); void failLocalFont(); void webFont(); + void redirWebFont(); void failWebFont(); private slots: private: QDeclarativeEngine engine; + TestHTTPServer server; }; -tst_qdeclarativefontloader::tst_qdeclarativefontloader() +tst_qdeclarativefontloader::tst_qdeclarativefontloader() : + server(SERVER_PORT) { + server.serveDirectory(SRCDIR "/data"); + Q_ASSERT(server.isValid()); } void tst_qdeclarativefontloader::noFont() { - QString componentStr = "import Qt 4.6\nFontLoader { }"; + QString componentStr = "import Qt 4.7\nFontLoader { }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeFontLoader *fontObject = qobject_cast<QDeclarativeFontLoader*>(component.create()); @@ -86,7 +94,7 @@ void tst_qdeclarativefontloader::noFont() void tst_qdeclarativefontloader::namedFont() { - QString componentStr = "import Qt 4.6\nFontLoader { name: \"Helvetica\" }"; + QString componentStr = "import Qt 4.7\nFontLoader { name: \"Helvetica\" }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeFontLoader *fontObject = qobject_cast<QDeclarativeFontLoader*>(component.create()); @@ -99,7 +107,7 @@ void tst_qdeclarativefontloader::namedFont() void tst_qdeclarativefontloader::localFont() { - QString componentStr = "import Qt 4.6\nFontLoader { source: \"" SRCDIR "/data/tarzeau_ocr_a.ttf\" }"; + QString componentStr = "import Qt 4.7\nFontLoader { source: \"" SRCDIR "/data/tarzeau_ocr_a.ttf\" }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeFontLoader *fontObject = qobject_cast<QDeclarativeFontLoader*>(component.create()); @@ -112,7 +120,7 @@ void tst_qdeclarativefontloader::localFont() void tst_qdeclarativefontloader::failLocalFont() { - QString componentStr = "import Qt 4.6\nFontLoader { source: \"" + QUrl::fromLocalFile(SRCDIR "/data/dummy.ttf").toString() + "\" }"; + QString componentStr = "import Qt 4.7\nFontLoader { source: \"" + QUrl::fromLocalFile(SRCDIR "/data/dummy.ttf").toString() + "\" }"; QTest::ignoreMessage(QtWarningMsg, QString("Cannot load font: QUrl( \"" + QUrl::fromLocalFile(SRCDIR "/data/dummy.ttf").toString() + "\" ) ").toUtf8().constData()); QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); @@ -126,21 +134,38 @@ void tst_qdeclarativefontloader::failLocalFont() void tst_qdeclarativefontloader::webFont() { - QString componentStr = "import Qt 4.6\nFontLoader { source: \"http://www.princexml.com/fonts/steffmann/Starburst.ttf\" }"; + QString componentStr = "import Qt 4.7\nFontLoader { source: \"http://localhost:14448/tarzeau_ocr_a.ttf\" }"; + QDeclarativeComponent component(&engine); + + component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); + QDeclarativeFontLoader *fontObject = qobject_cast<QDeclarativeFontLoader*>(component.create()); + + QVERIFY(fontObject != 0); + QVERIFY(fontObject->source() != QUrl("")); + QTRY_COMPARE(fontObject->name(), QString("OCRA")); + QTRY_VERIFY(fontObject->status() == QDeclarativeFontLoader::Ready); +} + +void tst_qdeclarativefontloader::redirWebFont() +{ + server.addRedirect("olddir/oldname.ttf","../tarzeau_ocr_a.ttf"); + + QString componentStr = "import Qt 4.7\nFontLoader { source: \"http://localhost:14448/olddir/oldname.ttf\" }"; QDeclarativeComponent component(&engine); + component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeFontLoader *fontObject = qobject_cast<QDeclarativeFontLoader*>(component.create()); QVERIFY(fontObject != 0); QVERIFY(fontObject->source() != QUrl("")); - QTRY_COMPARE(fontObject->name(), QString("Starburst")); + QTRY_COMPARE(fontObject->name(), QString("OCRA")); QTRY_VERIFY(fontObject->status() == QDeclarativeFontLoader::Ready); } void tst_qdeclarativefontloader::failWebFont() { - QString componentStr = "import Qt 4.6\nFontLoader { source: \"http://wrong.address.com/Starburst.ttf\" }"; - QTest::ignoreMessage(QtWarningMsg, "Cannot load font: QUrl( \"http://wrong.address.com/Starburst.ttf\" ) "); + QString componentStr = "import Qt 4.7\nFontLoader { source: \"http://localhost:14448/nonexist.ttf\" }"; + QTest::ignoreMessage(QtWarningMsg, "Cannot load font: QUrl( \"http://localhost:14448/nonexist.ttf\" ) "); QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeFontLoader *fontObject = qobject_cast<QDeclarativeFontLoader*>(component.create()); diff --git a/tests/auto/declarative/qdeclarativegridview/data/gridview-enforcerange.qml b/tests/auto/declarative/qdeclarativegridview/data/gridview-enforcerange.qml new file mode 100644 index 0000000..e45c4c3 --- /dev/null +++ b/tests/auto/declarative/qdeclarativegridview/data/gridview-enforcerange.qml @@ -0,0 +1,56 @@ +import Qt 4.6 + +Rectangle { + width: 240 + height: 320 + color: "#ffffff" + Component { + id: myDelegate + Item { + id: wrapper + objectName: "wrapper" + height: 100 + width: 100 + Text { + text: index + } + Text { + y: 25 + id: textName + objectName: "textName" + text: name + } + Text { + y: 50 + id: textNumber + objectName: "textNumber" + text: number + } + Text { + y: 75 + text: wrapper.y + } + } + } + + Component { + id: myHighlight + Rectangle { + color: "lightsteelblue" + } + } + + GridView { + id: grid + objectName: "grid" + width: 240 + height: 320 + model: testModel + delegate: myDelegate + highlight: myHighlight + preferredHighlightBegin: 100 + preferredHighlightEnd: 100 + highlightRangeMode: "StrictlyEnforceRange" + focus: true + } +} diff --git a/tests/auto/declarative/qdeclarativegridview/data/gridview-initCurrent.qml b/tests/auto/declarative/qdeclarativegridview/data/gridview-initCurrent.qml index 32833d2..cc3e549 100644 --- a/tests/auto/declarative/qdeclarativegridview/data/gridview-initCurrent.qml +++ b/tests/auto/declarative/qdeclarativegridview/data/gridview-initCurrent.qml @@ -1,6 +1,7 @@ import Qt 4.6 Rectangle { + property int current: grid.currentIndex width: 240 height: 320 color: "#ffffff" diff --git a/tests/auto/declarative/qdeclarativegridview/data/gridview.qml b/tests/auto/declarative/qdeclarativegridview/data/gridview.qml deleted file mode 100644 index 344b4b5..0000000 --- a/tests/auto/declarative/qdeclarativegridview/data/gridview.qml +++ /dev/null @@ -1,50 +0,0 @@ -import Qt 4.6 - -Rectangle { - width: 240 - height: 320 - color: "#ffffff" - resources: [ - Component { - id: myDelegate - Rectangle { - id: wrapper - objectName: "wrapper" - width: 80 - height: 60 - border.color: "blue" - Text { - text: index - } - Text { - x: 40 - text: wrapper.x + ", " + wrapper.y - } - Text { - y: 20 - id: textName - objectName: "textName" - text: name - } - Text { - y: 40 - id: textNumber - objectName: "textNumber" - text: number - } - color: GridView.isCurrentItem ? "lightsteelblue" : "white" - } - } - ] - GridView { - id: grid - objectName: "grid" - width: 240 - height: 320 - cellWidth: 80 - cellHeight: 60 - flow: (testTopToBottom == false) ? "LeftToRight" : "TopToBottom" - model: testModel - delegate: myDelegate - } -} diff --git a/tests/auto/declarative/qdeclarativegridview/data/gridview1.qml b/tests/auto/declarative/qdeclarativegridview/data/gridview1.qml new file mode 100644 index 0000000..a061ae2 --- /dev/null +++ b/tests/auto/declarative/qdeclarativegridview/data/gridview1.qml @@ -0,0 +1,56 @@ +import Qt 4.6 + +Rectangle { + id: root + property int added: -1 + property variant removed + + width: 240 + height: 320 + color: "#ffffff" + resources: [ + Component { + id: myDelegate + Rectangle { + id: wrapper + objectName: "wrapper" + width: 80 + height: 60 + border.color: "blue" + Text { + text: index + } + Text { + x: 40 + text: wrapper.x + ", " + wrapper.y + } + Text { + y: 20 + id: textName + objectName: "textName" + text: name + } + Text { + y: 40 + id: textNumber + objectName: "textNumber" + text: number + } + color: GridView.isCurrentItem ? "lightsteelblue" : "white" + GridView.onAdd: root.added = index + GridView.onRemove: root.removed = name + } + } + ] + GridView { + id: grid + objectName: "grid" + width: 240 + height: 320 + cellWidth: 80 + cellHeight: 60 + flow: (testTopToBottom == false) ? "LeftToRight" : "TopToBottom" + model: testModel + delegate: myDelegate + } +} diff --git a/tests/auto/declarative/qdeclarativegridview/data/propertychangestest.qml b/tests/auto/declarative/qdeclarativegridview/data/propertychangestest.qml new file mode 100644 index 0000000..5ce758d --- /dev/null +++ b/tests/auto/declarative/qdeclarativegridview/data/propertychangestest.qml @@ -0,0 +1,69 @@ +import Qt 4.6 + +Rectangle { + width: 360; height: 120; color: "white" + Component { + id: delegate + Item { + id: wrapper + width: 180; height: 40; + Column { + x: 5; y: 5 + Text { text: '<b>Name:</b> ' + name } + Text { text: '<b>Number:</b> ' + number } + } + } + } + Component { + id: highlightRed + Rectangle { + color: "red" + radius: 10 + opacity: 0.5 + } + } + GridView { + cellWidth:180 + cellHeight:40 + objectName: "gridView" + anchors.fill: parent + model: listModel + delegate: delegate + highlight: highlightRed + focus: true + keyNavigationWraps: true + cacheBuffer: 10 + flow: GridView.LeftToRight + } + + data:[ + ListModel { + id: listModel + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + }, + ListModel { + objectName: "alternateModel" + ListElement { + name: "Jack" + number: "555 8426" + } + ListElement { + name: "Mary" + number: "555 3264" + } + } + ] +} + + diff --git a/tests/auto/declarative/qdeclarativegridview/data/setindex.qml b/tests/auto/declarative/qdeclarativegridview/data/setindex.qml index 908b365..b272d58 100644 --- a/tests/auto/declarative/qdeclarativegridview/data/setindex.qml +++ b/tests/auto/declarative/qdeclarativegridview/data/setindex.qml @@ -8,13 +8,9 @@ Rectangle { Item { id : wrapper - Script { - function startupFunction() - { - if (index == 5) view.currentIndex = index; - - } - } + function startupFunction() { + if (index == 5) view.currentIndex = index; + } Component.onCompleted: startupFunction(); width: 30; height: 30 Text { text: index } diff --git a/tests/auto/declarative/qdeclarativegridview/qdeclarativegridview.pro b/tests/auto/declarative/qdeclarativegridview/qdeclarativegridview.pro index af206d7..b069260 100644 --- a/tests/auto/declarative/qdeclarativegridview/qdeclarativegridview.pro +++ b/tests/auto/declarative/qdeclarativegridview/qdeclarativegridview.pro @@ -6,3 +6,6 @@ SOURCES += tst_qdeclarativegridview.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp index 2a60fee..89be151 100644 --- a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp +++ b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp @@ -39,16 +39,18 @@ ** ****************************************************************************/ -#include <qdeclarativeengine.h> -#include <qdeclarativecomponent.h> -#include <QStringListModel> #include <QtTest/QtTest> -#include <private/qlistmodelinterface_p.h> -#include <qdeclarativeview.h> -#include <private/qdeclarativegridview_p.h> -#include <private/qdeclarativetext_p.h> -#include <qdeclarativecontext.h> -#include <qdeclarativeexpression.h> +#include <QtGui/qstringlistmodel.h> +#include <QtDeclarative/qdeclarativeview.h> +#include <QtDeclarative/qdeclarativeengine.h> +#include <QtDeclarative/qdeclarativecomponent.h> +#include <QtDeclarative/qdeclarativecontext.h> +#include <QtDeclarative/qdeclarativeexpression.h> +#include <QtDeclarative/private/qlistmodelinterface_p.h> +#include <QtDeclarative/private/qdeclarativegridview_p.h> +#include <QtDeclarative/private/qdeclarativetext_p.h> +#include <QtDeclarative/private/qdeclarativelistmodel_p.h> +#include "../../../shared/util.h" class tst_QDeclarativeGridView : public QObject { @@ -66,8 +68,12 @@ private slots: void currentIndex(); void defaultValues(); void properties(); + void propertyChanges(); + void componentChanges(); + void modelChanges(); void positionViewAtIndex(); void resetModel(); + void enforceRange(); void QTBUG_8456(); private: @@ -91,7 +97,7 @@ public: setRoleNames(roles); } - int rowCount(const QModelIndex &parent=QModelIndex()) const { return list.count(); } + int rowCount(const QModelIndex &parent=QModelIndex()) const { Q_UNUSED(parent); return list.count(); } QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const { QVariant rv; if (role == Name) @@ -160,25 +166,25 @@ void tst_QDeclarativeGridView::items() ctxt->setContextProperty("testModel", &model); ctxt->setContextProperty("testTopToBottom", QVariant(false)); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview1.qml")); qApp->processEvents(); QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); - QVERIFY(gridview != 0); + QTRY_VERIFY(gridview != 0); QDeclarativeItem *viewport = gridview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); - QCOMPARE(gridview->count(), model.count()); - QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item + QTRY_COMPARE(gridview->count(), model.count()); + QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item for (int i = 0; i < model.count(); ++i) { QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", i); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(i)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(i)); QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", i); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(i)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(i)); } // set an empty model and confirm that items are destroyed @@ -186,7 +192,7 @@ void tst_QDeclarativeGridView::items() ctxt->setContextProperty("testModel", &model2); int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); - QVERIFY(itemCount == 0); + QTRY_VERIFY(itemCount == 0); delete canvas; } @@ -208,22 +214,22 @@ void tst_QDeclarativeGridView::changed() ctxt->setContextProperty("testModel", &model); ctxt->setContextProperty("testTopToBottom", QVariant(false)); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview1.qml")); qApp->processEvents(); QDeclarativeFlickable *gridview = findItem<QDeclarativeFlickable>(canvas->rootObject(), "grid"); - QVERIFY(gridview != 0); + QTRY_VERIFY(gridview != 0); QDeclarativeItem *viewport = gridview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); model.modifyItem(1, "Will", "9876"); QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 1); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(1)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(1)); QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 1); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(1)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(1)); delete canvas; } @@ -241,71 +247,66 @@ void tst_QDeclarativeGridView::inserted() ctxt->setContextProperty("testModel", &model); ctxt->setContextProperty("testTopToBottom", QVariant(false)); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview1.qml")); qApp->processEvents(); QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); - QVERIFY(gridview != 0); + QTRY_VERIFY(gridview != 0); QDeclarativeItem *viewport = gridview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); model.insertItem(1, "Will", "9876"); - // let transitions settle. - QTest::qWait(300); - - QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item + QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 1); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(1)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(1)); QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 1); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(1)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(1)); + + // Checks that onAdd is called + int added = canvas->rootObject()->property("added").toInt(); + QTRY_COMPARE(added, 1); // Confirm items positioned correctly for (int i = 0; i < model.count(); ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); - QCOMPARE(item->x(), (i%3)*80.0); - QCOMPARE(item->y(), (i/3)*60.0); + QTRY_COMPARE(item->x(), (i%3)*80.0); + QTRY_COMPARE(item->y(), (i/3)*60.0); } model.insertItem(0, "Foo", "1111"); // zero index, and current item - // let transitions settle. - QTest::qWait(300); - - QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item + QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item name = findItem<QDeclarativeText>(viewport, "textName", 0); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(0)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(0)); number = findItem<QDeclarativeText>(viewport, "textNumber", 0); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(0)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(0)); - QCOMPARE(gridview->currentIndex(), 1); + QTRY_COMPARE(gridview->currentIndex(), 1); // Confirm items positioned correctly for (int i = 0; i < model.count(); ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); - QVERIFY(item->x() == (i%3)*80); - QVERIFY(item->y() == (i/3)*60); + QTRY_VERIFY(item->x() == (i%3)*80); + QTRY_VERIFY(item->y() == (i/3)*60); } for (int i = model.count(); i < 30; ++i) model.insertItem(i, "Hello", QString::number(i)); - QTest::qWait(300); gridview->setContentY(120); - QTest::qWait(300); // Insert item outside visible area model.insertItem(1, "Hello", "1324"); - QTest::qWait(300); - QVERIFY(gridview->contentY() == 120); + QTRY_VERIFY(gridview->contentY() == 120); delete canvas; } @@ -322,150 +323,133 @@ void tst_QDeclarativeGridView::removed() ctxt->setContextProperty("testModel", &model); ctxt->setContextProperty("testTopToBottom", QVariant(false)); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview1.qml")); qApp->processEvents(); QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); - QVERIFY(gridview != 0); + QTRY_VERIFY(gridview != 0); QDeclarativeItem *viewport = gridview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); model.removeItem(1); - // let transitions settle. - QTest::qWait(300); - QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 1); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(1)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(1)); QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 1); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(1)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(1)); + + // Checks that onRemove is called + QString removed = canvas->rootObject()->property("removed").toString(); + QTRY_COMPARE(removed, QString("Item1")); // Confirm items positioned correctly int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QVERIFY(item->x() == (i%3)*80); - QVERIFY(item->y() == (i/3)*60); + QTRY_VERIFY(item); + QTRY_VERIFY(item->x() == (i%3)*80); + QTRY_VERIFY(item->y() == (i/3)*60); } // Remove first item (which is the current item); model.removeItem(0); - // let transitions settle. - QTest::qWait(300); - name = findItem<QDeclarativeText>(viewport, "textName", 0); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(0)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(0)); number = findItem<QDeclarativeText>(viewport, "textNumber", 0); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(0)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(0)); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QVERIFY(item->x() == (i%3)*80); - QVERIFY(item->y() == (i/3)*60); + QTRY_VERIFY(item); + QTRY_VERIFY(item->x() == (i%3)*80); + QTRY_VERIFY(item->y() == (i/3)*60); } // Remove items not visible model.removeItem(25); - // let transitions settle. - QTest::qWait(300); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QVERIFY(item->x() == (i%3)*80); - QVERIFY(item->y() == (i/3)*60); + QTRY_VERIFY(item); + QTRY_VERIFY(item->x() == (i%3)*80); + QTRY_VERIFY(item->y() == (i/3)*60); } // Remove items before visible gridview->setContentY(120); - QTest::qWait(500); gridview->setCurrentIndex(10); - // let transitions settle. - QTest::qWait(300); - // Setting currentIndex above shouldn't cause view to scroll - QCOMPARE(gridview->contentY(), 120.0); + QTRY_COMPARE(gridview->contentY(), 120.0); model.removeItem(1); - // let transitions settle. - QTest::qWait(300); - // Confirm items positioned correctly for (int i = 6; i < 18; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QVERIFY(item->x() == (i%3)*80); - QVERIFY(item->y() == (i/3)*60); + QTRY_VERIFY(item); + QTRY_VERIFY(item->x() == (i%3)*80); + QTRY_VERIFY(item->y() == (i/3)*60); } // Remove currentIndex QDeclarativeItem *oldCurrent = gridview->currentItem(); model.removeItem(9); - QTest::qWait(500); - QCOMPARE(gridview->currentIndex(), 9); - QVERIFY(gridview->currentItem() != oldCurrent); + QTRY_COMPARE(gridview->currentIndex(), 9); + QTRY_VERIFY(gridview->currentItem() != oldCurrent); gridview->setContentY(0); // let transitions settle. - QTest::qWait(300); + QTest::qWait(100); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QVERIFY(item->x() == (i%3)*80); - QVERIFY(item->y() == (i/3)*60); + QTRY_VERIFY(item); + QTRY_VERIFY(item->x() == (i%3)*80); + QTRY_VERIFY(item->y() == (i/3)*60); } // remove item outside current view. gridview->setCurrentIndex(32); - QTest::qWait(500); gridview->setContentY(240); model.removeItem(30); - QVERIFY(gridview->currentIndex() == 31); + QTRY_VERIFY(gridview->currentIndex() == 31); // remove current item beyond visible items. gridview->setCurrentIndex(20); - QTest::qWait(500); gridview->setContentY(0); model.removeItem(20); - QTest::qWait(500); - QCOMPARE(gridview->currentIndex(), 20); - QVERIFY(gridview->currentItem() != 0); + QTRY_COMPARE(gridview->currentIndex(), 20); + QTRY_VERIFY(gridview->currentItem() != 0); // remove item before current, but visible gridview->setCurrentIndex(8); - QTest::qWait(500); gridview->setContentY(240); oldCurrent = gridview->currentItem(); model.removeItem(6); - QTest::qWait(500); - QCOMPARE(gridview->currentIndex(), 7); - QVERIFY(gridview->currentItem() == oldCurrent); + QTRY_COMPARE(gridview->currentIndex(), 7); + QTRY_VERIFY(gridview->currentItem() == oldCurrent); delete canvas; } @@ -482,42 +466,39 @@ void tst_QDeclarativeGridView::moved() ctxt->setContextProperty("testModel", &model); ctxt->setContextProperty("testTopToBottom", QVariant(false)); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview1.qml")); qApp->processEvents(); QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); - QVERIFY(gridview != 0); + QTRY_VERIFY(gridview != 0); QDeclarativeItem *viewport = gridview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); model.moveItem(1, 8); - // let transitions settle. - QTest::qWait(300); - QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 1); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(1)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(1)); QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 1); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(1)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(1)); name = findItem<QDeclarativeText>(viewport, "textName", 8); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(8)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(8)); number = findItem<QDeclarativeText>(viewport, "textNumber", 8); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(8)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(8)); // Confirm items positioned correctly int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QVERIFY(item->x() == (i%3)*80); - QVERIFY(item->y() == (i/3)*60); + QTRY_VERIFY(item); + QTRY_VERIFY(item->x() == (i%3)*80); + QTRY_VERIFY(item->y() == (i/3)*60); } gridview->setContentY(120); @@ -525,46 +506,45 @@ void tst_QDeclarativeGridView::moved() // move outside visible area model.moveItem(1, 25); - // let transitions settle. - QTest::qWait(300); - // Confirm items positioned correctly and indexes correct itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count()-1; for (int i = 6; i < model.count()-6 && i < itemCount+6; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->x(), qreal((i%3)*80)); - QCOMPARE(item->y(), qreal((i/3)*60)); + QTRY_VERIFY(item); + QTRY_COMPARE(item->x(), qreal((i%3)*80)); + QTRY_COMPARE(item->y(), qreal((i/3)*60)); name = findItem<QDeclarativeText>(viewport, "textName", i); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(i)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(i)); number = findItem<QDeclarativeText>(viewport, "textNumber", i); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(i)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(i)); } // move from outside visible into visible model.moveItem(28, 8); - // let transitions settle. - QTest::qWait(300); - // Confirm items positioned correctly and indexes correct for (int i = 6; i < model.count()-6 && i < itemCount+6; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QVERIFY(item->x() == (i%3)*80); - QVERIFY(item->y() == (i/3)*60); + QTRY_VERIFY(item); + QTRY_VERIFY(item->x() == (i%3)*80); + QTRY_VERIFY(item->y() == (i/3)*60); name = findItem<QDeclarativeText>(viewport, "textName", i); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(i)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(i)); number = findItem<QDeclarativeText>(viewport, "textNumber", i); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(i)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(i)); } + // ensure content position is stable + gridview->setContentY(0); + model.moveItem(10, 0); + QTRY_VERIFY(gridview->contentY() == 0); + delete canvas; } @@ -586,107 +566,107 @@ void tst_QDeclarativeGridView::currentIndex() qApp->processEvents(); QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); - QVERIFY(gridview != 0); + QTRY_VERIFY(gridview != 0); QDeclarativeItem *viewport = gridview->viewport(); - QVERIFY(viewport != 0); - - QTest::qWait(500); + QTRY_VERIFY(viewport != 0); // current item should be third item - QCOMPARE(gridview->currentIndex(), 5); - QCOMPARE(gridview->currentItem(), findItem<QDeclarativeItem>(viewport, "wrapper", 5)); - QCOMPARE(gridview->currentItem()->y(), gridview->highlightItem()->y()); + QTRY_COMPARE(gridview->currentIndex(), 5); + QTRY_COMPARE(gridview->currentItem(), findItem<QDeclarativeItem>(viewport, "wrapper", 5)); + QTRY_COMPARE(gridview->currentItem()->y(), gridview->highlightItem()->y()); gridview->moveCurrentIndexRight(); - QCOMPARE(gridview->currentIndex(), 6); + QTRY_COMPARE(gridview->currentIndex(), 6); gridview->moveCurrentIndexDown(); - QCOMPARE(gridview->currentIndex(), 9); + QTRY_COMPARE(gridview->currentIndex(), 9); gridview->moveCurrentIndexUp(); - QCOMPARE(gridview->currentIndex(), 6); + QTRY_COMPARE(gridview->currentIndex(), 6); gridview->moveCurrentIndexLeft(); - QCOMPARE(gridview->currentIndex(), 5); + QTRY_COMPARE(gridview->currentIndex(), 5); // no wrap gridview->setCurrentIndex(0); - QCOMPARE(gridview->currentIndex(), 0); + QTRY_COMPARE(gridview->currentIndex(), 0); gridview->moveCurrentIndexUp(); - QCOMPARE(gridview->currentIndex(), 0); + QTRY_COMPARE(gridview->currentIndex(), 0); gridview->moveCurrentIndexLeft(); - QCOMPARE(gridview->currentIndex(), 0); + QTRY_COMPARE(gridview->currentIndex(), 0); gridview->setCurrentIndex(model.count()-1); - QTest::qWait(500); - QCOMPARE(gridview->currentIndex(), model.count()-1); + QTRY_COMPARE(gridview->currentIndex(), model.count()-1); gridview->moveCurrentIndexRight(); - QCOMPARE(gridview->currentIndex(), model.count()-1); + QTRY_COMPARE(gridview->currentIndex(), model.count()-1); gridview->moveCurrentIndexDown(); - QCOMPARE(gridview->currentIndex(), model.count()-1); + QTRY_COMPARE(gridview->currentIndex(), model.count()-1); // with wrap gridview->setWrapEnabled(true); gridview->setCurrentIndex(0); - QCOMPARE(gridview->currentIndex(), 0); - QTest::qWait(500); + QTRY_COMPARE(gridview->currentIndex(), 0); gridview->moveCurrentIndexLeft(); - QCOMPARE(gridview->currentIndex(), model.count()-1); + QTRY_COMPARE(gridview->currentIndex(), model.count()-1); - QTest::qWait(500); - QCOMPARE(gridview->contentY(), 279.0); + QTRY_COMPARE(gridview->contentY(), 279.0); gridview->moveCurrentIndexRight(); - QCOMPARE(gridview->currentIndex(), 0); + QTRY_COMPARE(gridview->currentIndex(), 0); - QTest::qWait(500); - QCOMPARE(gridview->contentY(), 0.0); + QTRY_COMPARE(gridview->contentY(), 0.0); // Test keys - qApp->setActiveWindow(canvas); canvas->show(); - canvas->setFocus(); + qApp->setActiveWindow(canvas); +#ifdef Q_WS_X11 + // to be safe and avoid failing setFocus with window managers + qt_x11_wait_for_window_manager(canvas); +#endif + QTRY_VERIFY(canvas->hasFocus()); + QTRY_VERIFY(canvas->scene()->hasFocus()); qApp->processEvents(); QTest::keyClick(canvas, Qt::Key_Down); - QCOMPARE(gridview->currentIndex(), 3); + QTRY_COMPARE(gridview->currentIndex(), 3); QTest::keyClick(canvas, Qt::Key_Up); - QCOMPARE(gridview->currentIndex(), 0); + QTRY_COMPARE(gridview->currentIndex(), 0); gridview->setFlow(QDeclarativeGridView::TopToBottom); - QEXPECT_FAIL("", "QTBUG-8475", Abort); QTest::keyClick(canvas, Qt::Key_Right); - QCOMPARE(gridview->currentIndex(), 5); + QTRY_COMPARE(gridview->currentIndex(), 5); QTest::keyClick(canvas, Qt::Key_Left); - QCOMPARE(gridview->currentIndex(), 0); + QTRY_COMPARE(gridview->currentIndex(), 0); QTest::keyClick(canvas, Qt::Key_Down); - QCOMPARE(gridview->currentIndex(), 1); + QTRY_COMPARE(gridview->currentIndex(), 1); QTest::keyClick(canvas, Qt::Key_Up); - QCOMPARE(gridview->currentIndex(), 0); + QTRY_COMPARE(gridview->currentIndex(), 0); // turn off auto highlight gridview->setHighlightFollowsCurrentItem(false); - QVERIFY(gridview->highlightFollowsCurrentItem() == false); - - QTest::qWait(500); - QVERIFY(gridview->highlightItem()); + QTRY_VERIFY(gridview->highlightFollowsCurrentItem() == false); + QTRY_VERIFY(gridview->highlightItem()); qreal hlPosX = gridview->highlightItem()->x(); qreal hlPosY = gridview->highlightItem()->y(); gridview->setCurrentIndex(5); - QTest::qWait(500); - QCOMPARE(gridview->highlightItem()->x(), hlPosX); - QCOMPARE(gridview->highlightItem()->y(), hlPosY); + QTRY_COMPARE(gridview->highlightItem()->x(), hlPosX); + QTRY_COMPARE(gridview->highlightItem()->y(), hlPosY); + + // insert item before currentIndex + gridview->setCurrentIndex(28); + model.insertItem(0, "Foo", "1111"); + QTRY_COMPARE(canvas->rootObject()->property("current").toInt(), 29); delete canvas; } @@ -703,48 +683,47 @@ void tst_QDeclarativeGridView::changeFlow() ctxt->setContextProperty("testModel", &model); ctxt->setContextProperty("testTopToBottom", QVariant(false)); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview1.qml")); qApp->processEvents(); QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); - QVERIFY(gridview != 0); + QTRY_VERIFY(gridview != 0); QDeclarativeItem *viewport = gridview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); // Confirm items positioned correctly and indexes correct int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->x(), qreal((i%3)*80)); - QCOMPARE(item->y(), qreal((i/3)*60)); + QTRY_VERIFY(item); + QTRY_COMPARE(item->x(), qreal((i%3)*80)); + QTRY_COMPARE(item->y(), qreal((i/3)*60)); QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", i); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(i)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(i)); QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", i); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(i)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(i)); } ctxt->setContextProperty("testTopToBottom", QVariant(true)); - QTest::qWait(500); // Confirm items positioned correctly and indexes correct itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->x(), qreal((i/5)*80)); - QCOMPARE(item->y(), qreal((i%5)*60)); + QTRY_VERIFY(item); + QTRY_COMPARE(item->x(), qreal((i/5)*80)); + QTRY_COMPARE(item->y(), qreal((i%5)*60)); QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", i); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(i)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(i)); QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", i); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(i)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(i)); } delete canvas; @@ -756,20 +735,20 @@ void tst_QDeclarativeGridView::defaultValues() QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/gridview3.qml")); QDeclarativeGridView *obj = qobject_cast<QDeclarativeGridView*>(c.create()); - QVERIFY(obj != 0); - QVERIFY(obj->model() == QVariant()); - QVERIFY(obj->delegate() == 0); - QCOMPARE(obj->currentIndex(), -1); - QVERIFY(obj->currentItem() == 0); - QCOMPARE(obj->count(), 0); - QVERIFY(obj->highlight() == 0); - QVERIFY(obj->highlightItem() == 0); - QCOMPARE(obj->highlightFollowsCurrentItem(), true); - QVERIFY(obj->flow() == 0); - QCOMPARE(obj->isWrapEnabled(), false); - QCOMPARE(obj->cacheBuffer(), 0); - QCOMPARE(obj->cellWidth(), 100); //### Should 100 be the default? - QCOMPARE(obj->cellHeight(), 100); + QTRY_VERIFY(obj != 0); + QTRY_VERIFY(obj->model() == QVariant()); + QTRY_VERIFY(obj->delegate() == 0); + QTRY_COMPARE(obj->currentIndex(), -1); + QTRY_VERIFY(obj->currentItem() == 0); + QTRY_COMPARE(obj->count(), 0); + QTRY_VERIFY(obj->highlight() == 0); + QTRY_VERIFY(obj->highlightItem() == 0); + QTRY_COMPARE(obj->highlightFollowsCurrentItem(), true); + QTRY_VERIFY(obj->flow() == 0); + QTRY_COMPARE(obj->isWrapEnabled(), false); + QTRY_COMPARE(obj->cacheBuffer(), 0); + QTRY_COMPARE(obj->cellWidth(), 100); //### Should 100 be the default? + QTRY_COMPARE(obj->cellHeight(), 100); delete obj; } @@ -779,23 +758,124 @@ void tst_QDeclarativeGridView::properties() QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/gridview2.qml")); QDeclarativeGridView *obj = qobject_cast<QDeclarativeGridView*>(c.create()); - QVERIFY(obj != 0); - QVERIFY(obj->model() != QVariant()); - QVERIFY(obj->delegate() != 0); - QCOMPARE(obj->currentIndex(), 0); - QVERIFY(obj->currentItem() != 0); - QCOMPARE(obj->count(), 4); - QVERIFY(obj->highlight() != 0); - QVERIFY(obj->highlightItem() != 0); - QCOMPARE(obj->highlightFollowsCurrentItem(), false); - QVERIFY(obj->flow() == 0); - QCOMPARE(obj->isWrapEnabled(), true); - QCOMPARE(obj->cacheBuffer(), 200); - QCOMPARE(obj->cellWidth(), 100); - QCOMPARE(obj->cellHeight(), 100); + QTRY_VERIFY(obj != 0); + QTRY_VERIFY(obj->model() != QVariant()); + QTRY_VERIFY(obj->delegate() != 0); + QTRY_COMPARE(obj->currentIndex(), 0); + QTRY_VERIFY(obj->currentItem() != 0); + QTRY_COMPARE(obj->count(), 4); + QTRY_VERIFY(obj->highlight() != 0); + QTRY_VERIFY(obj->highlightItem() != 0); + QTRY_COMPARE(obj->highlightFollowsCurrentItem(), false); + QTRY_VERIFY(obj->flow() == 0); + QTRY_COMPARE(obj->isWrapEnabled(), true); + QTRY_COMPARE(obj->cacheBuffer(), 200); + QTRY_COMPARE(obj->cellWidth(), 100); + QTRY_COMPARE(obj->cellHeight(), 100); delete obj; } +void tst_QDeclarativeGridView::propertyChanges() +{ + QDeclarativeView *canvas = createView(); + QTRY_VERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychangestest.qml")); + + QDeclarativeGridView *gridView = canvas->rootObject()->findChild<QDeclarativeGridView*>("gridView"); + QTRY_VERIFY(gridView); + + QSignalSpy keyNavigationWrapsSpy(gridView, SIGNAL(keyNavigationWrapsChanged())); + QSignalSpy cacheBufferSpy(gridView, SIGNAL(cacheBufferChanged())); + QSignalSpy flowSpy(gridView, SIGNAL(flowChanged())); + + QTRY_COMPARE(gridView->isWrapEnabled(), true); + QTRY_COMPARE(gridView->cacheBuffer(), 10); + QTRY_COMPARE(gridView->flow(), QDeclarativeGridView::LeftToRight); + + gridView->setWrapEnabled(false); + gridView->setCacheBuffer(3); + gridView->setFlow(QDeclarativeGridView::TopToBottom); + + QTRY_COMPARE(gridView->isWrapEnabled(), false); + QTRY_COMPARE(gridView->cacheBuffer(), 3); + QTRY_COMPARE(gridView->flow(), QDeclarativeGridView::TopToBottom); + + QTRY_COMPARE(keyNavigationWrapsSpy.count(),1); + QTRY_COMPARE(cacheBufferSpy.count(),1); + QTRY_COMPARE(flowSpy.count(),1); + + gridView->setWrapEnabled(false); + gridView->setCacheBuffer(3); + gridView->setFlow(QDeclarativeGridView::TopToBottom); + + QTRY_COMPARE(keyNavigationWrapsSpy.count(),1); + QTRY_COMPARE(cacheBufferSpy.count(),1); + QTRY_COMPARE(flowSpy.count(),1); + + delete canvas; +} + +void tst_QDeclarativeGridView::componentChanges() +{ + QDeclarativeView *canvas = createView(); + QTRY_VERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychangestest.qml")); + + QDeclarativeGridView *gridView = canvas->rootObject()->findChild<QDeclarativeGridView*>("gridView"); + QTRY_VERIFY(gridView); + + QDeclarativeComponent component(canvas->engine()); + component.setData("import Qt 4.7; Rectangle { color: \"blue\"; }", QUrl::fromLocalFile("")); + + QDeclarativeComponent delegateComponent(canvas->engine()); + delegateComponent.setData("import Qt 4.7; Text { text: '<b>Name:</b> ' + name }", QUrl::fromLocalFile("")); + + QSignalSpy highlightSpy(gridView, SIGNAL(highlightChanged())); + QSignalSpy delegateSpy(gridView, SIGNAL(delegateChanged())); + + gridView->setHighlight(&component); + gridView->setDelegate(&delegateComponent); + + QTRY_COMPARE(gridView->highlight(), &component); + QTRY_COMPARE(gridView->delegate(), &delegateComponent); + + QTRY_COMPARE(highlightSpy.count(),1); + QTRY_COMPARE(delegateSpy.count(),1); + + gridView->setHighlight(&component); + gridView->setDelegate(&delegateComponent); + + QTRY_COMPARE(highlightSpy.count(),1); + QTRY_COMPARE(delegateSpy.count(),1); + delete canvas; +} + +void tst_QDeclarativeGridView::modelChanges() +{ + QDeclarativeView *canvas = createView(); + QTRY_VERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychangestest.qml")); + + QDeclarativeGridView *gridView = canvas->rootObject()->findChild<QDeclarativeGridView*>("gridView"); + QTRY_VERIFY(gridView); + + QDeclarativeListModel *alternateModel = canvas->rootObject()->findChild<QDeclarativeListModel*>("alternateModel"); + QTRY_VERIFY(alternateModel); + QVariant modelVariant = QVariant::fromValue(alternateModel); + QSignalSpy modelSpy(gridView, SIGNAL(modelChanged())); + + gridView->setModel(modelVariant); + QTRY_COMPARE(gridView->model(), modelVariant); + QTRY_COMPARE(modelSpy.count(),1); + + gridView->setModel(modelVariant); + QTRY_COMPARE(modelSpy.count(),1); + + gridView->setModel(QVariant()); + QTRY_COMPARE(modelSpy.count(),2); + delete canvas; +} + void tst_QDeclarativeGridView::positionViewAtIndex() { QDeclarativeView *canvas = createView(); @@ -808,81 +888,122 @@ void tst_QDeclarativeGridView::positionViewAtIndex() ctxt->setContextProperty("testModel", &model); ctxt->setContextProperty("testTopToBottom", QVariant(false)); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview1.qml")); qApp->processEvents(); QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); - QVERIFY(gridview != 0); + QTRY_VERIFY(gridview != 0); QDeclarativeItem *viewport = gridview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); // Confirm items positioned correctly int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount-1; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->x(), (i%3)*80.); - QCOMPARE(item->y(), (i/3)*60.); + QTRY_VERIFY(item); + QTRY_COMPARE(item->x(), (i%3)*80.); + QTRY_COMPARE(item->y(), (i/3)*60.); } // Position on a currently visible item - gridview->positionViewAtIndex(4); - QCOMPARE(gridview->contentY(), 60.); + gridview->positionViewAtIndex(4, QDeclarativeGridView::Beginning); + QTRY_COMPARE(gridview->contentY(), 60.); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 3; i < model.count() && i < itemCount-3-1; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->x(), (i%3)*80.); - QCOMPARE(item->y(), (i/3)*60.); + QTRY_VERIFY(item); + QTRY_COMPARE(item->x(), (i%3)*80.); + QTRY_COMPARE(item->y(), (i/3)*60.); } // Position on an item beyond the visible items - gridview->positionViewAtIndex(21); - QCOMPARE(gridview->contentY(), 420.); + gridview->positionViewAtIndex(21, QDeclarativeGridView::Beginning); + QTRY_COMPARE(gridview->contentY(), 420.); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 22; i < model.count() && i < itemCount-22-1; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->x(), (i%3)*80.); - QCOMPARE(item->y(), (i/3)*60.); + QTRY_VERIFY(item); + QTRY_COMPARE(item->x(), (i%3)*80.); + QTRY_COMPARE(item->y(), (i/3)*60.); } // Position on an item that would leave empty space if positioned at the top - gridview->positionViewAtIndex(31); - QCOMPARE(gridview->contentY(), 520.); + gridview->positionViewAtIndex(31, QDeclarativeGridView::Beginning); + QTRY_COMPARE(gridview->contentY(), 520.); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 24; i < model.count() && i < itemCount-24-1; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->x(), (i%3)*80.); - QCOMPARE(item->y(), (i/3)*60.); + QTRY_VERIFY(item); + QTRY_COMPARE(item->x(), (i%3)*80.); + QTRY_COMPARE(item->y(), (i/3)*60.); } // Position at the beginning again - gridview->positionViewAtIndex(0); - QCOMPARE(gridview->contentY(), 0.); + gridview->positionViewAtIndex(0, QDeclarativeGridView::Beginning); + QTRY_COMPARE(gridview->contentY(), 0.); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount-1; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->x(), (i%3)*80.); - QCOMPARE(item->y(), (i/3)*60.); + QTRY_VERIFY(item); + QTRY_COMPARE(item->x(), (i%3)*80.); + QTRY_COMPARE(item->y(), (i/3)*60.); } + // Position at End + gridview->positionViewAtIndex(30, QDeclarativeGridView::End); + QTRY_COMPARE(gridview->contentY(), 340.); + + // Position in Center + gridview->positionViewAtIndex(15, QDeclarativeGridView::Center); + QTRY_COMPARE(gridview->contentY(), 170.); + + // Ensure at least partially visible + gridview->positionViewAtIndex(15, QDeclarativeGridView::Visible); + QTRY_COMPARE(gridview->contentY(), 170.); + + gridview->setContentY(302); + gridview->positionViewAtIndex(15, QDeclarativeGridView::Visible); + QTRY_COMPARE(gridview->contentY(), 302.); + + gridview->setContentY(360); + gridview->positionViewAtIndex(15, QDeclarativeGridView::Visible); + QTRY_COMPARE(gridview->contentY(), 300.); + + gridview->setContentY(60); + gridview->positionViewAtIndex(20, QDeclarativeGridView::Visible); + QTRY_COMPARE(gridview->contentY(), 60.); + + gridview->setContentY(20); + gridview->positionViewAtIndex(20, QDeclarativeGridView::Visible); + QTRY_COMPARE(gridview->contentY(), 100.); + + // Ensure completely visible + gridview->setContentY(120); + gridview->positionViewAtIndex(20, QDeclarativeGridView::Contain); + QTRY_COMPARE(gridview->contentY(), 120.); + + gridview->setContentY(302); + gridview->positionViewAtIndex(15, QDeclarativeGridView::Contain); + QTRY_COMPARE(gridview->contentY(), 300.); + + gridview->setContentY(60); + gridview->positionViewAtIndex(20, QDeclarativeGridView::Contain); + QTRY_COMPARE(gridview->contentY(), 100.); + delete canvas; } @@ -901,32 +1022,78 @@ void tst_QDeclarativeGridView::resetModel() qApp->processEvents(); QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); - QVERIFY(gridview != 0); + QTRY_VERIFY(gridview != 0); QDeclarativeItem *viewport = gridview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); - QCOMPARE(gridview->count(), model.rowCount()); + QTRY_COMPARE(gridview->count(), model.rowCount()); for (int i = 0; i < model.rowCount(); ++i) { QDeclarativeText *display = findItem<QDeclarativeText>(viewport, "displayText", i); - QVERIFY(display != 0); - QCOMPARE(display->text(), strings.at(i)); + QTRY_VERIFY(display != 0); + QTRY_COMPARE(display->text(), strings.at(i)); } strings.clear(); strings << "four" << "five" << "six" << "seven"; model.setStringList(strings); - QCOMPARE(gridview->count(), model.rowCount()); + QTRY_COMPARE(gridview->count(), model.rowCount()); for (int i = 0; i < model.rowCount(); ++i) { QDeclarativeText *display = findItem<QDeclarativeText>(viewport, "displayText", i); - QVERIFY(display != 0); - QCOMPARE(display->text(), strings.at(i)); + QTRY_VERIFY(display != 0); + QTRY_COMPARE(display->text(), strings.at(i)); } } +void tst_QDeclarativeGridView::enforceRange() +{ + QDeclarativeView *canvas = createView(); + + TestModel model; + for (int i = 0; i < 30; i++) + model.addItem("Item" + QString::number(i), ""); + + QDeclarativeContext *ctxt = canvas->rootContext(); + ctxt->setContextProperty("testModel", &model); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/gridview-enforcerange.qml")); + qApp->processEvents(); + + QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); + QTRY_VERIFY(gridview != 0); + + QTRY_COMPARE(gridview->preferredHighlightBegin(), 100.0); + QTRY_COMPARE(gridview->preferredHighlightEnd(), 100.0); + QTRY_COMPARE(gridview->highlightRangeMode(), QDeclarativeGridView::StrictlyEnforceRange); + + QDeclarativeItem *viewport = gridview->viewport(); + QTRY_VERIFY(viewport != 0); + + // view should be positioned at the top of the range. + QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", 0); + QTRY_VERIFY(item); + QTRY_COMPARE(gridview->contentY(), -100.0); + + QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 0); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(0)); + QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 0); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(0)); + + // Check currentIndex is updated when viewport moves + gridview->setContentY(0); + QTRY_COMPARE(gridview->currentIndex(), 2); + + gridview->setCurrentIndex(5); + QTRY_COMPARE(gridview->contentY(), 100.); + + delete canvas; +} + void tst_QDeclarativeGridView::QTBUG_8456() { QDeclarativeView *canvas = createView(); @@ -935,9 +1102,9 @@ void tst_QDeclarativeGridView::QTBUG_8456() qApp->processEvents(); QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid"); - QVERIFY(gridview != 0); + QTRY_VERIFY(gridview != 0); - QCOMPARE(gridview->currentIndex(), 0); + QTRY_COMPARE(gridview->currentIndex(), 0); } QDeclarativeView *tst_QDeclarativeGridView::createView() diff --git a/tests/auto/declarative/qdeclarativeimage/data/aspectratio.qml b/tests/auto/declarative/qdeclarativeimage/data/aspectratio.qml new file mode 100644 index 0000000..402d33e --- /dev/null +++ b/tests/auto/declarative/qdeclarativeimage/data/aspectratio.qml @@ -0,0 +1,6 @@ +import Qt 4.7 + +Image { + source: "heart.png" + fillMode: Image.PreserveAspectFit; +} diff --git a/tests/auto/declarative/qdeclarativeimage/data/big.jpeg b/tests/auto/declarative/qdeclarativeimage/data/big.jpeg Binary files differnew file mode 100644 index 0000000..bed7bd6 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeimage/data/big.jpeg diff --git a/tests/auto/declarative/qdeclarativeimage/data/big256.png b/tests/auto/declarative/qdeclarativeimage/data/big256.png Binary files differnew file mode 100644 index 0000000..1dc1596 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeimage/data/big256.png diff --git a/tests/auto/declarative/qdeclarativeimage/data/heart-mac.png b/tests/auto/declarative/qdeclarativeimage/data/heart-mac.png Binary files differnew file mode 100644 index 0000000..d7df0e4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeimage/data/heart-mac.png diff --git a/tests/auto/declarative/qdeclarativeimage/data/heart-win32.png b/tests/auto/declarative/qdeclarativeimage/data/heart-win32.png Binary files differnew file mode 100644 index 0000000..351da13 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeimage/data/heart-win32.png diff --git a/tests/auto/declarative/qdeclarativeimage/data/heart.png b/tests/auto/declarative/qdeclarativeimage/data/heart.png Binary files differnew file mode 100644 index 0000000..372b224 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeimage/data/heart.png diff --git a/tests/auto/declarative/qdeclarativeimage/data/heart.svg b/tests/auto/declarative/qdeclarativeimage/data/heart.svg new file mode 100644 index 0000000..8c982cd --- /dev/null +++ b/tests/auto/declarative/qdeclarativeimage/data/heart.svg @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --><svg viewBox="100 200 550 500" height="841.88976pt" id="svg1" inkscape:version="0.40+cvs" sodipodi:docbase="C:\Documents and Settings\Jon Phillips\My Documents\projects\clipart-project\submissions" sodipodi:docname="heart-left-highlight.svg" sodipodi:version="0.32" width="595.27559pt" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"> +<metadata> +<rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> +<cc:Work rdf:about=""> +<dc:title>Heart Left-Highlight</dc:title> +<dc:description>This is a normal valentines day heart.</dc:description> +<dc:subject> +<rdf:Bag> +<rdf:li>holiday</rdf:li> +<rdf:li>valentines</rdf:li> +<rdf:li></rdf:li> +<rdf:li>valentine</rdf:li> +<rdf:li>hash(0x8a091c0)</rdf:li> +<rdf:li>hash(0x8a0916c)</rdf:li> +<rdf:li>signs_and_symbols</rdf:li> +<rdf:li>hash(0x8a091f0)</rdf:li> +<rdf:li>day</rdf:li> +</rdf:Bag> +</dc:subject> +<dc:publisher> +<cc:Agent rdf:about="http://www.openclipart.org"> +<dc:title>Jon Phillips</dc:title> +</cc:Agent> +</dc:publisher> +<dc:creator> +<cc:Agent> +<dc:title>Jon Phillips</dc:title> +</cc:Agent> +</dc:creator> +<dc:rights> +<cc:Agent> +<dc:title>Jon Phillips</dc:title> +</cc:Agent> +</dc:rights> +<dc:date></dc:date> +<dc:format>image/svg+xml</dc:format> +<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> +<cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/> +<dc:language>en</dc:language> +</cc:Work> +<cc:License rdf:about="http://web.resource.org/cc/PublicDomain"> +<cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/> +<cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/> +<cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/> +</cc:License> +</rdf:RDF> +</metadata> +<defs id="defs3"/> +<sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="549.40674" inkscape:cy="596.00159" inkscape:document-units="px" inkscape:guide-bbox="true" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="615" inkscape:window-width="866" inkscape:window-x="88" inkscape:window-y="116" inkscape:zoom="0.35000000" pagecolor="#ffffff" showguides="true"/> +<g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1"> +<path d="M 263.41570,235.14588 C 197.17570,235.14588 143.41575,288.90587 143.41575,355.14588 C 143.41575,489.90139 279.34890,525.23318 371.97820,658.45392 C 459.55244,526.05056 600.54070,485.59932 600.54070,355.14588 C 600.54070,288.90588 546.78080,235.14587 480.54070,235.14588 C 432.49280,235.14588 391.13910,263.51631 371.97820,304.33338 C 352.81740,263.51630 311.46370,235.14587 263.41570,235.14588 z " id="path7" sodipodi:nodetypes="ccccccc" style="fill:#e60000;fill-opacity:1.0000000;stroke:#000000;stroke-width:18.700001;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/> +<path d="M 265.00000,253.59375 C 207.04033,253.59375 160.00000,300.63407 160.00000,358.59375 C 160.00000,476.50415 278.91857,507.43251 359.96875,624.00000 C 366.52868,614.08205 220.00000,478.47309 220.00000,378.59375 C 220.00000,320.63407 267.04033,273.59375 325.00000,273.59375 C 325.50453,273.59375 325.99718,273.64912 326.50000,273.65625 C 309.22436,261.07286 288.00557,253.59374 265.00000,253.59375 z " id="path220" sodipodi:nodetypes="ccccccc" style="fill:#e6e6e6;fill-opacity:0.64556962;stroke:none;stroke-width:18.700001;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/> +</g> +</svg> diff --git a/tests/auto/declarative/qdeclarativeimage/data/heart200-mac.png b/tests/auto/declarative/qdeclarativeimage/data/heart200-mac.png Binary files differnew file mode 100644 index 0000000..df22325 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeimage/data/heart200-mac.png diff --git a/tests/auto/declarative/qdeclarativeimage/data/heart200-win32.png b/tests/auto/declarative/qdeclarativeimage/data/heart200-win32.png Binary files differnew file mode 100644 index 0000000..4976ff9 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeimage/data/heart200-win32.png diff --git a/tests/auto/declarative/qdeclarativeimage/data/heart200.png b/tests/auto/declarative/qdeclarativeimage/data/heart200.png Binary files differnew file mode 100644 index 0000000..786e75d --- /dev/null +++ b/tests/auto/declarative/qdeclarativeimage/data/heart200.png diff --git a/tests/auto/declarative/qdeclarativeimage/qdeclarativeimage.pro b/tests/auto/declarative/qdeclarativeimage/qdeclarativeimage.pro index 7634c12..ff365ee 100644 --- a/tests/auto/declarative/qdeclarativeimage/qdeclarativeimage.pro +++ b/tests/auto/declarative/qdeclarativeimage/qdeclarativeimage.pro @@ -7,3 +7,6 @@ SOURCES += tst_qdeclarativeimage.cpp ../shared/testhttpserver.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp index ed2095b..854bcdd 100644 --- a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp +++ b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp @@ -46,6 +46,7 @@ #include <QtDeclarative/qdeclarativeengine.h> #include <QtDeclarative/qdeclarativecomponent.h> +#include <QtDeclarative/qdeclarativeview.h> #include <private/qdeclarativeimage_p.h> #include <private/qdeclarativeimagebase_p.h> #include <private/qdeclarativeloader_p.h> @@ -54,8 +55,8 @@ #include "../shared/testhttpserver.h" -#define SERVER_PORT 14445 -#define SERVER_ADDR "http://127.0.0.1:14445" +#define SERVER_PORT 14451 +#define SERVER_ADDR "http://127.0.0.1:14451" #define TRY_WAIT(expr) \ do { \ @@ -80,8 +81,11 @@ private slots: void imageSource_data(); void clearSource(); void resized(); + void preserveAspectRatio(); void smooth(); void pixmap(); + void svg(); + void big(); private: QDeclarativeEngine engine; @@ -93,7 +97,7 @@ tst_qdeclarativeimage::tst_qdeclarativeimage() void tst_qdeclarativeimage::noSource() { - QString componentStr = "import Qt 4.6\nImage { source: \"\" }"; + QString componentStr = "import Qt 4.7\nImage { source: \"\" }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeImage *obj = qobject_cast<QDeclarativeImage*>(component.create()); @@ -111,24 +115,30 @@ void tst_qdeclarativeimage::noSource() void tst_qdeclarativeimage::imageSource_data() { QTest::addColumn<QString>("source"); + QTest::addColumn<qreal>("width"); + QTest::addColumn<qreal>("height"); QTest::addColumn<bool>("remote"); QTest::addColumn<bool>("async"); QTest::addColumn<QString>("error"); - QTest::newRow("local") << QUrl::fromLocalFile(SRCDIR "/data/colors.png").toString() << false << false << ""; - QTest::newRow("local async") << QUrl::fromLocalFile(SRCDIR "/data/colors1.png").toString() << false << true << ""; - QTest::newRow("local not found") << QUrl::fromLocalFile(SRCDIR "/data/no-such-file.png").toString() << false - << false << "Cannot open QUrl( \"" + QUrl::fromLocalFile(SRCDIR "/data/no-such-file.png").toString() + "\" ) "; - QTest::newRow("local async not found") << QUrl::fromLocalFile(SRCDIR "/data/no-such-file-1.png").toString() << false - << true << "\"Cannot open: " + QUrl::fromLocalFile(SRCDIR "/data/no-such-file-1.png").toString() + "\" "; - QTest::newRow("remote") << SERVER_ADDR "/colors.png" << true << false << ""; - QTest::newRow("remote not found") << SERVER_ADDR "/no-such-file.png" << true << false - << "\"Error downloading " SERVER_ADDR "/no-such-file.png - server replied: Not found\" "; + QTest::newRow("local") << QUrl::fromLocalFile(SRCDIR "/data/colors.png").toString() << 120.0 << 120.0 << false << false << ""; + QTest::newRow("local async") << QUrl::fromLocalFile(SRCDIR "/data/colors1.png").toString() << 120.0 << 120.0 << false << true << ""; + QTest::newRow("local not found") << QUrl::fromLocalFile(SRCDIR "/data/no-such-file.png").toString() << 0.0 << 0.0 << false + << false << "QML Image (file::2:1) Cannot open: " + QUrl::fromLocalFile(SRCDIR "/data/no-such-file.png").toString(); + QTest::newRow("local async not found") << QUrl::fromLocalFile(SRCDIR "/data/no-such-file-1.png").toString() << 0.0 << 0.0 << false + << true << "QML Image (file::2:1) Cannot open: " + QUrl::fromLocalFile(SRCDIR "/data/no-such-file-1.png").toString(); + QTest::newRow("remote") << SERVER_ADDR "/colors.png" << 120.0 << 120.0 << true << false << ""; + QTest::newRow("remote svg") << SERVER_ADDR "/heart.svg" << 550.0 << 500.0 << true << false << ""; + QTest::newRow("remote not found") << SERVER_ADDR "/no-such-file.png" << 0.0 << 0.0 << true + << false << "QML Image (file::2:1) Error downloading " SERVER_ADDR "/no-such-file.png - server replied: Not found"; + } void tst_qdeclarativeimage::imageSource() { QFETCH(QString, source); + QFETCH(qreal, width); + QFETCH(qreal, height); QFETCH(bool, remote); QFETCH(bool, async); QFETCH(QString, error); @@ -142,12 +152,15 @@ void tst_qdeclarativeimage::imageSource() if (!error.isEmpty()) QTest::ignoreMessage(QtWarningMsg, error.toUtf8()); - QString componentStr = "import Qt 4.6\nImage { source: \"" + source + "\"; asynchronous: " + QString componentStr = "import Qt 4.7\nImage { source: \"" + source + "\"; asynchronous: " + (async ? QLatin1String("true") : QLatin1String("false")) + " }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeImage *obj = qobject_cast<QDeclarativeImage*>(component.create()); QVERIFY(obj != 0); + + if (async) + QVERIFY(obj->asynchronous() == true); if (remote || async) TRY_WAIT(obj->status() == QDeclarativeImage::Loading); @@ -156,8 +169,8 @@ void tst_qdeclarativeimage::imageSource() if (error.isEmpty()) { TRY_WAIT(obj->status() == QDeclarativeImage::Ready); - QCOMPARE(obj->width(), 120.); - QCOMPARE(obj->height(), 120.); + QCOMPARE(obj->width(), width); + QCOMPARE(obj->height(), height); QCOMPARE(obj->fillMode(), QDeclarativeImage::Stretch); QCOMPARE(obj->progress(), 1.0); } else { @@ -169,7 +182,7 @@ void tst_qdeclarativeimage::imageSource() void tst_qdeclarativeimage::clearSource() { - QString componentStr = "import Qt 4.6\nImage { source: srcImage }"; + QString componentStr = "import Qt 4.7\nImage { source: srcImage }"; QDeclarativeContext *ctxt = engine.rootContext(); ctxt->setContextProperty("srcImage", QUrl::fromLocalFile(SRCDIR "/data/colors.png")); QDeclarativeComponent component(&engine); @@ -191,7 +204,7 @@ void tst_qdeclarativeimage::clearSource() void tst_qdeclarativeimage::resized() { - QString componentStr = "import Qt 4.6\nImage { source: \"" SRCDIR "/data/colors.png\"; width: 300; height: 300 }"; + QString componentStr = "import Qt 4.7\nImage { source: \"" SRCDIR "/data/colors.png\"; width: 300; height: 300 }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeImage *obj = qobject_cast<QDeclarativeImage*>(component.create()); @@ -199,13 +212,34 @@ void tst_qdeclarativeimage::resized() QCOMPARE(obj->width(), 300.); QCOMPARE(obj->height(), 300.); QCOMPARE(obj->fillMode(), QDeclarativeImage::Stretch); - delete obj; } + +void tst_qdeclarativeimage::preserveAspectRatio() +{ + QDeclarativeView *canvas = new QDeclarativeView(0); + canvas->show(); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/aspectratio.qml")); + QDeclarativeImage *image = qobject_cast<QDeclarativeImage*>(canvas->rootObject()); + QVERIFY(image != 0); + image->setWidth(80.0); + QCOMPARE(image->width(), 80.); + QCOMPARE(image->height(), 80.); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/aspectratio.qml")); + image = qobject_cast<QDeclarativeImage*>(canvas->rootObject()); + image->setHeight(60.0); + QVERIFY(image != 0); + QCOMPARE(image->height(), 60.); + QCOMPARE(image->width(), 60.); + delete canvas; +} + void tst_qdeclarativeimage::smooth() { - QString componentStr = "import Qt 4.6\nImage { source: \"" SRCDIR "/data/colors.png\"; smooth: true; width: 300; height: 300 }"; + QString componentStr = "import Qt 4.7\nImage { source: \"" SRCDIR "/data/colors.png\"; smooth: true; width: 300; height: 300 }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeImage *obj = qobject_cast<QDeclarativeImage*>(component.create()); @@ -220,7 +254,7 @@ void tst_qdeclarativeimage::smooth() void tst_qdeclarativeimage::pixmap() { - QString componentStr = "import Qt 4.6\nImage { pixmap: testPixmap }"; + QString componentStr = "import Qt 4.7\nImage { pixmap: testPixmap }"; QPixmap pixmap; QDeclarativeContext *ctxt = engine.rootContext(); @@ -248,6 +282,64 @@ void tst_qdeclarativeimage::pixmap() delete obj; } +void tst_qdeclarativeimage::svg() +{ + QString src = QUrl::fromLocalFile(SRCDIR "/data/heart.svg").toString(); + QString componentStr = "import Qt 4.7\nImage { source: \"" + src + "\"; sourceSize.width: 300; sourceSize.height: 300 }"; + QDeclarativeComponent component(&engine); + component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); + QDeclarativeImage *obj = qobject_cast<QDeclarativeImage*>(component.create()); + QVERIFY(obj != 0); + QCOMPARE(obj->pixmap().width(), 300); + QCOMPARE(obj->pixmap().height(), 300); + QCOMPARE(obj->width(), 550.0); + QCOMPARE(obj->height(), 500.0); +#if defined(Q_OS_MAC) + QCOMPARE(obj->pixmap(), QPixmap(SRCDIR "/data/heart-mac.png")); +#elif defined(Q_OS_WIN32) + QCOMPARE(obj->pixmap(), QPixmap(SRCDIR "/data/heart-win32.png")); +#else + QCOMPARE(obj->pixmap(), QPixmap(SRCDIR "/data/heart.png")); +#endif + + obj->setSourceSize(QSize(200,200)); + + QCOMPARE(obj->pixmap().width(), 200); + QCOMPARE(obj->pixmap().height(), 200); + QCOMPARE(obj->width(), 550.0); + QCOMPARE(obj->height(), 500.0); +#if defined(Q_OS_MAC) + QCOMPARE(obj->pixmap(), QPixmap(SRCDIR "/data/heart200-mac.png")); +#elif defined(Q_OS_WIN32) + QCOMPARE(obj->pixmap(), QPixmap(SRCDIR "/data/heart200-win32.png")); +#else + QCOMPARE(obj->pixmap(), QPixmap(SRCDIR "/data/heart200.png")); +#endif + delete obj; +} + +void tst_qdeclarativeimage::big() +{ + // If the JPEG loader does not implement scaling efficiently, it would + // have to build a 400 MB image. That would be a bug in the JPEG loader. + + QString src = QUrl::fromLocalFile(SRCDIR "/data/big.jpeg").toString(); + QString componentStr = "import Qt 4.7\nImage { source: \"" + src + "\"; sourceSize.width: 256; sourceSize.height: 256 }"; + + QDeclarativeComponent component(&engine); + component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); + QDeclarativeImage *obj = qobject_cast<QDeclarativeImage*>(component.create()); + QVERIFY(obj != 0); + QCOMPARE(obj->pixmap().width(), 256); + QCOMPARE(obj->pixmap().height(), 256); + QCOMPARE(obj->width(), 10240.0); + QCOMPARE(obj->height(), 10240.0); + QCOMPARE(obj->pixmap(), QPixmap(SRCDIR "/data/big256.png")); + + delete obj; +} + + QTEST_MAIN(tst_qdeclarativeimage) #include "tst_qdeclarativeimage.moc" diff --git a/tests/auto/declarative/qdeclarativeimageprovider/qdeclarativeimageprovider.pro b/tests/auto/declarative/qdeclarativeimageprovider/qdeclarativeimageprovider.pro index a4d3eb2..22be991 100644 --- a/tests/auto/declarative/qdeclarativeimageprovider/qdeclarativeimageprovider.pro +++ b/tests/auto/declarative/qdeclarativeimageprovider/qdeclarativeimageprovider.pro @@ -10,3 +10,6 @@ SOURCES += tst_qdeclarativeimageprovider.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp b/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp index c5bdfc8..aca951b 100644 --- a/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp +++ b/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp @@ -43,6 +43,7 @@ #include <QtDeclarative/qdeclarativeengine.h> #include <QtDeclarative/qdeclarativeimageprovider.h> #include <private/qdeclarativeimage_p.h> +#include <QImageReader> // QDeclarativeImageProvider::request() is run in an idle thread where possible // Be generous in our timeout. @@ -76,28 +77,36 @@ private: class TestProvider : public QDeclarativeImageProvider { public: - QImage request(const QString &id) { - QImage image; - image.load(SRCDIR "/data/" + id); - return image; + QImage request(const QString &id, QSize *size, const QSize& requested_size) { + QImageReader io(SRCDIR "/data/" + id); + if (size) *size = io.size(); + if (requested_size.isValid()) + io.setScaledSize(requested_size); + return io.read(); } }; void tst_qdeclarativeimageprovider::imageSource_data() { QTest::addColumn<QString>("source"); + QTest::addColumn<QString>("properties"); + QTest::addColumn<QSize>("size"); QTest::addColumn<QString>("error"); - QTest::newRow("exists") << "image://test/exists.png" << ""; - QTest::newRow("missing") << "image://test/no-such-file.png" - << "\"Failed to get image from provider: image://test/no-such-file.png\" "; - QTest::newRow("unknown provider") << "image://bogus/exists.png" - << "\"Failed to get image from provider: image://bogus/exists.png\" "; + QTest::newRow("exists") << "image://test/exists.png" << "" << QSize(100,100) << ""; + QTest::newRow("scaled") << "image://test/exists.png" << "sourceSize: \"80x30\"" << QSize(80,30) << ""; + QTest::newRow("missing") << "image://test/no-such-file.png" << "" << QSize() + << "QML Image (file::2:1) Failed to get image from provider: image://test/no-such-file.png"; + QTest::newRow("unknown provider") << "image://bogus/exists.png" << "" << QSize() + << "QML Image (file::2:1) Failed to get image from provider: image://bogus/exists.png"; + } void tst_qdeclarativeimageprovider::imageSource() { QFETCH(QString, source); + QFETCH(QString, properties); + QFETCH(QSize, size); QFETCH(QString, error); if (!error.isEmpty()) @@ -106,7 +115,7 @@ void tst_qdeclarativeimageprovider::imageSource() engine.addImageProvider("test", new TestProvider); QVERIFY(engine.imageProvider("test") != 0); - QString componentStr = "import Qt 4.6\nImage { source: \"" + source + "\" }"; + QString componentStr = "import Qt 4.7\nImage { source: \"" + source + "\"; " + properties + " }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeImage *obj = qobject_cast<QDeclarativeImage*>(component.create()); @@ -118,8 +127,10 @@ void tst_qdeclarativeimageprovider::imageSource() if (error.isEmpty()) { TRY_WAIT(obj->status() == QDeclarativeImage::Ready); - QCOMPARE(obj->width(), 100.); - QCOMPARE(obj->height(), 100.); + QCOMPARE(obj->width(), 100.0); + QCOMPARE(obj->height(), 100.0); + QCOMPARE(obj->pixmap().width(), size.width()); + QCOMPARE(obj->pixmap().height(), size.height()); QCOMPARE(obj->fillMode(), QDeclarativeImage::Stretch); QCOMPARE(obj->progress(), 1.0); } else { @@ -135,7 +146,7 @@ void tst_qdeclarativeimageprovider::removeProvider() QVERIFY(engine.imageProvider("test2") != 0); // add provider, confirm it works - QString componentStr = "import Qt 4.6\nImage { source: \"image://test2/exists1.png\" }"; + QString componentStr = "import Qt 4.7\nImage { source: \"image://test2/exists1.png\" }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeImage *obj = qobject_cast<QDeclarativeImage*>(component.create()); @@ -147,7 +158,8 @@ void tst_qdeclarativeimageprovider::removeProvider() QCOMPARE(obj->width(), 100.0); // remove the provider and confirm - QString error("\"Failed to get image from provider: image://test2/exists2.png\" "); + QString error("QML Image (file::2:1) Failed to get image from provider: image://test2/exists2.png"); + QTest::ignoreMessage(QtWarningMsg, error.toUtf8()); engine.removeImageProvider("test2"); diff --git a/tests/auto/declarative/qdeclarativeinfo/data/NestedObject.qml b/tests/auto/declarative/qdeclarativeinfo/data/NestedObject.qml index cd5b426..548e498 100644 --- a/tests/auto/declarative/qdeclarativeinfo/data/NestedObject.qml +++ b/tests/auto/declarative/qdeclarativeinfo/data/NestedObject.qml @@ -1,7 +1,7 @@ import Qt 4.6 QtObject { - property var nested + property variant nested nested: QtObject {} } diff --git a/tests/auto/declarative/qdeclarativeinfo/data/nestedQmlObject.qml b/tests/auto/declarative/qdeclarativeinfo/data/nestedQmlObject.qml index a2ce78a..eac0b73 100644 --- a/tests/auto/declarative/qdeclarativeinfo/data/nestedQmlObject.qml +++ b/tests/auto/declarative/qdeclarativeinfo/data/nestedQmlObject.qml @@ -1,8 +1,8 @@ import Qt 4.6 QtObject { - property var nested + property variant nested nested: NestedObject { } - property var nested2: nested.nested + property variant nested2: nested.nested } diff --git a/tests/auto/declarative/qdeclarativeinfo/data/qmlObject.qml b/tests/auto/declarative/qdeclarativeinfo/data/qmlObject.qml index ce05f89..176636a 100644 --- a/tests/auto/declarative/qdeclarativeinfo/data/qmlObject.qml +++ b/tests/auto/declarative/qdeclarativeinfo/data/qmlObject.qml @@ -1,7 +1,7 @@ import Qt 4.6 QtObject { - property var nested + property variant nested nested: QtObject { } diff --git a/tests/auto/declarative/qdeclarativeinfo/qdeclarativeinfo.pro b/tests/auto/declarative/qdeclarativeinfo/qdeclarativeinfo.pro index 015c094..bb54d6c 100644 --- a/tests/auto/declarative/qdeclarativeinfo/qdeclarativeinfo.pro +++ b/tests/auto/declarative/qdeclarativeinfo/qdeclarativeinfo.pro @@ -5,3 +5,6 @@ macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativeinfo.cpp DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeinstruction/qdeclarativeinstruction.pro b/tests/auto/declarative/qdeclarativeinstruction/qdeclarativeinstruction.pro index b8f7d27..0daa9e5 100644 --- a/tests/auto/declarative/qdeclarativeinstruction/qdeclarativeinstruction.pro +++ b/tests/auto/declarative/qdeclarativeinstruction/qdeclarativeinstruction.pro @@ -4,3 +4,6 @@ SOURCES += tst_qdeclarativeinstruction.cpp macx:CONFIG -= app_bundle DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp b/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp index 636c5e3..f4df130 100644 --- a/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp +++ b/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp @@ -93,7 +93,7 @@ void tst_qdeclarativeinstruction::dump() QDeclarativeInstruction i; i.line = 2; i.type = QDeclarativeInstruction::SetId; - i.setId.value = 0; + i.setId.value = data->primitives.count() - 1; i.setId.index = 0; data->bytecode << i; } @@ -171,17 +171,17 @@ void tst_qdeclarativeinstruction::dump() i.line = 10; i.type = QDeclarativeInstruction::StoreString; i.storeString.propertyIndex = 7; - i.storeString.value = 1; + i.storeString.value = data->primitives.count() - 1; data->bytecode << i; } { - data->primitives << "http://www.nokia.com"; + data->urls << QUrl("http://www.nokia.com"); QDeclarativeInstruction i; i.line = 11; i.type = QDeclarativeInstruction::StoreUrl; i.storeUrl.propertyIndex = 8; - i.storeUrl.value = 2; + i.storeUrl.value = data->urls.count() - 1; data->bytecode << i; } @@ -290,7 +290,7 @@ void tst_qdeclarativeinstruction::dump() i.line = 23; i.type = QDeclarativeInstruction::StoreVariant; i.storeString.propertyIndex = 20; - i.storeString.value = 3; + i.storeString.value = data->primitives.count() - 1; data->bytecode << i; } @@ -326,7 +326,7 @@ void tst_qdeclarativeinstruction::dump() i.line = 27; i.type = QDeclarativeInstruction::StoreSignal; i.storeSignal.signalIndex = 2; - i.storeSignal.value = 4; + i.storeSignal.value = data->primitives.count() - 1; data->bytecode << i; } @@ -507,8 +507,34 @@ void tst_qdeclarativeinstruction::dump() { QDeclarativeInstruction i; + i.line = 48; + i.type = QDeclarativeInstruction::StoreImportedScript; + i.storeScript.value = 2; + data->bytecode << i; + } + + { + QDeclarativeInstruction i; i.line = 50; - i.type = (QDeclarativeInstruction::Type)(QDeclarativeInstruction::Defer + 1); // Non-existant + i.type = (QDeclarativeInstruction::Type)(1234); // Non-existant + data->bytecode << i; + } + + { + QDeclarativeInstruction i; + i.line = 51; + i.type = QDeclarativeInstruction::StoreVariantInteger; + i.storeInteger.value = 11; + i.storeInteger.propertyIndex = 32; + data->bytecode << i; + } + + { + QDeclarativeInstruction i; + i.line = 52; + i.type = QDeclarativeInstruction::StoreVariantDouble; + i.storeDouble.value = 33.7; + i.storeDouble.propertyIndex = 19; data->bytecode << i; } @@ -518,6 +544,7 @@ void tst_qdeclarativeinstruction::dump() << "-------------------------------------------------------------------------------" << "0\t\t0\tINIT\t\t\t0\t3\t-1\t-1" << "1\t\t1\tCREATE\t\t\t0\t\t\t\"Test\"" + << "1\t\t1\tCREATE_SIMPLE\t\t-1" << "2\t\t2\tSETID\t\t\t0\t\t\t\"testId\"" << "3\t\t3\tSET_DEFAULT" << "4\t\t4\tCREATE_COMPONENT\t3" @@ -527,7 +554,7 @@ void tst_qdeclarativeinstruction::dump() << "8\t\t8\tSTORE_INTEGER\t\t5\t9" << "9\t\t9\tSTORE_BOOL\t\t6\ttrue" << "10\t\t10\tSTORE_STRING\t\t7\t1\t\t\"Test String\"" - << "11\t\t11\tSTORE_URL\t\t8\t2\t\t\"http://www.nokia.com\"" + << "11\t\t11\tSTORE_URL\t\t8\t0\t\tQUrl(\"http://www.nokia.com\") " << "12\t\t12\tSTORE_COLOR\t\t9\t\t\t\"ff00ff00\"" << "13\t\t13\tSTORE_DATE\t\t10\t9" << "14\t\t14\tSTORE_TIME\t\t11\t33" @@ -539,11 +566,11 @@ void tst_qdeclarativeinstruction::dump() << "20\t\t20\tSTORE_RECT\t\t17\t2" << "21\t\t21\tSTORE_RECTF\t\t18\t19" << "22\t\t22\tSTORE_VECTOR3D\t\t19\t9" - << "23\t\t23\tSTORE_VARIANT\t\t20\t3\t\t\"color(1, 1, 1, 1)\"" + << "23\t\t23\tSTORE_VARIANT\t\t20\t2\t\t\"color(1, 1, 1, 1)\"" << "24\t\t24\tSTORE_OBJECT\t\t21" << "25\t\t25\tSTORE_VARIANT_OBJECT\t22" << "26\t\t26\tSTORE_INTERFACE\t\t23" - << "27\t\t27\tSTORE_SIGNAL\t\t2\t4\t\t\"console.log(1921)\"" + << "27\t\t27\tSTORE_SIGNAL\t\t2\t3\t\t\"console.log(1921)\"" << "28\t\t28\tSTORE_SCRIPT\t\t2" << "29\t\t29\tSTORE_SCRIPT_STRING\t24\t3\t1" << "30\t\t30\tASSIGN_SIGNAL_OBJECT\t0\t\t\t\"mySignal\"" @@ -564,7 +591,10 @@ void tst_qdeclarativeinstruction::dump() << "45\t\t47\tPOP_VALUE\t\t35\t8" << "46\t\t48\tDEFER\t\t\t7" << "47\t\tNA\tDEFER\t\t\t7" - << "48\t\t50\tXXX UNKOWN INSTRUCTION\t47" + << "48\t\t48\tSTORE_IMPORTED_SCRIPT\t2" + << "49\t\t50\tXXX UNKOWN INSTRUCTION\t1234" + << "50\t\t51\tSTORE_VARIANT_INTEGER\t\t32\t11" + << "51\t\t52\tSTORE_VARIANT_DOUBLE\t\t19\t33.7" << "-------------------------------------------------------------------------------"; messages = QStringList(); diff --git a/tests/auto/declarative/qdeclarativeitem/data/childrenProperty.qml b/tests/auto/declarative/qdeclarativeitem/data/childrenProperty.qml new file mode 100644 index 0000000..dcd4061 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeitem/data/childrenProperty.qml @@ -0,0 +1,14 @@ +import Qt 4.6 + +Item { + id: root + + property bool test1: root.children.length == 3 + property bool test2: root.children[0] == item1 + property bool test3: root.children[1] == item2 + property bool test4: root.children[2] == item3 + property bool test5: root.children[3] == null + + children: [ Item { id: item1 }, Item { id: item2 }, Item { id: item3 } ] +} + diff --git a/tests/auto/declarative/qdeclarativeitem/data/keynavigation.qml b/tests/auto/declarative/qdeclarativeitem/data/keynavigation.qml deleted file mode 100644 index 9281a17..0000000 --- a/tests/auto/declarative/qdeclarativeitem/data/keynavigation.qml +++ /dev/null @@ -1,39 +0,0 @@ -import Qt 4.6 - -Grid { - columns: 2 - width: 100; height: 100 - Rectangle { - id: item1 - objectName: "item1" - focus: true - width: 50; height: 50 - color: focus ? "red" : "lightgray" - KeyNavigation.right: item2 - KeyNavigation.down: item3 - } - Rectangle { - id: item2 - objectName: "item2" - width: 50; height: 50 - color: focus ? "red" : "lightgray" - KeyNavigation.left: item1 - KeyNavigation.down: item4 - } - Rectangle { - id: item3 - objectName: "item3" - width: 50; height: 50 - color: focus ? "red" : "lightgray" - KeyNavigation.right: item4 - KeyNavigation.up: item1 - } - Rectangle { - id: item4 - objectName: "item4" - width: 50; height: 50 - color: focus ? "red" : "lightgray" - KeyNavigation.left: item3 - KeyNavigation.up: item2 - } -} diff --git a/tests/auto/declarative/qdeclarativeitem/data/keynavigationtest.qml b/tests/auto/declarative/qdeclarativeitem/data/keynavigationtest.qml new file mode 100644 index 0000000..08da901 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeitem/data/keynavigationtest.qml @@ -0,0 +1,47 @@ +import Qt 4.6 + +Grid { + columns: 2 + width: 100; height: 100 + Rectangle { + id: item1 + objectName: "item1" + focus: true + width: 50; height: 50 + color: focus ? "red" : "lightgray" + KeyNavigation.right: item2 + KeyNavigation.down: item3 + KeyNavigation.tab: item2 + KeyNavigation.backtab: item4 + } + Rectangle { + id: item2 + objectName: "item2" + width: 50; height: 50 + color: focus ? "red" : "lightgray" + KeyNavigation.left: item1 + KeyNavigation.down: item4 + KeyNavigation.tab: item3 + KeyNavigation.backtab: item1 + } + Rectangle { + id: item3 + objectName: "item3" + width: 50; height: 50 + color: focus ? "red" : "lightgray" + KeyNavigation.right: item4 + KeyNavigation.up: item1 + KeyNavigation.tab: item4 + KeyNavigation.backtab: item2 + } + Rectangle { + id: item4 + objectName: "item4" + width: 50; height: 50 + color: focus ? "red" : "lightgray" + KeyNavigation.left: item3 + KeyNavigation.up: item2 + KeyNavigation.tab: item1 + KeyNavigation.backtab: item3 + } +} diff --git a/tests/auto/declarative/qdeclarativeitem/data/keys.qml b/tests/auto/declarative/qdeclarativeitem/data/keys.qml deleted file mode 100644 index f3c1f7b..0000000 --- a/tests/auto/declarative/qdeclarativeitem/data/keys.qml +++ /dev/null @@ -1,18 +0,0 @@ -import Qt 4.6 - -Item { - focus: true - Keys.onPressed: keysTestObject.keyPress(event.key, event.text, event.modifiers) - Keys.onReleased: { keysTestObject.keyRelease(event.key, event.text, event.modifiers); event.accepted = true; } - Keys.onReturnPressed: keysTestObject.keyPress(event.key, "Return", event.modifiers) - Keys.onDigit0Pressed: keysTestObject.keyPress(event.key, event.text, event.modifiers) - Keys.onDigit9Pressed: { event.accepted = false; keysTestObject.keyPress(event.key, event.text, event.modifiers) } - Keys.forwardTo: [ item2 ] - Keys.enabled: enableKeyHanding - - Item { - id: item2 - Keys.onPressed: keysTestObject.forwardedKey(event.key) - Keys.onReleased: keysTestObject.forwardedKey(event.key) - } -} diff --git a/tests/auto/declarative/qdeclarativeitem/data/keystest.qml b/tests/auto/declarative/qdeclarativeitem/data/keystest.qml new file mode 100644 index 0000000..7d34fc8 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeitem/data/keystest.qml @@ -0,0 +1,20 @@ +import Qt 4.6 + +Item { + focus: true + Keys.onPressed: keysTestObject.keyPress(event.key, event.text, event.modifiers) + Keys.onReleased: { keysTestObject.keyRelease(event.key, event.text, event.modifiers); event.accepted = true; } + Keys.onReturnPressed: keysTestObject.keyPress(event.key, "Return", event.modifiers) + Keys.onDigit0Pressed: keysTestObject.keyPress(event.key, event.text, event.modifiers) + Keys.onDigit9Pressed: { event.accepted = false; keysTestObject.keyPress(event.key, event.text, event.modifiers) } + Keys.onTabPressed: keysTestObject.keyPress(event.key, "Tab", event.modifiers) + Keys.onBacktabPressed: keysTestObject.keyPress(event.key, "Backtab", event.modifiers) + Keys.forwardTo: [ item2 ] + Keys.enabled: enableKeyHanding + + Item { + id: item2 + Keys.onPressed: keysTestObject.forwardedKey(event.key) + Keys.onReleased: keysTestObject.forwardedKey(event.key) + } +} diff --git a/tests/auto/declarative/qdeclarativeitem/data/mapCoordinates.qml b/tests/auto/declarative/qdeclarativeitem/data/mapCoordinates.qml new file mode 100644 index 0000000..40a2106 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeitem/data/mapCoordinates.qml @@ -0,0 +1,43 @@ +import Qt 4.6 + +Item { + id: root; objectName: "root" + width: 200; height: 200 + + Item { id: itemA; objectName: "itemA"; x: 50; y: 50 } + + Item { + x: 50; y: 50 + Item { id: itemB; objectName: "itemB"; x: 100; y: 100 } + } + + function mapAToB(x, y) { + var pos = itemA.mapToItem(itemB, x, y) + return Qt.point(pos.x, pos.y) + } + + function mapAFromB(x, y) { + var pos = itemA.mapFromItem(itemB, x, y) + return Qt.point(pos.x, pos.y) + } + + function mapAToNull(x, y) { + var pos = itemA.mapToItem(null, x, y) + return Qt.point(pos.x, pos.y) + } + + function mapAFromNull(x, y) { + var pos = itemA.mapFromItem(null, x, y) + return Qt.point(pos.x, pos.y) + } + + function checkMapAToInvalid(x, y) { + var pos = itemA.mapToItem(1122, x, y) + return pos.x == undefined && pos.y == undefined + } + + function checkMapAFromInvalid(x, y) { + var pos = itemA.mapFromItem(1122, x, y) + return pos.x == undefined && pos.y == undefined + } +} diff --git a/tests/auto/declarative/qdeclarativeitem/data/propertychanges.qml b/tests/auto/declarative/qdeclarativeitem/data/propertychanges.qml new file mode 100644 index 0000000..5f97408 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeitem/data/propertychanges.qml @@ -0,0 +1,10 @@ +import Qt 4.6 + +Item { + Item { + objectName: "item" + } + Item { + objectName: "parentItem" + } +} diff --git a/tests/auto/declarative/qdeclarativeitem/data/resourcesProperty.qml b/tests/auto/declarative/qdeclarativeitem/data/resourcesProperty.qml new file mode 100644 index 0000000..fa299be --- /dev/null +++ b/tests/auto/declarative/qdeclarativeitem/data/resourcesProperty.qml @@ -0,0 +1,21 @@ +import Qt 4.6 + +Item { + id: root + + property bool test1 + property bool test2 + property bool test3 + property bool test4 + property bool test5 + + Component.onCompleted: { + test1 = (root.resources.length >= 3) + test2 = root.resources[0] == item1 + test3 = root.resources[1] == item2 + test4 = root.resources[2] == item3 + test5 = root.resources[10] == null + } + + resources: [ Item { id: item1 }, Item { id: item2 }, Item { id: item3 } ] +} diff --git a/tests/auto/declarative/qdeclarativeitem/qdeclarativeitem.pro b/tests/auto/declarative/qdeclarativeitem/qdeclarativeitem.pro index 0eb2141..e834a4e 100644 --- a/tests/auto/declarative/qdeclarativeitem/qdeclarativeitem.pro +++ b/tests/auto/declarative/qdeclarativeitem/qdeclarativeitem.pro @@ -5,3 +5,6 @@ macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativeitem.cpp DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp index 36dcf1f..4400116 100644 --- a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp +++ b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp @@ -58,6 +58,14 @@ private slots: void keyNavigation(); void smooth(); void clip(); + void mapCoordinates(); + void mapCoordinates_data(); + void propertyChanges(); + void transforms(); + void transforms_data(); + + void childrenProperty(); + void resourcesProperty(); private: template<typename T> @@ -117,7 +125,7 @@ void tst_QDeclarativeItem::keys() canvas->rootContext()->setContextProperty("enableKeyHanding", QVariant(true)); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/keys.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/keystest.qml")); canvas->show(); qApp->processEvents(); @@ -176,6 +184,26 @@ void tst_QDeclarativeItem::keys() testObject->reset(); + key = QKeyEvent(QEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QCOMPARE(testObject->mKey, int(Qt::Key_Tab)); + QCOMPARE(testObject->mForwardedKey, int(Qt::Key_Tab)); + QCOMPARE(testObject->mText, QLatin1String("Tab")); + QVERIFY(testObject->mModifiers == Qt::NoModifier); + QVERIFY(key.isAccepted()); + + testObject->reset(); + + key = QKeyEvent(QEvent::KeyPress, Qt::Key_Backtab, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QCOMPARE(testObject->mKey, int(Qt::Key_Backtab)); + QCOMPARE(testObject->mForwardedKey, int(Qt::Key_Backtab)); + QCOMPARE(testObject->mText, QLatin1String("Backtab")); + QVERIFY(testObject->mModifiers == Qt::NoModifier); + QVERIFY(key.isAccepted()); + + testObject->reset(); + canvas->rootContext()->setContextProperty("enableKeyHanding", QVariant(false)); key = QKeyEvent(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier, "", false, 1); @@ -192,7 +220,7 @@ void tst_QDeclarativeItem::keyNavigation() QDeclarativeView *canvas = new QDeclarativeView(0); canvas->setFixedSize(240,320); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/keynavigation.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/keynavigationtest.qml")); canvas->show(); qApp->processEvents(); @@ -240,14 +268,34 @@ void tst_QDeclarativeItem::keyNavigation() item = findItem<QDeclarativeItem>(canvas->rootObject(), "item1"); QVERIFY(item); QVERIFY(item->hasFocus()); + + // tab + key = QKeyEvent(QEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QVERIFY(key.isAccepted()); + + item = findItem<QDeclarativeItem>(canvas->rootObject(), "item2"); + QVERIFY(item); + QVERIFY(item->hasFocus()); + + // backtab + key = QKeyEvent(QEvent::KeyPress, Qt::Key_Backtab, Qt::NoModifier, "", false, 1); + QApplication::sendEvent(canvas, &key); + QVERIFY(key.isAccepted()); + + item = findItem<QDeclarativeItem>(canvas->rootObject(), "item1"); + QVERIFY(item); + QVERIFY(item->hasFocus()); + + delete canvas; } void tst_QDeclarativeItem::smooth() { QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6; Item { smooth: false; }", QUrl::fromLocalFile("")); + component.setData("import Qt 4.7; Item { smooth: false; }", QUrl::fromLocalFile("")); QDeclarativeItem *item = qobject_cast<QDeclarativeItem*>(component.create()); - QSignalSpy spy(item, SIGNAL(smoothChanged())); + QSignalSpy spy(item, SIGNAL(smoothChanged(bool))); QVERIFY(item); QVERIFY(!item->smooth()); @@ -255,6 +303,10 @@ void tst_QDeclarativeItem::smooth() item->setSmooth(true); QVERIFY(item->smooth()); QCOMPARE(spy.count(),1); + QList<QVariant> arguments = spy.first(); + QVERIFY(arguments.count() == 1); + QVERIFY(arguments.at(0).toBool() == true); + item->setSmooth(true); QCOMPARE(spy.count(),1); @@ -263,20 +315,27 @@ void tst_QDeclarativeItem::smooth() QCOMPARE(spy.count(),2); item->setSmooth(false); QCOMPARE(spy.count(),2); + + delete item; } void tst_QDeclarativeItem::clip() { QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6\nItem { clip: false\n }", QUrl::fromLocalFile("")); + component.setData("import Qt 4.7\nItem { clip: false\n }", QUrl::fromLocalFile("")); QDeclarativeItem *item = qobject_cast<QDeclarativeItem*>(component.create()); - QSignalSpy spy(item, SIGNAL(clipChanged())); + QSignalSpy spy(item, SIGNAL(clipChanged(bool))); QVERIFY(item); QVERIFY(!item->clip()); item->setClip(true); QVERIFY(item->clip()); + + QList<QVariant> arguments = spy.first(); + QVERIFY(arguments.count() == 1); + QVERIFY(arguments.at(0).toBool() == true); + QCOMPARE(spy.count(),1); item->setClip(true); QCOMPARE(spy.count(),1); @@ -286,6 +345,193 @@ void tst_QDeclarativeItem::clip() QCOMPARE(spy.count(),2); item->setClip(false); QCOMPARE(spy.count(),2); + + delete item; +} + +void tst_QDeclarativeItem::mapCoordinates() +{ + QFETCH(int, x); + QFETCH(int, y); + + QDeclarativeView *canvas = new QDeclarativeView(0); + canvas->setFixedSize(300, 300); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/mapCoordinates.qml")); + canvas->show(); + qApp->processEvents(); + + QDeclarativeItem *root = qobject_cast<QDeclarativeItem*>(canvas->rootObject()); + QVERIFY(root != 0); + QDeclarativeItem *a = findItem<QDeclarativeItem>(canvas->rootObject(), "itemA"); + QVERIFY(a != 0); + QDeclarativeItem *b = findItem<QDeclarativeItem>(canvas->rootObject(), "itemB"); + QVERIFY(b != 0); + + QVariant result; + + QVERIFY(QMetaObject::invokeMethod(root, "mapAToB", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); + QCOMPARE(result.value<QPointF>(), qobject_cast<QGraphicsItem*>(a)->mapToItem(b, x, y)); + + QVERIFY(QMetaObject::invokeMethod(root, "mapAFromB", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); + QCOMPARE(result.value<QPointF>(), qobject_cast<QGraphicsItem*>(a)->mapFromItem(b, x, y)); + + QVERIFY(QMetaObject::invokeMethod(root, "mapAToNull", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); + QCOMPARE(result.value<QPointF>(), qobject_cast<QGraphicsItem*>(a)->mapToScene(x, y)); + + QVERIFY(QMetaObject::invokeMethod(root, "mapAFromNull", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); + QCOMPARE(result.value<QPointF>(), qobject_cast<QGraphicsItem*>(a)->mapFromScene(x, y)); + + QTest::ignoreMessage(QtWarningMsg, "mapToItem() given argument \"1122\" which is neither null nor an Item"); + QVERIFY(QMetaObject::invokeMethod(root, "checkMapAToInvalid", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); + QVERIFY(result.toBool()); + + QTest::ignoreMessage(QtWarningMsg, "mapFromItem() given argument \"1122\" which is neither null nor an Item"); + QVERIFY(QMetaObject::invokeMethod(root, "checkMapAFromInvalid", + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, x), Q_ARG(QVariant, y))); + QVERIFY(result.toBool()); + + delete canvas; +} + +void tst_QDeclarativeItem::mapCoordinates_data() +{ + QTest::addColumn<int>("x"); + QTest::addColumn<int>("y"); + + for (int i=-20; i<=20; i+=10) + QTest::newRow(QTest::toString(i)) << i << i; +} + +void tst_QDeclarativeItem::transforms_data() +{ + QTest::addColumn<QByteArray>("qml"); + QTest::addColumn<QMatrix>("matrix"); + QTest::newRow("translate") << QByteArray("Translate { x: 10; y: 20 }") + << QMatrix(1,0,0,1,10,20); + QTest::newRow("rotation") << QByteArray("Rotation { angle: 90 }") + << QMatrix(0,1,-1,0,0,0); + QTest::newRow("scale") << QByteArray("Scale { xScale: 1.5; yScale: -2 }") + << QMatrix(1.5,0,0,-2,0,0); + QTest::newRow("sequence") << QByteArray("[ Translate { x: 10; y: 20 }, Scale { xScale: 1.5; yScale: -2 } ]") + << QMatrix(1,0,0,1,10,20) * QMatrix(1.5,0,0,-2,0,0); +} + +void tst_QDeclarativeItem::transforms() +{ + QFETCH(QByteArray, qml); + QFETCH(QMatrix, matrix); + QDeclarativeComponent component(&engine); + component.setData("import Qt 4.7\nItem { transform: "+qml+"}", QUrl::fromLocalFile("")); + QDeclarativeItem *item = qobject_cast<QDeclarativeItem*>(component.create()); + QVERIFY(item); + QCOMPARE(item->sceneMatrix(), matrix); +} + +void tst_QDeclarativeItem::childrenProperty() +{ + QDeclarativeComponent component(&engine, SRCDIR "/data/childrenProperty.qml"); + + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test1").toBool(), true); + QCOMPARE(o->property("test2").toBool(), true); + QCOMPARE(o->property("test3").toBool(), true); + QCOMPARE(o->property("test4").toBool(), true); + QCOMPARE(o->property("test5").toBool(), true); + delete o; +} + +void tst_QDeclarativeItem::resourcesProperty() +{ + QDeclarativeComponent component(&engine, SRCDIR "/data/resourcesProperty.qml"); + + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test1").toBool(), true); + QCOMPARE(o->property("test2").toBool(), true); + QCOMPARE(o->property("test3").toBool(), true); + QCOMPARE(o->property("test4").toBool(), true); + QCOMPARE(o->property("test5").toBool(), true); + delete o; +} + +void tst_QDeclarativeItem::propertyChanges() +{ + QDeclarativeView *canvas = new QDeclarativeView(0); + canvas->setFixedSize(240,320); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + canvas->show(); + + QEvent wa(QEvent::WindowActivate); + QApplication::sendEvent(canvas, &wa); + QFocusEvent fe(QEvent::FocusIn); + QApplication::sendEvent(canvas, &fe); + + QDeclarativeItem *item = findItem<QDeclarativeItem>(canvas->rootObject(), "item"); + QDeclarativeItem *parentItem = findItem<QDeclarativeItem>(canvas->rootObject(), "parentItem"); + + QVERIFY(item); + QVERIFY(parentItem); + + QSignalSpy parentSpy(item, SIGNAL(parentChanged(QDeclarativeItem *))); + QSignalSpy widthSpy(item, SIGNAL(widthChanged())); + QSignalSpy heightSpy(item, SIGNAL(heightChanged())); + QSignalSpy baselineOffsetSpy(item, SIGNAL(baselineOffsetChanged(qreal))); + QSignalSpy childrenRectSpy(parentItem, SIGNAL(childrenRectChanged(QRectF))); + QSignalSpy focusSpy(item, SIGNAL(focusChanged(bool))); + QSignalSpy wantsFocusSpy(parentItem, SIGNAL(wantsFocusChanged(bool))); + + item->setParentItem(parentItem); + item->setWidth(100.0); + item->setHeight(200.0); + item->setFocus(true); + item->setBaselineOffset(10.0); + + QCOMPARE(item->parentItem(), parentItem); + QCOMPARE(parentSpy.count(),1); + QList<QVariant> parentArguments = parentSpy.first(); + QVERIFY(parentArguments.count() == 1); + QCOMPARE(item->parentItem(), qvariant_cast<QDeclarativeItem *>(parentArguments.at(0))); + + QCOMPARE(item->width(), 100.0); + QCOMPARE(widthSpy.count(),1); + + QCOMPARE(item->height(), 200.0); + QCOMPARE(heightSpy.count(),1); + + QCOMPARE(item->baselineOffset(), 10.0); + QCOMPARE(baselineOffsetSpy.count(),1); + QList<QVariant> baselineOffsetArguments = baselineOffsetSpy.first(); + QVERIFY(baselineOffsetArguments.count() == 1); + QCOMPARE(item->baselineOffset(), baselineOffsetArguments.at(0).toReal()); + + QCOMPARE(parentItem->childrenRect(), QRectF(0.0,0.0,100.0,200.0)); + QCOMPARE(childrenRectSpy.count(),2); + QList<QVariant> childrenRectArguments = childrenRectSpy.at(1); + QVERIFY(childrenRectArguments.count() == 1); + QCOMPARE(parentItem->childrenRect(), childrenRectArguments.at(0).toRectF()); + + QCOMPARE(item->hasFocus(), true); + QCOMPARE(focusSpy.count(),1); + QList<QVariant> focusArguments = focusSpy.first(); + QVERIFY(focusArguments.count() == 1); + QCOMPARE(focusArguments.at(0).toBool(), true); + + QCOMPARE(parentItem->hasFocus(), false); + QCOMPARE(parentItem->wantsFocus(), true); + QCOMPARE(wantsFocusSpy.count(),1); + QList<QVariant> wantsFocusArguments = wantsFocusSpy.first(); + QVERIFY(wantsFocusArguments.count() == 1); + QCOMPARE(wantsFocusArguments.at(0).toBool(), true); + + delete canvas; } template<typename T> diff --git a/tests/auto/declarative/qdeclarativelanguage/data/Alias2.qml b/tests/auto/declarative/qdeclarativelanguage/data/Alias2.qml index 6362b2d..f62c860 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/Alias2.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/Alias2.qml @@ -2,7 +2,7 @@ import Test 1.0 import Qt 4.6 QtObject { - property var other + property variant other other: MyTypeObject { id: obj } property alias enumAlias: obj.enumProperty; } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/Alias3.qml b/tests/auto/declarative/qdeclarativelanguage/data/Alias3.qml index d1e78f8..9050c3a 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/Alias3.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/Alias3.qml @@ -3,7 +3,7 @@ import Qt 4.6 QtObject { property alias obj : otherObj - property var child + property variant child child: QtObject { id: otherObj property int myValue: 10 diff --git a/tests/auto/declarative/qdeclarativelanguage/data/HelperAlias.qml b/tests/auto/declarative/qdeclarativelanguage/data/HelperAlias.qml index dc3b382..df8c851 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/HelperAlias.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/HelperAlias.qml @@ -2,7 +2,7 @@ import Test 1.0 import Qt 4.6 QtObject { - property var child + property variant child child: QtObject { id: obj } property alias objAlias: obj; } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/LocalLast.qml b/tests/auto/declarative/qdeclarativelanguage/data/LocalLast.qml new file mode 100644 index 0000000..a0706ad --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/LocalLast.qml @@ -0,0 +1,2 @@ +import Qt 4.6 +Text {} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/OnDestructionType.qml b/tests/auto/declarative/qdeclarativelanguage/data/OnDestructionType.qml new file mode 100644 index 0000000..e5a7cf8 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/OnDestructionType.qml @@ -0,0 +1,8 @@ +import Test 1.0 +import Qt 4.6 + +MyQmlObject { + property int a: Math.max(10, 9) + property int b: 11 + Component.onDestruction: console.log("Destruction " + a + " " + b); +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/alias.3.qml b/tests/auto/declarative/qdeclarativelanguage/data/alias.3.qml index e059937..0b968c2 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/alias.3.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/alias.3.qml @@ -1,7 +1,7 @@ import Qt 4.6 QtObject { - property var other + property variant other other: Alias { id: myAliasObject } property alias value: myAliasObject.aliasValue diff --git a/tests/auto/declarative/qdeclarativelanguage/data/alias.5.qml b/tests/auto/declarative/qdeclarativelanguage/data/alias.5.qml index 4316d0d..125c518 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/alias.5.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/alias.5.qml @@ -4,7 +4,7 @@ import Test 1.0 QtObject { property alias otherAlias: otherObject - property var other + property variant other other: MyQmlObject { id: otherObject value: 10 diff --git a/tests/auto/declarative/qdeclarativelanguage/data/alias.8.qml b/tests/auto/declarative/qdeclarativelanguage/data/alias.8.qml index 2b9ad85..629dd2a 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/alias.8.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/alias.8.qml @@ -1,7 +1,7 @@ import Qt 4.6 QtObject { - property var other + property variant other other: Alias3 { id: myAliasObject } property int value: myAliasObject.obj.myValue diff --git a/tests/auto/declarative/qdeclarativelanguage/data/alias.9.qml b/tests/auto/declarative/qdeclarativelanguage/data/alias.9.qml index a2a41a1..7c072e1 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/alias.9.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/alias.9.qml @@ -1,7 +1,7 @@ import Qt 4.6 QtObject { - property var other + property variant other other: Alias4 { id: myAliasObject } property int value: myAliasObject.obj.myValue diff --git a/tests/auto/declarative/qdeclarativelanguage/data/assignBasicTypes.qml b/tests/auto/declarative/qdeclarativelanguage/data/assignBasicTypes.qml index c86c96b..9fe0ded 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/assignBasicTypes.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/assignBasicTypes.qml @@ -10,8 +10,6 @@ MyTypeObject { floatProperty: 8.5 colorProperty: "red" dateProperty: "1982-11-25" - timeProperty: "11:11:31" - timeProperty: "11:11:32" timeProperty: "11:11:32" dateTimeProperty: "2009-05-12T13:22:01" pointProperty: "99,13" diff --git a/tests/auto/declarative/qdeclarativelanguage/data/assignLiteralToVariant.qml b/tests/auto/declarative/qdeclarativelanguage/data/assignLiteralToVariant.qml new file mode 100644 index 0000000..91fd833 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/assignLiteralToVariant.qml @@ -0,0 +1,14 @@ +import Qt 4.6 + +QtObject { + property variant test1: 1 + property variant test2: 1.7 + property variant test3: "Hello world!" + property variant test4: "#FF008800" + property variant test5: "10,10,10x10" + property variant test6: "10,10" + property variant test7: "10x10" + property variant test8: "100,100,100" + property variant test9: String("#FF008800") +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/assignObjectToVariant.qml b/tests/auto/declarative/qdeclarativelanguage/data/assignObjectToVariant.qml index 0ff9370..774762a 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/assignObjectToVariant.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/assignObjectToVariant.qml @@ -2,6 +2,6 @@ import Test 1.0 import Qt 4.6 QtObject { - property var a; + property variant a; a: MyQmlObject {} } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/component.3.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/component.3.errors.txt index 9a13142..450fc16 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/component.3.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/component.3.errors.txt @@ -1 +1 @@ -6:9:Invalid component id specification +6:9:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/componentCompositeType.qml b/tests/auto/declarative/qdeclarativelanguage/data/componentCompositeType.qml index 0a7249a..e745e91 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/componentCompositeType.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/componentCompositeType.qml @@ -1,7 +1,7 @@ import Qt 4.6 QtObject { - property var test + property variant test test: ComponentComposite {} } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/customOnProperty.qml b/tests/auto/declarative/qdeclarativelanguage/data/customOnProperty.qml new file mode 100644 index 0000000..7cd6a83 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/customOnProperty.qml @@ -0,0 +1,7 @@ +import Qt 4.6 + +QtObject { + property int on + + Component.onCompleted: on = 10 +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/defaultGrouped.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/defaultGrouped.errors.txt index 945d51b..32055f6 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/defaultGrouped.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/defaultGrouped.errors.txt @@ -1 +1 @@ -7:9:Invalid value in grouped property +7:9:Cannot assign a value directly to a grouped property diff --git a/tests/auto/declarative/qdeclarativelanguage/data/destroyedSignal.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/destroyedSignal.errors.txt new file mode 100644 index 0000000..3348494 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/destroyedSignal.errors.txt @@ -0,0 +1 @@ +4:5:Cannot assign to non-existent property "onDestroyed" diff --git a/tests/auto/declarative/qdeclarativelanguage/data/destroyedSignal.qml b/tests/auto/declarative/qdeclarativelanguage/data/destroyedSignal.qml new file mode 100644 index 0000000..4eab50a --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/destroyedSignal.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +QtObject { + onDestroyed: print("Hello World!") +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/doubleSignal.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/doubleSignal.errors.txt index 2aea251..e1f7ec5 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/doubleSignal.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/doubleSignal.errors.txt @@ -1 +1 @@ -5:5:Incorrectly specified signal +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/dynamicObject.1.qml b/tests/auto/declarative/qdeclarativelanguage/data/dynamicObject.1.qml index 85d1052..930bf2c 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/dynamicObject.1.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/dynamicObject.1.qml @@ -1,6 +1,6 @@ import Test 1.0 import Qt 4.6 -PropertyChanges { +MyCustomParserType { propa: a + 10 propb: Math.min(a, 10) propc: MyPropertyValueSource {} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/dynamicProperties.qml b/tests/auto/declarative/qdeclarativelanguage/data/dynamicProperties.qml index aef3269..6411609 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/dynamicProperties.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/dynamicProperties.qml @@ -9,6 +9,5 @@ QtObject { property color colorProperty: "red" property url urlProperty: "main.qml" property date dateProperty: "1945-09-02" - property var varProperty: "Hello World!" - property variant variantProperty: 12 + property variant varProperty: "Hello World!" } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/emptySignal.2.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/emptySignal.2.errors.txt new file mode 100644 index 0000000..8b20434 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/emptySignal.2.errors.txt @@ -0,0 +1 @@ +4:5:Incorrectly specified signal assignment diff --git a/tests/auto/declarative/qdeclarativelanguage/data/emptySignal.2.qml b/tests/auto/declarative/qdeclarativelanguage/data/emptySignal.2.qml new file mode 100644 index 0000000..c84fea3 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/emptySignal.2.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyQmlObject { + onBasicSignal { + } +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/enumTypes.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/enumTypes.errors.txt new file mode 100644 index 0000000..d4e0cc0 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/enumTypes.errors.txt @@ -0,0 +1 @@ +3:1:Element is not creatable. diff --git a/tests/auto/declarative/qdeclarativelanguage/data/enumTypes.qml b/tests/auto/declarative/qdeclarativelanguage/data/enumTypes.qml new file mode 100644 index 0000000..a723269 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/enumTypes.qml @@ -0,0 +1,4 @@ +import Qt 4.6 + +Font { +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/failingComponent.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/failingComponent.errors.txt index 0cf0ef3..364ca67 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/failingComponent.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/failingComponent.errors.txt @@ -1 +1 @@ -3:5:Type FailingComponent unavailable +3:5:FailingComponent is not a type diff --git a/tests/auto/declarative/qdeclarativelanguage/data/i18nScript.qml b/tests/auto/declarative/qdeclarativelanguage/data/i18nScript.qml index 942ed90..e77cb52 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/i18nScript.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/i18nScript.qml @@ -1,12 +1,9 @@ import Test 1.0 MyTypeObject { - Script { - function val() { - var áâãäå = 20 - return "Test áâãäå: " + áâãäå - } - + function val() { + var áâãäå = 20 + return "Test áâãäå: " + áâãäå } stringProperty: val() } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/idProperty.qml b/tests/auto/declarative/qdeclarativelanguage/data/idProperty.qml index 90c1483..bf048ea 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/idProperty.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/idProperty.qml @@ -1,6 +1,6 @@ import Test 1.0 MyContainer { - property var object : myObjectId + property variant object : myObjectId MyTypeObject { id: "myObjectId" diff --git a/tests/auto/declarative/qdeclarativelanguage/data/importNewerVersion.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/importNewerVersion.errors.txt new file mode 100644 index 0000000..413f096 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/importNewerVersion.errors.txt @@ -0,0 +1 @@ +1:1:module "Test" version 2.0 is not installed diff --git a/tests/auto/declarative/qdeclarativelanguage/data/importNewerVersion.qml b/tests/auto/declarative/qdeclarativelanguage/data/importNewerVersion.qml new file mode 100644 index 0000000..c4a0d38 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/importNewerVersion.qml @@ -0,0 +1,3 @@ +import Test 2.0 + +MyTypeObject { } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/importNonExist.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/importNonExist.errors.txt new file mode 100644 index 0000000..1baf05c --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/importNonExist.errors.txt @@ -0,0 +1 @@ +2:1:"will-not-be-found": no such directory diff --git a/tests/auto/declarative/qdeclarativelanguage/data/importNonExist.qml b/tests/auto/declarative/qdeclarativelanguage/data/importNonExist.qml new file mode 100644 index 0000000..ec6aa2b --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/importNonExist.qml @@ -0,0 +1,5 @@ +// imports... +import "will-not-be-found" +import Qt 4.6 + +Rectangle { } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/importscript.1.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/importscript.1.errors.txt new file mode 100644 index 0000000..ebc936d --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/importscript.1.errors.txt @@ -0,0 +1 @@ +1:8:Script import requires a qualifier diff --git a/tests/auto/declarative/qdeclarativelanguage/data/importscript.1.qml b/tests/auto/declarative/qdeclarativelanguage/data/importscript.1.qml new file mode 100644 index 0000000..2b2ab6b --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/importscript.1.qml @@ -0,0 +1,3 @@ +import "test.js" + +Item { } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.1.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.1.qml index 1167e39..9012aa6 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.1.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.1.qml @@ -1,6 +1,6 @@ import Qt 4.6 QtObject { - property var o; + property variant o; o.blah: 10 } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.10.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.10.errors.txt new file mode 100644 index 0000000..1fcb1b6 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.10.errors.txt @@ -0,0 +1 @@ +4:14:Cannot assign a value directly to a grouped property diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.10.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.10.qml new file mode 100644 index 0000000..41aa3e2 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.10.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + grouped: "10x10" + grouped.value: 10 +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.6.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.6.errors.txt index 8331725..e1f7ec5 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.6.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.6.errors.txt @@ -1 +1 @@ -5:18:Single property assignment expected +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.8.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.8.errors.txt new file mode 100644 index 0000000..fa0da21 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.8.errors.txt @@ -0,0 +1 @@ +5:19:Property has already been assigned a value diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.8.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.8.qml new file mode 100644 index 0000000..56fca9b --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.8.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + pointProperty: "10x10" + pointProperty.x: 10 +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.9.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.9.errors.txt new file mode 100644 index 0000000..6d837a7 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.9.errors.txt @@ -0,0 +1 @@ +5:20:Property has already been assigned a value diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.9.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.9.qml new file mode 100644 index 0000000..982ab26 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidGroupedProperty.9.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + pointProperty.x: 10 + pointProperty: "10x10" +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.2.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.2.errors.txt index 56e3eeb..2c6b8bf 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.2.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.2.errors.txt @@ -1,2 +1,2 @@ -3:5:"" is not a valid object id +3:9:Invalid empty ID diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.4.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.4.errors.txt index cfe8756..c721fe9 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.4.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.4.errors.txt @@ -1 +1 @@ -4:5:Invalid use of id property +4:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.6.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.6.errors.txt index 160e8b5..7251de1 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.6.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.6.errors.txt @@ -1 +1 @@ -3:5:"StartsWithUpperCase" is not a valid object id +3:9:IDs cannot start with an uppercase letter diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.7.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.7.errors.txt new file mode 100644 index 0000000..e4fd1db --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.7.errors.txt @@ -0,0 +1 @@ +3:9:ID illegally masks global JavaScript property diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.7.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.7.qml new file mode 100644 index 0000000..d4bc539 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.7.qml @@ -0,0 +1,5 @@ +import Test 1.0 +MyQmlObject { + id: gc +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.8.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.8.errors.txt new file mode 100644 index 0000000..b03ec6c --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.8.errors.txt @@ -0,0 +1 @@ +3:9:IDs must contain only letters, numbers, and underscores diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.8.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.8.qml new file mode 100644 index 0000000..1ea615c --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.8.qml @@ -0,0 +1,5 @@ +import Test 1.0 +MyQmlObject { + id: hello.world +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.9.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.9.errors.txt new file mode 100644 index 0000000..c010e79 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.9.errors.txt @@ -0,0 +1 @@ +3:9:IDs must start with a letter or underscore diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.9.qml b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.9.qml new file mode 100644 index 0000000..57474b7 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.9.qml @@ -0,0 +1,5 @@ +import Test 1.0 +MyQmlObject { + id: "3hello" +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.errors.txt index 1ca678c..c010e79 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/invalidID.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/invalidID.errors.txt @@ -1 +1 @@ -3:5:"1" is not a valid object id +3:9:IDs must start with a letter or underscore diff --git a/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/InstalledTest.qml b/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/InstalledTest.qml index d8a22a8..38cf6bb 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/InstalledTest.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/InstalledTest.qml @@ -1,2 +1,2 @@ -import Qt 4.6 -Rectangle {} +import Qt 4.6 as Qt +Qt.Rectangle {} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/LocalLast.qml b/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/LocalLast.qml new file mode 100644 index 0000000..d8a22a8 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/LocalLast.qml @@ -0,0 +1,2 @@ +import Qt 4.6 +Rectangle {} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/qmldir b/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/qmldir index eeb9a05..0adb0f6 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/qmldir +++ b/tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/qmldir @@ -1,4 +1,5 @@ Rectangle 1.5 InstalledTest2.qml +LocalLast 1.0 LocalLast.qml InstalledTest 1.4 InstalledTest2.qml InstalledTest 1.0 InstalledTest.qml InstalledTestTP 0.0 InstalledTest.qml diff --git a/tests/auto/declarative/qdeclarativelanguage/data/listAssignment.3.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/listAssignment.3.errors.txt index 8c7b7e9..c721fe9 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/listAssignment.3.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/listAssignment.3.errors.txt @@ -1 +1 @@ -4:15:Can only assign one binding to lists +4:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/method.1.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/method.1.errors.txt new file mode 100644 index 0000000..b10984f --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/method.1.errors.txt @@ -0,0 +1 @@ +3:1:Method names cannot begin with an upper case letter diff --git a/tests/auto/declarative/qdeclarativelanguage/data/method.1.qml b/tests/auto/declarative/qdeclarativelanguage/data/method.1.qml new file mode 100644 index 0000000..d9794b4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/method.1.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +QtObject { + function MyMethod() {} +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.1.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.1.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.1.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.1.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.1.qml new file mode 100644 index 0000000..649c49e --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.1.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + intProperty: 10 + intProperty: 11 +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.10.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.10.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.10.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.10.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.10.qml new file mode 100644 index 0000000..bc21db9 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.10.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + property int a: 10 + a: 11 +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.2.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.2.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.2.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.2.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.2.qml new file mode 100644 index 0000000..abcd216 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.2.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + intProperty: 10 + intProperty: a + 10 +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.3.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.3.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.3.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.3.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.3.qml new file mode 100644 index 0000000..77eaba0 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.3.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + intProperty: a + 10 + intProperty: 10 +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.4.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.4.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.4.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.4.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.4.qml new file mode 100644 index 0000000..c16d04f --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.4.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + intProperty: 10 + intProperty: MyTypeObject {} +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.5.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.5.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.5.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.5.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.5.qml new file mode 100644 index 0000000..2980c5b --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.5.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyContainer { + children: MyContainer {} + children: MyContainer {} +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.6.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.6.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.6.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.6.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.6.qml new file mode 100644 index 0000000..492c720 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.6.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyContainer { + children: MyContainer {} + children: [ MyContainer {}, MyContainer {} ] +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.7.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.7.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.7.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.7.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.7.qml new file mode 100644 index 0000000..2a9c1d0 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.7.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyContainer { + children: [ MyContainer {}, MyContainer {} ] + children: MyContainer {} +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.8.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.8.errors.txt new file mode 100644 index 0000000..450fc16 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.8.errors.txt @@ -0,0 +1 @@ +6:9:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.8.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.8.qml new file mode 100644 index 0000000..052437e --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.8.qml @@ -0,0 +1,8 @@ +import Test 1.0 + +MyTypeObject { + grouped { + value: 10 + value: 11 + } +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.9.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.9.errors.txt new file mode 100644 index 0000000..e1f7ec5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.9.errors.txt @@ -0,0 +1 @@ +5:5:Property value set multiple times diff --git a/tests/auto/declarative/qdeclarativelanguage/data/multiSet.9.qml b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.9.qml new file mode 100644 index 0000000..e2e954f --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/multiSet.9.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + grouped.value: 10 + grouped.value: 11 +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/onDestruction.qml b/tests/auto/declarative/qdeclarativelanguage/data/onDestruction.qml new file mode 100644 index 0000000..7ebae7b --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/onDestruction.qml @@ -0,0 +1,17 @@ +import Test 1.0 +import Qt 4.6 + +MyTypeObject { + // We set a and b to ensure that onCompleted is executed after bindings and + // constants have been assigned + property int a: Math.min(6, 7) + Component.onDestruction: console.log("Destruction " + a + " " + nestedObject.b) + + objectProperty: OnDestructionType { + qmlobjectProperty: MyQmlObject { + id: nestedObject + property int b: 10 + Component.onDestruction: console.log("Destruction " + a + " " + nestedObject.b) + } + } +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/property.6.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/property.6.errors.txt new file mode 100644 index 0000000..9e8d454 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/property.6.errors.txt @@ -0,0 +1 @@ +4:5:Property names cannot begin with an upper case letter diff --git a/tests/auto/declarative/qdeclarativelanguage/data/property.6.qml b/tests/auto/declarative/qdeclarativelanguage/data/property.6.qml new file mode 100644 index 0000000..f39bed3 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/property.6.qml @@ -0,0 +1,6 @@ +import Qt 4.6 + +QtObject { + property int Hello +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/property.7.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/property.7.errors.txt new file mode 100644 index 0000000..9e8d454 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/property.7.errors.txt @@ -0,0 +1 @@ +4:5:Property names cannot begin with an upper case letter diff --git a/tests/auto/declarative/qdeclarativelanguage/data/property.7.qml b/tests/auto/declarative/qdeclarativelanguage/data/property.7.qml new file mode 100644 index 0000000..502eb22 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/property.7.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +QtObject { + property int Hello: 10 +} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.2.qml b/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.2.qml index 57a6070..e48526a 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.2.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.2.qml @@ -1,5 +1,5 @@ import Test 1.0 MyTypeObject { - intProperty : MyCompositeValueSource {} + MyCompositeValueSource on intProperty {} } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.qml b/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.qml index ad71fcf..22aa682 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/propertyValueSource.qml @@ -1,4 +1,4 @@ import Test 1.0 MyTypeObject { - intProperty : MyPropertyValueSource {} + MyPropertyValueSource on intProperty {} } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/readOnly.3.qml b/tests/auto/declarative/qdeclarativelanguage/data/readOnly.3.qml index cd86a48..a4a976e 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/readOnly.3.qml +++ b/tests/auto/declarative/qdeclarativelanguage/data/readOnly.3.qml @@ -2,7 +2,7 @@ import Test 1.0 import Qt 4.6 QtObject { - property var child + property variant child child: HelperAlias { objAlias: QtObject {} } } diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.1.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/script.1.errors.txt deleted file mode 100644 index 50518cc..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.1.errors.txt +++ /dev/null @@ -1 +0,0 @@ -3:1:Invalid use of Script block diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.1.qml b/tests/auto/declarative/qdeclarativelanguage/data/script.1.qml deleted file mode 100644 index 8dac8b7..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.1.qml +++ /dev/null @@ -1,4 +0,0 @@ -import Qt 4.6 - -Script { -} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.10.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/script.10.errors.txt deleted file mode 100644 index 13f47d1..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.10.errors.txt +++ /dev/null @@ -1 +0,0 @@ -6:9:Component elements may not contain script blocks diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.10.qml b/tests/auto/declarative/qdeclarativelanguage/data/script.10.qml deleted file mode 100644 index 516e878..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.10.qml +++ /dev/null @@ -1,9 +0,0 @@ -import Qt 4.6 - -Item { - Component { - Item {} - Script {} - } -} - diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.11.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/script.11.errors.txt deleted file mode 100644 index a664203..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.11.errors.txt +++ /dev/null @@ -1 +0,0 @@ -5:9:Invalid Script block diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.11.qml b/tests/auto/declarative/qdeclarativelanguage/data/script.11.qml deleted file mode 100644 index 6d2d598..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.11.qml +++ /dev/null @@ -1,7 +0,0 @@ -import Qt 4.6 - -QtObject { - Script { - QtObject {} - } -} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.12.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/script.12.errors.txt deleted file mode 100644 index f8297f5..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.12.errors.txt +++ /dev/null @@ -1 +0,0 @@ -4:5:JavaScript declaration outside Script element diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.12.qml b/tests/auto/declarative/qdeclarativelanguage/data/script.12.qml deleted file mode 100644 index 9ecb5d9..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.12.qml +++ /dev/null @@ -1,6 +0,0 @@ -import Qt 4.6 - -QtObject { - var a -} - diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.2.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/script.2.errors.txt deleted file mode 100644 index 8fb3bbd..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.2.errors.txt +++ /dev/null @@ -1 +0,0 @@ -5:9:Properties cannot be set on Script block diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.2.qml b/tests/auto/declarative/qdeclarativelanguage/data/script.2.qml deleted file mode 100644 index dce1a41..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.2.qml +++ /dev/null @@ -1,7 +0,0 @@ -import Qt 4.6 - -QtObject { - Script { - id: myScript - } -} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.3.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/script.3.errors.txt deleted file mode 100644 index 8fb3bbd..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.3.errors.txt +++ /dev/null @@ -1 +0,0 @@ -5:9:Properties cannot be set on Script block diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.3.qml b/tests/auto/declarative/qdeclarativelanguage/data/script.3.qml deleted file mode 100644 index 8621a9a..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.3.qml +++ /dev/null @@ -1,7 +0,0 @@ -import Qt 4.6 - -QtObject { - Script { - hello: world - } -} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.4.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/script.4.errors.txt deleted file mode 100644 index 49a507f..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.4.errors.txt +++ /dev/null @@ -1 +0,0 @@ -5:9:Invalid Script source value diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.4.qml b/tests/auto/declarative/qdeclarativelanguage/data/script.4.qml deleted file mode 100644 index d89817c..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.4.qml +++ /dev/null @@ -1,8 +0,0 @@ -import Qt 4.6 - -QtObject { - Script { - source: 10 - } -} - diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.5.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/script.5.errors.txt deleted file mode 100644 index 49a507f..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.5.errors.txt +++ /dev/null @@ -1 +0,0 @@ -5:9:Invalid Script source value diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.5.qml b/tests/auto/declarative/qdeclarativelanguage/data/script.5.qml deleted file mode 100644 index 8986b3b..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.5.qml +++ /dev/null @@ -1,9 +0,0 @@ -import Qt 4.6 - -QtObject { - Script { - source: "hello" + ".js" - } -} - - diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.6.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/script.6.errors.txt deleted file mode 100644 index 4e53b6b..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.6.errors.txt +++ /dev/null @@ -1 +0,0 @@ -5:9:Invalid Script block. Specify either the source property or inline script diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.6.qml b/tests/auto/declarative/qdeclarativelanguage/data/script.6.qml deleted file mode 100644 index 07e9d78..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.6.qml +++ /dev/null @@ -1,11 +0,0 @@ -import Qt 4.6 - -QtObject { - Script { - source: "test.js" - function helloWorld() {} - } -} - - - diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.7.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/script.7.errors.txt deleted file mode 100644 index dc15ddf..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.7.errors.txt +++ /dev/null @@ -1 +0,0 @@ -5:9:Variable declarations not allow in inline Script blocks diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.7.qml b/tests/auto/declarative/qdeclarativelanguage/data/script.7.qml deleted file mode 100644 index fa905e6..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.7.qml +++ /dev/null @@ -1,11 +0,0 @@ -import Qt 4.6 - -QtObject { - Script { - var a = 10; - } -} - - - - diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.8.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/script.8.errors.txt deleted file mode 100644 index b5bf1a8..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.8.errors.txt +++ /dev/null @@ -1 +0,0 @@ -6:9:Invalid Script source value diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.8.qml b/tests/auto/declarative/qdeclarativelanguage/data/script.8.qml deleted file mode 100644 index f600c88..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.8.qml +++ /dev/null @@ -1,9 +0,0 @@ -import Qt 4.6 - -QtObject { - Script { - source: "test.js" - source: "test2.js" - } -} - diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.9.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/script.9.errors.txt deleted file mode 100644 index 41e8d46..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.9.errors.txt +++ /dev/null @@ -1 +0,0 @@ -5:9:Component elements may not contain script blocks diff --git a/tests/auto/declarative/qdeclarativelanguage/data/script.9.qml b/tests/auto/declarative/qdeclarativelanguage/data/script.9.qml deleted file mode 100644 index 79aa504..0000000 --- a/tests/auto/declarative/qdeclarativelanguage/data/script.9.qml +++ /dev/null @@ -1,7 +0,0 @@ -import Qt 4.6 - -Item { - Component { - Script {} - } -} diff --git a/tests/auto/declarative/qdeclarativelanguage/data/signal.4.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/signal.4.errors.txt new file mode 100644 index 0000000..d96f9e3 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/signal.4.errors.txt @@ -0,0 +1 @@ +3:1:Signal names cannot begin with an upper case letter diff --git a/tests/auto/declarative/qdeclarativelanguage/data/signal.4.qml b/tests/auto/declarative/qdeclarativelanguage/data/signal.4.qml new file mode 100644 index 0000000..7279a46 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/data/signal.4.qml @@ -0,0 +1,6 @@ +import Qt 4.6 + +QtObject { + signal MySignal +} + diff --git a/tests/auto/declarative/qdeclarativelanguage/data/unregisteredObject.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/unregisteredObject.errors.txt index 347db05..10e5fb2 100644 --- a/tests/auto/declarative/qdeclarativelanguage/data/unregisteredObject.errors.txt +++ b/tests/auto/declarative/qdeclarativelanguage/data/unregisteredObject.errors.txt @@ -1 +1 @@ -2:1:Type UnregisteredObjectType unavailable +2:1:UnregisteredObjectType is not a type diff --git a/tests/auto/declarative/qdeclarativelanguage/qdeclarativelanguage.pro b/tests/auto/declarative/qdeclarativelanguage/qdeclarativelanguage.pro index d7c1def..5771469 100644 --- a/tests/auto/declarative/qdeclarativelanguage/qdeclarativelanguage.pro +++ b/tests/auto/declarative/qdeclarativelanguage/qdeclarativelanguage.pro @@ -12,3 +12,5 @@ HEADERS += ../shared/testhttpserver.h SOURCES += ../shared/testhttpserver.cpp DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test diff --git a/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/TestNamed.qml b/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/TestNamed.qml new file mode 100644 index 0000000..672cb8f --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/TestNamed.qml @@ -0,0 +1 @@ +NamedLocal { } diff --git a/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/UndeclaredLocal.qml b/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/UndeclaredLocal.qml new file mode 100644 index 0000000..836c20a --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/UndeclaredLocal.qml @@ -0,0 +1,3 @@ +import Qt 4.6 + +Image { source: "pics/blue.png" } diff --git a/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/WrongTestLocal.qml b/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/WrongTestLocal.qml new file mode 100644 index 0000000..8dcb7be --- /dev/null +++ b/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/WrongTestLocal.qml @@ -0,0 +1 @@ +UndeclaredInternal {} diff --git a/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/qmldir b/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/qmldir index b32f82b..60150f8 100644 --- a/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/qmldir +++ b/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/qmldir @@ -1,3 +1,5 @@ -Test 0.0 Test.qml -TestSubDir 0.0 TestSubDir.qml -TestLocal 0.0 TestLocal.qml +Test Test.qml +TestSubDir TestSubDir.qml +TestLocal TestLocal.qml +NamedLocal LocalInternal.qml +internal LocalInternal LocalInternal.qml diff --git a/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/subdir/qmldir b/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/subdir/qmldir index f7016c7..a54f7df 100644 --- a/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/subdir/qmldir +++ b/tests/auto/declarative/qdeclarativelanguage/qtest/declarative/qmllanguage/subdir/qmldir @@ -1 +1 @@ -SubTest 0.0 SubTest.qml +SubTest SubTest.qml diff --git a/tests/auto/declarative/qdeclarativelanguage/testtypes.cpp b/tests/auto/declarative/qdeclarativelanguage/testtypes.cpp index 9ffe28a..623775a 100644 --- a/tests/auto/declarative/qdeclarativelanguage/testtypes.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/testtypes.cpp @@ -42,15 +42,18 @@ void registerTypes() { - QML_REGISTER_INTERFACE(MyInterface); - QML_REGISTER_TYPE(Test,1,0,MyQmlObject,MyQmlObject); - QML_REGISTER_TYPE(Test,1,0,MyTypeObject,MyTypeObject); - QML_REGISTER_TYPE(Test,1,0,MyContainer,MyContainer); - QML_REGISTER_TYPE(Test,1,0,MyPropertyValueSource,MyPropertyValueSource); - QML_REGISTER_TYPE(Test,1,0,MyDotPropertyObject,MyDotPropertyObject); - QML_REGISTER_TYPE(Test,1,0,MyNamespacedType,MyNamespace::MyNamespacedType); - QML_REGISTER_TYPE(Test,1,0,MySecondNamespacedType,MyNamespace::MySecondNamespacedType); - QML_REGISTER_NOCREATE_TYPE(MyGroupedObject); + qmlRegisterInterface<MyInterface>("MyInterface"); + qmlRegisterType<MyQmlObject>("Test",1,0,"MyQmlObject"); + qmlRegisterType<MyTypeObject>("Test",1,0,"MyTypeObject"); + qmlRegisterType<MyContainer>("Test",1,0,"MyContainer"); + qmlRegisterType<MyPropertyValueSource>("Test",1,0,"MyPropertyValueSource"); + qmlRegisterType<MyDotPropertyObject>("Test",1,0,"MyDotPropertyObject"); + qmlRegisterType<MyNamespace::MyNamespacedType>("Test",1,0,"MyNamespacedType"); + qmlRegisterType<MyNamespace::MySecondNamespacedType>("Test",1,0,"MySecondNamespacedType"); + qmlRegisterType<MyGroupedObject>(); + + qmlRegisterCustomType<MyCustomParserType>("Test", 1, 0, "MyCustomParserType", "MyCustomParserType", + new MyCustomParserTypeParser); } QVariant myCustomVariantTypeConverter(const QString &data) diff --git a/tests/auto/declarative/qdeclarativelanguage/testtypes.h b/tests/auto/declarative/qdeclarativelanguage/testtypes.h index 8ac7aa6..8c163a5 100644 --- a/tests/auto/declarative/qdeclarativelanguage/testtypes.h +++ b/tests/auto/declarative/qdeclarativelanguage/testtypes.h @@ -54,6 +54,8 @@ #include <QtDeclarative/qdeclarativescriptstring.h> #include <QtDeclarative/qdeclarativeproperty.h> +#include <private/qdeclarativecustomparser_p.h> + QVariant myCustomVariantTypeConverter(const QString &data); class MyInterface @@ -62,7 +64,10 @@ public: MyInterface() : id(913) {} int id; }; + +QT_BEGIN_NAMESPACE Q_DECLARE_INTERFACE(MyInterface, "com.trolltech.Qt.Test.MyInterface"); +QT_END_NAMESPACE QML_DECLARE_INTERFACE(MyInterface); struct MyCustomVariantType @@ -75,17 +80,20 @@ Q_DECLARE_METATYPE(MyCustomVariantType); class MyAttachedObject : public QObject { Q_OBJECT - Q_PROPERTY(int value READ value WRITE setValue) + Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged) Q_PROPERTY(int value2 READ value2 WRITE setValue2) public: MyAttachedObject(QObject *parent) : QObject(parent), m_value(0), m_value2(0) {} int value() const { return m_value; } - void setValue(int v) { m_value = v; } + void setValue(int v) { if (m_value != v) { m_value = v; emit valueChanged(); } } int value2() const { return m_value2; } void setValue2(int v) { m_value2 = v; } +signals: + void valueChanged(); + private: int m_value; int m_value2; @@ -100,8 +108,8 @@ class MyQmlObject : public QObject, public MyInterface, public QDeclarativeParse Q_PROPERTY(QRect rect READ rect WRITE setRect) Q_PROPERTY(QMatrix matrix READ matrix WRITE setMatrix) //assumed to be unsupported by QML Q_PROPERTY(MyInterface *interfaceProperty READ interface WRITE setInterface) - Q_PROPERTY(int onLiteralSignal READ onLiteralSignal WRITE setOnLiteralSignal); - Q_PROPERTY(MyCustomVariantType customType READ customType WRITE setCustomType); + Q_PROPERTY(int onLiteralSignal READ onLiteralSignal WRITE setOnLiteralSignal) + Q_PROPERTY(MyCustomVariantType customType READ customType WRITE setCustomType) Q_PROPERTY(MyQmlObject *qmlobjectProperty READ qmlobject WRITE setQmlobject) Q_PROPERTY(int propertyWithNotify READ propertyWithNotify WRITE setPropertyWithNotify NOTIFY oddlyNamedNotifySignal) @@ -129,7 +137,7 @@ public: static MyAttachedObject *qmlAttachedProperties(QObject *other) { return new MyAttachedObject(other); } - Q_CLASSINFO("DefaultMethod", "basicSlot()"); + Q_CLASSINFO("DefaultMethod", "basicSlot()") int onLiteralSignal() const { return m_value; } void setOnLiteralSignal(int v) { m_value = v; } @@ -165,12 +173,17 @@ QML_DECLARE_TYPE(MyQmlObject); class MyGroupedObject : public QObject { Q_OBJECT - Q_PROPERTY(QDeclarativeScriptString script READ script WRITE setScript); + Q_PROPERTY(QDeclarativeScriptString script READ script WRITE setScript) + Q_PROPERTY(int value READ value WRITE setValue) public: QDeclarativeScriptString script() const { return m_script; } void setScript(const QDeclarativeScriptString &s) { m_script = s; } + int value() const { return m_value; } + void setValue(int v) { m_value = v; } + private: + int m_value; QDeclarativeScriptString m_script; }; @@ -183,36 +196,36 @@ class MyTypeObject : public QObject Q_ENUMS(MyEnum) Q_FLAGS(MyFlags) - Q_PROPERTY(QString id READ id WRITE setId); - Q_PROPERTY(QObject *objectProperty READ objectProperty WRITE setObjectProperty); - Q_PROPERTY(QDeclarativeComponent *componentProperty READ componentProperty WRITE setComponentProperty); - Q_PROPERTY(MyFlags flagProperty READ flagProperty WRITE setFlagProperty); - Q_PROPERTY(MyEnum enumProperty READ enumProperty WRITE setEnumProperty); - Q_PROPERTY(QString stringProperty READ stringProperty WRITE setStringProperty); - Q_PROPERTY(uint uintProperty READ uintProperty WRITE setUintProperty); - Q_PROPERTY(int intProperty READ intProperty WRITE setIntProperty); - Q_PROPERTY(qreal realProperty READ realProperty WRITE setRealProperty); - Q_PROPERTY(double doubleProperty READ doubleProperty WRITE setDoubleProperty); - Q_PROPERTY(float floatProperty READ floatProperty WRITE setFloatProperty); - Q_PROPERTY(QColor colorProperty READ colorProperty WRITE setColorProperty); - Q_PROPERTY(QDate dateProperty READ dateProperty WRITE setDateProperty); - Q_PROPERTY(QTime timeProperty READ timeProperty WRITE setTimeProperty); - Q_PROPERTY(QDateTime dateTimeProperty READ dateTimeProperty WRITE setDateTimeProperty); - Q_PROPERTY(QPoint pointProperty READ pointProperty WRITE setPointProperty); - Q_PROPERTY(QPointF pointFProperty READ pointFProperty WRITE setPointFProperty); - Q_PROPERTY(QSize sizeProperty READ sizeProperty WRITE setSizeProperty); - Q_PROPERTY(QSizeF sizeFProperty READ sizeFProperty WRITE setSizeFProperty); - Q_PROPERTY(QRect rectProperty READ rectProperty WRITE setRectProperty NOTIFY rectPropertyChanged); - Q_PROPERTY(QRect rectProperty2 READ rectProperty2 WRITE setRectProperty2); - Q_PROPERTY(QRectF rectFProperty READ rectFProperty WRITE setRectFProperty); - Q_PROPERTY(bool boolProperty READ boolProperty WRITE setBoolProperty); - Q_PROPERTY(QVariant variantProperty READ variantProperty WRITE setVariantProperty); - Q_PROPERTY(QVector3D vectorProperty READ vectorProperty WRITE setVectorProperty); - Q_PROPERTY(QUrl urlProperty READ urlProperty WRITE setUrlProperty); - - Q_PROPERTY(QDeclarativeScriptString scriptProperty READ scriptProperty WRITE setScriptProperty); - Q_PROPERTY(MyGroupedObject *grouped READ grouped CONSTANT); - Q_PROPERTY(MyGroupedObject *nullGrouped READ nullGrouped CONSTANT); + Q_PROPERTY(QString id READ id WRITE setId) + Q_PROPERTY(QObject *objectProperty READ objectProperty WRITE setObjectProperty) + Q_PROPERTY(QDeclarativeComponent *componentProperty READ componentProperty WRITE setComponentProperty) + Q_PROPERTY(MyFlags flagProperty READ flagProperty WRITE setFlagProperty) + Q_PROPERTY(MyEnum enumProperty READ enumProperty WRITE setEnumProperty) + Q_PROPERTY(QString stringProperty READ stringProperty WRITE setStringProperty) + Q_PROPERTY(uint uintProperty READ uintProperty WRITE setUintProperty) + Q_PROPERTY(int intProperty READ intProperty WRITE setIntProperty) + Q_PROPERTY(qreal realProperty READ realProperty WRITE setRealProperty) + Q_PROPERTY(double doubleProperty READ doubleProperty WRITE setDoubleProperty) + Q_PROPERTY(float floatProperty READ floatProperty WRITE setFloatProperty) + Q_PROPERTY(QColor colorProperty READ colorProperty WRITE setColorProperty) + Q_PROPERTY(QDate dateProperty READ dateProperty WRITE setDateProperty) + Q_PROPERTY(QTime timeProperty READ timeProperty WRITE setTimeProperty) + Q_PROPERTY(QDateTime dateTimeProperty READ dateTimeProperty WRITE setDateTimeProperty) + Q_PROPERTY(QPoint pointProperty READ pointProperty WRITE setPointProperty) + Q_PROPERTY(QPointF pointFProperty READ pointFProperty WRITE setPointFProperty) + Q_PROPERTY(QSize sizeProperty READ sizeProperty WRITE setSizeProperty) + Q_PROPERTY(QSizeF sizeFProperty READ sizeFProperty WRITE setSizeFProperty) + Q_PROPERTY(QRect rectProperty READ rectProperty WRITE setRectProperty NOTIFY rectPropertyChanged) + Q_PROPERTY(QRect rectProperty2 READ rectProperty2 WRITE setRectProperty2) + Q_PROPERTY(QRectF rectFProperty READ rectFProperty WRITE setRectFProperty) + Q_PROPERTY(bool boolProperty READ boolProperty WRITE setBoolProperty) + Q_PROPERTY(QVariant variantProperty READ variantProperty WRITE setVariantProperty) + Q_PROPERTY(QVector3D vectorProperty READ vectorProperty WRITE setVectorProperty) + Q_PROPERTY(QUrl urlProperty READ urlProperty WRITE setUrlProperty) + + Q_PROPERTY(QDeclarativeScriptString scriptProperty READ scriptProperty WRITE setScriptProperty) + Q_PROPERTY(MyGroupedObject *grouped READ grouped CONSTANT) + Q_PROPERTY(MyGroupedObject *nullGrouped READ nullGrouped CONSTANT) public: MyTypeObject() @@ -456,7 +469,7 @@ class MyContainer : public QObject Q_OBJECT Q_PROPERTY(QDeclarativeListProperty<QObject> children READ children) Q_PROPERTY(QDeclarativeListProperty<MyInterface> qlistInterfaces READ qlistInterfaces) - Q_CLASSINFO("DefaultProperty", "children"); + Q_CLASSINFO("DefaultProperty", "children") public: MyContainer() {} @@ -538,7 +551,7 @@ namespace MyNamespace { class MySecondNamespacedType : public QObject { Q_OBJECT - Q_PROPERTY(QDeclarativeListProperty<MyNamespace::MyNamespacedType> list READ list); + Q_PROPERTY(QDeclarativeListProperty<MyNamespace::MyNamespacedType> list READ list) public: QDeclarativeListProperty<MyNamespacedType> list() { return QDeclarativeListProperty<MyNamespacedType>(this, m_list); } @@ -549,6 +562,20 @@ namespace MyNamespace { QML_DECLARE_TYPE(MyNamespace::MyNamespacedType); QML_DECLARE_TYPE(MyNamespace::MySecondNamespacedType); +class MyCustomParserType : public QObject +{ + Q_OBJECT +}; + +class MyCustomParserTypeParser : public QDeclarativeCustomParser +{ +public: + QByteArray compile(const QList<QDeclarativeCustomParserProperty> &) { return QByteArray(); } + void setCustomData(QObject *, const QByteArray &) {} +}; + +QML_DECLARE_TYPE(MyCustomParserType); + void registerTypes(); #endif // TESTTYPES_H diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp index 1ba4454..8feab32 100644 --- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp +++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp @@ -52,6 +52,7 @@ #include "testtypes.h" #include "../../../shared/util.h" +#include "testhttpserver.h" /* This test case covers QML language issues. This covers everything that does not @@ -87,6 +88,7 @@ private slots: void assignBasicTypes(); void assignTypeExtremes(); void assignCompositeToType(); + void assignLiteralToVariant(); void customParserTypes(); void rootAsQmlComponent(); void inlineQmlComponents(); @@ -111,10 +113,13 @@ private slots: void i18n(); void i18n_data(); void onCompleted(); + void onDestruction(); void scriptString(); void defaultPropertyListOrder(); void declaredPropertyValues(); + void basicRemote_data(); + void basicRemote(); void importsBuiltin_data(); void importsBuiltin(); void importsLocal_data(); @@ -128,13 +133,15 @@ private slots: void qmlAttachedPropertiesObjectMethod(); + void customOnProperty(); + // regression tests for crashes void crash1(); void crash2(); private: QDeclarativeEngine engine; - void testType(const QString& qml, const QString& type); + void testType(const QString& qml, const QString& type, const QString& error); }; #define VERIFY_ERRORS(errorfile) \ @@ -232,6 +239,9 @@ void tst_qdeclarativelanguage::errors_data() QTest::newRow("invalidID.4") << "invalidID.4.qml" << "invalidID.4.errors.txt" << false; QTest::newRow("invalidID.5") << "invalidID.5.qml" << "invalidID.5.errors.txt" << false; QTest::newRow("invalidID.6") << "invalidID.6.qml" << "invalidID.6.errors.txt" << false; + QTest::newRow("invalidID.7") << "invalidID.7.qml" << "invalidID.7.errors.txt" << false; + QTest::newRow("invalidID.8") << "invalidID.8.qml" << "invalidID.8.errors.txt" << false; + QTest::newRow("invalidID.9") << "invalidID.9.qml" << "invalidID.9.errors.txt" << false; QTest::newRow("unsupportedProperty") << "unsupportedProperty.qml" << "unsupportedProperty.errors.txt" << false; QTest::newRow("nullDotProperty") << "nullDotProperty.qml" << "nullDotProperty.errors.txt" << true; @@ -252,34 +262,33 @@ void tst_qdeclarativelanguage::errors_data() QTest::newRow("invalidGroupedProperty.5") << "invalidGroupedProperty.5.qml" << "invalidGroupedProperty.5.errors.txt" << false; QTest::newRow("invalidGroupedProperty.6") << "invalidGroupedProperty.6.qml" << "invalidGroupedProperty.6.errors.txt" << false; QTest::newRow("invalidGroupedProperty.7") << "invalidGroupedProperty.7.qml" << "invalidGroupedProperty.7.errors.txt" << true; + QTest::newRow("invalidGroupedProperty.8") << "invalidGroupedProperty.8.qml" << "invalidGroupedProperty.8.errors.txt" << false; + QTest::newRow("invalidGroupedProperty.9") << "invalidGroupedProperty.9.qml" << "invalidGroupedProperty.9.errors.txt" << false; + QTest::newRow("invalidGroupedProperty.10") << "invalidGroupedProperty.10.qml" << "invalidGroupedProperty.10.errors.txt" << false; QTest::newRow("importNamespaceConflict") << "importNamespaceConflict.qml" << "importNamespaceConflict.errors.txt" << false; QTest::newRow("importVersionMissing (builtin)") << "importVersionMissingBuiltIn.qml" << "importVersionMissingBuiltIn.errors.txt" << false; QTest::newRow("importVersionMissing (installed)") << "importVersionMissingInstalled.qml" << "importVersionMissingInstalled.errors.txt" << false; + QTest::newRow("importNonExist (installed)") << "importNonExist.qml" << "importNonExist.errors.txt" << false; + QTest::newRow("importNewerVersion (installed)") << "importNewerVersion.qml" << "importNewerVersion.errors.txt" << false; QTest::newRow("invalidImportID") << "invalidImportID.qml" << "invalidImportID.errors.txt" << false; QTest::newRow("signal.1") << "signal.1.qml" << "signal.1.errors.txt" << false; QTest::newRow("signal.2") << "signal.2.qml" << "signal.2.errors.txt" << false; QTest::newRow("signal.3") << "signal.3.qml" << "signal.3.errors.txt" << false; + QTest::newRow("signal.4") << "signal.4.qml" << "signal.4.errors.txt" << false; + + QTest::newRow("method.1") << "method.1.qml" << "method.1.errors.txt" << false; QTest::newRow("property.1") << "property.1.qml" << "property.1.errors.txt" << false; QTest::newRow("property.2") << "property.2.qml" << "property.2.errors.txt" << false; QTest::newRow("property.3") << "property.3.qml" << "property.3.errors.txt" << false; QTest::newRow("property.4") << "property.4.qml" << "property.4.errors.txt" << false; QTest::newRow("property.5") << "property.5.qml" << "property.5.errors.txt" << false; + QTest::newRow("property.6") << "property.6.qml" << "property.6.errors.txt" << false; + QTest::newRow("property.7") << "property.7.qml" << "property.7.errors.txt" << false; - QTest::newRow("Script.1") << "script.1.qml" << "script.1.errors.txt" << false; - QTest::newRow("Script.2") << "script.2.qml" << "script.2.errors.txt" << false; - QTest::newRow("Script.3") << "script.3.qml" << "script.3.errors.txt" << false; - QTest::newRow("Script.4") << "script.4.qml" << "script.4.errors.txt" << false; - QTest::newRow("Script.5") << "script.5.qml" << "script.5.errors.txt" << false; - QTest::newRow("Script.6") << "script.6.qml" << "script.6.errors.txt" << false; - QTest::newRow("Script.7") << "script.7.qml" << "script.7.errors.txt" << false; - QTest::newRow("Script.8") << "script.8.qml" << "script.8.errors.txt" << false; - QTest::newRow("Script.9") << "script.9.qml" << "script.9.errors.txt" << false; - QTest::newRow("Script.10") << "script.10.qml" << "script.10.errors.txt" << false; - QTest::newRow("Script.11") << "script.11.qml" << "script.11.errors.txt" << false; - QTest::newRow("Script.12") << "script.12.qml" << "script.12.errors.txt" << false; + QTest::newRow("importScript.1") << "importscript.1.qml" << "importscript.1.errors.txt" << false; QTest::newRow("Component.1") << "component.1.qml" << "component.1.errors.txt" << false; QTest::newRow("Component.2") << "component.2.qml" << "component.2.errors.txt" << false; @@ -288,6 +297,17 @@ void tst_qdeclarativelanguage::errors_data() QTest::newRow("Component.5") << "component.5.qml" << "component.5.errors.txt" << false; QTest::newRow("Component.6") << "component.6.qml" << "component.6.errors.txt" << false; + QTest::newRow("MultiSet.1") << "multiSet.1.qml" << "multiSet.1.errors.txt" << false; + QTest::newRow("MultiSet.2") << "multiSet.2.qml" << "multiSet.2.errors.txt" << false; + QTest::newRow("MultiSet.3") << "multiSet.3.qml" << "multiSet.3.errors.txt" << false; + QTest::newRow("MultiSet.4") << "multiSet.4.qml" << "multiSet.4.errors.txt" << false; + QTest::newRow("MultiSet.5") << "multiSet.5.qml" << "multiSet.5.errors.txt" << false; + QTest::newRow("MultiSet.6") << "multiSet.6.qml" << "multiSet.6.errors.txt" << false; + QTest::newRow("MultiSet.7") << "multiSet.7.qml" << "multiSet.7.errors.txt" << false; + QTest::newRow("MultiSet.8") << "multiSet.8.qml" << "multiSet.8.errors.txt" << false; + QTest::newRow("MultiSet.9") << "multiSet.9.qml" << "multiSet.9.errors.txt" << false; + QTest::newRow("MultiSet.10") << "multiSet.10.qml" << "multiSet.10.errors.txt" << false; + QTest::newRow("invalidAttachedProperty.1") << "invalidAttachedProperty.1.qml" << "invalidAttachedProperty.1.errors.txt" << false; QTest::newRow("invalidAttachedProperty.2") << "invalidAttachedProperty.2.qml" << "invalidAttachedProperty.2.errors.txt" << false; QTest::newRow("invalidAttachedProperty.3") << "invalidAttachedProperty.3.qml" << "invalidAttachedProperty.3.errors.txt" << false; @@ -300,13 +320,17 @@ void tst_qdeclarativelanguage::errors_data() QTest::newRow("invalidAttachedProperty.10") << "invalidAttachedProperty.10.qml" << "invalidAttachedProperty.10.errors.txt" << false; QTest::newRow("invalidAttachedProperty.11") << "invalidAttachedProperty.11.qml" << "invalidAttachedProperty.11.errors.txt" << false; + QTest::newRow("emptySignal") << "emptySignal.qml" << "emptySignal.errors.txt" << false; + QTest::newRow("emptySignal.2") << "emptySignal.2.qml" << "emptySignal.2.errors.txt" << false; + QTest::newRow("nestedErrors") << "nestedErrors.qml" << "nestedErrors.errors.txt" << false; QTest::newRow("defaultGrouped") << "defaultGrouped.qml" << "defaultGrouped.errors.txt" << false; - QTest::newRow("emptySignal") << "emptySignal.qml" << "emptySignal.errors.txt" << false; QTest::newRow("doubleSignal") << "doubleSignal.qml" << "doubleSignal.errors.txt" << false; QTest::newRow("invalidRoot") << "invalidRoot.qml" << "invalidRoot.errors.txt" << false; QTest::newRow("missingValueTypeProperty") << "missingValueTypeProperty.qml" << "missingValueTypeProperty.errors.txt" << false; QTest::newRow("objectValueTypeProperty") << "objectValueTypeProperty.qml" << "objectValueTypeProperty.errors.txt" << false; + QTest::newRow("enumTypes") << "enumTypes.qml" << "enumTypes.errors.txt" << false; + QTest::newRow("destroyedSignal") << "destroyedSignal.qml" << "destroyedSignal.errors.txt" << false; } @@ -316,9 +340,6 @@ void tst_qdeclarativelanguage::errors() QFETCH(QString, errorFile); QFETCH(bool, create); - if (file == "invalidID.6.qml") - QTest::ignoreMessage(QtWarningMsg, "id \"StartsWithUpperCase\" is invalid: ids cannot start with uppercase letters"); - QDeclarativeComponent component(&engine, TEST_FILE(file)); if(create) { @@ -464,6 +485,37 @@ void tst_qdeclarativelanguage::assignCompositeToType() QVERIFY(object != 0); } +// Test that literals are stored correctly in variant properties +void tst_qdeclarativelanguage::assignLiteralToVariant() +{ + QDeclarativeComponent component(&engine, TEST_FILE("assignLiteralToVariant.qml")); + VERIFY_ERRORS(0); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test1").userType(), (int)QVariant::Int); + QCOMPARE(object->property("test2").userType(), (int)QMetaType::Double); + QCOMPARE(object->property("test3").userType(), (int)QVariant::String); + QCOMPARE(object->property("test4").userType(), (int)QVariant::Color); + QCOMPARE(object->property("test5").userType(), (int)QVariant::RectF); + QCOMPARE(object->property("test6").userType(), (int)QVariant::PointF); + QCOMPARE(object->property("test7").userType(), (int)QVariant::SizeF); + QCOMPARE(object->property("test8").userType(), (int)QVariant::Vector3D); + QCOMPARE(object->property("test9").userType(), (int)QVariant::String); + + QVERIFY(object->property("test1") == QVariant(1)); + QVERIFY(object->property("test2") == QVariant((double)1.7)); + QVERIFY(object->property("test3") == QVariant(QString(QLatin1String("Hello world!")))); + QVERIFY(object->property("test4") == QVariant(QColor::fromRgb(0xFF008800))); + QVERIFY(object->property("test5") == QVariant(QRectF(10, 10, 10, 10))); + QVERIFY(object->property("test6") == QVariant(QPointF(10, 10))); + QVERIFY(object->property("test7") == QVariant(QSizeF(10, 10))); + QVERIFY(object->property("test8") == QVariant(QVector3D(100, 100, 100))); + QVERIFY(object->property("test9") == QVariant(QString(QLatin1String("#FF008800")))); + + delete object; +} + // Tests that custom parser types can be instantiated void tst_qdeclarativelanguage::customParserTypes() { @@ -560,7 +612,6 @@ void tst_qdeclarativelanguage::dynamicProperties() QCOMPARE(object->property("colorProperty"), QVariant(QColor("red"))); QCOMPARE(object->property("dateProperty"), QVariant(QDate(1945, 9, 2))); QCOMPARE(object->property("varProperty"), QVariant("Hello World!")); - QCOMPARE(object->property("variantProperty"), QVariant(12)); } // Test that nested types can use dynamic properties @@ -666,7 +717,7 @@ void tst_qdeclarativelanguage::propertyValueSource() MyPropertyValueSource *valueSource = qobject_cast<MyPropertyValueSource *>(valueSources.at(0)); QVERIFY(valueSource != 0); - QCOMPARE(valueSource->prop.object(), object); + QCOMPARE(valueSource->prop.object(), qobject_cast<QObject*>(object)); QCOMPARE(valueSource->prop.name(), QString(QLatin1String("intProperty"))); } @@ -687,7 +738,7 @@ void tst_qdeclarativelanguage::propertyValueSource() MyPropertyValueSource *valueSource = qobject_cast<MyPropertyValueSource *>(valueSources.at(0)); QVERIFY(valueSource != 0); - QCOMPARE(valueSource->prop.object(), object); + QCOMPARE(valueSource->prop.object(), qobject_cast<QObject*>(object)); QCOMPARE(valueSource->prop.name(), QString(QLatin1String("intProperty"))); } } @@ -1000,6 +1051,20 @@ void tst_qdeclarativelanguage::onCompleted() QVERIFY(object != 0); } +// Check that the Component::onDestruction attached property works +void tst_qdeclarativelanguage::onDestruction() +{ + QDeclarativeComponent component(&engine, TEST_FILE("onDestruction.qml")); + VERIFY_ERRORS(0); + QObject *object = component.create(); + QVERIFY(object != 0); + + QTest::ignoreMessage(QtDebugMsg, "Destruction 6 10"); + QTest::ignoreMessage(QtDebugMsg, "Destruction 6 10"); + QTest::ignoreMessage(QtDebugMsg, "Destruction 10 11"); + delete object; +} + // Check that assignments to QDeclarativeScriptString properties work void tst_qdeclarativelanguage::scriptString() { @@ -1009,12 +1074,12 @@ void tst_qdeclarativelanguage::scriptString() MyTypeObject *object = qobject_cast<MyTypeObject*>(component.create()); QVERIFY(object != 0); QCOMPARE(object->scriptProperty().script(), QString("foo + bar")); - QCOMPARE(object->scriptProperty().scopeObject(), object); + QCOMPARE(object->scriptProperty().scopeObject(), qobject_cast<QObject*>(object)); QCOMPARE(object->scriptProperty().context(), qmlContext(object)); QVERIFY(object->grouped() != 0); QCOMPARE(object->grouped()->script().script(), QString("console.log(1921)")); - QCOMPARE(object->grouped()->script().scopeObject(), object); + QCOMPARE(object->grouped()->script().scopeObject(), qobject_cast<QObject*>(object)); QCOMPARE(object->grouped()->script().context(), qmlContext(object)); } @@ -1040,12 +1105,11 @@ void tst_qdeclarativelanguage::defaultPropertyListOrder() void tst_qdeclarativelanguage::declaredPropertyValues() { QDeclarativeComponent component(&engine, TEST_FILE("declaredPropertyValues.qml")); - QEXPECT_FAIL("", "QTBUG-7860", Abort); VERIFY_ERRORS(0); } // Check that first child of qml is of given type. Empty type insists on error. -void tst_qdeclarativelanguage::testType(const QString& qml, const QString& type) +void tst_qdeclarativelanguage::testType(const QString& qml, const QString& type, const QString& expectederror) { QDeclarativeComponent component(&engine); component.setData(qml.toUtf8(), TEST_FILE("empty.qml")); // just a file for relative local imports @@ -1054,6 +1118,13 @@ void tst_qdeclarativelanguage::testType(const QString& qml, const QString& type) if (type.isEmpty()) { QVERIFY(component.isError()); + QString actualerror; + foreach (const QDeclarativeError e, component.errors()) { + if (!actualerror.isEmpty()) + actualerror.append("; "); + actualerror.append(e.description()); + } + QCOMPARE(actualerror,expectederror); } else { VERIFY_ERRORS(0); QObject *object = component.create(); @@ -1073,166 +1144,245 @@ void tst_qdeclarativelanguage::importsBuiltin_data() QTest::addColumn<QString>("qml"); QTest::addColumn<QString>("type"); + QTest::addColumn<QString>("error"); // import built-ins QTest::newRow("missing import") << "Test {}" - << ""; + << "" + << "Test is not a type"; QTest::newRow("not in version 0.0") << "import com.nokia.Test 0.0\n" "Test {}" - << ""; + << "" + << "Test is not a type"; + QTest::newRow("version not installed") + << "import com.nokia.Test 99.0\n" + "Test {}" + << "" + << "module \"com.nokia.Test\" version 99.0 is not installed"; QTest::newRow("in version 0.0") << "import com.nokia.Test 0.0\n" "TestTP {}" - << "TestType"; + << "TestType" + << ""; QTest::newRow("qualified in version 0.0") << "import com.nokia.Test 0.0 as T\n" "T.TestTP {}" - << "TestType"; + << "TestType" + << ""; QTest::newRow("in version 1.0") << "import com.nokia.Test 1.0\n" "Test {}" - << "TestType"; + << "TestType" + << ""; QTest::newRow("qualified wrong") << "import com.nokia.Test 1.0 as T\n" // QT-610 "Test {}" - << ""; + << "" + << "Test is not a type"; QTest::newRow("qualified right") << "import com.nokia.Test 1.0 as T\n" "T.Test {}" - << "TestType"; + << "TestType" + << ""; QTest::newRow("qualified right but not in version 0.0") << "import com.nokia.Test 0.0 as T\n" "T.Test {}" - << ""; + << "" + << "T.Test is not a type"; QTest::newRow("in version 1.1") << "import com.nokia.Test 1.1\n" "Test {}" - << "TestType"; + << "TestType" + << ""; QTest::newRow("in version 1.3") << "import com.nokia.Test 1.3\n" "Test {}" - << "TestType"; + << "TestType" + << ""; QTest::newRow("in version 1.5") << "import com.nokia.Test 1.5\n" "Test {}" - << "TestType"; + << "TestType" + << ""; QTest::newRow("changed in version 1.8") << "import com.nokia.Test 1.8\n" "Test {}" - << "TestType2"; + << "TestType2" + << ""; QTest::newRow("in version 1.12") << "import com.nokia.Test 1.12\n" "Test {}" - << "TestType2"; + << "TestType2" + << ""; QTest::newRow("old in version 1.9") << "import com.nokia.Test 1.9\n" "OldTest {}" - << "TestType"; + << "TestType" + << ""; QTest::newRow("old in version 1.11") << "import com.nokia.Test 1.11\n" "OldTest {}" - << "TestType"; + << "TestType" + << ""; QTest::newRow("multiversion 1") << "import com.nokia.Test 1.11\n" "import com.nokia.Test 1.12\n" "Test {}" - << "TestType2"; + << "TestType2" + << ""; QTest::newRow("multiversion 2") << "import com.nokia.Test 1.11\n" "import com.nokia.Test 1.12\n" "OldTest {}" - << "TestType"; + << "TestType" + << ""; QTest::newRow("qualified multiversion 3") << "import com.nokia.Test 1.0 as T0\n" "import com.nokia.Test 1.8 as T8\n" "T0.Test {}" - << "TestType"; + << "TestType" + << ""; QTest::newRow("qualified multiversion 4") << "import com.nokia.Test 1.0 as T0\n" "import com.nokia.Test 1.8 as T8\n" "T8.Test {}" - << "TestType2"; + << "TestType2" + << ""; } void tst_qdeclarativelanguage::importsBuiltin() { QFETCH(QString, qml); QFETCH(QString, type); - testType(qml,type); + QFETCH(QString, error); + testType(qml,type,error); } void tst_qdeclarativelanguage::importsLocal_data() { QTest::addColumn<QString>("qml"); QTest::addColumn<QString>("type"); + QTest::addColumn<QString>("error"); // import locals QTest::newRow("local import") << "import \"subdir\"\n" // QT-613 "Test {}" - << "QDeclarativeRectangle"; + << "QDeclarativeRectangle" + << ""; QTest::newRow("local import second") - << "import Qt 4.6\nimport \"subdir\"\n" + << "import Qt 4.7\nimport \"subdir\"\n" "Test {}" - << "QDeclarativeRectangle"; + << "QDeclarativeRectangle" + << ""; QTest::newRow("local import subsubdir") - << "import Qt 4.6\nimport \"subdir/subsubdir\"\n" + << "import Qt 4.7\nimport \"subdir/subsubdir\"\n" "SubTest {}" - << "QDeclarativeRectangle"; + << "QDeclarativeRectangle" + << ""; QTest::newRow("local import QTBUG-7721 A") << "subdir.Test {}" // no longer allowed (QTBUG-7721) - << ""; + << "" + << "subdir.Test is not a type"; QTest::newRow("local import QTBUG-7721 B") << "import \"subdir\" as X\n" "X.subsubdir.SubTest {}" // no longer allowed (QTBUG-7721) - << ""; + << "" + << "X.subsubdir.SubTest is not a type"; QTest::newRow("local import as") << "import \"subdir\" as T\n" "T.Test {}" - << "QDeclarativeRectangle"; + << "QDeclarativeRectangle" + << ""; QTest::newRow("wrong local import as") << "import \"subdir\" as T\n" "Test {}" - << ""; + << "" + << "Test is not a type"; QTest::newRow("library precedence over local import") << "import \"subdir\"\n" "import com.nokia.Test 1.0\n" "Test {}" - << "TestType"; + << "TestType" + << ""; } void tst_qdeclarativelanguage::importsLocal() { QFETCH(QString, qml); QFETCH(QString, type); - testType(qml,type); + QFETCH(QString, error); + testType(qml,type,error); +} + +void tst_qdeclarativelanguage::basicRemote_data() +{ + QTest::addColumn<QUrl>("url"); + QTest::addColumn<QString>("type"); + QTest::addColumn<QString>("error"); + + QString serverdir = "http://127.0.0.1:14447/qtest/declarative/qmllanguage/"; + + QTest::newRow("no need for qmldir") << QUrl(serverdir+"Test.qml") << "" << ""; + QTest::newRow("need qmldir") << QUrl(serverdir+"TestLocal.qml") << "" << ""; +} + +void tst_qdeclarativelanguage::basicRemote() +{ + QFETCH(QUrl, url); + QFETCH(QString, type); + QFETCH(QString, error); + + TestHTTPServer server(14447); + server.serveDirectory(SRCDIR); + + QDeclarativeComponent component(&engine, url); + + QTRY_VERIFY(!component.isLoading()); + + if (error.isEmpty()) { + if (component.isError()) + qDebug() << component.errors(); + QVERIFY(!component.isError()); + } else { + QVERIFY(component.isError()); + } } void tst_qdeclarativelanguage::importsRemote_data() { QTest::addColumn<QString>("qml"); QTest::addColumn<QString>("type"); + QTest::addColumn<QString>("error"); - QString serverdir = "http://127.0.0.1:14445/qtest/declarative/qmllanguage"; + QString serverdir = "http://127.0.0.1:14447/qtest/declarative/qmllanguage"; - QTest::newRow("remote import") << "import \""+serverdir+"\"\nTest {}" << "QDeclarativeRectangle"; - QTest::newRow("remote import with subdir") << "import \""+serverdir+"\"\nTestSubDir {}" << "QDeclarativeText"; - QTest::newRow("remote import with local") << "import \""+serverdir+"\"\nTestLocal {}" << "QDeclarativeImage"; + QTest::newRow("remote import") << "import \""+serverdir+"\"\nTest {}" << "QDeclarativeRectangle" + << ""; + QTest::newRow("remote import with subdir") << "import \""+serverdir+"\"\nTestSubDir {}" << "QDeclarativeText" + << ""; + QTest::newRow("remote import with local") << "import \""+serverdir+"\"\nTestLocal {}" << "QDeclarativeImage" + << ""; + QTest::newRow("wrong remote import with undeclared local") << "import \""+serverdir+"\"\nWrongTestLocal {}" << "" + << "WrongTestLocal is not a type"; + QTest::newRow("wrong remote import of internal local") << "import \""+serverdir+"\"\nLocalInternal {}" << "" + << "LocalInternal is not a type"; + QTest::newRow("wrong remote import of undeclared local") << "import \""+serverdir+"\"\nUndeclaredLocal {}" << "" + << "UndeclaredLocal is not a type"; } -#include "testhttpserver.h" - void tst_qdeclarativelanguage::importsRemote() { QFETCH(QString, qml); QFETCH(QString, type); + QFETCH(QString, error); - TestHTTPServer server(14445); + TestHTTPServer server(14447); server.serveDirectory(SRCDIR); - testType(qml,type); + testType(qml,type,error); } void tst_qdeclarativelanguage::importsInstalled_data() @@ -1241,43 +1391,57 @@ void tst_qdeclarativelanguage::importsInstalled_data() QTest::addColumn<QString>("qml"); QTest::addColumn<QString>("type"); + QTest::addColumn<QString>("error"); // import installed QTest::newRow("installed import 0") << "import com.nokia.installedtest 0.0\n" "InstalledTestTP {}" - << "QDeclarativeRectangle"; + << "QDeclarativeRectangle" + << ""; QTest::newRow("installed import 0 as TP") << "import com.nokia.installedtest 0.0 as TP\n" "TP.InstalledTestTP {}" - << "QDeclarativeRectangle"; + << "QDeclarativeRectangle" + << ""; QTest::newRow("installed import 1") << "import com.nokia.installedtest 1.0\n" "InstalledTest {}" - << "QDeclarativeRectangle"; + << "QDeclarativeRectangle" + << ""; QTest::newRow("installed import 2") << "import com.nokia.installedtest 1.3\n" "InstalledTest {}" - << "QDeclarativeRectangle"; + << "QDeclarativeRectangle" + << ""; QTest::newRow("installed import 3") << "import com.nokia.installedtest 1.4\n" "InstalledTest {}" - << "QDeclarativeText"; - QTest::newRow("installed import 4") + << "QDeclarativeText" + << ""; + QTest::newRow("installed import minor version not available") // QTBUG-9627 << "import com.nokia.installedtest 1.10\n" "InstalledTest {}" - << "QDeclarativeText"; + << "" + << "module \"com.nokia.installedtest\" version 1.10 is not installed"; + QTest::newRow("installed import major version not available") // QTBUG-9627 + << "import com.nokia.installedtest 9.0\n" + "InstalledTest {}" + << "" + << "module \"com.nokia.installedtest\" version 9.0 is not installed"; QTest::newRow("installed import visibility") // QT-614 << "import com.nokia.installedtest 1.4\n" "PrivateType {}" - << ""; + << "" + << "PrivateType is not a type"; } void tst_qdeclarativelanguage::importsInstalled() { QFETCH(QString, qml); QFETCH(QString, type); - testType(qml,type); + QFETCH(QString, error); + testType(qml,type,error); } @@ -1285,58 +1449,77 @@ void tst_qdeclarativelanguage::importsOrder_data() { QTest::addColumn<QString>("qml"); QTest::addColumn<QString>("type"); + QTest::addColumn<QString>("error"); QTest::newRow("installed import overrides 1") << "import com.nokia.installedtest 1.0\n" "import com.nokia.installedtest 1.4\n" "InstalledTest {}" - << "QDeclarativeText"; + << "QDeclarativeText" + << ""; QTest::newRow("installed import overrides 2") << "import com.nokia.installedtest 1.4\n" "import com.nokia.installedtest 1.0\n" "InstalledTest {}" - << "QDeclarativeRectangle"; + << "QDeclarativeRectangle" + << ""; QTest::newRow("installed import re-overrides 1") << "import com.nokia.installedtest 1.4\n" "import com.nokia.installedtest 1.0\n" "import com.nokia.installedtest 1.4\n" "InstalledTest {}" - << "QDeclarativeText"; + << "QDeclarativeText" + << ""; QTest::newRow("installed import re-overrides 2") << "import com.nokia.installedtest 1.4\n" "import com.nokia.installedtest 1.0\n" "import com.nokia.installedtest 1.4\n" "import com.nokia.installedtest 1.0\n" "InstalledTest {}" - << "QDeclarativeRectangle"; + << "QDeclarativeRectangle" + << ""; QTest::newRow("installed import versus builtin 1") << "import com.nokia.installedtest 1.5\n" - "import Qt 4.6\n" + "import Qt 4.7\n" "Rectangle {}" - << "QDeclarativeRectangle"; + << "QDeclarativeRectangle" + << ""; QTest::newRow("installed import versus builtin 2") << - "import Qt 4.6\n" + "import Qt 4.7\n" "import com.nokia.installedtest 1.5\n" "Rectangle {}" - << "QDeclarativeText"; + << "QDeclarativeText" + << ""; QTest::newRow("namespaces cannot be overridden by types 1") << - "import Qt 4.6 as Rectangle\n" + "import Qt 4.7 as Rectangle\n" "import com.nokia.installedtest 1.5\n" "Rectangle {}" - << ""; + << "" + << "Namespace Rectangle cannot be used as a type"; QTest::newRow("namespaces cannot be overridden by types 2") << - "import Qt 4.6 as Rectangle\n" + "import Qt 4.7 as Rectangle\n" "import com.nokia.installedtest 1.5\n" "Rectangle.Image {}" - << "QDeclarativeImage"; + << "QDeclarativeImage" + << ""; + QTest::newRow("local last 1") << + "LocalLast {}" + << "QDeclarativeText" + << ""; + QTest::newRow("local last 2") << + "import com.nokia.installedtest 1.0\n" + "LocalLast {}" + << "QDeclarativeRectangle" + << ""; // i.e. from com.nokia.installedtest, not data/LocalLast.qml } void tst_qdeclarativelanguage::importsOrder() { QFETCH(QString, qml); QFETCH(QString, type); - testType(qml,type); + QFETCH(QString, error); + testType(qml,type,error); } void tst_qdeclarativelanguage::qmlAttachedPropertiesObjectMethod() @@ -1370,7 +1553,7 @@ void tst_qdeclarativelanguage::qmlAttachedPropertiesObjectMethod() void tst_qdeclarativelanguage::crash1() { QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6\nComponent {}", QUrl()); + component.setData("import Qt 4.7\nComponent {}", QUrl()); } void tst_qdeclarativelanguage::crash2() @@ -1378,17 +1561,30 @@ void tst_qdeclarativelanguage::crash2() QDeclarativeComponent component(&engine, TEST_FILE("crash2.qml")); } +// QTBUG-8676 +void tst_qdeclarativelanguage::customOnProperty() +{ + QDeclarativeComponent component(&engine, TEST_FILE("customOnProperty.qml")); + + VERIFY_ERRORS(0); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("on").toInt(), 10); + + delete object; +} void tst_qdeclarativelanguage::initTestCase() { registerTypes(); - QML_REGISTER_TYPE(com.nokia.Test, 0, 0, TestTP, TestType); - QML_REGISTER_TYPE(com.nokia.Test, 1, 0, Test, TestType); - QML_REGISTER_TYPE(com.nokia.Test, 1, 5, Test, TestType); - QML_REGISTER_TYPE(com.nokia.Test, 1, 8, Test, TestType2); - QML_REGISTER_TYPE(com.nokia.Test, 1, 9, OldTest, TestType); - QML_REGISTER_TYPE(com.nokia.Test, 1, 12, Test, TestType2); + qmlRegisterType<TestType>("com.nokia.Test", 0, 0, "TestTP"); + qmlRegisterType<TestType>("com.nokia.Test", 1, 0, "Test"); + qmlRegisterType<TestType>("com.nokia.Test", 1, 5, "Test"); + qmlRegisterType<TestType2>("com.nokia.Test", 1, 8, "Test"); + qmlRegisterType<TestType>("com.nokia.Test", 1, 9, "OldTest"); + qmlRegisterType<TestType2>("com.nokia.Test", 1, 12, "Test"); // Create locale-specific file // For POSIX, this will just be data/I18nType.qml, since POSIX is 7-bit diff --git a/tests/auto/declarative/qdeclarativelayouts/data/layouts.qml b/tests/auto/declarative/qdeclarativelayouts/data/layouts.qml new file mode 100644 index 0000000..5c2178f --- /dev/null +++ b/tests/auto/declarative/qdeclarativelayouts/data/layouts.qml @@ -0,0 +1,31 @@ +import Qt 4.6 +import Qt.widgets 4.6 + +Item { + id: resizable + width:300 + height:300 + QGraphicsWidget { + x : resizable.x + y : resizable.y + width : resizable.width + height : resizable.height + layout: QGraphicsLinearLayout { + spacing: 0 + LayoutItem { + objectName: "left" + minimumSize: "100x100" + maximumSize: "300x300" + preferredSize: "100x100" + Rectangle { objectName: "yellowRect"; color: "yellow"; anchors.fill: parent } + } + LayoutItem { + objectName: "right" + minimumSize: "100x100" + maximumSize: "400x400" + preferredSize: "200x200" + Rectangle { objectName: "greenRect"; color: "green"; anchors.fill: parent } + } + } + } +} diff --git a/tests/auto/declarative/qdeclarativelayouts/qdeclarativelayouts.pro b/tests/auto/declarative/qdeclarativelayouts/qdeclarativelayouts.pro new file mode 100644 index 0000000..a2065f4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelayouts/qdeclarativelayouts.pro @@ -0,0 +1,10 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative +SOURCES += tst_qdeclarativelayouts.cpp +macx:CONFIG -= app_bundle + +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativelayouts/tst_qdeclarativelayouts.cpp b/tests/auto/declarative/qdeclarativelayouts/tst_qdeclarativelayouts.cpp new file mode 100644 index 0000000..412c3b7 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelayouts/tst_qdeclarativelayouts.cpp @@ -0,0 +1,147 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <QtTest/QtTest> +#include <private/qlistmodelinterface_p.h> +#include <qdeclarativeview.h> +#include <private/qdeclarativelayoutitem_p.h> +#include <qdeclarativeexpression.h> +#include <QStyle> + +class tst_QDeclarativeLayouts : public QObject +{ + Q_OBJECT +public: + tst_QDeclarativeLayouts(); + +private slots: + void test_qml();//GraphicsLayout set up in Qml + void test_cpp();//GraphicsLayout set up in C++ + +private: + QDeclarativeView *createView(const QString &filename); +}; + +tst_QDeclarativeLayouts::tst_QDeclarativeLayouts() +{ +} + +void tst_QDeclarativeLayouts::test_qml() +{ + QDeclarativeView *canvas = createView(SRCDIR "/data/layouts.qml"); + + qApp->processEvents(); + QDeclarativeLayoutItem *left = static_cast<QDeclarativeLayoutItem*>(canvas->rootObject()->findChild<QDeclarativeItem*>("left")); + QVERIFY(left != 0); + + QDeclarativeLayoutItem *right = static_cast<QDeclarativeLayoutItem*>(canvas->rootObject()->findChild<QDeclarativeItem*>("right")); + QVERIFY(right != 0); + + qreal l = QApplication::style()->pixelMetric(QStyle::PM_LayoutLeftMargin); + qreal r = QApplication::style()->pixelMetric(QStyle::PM_LayoutRightMargin); + qreal t = QApplication::style()->pixelMetric(QStyle::PM_LayoutTopMargin); + qreal b = QApplication::style()->pixelMetric(QStyle::PM_LayoutBottomMargin); + QVERIFY2(l == r && r == t && t == b, "Test assumes equal margins."); + qreal gvMargin = l; + + QDeclarativeItem *rootItem = qobject_cast<QDeclarativeItem*>(canvas->rootObject()); + QVERIFY(rootItem != 0); + + //Preferred Size + rootItem->setWidth(300 + 2*gvMargin); + rootItem->setHeight(300 + 2*gvMargin); + + QCOMPARE(left->x(), gvMargin); + QCOMPARE(left->y(), gvMargin); + QCOMPARE(left->width(), 100.0); + QCOMPARE(left->height(), 300.0); + + QCOMPARE(right->x(), 100.0 + gvMargin); + QCOMPARE(right->y(), 0.0 + gvMargin); + QCOMPARE(right->width(), 200.0); + QCOMPARE(right->height(), 300.0); + + //Minimum Size + rootItem->setWidth(10+2*gvMargin); + rootItem->setHeight(10+2*gvMargin); + + QCOMPARE(left->x(), gvMargin); + QCOMPARE(left->width(), 100.0); + QCOMPARE(left->height(), 100.0); + + QCOMPARE(right->x(), 100.0 + gvMargin); + QCOMPARE(right->width(), 100.0); + QCOMPARE(right->height(), 100.0); + + //Between preferred and Maximum Size + /*Note that if set to maximum size (or above) GraphicsLinearLayout behavior + is to shrink them down to preferred size. So the exact maximum size can't + be used*/ + rootItem->setWidth(670 + 2*gvMargin); + rootItem->setHeight(300 + 2*gvMargin); + + QCOMPARE(left->x(), gvMargin); + QCOMPARE(left->width(), 270.0); + QCOMPARE(left->height(), 300.0); + + QCOMPARE(right->x(), 270.0 + gvMargin); + QCOMPARE(right->width(), 400.0); + QCOMPARE(right->height(), 300.0); + + delete canvas; +} + +void tst_QDeclarativeLayouts::test_cpp() +{ + //TODO: This test! +} + +QDeclarativeView *tst_QDeclarativeLayouts::createView(const QString &filename) +{ + QDeclarativeView *canvas = new QDeclarativeView(0); + canvas->setSource(QUrl::fromLocalFile(filename)); + + return canvas; +} + + +QTEST_MAIN(tst_QDeclarativeLayouts) + +#include "tst_qdeclarativelayouts.moc" diff --git a/tests/auto/declarative/qdeclarativelistmodel/data/model.qml b/tests/auto/declarative/qdeclarativelistmodel/data/model.qml new file mode 100644 index 0000000..4019948 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelistmodel/data/model.qml @@ -0,0 +1,22 @@ +import Qt 4.6 + +Item { + id: item + property variant model + property bool done: false + property variant result + + function evalExpressionViaWorker(commands) { + done = false + worker.sendMessage({'commands': commands, 'model': model}) + } + + WorkerScript { + id: worker + source: "script.js" + onMessage: { + item.result = messageObject.result + item.done = true + } + } +} diff --git a/tests/auto/declarative/qdeclarativelistmodel/data/script.js b/tests/auto/declarative/qdeclarativelistmodel/data/script.js new file mode 100644 index 0000000..66a4acb --- /dev/null +++ b/tests/auto/declarative/qdeclarativelistmodel/data/script.js @@ -0,0 +1,13 @@ +WorkerScript.onMessage = function(msg) { + var result = null + try { + for (var i=0; i<msg.commands.length; i++) { + var c = 'msg.model.' + msg.commands[i] + result = eval(c) + } + msg.model.sync() + } catch(e) { } + WorkerScript.sendMessage({'done': true, 'result': result}) +} + + diff --git a/tests/auto/declarative/qdeclarativelistmodel/qdeclarativelistmodel.pro b/tests/auto/declarative/qdeclarativelistmodel/qdeclarativelistmodel.pro index d728d08..9f1e146 100644 --- a/tests/auto/declarative/qdeclarativelistmodel/qdeclarativelistmodel.pro +++ b/tests/auto/declarative/qdeclarativelistmodel/qdeclarativelistmodel.pro @@ -4,3 +4,9 @@ QT += script macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativelistmodel.cpp + +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp b/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp index a1e6d6b..9d61ad0 100644 --- a/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp +++ b/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp @@ -39,10 +39,17 @@ ** ****************************************************************************/ #include <qtest.h> +#include <QtDeclarative/private/qdeclarativeitem_p.h> +#include <QtDeclarative/private/qdeclarativetext_p.h> +#include <QtDeclarative/private/qdeclarativeengine_p.h> #include <QtDeclarative/private/qdeclarativelistmodel_p.h> #include <QtDeclarative/private/qdeclarativeexpression_p.h> #include <QDeclarativeComponent> -#include <QDebug> + +#include <QtCore/qtimer.h> +#include <QtCore/qdebug.h> + +#include "../../../shared/util.h" class tst_QDeclarativeListModel : public QObject { @@ -50,6 +57,11 @@ class tst_QDeclarativeListModel : public QObject public: tst_QDeclarativeListModel() {} +private: + QScriptValue nestedListValue(QScriptEngine *eng) const; + QDeclarativeItem *createWorkerTest(QDeclarativeEngine *eng, QDeclarativeComponent *component, QDeclarativeListModel *model); + void waitForWorker(QDeclarativeItem *item); + private slots: void static_types(); void static_types_data(); @@ -58,14 +70,55 @@ private slots: void static_nestedElements_data(); void dynamic_data(); void dynamic(); + void dynamic_worker_data(); + void dynamic_worker(); + void convertNestedToFlat_fail(); + void convertNestedToFlat_fail_data(); + void convertNestedToFlat_ok(); + void convertNestedToFlat_ok_data(); void error_data(); void error(); + void set(); }; +QScriptValue tst_QDeclarativeListModel::nestedListValue(QScriptEngine *eng) const +{ + QScriptValue list = eng->newArray(); + list.setProperty(0, eng->newObject()); + list.setProperty(1, eng->newObject()); + QScriptValue sv = eng->newObject(); + sv.setProperty("foo", list); + return sv; +} + +QDeclarativeItem *tst_QDeclarativeListModel::createWorkerTest(QDeclarativeEngine *eng, QDeclarativeComponent *component, QDeclarativeListModel *model) +{ + QDeclarativeItem *item = qobject_cast<QDeclarativeItem*>(component->create()); + QDeclarativeEngine::setContextForObject(model, eng->rootContext()); + if (item) + item->setProperty("model", qVariantFromValue(model)); + return item; +} + +void tst_QDeclarativeListModel::waitForWorker(QDeclarativeItem *item) +{ + QEventLoop loop; + QTimer timer; + timer.setSingleShot(true); + connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit())); + + QDeclarativeProperty prop(item, "done"); + QVERIFY(prop.isValid()); + QVERIFY(prop.connectNotifySignal(&loop, SLOT(quit()))); + timer.start(10000); + loop.exec(); + QVERIFY(timer.isActive()); +} + void tst_QDeclarativeListModel::static_i18n() { QString expect = QString::fromUtf8("na\303\257ve"); - QString componentStr = "import Qt 4.6\nListModel { ListElement { prop1: \""+expect+"\" } }"; + QString componentStr = "import Qt 4.7\nListModel { ListElement { prop1: \""+expect+"\" } }"; QDeclarativeEngine engine; QDeclarativeComponent component(&engine); component.setData(componentStr.toUtf8(), QUrl::fromLocalFile("")); @@ -86,7 +139,7 @@ void tst_QDeclarativeListModel::static_nestedElements() QString elementsStr = elements.join(",\n") + "\n"; QString componentStr = - "import Qt 4.6\n" + "import Qt 4.7\n" "ListModel {\n" " ListElement {\n" " attributes: [\n"; @@ -142,17 +195,17 @@ void tst_QDeclarativeListModel::dynamic_data() QTest::newRow("clear1") << "{append({'foo':456});clear();count}" << 0 << ""; QTest::newRow("clear2") << "{append({'foo':123});append({'foo':456});clear();count}" << 0 << ""; - QTest::newRow("clear2") << "{append({'foo':123});clear();get(0).foo}" << 0 << "QML ListModel (unknown location) get: index 0 out of range"; + QTest::newRow("clear3") << "{append({'foo':123});clear();get(0).foo}" << 0 << "QML ListModel (unknown location) get: index 0 out of range"; QTest::newRow("remove1") << "{append({'foo':123});remove(0);count}" << 0 << ""; QTest::newRow("remove2a") << "{append({'foo':123});append({'foo':456});remove(0);count}" << 1 << ""; QTest::newRow("remove2b") << "{append({'foo':123});append({'foo':456});remove(0);get(0).foo}" << 456 << ""; QTest::newRow("remove2c") << "{append({'foo':123});append({'foo':456});remove(1);get(0).foo}" << 123 << ""; QTest::newRow("remove3") << "{append({'foo':123});remove(0);get(0).foo}" << 0 << "QML ListModel (unknown location) get: index 0 out of range"; - QTest::newRow("remove3a") << "{append({'foo':123});remove(-1)}" << 0 << "QML ListModel (unknown location) remove: index -1 out of range"; + QTest::newRow("remove3a") << "{append({'foo':123});remove(-1);count}" << 1 << "QML ListModel (unknown location) remove: index -1 out of range"; QTest::newRow("remove4a") << "{remove(0)}" << 0 << "QML ListModel (unknown location) remove: index 0 out of range"; - QTest::newRow("remove4b") << "{append({'foo':123});remove(0);remove(0)}" << 0 << "QML ListModel (unknown location) remove: index 0 out of range"; - QTest::newRow("remove4c") << "{append({'foo':123});remove(1)}" << 0 << "QML ListModel (unknown location) remove: index 1 out of range"; + QTest::newRow("remove4b") << "{append({'foo':123});remove(0);remove(0);count}" << 0 << "QML ListModel (unknown location) remove: index 0 out of range"; + QTest::newRow("remove4c") << "{append({'foo':123});remove(1);count}" << 1 << "QML ListModel (unknown location) remove: index 1 out of range"; QTest::newRow("insert1") << "{insert(0,{'foo':123});count}" << 1 << ""; QTest::newRow("insert2") << "{insert(1,{'foo':123});count}" << 0 << "QML ListModel (unknown location) insert: index 1 out of range"; @@ -161,7 +214,7 @@ void tst_QDeclarativeListModel::dynamic_data() QTest::newRow("insert3c") << "{append({'foo':123});insert(1,{'foo':456});get(1).foo}" << 456 << ""; QTest::newRow("insert3d") << "{append({'foo':123});insert(0,{'foo':456});get(0).foo}" << 456 << ""; QTest::newRow("insert3e") << "{append({'foo':123});insert(0,{'foo':456});get(1).foo}" << 123 << ""; - QTest::newRow("insert4") << "{append({'foo':123});insert(-1,{'foo':456})}" << 0 << "QML ListModel (unknown location) insert: index -1 out of range"; + QTest::newRow("insert4") << "{append({'foo':123});insert(-1,{'foo':456});count}" << 1 << "QML ListModel (unknown location) insert: index -1 out of range"; QTest::newRow("insert5a") << "{insert(0,123)}" << 0 << "QML ListModel (unknown location) insert: value is not an object"; QTest::newRow("insert5b") << "{insert(0,[1,2,3])}" << 0 << "QML ListModel (unknown location) insert: value is not an object"; @@ -171,8 +224,8 @@ void tst_QDeclarativeListModel::dynamic_data() QTest::newRow("set3b") << "{append({'foo':123,'bar':456});set(0,{'foo':999});get(0).bar}" << 456 << ""; QTest::newRow("set4a") << "{set(0,{'foo':456})}" << 0 << "QML ListModel (unknown location) set: index 0 out of range"; QTest::newRow("set4c") << "{set(-1,{'foo':456})}" << 0 << "QML ListModel (unknown location) set: index -1 out of range"; - QTest::newRow("set5a") << "{append({'foo':123,'bar':456});set(0,123)}" << 0 << "QML ListModel (unknown location) set: value is not an object"; - QTest::newRow("set5b") << "{append({'foo':123,'bar':456});set(0,[1,2,3])}" << 0 << "QML ListModel (unknown location) set: value is not an object"; + QTest::newRow("set5a") << "{append({'foo':123,'bar':456});set(0,123);count}" << 1 << "QML ListModel (unknown location) set: value is not an object"; + QTest::newRow("set5b") << "{append({'foo':123,'bar':456});set(0,[1,2,3]);count}" << 1 << "QML ListModel (unknown location) set: value is not an object"; QTest::newRow("set6") << "{append({'foo':123});set(1,{'foo':456});count}" << 2 << ""; QTest::newRow("setprop1") << "{append({'foo':123});setProperty(0,'foo',456);count}" << 1 << ""; @@ -181,7 +234,7 @@ void tst_QDeclarativeListModel::dynamic_data() QTest::newRow("setprop3b") << "{append({'foo':123,'bar':456});setProperty(0,'foo',999);get(0).bar}" << 456 << ""; QTest::newRow("setprop4a") << "{setProperty(0,'foo',456)}" << 0 << "QML ListModel (unknown location) set: index 0 out of range"; QTest::newRow("setprop4b") << "{setProperty(-1,'foo',456)}" << 0 << "QML ListModel (unknown location) set: index -1 out of range"; - QTest::newRow("setprop4c") << "{append({'foo':123,'bar':456});setProperty(1,'foo',456)}" << 0 << "QML ListModel (unknown location) set: index 1 out of range"; + QTest::newRow("setprop4c") << "{append({'foo':123,'bar':456});setProperty(1,'foo',456);count}" << 1 << "QML ListModel (unknown location) set: index 1 out of range"; QTest::newRow("setprop5") << "{append({'foo':123,'bar':456});append({'foo':111});setProperty(1,'bar',222);get(1).bar}" << 222 << ""; QTest::newRow("move1a") << "{append({'foo':123});append({'foo':456});move(0,1,1);count}" << 2 << ""; @@ -193,16 +246,22 @@ void tst_QDeclarativeListModel::dynamic_data() QTest::newRow("move2b") << "{append({'foo':123});append({'foo':456});append({'foo':789});move(0,1,2);get(0).foo}" << 789 << ""; QTest::newRow("move2c") << "{append({'foo':123});append({'foo':456});append({'foo':789});move(0,1,2);get(1).foo}" << 123 << ""; QTest::newRow("move2d") << "{append({'foo':123});append({'foo':456});append({'foo':789});move(0,1,2);get(2).foo}" << 456 << ""; - QTest::newRow("move3a") << "{append({'foo':123});append({'foo':456});append({'foo':789});move(1,0,3)}" << 0 << "QML ListModel (unknown location) move: out of range"; - QTest::newRow("move3b") << "{append({'foo':123});append({'foo':456});append({'foo':789});move(1,-1,1)}" << 0 << "QML ListModel (unknown location) move: out of range"; - QTest::newRow("move3c") << "{append({'foo':123});append({'foo':456});append({'foo':789});move(1,0,-1)}" << 0 << "QML ListModel (unknown location) move: out of range"; - QTest::newRow("move3d") << "{append({'foo':123});append({'foo':456});append({'foo':789});move(0,3,1)}" << 0 << "QML ListModel (unknown location) move: out of range"; + QTest::newRow("move3a") << "{append({'foo':123});append({'foo':456});append({'foo':789});move(1,0,3);count}" << 3 << "QML ListModel (unknown location) move: out of range"; + QTest::newRow("move3b") << "{append({'foo':123});append({'foo':456});append({'foo':789});move(1,-1,1);count}" << 3 << "QML ListModel (unknown location) move: out of range"; + QTest::newRow("move3c") << "{append({'foo':123});append({'foo':456});append({'foo':789});move(1,0,-1);count}" << 3 << "QML ListModel (unknown location) move: out of range"; + QTest::newRow("move3d") << "{append({'foo':123});append({'foo':456});append({'foo':789});move(0,3,1);count}" << 3 << "QML ListModel (unknown location) move: out of range"; + + // Nested models - // Structured model + QTest::newRow("nested-append1") << "{append({'foo':123,'bars':[{'a':1},{'a':2},{'a':3}]});count}" << 1 << ""; + QTest::newRow("nested-append2") << "{append({'foo':123,'bars':[{'a':1},{'a':2},{'a':3}]});get(0).bars.get(1).a}" << 2 << ""; + QTest::newRow("nested-append3") << "{append({'foo':123,'bars':[{'a':1},{'a':2},{'a':3}]});get(0).bars.append({'a':4});get(0).bars.get(3).a}" << 4 << ""; - QTest::newRow("listprop1a") << "{append({'foo':123,'bars':[{'a':1},{'a':2},{'a':3}]});count}" << 1 << ""; - QTest::newRow("listprop1b") << "{append({'foo':123,'bars':[{'a':1},{'a':2},{'a':3}]});get(0).bars.get(1).a}" << 2 << ""; - QTest::newRow("listprop2a") << "{append({'foo':123,'bars':[{'a':1},{'a':2},{'a':3}]});get(0).bars.append({'a':4});get(0).bars.get(3).a}" << 4 << ""; + QTest::newRow("nested-insert") << "{append({'foo':123});insert(0,{'bars':[{'a':1},{'b':2},{'c':3}]});get(0).bars.get(0).a}" << 1 << ""; + QTest::newRow("nested-set") << "{append({'foo':123});set(0,{'foo':[{'x':123}]});get(0).foo.get(0).x}" << 123 << ""; + + // XXX + //QTest::newRow("nested-setprop") << "{append({'foo':123});setProperty(0,'foo',[{'x':123}]);get(0).foo.get(0).x}" << 123 << ""; } void tst_QDeclarativeListModel::dynamic() @@ -214,10 +273,11 @@ void tst_QDeclarativeListModel::dynamic() QDeclarativeEngine engine; QDeclarativeListModel model; QDeclarativeEngine::setContextForObject(&model,engine.rootContext()); - engine.rootContext()->addDefaultObject(&model); + engine.rootContext()->setContextObject(&model); QDeclarativeExpression e(engine.rootContext(), script, &model); if (!warning.isEmpty()) QTest::ignoreMessage(QtWarningMsg, warning.toLatin1()); + int actual = e.value().toInt(); if (e.hasError()) qDebug() << e.error(); // errors not expected @@ -225,6 +285,154 @@ void tst_QDeclarativeListModel::dynamic() QCOMPARE(actual,result); } +void tst_QDeclarativeListModel::dynamic_worker_data() +{ + dynamic_data(); +} + +void tst_QDeclarativeListModel::dynamic_worker() +{ + QFETCH(QString, script); + QFETCH(int, result); + QFETCH(QString, warning); + + QDeclarativeListModel model; + QDeclarativeEngine eng; + QDeclarativeComponent component(&eng, QUrl::fromLocalFile(SRCDIR "/data/model.qml")); + QDeclarativeItem *item = createWorkerTest(&eng, &component, &model); + QVERIFY(item != 0); + + if (script[0] == QLatin1Char('{') && script[script.length()-1] == QLatin1Char('}')) + script = script.mid(1, script.length() - 2); + QVariantList operations; + foreach (const QString &s, script.split(';')) { + if (!s.isEmpty()) + operations << s; + } + + if (!warning.isEmpty()) + QTest::ignoreMessage(QtWarningMsg, warning.toLatin1()); + + if (operations.count() == 1) { + // test count(), get() return the correct default values in the worker list model + QVERIFY(QMetaObject::invokeMethod(item, "evalExpressionViaWorker", + Q_ARG(QVariant, operations))); + waitForWorker(item); + QCOMPARE(QDeclarativeProperty(item, "result").read().toInt(), result); + } else { + // execute a set of commands on the worker list model, then check the + // changes are reflected in the list model in the main thread + if (QByteArray(QTest::currentDataTag()).startsWith("nested")) + QTest::ignoreMessage(QtWarningMsg, "QML ListModel (unknown location) Cannot add nested list values when modifying or after modification from a worker script"); + + QVERIFY(QMetaObject::invokeMethod(item, "evalExpressionViaWorker", + Q_ARG(QVariant, operations.mid(0, operations.length()-1)))); + waitForWorker(item); + + QDeclarativeExpression e(eng.rootContext(), operations.last().toString(), &model); + if (QByteArray(QTest::currentDataTag()).startsWith("nested")) + QVERIFY(e.value().toInt() != result); + else + QCOMPARE(e.value().toInt(), result); + } + + delete item; + qApp->processEvents(); +} + +void tst_QDeclarativeListModel::convertNestedToFlat_fail() +{ + // If a model has nested data, it cannot be used at all from a worker script + + QFETCH(QString, script); + + QDeclarativeListModel model; + QDeclarativeEngine eng; + QDeclarativeComponent component(&eng, QUrl::fromLocalFile(SRCDIR "/data/model.qml")); + QDeclarativeItem *item = createWorkerTest(&eng, &component, &model); + QVERIFY(item != 0); + + QScriptEngine s_eng; + QScriptValue plainData = s_eng.newObject(); + plainData.setProperty("foo", QScriptValue(123)); + model.append(plainData); + model.append(nestedListValue(&s_eng)); + QCOMPARE(model.count(), 2); + + QTest::ignoreMessage(QtWarningMsg, "QML ListModel (unknown location) List contains nested list values and cannot be used from a worker script"); + QVERIFY(QMetaObject::invokeMethod(item, "evalExpressionViaWorker", Q_ARG(QVariant, script))); + waitForWorker(item); + + QCOMPARE(model.count(), 2); + + delete item; + qApp->processEvents(); +} + +void tst_QDeclarativeListModel::convertNestedToFlat_fail_data() +{ + QTest::addColumn<QString>("script"); + + QTest::newRow("clear") << "clear()"; + QTest::newRow("remove") << "remove(0)"; + QTest::newRow("append") << "append({'x':1})"; + QTest::newRow("insert") << "insert(0, {'x':1})"; + QTest::newRow("set") << "set(0, {'foo':1})"; + QTest::newRow("setProperty") << "setProperty(0, 'foo', 1})"; + QTest::newRow("move") << "move(0, 1, 1})"; + QTest::newRow("get") << "get(0)"; +} + +void tst_QDeclarativeListModel::convertNestedToFlat_ok() +{ + // If a model only has plain data, it can be modified from a worker script. However, + // once the model is used from a worker script, it no longer accepts nested data + + QFETCH(QString, script); + + QDeclarativeListModel model; + QDeclarativeEngine eng; + QDeclarativeComponent component(&eng, QUrl::fromLocalFile(SRCDIR "/data/model.qml")); + QDeclarativeItem *item = createWorkerTest(&eng, &component, &model); + QVERIFY(item != 0); + + QScriptEngine s_eng; + QScriptValue plainData = s_eng.newObject(); + plainData.setProperty("foo", QScriptValue(123)); + model.append(plainData); + QCOMPARE(model.count(), 1); + + QVERIFY(QMetaObject::invokeMethod(item, "evalExpressionViaWorker", Q_ARG(QVariant, script))); + waitForWorker(item); + + // can still add plain data + int count = model.count(); + model.append(plainData); + QCOMPARE(model.count(), count+1); + + QScriptValue nested = nestedListValue(&s_eng); + const char *warning = "QML ListModel (unknown location) Cannot add nested list values when modifying or after modification from a worker script"; + + QTest::ignoreMessage(QtWarningMsg, warning); + model.append(nested); + + QTest::ignoreMessage(QtWarningMsg, warning); + model.insert(0, nested); + + QTest::ignoreMessage(QtWarningMsg, warning); + model.set(0, nested); + + QCOMPARE(model.count(), count+1); + + delete item; + qApp->processEvents(); +} + +void tst_QDeclarativeListModel::convertNestedToFlat_ok_data() +{ + convertNestedToFlat_fail_data(); +} + void tst_QDeclarativeListModel::static_types_data() { QTest::addColumn<QString>("qml"); @@ -252,7 +460,7 @@ void tst_QDeclarativeListModel::static_types_data() QTest::newRow("enum") << "ListElement { foo: Text.AlignHCenter }" - << QVariant("QTBUG-5974:ListElement: constant script support for property value"); + << QVariant(double(QDeclarativeText::AlignHCenter)); } void tst_QDeclarativeListModel::static_types() @@ -260,7 +468,7 @@ void tst_QDeclarativeListModel::static_types() QFETCH(QString, qml); QFETCH(QVariant, value); - qml = "import Qt 4.6\nListModel { " + qml + " }"; + qml = "import Qt 4.7\nListModel { " + qml + " }"; QDeclarativeEngine engine; QDeclarativeComponent component(&engine); @@ -292,32 +500,36 @@ void tst_QDeclarativeListModel::error_data() QTest::addColumn<QString>("error"); QTest::newRow("id not allowed in ListElement") - << "import Qt 4.6\nListModel { ListElement { id: fred } }" + << "import Qt 4.7\nListModel { ListElement { id: fred } }" << "ListElement: cannot use reserved \"id\" property"; QTest::newRow("id allowed in ListModel") - << "import Qt 4.6\nListModel { id:model }" + << "import Qt 4.7\nListModel { id:model }" << ""; QTest::newRow("random properties not allowed in ListModel") - << "import Qt 4.6\nListModel { foo:123 }" + << "import Qt 4.7\nListModel { foo:123 }" << "ListModel: undefined property 'foo'"; QTest::newRow("random properties allowed in ListElement") - << "import Qt 4.6\nListModel { ListElement { foo:123 } }" + << "import Qt 4.7\nListModel { ListElement { foo:123 } }" << ""; QTest::newRow("bindings not allowed in ListElement") - << "import Qt 4.6\nRectangle { id: rect; ListModel { ListElement { foo: rect.color } } }" - << "ListElement: cannot use script for property value"; // but note QTBUG-5974 + << "import Qt 4.7\nRectangle { id: rect; ListModel { ListElement { foo: rect.color } } }" + << "ListElement: cannot use script for property value"; QTest::newRow("random object list properties allowed in ListElement") - << "import Qt 4.6\nListModel { ListElement { foo: [ ListElement { bar: 123 } ] } }" + << "import Qt 4.7\nListModel { ListElement { foo: [ ListElement { bar: 123 } ] } }" << ""; QTest::newRow("default properties not allowed in ListElement") - << "import Qt 4.6\nListModel { ListElement { Item { } } }" - << "QTBUG-6082 ListElement should not allow child objects"; + << "import Qt 4.7\nListModel { ListElement { Item { } } }" + << "ListElement: cannot contain nested elements"; + + QTest::newRow("QML elements not allowed in ListElement") + << "import Qt 4.7\nListModel { ListElement { a: Item { } } }" + << "ListElement: cannot contain nested elements"; } void tst_QDeclarativeListModel::error() @@ -332,8 +544,6 @@ void tst_QDeclarativeListModel::error() if (error.isEmpty()) { QVERIFY(!component.isError()); } else { - if (error.startsWith(QLatin1String("QTBUG-"))) - QEXPECT_FAIL("",error.toLatin1(),Abort); QVERIFY(component.isError()); QList<QDeclarativeError> errors = component.errors(); QCOMPARE(errors.count(),1); @@ -341,6 +551,30 @@ void tst_QDeclarativeListModel::error() } } +void tst_QDeclarativeListModel::set() +{ + QDeclarativeEngine engine; + QDeclarativeListModel model; + QDeclarativeEngine::setContextForObject(&model,engine.rootContext()); + engine.rootContext()->setContextObject(&model); + QScriptEngine *seng = QDeclarativeEnginePrivate::getScriptEngine(&engine); + + QScriptValue sv = seng->newObject(); + sv.setProperty("test", QScriptValue(false)); + model.append(sv); + + sv.setProperty("test", QScriptValue(true)); + model.set(0, sv); + QCOMPARE(model.get(0).property("test").toBool(), true); // triggers creation of model cache + QCOMPARE(model.data(0, model.roles()[0]), qVariantFromValue(true)); + + sv.setProperty("test", QScriptValue(false)); + model.set(0, sv); + QCOMPARE(model.get(0).property("test").toBool(), false); // tests model cache is updated + QCOMPARE(model.data(0, model.roles()[0]), qVariantFromValue(false)); +} + + QTEST_MAIN(tst_QDeclarativeListModel) #include "tst_qdeclarativelistmodel.moc" diff --git a/tests/auto/declarative/qdeclarativelistreference/data/variantToList.qml b/tests/auto/declarative/qdeclarativelistreference/data/variantToList.qml index 0c2d0aa..d64be0f 100644 --- a/tests/auto/declarative/qdeclarativelistreference/data/variantToList.qml +++ b/tests/auto/declarative/qdeclarativelistreference/data/variantToList.qml @@ -4,7 +4,7 @@ QtObject { property list<QtObject> myList; myList: QtObject {} - property var value: myList + property variant value: myList property int test: value.length } diff --git a/tests/auto/declarative/qdeclarativelistreference/qdeclarativelistreference.pro b/tests/auto/declarative/qdeclarativelistreference/qdeclarativelistreference.pro index 0c9b2d9..f3e6f52 100644 --- a/tests/auto/declarative/qdeclarativelistreference/qdeclarativelistreference.pro +++ b/tests/auto/declarative/qdeclarativelistreference/qdeclarativelistreference.pro @@ -3,3 +3,6 @@ contains(QT_CONFIG,declarative): QT += declarative macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativelistreference.cpp + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativelistreference/tst_qdeclarativelistreference.cpp b/tests/auto/declarative/qdeclarativelistreference/tst_qdeclarativelistreference.cpp index 1b7af19..908f336 100644 --- a/tests/auto/declarative/qdeclarativelistreference/tst_qdeclarativelistreference.cpp +++ b/tests/auto/declarative/qdeclarativelistreference/tst_qdeclarativelistreference.cpp @@ -91,8 +91,8 @@ private slots: class TestType : public QObject { Q_OBJECT - Q_PROPERTY(QDeclarativeListProperty<TestType> data READ dataProperty); - Q_PROPERTY(int intProperty READ intProperty); + Q_PROPERTY(QDeclarativeListProperty<TestType> data READ dataProperty) + Q_PROPERTY(int intProperty READ intProperty) public: TestType() : property(this, data) {} @@ -106,7 +106,7 @@ QML_DECLARE_TYPE(TestType); void tst_qdeclarativelistreference::initTestCase() { - QML_REGISTER_NOCREATE_TYPE(TestType); + qmlRegisterType<TestType>(); } void tst_qdeclarativelistreference::qmllistreference() diff --git a/tests/auto/declarative/qdeclarativelistview/data/listview-initCurrent.qml b/tests/auto/declarative/qdeclarativelistview/data/listview-initCurrent.qml index 74f5ef4..a6d7610 100644 --- a/tests/auto/declarative/qdeclarativelistview/data/listview-initCurrent.qml +++ b/tests/auto/declarative/qdeclarativelistview/data/listview-initCurrent.qml @@ -1,6 +1,7 @@ import Qt 4.6 Rectangle { + property int current: list.currentIndex width: 240 height: 320 color: "#ffffff" diff --git a/tests/auto/declarative/qdeclarativelistview/data/listview.qml b/tests/auto/declarative/qdeclarativelistview/data/listview.qml deleted file mode 100644 index 1c1b3f8..0000000 --- a/tests/auto/declarative/qdeclarativelistview/data/listview.qml +++ /dev/null @@ -1,119 +0,0 @@ -import Qt 4.6 - -Rectangle { - width: 240 - height: 320 - color: "#ffffff" - function checkProperties() { - testObject.error = false; - if (list.model != testModel) { - console.log("model property incorrect"); - testObject.error = true; - } - if (!testObject.animate && list.delegate != myDelegate) { - console.log("delegate property incorrect - expected myDelegate"); - testObject.error = true; - } - if (testObject.animate && list.delegate != animatedDelegate) { - console.log("delegate property incorrect - expected animatedDelegate"); - testObject.error = true; - } - if (testObject.invalidHighlight && list.highlight != invalidHl) { - console.log("highlight property incorrect - expected invalidHl"); - testObject.error = true; - } - if (!testObject.invalidHighlight && list.highlight != myHighlight) { - console.log("highlight property incorrect - expected myHighlight"); - testObject.error = true; - } - } - resources: [ - Component { - id: myDelegate - Rectangle { - id: wrapper - objectName: "wrapper" - height: 20 - width: 240 - Text { - text: index - } - Text { - x: 30 - id: textName - objectName: "textName" - text: name - } - Text { - x: 120 - id: textNumber - objectName: "textNumber" - text: number - } - Text { - x: 200 - text: wrapper.y - } - color: ListView.isCurrentItem ? "lightsteelblue" : "white" - } - }, - Component { - id: animatedDelegate - Rectangle { - id: wrapper - objectName: "wrapper" - height: 20 - width: 240 - Text { - text: index - } - Text { - x: 30 - id: textName - objectName: "textName" - text: name - } - Text { - x: 120 - id: textNumber - objectName: "textNumber" - text: number - } - Text { - x: 200 - text: wrapper.y - } - color: ListView.isCurrentItem ? "lightsteelblue" : "white" - ListView.onRemove: SequentialAnimation { - ScriptAction { script: console.log("Fix PropertyAction with attached properties") } -/* - PropertyAction { target: wrapper; property: "ListView.delayRemove"; value: true } - NumberAnimation { target: wrapper; property: "scale"; to: 0; duration: 250; easing.type: "InOutQuad" } - PropertyAction { target: wrapper; property: "ListView.delayRemove"; value: false } -*/ - } - } - }, - Component { - id: myHighlight - Rectangle { color: "green" } - }, - Component { - id: invalidHl - EaseFollow {} - } - ] - ListView { - id: list - objectName: "list" - focus: true - width: 240 - height: 320 - model: testModel - delegate: testObject.animate ? animatedDelegate : myDelegate - highlight: testObject.invalidHighlight ? invalidHl : myHighlight - highlightMoveSpeed: 1000 - highlightResizeSpeed: 1000 - cacheBuffer: testObject.cacheBuffer - } -} diff --git a/tests/auto/declarative/qdeclarativelistview/data/listviewtest.qml b/tests/auto/declarative/qdeclarativelistview/data/listviewtest.qml new file mode 100644 index 0000000..40fc436 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelistview/data/listviewtest.qml @@ -0,0 +1,117 @@ +import Qt 4.6 + +Rectangle { + width: 240 + height: 320 + color: "#ffffff" + function checkProperties() { + testObject.error = false; + if (list.model != testModel) { + console.log("model property incorrect"); + testObject.error = true; + } + if (!testObject.animate && list.delegate != myDelegate) { + console.log("delegate property incorrect - expected myDelegate"); + testObject.error = true; + } + if (testObject.animate && list.delegate != animatedDelegate) { + console.log("delegate property incorrect - expected animatedDelegate"); + testObject.error = true; + } + if (testObject.invalidHighlight && list.highlight != invalidHl) { + console.log("highlight property incorrect - expected invalidHl"); + testObject.error = true; + } + if (!testObject.invalidHighlight && list.highlight != myHighlight) { + console.log("highlight property incorrect - expected myHighlight"); + testObject.error = true; + } + } + resources: [ + Component { + id: myDelegate + Rectangle { + id: wrapper + objectName: "wrapper" + height: 20 + width: 240 + Text { + text: index + } + Text { + x: 30 + id: textName + objectName: "textName" + text: name + } + Text { + x: 120 + id: textNumber + objectName: "textNumber" + text: number + } + Text { + x: 200 + text: wrapper.y + } + color: ListView.isCurrentItem ? "lightsteelblue" : "white" + } + }, + Component { + id: animatedDelegate + Rectangle { + id: wrapper + objectName: "wrapper" + height: 20 + width: 240 + Text { + text: index + } + Text { + x: 30 + id: textName + objectName: "textName" + text: name + } + Text { + x: 120 + id: textNumber + objectName: "textNumber" + text: number + } + Text { + x: 200 + text: wrapper.y + } + color: ListView.isCurrentItem ? "lightsteelblue" : "white" + ListView.onRemove: SequentialAnimation { + PropertyAction { target: wrapper; property: "ListView.delayRemove"; value: true } + NumberAnimation { target: wrapper; property: "scale"; to: 0; duration: 250; easing.type: "InOutQuad" } + PropertyAction { target: wrapper; property: "ListView.delayRemove"; value: false } + + } + } + }, + Component { + id: myHighlight + Rectangle { color: "green" } + }, + Component { + id: invalidHl + SmoothedAnimation {} + } + ] + ListView { + id: list + objectName: "list" + focus: true + width: 240 + height: 320 + model: testModel + delegate: testObject.animate ? animatedDelegate : myDelegate + highlight: testObject.invalidHighlight ? invalidHl : myHighlight + highlightMoveSpeed: 1000 + highlightResizeSpeed: 1000 + cacheBuffer: testObject.cacheBuffer + } +} diff --git a/tests/auto/declarative/qdeclarativelistview/data/propertychangestest.qml b/tests/auto/declarative/qdeclarativelistview/data/propertychangestest.qml new file mode 100644 index 0000000..09877ac --- /dev/null +++ b/tests/auto/declarative/qdeclarativelistview/data/propertychangestest.qml @@ -0,0 +1,71 @@ +import Qt 4.6 + +Rectangle { + width: 180; height: 120; color: "white" + Component { + id: delegate + Item { + id: wrapper + width: 180; height: 40; + Column { + x: 5; y: 5 + Text { text: '<b>Name:</b> ' + name } + Text { text: '<b>Number:</b> ' + number } + } + } + } + Component { + id: highlightRed + Rectangle { + color: "red" + radius: 10 + opacity: 0.5 + } + } + ListView { + objectName: "listView" + anchors.fill: parent + model: listModel + delegate: delegate + highlight: highlightRed + focus: true + highlightFollowsCurrentItem: true + preferredHighlightBegin: 0.0 + preferredHighlightEnd: 0.0 + highlightRangeMode: ListView.ApplyRange + keyNavigationWraps: true + cacheBuffer: 10 + snapMode: ListView.SnapToItem + } + + data:[ + ListModel { + id: listModel + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + }, + ListModel { + objectName: "alternateModel" + ListElement { + name: "Jack" + number: "555 8426" + } + ListElement { + name: "Mary" + number: "555 3264" + } + } + ] +} + + diff --git a/tests/auto/declarative/qdeclarativelistview/data/strictlyenforcerange.qml b/tests/auto/declarative/qdeclarativelistview/data/strictlyenforcerange.qml new file mode 100644 index 0000000..6fc41fa --- /dev/null +++ b/tests/auto/declarative/qdeclarativelistview/data/strictlyenforcerange.qml @@ -0,0 +1,29 @@ +import Qt 4.7 + +ListView { + id: list + objectName: "list" + width: 320 + height: 480 + + function fillModel() { + list.model.append({"col": "red"}); + list.currentIndex = list.count-1 + list.model.append({"col": "blue"}); + list.currentIndex = list.count-1 + list.model.append({"col": "green"}); + list.currentIndex = list.count-1 + } + + model: ListModel { id: listModel } // empty model + delegate: Rectangle { id: wrapper; objectName: "wrapper"; color: col; width: 300; height: 400 } + orientation: "Horizontal" + snapMode: "SnapToItem" + cacheBuffer: 1000 + + preferredHighlightBegin: 10 + preferredHighlightEnd: 10 + + highlightRangeMode: "StrictlyEnforceRange" + focus: true +} diff --git a/tests/auto/declarative/qdeclarativelistview/qdeclarativelistview.pro b/tests/auto/declarative/qdeclarativelistview/qdeclarativelistview.pro index 3a076f8..5d962c0 100644 --- a/tests/auto/declarative/qdeclarativelistview/qdeclarativelistview.pro +++ b/tests/auto/declarative/qdeclarativelistview/qdeclarativelistview.pro @@ -6,3 +6,5 @@ SOURCES += tst_qdeclarativelistview.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp index f15f26b..6b7a361 100644 --- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp +++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp @@ -38,15 +38,19 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ + #include <QtTest/QtTest> -#include <QStringListModel> -#include <private/qlistmodelinterface_p.h> -#include <qdeclarativeview.h> -#include <private/qdeclarativelistview_p.h> -#include <private/qdeclarativetext_p.h> -#include <private/qdeclarativevisualitemmodel_p.h> -#include <qdeclarativecontext.h> -#include <qdeclarativeexpression.h> +#include <QtGui/QStringListModel> +#include <QtDeclarative/qdeclarativeview.h> +#include <QtDeclarative/qdeclarativeengine.h> +#include <QtDeclarative/qdeclarativecontext.h> +#include <QtDeclarative/qdeclarativeexpression.h> +#include <QtDeclarative/private/qdeclarativelistview_p.h> +#include <QtDeclarative/private/qdeclarativetext_p.h> +#include <QtDeclarative/private/qdeclarativevisualitemmodel_p.h> +#include <QtDeclarative/private/qdeclarativelistmodel_p.h> +#include <QtDeclarative/private/qlistmodelinterface_p.h> +#include "../../../shared/util.h" class tst_QDeclarativeListView : public QObject { @@ -82,6 +86,10 @@ private slots: void cacheBuffer(); void positionViewAtIndex(); void resetModel(); + void propertyChanges(); + void componentChanges(); + void modelChanges(); + void QTBUG_9791(); private: template <class T> void items(); @@ -240,7 +248,7 @@ public: setRoleNames(roles); } - int rowCount(const QModelIndex &parent=QModelIndex()) const { return list.count(); } + int rowCount(const QModelIndex &parent=QModelIndex()) const { Q_UNUSED(parent); return list.count(); } QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const { QVariant rv; if (role == Name) @@ -315,70 +323,68 @@ void tst_QDeclarativeListView::items() TestObject *testObject = new TestObject; ctxt->setContextProperty("testObject", testObject); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listviewtest.qml")); qApp->processEvents(); QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); - QVERIFY(listview != 0); + QTRY_VERIFY(listview != 0); QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); QMetaObject::invokeMethod(canvas->rootObject(), "checkProperties"); - QVERIFY(testObject->error() == false); + QTRY_VERIFY(testObject->error() == false); - QVERIFY(listview->highlightItem() != 0); - QCOMPARE(listview->count(), model.count()); - QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item + QTRY_VERIFY(listview->highlightItem() != 0); + QTRY_COMPARE(listview->count(), model.count()); + QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item // current item should be first item - QCOMPARE(listview->currentItem(), findItem<QDeclarativeItem>(viewport, "wrapper", 0)); + QTRY_COMPARE(listview->currentItem(), findItem<QDeclarativeItem>(viewport, "wrapper", 0)); for (int i = 0; i < model.count(); ++i) { QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", i); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(i)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(i)); QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", i); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(i)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(i)); } // switch to other delegate testObject->setAnimate(true); QMetaObject::invokeMethod(canvas->rootObject(), "checkProperties"); - QVERIFY(testObject->error() == false); - QVERIFY(listview->currentItem()); + QTRY_VERIFY(testObject->error() == false); + QTRY_VERIFY(listview->currentItem()); // set invalid highlight testObject->setInvalidHighlight(true); QMetaObject::invokeMethod(canvas->rootObject(), "checkProperties"); - QVERIFY(testObject->error() == false); - QVERIFY(listview->currentItem()); - QVERIFY(listview->highlightItem() == 0); + QTRY_VERIFY(testObject->error() == false); + QTRY_VERIFY(listview->currentItem()); + QTRY_VERIFY(listview->highlightItem() == 0); // back to normal highlight testObject->setInvalidHighlight(false); QMetaObject::invokeMethod(canvas->rootObject(), "checkProperties"); - QVERIFY(testObject->error() == false); - QVERIFY(listview->currentItem()); - QVERIFY(listview->highlightItem() != 0); + QTRY_VERIFY(testObject->error() == false); + QTRY_VERIFY(listview->currentItem()); + QTRY_VERIFY(listview->highlightItem() != 0); // set an empty model and confirm that items are destroyed T model2; ctxt->setContextProperty("testModel", &model2); - // Allow deleteLaters to process - QTest::qWait(500); - int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); - QVERIFY(itemCount == 0); + QTRY_VERIFY(itemCount == 0); - QCOMPARE(listview->highlightResizeSpeed(), 1000.0); - QCOMPARE(listview->highlightMoveSpeed(), 1000.0); + QTRY_COMPARE(listview->highlightResizeSpeed(), 1000.0); + QTRY_COMPARE(listview->highlightMoveSpeed(), 1000.0); delete canvas; } + template <class T> void tst_QDeclarativeListView::changed() { @@ -395,22 +401,22 @@ void tst_QDeclarativeListView::changed() TestObject *testObject = new TestObject; ctxt->setContextProperty("testObject", testObject); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listviewtest.qml")); qApp->processEvents(); QDeclarativeFlickable *listview = findItem<QDeclarativeFlickable>(canvas->rootObject(), "list"); - QVERIFY(listview != 0); + QTRY_VERIFY(listview != 0); QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); model.modifyItem(1, "Will", "9876"); QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 1); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(1)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(1)); QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 1); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(1)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(1)); delete canvas; } @@ -431,79 +437,70 @@ void tst_QDeclarativeListView::inserted() TestObject *testObject = new TestObject; ctxt->setContextProperty("testObject", testObject); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listviewtest.qml")); qApp->processEvents(); QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); - QVERIFY(listview != 0); + QTRY_VERIFY(listview != 0); QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); model.insertItem(1, "Will", "9876"); - // let transitions settle. - QTest::qWait(500); - - QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item + QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 1); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(1)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(1)); QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 1); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(1)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(1)); // Confirm items positioned correctly for (int i = 0; i < model.count(); ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); - QCOMPARE(item->y(), i*20.0); + QTRY_COMPARE(item->y(), i*20.0); } model.insertItem(0, "Foo", "1111"); // zero index, and current item - // let transitions settle. - QTest::qWait(500); - - QCOMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item + QTRY_COMPARE(viewport->childItems().count(), model.count()+1); // assumes all are visible, +1 for the (default) highlight item name = findItem<QDeclarativeText>(viewport, "textName", 0); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(0)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(0)); number = findItem<QDeclarativeText>(viewport, "textNumber", 0); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(0)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(0)); - QCOMPARE(listview->currentIndex(), 1); + QTRY_COMPARE(listview->currentIndex(), 1); // Confirm items positioned correctly for (int i = 0; i < model.count(); ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); - QCOMPARE(item->y(), i*20.0); + QTRY_COMPARE(item->y(), i*20.0); } for (int i = model.count(); i < 30; ++i) model.insertItem(i, "Hello", QString::number(i)); - QTest::qWait(500); listview->setContentY(80); - QTest::qWait(500); // Insert item outside visible area model.insertItem(1, "Hello", "1324"); - QTest::qWait(500); - QVERIFY(listview->contentY() == 80); + QTRY_VERIFY(listview->contentY() == 80); // Confirm items positioned correctly for (int i = 5; i < 5+15; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->y(), i*20.0 - 20.0); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(), i*20.0 - 20.0); } -// QCOMPARE(listview->viewportHeight(), model.count() * 20.0); +// QTRY_COMPARE(listview->viewportHeight(), model.count() * 20.0); delete canvas; } @@ -524,70 +521,64 @@ void tst_QDeclarativeListView::removed(bool animated) testObject->setAnimate(animated); ctxt->setContextProperty("testObject", testObject); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listviewtest.qml")); qApp->processEvents(); QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); - QVERIFY(listview != 0); + QTRY_VERIFY(listview != 0); QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); model.removeItem(1); - // let transitions settle. - QTest::qWait(500); - QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 1); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(1)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(1)); QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 1); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(1)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(1)); // Confirm items positioned correctly int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QVERIFY(item->y() == i*20); + QTRY_VERIFY(item); + QTRY_VERIFY(item->y() == i*20); } // Remove first item (which is the current item); model.removeItem(0); // post: top item starts at 20 - // let transitions settle. - QTest::qWait(500); + QTest::qWait(300); name = findItem<QDeclarativeText>(viewport, "textName", 0); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(0)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(0)); number = findItem<QDeclarativeText>(viewport, "textNumber", 0); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(0)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(0)); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->y(),i*20.0 + 20.0); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(),i*20.0 + 20.0); } // Remove items not visible model.removeItem(18); - // let transitions settle. - QTest::qWait(500); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->y(),i*20.0+20.0); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(),i*20.0+20.0); } // Remove items before visible @@ -595,58 +586,51 @@ void tst_QDeclarativeListView::removed(bool animated) listview->setCurrentIndex(10); model.removeItem(1); // post: top item will be at 40 - // let transitions settle. - QTest::qWait(500); // Confirm items positioned correctly for (int i = 2; i < 18; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->y(),40+i*20.0); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(),40+i*20.0); } // Remove current index - QVERIFY(listview->currentIndex() == 9); + QTRY_VERIFY(listview->currentIndex() == 9); QDeclarativeItem *oldCurrent = listview->currentItem(); model.removeItem(9); - QTest::qWait(500); - QCOMPARE(listview->currentIndex(), 9); - QVERIFY(listview->currentItem() != oldCurrent); + QTRY_COMPARE(listview->currentIndex(), 9); + QTRY_VERIFY(listview->currentItem() != oldCurrent); listview->setContentY(40); // That's the top now // let transitions settle. - QTest::qWait(500); + QTest::qWait(300); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->y(),40+i*20.0); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(),40+i*20.0); } // remove current item beyond visible items. listview->setCurrentIndex(20); - QTest::qWait(500); listview->setContentY(40); model.removeItem(20); - QTest::qWait(500); - QCOMPARE(listview->currentIndex(), 20); - QVERIFY(listview->currentItem() != 0); + QTRY_COMPARE(listview->currentIndex(), 20); + QTRY_VERIFY(listview->currentItem() != 0); // remove item before current, but visible listview->setCurrentIndex(8); - QTest::qWait(500); oldCurrent = listview->currentItem(); model.removeItem(6); - QTest::qWait(500); - QCOMPARE(listview->currentIndex(), 7); - QVERIFY(listview->currentItem() == oldCurrent); + QTRY_COMPARE(listview->currentIndex(), 7); + QTRY_VERIFY(listview->currentItem() == oldCurrent); delete canvas; } @@ -666,23 +650,20 @@ void tst_QDeclarativeListView::clear() TestObject *testObject = new TestObject; ctxt->setContextProperty("testObject", testObject); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listviewtest.qml")); qApp->processEvents(); QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); - QVERIFY(listview != 0); + QTRY_VERIFY(listview != 0); QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); model.clear(); - // let transitions settle. - QTest::qWait(500); - - QVERIFY(listview->count() == 0); - QVERIFY(listview->currentItem() == 0); - QVERIFY(listview->contentY() == 0); + QTRY_VERIFY(listview->count() == 0); + QTRY_VERIFY(listview->currentItem() == 0); + QTRY_VERIFY(listview->contentY() == 0); delete canvas; } @@ -703,41 +684,38 @@ void tst_QDeclarativeListView::moved() TestObject *testObject = new TestObject; ctxt->setContextProperty("testObject", testObject); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listviewtest.qml")); qApp->processEvents(); QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); - QVERIFY(listview != 0); + QTRY_VERIFY(listview != 0); QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); model.moveItem(1, 4); - // let transitions settle. - QTest::qWait(500); - QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 1); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(1)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(1)); QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 1); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(1)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(1)); name = findItem<QDeclarativeText>(viewport, "textName", 4); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(4)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(4)); number = findItem<QDeclarativeText>(viewport, "textNumber", 4); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(4)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(4)); // Confirm items positioned correctly int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QVERIFY(item->y() == i*20); + QTRY_VERIFY(item); + QTRY_VERIFY(item->y() == i*20); } listview->setContentY(80); @@ -745,41 +723,35 @@ void tst_QDeclarativeListView::moved() // move outside visible area model.moveItem(1, 18); - // let transitions settle. - QTest::qWait(500); - // Confirm items positioned correctly and indexes correct for (int i = 3; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->y(), i*20.0 + 20); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(), i*20.0 + 20); name = findItem<QDeclarativeText>(viewport, "textName", i); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(i)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(i)); number = findItem<QDeclarativeText>(viewport, "textNumber", i); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(i)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(i)); } // move from outside visible into visible model.moveItem(20, 4); - // let transitions settle. - QTest::qWait(500); - // Confirm items positioned correctly and indexes correct for (int i = 3; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->y(), i*20.0 + 20); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(), i*20.0 + 20); name = findItem<QDeclarativeText>(viewport, "textName", i); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(i)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(i)); number = findItem<QDeclarativeText>(viewport, "textNumber", i); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(i)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(i)); } delete canvas; @@ -800,32 +772,31 @@ void tst_QDeclarativeListView::enforceRange() qApp->processEvents(); QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); - QVERIFY(listview != 0); + QTRY_VERIFY(listview != 0); - QCOMPARE(listview->preferredHighlightBegin(), 100.0); - QCOMPARE(listview->preferredHighlightEnd(), 100.0); - QCOMPARE(listview->highlightRangeMode(), QDeclarativeListView::StrictlyEnforceRange); + QTRY_COMPARE(listview->preferredHighlightBegin(), 100.0); + QTRY_COMPARE(listview->preferredHighlightEnd(), 100.0); + QTRY_COMPARE(listview->highlightRangeMode(), QDeclarativeListView::StrictlyEnforceRange); QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); // view should be positioned at the top of the range. QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", 0); - QVERIFY(item); - QCOMPARE(listview->contentY(), -100.0); + QTRY_VERIFY(item); + QTRY_COMPARE(listview->contentY(), -100.0); QDeclarativeText *name = findItem<QDeclarativeText>(viewport, "textName", 0); - QVERIFY(name != 0); - QCOMPARE(name->text(), model.name(0)); + QTRY_VERIFY(name != 0); + QTRY_COMPARE(name->text(), model.name(0)); QDeclarativeText *number = findItem<QDeclarativeText>(viewport, "textNumber", 0); - QVERIFY(number != 0); - QCOMPARE(number->text(), model.number(0)); + QTRY_VERIFY(number != 0); + QTRY_COMPARE(number->text(), model.number(0)); // Check currentIndex is updated when viewport moves listview->setContentY(20); - QTest::qWait(500); - QCOMPARE(listview->currentIndex(), 6); + QTRY_COMPARE(listview->currentIndex(), 6); delete canvas; } @@ -844,34 +815,34 @@ void tst_QDeclarativeListView::spacing() TestObject *testObject = new TestObject; ctxt->setContextProperty("testObject", testObject); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listviewtest.qml")); qApp->processEvents(); QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); - QVERIFY(listview != 0); + QTRY_VERIFY(listview != 0); QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); // Confirm items positioned correctly int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QVERIFY(item->y() == i*20); + QTRY_VERIFY(item); + QTRY_VERIFY(item->y() == i*20); } listview->setSpacing(10); - QVERIFY(listview->spacing() == 10); + QTRY_VERIFY(listview->spacing() == 10); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QVERIFY(item->y() == i*30); + QTRY_VERIFY(item); + QTRY_VERIFY(item->y() == i*30); } listview->setSpacing(0); @@ -881,8 +852,8 @@ void tst_QDeclarativeListView::spacing() for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->y(), i*20.0); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(), i*20.0); } delete canvas; @@ -903,17 +874,17 @@ void tst_QDeclarativeListView::sections() qApp->processEvents(); QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); - QVERIFY(listview != 0); + QTRY_VERIFY(listview != 0); QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); // Confirm items positioned correctly int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); - QVERIFY(item); - QCOMPARE(item->y(), qreal(i*20 + ((i+4)/5) * 20)); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(), qreal(i*20 + ((i+4)/5) * 20)); } // Remove section boundary @@ -921,42 +892,42 @@ void tst_QDeclarativeListView::sections() // New section header created QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", 5); - QVERIFY(item); - QCOMPARE(item->height(), 40.0); + QTRY_VERIFY(item); + QTRY_COMPARE(item->height(), 40.0); model.insertItem(3, "New Item", "0"); // Section header moved item = findItem<QDeclarativeItem>(viewport, "wrapper", 5); - QVERIFY(item); - QCOMPARE(item->height(), 20.0); + QTRY_VERIFY(item); + QTRY_COMPARE(item->height(), 20.0); item = findItem<QDeclarativeItem>(viewport, "wrapper", 6); - QVERIFY(item); - QCOMPARE(item->height(), 40.0); + QTRY_VERIFY(item); + QTRY_COMPARE(item->height(), 40.0); // insert item which will become a section header model.insertItem(6, "Replace header", "1"); item = findItem<QDeclarativeItem>(viewport, "wrapper", 6); - QVERIFY(item); - QCOMPARE(item->height(), 40.0); + QTRY_VERIFY(item); + QTRY_COMPARE(item->height(), 40.0); item = findItem<QDeclarativeItem>(viewport, "wrapper", 7); - QVERIFY(item); - QCOMPARE(item->height(), 20.0); + QTRY_VERIFY(item); + QTRY_COMPARE(item->height(), 20.0); - QCOMPARE(listview->currentSection(), QString("0")); + QTRY_COMPARE(listview->currentSection(), QString("0")); listview->setContentY(140); - QCOMPARE(listview->currentSection(), QString("1")); + QTRY_COMPARE(listview->currentSection(), QString("1")); listview->setContentY(20); - QCOMPARE(listview->currentSection(), QString("0")); + QTRY_COMPARE(listview->currentSection(), QString("0")); item = findItem<QDeclarativeItem>(viewport, "wrapper", 1); - QVERIFY(item); - QCOMPARE(item->height(), 20.0); + QTRY_VERIFY(item); + QTRY_COMPARE(item->height(), 20.0); delete canvas; } @@ -980,76 +951,73 @@ void tst_QDeclarativeListView::currentIndex() qApp->processEvents(); QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); - QVERIFY(listview != 0); + QTRY_VERIFY(listview != 0); QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); - - QTest::qWait(500); + QTRY_VERIFY(viewport != 0); // current item should be third item - QCOMPARE(listview->currentIndex(), 3); - QCOMPARE(listview->currentItem(), findItem<QDeclarativeItem>(viewport, "wrapper", 3)); - QCOMPARE(listview->highlightItem()->y(), listview->currentItem()->y()); + QTRY_COMPARE(listview->currentIndex(), 3); + QTRY_COMPARE(listview->currentItem(), findItem<QDeclarativeItem>(viewport, "wrapper", 3)); + QTRY_COMPARE(listview->highlightItem()->y(), listview->currentItem()->y()); // no wrap listview->setCurrentIndex(0); - QCOMPARE(listview->currentIndex(), 0); + QTRY_COMPARE(listview->currentIndex(), 0); listview->incrementCurrentIndex(); - QCOMPARE(listview->currentIndex(), 1); + QTRY_COMPARE(listview->currentIndex(), 1); listview->decrementCurrentIndex(); - QCOMPARE(listview->currentIndex(), 0); + QTRY_COMPARE(listview->currentIndex(), 0); listview->decrementCurrentIndex(); - QCOMPARE(listview->currentIndex(), 0); + QTRY_COMPARE(listview->currentIndex(), 0); // with wrap ctxt->setContextProperty("testWrap", QVariant(true)); - QVERIFY(listview->isWrapEnabled()); + QTRY_VERIFY(listview->isWrapEnabled()); listview->decrementCurrentIndex(); - QCOMPARE(listview->currentIndex(), model.count()-1); + QTRY_COMPARE(listview->currentIndex(), model.count()-1); - QTest::qWait(1000); - QCOMPARE(listview->contentY(), 279.0); + QTRY_COMPARE(listview->contentY(), 279.0); listview->incrementCurrentIndex(); - QCOMPARE(listview->currentIndex(), 0); + QTRY_COMPARE(listview->currentIndex(), 0); - QTest::qWait(1000); - QCOMPARE(listview->contentY(), 0.0); + QTRY_COMPARE(listview->contentY(), 0.0); // Test keys canvas->show(); + qApp->setActiveWindow(canvas); +#ifdef Q_WS_X11 + // to be safe and avoid failing setFocus with window managers + qt_x11_wait_for_window_manager(canvas); +#endif + QTRY_VERIFY(canvas->hasFocus()); + QTRY_VERIFY(canvas->scene()->hasFocus()); qApp->processEvents(); - QEvent wa(QEvent::WindowActivate); - QApplication::sendEvent(canvas, &wa); - QFocusEvent fe(QEvent::FocusIn); - QApplication::sendEvent(canvas, &fe); + QTest::keyClick(canvas, Qt::Key_Down); + QTRY_COMPARE(listview->currentIndex(), 1); - QKeyEvent key(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier, "", false, 1); - QApplication::sendEvent(canvas, &key); - QVERIFY(key.isAccepted()); - QCOMPARE(listview->currentIndex(), 1); - - key = QKeyEvent(QEvent::KeyPress, Qt::Key_Up, Qt::NoModifier, "", false, 1); - QApplication::sendEvent(canvas, &key); - QVERIFY(key.isAccepted()); - QCOMPARE(listview->currentIndex(), 0); + QTest::keyClick(canvas, Qt::Key_Up); + QTRY_COMPARE(listview->currentIndex(), 0); // turn off auto highlight listview->setHighlightFollowsCurrentItem(false); - QVERIFY(listview->highlightFollowsCurrentItem() == false); + QTRY_VERIFY(listview->highlightFollowsCurrentItem() == false); - QTest::qWait(500); - QVERIFY(listview->highlightItem()); + QTRY_VERIFY(listview->highlightItem()); qreal hlPos = listview->highlightItem()->y(); listview->setCurrentIndex(4); - QTest::qWait(500); - QCOMPARE(listview->highlightItem()->y(), hlPos); + QTRY_COMPARE(listview->highlightItem()->y(), hlPos); + + // insert item before currentIndex + listview->setCurrentIndex(28); + model.insertItem(0, "Foo", "1111"); + QTRY_COMPARE(canvas->rootObject()->property("current").toInt(), 29); delete canvas; } @@ -1062,35 +1030,34 @@ void tst_QDeclarativeListView::itemList() qApp->processEvents(); QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "view"); - QVERIFY(listview != 0); + QTRY_VERIFY(listview != 0); QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); QDeclarativeVisualItemModel *model = canvas->rootObject()->findChild<QDeclarativeVisualItemModel*>("itemModel"); - QVERIFY(model != 0); + QTRY_VERIFY(model != 0); - QVERIFY(model->count() == 3); - QCOMPARE(listview->currentIndex(), 0); + QTRY_VERIFY(model->count() == 3); + QTRY_COMPARE(listview->currentIndex(), 0); QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "item1"); - QVERIFY(item); - QCOMPARE(item->x(), 0.0); + QTRY_VERIFY(item); + QTRY_COMPARE(item->x(), 0.0); QDeclarativeText *text = findItem<QDeclarativeText>(viewport, "text1"); - QVERIFY(text); - QCOMPARE(text->text(), QLatin1String("index: 0")); + QTRY_VERIFY(text); + QTRY_COMPARE(text->text(), QLatin1String("index: 0")); listview->setCurrentIndex(2); - QTest::qWait(1000); item = findItem<QDeclarativeItem>(viewport, "item3"); - QVERIFY(item); - QCOMPARE(item->x(), 480.0); + QTRY_VERIFY(item); + QTRY_COMPARE(item->x(), 480.0); text = findItem<QDeclarativeText>(viewport, "text3"); - QVERIFY(text); - QCOMPARE(text->text(), QLatin1String("index: 2")); + QTRY_VERIFY(text); + QTRY_COMPARE(text->text(), QLatin1String("index: 2")); delete canvas; } @@ -1109,39 +1076,39 @@ void tst_QDeclarativeListView::cacheBuffer() TestObject *testObject = new TestObject; ctxt->setContextProperty("testObject", testObject); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listviewtest.qml")); qApp->processEvents(); QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); - QVERIFY(listview != 0); + QTRY_VERIFY(listview != 0); QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); - QVERIFY(listview->delegate() != 0); - QVERIFY(listview->model() != 0); - QVERIFY(listview->highlight() != 0); + QTRY_VERIFY(viewport != 0); + QTRY_VERIFY(listview->delegate() != 0); + QTRY_VERIFY(listview->model() != 0); + QTRY_VERIFY(listview->highlight() != 0); // Confirm items positioned correctly int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QVERIFY(item->y() == i*20); + QTRY_VERIFY(item); + QTRY_VERIFY(item->y() == i*20); } testObject->setCacheBuffer(400); - QVERIFY(listview->cacheBuffer() == 400); + QTRY_VERIFY(listview->cacheBuffer() == 400); int newItemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); - QVERIFY(newItemCount > itemCount); + QTRY_VERIFY(newItemCount > itemCount); // Confirm items positioned correctly for (int i = 0; i < model.count() && i < newItemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QVERIFY(item->y() == i*20); + QTRY_VERIFY(item); + QTRY_VERIFY(item->y() == i*20); } delete canvas; @@ -1161,76 +1128,117 @@ void tst_QDeclarativeListView::positionViewAtIndex() TestObject *testObject = new TestObject; ctxt->setContextProperty("testObject", testObject); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/listviewtest.qml")); qApp->processEvents(); QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); - QVERIFY(listview != 0); + QTRY_VERIFY(listview != 0); QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); // Confirm items positioned correctly int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->y(), i*20.); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(), i*20.); } // Position on a currently visible item - listview->positionViewAtIndex(3); - QCOMPARE(listview->contentY(), 60.); + listview->positionViewAtIndex(3, QDeclarativeListView::Beginning); + QTRY_COMPARE(listview->contentY(), 60.); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 3; i < model.count() && i < itemCount-3-1; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->y(), i*20.); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(), i*20.); } // Position on an item beyond the visible items - listview->positionViewAtIndex(22); - QCOMPARE(listview->contentY(), 440.); + listview->positionViewAtIndex(22, QDeclarativeListView::Beginning); + QTRY_COMPARE(listview->contentY(), 440.); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 22; i < model.count() && i < itemCount-22-1; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->y(), i*20.); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(), i*20.); } // Position on an item that would leave empty space if positioned at the top - listview->positionViewAtIndex(28); - QCOMPARE(listview->contentY(), 480.); + listview->positionViewAtIndex(28, QDeclarativeListView::Beginning); + QTRY_COMPARE(listview->contentY(), 480.); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 24; i < model.count() && i < itemCount-24-1; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->y(), i*20.); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(), i*20.); } // Position at the beginning again - listview->positionViewAtIndex(0); - QCOMPARE(listview->contentY(), 0.); + listview->positionViewAtIndex(0, QDeclarativeListView::Beginning); + QTRY_COMPARE(listview->contentY(), 0.); // Confirm items positioned correctly itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); for (int i = 0; i < model.count() && i < itemCount-1; ++i) { QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); if (!item) qWarning() << "Item" << i << "not found"; - QVERIFY(item); - QCOMPARE(item->y(), i*20.); + QTRY_VERIFY(item); + QTRY_COMPARE(item->y(), i*20.); } + // Position at End + listview->positionViewAtIndex(20, QDeclarativeListView::End); + QTRY_COMPARE(listview->contentY(), 100.); + + // Position in Center + listview->positionViewAtIndex(15, QDeclarativeListView::Center); + QTRY_COMPARE(listview->contentY(), 150.); + + // Ensure at least partially visible + listview->positionViewAtIndex(15, QDeclarativeListView::Visible); + QTRY_COMPARE(listview->contentY(), 150.); + + listview->setContentY(302); + listview->positionViewAtIndex(15, QDeclarativeListView::Visible); + QTRY_COMPARE(listview->contentY(), 302.); + + listview->setContentY(320); + listview->positionViewAtIndex(15, QDeclarativeListView::Visible); + QTRY_COMPARE(listview->contentY(), 300.); + + listview->setContentY(85); + listview->positionViewAtIndex(20, QDeclarativeListView::Visible); + QTRY_COMPARE(listview->contentY(), 85.); + + listview->setContentY(75); + listview->positionViewAtIndex(20, QDeclarativeListView::Visible); + QTRY_COMPARE(listview->contentY(), 100.); + + // Ensure completely visible + listview->setContentY(120); + listview->positionViewAtIndex(20, QDeclarativeListView::Contain); + QTRY_COMPARE(listview->contentY(), 120.); + + listview->setContentY(302); + listview->positionViewAtIndex(15, QDeclarativeListView::Contain); + QTRY_COMPARE(listview->contentY(), 300.); + + listview->setContentY(85); + listview->positionViewAtIndex(20, QDeclarativeListView::Contain); + QTRY_COMPARE(listview->contentY(), 100.); + delete canvas; } @@ -1249,32 +1257,213 @@ void tst_QDeclarativeListView::resetModel() qApp->processEvents(); QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); - QVERIFY(listview != 0); + QTRY_VERIFY(listview != 0); QDeclarativeItem *viewport = listview->viewport(); - QVERIFY(viewport != 0); + QTRY_VERIFY(viewport != 0); - QCOMPARE(listview->count(), model.rowCount()); + QTRY_COMPARE(listview->count(), model.rowCount()); for (int i = 0; i < model.rowCount(); ++i) { QDeclarativeText *display = findItem<QDeclarativeText>(viewport, "displayText", i); - QVERIFY(display != 0); - QCOMPARE(display->text(), strings.at(i)); + QTRY_VERIFY(display != 0); + QTRY_COMPARE(display->text(), strings.at(i)); } strings.clear(); strings << "four" << "five" << "six" << "seven"; model.setStringList(strings); - QCOMPARE(listview->count(), model.rowCount()); + QTRY_COMPARE(listview->count(), model.rowCount()); for (int i = 0; i < model.rowCount(); ++i) { QDeclarativeText *display = findItem<QDeclarativeText>(viewport, "displayText", i); - QVERIFY(display != 0); - QCOMPARE(display->text(), strings.at(i)); + QTRY_VERIFY(display != 0); + QTRY_COMPARE(display->text(), strings.at(i)); } } +void tst_QDeclarativeListView::propertyChanges() +{ + QDeclarativeView *canvas = createView(); + QTRY_VERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychangestest.qml")); + + QDeclarativeListView *listView = canvas->rootObject()->findChild<QDeclarativeListView*>("listView"); + QTRY_VERIFY(listView); + + QSignalSpy highlightFollowsCurrentItemSpy(listView, SIGNAL(highlightFollowsCurrentItemChanged())); + QSignalSpy preferredHighlightBeginSpy(listView, SIGNAL(preferredHighlightBeginChanged())); + QSignalSpy preferredHighlightEndSpy(listView, SIGNAL(preferredHighlightEndChanged())); + QSignalSpy highlightRangeModeSpy(listView, SIGNAL(highlightRangeModeChanged())); + QSignalSpy keyNavigationWrapsSpy(listView, SIGNAL(keyNavigationWrapsChanged())); + QSignalSpy cacheBufferSpy(listView, SIGNAL(cacheBufferChanged())); + QSignalSpy snapModeSpy(listView, SIGNAL(snapModeChanged())); + + QTRY_COMPARE(listView->highlightFollowsCurrentItem(), true); + QTRY_COMPARE(listView->preferredHighlightBegin(), 0.0); + QTRY_COMPARE(listView->preferredHighlightEnd(), 0.0); + QTRY_COMPARE(listView->highlightRangeMode(), QDeclarativeListView::ApplyRange); + QTRY_COMPARE(listView->isWrapEnabled(), true); + QTRY_COMPARE(listView->cacheBuffer(), 10); + QTRY_COMPARE(listView->snapMode(), QDeclarativeListView::SnapToItem); + + listView->setHighlightFollowsCurrentItem(false); + listView->setPreferredHighlightBegin(1.0); + listView->setPreferredHighlightEnd(1.0); + listView->setHighlightRangeMode(QDeclarativeListView::StrictlyEnforceRange); + listView->setWrapEnabled(false); + listView->setCacheBuffer(3); + listView->setSnapMode(QDeclarativeListView::SnapOneItem); + + QTRY_COMPARE(listView->highlightFollowsCurrentItem(), false); + QTRY_COMPARE(listView->preferredHighlightBegin(), 1.0); + QTRY_COMPARE(listView->preferredHighlightEnd(), 1.0); + QTRY_COMPARE(listView->highlightRangeMode(), QDeclarativeListView::StrictlyEnforceRange); + QTRY_COMPARE(listView->isWrapEnabled(), false); + QTRY_COMPARE(listView->cacheBuffer(), 3); + QTRY_COMPARE(listView->snapMode(), QDeclarativeListView::SnapOneItem); + + QTRY_COMPARE(highlightFollowsCurrentItemSpy.count(),1); + QTRY_COMPARE(preferredHighlightBeginSpy.count(),1); + QTRY_COMPARE(preferredHighlightEndSpy.count(),1); + QTRY_COMPARE(highlightRangeModeSpy.count(),1); + QTRY_COMPARE(keyNavigationWrapsSpy.count(),1); + QTRY_COMPARE(cacheBufferSpy.count(),1); + QTRY_COMPARE(snapModeSpy.count(),1); + + listView->setHighlightFollowsCurrentItem(false); + listView->setPreferredHighlightBegin(1.0); + listView->setPreferredHighlightEnd(1.0); + listView->setHighlightRangeMode(QDeclarativeListView::StrictlyEnforceRange); + listView->setWrapEnabled(false); + listView->setCacheBuffer(3); + listView->setSnapMode(QDeclarativeListView::SnapOneItem); + + QTRY_COMPARE(highlightFollowsCurrentItemSpy.count(),1); + QTRY_COMPARE(preferredHighlightBeginSpy.count(),1); + QTRY_COMPARE(preferredHighlightEndSpy.count(),1); + QTRY_COMPARE(highlightRangeModeSpy.count(),1); + QTRY_COMPARE(keyNavigationWrapsSpy.count(),1); + QTRY_COMPARE(cacheBufferSpy.count(),1); + QTRY_COMPARE(snapModeSpy.count(),1); + + delete canvas; +} + +void tst_QDeclarativeListView::componentChanges() +{ + QDeclarativeView *canvas = createView(); + QTRY_VERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychangestest.qml")); + + QDeclarativeListView *listView = canvas->rootObject()->findChild<QDeclarativeListView*>("listView"); + QTRY_VERIFY(listView); + + QDeclarativeComponent component(canvas->engine()); + component.setData("import Qt 4.7; Rectangle { color: \"blue\"; }", QUrl::fromLocalFile("")); + + QDeclarativeComponent delegateComponent(canvas->engine()); + delegateComponent.setData("import Qt 4.7; Text { text: '<b>Name:</b> ' + name }", QUrl::fromLocalFile("")); + + QSignalSpy highlightSpy(listView, SIGNAL(highlightChanged())); + QSignalSpy delegateSpy(listView, SIGNAL(delegateChanged())); + QSignalSpy headerSpy(listView, SIGNAL(headerChanged())); + QSignalSpy footerSpy(listView, SIGNAL(footerChanged())); + + listView->setHighlight(&component); + listView->setHeader(&component); + listView->setFooter(&component); + listView->setDelegate(&delegateComponent); + + QTRY_COMPARE(listView->highlight(), &component); + QTRY_COMPARE(listView->header(), &component); + QTRY_COMPARE(listView->footer(), &component); + QTRY_COMPARE(listView->delegate(), &delegateComponent); + + QTRY_COMPARE(highlightSpy.count(),1); + QTRY_COMPARE(delegateSpy.count(),1); + QTRY_COMPARE(headerSpy.count(),1); + QTRY_COMPARE(footerSpy.count(),1); + + listView->setHighlight(&component); + listView->setHeader(&component); + listView->setFooter(&component); + listView->setDelegate(&delegateComponent); + + QTRY_COMPARE(highlightSpy.count(),1); + QTRY_COMPARE(delegateSpy.count(),1); + QTRY_COMPARE(headerSpy.count(),1); + QTRY_COMPARE(footerSpy.count(),1); + + delete canvas; +} + +void tst_QDeclarativeListView::modelChanges() +{ + QDeclarativeView *canvas = createView(); + QTRY_VERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychangestest.qml")); + + QDeclarativeListView *listView = canvas->rootObject()->findChild<QDeclarativeListView*>("listView"); + QTRY_VERIFY(listView); + + QDeclarativeListModel *alternateModel = canvas->rootObject()->findChild<QDeclarativeListModel*>("alternateModel"); + QTRY_VERIFY(alternateModel); + QVariant modelVariant = QVariant::fromValue(alternateModel); + QSignalSpy modelSpy(listView, SIGNAL(modelChanged())); + + listView->setModel(modelVariant); + QTRY_COMPARE(listView->model(), modelVariant); + QTRY_COMPARE(modelSpy.count(),1); + + listView->setModel(modelVariant); + QTRY_COMPARE(modelSpy.count(),1); + + listView->setModel(QVariant()); + QTRY_COMPARE(modelSpy.count(),2); + + delete canvas; +} + +void tst_QDeclarativeListView::QTBUG_9791() +{ + QDeclarativeView *canvas = createView(); + + QDeclarativeContext *ctxt = canvas->rootContext(); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/strictlyenforcerange.qml")); + qApp->processEvents(); + + QDeclarativeListView *listview = qobject_cast<QDeclarativeListView*>(canvas->rootObject()); + QTRY_VERIFY(listview != 0); + + QDeclarativeItem *viewport = listview->viewport(); + QTRY_VERIFY(viewport != 0); + QTRY_VERIFY(listview->delegate() != 0); + QTRY_VERIFY(listview->model() != 0); + + QMetaObject::invokeMethod(listview, "fillModel"); + qApp->processEvents(); + + // Confirm items positioned correctly + int itemCount = findItems<QDeclarativeItem>(viewport, "wrapper").count(); + QVERIFY(itemCount == 3); + + for (int i = 0; i < itemCount; ++i) { + QDeclarativeItem *item = findItem<QDeclarativeItem>(viewport, "wrapper", i); + if (!item) qWarning() << "Item" << i << "not found"; + QTRY_VERIFY(item); + QTRY_COMPARE(item->x(), i*300.0); + } + + // check that view is positioned correctly + QTRY_COMPARE(listview->contentX(), 590.0); + + delete canvas; +} + + void tst_QDeclarativeListView::qListModelInterface_items() { items<TestModel>(); diff --git a/tests/auto/declarative/qdeclarativeloader/data/BlueRect.qml b/tests/auto/declarative/qdeclarativeloader/data/BlueRect.qml new file mode 100644 index 0000000..3b49f6a --- /dev/null +++ b/tests/auto/declarative/qdeclarativeloader/data/BlueRect.qml @@ -0,0 +1,8 @@ +import Qt 4.6 + +Rectangle { + objectName: "blue" + width: 100 + height: 100 + color: "blue" +} diff --git a/tests/auto/declarative/qdeclarativeloader/data/GreenRect.qml b/tests/auto/declarative/qdeclarativeloader/data/GreenRect.qml new file mode 100644 index 0000000..7ee3513 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeloader/data/GreenRect.qml @@ -0,0 +1,7 @@ +import Qt 4.6 + +Rectangle { + width: 100; height: 100 + color: "green" + Component.onCompleted: myLoader.source = "BlueRect.qml" +} diff --git a/tests/auto/declarative/qdeclarativeloader/data/VmeError.qml b/tests/auto/declarative/qdeclarativeloader/data/VmeError.qml new file mode 100644 index 0000000..da4f6cb --- /dev/null +++ b/tests/auto/declarative/qdeclarativeloader/data/VmeError.qml @@ -0,0 +1,7 @@ +import Qt 4.6 + +Rectangle { + width: 100; height: 100; color: "red" + signal somethingHappened + onSomethingHappened: QtObject {} +} diff --git a/tests/auto/declarative/qdeclarativeloader/data/crash.qml b/tests/auto/declarative/qdeclarativeloader/data/crash.qml new file mode 100644 index 0000000..8474e78 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeloader/data/crash.qml @@ -0,0 +1,14 @@ +import Qt 4.6 + +Rectangle { + width: 400 + height: 400 + + function setLoaderSource() { + myLoader.source = "GreenRect.qml" + } + + Loader { + id: myLoader + } +} diff --git a/tests/auto/declarative/qdeclarativeloader/data/differentorigin.qml b/tests/auto/declarative/qdeclarativeloader/data/differentorigin.qml new file mode 100644 index 0000000..e682d1c --- /dev/null +++ b/tests/auto/declarative/qdeclarativeloader/data/differentorigin.qml @@ -0,0 +1,3 @@ +import Qt 4.6 + +Loader { source: "http://evil.place/evil.qml" } diff --git a/tests/auto/declarative/qdeclarativeloader/data/nonItem.qml b/tests/auto/declarative/qdeclarativeloader/data/nonItem.qml new file mode 100644 index 0000000..f42c1d5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeloader/data/nonItem.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +Loader { + sourceComponent: QtObject {} +} diff --git a/tests/auto/declarative/qdeclarativeloader/data/qmldir b/tests/auto/declarative/qdeclarativeloader/data/qmldir new file mode 100644 index 0000000..bf42b50 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeloader/data/qmldir @@ -0,0 +1 @@ +# For tst_QDeclarativeLoader::networkRequestUrl; no types needed though. diff --git a/tests/auto/declarative/qdeclarativeloader/data/sameorigin-load.qml b/tests/auto/declarative/qdeclarativeloader/data/sameorigin-load.qml new file mode 100644 index 0000000..e281246 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeloader/data/sameorigin-load.qml @@ -0,0 +1,3 @@ +import Qt 4.6 + +Item { } diff --git a/tests/auto/declarative/qdeclarativeloader/data/sameorigin.qml b/tests/auto/declarative/qdeclarativeloader/data/sameorigin.qml new file mode 100644 index 0000000..e7f5a14 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeloader/data/sameorigin.qml @@ -0,0 +1,3 @@ +import Qt 4.6 + +Loader { source: "sameorigin-load.qml" } diff --git a/tests/auto/declarative/qdeclarativeloader/data/vmeErrors.qml b/tests/auto/declarative/qdeclarativeloader/data/vmeErrors.qml new file mode 100644 index 0000000..782562b --- /dev/null +++ b/tests/auto/declarative/qdeclarativeloader/data/vmeErrors.qml @@ -0,0 +1,6 @@ +import Qt 4.6 + +Loader { + source: "VmeError.qml" +} + diff --git a/tests/auto/declarative/qdeclarativeloader/qdeclarativeloader.pro b/tests/auto/declarative/qdeclarativeloader/qdeclarativeloader.pro index 8ff2be4..96fea5b 100644 --- a/tests/auto/declarative/qdeclarativeloader/qdeclarativeloader.pro +++ b/tests/auto/declarative/qdeclarativeloader/qdeclarativeloader.pro @@ -9,3 +9,5 @@ SOURCES += tst_qdeclarativeloader.cpp \ DEFINES += SRCDIR=\\\"$$PWD\\\" +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeloader/tst_qdeclarativeloader.cpp b/tests/auto/declarative/qdeclarativeloader/tst_qdeclarativeloader.cpp index 61b2800..4a82b50 100644 --- a/tests/auto/declarative/qdeclarativeloader/tst_qdeclarativeloader.cpp +++ b/tests/auto/declarative/qdeclarativeloader/tst_qdeclarativeloader.cpp @@ -48,7 +48,7 @@ #include <private/qdeclarativeloader_p.h> #include "testhttpserver.h" -#define SERVER_PORT 14445 +#define SERVER_PORT 14450 inline QUrl TEST_FILE(const QString &filename) { @@ -88,6 +88,10 @@ private slots: void failNetworkRequest(); // void networkComponent(); + void deleteComponentCrash(); + void nonItem(); + void vmeErrors(); + private: QDeclarativeEngine engine; }; @@ -100,7 +104,7 @@ tst_QDeclarativeLoader::tst_QDeclarativeLoader() void tst_QDeclarativeLoader::url() { QDeclarativeComponent component(&engine); - component.setData(QByteArray("import Qt 4.6\nLoader { source: \"Rect120x60.qml\" }"), TEST_FILE("")); + component.setData(QByteArray("import Qt 4.7\nLoader { source: \"Rect120x60.qml\" }"), TEST_FILE("")); QDeclarativeLoader *loader = qobject_cast<QDeclarativeLoader*>(component.create()); QVERIFY(loader != 0); QVERIFY(loader->item()); @@ -125,7 +129,11 @@ void tst_QDeclarativeLoader::component() QCOMPARE(loader->status(), QDeclarativeLoader::Ready); QCOMPARE(static_cast<QGraphicsItem*>(loader)->children().count(), 1); - delete loader; + QDeclarativeComponent *c = qobject_cast<QDeclarativeComponent*>(item->QGraphicsObject::children().at(0)); + QVERIFY(c); + QCOMPARE(loader->sourceComponent(), c); + + delete item; } void tst_QDeclarativeLoader::invalidUrl() @@ -133,7 +141,7 @@ void tst_QDeclarativeLoader::invalidUrl() QTest::ignoreMessage(QtWarningMsg, QString("(:-1: File error for URL " + QUrl::fromLocalFile(SRCDIR "/data/IDontExist.qml").toString() + ") ").toUtf8().constData()); QDeclarativeComponent component(&engine); - component.setData(QByteArray("import Qt 4.6\nLoader { source: \"IDontExist.qml\" }"), TEST_FILE("")); + component.setData(QByteArray("import Qt 4.7\nLoader { source: \"IDontExist.qml\" }"), TEST_FILE("")); QDeclarativeLoader *loader = qobject_cast<QDeclarativeLoader*>(component.create()); QVERIFY(loader != 0); QVERIFY(loader->item() == 0); @@ -149,7 +157,7 @@ void tst_QDeclarativeLoader::clear() { QDeclarativeComponent component(&engine); component.setData(QByteArray( - "import Qt 4.6\n" + "import Qt 4.7\n" " Loader { id: loader\n" " source: 'Rect120x60.qml'\n" " Timer { interval: 200; running: true; onTriggered: loader.source = '' }\n" @@ -188,14 +196,14 @@ void tst_QDeclarativeLoader::clear() QCOMPARE(loader->status(), QDeclarativeLoader::Null); QCOMPARE(static_cast<QGraphicsItem*>(loader)->children().count(), 0); - delete loader; + delete item; } } void tst_QDeclarativeLoader::urlToComponent() { QDeclarativeComponent component(&engine); - component.setData(QByteArray("import Qt 4.6\n" + component.setData(QByteArray("import Qt 4.7\n" "Loader {\n" " id: loader\n" " Component { id: myComp; Rectangle { width: 10; height: 10 } }\n" @@ -234,7 +242,7 @@ void tst_QDeclarativeLoader::componentToUrl() QCOMPARE(loader->width(), 120.0); QCOMPARE(loader->height(), 60.0); - delete loader; + delete item; } void tst_QDeclarativeLoader::sizeLoaderToItem() @@ -267,6 +275,8 @@ void tst_QDeclarativeLoader::sizeLoaderToItem() QCOMPARE(spy.count(),1); loader->setResizeMode(QDeclarativeLoader::NoResize); QCOMPARE(spy.count(),1); + + delete loader; } void tst_QDeclarativeLoader::sizeItemToLoader() @@ -295,6 +305,8 @@ void tst_QDeclarativeLoader::sizeItemToLoader() rect->setHeight(45); QCOMPARE(loader->width(), 160.0); QCOMPARE(loader->height(), 45.0); + + delete loader; } void tst_QDeclarativeLoader::noResize() @@ -309,6 +321,8 @@ void tst_QDeclarativeLoader::noResize() QVERIFY(rect); QCOMPARE(rect->width(), 120.0); QCOMPARE(rect->height(), 60.0); + + delete loader; } void tst_QDeclarativeLoader::sizeLoaderToGraphicsWidget() @@ -336,6 +350,8 @@ void tst_QDeclarativeLoader::sizeLoaderToGraphicsWidget() loader->setHeight(30); QCOMPARE(widget->size().width(), 180.0); QCOMPARE(widget->size().height(), 30.0); + + delete loader; } void tst_QDeclarativeLoader::sizeGraphicsWidgetToLoader() @@ -366,6 +382,8 @@ void tst_QDeclarativeLoader::sizeGraphicsWidgetToLoader() widget->resize(QSizeF(160,45)); QCOMPARE(loader->width(), 160.0); QCOMPARE(loader->height(), 45.0); + + delete loader; } void tst_QDeclarativeLoader::noResizeGraphicsWidget() @@ -383,6 +401,8 @@ void tst_QDeclarativeLoader::noResizeGraphicsWidget() QVERIFY(widget); QCOMPARE(widget->size().width(), 250.0); QCOMPARE(widget->size().height(), 250.0); + + delete loader; } void tst_QDeclarativeLoader::networkRequestUrl() @@ -392,7 +412,9 @@ void tst_QDeclarativeLoader::networkRequestUrl() server.serveDirectory(SRCDIR "/data"); QDeclarativeComponent component(&engine); - component.setData(QByteArray("import Qt 4.6\nLoader { source: \"http://127.0.0.1:14445/Rect120x60.qml\" }"), TEST_FILE("")); + component.setData(QByteArray("import Qt 4.7\nLoader { source: \"http://127.0.0.1:14450/Rect120x60.qml\" }"), QUrl::fromLocalFile(SRCDIR "/dummy.qml")); + if (component.isError()) + qDebug() << component.errors(); QDeclarativeLoader *loader = qobject_cast<QDeclarativeLoader*>(component.create()); QVERIFY(loader != 0); @@ -414,8 +436,8 @@ void tst_QDeclarativeLoader::networkComponent() QDeclarativeComponent component(&engine); component.setData(QByteArray( - "import Qt 4.6\n" - "import \"http://127.0.0.1:14445/\" as NW\n" + "import Qt 4.7\n" + "import \"http://127.0.0.1:14450/\" as NW\n" "Item {\n" " Component { id: comp; NW.SlowRect {} }\n" " Loader { sourceComponent: comp } }") @@ -443,10 +465,10 @@ void tst_QDeclarativeLoader::failNetworkRequest() QVERIFY(server.isValid()); server.serveDirectory(SRCDIR "/data"); - QTest::ignoreMessage(QtWarningMsg, "(:-1: Network error for URL http://127.0.0.1:14445/IDontExist.qml) "); + QTest::ignoreMessage(QtWarningMsg, "(:-1: Network error for URL http://127.0.0.1:14450/IDontExist.qml) "); QDeclarativeComponent component(&engine); - component.setData(QByteArray("import Qt 4.6\nLoader { source: \"http://127.0.0.1:14445/IDontExist.qml\" }"), TEST_FILE("")); + component.setData(QByteArray("import Qt 4.7\nLoader { source: \"http://127.0.0.1:14450/IDontExist.qml\" }"), QUrl::fromLocalFile("http://127.0.0.1:14450/dummy.qml")); QDeclarativeLoader *loader = qobject_cast<QDeclarativeLoader*>(component.create()); QVERIFY(loader != 0); @@ -459,6 +481,53 @@ void tst_QDeclarativeLoader::failNetworkRequest() delete loader; } +// QTBUG-9241 +void tst_QDeclarativeLoader::deleteComponentCrash() +{ + QDeclarativeComponent component(&engine, TEST_FILE("crash.qml")); + QDeclarativeItem *item = qobject_cast<QDeclarativeItem*>(component.create()); + QVERIFY(item); + + item->metaObject()->invokeMethod(item, "setLoaderSource"); + + QDeclarativeLoader *loader = qobject_cast<QDeclarativeLoader*>(item->QGraphicsObject::children().at(0)); + QVERIFY(loader); + QVERIFY(loader->item()); + QCOMPARE(loader->item()->objectName(), QLatin1String("blue")); + QCOMPARE(loader->progress(), 1.0); + QCOMPARE(loader->status(), QDeclarativeLoader::Ready); + QCOMPARE(static_cast<QGraphicsItem*>(loader)->children().count(), 1); + QVERIFY(loader->source() == QUrl::fromLocalFile(SRCDIR "/data/BlueRect.qml")); + + delete item; +} + +void tst_QDeclarativeLoader::nonItem() +{ + QDeclarativeComponent component(&engine, TEST_FILE("nonItem.qml")); + QString err = QString("QML Loader (") + QUrl::fromLocalFile(SRCDIR).toString() + QString("/data/nonItem.qml:3:1) Loader does not support loading non-visual elements."); + + QTest::ignoreMessage(QtWarningMsg, err.toLatin1().constData()); + QDeclarativeLoader *loader = qobject_cast<QDeclarativeLoader*>(component.create()); + QVERIFY(loader); + QVERIFY(loader->item() == 0); + + delete loader; +} + +void tst_QDeclarativeLoader::vmeErrors() +{ + QDeclarativeComponent component(&engine, TEST_FILE("vmeErrors.qml")); + //ignore message for now + //QString err = QUrl::fromLocalFile(SRCDIR "/data/VmeError.qml:6: Cannot assign object type QObject with no default method\n onSomethingHappened: QtObject {}) "); + //QTest::ignoreMessage(QtWarningMsg, err.toLatin1().constData()); + QDeclarativeLoader *loader = qobject_cast<QDeclarativeLoader*>(component.create()); + QVERIFY(loader); + QVERIFY(loader->item() == 0); + + delete loader; +} + QTEST_MAIN(tst_QDeclarativeLoader) #include "tst_qdeclarativeloader.moc" diff --git a/tests/auto/declarative/qdeclarativemetatype/qdeclarativemetatype.pro b/tests/auto/declarative/qdeclarativemetatype/qdeclarativemetatype.pro index 2f7ff82..cf3fa65 100644 --- a/tests/auto/declarative/qdeclarativemetatype/qdeclarativemetatype.pro +++ b/tests/auto/declarative/qdeclarativemetatype/qdeclarativemetatype.pro @@ -4,3 +4,6 @@ SOURCES += tst_qdeclarativemetatype.cpp macx:CONFIG -= app_bundle DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp b/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp index 818f108..36efe13 100644 --- a/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp +++ b/tests/auto/declarative/qdeclarativemetatype/tst_qdeclarativemetatype.cpp @@ -77,9 +77,9 @@ private slots: class TestType : public QObject { Q_OBJECT - Q_PROPERTY(int foo READ foo); + Q_PROPERTY(int foo READ foo) - Q_CLASSINFO("DefaultProperty", "foo"); + Q_CLASSINFO("DefaultProperty", "foo") public: int foo() { return 0; } }; @@ -88,7 +88,7 @@ QML_DECLARE_TYPE(TestType); class ParserStatusTestType : public QObject, public QDeclarativeParserStatus { Q_OBJECT - Q_CLASSINFO("DefaultProperty", "foo"); // Missing default property + Q_CLASSINFO("DefaultProperty", "foo") // Missing default property }; QML_DECLARE_TYPE(ParserStatusTestType); @@ -132,10 +132,10 @@ QML_DECLARE_TYPE(ValueInterceptorTestType); void tst_qdeclarativemetatype::initTestCase() { - QML_REGISTER_TYPE(Test, 1, 0, TestType, TestType); - QML_REGISTER_TYPE(Test, 1, 0, ParserStatusTestType, ParserStatusTestType); - QML_REGISTER_TYPE(Test, 1, 0, ValueSourceTestType, ValueSourceTestType); - QML_REGISTER_TYPE(Test, 1, 0, ValueInterceptorTestType, ValueInterceptorTestType); + qmlRegisterType<TestType>("Test", 1, 0, "TestType"); + qmlRegisterType<ParserStatusTestType>("Test", 1, 0, "ParserStatusTestType"); + qmlRegisterType<ValueSourceTestType>("Test", 1, 0, "ValueSourceTestType"); + qmlRegisterType<ValueInterceptorTestType>("Test", 1, 0, "ValueInterceptorTestType"); } void tst_qdeclarativemetatype::copy() diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/plugin.qml b/tests/auto/declarative/qdeclarativemoduleplugin/data/works.qml index f29ae24..f29ae24 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/plugin.qml +++ b/tests/auto/declarative/qdeclarativemoduleplugin/data/works.qml diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/com/nokia/AutoTestQmlPluginType/qmldir b/tests/auto/declarative/qdeclarativemoduleplugin/imports/com/nokia/AutoTestQmlPluginType/qmldir index 0a8b5d4..0a8b5d4 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/com/nokia/AutoTestQmlPluginType/qmldir +++ b/tests/auto/declarative/qdeclarativemoduleplugin/imports/com/nokia/AutoTestQmlPluginType/qmldir diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro b/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro index 035cb7d..fc77225 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro +++ b/tests/auto/declarative/qdeclarativemoduleplugin/plugin/plugin.pro @@ -2,5 +2,5 @@ TEMPLATE = lib CONFIG += plugin SOURCES = plugin.cpp QT = core declarative -DESTDIR = ../com/nokia/AutoTestQmlPluginType +DESTDIR = ../imports/com/nokia/AutoTestQmlPluginType diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/qdeclarativemoduleplugin.pro b/tests/auto/declarative/qdeclarativemoduleplugin/qdeclarativemoduleplugin.pro index 96f4454..824b402 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/qdeclarativemoduleplugin.pro +++ b/tests/auto/declarative/qdeclarativemoduleplugin/qdeclarativemoduleplugin.pro @@ -4,4 +4,5 @@ SUBDIRS = plugin tst_qdeclarativemoduleplugin_pro.depends += plugin SUBDIRS += tst_qdeclarativemoduleplugin.pro +CONFIG += parallel_test diff --git a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp index f3caa7f..6d17acc 100644 --- a/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp +++ b/tests/auto/declarative/qdeclarativemoduleplugin/tst_qdeclarativemoduleplugin.cpp @@ -48,9 +48,8 @@ class tst_qdeclarativemoduleplugin : public QObject { Q_OBJECT public: - tst_qdeclarativemoduleplugin() { - QCoreApplication::addLibraryPath(QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("plugin")); -qDebug() << QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("plugin"); + tst_qdeclarativemoduleplugin() + { } private slots: @@ -103,9 +102,12 @@ inline QUrl TEST_FILE(const QString &filename) void tst_qdeclarativemoduleplugin::importsPlugin() { QDeclarativeEngine engine; + engine.addImportPath(QLatin1String(SRCDIR) + QDir::separator() + QLatin1String("imports")); QTest::ignoreMessage(QtWarningMsg, "plugin created"); QTest::ignoreMessage(QtWarningMsg, "import worked"); - QDeclarativeComponent component(&engine, TEST_FILE("plugin.qml")); + QDeclarativeComponent component(&engine, TEST_FILE("data/works.qml")); + foreach (QDeclarativeError err, component.errors()) + qWarning() << err; VERIFY_ERRORS(0); QObject *object = component.create(); QVERIFY(object != 0); diff --git a/tests/auto/declarative/qdeclarativemousearea/data/clickandhold.qml b/tests/auto/declarative/qdeclarativemousearea/data/clickandhold.qml new file mode 100644 index 0000000..e800f98 --- /dev/null +++ b/tests/auto/declarative/qdeclarativemousearea/data/clickandhold.qml @@ -0,0 +1,13 @@ +import Qt 4.6 + +Item { + id: root + property bool clicked: false + property bool held: false + + MouseArea { + width: 200; height: 200 + onClicked: { root.clicked = true } + onPressAndHold: { root.held = true } + } +} diff --git a/tests/auto/declarative/qdeclarativemousearea/data/dragreset.qml b/tests/auto/declarative/qdeclarativemousearea/data/dragreset.qml new file mode 100644 index 0000000..4bfb9c3 --- /dev/null +++ b/tests/auto/declarative/qdeclarativemousearea/data/dragreset.qml @@ -0,0 +1,28 @@ +import Qt 4.6 +Rectangle { + id: whiteRect + width: 200 + height: 200 + color: "white" + Rectangle { + id: blackRect + objectName: "blackrect" + color: "black" + y: 50 + x: 50 + width: 100 + height: 100 + opacity: (whiteRect.width-blackRect.x+whiteRect.height-blackRect.y-199)/200 + Text { text: blackRect.opacity} + MouseArea { + objectName: "mouseregion" + anchors.fill: parent + drag.target: haveTarget ? blackRect : undefined + drag.axis: Drag.XandYAxis + drag.minimumX: 0 + drag.maximumX: whiteRect.width-blackRect.width + drag.minimumY: 0 + drag.maximumY: whiteRect.height-blackRect.height + } + } + } diff --git a/tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnClick.qml b/tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnClick.qml new file mode 100644 index 0000000..0da7c45 --- /dev/null +++ b/tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnClick.qml @@ -0,0 +1,20 @@ +import Qt 4.6 + +Rectangle { + color: "#ffffff" + width: 320; height: 240 + MouseArea { + id: mouseRegion + objectName: "mouseregion" + anchors.fill: parent + Rectangle { + id: ball + objectName: "ball" + width: 20; height: 20 + radius: 10 + color: "#0000ff" + x: { mouseRegion.mouseX } + y: mouseRegion.mouseY + } + } +} diff --git a/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro b/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro index d01955b..48fe025 100644 --- a/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro +++ b/tests/auto/declarative/qdeclarativemousearea/qdeclarativemousearea.pro @@ -7,3 +7,6 @@ SOURCES += tst_qdeclarativemousearea.cpp ../shared/testhttpserver.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp index 769cf32..bdb8eca 100644 --- a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp +++ b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp @@ -42,20 +42,26 @@ #include <QtTest/QtTest> #include <QtTest/QSignalSpy> #include <private/qdeclarativemousearea_p.h> +#include <private/qdeclarativerectangle_p.h> #include <QtDeclarative/qdeclarativeview.h> +#include <QtDeclarative/qdeclarativecontext.h> class tst_QDeclarativeMouseArea: public QObject { Q_OBJECT private slots: void dragProperties(); + void resetDrag(); + void updateMouseAreaPosOnClick(); + void noOnClickedWithPressAndHold(); private: - QDeclarativeView *createView(const QString &filename); + QDeclarativeView *createView(); }; void tst_QDeclarativeMouseArea::dragProperties() { - QDeclarativeView *canvas = createView(SRCDIR "/data/dragproperties.qml"); + QDeclarativeView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/dragproperties.qml")); canvas->show(); canvas->setFocus(); QVERIFY(canvas->rootObject() != 0); @@ -121,18 +127,112 @@ void tst_QDeclarativeMouseArea::dragProperties() QCOMPARE(xmaxSpy.count(),1); QCOMPARE(yminSpy.count(),1); QCOMPARE(ymaxSpy.count(),1); + + delete canvas; +} + +void tst_QDeclarativeMouseArea::resetDrag() +{ + QDeclarativeView *canvas = createView(); + + canvas->rootContext()->setContextProperty("haveTarget", QVariant(true)); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/dragreset.qml")); + canvas->show(); + canvas->setFocus(); + QVERIFY(canvas->rootObject() != 0); + + QDeclarativeMouseArea *mouseRegion = canvas->rootObject()->findChild<QDeclarativeMouseArea*>("mouseregion"); + QDeclarativeDrag *drag = mouseRegion->drag(); + QVERIFY(mouseRegion != 0); + QVERIFY(drag != 0); + + // target + QDeclarativeItem *blackRect = canvas->rootObject()->findChild<QDeclarativeItem*>("blackrect"); + QVERIFY(blackRect != 0); + QVERIFY(blackRect == drag->target()); + QDeclarativeItem *rootItem = qobject_cast<QDeclarativeItem*>(canvas->rootObject()); + QVERIFY(rootItem != 0); + QSignalSpy targetSpy(drag, SIGNAL(targetChanged())); + QVERIFY(drag->target() != 0); + canvas->rootContext()->setContextProperty("haveTarget", QVariant(false)); + QCOMPARE(targetSpy.count(),1); + QVERIFY(drag->target() == 0); + + delete canvas; } -QDeclarativeView *tst_QDeclarativeMouseArea::createView(const QString &filename) + +QDeclarativeView *tst_QDeclarativeMouseArea::createView() { QDeclarativeView *canvas = new QDeclarativeView(0); canvas->setFixedSize(240,320); - canvas->setSource(QUrl::fromLocalFile(filename)); - return canvas; } +void tst_QDeclarativeMouseArea::updateMouseAreaPosOnClick() +{ + QDeclarativeView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/updateMousePosOnClick.qml")); + canvas->show(); + canvas->setFocus(); + QVERIFY(canvas->rootObject() != 0); + + QDeclarativeMouseArea *mouseRegion = canvas->rootObject()->findChild<QDeclarativeMouseArea*>("mouseregion"); + QVERIFY(mouseRegion != 0); + + QDeclarativeRectangle *rect = canvas->rootObject()->findChild<QDeclarativeRectangle*>("ball"); + QVERIFY(rect != 0); + + QCOMPARE(mouseRegion->mouseX(), rect->x()); + QCOMPARE(mouseRegion->mouseY(), rect->y()); + + QGraphicsScene *scene = canvas->scene(); + QGraphicsSceneMouseEvent event(QEvent::GraphicsSceneMousePress); + event.setScenePos(QPointF(100, 100)); + event.setButton(Qt::LeftButton); + event.setButtons(Qt::LeftButton); + QApplication::sendEvent(scene, &event); + + QCOMPARE(mouseRegion->mouseX(), 100.0); + QCOMPARE(mouseRegion->mouseY(), 100.0); + + QCOMPARE(mouseRegion->mouseX(), rect->x()); + QCOMPARE(mouseRegion->mouseY(), rect->y()); + + delete canvas; +} + +void tst_QDeclarativeMouseArea::noOnClickedWithPressAndHold() +{ + QDeclarativeView *canvas = createView(); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/clickandhold.qml")); + canvas->show(); + canvas->setFocus(); + QVERIFY(canvas->rootObject() != 0); + + QGraphicsScene *scene = canvas->scene(); + QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress); + pressEvent.setScenePos(QPointF(100, 100)); + pressEvent.setButton(Qt::LeftButton); + pressEvent.setButtons(Qt::LeftButton); + QApplication::sendEvent(scene, &pressEvent); + + QVERIFY(!canvas->rootObject()->property("clicked").toBool()); + QVERIFY(!canvas->rootObject()->property("held").toBool()); + + QTest::qWait(1000); + + QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMousePress); + releaseEvent.setScenePos(QPointF(100, 100)); + releaseEvent.setButton(Qt::LeftButton); + releaseEvent.setButtons(Qt::LeftButton); + QApplication::sendEvent(scene, &releaseEvent); + + QVERIFY(!canvas->rootObject()->property("clicked").toBool()); + QVERIFY(canvas->rootObject()->property("held").toBool()); +} + QTEST_MAIN(tst_QDeclarativeMouseArea) #include "tst_qdeclarativemousearea.moc" diff --git a/tests/auto/declarative/qdeclarativenumberformatter/qdeclarativenumberformatter.pro b/tests/auto/declarative/qdeclarativenumberformatter/qdeclarativenumberformatter.pro deleted file mode 100644 index 672e95c..0000000 --- a/tests/auto/declarative/qdeclarativenumberformatter/qdeclarativenumberformatter.pro +++ /dev/null @@ -1,5 +0,0 @@ -load(qttest_p4) -contains(QT_CONFIG,declarative): QT += declarative -macx:CONFIG -= app_bundle - -SOURCES += tst_qdeclarativenumberformatter.cpp diff --git a/tests/auto/declarative/qdeclarativenumberformatter/tst_qdeclarativenumberformatter.cpp b/tests/auto/declarative/qdeclarativenumberformatter/tst_qdeclarativenumberformatter.cpp deleted file mode 100644 index 26ff3d5..0000000 --- a/tests/auto/declarative/qdeclarativenumberformatter/tst_qdeclarativenumberformatter.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include <qtest.h> -#include <QDebug> -#include <QtDeclarative/qdeclarativeengine.h> -#include <QtDeclarative/qdeclarativecomponent.h> -#include <private/qnumberformat_p.h> -#include <private/qdeclarativenumberformatter_p.h> - -class tst_qdeclarativenumberformatter : public QObject -{ - Q_OBJECT -public: - tst_qdeclarativenumberformatter(); - - void init() {} - void initTestCase() {} - - void cleanup() {} - void cleanupTestCase() {} - -private slots: - void text_data(); - void text(); - -private: - QStringList strings; - QStringList formats; - QStringList texts; -}; - -tst_qdeclarativenumberformatter::tst_qdeclarativenumberformatter() -{ - strings << "100.0" - << "12345" - << "1234567" - << "0.123" - << "0.9999" - << "0.989" - << "1" - << "1.0" - << "1.01"; - - formats << "" - << "0000" - << "0000.00" - << "##" - << "##.##" - << "#0.00#" - << "##,##0.##" - << "(000) 000 - 000" - << "00000,000.0000"; - - //US locale only. - texts << "100.000000" - << "12345.000000" - << "1234567.000000" - << "0.123000" - << "0.999900" - << "0.989000" - << "1.000000" - << "1.000000" - << "1.010000" //end "" - << "0100" - << "12345" - << "1234567" - << "0000" - << "0001" - << "0001" - << "0001" - << "0001" - << "0001" // end "0000" - << "0100.00" - << "12345.00" - << "1234567.00" - << "0000.12" - << "0001.00" - << "0000.99" - << "0001.00" - << "0001.00" - << "0001.01" // end "0000.00" - << "100" - << "12345" - << "1234567" - << "0" - << "1" - << "1" - << "1" - << "1" - << "1" // end "##" - << "100"//start "##.##" - << "12345" - << "1234567" - << "0.12" - << "1" - << "0.99" - << "1" - << "1" - << "1.01" // end "##.##" -- ### EXPECT FAIL ### QNumberFormat::formatDecimal() bug - << "100.00" //start "#0.00#" - << "12345.00" - << "1234567.00" - << "0.123" - << "1.00" - << "0.989" - << "1.00" - << "1.00" - << "1.01" //end "#0.00#" - << "100" //start "##,##0.##" - << "12,345" - << "1,234,567" - << "0.12" - << "1" - << "0.99" - << "1" - << "1" - << "1.01" //end "##,##0.##" -- ### EXPECT FAIL ### QNumberFormat::formatDecimal() bug - << "(000) 000 - 100" //start "(000) 000 - 000" - << "(000) 012 - 345" - << "(001) 234 - 567" - << "(000) 000 - 000" - << "(000) 000 - 001" - << "(000) 000 - 001" - << "(000) 000 - 001" - << "(000) 000 - 001" - << "(000) 000 - 001" // end "(000) 000 - 000" - << "00,000,100.0000" // start "00000,000.0000" - << "00,012,345.0000" - << "01,234,567.0000" - << "00,000,000.1230" - << "00,000,000.9999" - << "00,000,000.9890" - << "00,000,001.0000" - << "00,000,001.0000" - << "00,000,001.0100"; // end - - qDebug() << "strings.size()" << strings.size() - << "\nformats.size()" << formats.size() - << "texts.size()" << texts.size(); -} - -void tst_qdeclarativenumberformatter::text_data() -{ - QTest::addColumn<QString>("string"); - QTest::addColumn<QString>("format"); - QTest::addColumn<QString>("text"); - - for (int j=0; j < formats.size(); j++) - { - for (int i=0; i < strings.size(); i++) - { - QTest::newRow(QString("%1, %2").arg(strings.at(i)).arg(formats.at(j)).toAscii()) - << strings.at(i) << formats.at(j) << texts.at(j*formats.size()+i); - } - } - -} - -void tst_qdeclarativenumberformatter::text() -{ - QFETCH(QString, string); - QFETCH(QString, format); - QFETCH(QString, text); - - QString componentStr = QString("import Qt 4.6\nNumberFormatter { number: ") + string + QString("; format: \"") + format + QString("\" }"); - - QDeclarativeEngine engine; - QDeclarativeComponent formatterComponent(&engine); - formatterComponent.setData(componentStr.toUtf8(), QUrl::fromLocalFile("")); - if(formatterComponent.isError()) - qDebug() << formatterComponent.errors(); - QVERIFY(formatterComponent.isReady()); - QDeclarativeNumberFormatter *formatter = qobject_cast<QDeclarativeNumberFormatter*>(formatterComponent.create()); - QVERIFY(formatter != 0); - - QCOMPARE(formatter->format(), format); - QCOMPARE(formatter->text(), text); - - delete formatter; -} - -QTEST_MAIN(tst_qdeclarativenumberformatter) - -#include "tst_qdeclarativenumberformatter.moc" diff --git a/tests/auto/declarative/qdeclarativeparticles/data/particlemotion.qml b/tests/auto/declarative/qdeclarativeparticles/data/particlemotion.qml deleted file mode 100644 index ace61fe..0000000 --- a/tests/auto/declarative/qdeclarativeparticles/data/particlemotion.qml +++ /dev/null @@ -1,33 +0,0 @@ -import Qt 4.6 -Rectangle { - width: 240 - height: 320 - color: "black" - Particles { - objectName: "particles" - anchors.fill: parent - width: 1 - height: 1 - source: "particle.png" - lifeSpan: 5000 - count: 200 - angle: 270 - angleDeviation: 45 - velocity: 50 - velocityDeviation: 30 - ParticleMotionGravity { - objectName: "motionGravity" - yattractor: 1000 - xattractor: 0 - acceleration: 25 - } - } - resources: [ - ParticleMotionWander { - objectName: "motionWander" - xvariance: 30 - yvariance: 30 - pace: 100 - } - ] -}
\ No newline at end of file diff --git a/tests/auto/declarative/qdeclarativeparticles/data/particlemotiontest.qml b/tests/auto/declarative/qdeclarativeparticles/data/particlemotiontest.qml new file mode 100644 index 0000000..f1e4909 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeparticles/data/particlemotiontest.qml @@ -0,0 +1,35 @@ +import Qt 4.6 +import Qt.labs.particles 1.0 + +Rectangle { + width: 240 + height: 320 + color: "black" + Particles { + objectName: "particles" + anchors.fill: parent + width: 1 + height: 1 + source: "particle.png" + lifeSpan: 5000 + count: 200 + angle: 270 + angleDeviation: 45 + velocity: 50 + velocityDeviation: 30 + ParticleMotionGravity { + objectName: "motionGravity" + yattractor: 1000 + xattractor: 0 + acceleration: 25 + } + } + resources: [ + ParticleMotionWander { + objectName: "motionWander" + xvariance: 30 + yvariance: 30 + pace: 100 + } + ] +} diff --git a/tests/auto/declarative/qdeclarativeparticles/data/particles.qml b/tests/auto/declarative/qdeclarativeparticles/data/particles.qml deleted file mode 100644 index c58927e..0000000 --- a/tests/auto/declarative/qdeclarativeparticles/data/particles.qml +++ /dev/null @@ -1,15 +0,0 @@ -import Qt 4.6 -Rectangle{ - width: 100 - height: 100 - color: "black" - objectName: "rect" - Particles { id: particles - objectName: "particles" - width:1; height:1; anchors.centerIn: parent; opacity: 1 - lifeSpan: 100; lifeSpanDeviation: 20; count:1000; - fadeInDuration: 20; fadeOutDuration: 20; count: -1; emissionRate: 1000 - angle: 0; angleDeviation: 360; velocity: 500; velocityDeviation:30 - source: "particle.png" - } -} diff --git a/tests/auto/declarative/qdeclarativeparticles/data/particlestest.qml b/tests/auto/declarative/qdeclarativeparticles/data/particlestest.qml new file mode 100644 index 0000000..4f168a9 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeparticles/data/particlestest.qml @@ -0,0 +1,17 @@ +import Qt 4.6 +import Qt.labs.particles 1.0 + +Rectangle{ + width: 100 + height: 100 + color: "black" + objectName: "rect" + Particles { id: particles + objectName: "particles" + width:1; height:1; anchors.centerIn: parent; opacity: 1 + lifeSpan: 100; lifeSpanDeviation: 20; count:1000; + fadeInDuration: 20; fadeOutDuration: 20; emissionRate: 1000 + angle: 0; angleDeviation: 360; velocity: 500; velocityDeviation:30 + source: "particle.png" + } +} diff --git a/tests/auto/declarative/qdeclarativeparticles/qdeclarativeparticles.pro b/tests/auto/declarative/qdeclarativeparticles/qdeclarativeparticles.pro index 043bb85..8a061c3 100644 --- a/tests/auto/declarative/qdeclarativeparticles/qdeclarativeparticles.pro +++ b/tests/auto/declarative/qdeclarativeparticles/qdeclarativeparticles.pro @@ -6,3 +6,6 @@ SOURCES += tst_qdeclarativeparticles.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeparticles/tst_qdeclarativeparticles.cpp b/tests/auto/declarative/qdeclarativeparticles/tst_qdeclarativeparticles.cpp index 6090a07..093190c 100644 --- a/tests/auto/declarative/qdeclarativeparticles/tst_qdeclarativeparticles.cpp +++ b/tests/auto/declarative/qdeclarativeparticles/tst_qdeclarativeparticles.cpp @@ -41,7 +41,7 @@ #include <QtTest/QtTest> #include <QtTest/QSignalSpy> #include <qdeclarativeview.h> -#include <private/qdeclarativeparticles_p.h> +#include <QGraphicsObject> class tst_QDeclarativeParticles : public QObject { @@ -65,75 +65,77 @@ tst_QDeclarativeParticles::tst_QDeclarativeParticles() void tst_QDeclarativeParticles::properties() { - QDeclarativeView *canvas = createView(SRCDIR "/data/particles.qml"); + QDeclarativeView *canvas = createView(SRCDIR "/data/particlestest.qml"); QVERIFY(canvas->rootObject()); - QDeclarativeParticles* particles = canvas->rootObject()->findChild<QDeclarativeParticles*>("particles"); + + QObject* particles = canvas->rootObject()->findChild<QObject*>("particles"); QVERIFY(particles); - particles->setSource(QUrl::fromLocalFile(SRCDIR "/data/particle.png")); - QCOMPARE(particles->source(), QUrl::fromLocalFile(SRCDIR "/data/particle.png")); + particles->setProperty("source", QUrl::fromLocalFile(SRCDIR "/data/particle.png")); + QCOMPARE(particles->property("source").toUrl(), QUrl::fromLocalFile(SRCDIR "/data/particle.png")); - particles->setLifeSpanDeviation(1000); - QCOMPARE(particles->lifeSpanDeviation(), 1000); + particles->setProperty("lifeSpanDeviation", (1000)); + QCOMPARE(particles->property("lifeSpanDeviation").toInt(), 1000); - particles->setFadeInDuration(1000); - QCOMPARE(particles->fadeInDuration(), 1000); + particles->setProperty("fadeInDuration", 1000); + QCOMPARE(particles->property("fadeInDuration").toInt(), 1000); - particles->setFadeOutDuration(1000); - QCOMPARE(particles->fadeOutDuration(), 1000); + particles->setProperty("fadeOutDuration", 1000); + QCOMPARE(particles->property("fadeOutDuration").toInt(), 1000); - particles->setAngle(100.0); - QCOMPARE(particles->angle(), 100.0); + particles->setProperty("angle", 100.0); + QCOMPARE(particles->property("angle").toDouble(), 100.0); - particles->setAngleDeviation(100.0); - QCOMPARE(particles->angleDeviation(), 100.0); + particles->setProperty("angleDeviation", 100.0); + QCOMPARE(particles->property("angleDeviation").toDouble(), 100.0); - particles->setVelocity(100.0); - QCOMPARE(particles->velocity(), 100.0); + particles->setProperty("velocity", 100.0); + QCOMPARE(particles->property("velocity").toDouble(), 100.0); - particles->setVelocityDeviation(100.0); - QCOMPARE(particles->velocityDeviation(), 100.0); + particles->setProperty("velocityDeviation", 100.0); + QCOMPARE(particles->property("velocityDeviation").toDouble(), 100.0); - particles->setEmissionVariance(0.5); - QCOMPARE(particles->emissionVariance(),0.5); + particles->setProperty("emissionVariance", 0.5); + QCOMPARE(particles->property("emissionVariance").toDouble(),0.5); - particles->setEmissionRate(12); - QCOMPARE(particles->emissionRate(), 12); + particles->setProperty("emissionRate", 12); + QCOMPARE(particles->property("emissionRate").toInt(), 12); } void tst_QDeclarativeParticles::motionGravity() { - QDeclarativeView *canvas = createView(SRCDIR "/data/particlemotion.qml"); + QDeclarativeView *canvas = createView(SRCDIR "/data/particlemotiontest.qml"); QVERIFY(canvas->rootObject()); - QDeclarativeParticles* particles = canvas->rootObject()->findChild<QDeclarativeParticles*>("particles"); + + QObject* particles = canvas->rootObject()->findChild<QObject*>("particles"); QVERIFY(particles); - QDeclarativeParticleMotionGravity* motionGravity = canvas->rootObject()->findChild<QDeclarativeParticleMotionGravity*>("motionGravity"); - QCOMPARE(particles->motion(), motionGravity); + QObject* motionGravity = canvas->rootObject()->findChild<QObject*>("motionGravity"); + //QCOMPARE(qvariant_cast<QObject*>(particles->property("motion")), motionGravity); QSignalSpy xattractorSpy(motionGravity, SIGNAL(xattractorChanged())); QSignalSpy yattractorSpy(motionGravity, SIGNAL(yattractorChanged())); QSignalSpy accelerationSpy(motionGravity, SIGNAL(accelerationChanged())); - QCOMPARE(motionGravity->xAttractor(), 0.0); - QCOMPARE(motionGravity->yAttractor(), 1000.0); - QCOMPARE(motionGravity->acceleration(), 25.0); + QCOMPARE(motionGravity->property("xattractor").toDouble(), 0.0); + QCOMPARE(motionGravity->property("yattractor").toDouble(), 1000.0); + QCOMPARE(motionGravity->property("acceleration").toDouble(), 25.0); - motionGravity->setXAttractor(20.0); - motionGravity->setYAttractor(10.0); - motionGravity->setAcceleration(10.0); + motionGravity->setProperty("xattractor", 20.0); + motionGravity->setProperty("yattractor", 10.0); + motionGravity->setProperty("acceleration", 10.0); - QCOMPARE(motionGravity->xAttractor(), 20.0); - QCOMPARE(motionGravity->yAttractor(), 10.0); - QCOMPARE(motionGravity->acceleration(), 10.0); + QCOMPARE(motionGravity->property("xattractor").toDouble(), 20.0); + QCOMPARE(motionGravity->property("yattractor").toDouble(), 10.0); + QCOMPARE(motionGravity->property("acceleration").toDouble(), 10.0); QCOMPARE(xattractorSpy.count(), 1); QCOMPARE(yattractorSpy.count(), 1); QCOMPARE(accelerationSpy.count(), 1); - motionGravity->setXAttractor(20.0); - motionGravity->setYAttractor(10.0); - motionGravity->setAcceleration(10.0); + motionGravity->setProperty("xattractor", 20.0); + motionGravity->setProperty("yattractor", 10.0); + motionGravity->setProperty("acceleration", 10.0); QCOMPARE(xattractorSpy.count(), 1); QCOMPARE(yattractorSpy.count(), 1); @@ -142,44 +144,46 @@ void tst_QDeclarativeParticles::motionGravity() void tst_QDeclarativeParticles::motionWander() { - QDeclarativeView *canvas = createView(SRCDIR "/data/particlemotion.qml"); + QDeclarativeView *canvas = createView(SRCDIR "/data/particlemotiontest.qml"); QVERIFY(canvas->rootObject()); - QDeclarativeParticles* particles = canvas->rootObject()->findChild<QDeclarativeParticles*>("particles"); + + QObject* particles = canvas->rootObject()->findChild<QObject*>("particles"); QVERIFY(particles); - + QSignalSpy motionSpy(particles, SIGNAL(motionChanged())); - QDeclarativeParticleMotionWander* motionWander = canvas->rootObject()->findChild<QDeclarativeParticleMotionWander*>("motionWander"); - - particles->setMotion(motionWander); - QCOMPARE(particles->motion(),motionWander); - QCOMPARE(motionSpy.count(), 1); - - particles->setMotion(motionWander); - QCOMPARE(motionSpy.count(), 1); + QObject* motionWander = canvas->rootObject()->findChild<QObject*>("motionWander"); + + QCOMPARE(motionSpy.count(), 0); + particles->setProperty("motion", QVariant::fromValue(motionWander)); + //QCOMPARE(particles->property("motion"), QVariant::fromValue(motionWander)); + //QCOMPARE(motionSpy.count(), 1); + + particles->setProperty("motion", QVariant::fromValue(motionWander)); + //QCOMPARE(motionSpy.count(), 1); QSignalSpy xvarianceSpy(motionWander, SIGNAL(xvarianceChanged())); QSignalSpy yvarianceSpy(motionWander, SIGNAL(yvarianceChanged())); QSignalSpy paceSpy(motionWander, SIGNAL(paceChanged())); - QCOMPARE(motionWander->xVariance(), 30.0); - QCOMPARE(motionWander->yVariance(), 30.0); - QCOMPARE(motionWander->pace(), 100.0); + QCOMPARE(motionWander->property("xvariance").toDouble(), 30.0); + QCOMPARE(motionWander->property("yvariance").toDouble(), 30.0); + QCOMPARE(motionWander->property("pace").toDouble(), 100.0); - motionWander->setXVariance(20.0); - motionWander->setYVariance(10.0); - motionWander->setPace(10.0); + motionWander->setProperty("xvariance", 20.0); + motionWander->setProperty("yvariance", 10.0); + motionWander->setProperty("pace", 10.0); - QCOMPARE(motionWander->xVariance(), 20.0); - QCOMPARE(motionWander->yVariance(), 10.0); - QCOMPARE(motionWander->pace(), 10.0); + QCOMPARE(motionWander->property("xvariance").toDouble(), 20.0); + QCOMPARE(motionWander->property("yvariance").toDouble(), 10.0); + QCOMPARE(motionWander->property("pace").toDouble(), 10.0); QCOMPARE(xvarianceSpy.count(), 1); QCOMPARE(yvarianceSpy.count(), 1); QCOMPARE(paceSpy.count(), 1); - motionWander->setXVariance(20.0); - motionWander->setYVariance(10.0); - motionWander->setPace(10.0); + QCOMPARE(motionWander->property("xvariance").toDouble(), 20.0); + QCOMPARE(motionWander->property("yvariance").toDouble(), 10.0); + QCOMPARE(motionWander->property("pace").toDouble(), 10.0); QCOMPARE(xvarianceSpy.count(), 1); QCOMPARE(yvarianceSpy.count(), 1); @@ -188,9 +192,10 @@ void tst_QDeclarativeParticles::motionWander() void tst_QDeclarativeParticles::runs() { - QDeclarativeView *canvas = createView(SRCDIR "/data/particles.qml"); + QDeclarativeView *canvas = createView(SRCDIR "/data/particlestest.qml"); QVERIFY(canvas->rootObject()); - QDeclarativeParticles* particles = canvas->rootObject()->findChild<QDeclarativeParticles*>("particles"); + + QObject* particles = canvas->rootObject()->findChild<QObject*>("particles"); QVERIFY(particles); QTest::qWait(1000);//Run for one second. Test passes if it doesn't crash. } diff --git a/tests/auto/declarative/qdeclarativepathview/data/displaypath.qml b/tests/auto/declarative/qdeclarativepathview/data/displaypath.qml index 627f38a..eded122 100644 --- a/tests/auto/declarative/qdeclarativepathview/data/displaypath.qml +++ b/tests/auto/declarative/qdeclarativepathview/data/displaypath.qml @@ -33,7 +33,6 @@ Rectangle { height: 320 model: testModel delegate: delegate - snapPosition: 0.01 path: Path { startY: 120 startX: 160 diff --git a/tests/auto/declarative/qdeclarativepathview/data/path.qml b/tests/auto/declarative/qdeclarativepathview/data/pathtest.qml index 7e82a48..7e82a48 100644 --- a/tests/auto/declarative/qdeclarativepathview/data/path.qml +++ b/tests/auto/declarative/qdeclarativepathview/data/pathtest.qml diff --git a/tests/auto/declarative/qdeclarativepathview/data/pathview.qml b/tests/auto/declarative/qdeclarativepathview/data/pathview.qml deleted file mode 100644 index 8fa8d59..0000000 --- a/tests/auto/declarative/qdeclarativepathview/data/pathview.qml +++ /dev/null @@ -1,66 +0,0 @@ -import Qt 4.6 - -Rectangle { - width: 240 - height: 320 - color: "#ffffff" - resources: [ - Component { - id: delegate - Rectangle { - id: wrapper - objectName: "wrapper" - height: 20 - width: 60 - color: "white" - border.color: "black" - Text { - text: index - } - Text { - x: 20 - id: textName - objectName: "textName" - text: name - } - Text { - x: 40 - id: textNumber - objectName: "textNumber" - text: number - } - } - } - ] - PathView { - id: view - objectName: "view" - width: 240 - height: 320 - model: testModel - delegate: delegate - snapPosition: 0.01 - path: Path { - startY: 120 - startX: 160 - PathQuad { - y: 120 - x: 80 - controlY: 330 - controlX: 100 - } - PathLine { - y: 160 - x: 20 - } - PathCubic { - y: 120 - x: 160 - control1Y: 0 - control1X: 100 - control2Y: 000 - control2X: 200 - } - } - } -} diff --git a/tests/auto/declarative/qdeclarativepathview/data/pathview0.qml b/tests/auto/declarative/qdeclarativepathview/data/pathview0.qml new file mode 100644 index 0000000..1866875 --- /dev/null +++ b/tests/auto/declarative/qdeclarativepathview/data/pathview0.qml @@ -0,0 +1,79 @@ +import Qt 4.6 + +Rectangle { + id: root + property int currentA: -1 + property int currentB: -1 + width: 240 + height: 320 + color: "#ffffff" + resources: [ + Component { + id: delegate + Rectangle { + id: wrapper + objectName: "wrapper" + height: 20 + width: 60 + color: PathView.isCurrentItem ? "lightsteelblue" : "white" + border.color: "black" + Text { + text: index + } + Text { + x: 20 + id: textName + objectName: "textName" + text: name + } + Text { + x: 40 + id: textNumber + objectName: "textNumber" + text: number + } + PathView.onCurrentItemChanged: { + if (PathView.isCurrentItem) { + root.currentA = index; + root.currentB = wrapper.PathView.view.currentIndex; + } + } + } + } + ] + PathView { + id: view + objectName: "view" + width: 240 + height: 320 + model: testModel + delegate: delegate + highlight: Rectangle { + width: 60 + height: 20 + color: "yellow" + } + path: Path { + startY: 120 + startX: 160 + PathQuad { + y: 120 + x: 80 + controlY: 330 + controlX: 100 + } + PathLine { + y: 160 + x: 20 + } + PathCubic { + y: 120 + x: 160 + control1Y: 0 + control1X: 100 + control2Y: 000 + control2X: 200 + } + } + } +} diff --git a/tests/auto/declarative/qdeclarativepathview/data/pathview2.qml b/tests/auto/declarative/qdeclarativepathview/data/pathview2.qml index 0d5c98b..c825292 100644 --- a/tests/auto/declarative/qdeclarativepathview/data/pathview2.qml +++ b/tests/auto/declarative/qdeclarativepathview/data/pathview2.qml @@ -1,7 +1,7 @@ import Qt 4.6 PathView { - id: photoPathView; model: rssModel; delegate: photoDelegate + id: photoPathView y: 100; width: 800; height: 330; pathItemCount: 10; z: 1 path: Path { diff --git a/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml b/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml index 412cca2..b143294 100644 --- a/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml +++ b/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml @@ -1,9 +1,11 @@ import Qt 4.6 PathView { - id: photoPathView; model: rssModel; delegate: photoDelegate - y: 100; width: 800; height: 330; pathItemCount: 4; offset: 10 - dragMargin: 24; snapPosition: 50 + id: photoPathView + y: 100; width: 800; height: 330; pathItemCount: 4; offset: 1 + dragMargin: 24 + preferredHighlightBegin: 0.50 + preferredHighlightEnd: 0.50 path: Path { startX: -50; startY: 40; diff --git a/tests/auto/declarative/qdeclarativepathview/data/propertychanges.qml b/tests/auto/declarative/qdeclarativepathview/data/propertychanges.qml new file mode 100644 index 0000000..1ae1ad2 --- /dev/null +++ b/tests/auto/declarative/qdeclarativepathview/data/propertychanges.qml @@ -0,0 +1,116 @@ +import Qt 4.6 + +Rectangle { + width: 350; height: 220; color: "white" + Component { + id: myDelegate + Item { + id: wrapper + width: 180; height: 40; + opacity: PathView.opacity + Column { + x: 5; y: 5 + Text { text: '<b>Name:</b> ' + name } + Text { text: '<b>Number:</b> ' + number } + } + } + } + + PathView { + preferredHighlightBegin: 0.1 + preferredHighlightEnd: 0.1 + dragMargin: 5.0 + id: pathView + objectName: "pathView" + anchors.fill: parent + model: listModel + delegate: myDelegate + focus: true + path: Path { + id: myPath + objectName: "path" + startX: 220; startY: 200 + PathAttribute { name: "opacity"; value: 1.0; objectName: "pathAttribute"; } + PathQuad { x: 220; y: 25; controlX: 260; controlY: 75 } + PathAttribute { name: "opacity"; value: 0.3 } + PathQuad { x: 220; y: 200; controlX: -20; controlY: 75 } + } + Timer { + interval: 2000; running: true; repeat: true + onTriggered: { + if (pathView.path == alternatePath) + pathView.path = myPath; + else + pathView.path = alternatePath; + } + } + } + + data:[ + ListModel { + id: listModel + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + ListElement { + name: "Bill Smith" + number: "555 3264" + } + ListElement { + name: "John Brown" + number: "555 8426" + } + ListElement { + name: "Sam Wise" + number: "555 0473" + } + }, + ListModel { + objectName: "alternateModel" + ListElement { + name: "Jack" + number: "555 8426" + } + ListElement { + name: "Mary" + number: "555 3264" + } + }, + Path { + id: alternatePath + objectName: "alternatePath" + startX: 100; startY: 40 + PathAttribute { name: "opacity"; value: 0.0 } + PathLine { x: 100; y: 160 } + PathAttribute { name: "opacity"; value: 0.2 } + PathLine { x: 300; y: 160 } + PathAttribute { name: "opacity"; value: 0.0 } + PathLine { x: 300; y: 40 } + PathAttribute { name: "opacity"; value: 0.2 } + PathLine { x: 100; y: 40 } + } + ] +} + + diff --git a/tests/auto/declarative/qdeclarativepathview/qdeclarativepathview.pro b/tests/auto/declarative/qdeclarativepathview/qdeclarativepathview.pro index 2f6ae32..3c327d5 100644 --- a/tests/auto/declarative/qdeclarativepathview/qdeclarativepathview.pro +++ b/tests/auto/declarative/qdeclarativepathview/qdeclarativepathview.pro @@ -6,3 +6,6 @@ SOURCES += tst_qdeclarativepathview.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp b/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp index 79bc607..df7c511 100644 --- a/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp +++ b/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp @@ -38,20 +38,23 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#include <private/qdeclarativepathview_p.h> -#include <private/qdeclarativepath_p.h> -#include <qdeclarativecontext.h> -#include <qdeclarativeexpression.h> -#include <qtest.h> + +#include <QtTest/QtTest> +#include <QtDeclarative/qdeclarativeview.h> #include <QtDeclarative/qdeclarativeengine.h> #include <QtDeclarative/qdeclarativecomponent.h> -#include <QtDeclarative/qdeclarativeview.h> +#include <QtDeclarative/qdeclarativecontext.h> +#include <QtDeclarative/qdeclarativeexpression.h> +#include <QtDeclarative/private/qdeclarativepathview_p.h> +#include <QtDeclarative/private/qdeclarativepath_p.h> #include <QtDeclarative/private/qdeclarativetext_p.h> #include <QtDeclarative/private/qdeclarativerectangle_p.h> +#include <QtDeclarative/private/qdeclarativelistmodel_p.h> +#include <QtDeclarative/private/qdeclarativevaluetype_p.h> #include <QAbstractListModel> #include <QStringListModel> #include <QFile> -#include <private/qdeclarativevaluetype_p.h> + #include "../../../shared/util.h" class tst_QDeclarativePathView : public QObject @@ -68,7 +71,13 @@ private slots: void pathview3(); void path(); void pathMoved(); + void setCurrentIndex(); void resetModel(); + void propertyChanges(); + void pathChanges(); + void componentChanges(); + void modelChanges(); + private: QDeclarativeView *createView(); @@ -120,7 +129,7 @@ public: setRoleNames(roles); } - int rowCount(const QModelIndex &parent=QModelIndex()) const { return list.count(); } + int rowCount(const QModelIndex &parent=QModelIndex()) const { Q_UNUSED(parent); return list.count(); } QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const { QVariant rv; if (role == Name) @@ -185,7 +194,7 @@ void tst_QDeclarativePathView::initValues() QCOMPARE(obj->model(), QVariant()); QCOMPARE(obj->currentIndex(), 0); QCOMPARE(obj->offset(), 0.); - QCOMPARE(obj->snapPosition(), 0.); + QCOMPARE(obj->preferredHighlightBegin(), 0.); QCOMPARE(obj->dragMargin(), 0.); QCOMPARE(obj->count(), 0); QCOMPARE(obj->pathItemCount(), -1); @@ -199,17 +208,18 @@ void tst_QDeclarativePathView::items() model.addItem("Fred", "12345"); model.addItem("John", "2345"); model.addItem("Bob", "54321"); + model.addItem("Bill", "4321"); QDeclarativeContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/pathview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/pathview0.qml")); qApp->processEvents(); QDeclarativePathView *pathview = findItem<QDeclarativePathView>(canvas->rootObject(), "view"); QVERIFY(pathview != 0); - QCOMPARE(pathview->childItems().count(), model.count()); // assumes all are visible + QCOMPARE(pathview->childItems().count(), model.count()+1); // assumes all are visible, including highlight for (int i = 0; i < model.count(); ++i) { QDeclarativeText *name = findItem<QDeclarativeText>(pathview, "textName", i); @@ -220,6 +230,16 @@ void tst_QDeclarativePathView::items() QCOMPARE(number->text(), model.number(i)); } + QDeclarativePath *path = qobject_cast<QDeclarativePath*>(pathview->path()); + QVERIFY(path); + + QVERIFY(pathview->highlightItem()); + QPointF start = path->pointAt(0.0); + QPointF offset; + offset.setX(pathview->highlightItem()->width()/2); + offset.setY(pathview->highlightItem()->height()/2); + QCOMPARE(pathview->highlightItem()->pos() + offset, start); + delete canvas; } @@ -235,7 +255,7 @@ void tst_QDeclarativePathView::pathview2() QVERIFY(obj->model() != QVariant()); QCOMPARE(obj->currentIndex(), 0); QCOMPARE(obj->offset(), 0.); - QCOMPARE(obj->snapPosition(), 0.); + QCOMPARE(obj->preferredHighlightBegin(), 0.); QCOMPARE(obj->dragMargin(), 0.); QCOMPARE(obj->count(), 8); QCOMPARE(obj->pathItemCount(), 10); @@ -252,8 +272,8 @@ void tst_QDeclarativePathView::pathview3() QVERIFY(obj->delegate() != 0); QVERIFY(obj->model() != QVariant()); QCOMPARE(obj->currentIndex(), 0); - QCOMPARE(obj->offset(), 50.); // ??? - QCOMPARE(obj->snapPosition(), 0.5); // ??? + QCOMPARE(obj->offset(), 1.0); + QCOMPARE(obj->preferredHighlightBegin(), 0.5); QCOMPARE(obj->dragMargin(), 24.); QCOMPARE(obj->count(), 8); QCOMPARE(obj->pathItemCount(), 4); @@ -262,7 +282,7 @@ void tst_QDeclarativePathView::pathview3() void tst_QDeclarativePathView::path() { QDeclarativeEngine engine; - QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/path.qml")); + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/pathtest.qml")); QDeclarativePath *obj = qobject_cast<QDeclarativePath*>(c.create()); QVERIFY(obj != 0); @@ -397,7 +417,7 @@ void tst_QDeclarativePathView::pathMoved() QDeclarativeContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testModel", &model); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/pathview.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/pathview0.qml")); qApp->processEvents(); QDeclarativePathView *pathview = findItem<QDeclarativePathView>(canvas->rootObject(), "view"); @@ -412,21 +432,61 @@ void tst_QDeclarativePathView::pathMoved() offset.setX(firstItem->width()/2); offset.setY(firstItem->height()/2); QCOMPARE(firstItem->pos() + offset, start); - pathview->setOffset(10); - QTest::qWait(1000);//Moving is animated? + pathview->setOffset(1.0); for(int i=0; i<model.count(); i++){ QDeclarativeRectangle *curItem = findItem<QDeclarativeRectangle>(pathview, "wrapper", i); - QCOMPARE(curItem->pos() + offset, path->pointAt(0.1 + i*0.25)); + QCOMPARE(curItem->pos() + offset, path->pointAt(0.25 + i*0.25)); } - pathview->setOffset(100); - QTest::qWait(1000);//Moving is animated? + pathview->setOffset(0.0); QCOMPARE(firstItem->pos() + offset, start); delete canvas; } +void tst_QDeclarativePathView::setCurrentIndex() +{ + QDeclarativeView *canvas = createView(); + + TestModel model; + model.addItem("Ben", "12345"); + model.addItem("Bohn", "2345"); + model.addItem("Bob", "54321"); + model.addItem("Bill", "4321"); + + QDeclarativeContext *ctxt = canvas->rootContext(); + ctxt->setContextProperty("testModel", &model); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/pathview0.qml")); + qApp->processEvents(); + + QDeclarativePathView *pathview = findItem<QDeclarativePathView>(canvas->rootObject(), "view"); + QVERIFY(pathview != 0); + + QDeclarativeRectangle *firstItem = findItem<QDeclarativeRectangle>(pathview, "wrapper", 0); + QVERIFY(firstItem); + QDeclarativePath *path = qobject_cast<QDeclarativePath*>(pathview->path()); + QVERIFY(path); + QPointF start = path->pointAt(0.0); + QPointF offset;//Center of item is at point, but pos is from corner + offset.setX(firstItem->width()/2); + offset.setY(firstItem->height()/2); + QCOMPARE(firstItem->pos() + offset, start); + QCOMPARE(canvas->rootObject()->property("currentA").toInt(), 0); + QCOMPARE(canvas->rootObject()->property("currentB").toInt(), 0); + + pathview->setCurrentIndex(2); + QTest::qWait(1000); + + firstItem = findItem<QDeclarativeRectangle>(pathview, "wrapper", 2); + QCOMPARE(firstItem->pos() + offset, start); + QCOMPARE(canvas->rootObject()->property("currentA").toInt(), 2); + QCOMPARE(canvas->rootObject()->property("currentB").toInt(), 2); + + delete canvas; +} + void tst_QDeclarativePathView::resetModel() { QDeclarativeView *canvas = createView(); @@ -465,6 +525,152 @@ void tst_QDeclarativePathView::resetModel() } } +void tst_QDeclarativePathView::propertyChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativePathView *pathView = canvas->rootObject()->findChild<QDeclarativePathView*>("pathView"); + QVERIFY(pathView); + + QSignalSpy snapPositionSpy(pathView, SIGNAL(preferredHighlightBeginChanged())); + QSignalSpy dragMarginSpy(pathView, SIGNAL(dragMarginChanged())); + + QCOMPARE(pathView->preferredHighlightBegin(), 0.1); + QCOMPARE(pathView->dragMargin(), 5.0); + + pathView->setPreferredHighlightBegin(0.4); + pathView->setPreferredHighlightEnd(0.4); + pathView->setDragMargin(20.0); + + QCOMPARE(pathView->preferredHighlightBegin(), 0.4); + QCOMPARE(pathView->preferredHighlightEnd(), 0.4); + QCOMPARE(pathView->dragMargin(), 20.0); + + QCOMPARE(snapPositionSpy.count(), 1); + QCOMPARE(dragMarginSpy.count(), 1); + + pathView->setPreferredHighlightBegin(0.4); + pathView->setPreferredHighlightEnd(0.4); + pathView->setDragMargin(20.0); + + QCOMPARE(snapPositionSpy.count(), 1); + QCOMPARE(dragMarginSpy.count(), 1); + delete canvas; +} + +void tst_QDeclarativePathView::pathChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativePathView *pathView = canvas->rootObject()->findChild<QDeclarativePathView*>("pathView"); + QVERIFY(pathView); + + QDeclarativePath *path = canvas->rootObject()->findChild<QDeclarativePath*>("path"); + QVERIFY(path); + + QSignalSpy startXSpy(path, SIGNAL(startXChanged())); + QSignalSpy startYSpy(path, SIGNAL(startYChanged())); + + QCOMPARE(path->startX(), 220.0); + QCOMPARE(path->startY(), 200.0); + + path->setStartX(240.0); + path->setStartY(220.0); + + QCOMPARE(path->startX(), 240.0); + QCOMPARE(path->startY(), 220.0); + + QCOMPARE(startXSpy.count(),1); + QCOMPARE(startYSpy.count(),1); + + path->setStartX(240); + path->setStartY(220); + + QCOMPARE(startXSpy.count(),1); + QCOMPARE(startYSpy.count(),1); + + QDeclarativePath *alternatePath = canvas->rootObject()->findChild<QDeclarativePath*>("alternatePath"); + QVERIFY(alternatePath); + + QSignalSpy pathSpy(pathView, SIGNAL(pathChanged())); + + QCOMPARE(pathView->path(), path); + + pathView->setPath(alternatePath); + QCOMPARE(pathView->path(), alternatePath); + QCOMPARE(pathSpy.count(),1); + + pathView->setPath(alternatePath); + QCOMPARE(pathSpy.count(),1); + + QDeclarativePathAttribute *pathAttribute = canvas->rootObject()->findChild<QDeclarativePathAttribute*>("pathAttribute"); + QVERIFY(pathAttribute); + + QSignalSpy nameSpy(pathAttribute, SIGNAL(nameChanged())); + QCOMPARE(pathAttribute->name(), QString("opacity")); + + pathAttribute->setName("scale"); + QCOMPARE(pathAttribute->name(), QString("scale")); + QCOMPARE(nameSpy.count(),1); + + pathAttribute->setName("scale"); + QCOMPARE(nameSpy.count(),1); + delete canvas; +} + +void tst_QDeclarativePathView::componentChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativePathView *pathView = canvas->rootObject()->findChild<QDeclarativePathView*>("pathView"); + QVERIFY(pathView); + + QDeclarativeComponent delegateComponent(canvas->engine()); + delegateComponent.setData("import Qt 4.7; Text { text: '<b>Name:</b> ' + name }", QUrl::fromLocalFile("")); + + QSignalSpy delegateSpy(pathView, SIGNAL(delegateChanged())); + + pathView->setDelegate(&delegateComponent); + QCOMPARE(pathView->delegate(), &delegateComponent); + QCOMPARE(delegateSpy.count(),1); + + pathView->setDelegate(&delegateComponent); + QCOMPARE(delegateSpy.count(),1); + delete canvas; +} + +void tst_QDeclarativePathView::modelChanges() +{ + QDeclarativeView *canvas = createView(); + QVERIFY(canvas); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + + QDeclarativePathView *pathView = canvas->rootObject()->findChild<QDeclarativePathView*>("pathView"); + QVERIFY(pathView); + + QDeclarativeListModel *alternateModel = canvas->rootObject()->findChild<QDeclarativeListModel*>("alternateModel"); + QVERIFY(alternateModel); + QVariant modelVariant = QVariant::fromValue(alternateModel); + QSignalSpy modelSpy(pathView, SIGNAL(modelChanged())); + + pathView->setModel(modelVariant); + QCOMPARE(pathView->model(), modelVariant); + QCOMPARE(modelSpy.count(),1); + + pathView->setModel(modelVariant); + QCOMPARE(modelSpy.count(),1); + + pathView->setModel(QVariant()); + QCOMPARE(modelSpy.count(),2); + + delete canvas; +} QDeclarativeView *tst_QDeclarativePathView::createView() { diff --git a/tests/auto/declarative/visual/webview/zooming/qtlogo.png b/tests/auto/declarative/qdeclarativepixmapcache/data/http/exists.png Binary files differindex 399bd0b..399bd0b 100644 --- a/tests/auto/declarative/visual/webview/zooming/qtlogo.png +++ b/tests/auto/declarative/qdeclarativepixmapcache/data/http/exists.png diff --git a/tests/auto/declarative/visual/webview/settings/qtlogo.png b/tests/auto/declarative/qdeclarativepixmapcache/data/http/exists1.png Binary files differindex 399bd0b..399bd0b 100644 --- a/tests/auto/declarative/visual/webview/settings/qtlogo.png +++ b/tests/auto/declarative/qdeclarativepixmapcache/data/http/exists1.png diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/pics/qtlogo.png b/tests/auto/declarative/qdeclarativepixmapcache/data/http/exists2.png Binary files differindex 399bd0b..399bd0b 100644 --- a/tests/auto/declarative/visual/animation/pauseAnimation/pics/qtlogo.png +++ b/tests/auto/declarative/qdeclarativepixmapcache/data/http/exists2.png diff --git a/tests/auto/declarative/visual/animation/easing/pics/qtlogo.png b/tests/auto/declarative/qdeclarativepixmapcache/data/http/exists3.png Binary files differindex 399bd0b..399bd0b 100644 --- a/tests/auto/declarative/visual/animation/easing/pics/qtlogo.png +++ b/tests/auto/declarative/qdeclarativepixmapcache/data/http/exists3.png diff --git a/tests/auto/declarative/qdeclarativepixmapcache/data/http/exists4.png b/tests/auto/declarative/qdeclarativepixmapcache/data/http/exists4.png Binary files differnew file mode 100644 index 0000000..399bd0b --- /dev/null +++ b/tests/auto/declarative/qdeclarativepixmapcache/data/http/exists4.png diff --git a/tests/auto/declarative/qdeclarativepixmapcache/data/http/exists5.png b/tests/auto/declarative/qdeclarativepixmapcache/data/http/exists5.png Binary files differnew file mode 100644 index 0000000..399bd0b --- /dev/null +++ b/tests/auto/declarative/qdeclarativepixmapcache/data/http/exists5.png diff --git a/tests/auto/declarative/qdeclarativepixmapcache/qdeclarativepixmapcache.pro b/tests/auto/declarative/qdeclarativepixmapcache/qdeclarativepixmapcache.pro index 899c43f..4b247fc 100644 --- a/tests/auto/declarative/qdeclarativepixmapcache/qdeclarativepixmapcache.pro +++ b/tests/auto/declarative/qdeclarativepixmapcache/qdeclarativepixmapcache.pro @@ -5,5 +5,14 @@ macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativepixmapcache.cpp +INCLUDEPATH += ../shared/ +HEADERS += ../shared/testhttpserver.h +SOURCES += ../shared/testhttpserver.cpp + +DEFINES += SRCDIR=\\\"$$PWD\\\" + # QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage # LIBS += -lgcov + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp b/tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp index 223f54f..0cc13ad 100644 --- a/tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp +++ b/tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp @@ -43,6 +43,8 @@ #include <private/qdeclarativepixmapcache_p.h> #include <QtDeclarative/qdeclarativeengine.h> #include <QNetworkReply> +#include "testhttpserver.h" +#include "../../../shared/util.h" // These don't let normal people run tests! //#include "../network-settings.h" @@ -52,8 +54,10 @@ class tst_qdeclarativepixmapcache : public QObject Q_OBJECT public: tst_qdeclarativepixmapcache() : - thisfile(QUrl::fromLocalFile(__FILE__)) + thisfile(QUrl::fromLocalFile(__FILE__)), + server(14452) { + server.serveDirectory(SRCDIR "/data/http"); } private slots: @@ -65,6 +69,7 @@ private slots: private: QDeclarativeEngine engine; QUrl thisfile; + TestHTTPServer server; }; @@ -110,8 +115,8 @@ void tst_qdeclarativepixmapcache::single_data() // File URLs are optimized QTest::newRow("local") << thisfile.resolved(QUrl("data/exists.png")) << localfile_optimized << true << false; QTest::newRow("local") << thisfile.resolved(QUrl("data/notexists.png")) << localfile_optimized << false << false; - QTest::newRow("remote") << QUrl("http://qt.nokia.com/logo.png") << false << true << false; - QTest::newRow("remote") << QUrl("http://qt.nokia.com/thereisnologo.png") << false << false << true; + QTest::newRow("remote") << QUrl("http://127.0.0.1:14452/exists.png") << false << true << false; + QTest::newRow("remote") << QUrl("http://127.0.0.1:14452/notexists.png") << false << false << true; } void tst_qdeclarativepixmapcache::single() @@ -121,19 +126,20 @@ void tst_qdeclarativepixmapcache::single() QFETCH(bool, exists); QFETCH(bool, neterror); + QString expectedError; if (neterror) { - QString expected = "\"Error downloading " + target.toString() + " - server replied: Not Found\" "; - QTest::ignoreMessage(QtWarningMsg, expected.toLatin1()); + expectedError = "Error downloading " + target.toString() + " - server replied: Not found"; } else if (!exists) { - QString expected = "Cannot open QUrl( \"" + target.toString() + "\" ) "; - QTest::ignoreMessage(QtWarningMsg, expected.toLatin1()); + expectedError = "Cannot open: " + target.toString(); } QPixmap pixmap; QVERIFY(pixmap.width() <= 0); // Check Qt assumption - QDeclarativePixmapReply::Status status = QDeclarativePixmapCache::get(target, &pixmap); + QString errorString; + QDeclarativePixmapReply::Status status = QDeclarativePixmapCache::get(target, &pixmap, &errorString); if (incache) { + QCOMPARE(errorString, expectedError); if (exists) { QVERIFY(status == QDeclarativePixmapReply::Ready); QVERIFY(pixmap.width() > 0); @@ -151,13 +157,15 @@ void tst_qdeclarativepixmapcache::single() QTestEventLoop::instance().enterLoop(10); QVERIFY(!QTestEventLoop::instance().timeout()); QVERIFY(getter.gotslot); + QString errorString; if (exists) { - QVERIFY(QDeclarativePixmapCache::get(target, &pixmap) == QDeclarativePixmapReply::Ready); + QVERIFY(QDeclarativePixmapCache::get(target, &pixmap, &errorString) == QDeclarativePixmapReply::Ready); QVERIFY(pixmap.width() > 0); } else { - QVERIFY(QDeclarativePixmapCache::get(target, &pixmap) == QDeclarativePixmapReply::Error); + QVERIFY(QDeclarativePixmapCache::get(target, &pixmap, &errorString) == QDeclarativePixmapReply::Error); QVERIFY(pixmap.width() <= 0); } + QCOMPARE(errorString, expectedError); } QCOMPARE(QDeclarativePixmapCache::pendingRequests(), 0); @@ -183,32 +191,32 @@ void tst_qdeclarativepixmapcache::parallel_data() ; QTest::newRow("remote") - << QUrl("http://qt.nokia.com/images/template/checkbox-on.png") - << QUrl("http://qt.nokia.com/images/products/qt-logo/image_tile") + << QUrl("http://127.0.0.1:14452/exists2.png") + << QUrl("http://127.0.0.1:14452/exists3.png") << 0 << -1 << 2 ; QTest::newRow("remoteagain") - << QUrl("http://qt.nokia.com/images/template/checkbox-on.png") - << QUrl("http://qt.nokia.com/images/products/qt-logo/image_tile") + << QUrl("http://127.0.0.1:14452/exists2.png") + << QUrl("http://127.0.0.1:14452/exists3.png") << 2 << -1 << 0 ; QTest::newRow("remotecopy") - << QUrl("http://qt.nokia.com/images/template/checkbox-off.png") - << QUrl("http://qt.nokia.com/images/template/checkbox-off.png") + << QUrl("http://127.0.0.1:14452/exists4.png") + << QUrl("http://127.0.0.1:14452/exists4.png") << 0 << -1 << 1 ; QTest::newRow("remotecopycancel") - << QUrl("http://qt.nokia.com/rounded_block_bg.png") - << QUrl("http://qt.nokia.com/rounded_block_bg.png") + << QUrl("http://127.0.0.1:14452/exists5.png") + << QUrl("http://127.0.0.1:14452/exists5.png") << 0 << 0 << 1 @@ -231,8 +239,10 @@ void tst_qdeclarativepixmapcache::parallel() for (int i=0; i<targets.count(); ++i) { QUrl target = targets.at(i); QPixmap pixmap; - QDeclarativePixmapReply::Status status = QDeclarativePixmapCache::get(target, &pixmap); + QString errorString; + QDeclarativePixmapReply::Status status = QDeclarativePixmapCache::get(target, &pixmap, &errorString); QDeclarativePixmapReply *reply = 0; + QVERIFY(status != QDeclarativePixmapReply::Error); if (status != QDeclarativePixmapReply::Error && status != QDeclarativePixmapReply::Ready) reply = QDeclarativePixmapCache::request(&engine, target); replies.append(reply); @@ -267,7 +277,8 @@ void tst_qdeclarativepixmapcache::parallel() } else { QVERIFY(getters[i]->gotslot); QPixmap pixmap; - QVERIFY(QDeclarativePixmapCache::get(targets[i], &pixmap) == QDeclarativePixmapReply::Ready); + QString errorString; + QVERIFY(QDeclarativePixmapCache::get(targets[i], &pixmap, &errorString) == QDeclarativePixmapReply::Ready); QVERIFY(pixmap.width() > 0); } delete getters[i]; diff --git a/tests/auto/declarative/qdeclarativepositioners/data/flowtest.qml b/tests/auto/declarative/qdeclarativepositioners/data/flowtest.qml new file mode 100644 index 0000000..6c1c823 --- /dev/null +++ b/tests/auto/declarative/qdeclarativepositioners/data/flowtest.qml @@ -0,0 +1,40 @@ +import Qt 4.6 + +Item { + width: 90 + height: 480 + Flow { + objectName: "flow" + width: parent.width + Rectangle { + objectName: "one" + color: "red" + width: 50 + height: 50 + } + Rectangle { + objectName: "two" + color: "green" + width: 20 + height: 50 + } + Rectangle { + objectName: "three" + color: "blue" + width: 50 + height: 20 + } + Rectangle { + objectName: "four" + color: "cyan" + width: 50 + height: 50 + } + Rectangle { + objectName: "five" + color: "magenta" + width: 10 + height: 10 + } + } +} diff --git a/tests/auto/declarative/qdeclarativepositioners/data/grid-animated.qml b/tests/auto/declarative/qdeclarativepositioners/data/grid-animated.qml index f6376a1..9741ba9 100644 --- a/tests/auto/declarative/qdeclarativepositioners/data/grid-animated.qml +++ b/tests/auto/declarative/qdeclarativepositioners/data/grid-animated.qml @@ -4,6 +4,7 @@ Item { width: 640 height: 480 Grid { + objectName: "grid" columns: 3 add: Transition { NumberAnimation { diff --git a/tests/auto/declarative/qdeclarativepositioners/data/grid-spacing.qml b/tests/auto/declarative/qdeclarativepositioners/data/grid-spacing.qml index 5b4a30d..e335932 100644 --- a/tests/auto/declarative/qdeclarativepositioners/data/grid-spacing.qml +++ b/tests/auto/declarative/qdeclarativepositioners/data/grid-spacing.qml @@ -4,6 +4,7 @@ Item { width: 640 height: 480 Grid { + objectName: "grid" columns: 3 spacing: 4 Rectangle { diff --git a/tests/auto/declarative/qdeclarativepositioners/data/grid-toptobottom.qml b/tests/auto/declarative/qdeclarativepositioners/data/grid-toptobottom.qml new file mode 100644 index 0000000..34a84bf --- /dev/null +++ b/tests/auto/declarative/qdeclarativepositioners/data/grid-toptobottom.qml @@ -0,0 +1,41 @@ +import Qt 4.6 + +Item { + width: 640 + height: 480 + Grid { + objectName: "grid" + rows: 3 + flow: Grid.TopToBottom + Rectangle { + objectName: "one" + color: "red" + width: 50 + height: 50 + } + Rectangle { + objectName: "two" + color: "green" + width: 20 + height: 50 + } + Rectangle { + objectName: "three" + color: "blue" + width: 50 + height: 20 + } + Rectangle { + objectName: "four" + color: "cyan" + width: 50 + height: 50 + } + Rectangle { + objectName: "five" + color: "magenta" + width: 10 + height: 10 + } + } +} diff --git a/tests/auto/declarative/qdeclarativepositioners/data/grid.qml b/tests/auto/declarative/qdeclarativepositioners/data/grid.qml deleted file mode 100644 index 830df6a..0000000 --- a/tests/auto/declarative/qdeclarativepositioners/data/grid.qml +++ /dev/null @@ -1,39 +0,0 @@ -import Qt 4.6 - -Item { - width: 640 - height: 480 - Grid { - columns: 3 - Rectangle { - objectName: "one" - color: "red" - width: 50 - height: 50 - } - Rectangle { - objectName: "two" - color: "green" - width: 20 - height: 50 - } - Rectangle { - objectName: "three" - color: "blue" - width: 50 - height: 20 - } - Rectangle { - objectName: "four" - color: "cyan" - width: 50 - height: 50 - } - Rectangle { - objectName: "five" - color: "magenta" - width: 10 - height: 10 - } - } -} diff --git a/tests/auto/declarative/qdeclarativepositioners/data/gridtest.qml b/tests/auto/declarative/qdeclarativepositioners/data/gridtest.qml new file mode 100644 index 0000000..1d6f44e --- /dev/null +++ b/tests/auto/declarative/qdeclarativepositioners/data/gridtest.qml @@ -0,0 +1,40 @@ +import Qt 4.6 + +Item { + width: 640 + height: 480 + Grid { + objectName: "grid" + columns: 3 + Rectangle { + objectName: "one" + color: "red" + width: 50 + height: 50 + } + Rectangle { + objectName: "two" + color: "green" + width: 20 + height: 50 + } + Rectangle { + objectName: "three" + color: "blue" + width: 50 + height: 20 + } + Rectangle { + objectName: "four" + color: "cyan" + width: 50 + height: 50 + } + Rectangle { + objectName: "five" + color: "magenta" + width: 10 + height: 10 + } + } +} diff --git a/tests/auto/declarative/qdeclarativepositioners/data/gridzerocolumns.qml b/tests/auto/declarative/qdeclarativepositioners/data/gridzerocolumns.qml new file mode 100644 index 0000000..052d96b --- /dev/null +++ b/tests/auto/declarative/qdeclarativepositioners/data/gridzerocolumns.qml @@ -0,0 +1,40 @@ +import Qt 4.6 + +Item { + width: 640 + height: 480 + Grid { + objectName: "grid" + columns: 0 + Rectangle { + objectName: "one" + color: "red" + width: 50 + height: 50 + } + Rectangle { + objectName: "two" + color: "green" + width: 20 + height: 50 + } + Rectangle { + objectName: "three" + color: "blue" + width: 50 + height: 20 + } + Rectangle { + objectName: "four" + color: "cyan" + width: 50 + height: 50 + } + Rectangle { + objectName: "five" + color: "magenta" + width: 10 + height: 10 + } + } +} diff --git a/tests/auto/declarative/qdeclarativepositioners/data/horizontal-animated.qml b/tests/auto/declarative/qdeclarativepositioners/data/horizontal-animated.qml index c113a36..a1c05a8 100644 --- a/tests/auto/declarative/qdeclarativepositioners/data/horizontal-animated.qml +++ b/tests/auto/declarative/qdeclarativepositioners/data/horizontal-animated.qml @@ -4,6 +4,7 @@ Item { width: 640 height: 480 Row { + objectName: "row" add: Transition { NumberAnimation { properties: "x"; diff --git a/tests/auto/declarative/qdeclarativepositioners/data/horizontal-spacing.qml b/tests/auto/declarative/qdeclarativepositioners/data/horizontal-spacing.qml index 32bf775..fb9fdd1 100644 --- a/tests/auto/declarative/qdeclarativepositioners/data/horizontal-spacing.qml +++ b/tests/auto/declarative/qdeclarativepositioners/data/horizontal-spacing.qml @@ -4,6 +4,7 @@ Item { width: 640 height: 480 Row { + objectName: "row" spacing: 10 Rectangle { objectName: "one" diff --git a/tests/auto/declarative/qdeclarativepositioners/data/horizontal.qml b/tests/auto/declarative/qdeclarativepositioners/data/horizontal.qml index 06ae151..3a7a3b1 100644 --- a/tests/auto/declarative/qdeclarativepositioners/data/horizontal.qml +++ b/tests/auto/declarative/qdeclarativepositioners/data/horizontal.qml @@ -4,6 +4,7 @@ Item { width: 640 height: 480 Row { + objectName: "row" Rectangle { objectName: "one" color: "red" diff --git a/tests/auto/declarative/qdeclarativepositioners/data/propertychanges.qml b/tests/auto/declarative/qdeclarativepositioners/data/propertychangestest.qml index 4370a18..4370a18 100644 --- a/tests/auto/declarative/qdeclarativepositioners/data/propertychanges.qml +++ b/tests/auto/declarative/qdeclarativepositioners/data/propertychangestest.qml diff --git a/tests/auto/declarative/qdeclarativepositioners/data/repeater.qml b/tests/auto/declarative/qdeclarativepositioners/data/repeatertest.qml index 2bc5e94..2bc5e94 100644 --- a/tests/auto/declarative/qdeclarativepositioners/data/repeater.qml +++ b/tests/auto/declarative/qdeclarativepositioners/data/repeatertest.qml diff --git a/tests/auto/declarative/qdeclarativepositioners/data/vertical-animated.qml b/tests/auto/declarative/qdeclarativepositioners/data/vertical-animated.qml index 10f6cbb..31faa54 100644 --- a/tests/auto/declarative/qdeclarativepositioners/data/vertical-animated.qml +++ b/tests/auto/declarative/qdeclarativepositioners/data/vertical-animated.qml @@ -4,6 +4,7 @@ Item { width: 640 height: 480 Column { + objectName: "column" add: Transition { NumberAnimation { properties: "y"; diff --git a/tests/auto/declarative/qdeclarativepositioners/data/vertical-spacing.qml b/tests/auto/declarative/qdeclarativepositioners/data/vertical-spacing.qml index 69a8256..1c5696b 100644 --- a/tests/auto/declarative/qdeclarativepositioners/data/vertical-spacing.qml +++ b/tests/auto/declarative/qdeclarativepositioners/data/vertical-spacing.qml @@ -4,6 +4,7 @@ Item { width: 640 height: 480 Column { + objectName: "column" spacing: 10 Rectangle { objectName: "one" diff --git a/tests/auto/declarative/qdeclarativepositioners/data/vertical.qml b/tests/auto/declarative/qdeclarativepositioners/data/vertical.qml index 856c180..cd777e2 100644 --- a/tests/auto/declarative/qdeclarativepositioners/data/vertical.qml +++ b/tests/auto/declarative/qdeclarativepositioners/data/vertical.qml @@ -4,6 +4,7 @@ Item { width: 640 height: 480 Column { + objectName: "column" Rectangle { objectName: "one" color: "red" diff --git a/tests/auto/declarative/qdeclarativepositioners/qdeclarativepositioners.pro b/tests/auto/declarative/qdeclarativepositioners/qdeclarativepositioners.pro index 5edfa55..dbe2cbee 100644 --- a/tests/auto/declarative/qdeclarativepositioners/qdeclarativepositioners.pro +++ b/tests/auto/declarative/qdeclarativepositioners/qdeclarativepositioners.pro @@ -5,3 +5,6 @@ macx:CONFIG -= app_bundle # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp b/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp index 3a8a892..b4ac0e1 100644 --- a/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp +++ b/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp @@ -61,10 +61,14 @@ private slots: void test_vertical_spacing(); void test_vertical_animated(); void test_grid(); + void test_grid_topToBottom(); void test_grid_spacing(); void test_grid_animated(); + void test_grid_zero_columns(); void test_propertychanges(); void test_repeater(); + void test_flow(); + void test_flow_resize(); private: QDeclarativeView *createView(const QString &filename); }; @@ -92,6 +96,10 @@ void tst_QDeclarativePositioners::test_horizontal() QCOMPARE(two->y(), 0.0); QCOMPARE(three->x(), 70.0); QCOMPARE(three->y(), 0.0); + + QDeclarativeItem *row = canvas->rootObject()->findChild<QDeclarativeItem*>("row"); + QCOMPARE(row->width(), 110.0); + QCOMPARE(row->height(), 50.0); } void tst_QDeclarativePositioners::test_horizontal_spacing() @@ -113,6 +121,10 @@ void tst_QDeclarativePositioners::test_horizontal_spacing() QCOMPARE(two->y(), 0.0); QCOMPARE(three->x(), 90.0); QCOMPARE(three->y(), 0.0); + + QDeclarativeItem *row = canvas->rootObject()->findChild<QDeclarativeItem*>("row"); + QCOMPARE(row->width(), 130.0); + QCOMPARE(row->height(), 50.0); } void tst_QDeclarativePositioners::test_horizontal_animated() @@ -133,6 +145,11 @@ void tst_QDeclarativePositioners::test_horizontal_animated() QCOMPARE(two->x(), -100.0); QCOMPARE(three->x(), -100.0); + QDeclarativeItem *row = canvas->rootObject()->findChild<QDeclarativeItem*>("row"); + QVERIFY(row); + QCOMPARE(row->width(), 100.0); + QCOMPARE(row->height(), 50.0); + //QTRY_COMPARE used instead of waiting for the expected time of animation completion //Note that this means the duration of the animation is NOT tested @@ -147,6 +164,11 @@ void tst_QDeclarativePositioners::test_horizontal_animated() //Add 'two' two->setOpacity(1.0); QCOMPARE(two->opacity(), 1.0); + + // New size should be immediate + QCOMPARE(row->width(), 150.0); + QCOMPARE(row->height(), 50.0); + QTest::qWait(0);//Let the animation start QCOMPARE(two->x(), -100.0); QCOMPARE(three->x(), 50.0); @@ -174,6 +196,11 @@ void tst_QDeclarativePositioners::test_vertical() QCOMPARE(two->y(), 50.0); QCOMPARE(three->x(), 0.0); QCOMPARE(three->y(), 60.0); + + QDeclarativeItem *column = canvas->rootObject()->findChild<QDeclarativeItem*>("column"); + QVERIFY(column); + QCOMPARE(column->height(), 80.0); + QCOMPARE(column->width(), 50.0); } void tst_QDeclarativePositioners::test_vertical_spacing() @@ -195,6 +222,10 @@ void tst_QDeclarativePositioners::test_vertical_spacing() QCOMPARE(two->y(), 60.0); QCOMPARE(three->x(), 0.0); QCOMPARE(three->y(), 80.0); + + QDeclarativeItem *column = canvas->rootObject()->findChild<QDeclarativeItem*>("column"); + QCOMPARE(column->height(), 100.0); + QCOMPARE(column->width(), 50.0); } void tst_QDeclarativePositioners::test_vertical_animated() @@ -214,6 +245,11 @@ void tst_QDeclarativePositioners::test_vertical_animated() QVERIFY(three != 0); QCOMPARE(three->y(), -100.0); + QDeclarativeItem *column = canvas->rootObject()->findChild<QDeclarativeItem*>("column"); + QVERIFY(column); + QCOMPARE(column->height(), 100.0); + QCOMPARE(column->width(), 50.0); + //QTRY_COMPARE used instead of waiting for the expected time of animation completion //Note that this means the duration of the animation is NOT tested @@ -228,6 +264,8 @@ void tst_QDeclarativePositioners::test_vertical_animated() //Add 'two' two->setOpacity(1.0); QTRY_COMPARE(two->opacity(), 1.0); + QCOMPARE(column->height(), 150.0); + QCOMPARE(column->width(), 50.0); QTest::qWait(0);//Let the animation start QCOMPARE(two->y(), -100.0); QCOMPARE(three->y(), 50.0); @@ -239,7 +277,7 @@ void tst_QDeclarativePositioners::test_vertical_animated() void tst_QDeclarativePositioners::test_grid() { - QDeclarativeView *canvas = createView(SRCDIR "/data/grid.qml"); + QDeclarativeView *canvas = createView(SRCDIR "/data/gridtest.qml"); QDeclarativeRectangle *one = canvas->rootObject()->findChild<QDeclarativeRectangle*>("one"); QVERIFY(one != 0); @@ -262,6 +300,41 @@ void tst_QDeclarativePositioners::test_grid() QCOMPARE(four->y(), 50.0); QCOMPARE(five->x(), 50.0); QCOMPARE(five->y(), 50.0); + + QDeclarativeItem *grid = canvas->rootObject()->findChild<QDeclarativeItem*>("grid"); + QCOMPARE(grid->width(), 120.0); + QCOMPARE(grid->height(), 100.0); +} + +void tst_QDeclarativePositioners::test_grid_topToBottom() +{ + QDeclarativeView *canvas = createView(SRCDIR "/data/grid-toptobottom.qml"); + + QDeclarativeRectangle *one = canvas->rootObject()->findChild<QDeclarativeRectangle*>("one"); + QVERIFY(one != 0); + QDeclarativeRectangle *two = canvas->rootObject()->findChild<QDeclarativeRectangle*>("two"); + QVERIFY(two != 0); + QDeclarativeRectangle *three = canvas->rootObject()->findChild<QDeclarativeRectangle*>("three"); + QVERIFY(three != 0); + QDeclarativeRectangle *four = canvas->rootObject()->findChild<QDeclarativeRectangle*>("four"); + QVERIFY(four != 0); + QDeclarativeRectangle *five = canvas->rootObject()->findChild<QDeclarativeRectangle*>("five"); + QVERIFY(five != 0); + + QCOMPARE(one->x(), 0.0); + QCOMPARE(one->y(), 0.0); + QCOMPARE(two->x(), 0.0); + QCOMPARE(two->y(), 50.0); + QCOMPARE(three->x(), 0.0); + QCOMPARE(three->y(), 100.0); + QCOMPARE(four->x(), 50.0); + QCOMPARE(four->y(), 0.0); + QCOMPARE(five->x(), 50.0); + QCOMPARE(five->y(), 50.0); + + QDeclarativeItem *grid = canvas->rootObject()->findChild<QDeclarativeItem*>("grid"); + QCOMPARE(grid->width(), 100.0); + QCOMPARE(grid->height(), 120.0); } void tst_QDeclarativePositioners::test_grid_spacing() @@ -289,6 +362,10 @@ void tst_QDeclarativePositioners::test_grid_spacing() QCOMPARE(four->y(), 54.0); QCOMPARE(five->x(), 54.0); QCOMPARE(five->y(), 54.0); + + QDeclarativeItem *grid = canvas->rootObject()->findChild<QDeclarativeItem*>("grid"); + QCOMPARE(grid->width(), 128.0); + QCOMPARE(grid->height(), 104.0); } void tst_QDeclarativePositioners::test_grid_animated() @@ -321,6 +398,11 @@ void tst_QDeclarativePositioners::test_grid_animated() QCOMPARE(five->x(), -100.0); QCOMPARE(five->y(), -100.0); + QDeclarativeItem *grid = canvas->rootObject()->findChild<QDeclarativeItem*>("grid"); + QVERIFY(grid); + QCOMPARE(grid->width(), 150.0); + QCOMPARE(grid->height(), 100.0); + //QTRY_COMPARE used instead of waiting for the expected time of animation completion //Note that this means the duration of the animation is NOT tested @@ -339,6 +421,8 @@ void tst_QDeclarativePositioners::test_grid_animated() //Add 'two' two->setOpacity(1.0); QCOMPARE(two->opacity(), 1.0); + QCOMPARE(grid->width(), 150.0); + QCOMPARE(grid->height(), 100.0); QTest::qWait(0);//Let the animation start QCOMPARE(two->x(), -100.0); QCOMPARE(two->y(), -100.0); @@ -363,11 +447,44 @@ void tst_QDeclarativePositioners::test_grid_animated() QTRY_COMPARE(five->y(), 50.0); } + +void tst_QDeclarativePositioners::test_grid_zero_columns() +{ + QDeclarativeView *canvas = createView(SRCDIR "/data/gridzerocolumns.qml"); + + QDeclarativeRectangle *one = canvas->rootObject()->findChild<QDeclarativeRectangle*>("one"); + QVERIFY(one != 0); + QDeclarativeRectangle *two = canvas->rootObject()->findChild<QDeclarativeRectangle*>("two"); + QVERIFY(two != 0); + QDeclarativeRectangle *three = canvas->rootObject()->findChild<QDeclarativeRectangle*>("three"); + QVERIFY(three != 0); + QDeclarativeRectangle *four = canvas->rootObject()->findChild<QDeclarativeRectangle*>("four"); + QVERIFY(four != 0); + QDeclarativeRectangle *five = canvas->rootObject()->findChild<QDeclarativeRectangle*>("five"); + QVERIFY(five != 0); + + QCOMPARE(one->x(), 0.0); + QCOMPARE(one->y(), 0.0); + QCOMPARE(two->x(), 50.0); + QCOMPARE(two->y(), 0.0); + QCOMPARE(three->x(), 70.0); + QCOMPARE(three->y(), 0.0); + QCOMPARE(four->x(), 120.0); + QCOMPARE(four->y(), 0.0); + QCOMPARE(five->x(), 0.0); + QCOMPARE(five->y(), 50.0); + + QDeclarativeItem *grid = canvas->rootObject()->findChild<QDeclarativeItem*>("grid"); + QCOMPARE(grid->width(), 170.0); + QCOMPARE(grid->height(), 60.0); +} + void tst_QDeclarativePositioners::test_propertychanges() { - QDeclarativeView *canvas = createView("data/propertychanges.qml"); + QDeclarativeView *canvas = createView(SRCDIR "/data/propertychangestest.qml"); QDeclarativeGrid *grid = qobject_cast<QDeclarativeGrid*>(canvas->rootObject()); + QVERIFY(grid != 0); QDeclarativeTransition *rowTransition = canvas->rootObject()->findChild<QDeclarativeTransition*>("rowTransition"); QDeclarativeTransition *columnTransition = canvas->rootObject()->findChild<QDeclarativeTransition*>("columnTransition"); @@ -421,7 +538,7 @@ void tst_QDeclarativePositioners::test_propertychanges() void tst_QDeclarativePositioners::test_repeater() { - QDeclarativeView *canvas = createView(SRCDIR "/data/repeater.qml"); + QDeclarativeView *canvas = createView(SRCDIR "/data/repeatertest.qml"); QDeclarativeRectangle *one = canvas->rootObject()->findChild<QDeclarativeRectangle*>("one"); QVERIFY(one != 0); @@ -440,6 +557,69 @@ void tst_QDeclarativePositioners::test_repeater() QCOMPARE(three->y(), 0.0); } +void tst_QDeclarativePositioners::test_flow() +{ + QDeclarativeView *canvas = createView(SRCDIR "/data/flowtest.qml"); + + QDeclarativeRectangle *one = canvas->rootObject()->findChild<QDeclarativeRectangle*>("one"); + QVERIFY(one != 0); + QDeclarativeRectangle *two = canvas->rootObject()->findChild<QDeclarativeRectangle*>("two"); + QVERIFY(two != 0); + QDeclarativeRectangle *three = canvas->rootObject()->findChild<QDeclarativeRectangle*>("three"); + QVERIFY(three != 0); + QDeclarativeRectangle *four = canvas->rootObject()->findChild<QDeclarativeRectangle*>("four"); + QVERIFY(four != 0); + QDeclarativeRectangle *five = canvas->rootObject()->findChild<QDeclarativeRectangle*>("five"); + QVERIFY(five != 0); + + QCOMPARE(one->x(), 0.0); + QCOMPARE(one->y(), 0.0); + QCOMPARE(two->x(), 50.0); + QCOMPARE(two->y(), 0.0); + QCOMPARE(three->x(), 0.0); + QCOMPARE(three->y(), 50.0); + QCOMPARE(four->x(), 0.0); + QCOMPARE(four->y(), 70.0); + QCOMPARE(five->x(), 50.0); + QCOMPARE(five->y(), 70.0); + + QDeclarativeItem *flow = canvas->rootObject()->findChild<QDeclarativeItem*>("flow"); + QVERIFY(flow); + QCOMPARE(flow->width(), 90.0); + QCOMPARE(flow->height(), 120.0); +} + +void tst_QDeclarativePositioners::test_flow_resize() +{ + QDeclarativeView *canvas = createView(SRCDIR "/data/flowtest.qml"); + + QDeclarativeItem *root = qobject_cast<QDeclarativeItem*>(canvas->rootObject()); + QVERIFY(root); + root->setWidth(125); + + QDeclarativeRectangle *one = canvas->rootObject()->findChild<QDeclarativeRectangle*>("one"); + QVERIFY(one != 0); + QDeclarativeRectangle *two = canvas->rootObject()->findChild<QDeclarativeRectangle*>("two"); + QVERIFY(two != 0); + QDeclarativeRectangle *three = canvas->rootObject()->findChild<QDeclarativeRectangle*>("three"); + QVERIFY(three != 0); + QDeclarativeRectangle *four = canvas->rootObject()->findChild<QDeclarativeRectangle*>("four"); + QVERIFY(four != 0); + QDeclarativeRectangle *five = canvas->rootObject()->findChild<QDeclarativeRectangle*>("five"); + QVERIFY(five != 0); + + QCOMPARE(one->x(), 0.0); + QCOMPARE(one->y(), 0.0); + QCOMPARE(two->x(), 50.0); + QCOMPARE(two->y(), 0.0); + QCOMPARE(three->x(), 70.0); + QCOMPARE(three->y(), 0.0); + QCOMPARE(four->x(), 0.0); + QCOMPARE(four->y(), 50.0); + QCOMPARE(five->x(), 50.0); + QCOMPARE(five->y(), 50.0); +} + QDeclarativeView *tst_QDeclarativePositioners::createView(const QString &filename) { QDeclarativeView *canvas = new QDeclarativeView(0); diff --git a/tests/auto/declarative/qdeclarativeproperty/data/TestType.qml b/tests/auto/declarative/qdeclarativeproperty/data/TestType.qml new file mode 100644 index 0000000..1dfb3e1 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeproperty/data/TestType.qml @@ -0,0 +1,6 @@ +import Qt 4.6 + +QtObject { + property int a: 10 +} + diff --git a/tests/auto/declarative/qdeclarativeproperty/data/readSynthesizedObject.qml b/tests/auto/declarative/qdeclarativeproperty/data/readSynthesizedObject.qml new file mode 100644 index 0000000..8085db2 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeproperty/data/readSynthesizedObject.qml @@ -0,0 +1,9 @@ +import Qt 4.6 + +QtObject { + property TestType test + + test: TestType { + property int b: 19 + } +} diff --git a/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro b/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro index 22e50cc..6910ccc 100644 --- a/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro +++ b/tests/auto/declarative/qdeclarativeproperty/qdeclarativeproperty.pro @@ -3,3 +3,8 @@ contains(QT_CONFIG,declarative): QT += declarative macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativeproperty.cpp + +DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp index 0333d98..7d51bb6 100644 --- a/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp +++ b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp @@ -43,9 +43,16 @@ #include <QtDeclarative/qdeclarativecomponent.h> #include <QtDeclarative/qdeclarativeproperty.h> #include <QtDeclarative/private/qdeclarativeproperty_p.h> -#include <private/qguard_p.h> #include <private/qdeclarativebinding_p.h> #include <QtGui/QLineEdit> +#include <QtCore/qfileinfo.h> +#include <QtCore/qdir.h> + +inline QUrl TEST_FILE(const QString &filename) +{ + QFileInfo fileInfo(__FILE__); + return QUrl::fromLocalFile(fileInfo.absoluteDir().filePath(QLatin1String("data/") + filename)); +} class MyQmlObject : public QObject { @@ -130,9 +137,9 @@ void tst_qdeclarativeproperty::qmlmetaproperty() { QDeclarativeProperty prop; - QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); + QWeakPointer<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); QVERIFY(binding != 0); - QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression()); + QWeakPointer<QDeclarativeExpression> expression(new QDeclarativeExpression()); QVERIFY(expression != 0); QObject *obj = new QObject; @@ -161,10 +168,10 @@ void tst_qdeclarativeproperty::qmlmetaproperty() QCOMPARE(prop.propertyTypeName(), (const char *)0); QVERIFY(prop.property().name() == 0); QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding.data()) == 0); QVERIFY(binding == 0); QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression.data()) == 0); QVERIFY(expression == 0); QCOMPARE(prop.index(), -1); QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); @@ -175,14 +182,15 @@ void tst_qdeclarativeproperty::qmlmetaproperty() class PropertyObject : public QObject { Q_OBJECT - Q_PROPERTY(int defaultProperty READ defaultProperty); - Q_PROPERTY(QRect rectProperty READ rectProperty); - Q_PROPERTY(QRect wrectProperty READ wrectProperty WRITE setWRectProperty); - Q_PROPERTY(QUrl url READ url WRITE setUrl); - Q_PROPERTY(int resettableProperty READ resettableProperty WRITE setResettableProperty RESET resetProperty); + Q_PROPERTY(int defaultProperty READ defaultProperty) + Q_PROPERTY(QRect rectProperty READ rectProperty) + Q_PROPERTY(QRect wrectProperty READ wrectProperty WRITE setWRectProperty) + Q_PROPERTY(QUrl url READ url WRITE setUrl) + Q_PROPERTY(int resettableProperty READ resettableProperty WRITE setResettableProperty RESET resetProperty) Q_PROPERTY(int propertyWithNotify READ propertyWithNotify WRITE setPropertyWithNotify NOTIFY oddlyNamedNotifySignal) + Q_PROPERTY(MyQmlObject *qmlObject READ qmlObject) - Q_CLASSINFO("DefaultProperty", "defaultProperty"); + Q_CLASSINFO("DefaultProperty", "defaultProperty") public: PropertyObject() : m_resetProperty(9) {} @@ -202,6 +210,7 @@ public: int propertyWithNotify() const { return m_propertyWithNotify; } void setPropertyWithNotify(int i) { m_propertyWithNotify = i; emit oddlyNamedNotifySignal(); } + MyQmlObject *qmlObject() { return &m_qmlObject; } signals: void clicked(); void oddlyNamedNotifySignal(); @@ -211,6 +220,7 @@ private: QRect m_rect; QUrl m_url; int m_propertyWithNotify; + MyQmlObject m_qmlObject; }; QML_DECLARE_TYPE(PropertyObject); @@ -223,9 +233,9 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object() { QDeclarativeProperty prop(&object); - QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); + QWeakPointer<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); QVERIFY(binding != 0); - QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression()); + QWeakPointer<QDeclarativeExpression> expression(new QDeclarativeExpression()); QVERIFY(expression != 0); QObject *obj = new QObject; @@ -254,10 +264,10 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object() QCOMPARE(prop.propertyTypeName(), (const char *)0); QVERIFY(prop.property().name() == 0); QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding.data()) == 0); QVERIFY(binding == 0); QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression.data()) == 0); QVERIFY(expression == 0); QCOMPARE(prop.index(), -1); QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); @@ -268,10 +278,10 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object() { QDeclarativeProperty prop(&dobject); - QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); - binding->setTarget(prop); + QWeakPointer<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); + binding.data()->setTarget(prop); QVERIFY(binding != 0); - QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression()); + QWeakPointer<QDeclarativeExpression> expression(new QDeclarativeExpression()); QVERIFY(expression != 0); QObject *obj = new QObject; @@ -294,18 +304,18 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object() QCOMPARE(prop.isDesignable(), true); QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), true); - QCOMPARE(prop.object(), &dobject); + QCOMPARE(prop.object(), qobject_cast<QObject*>(&dobject)); QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::Normal); QCOMPARE(prop.propertyType(), (int)QVariant::Int); QCOMPARE(prop.propertyTypeName(), "int"); QCOMPARE(QString(prop.property().name()), QString("defaultProperty")); QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); QTest::ignoreMessage(QtWarningMsg, "<Unknown File>:-1: Unable to assign null to int"); - QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding.data()) == 0); QVERIFY(binding != 0); - QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding.data()); QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression.data()) == 0); QVERIFY(expression == 0); QCOMPARE(prop.index(), dobject.metaObject()->indexOfProperty("defaultProperty")); QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); @@ -322,9 +332,9 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string() { QDeclarativeProperty prop(&object, QString("defaultProperty")); - QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); + QWeakPointer<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); QVERIFY(binding != 0); - QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression()); + QWeakPointer<QDeclarativeExpression> expression(new QDeclarativeExpression()); QVERIFY(expression != 0); QObject *obj = new QObject; @@ -353,10 +363,10 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string() QCOMPARE(prop.propertyTypeName(), (const char *)0); QVERIFY(prop.property().name() == 0); QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding.data()) == 0); QVERIFY(binding == 0); QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression.data()) == 0); QVERIFY(expression == 0); QCOMPARE(prop.index(), -1); QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); @@ -367,10 +377,10 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string() { QDeclarativeProperty prop(&dobject, QString("defaultProperty")); - QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); - binding->setTarget(prop); + QWeakPointer<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); + binding.data()->setTarget(prop); QVERIFY(binding != 0); - QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression()); + QWeakPointer<QDeclarativeExpression> expression(new QDeclarativeExpression()); QVERIFY(expression != 0); QObject *obj = new QObject; @@ -393,18 +403,18 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string() QCOMPARE(prop.isDesignable(), true); QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), true); - QCOMPARE(prop.object(), &dobject); + QCOMPARE(prop.object(), qobject_cast<QObject*>(&dobject)); QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::Normal); QCOMPARE(prop.propertyType(), (int)QVariant::Int); QCOMPARE(prop.propertyTypeName(), "int"); QCOMPARE(QString(prop.property().name()), QString("defaultProperty")); QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); QTest::ignoreMessage(QtWarningMsg, "<Unknown File>:-1: Unable to assign null to int"); - QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding.data()) == 0); QVERIFY(binding != 0); - QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding.data()); QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression.data()) == 0); QVERIFY(expression == 0); QCOMPARE(prop.index(), dobject.metaObject()->indexOfProperty("defaultProperty")); QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); @@ -415,10 +425,10 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string() { QDeclarativeProperty prop(&dobject, QString("onClicked")); - QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); - binding->setTarget(prop); + QWeakPointer<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); + binding.data()->setTarget(prop); QVERIFY(binding != 0); - QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression()); + QWeakPointer<QDeclarativeExpression> expression(new QDeclarativeExpression()); QVERIFY(expression != 0); QObject *obj = new QObject; @@ -441,18 +451,18 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string() QCOMPARE(prop.isDesignable(), false); QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), true); - QCOMPARE(prop.object(), &dobject); + QCOMPARE(prop.object(), qobject_cast<QObject*>(&dobject)); QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory); QCOMPARE(prop.propertyType(), 0); QCOMPARE(prop.propertyTypeName(), (const char *)0); QCOMPARE(prop.property().name(), (const char *)0); QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding.data()) == 0); QVERIFY(binding == 0); QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression.data()) == 0); QVERIFY(expression != 0); - QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == expression); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == expression.data()); QCOMPARE(prop.index(), dobject.metaObject()->indexOfMethod("clicked()")); QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); @@ -462,10 +472,10 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string() { QDeclarativeProperty prop(&dobject, QString("onPropertyWithNotifyChanged")); - QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); - binding->setTarget(prop); + QWeakPointer<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); + binding.data()->setTarget(prop); QVERIFY(binding != 0); - QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression()); + QWeakPointer<QDeclarativeExpression> expression(new QDeclarativeExpression()); QVERIFY(expression != 0); QObject *obj = new QObject; @@ -488,18 +498,18 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string() QCOMPARE(prop.isDesignable(), false); QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), true); - QCOMPARE(prop.object(), &dobject); + QCOMPARE(prop.object(), qobject_cast<QObject*>(&dobject)); QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory); QCOMPARE(prop.propertyType(), 0); QCOMPARE(prop.propertyTypeName(), (const char *)0); QCOMPARE(prop.property().name(), (const char *)0); QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding.data()) == 0); QVERIFY(binding == 0); QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression.data()) == 0); QVERIFY(expression != 0); - QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == expression); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == expression.data()); QCOMPARE(prop.index(), dobject.metaObject()->indexOfMethod("oddlyNamedNotifySignal()")); QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); @@ -515,9 +525,9 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_context() { QDeclarativeProperty prop(&object, engine.rootContext()); - QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); + QWeakPointer<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); QVERIFY(binding != 0); - QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression()); + QWeakPointer<QDeclarativeExpression> expression(new QDeclarativeExpression()); QVERIFY(expression != 0); QObject *obj = new QObject; @@ -546,10 +556,10 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_context() QCOMPARE(prop.propertyTypeName(), (const char *)0); QVERIFY(prop.property().name() == 0); QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding.data()) == 0); QVERIFY(binding == 0); QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression.data()) == 0); QVERIFY(expression == 0); QCOMPARE(prop.index(), -1); QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); @@ -560,10 +570,10 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_context() { QDeclarativeProperty prop(&dobject, engine.rootContext()); - QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); - binding->setTarget(prop); + QWeakPointer<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); + binding.data()->setTarget(prop); QVERIFY(binding != 0); - QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression()); + QWeakPointer<QDeclarativeExpression> expression(new QDeclarativeExpression()); QVERIFY(expression != 0); QObject *obj = new QObject; @@ -586,18 +596,18 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_context() QCOMPARE(prop.isDesignable(), true); QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), true); - QCOMPARE(prop.object(), &dobject); + QCOMPARE(prop.object(), qobject_cast<QObject*>(&dobject)); QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::Normal); QCOMPARE(prop.propertyType(), (int)QVariant::Int); QCOMPARE(prop.propertyTypeName(), "int"); QCOMPARE(QString(prop.property().name()), QString("defaultProperty")); QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); QTest::ignoreMessage(QtWarningMsg, "<Unknown File>:-1: Unable to assign null to int"); - QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding.data()) == 0); QVERIFY(binding != 0); - QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding.data()); QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression.data()) == 0); QVERIFY(expression == 0); QCOMPARE(prop.index(), dobject.metaObject()->indexOfProperty("defaultProperty")); QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); @@ -614,9 +624,9 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string_context() { QDeclarativeProperty prop(&object, QString("defaultProperty"), engine.rootContext()); - QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); + QWeakPointer<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); QVERIFY(binding != 0); - QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression()); + QWeakPointer<QDeclarativeExpression> expression(new QDeclarativeExpression()); QVERIFY(expression != 0); QObject *obj = new QObject; @@ -645,10 +655,10 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string_context() QCOMPARE(prop.propertyTypeName(), (const char *)0); QVERIFY(prop.property().name() == 0); QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding.data()) == 0); QVERIFY(binding == 0); QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression.data()) == 0); QVERIFY(expression == 0); QCOMPARE(prop.index(), -1); QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); @@ -659,10 +669,10 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string_context() { QDeclarativeProperty prop(&dobject, QString("defaultProperty"), engine.rootContext()); - QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); - binding->setTarget(prop); + QWeakPointer<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); + binding.data()->setTarget(prop); QVERIFY(binding != 0); - QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression()); + QWeakPointer<QDeclarativeExpression> expression(new QDeclarativeExpression()); QVERIFY(expression != 0); QObject *obj = new QObject; @@ -685,18 +695,18 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string_context() QCOMPARE(prop.isDesignable(), true); QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), true); - QCOMPARE(prop.object(), &dobject); + QCOMPARE(prop.object(), qobject_cast<QObject*>(&dobject)); QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::Normal); QCOMPARE(prop.propertyType(), (int)QVariant::Int); QCOMPARE(prop.propertyTypeName(), "int"); QCOMPARE(QString(prop.property().name()), QString("defaultProperty")); QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); QTest::ignoreMessage(QtWarningMsg, "<Unknown File>:-1: Unable to assign null to int"); - QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding.data()) == 0); QVERIFY(binding != 0); - QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding); + QVERIFY(QDeclarativePropertyPrivate::binding(prop) == binding.data()); QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression.data()) == 0); QVERIFY(expression == 0); QCOMPARE(prop.index(), dobject.metaObject()->indexOfProperty("defaultProperty")); QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); @@ -707,10 +717,10 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string_context() { QDeclarativeProperty prop(&dobject, QString("onClicked"), engine.rootContext()); - QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); - binding->setTarget(prop); + QWeakPointer<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); + binding.data()->setTarget(prop); QVERIFY(binding != 0); - QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression()); + QWeakPointer<QDeclarativeExpression> expression(new QDeclarativeExpression()); QVERIFY(expression != 0); QObject *obj = new QObject; @@ -733,18 +743,18 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string_context() QCOMPARE(prop.isDesignable(), false); QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), true); - QCOMPARE(prop.object(), &dobject); + QCOMPARE(prop.object(), qobject_cast<QObject*>(&dobject)); QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory); QCOMPARE(prop.propertyType(), 0); QCOMPARE(prop.propertyTypeName(), (const char *)0); QCOMPARE(prop.property().name(), (const char *)0); QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding.data()) == 0); QVERIFY(binding == 0); QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression.data()) == 0); QVERIFY(expression != 0); - QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == expression); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == expression.data()); QCOMPARE(prop.index(), dobject.metaObject()->indexOfMethod("clicked()")); QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); @@ -754,10 +764,10 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string_context() { QDeclarativeProperty prop(&dobject, QString("onPropertyWithNotifyChanged"), engine.rootContext()); - QGuard<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); - binding->setTarget(prop); + QWeakPointer<QDeclarativeBinding> binding(new QDeclarativeBinding(QLatin1String("null"), 0, engine.rootContext())); + binding.data()->setTarget(prop); QVERIFY(binding != 0); - QGuard<QDeclarativeExpression> expression(new QDeclarativeExpression()); + QWeakPointer<QDeclarativeExpression> expression(new QDeclarativeExpression()); QVERIFY(expression != 0); QObject *obj = new QObject; @@ -780,18 +790,18 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string_context() QCOMPARE(prop.isDesignable(), false); QCOMPARE(prop.isResettable(), false); QCOMPARE(prop.isValid(), true); - QCOMPARE(prop.object(), &dobject); + QCOMPARE(prop.object(), qobject_cast<QObject*>(&dobject)); QCOMPARE(prop.propertyTypeCategory(), QDeclarativeProperty::InvalidCategory); QCOMPARE(prop.propertyType(), 0); QCOMPARE(prop.propertyTypeName(), (const char *)0); QCOMPARE(prop.property().name(), (const char *)0); QVERIFY(QDeclarativePropertyPrivate::binding(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding) == 0); + QVERIFY(QDeclarativePropertyPrivate::setBinding(prop, binding.data()) == 0); QVERIFY(binding == 0); QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == 0); - QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression) == 0); + QVERIFY(QDeclarativePropertyPrivate::setSignalExpression(prop, expression.data()) == 0); QVERIFY(expression != 0); - QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == expression); + QVERIFY(QDeclarativePropertyPrivate::signalExpression(prop) == expression.data()); QCOMPARE(prop.index(), dobject.metaObject()->indexOfMethod("oddlyNamedNotifySignal()")); QCOMPARE(QDeclarativePropertyPrivate::valueTypeCoreIndex(prop), -1); @@ -953,6 +963,32 @@ void tst_qdeclarativeproperty::read() QCOMPARE(p.read(), QVariant()); } + // Object property + { + PropertyObject o; + QDeclarativeProperty p(&o, "qmlObject"); + QCOMPARE(p.propertyTypeCategory(), QDeclarativeProperty::Object); + QCOMPARE(p.propertyType(), qMetaTypeId<MyQmlObject*>()); + QVariant v = p.read(); + QVERIFY(v.userType() == QMetaType::QObjectStar); + QVERIFY(qvariant_cast<QObject *>(v) == o.qmlObject()); + } + { + QDeclarativeComponent component(&engine, TEST_FILE("readSynthesizedObject.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QDeclarativeProperty p(object, "test", &engine); + + QCOMPARE(p.propertyTypeCategory(), QDeclarativeProperty::Object); + QVERIFY(p.propertyType() != QMetaType::QObjectStar); + + QVariant v = p.read(); + QVERIFY(v.userType() == QMetaType::QObjectStar); + QCOMPARE(qvariant_cast<QObject *>(v)->property("a").toInt(), 10); + QCOMPARE(qvariant_cast<QObject *>(v)->property("b").toInt(), 19); + } + // Attached property { QDeclarativeComponent component(&engine); @@ -1217,7 +1253,7 @@ void tst_qdeclarativeproperty::writeObjectToList() QDeclarativeProperty prop(container, "children"); prop.write(qVariantFromValue(object)); QCOMPARE(list.count(), 1); - QCOMPARE(list.at(0), object); + QCOMPARE(list.at(0), qobject_cast<QObject*>(object)); } Q_DECLARE_METATYPE(QList<QObject *>); @@ -1311,9 +1347,9 @@ void tst_qdeclarativeproperty::copy() void tst_qdeclarativeproperty::initTestCase() { - QML_REGISTER_TYPE(Test,1,0,MyQmlObject,MyQmlObject); - QML_REGISTER_TYPE(Test,1,0,PropertyObject,PropertyObject); - QML_REGISTER_TYPE(Test,1,0,MyContainer,MyContainer); + qmlRegisterType<MyQmlObject>("Test",1,0,"MyQmlObject"); + qmlRegisterType<PropertyObject>("Test",1,0,"PropertyObject"); + qmlRegisterType<MyContainer>("Test",1,0,"MyContainer"); } diff --git a/tests/auto/declarative/qdeclarativepropertymap/qdeclarativepropertymap.pro b/tests/auto/declarative/qdeclarativepropertymap/qdeclarativepropertymap.pro index aeccf9b..3c0f7b3 100644 --- a/tests/auto/declarative/qdeclarativepropertymap/qdeclarativepropertymap.pro +++ b/tests/auto/declarative/qdeclarativepropertymap/qdeclarativepropertymap.pro @@ -3,3 +3,6 @@ contains(QT_CONFIG,declarative): QT += declarative macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativepropertymap.cpp + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativepropertymap/tst_qdeclarativepropertymap.cpp b/tests/auto/declarative/qdeclarativepropertymap/tst_qdeclarativepropertymap.cpp index 22c5581..f1d3bf0 100644 --- a/tests/auto/declarative/qdeclarativepropertymap/tst_qdeclarativepropertymap.cpp +++ b/tests/auto/declarative/qdeclarativepropertymap/tst_qdeclarativepropertymap.cpp @@ -59,6 +59,8 @@ private slots: void clear(); void changed(); void count(); + + void crashBug(); }; void tst_QDeclarativePropertyMap::insert() @@ -123,7 +125,7 @@ void tst_QDeclarativePropertyMap::clear() void tst_QDeclarativePropertyMap::changed() { QDeclarativePropertyMap map; - QSignalSpy spy(&map, SIGNAL(valueChanged(const QString&))); + QSignalSpy spy(&map, SIGNAL(valueChanged(const QString&, const QVariant&))); map.insert(QLatin1String("key1"),100); map.insert(QLatin1String("key2"),200); QCOMPARE(spy.count(), 0); @@ -136,7 +138,7 @@ void tst_QDeclarativePropertyMap::changed() QDeclarativeContext *ctxt = engine.rootContext(); ctxt->setContextProperty(QLatin1String("testdata"), &map); QDeclarativeComponent component(&engine); - component.setData("import Qt 4.6\nText { text: { testdata.key1 = 'Hello World'; 'X' } }", + component.setData("import Qt 4.7\nText { text: { testdata.key1 = 'Hello World'; 'X' } }", QUrl::fromLocalFile("")); QVERIFY(component.isReady()); QDeclarativeText *txt = qobject_cast<QDeclarativeText*>(component.create()); @@ -144,7 +146,9 @@ void tst_QDeclarativePropertyMap::changed() QCOMPARE(txt->text(), QString('X')); QCOMPARE(spy.count(), 1); QList<QVariant> arguments = spy.takeFirst(); + QCOMPARE(arguments.count(), 2); QCOMPARE(arguments.at(0).toString(),QLatin1String("key1")); + QCOMPARE(arguments.at(1).value<QVariant>(),QVariant("Hello World")); QCOMPARE(map.value(QLatin1String("key1")), QVariant("Hello World")); } @@ -166,6 +170,20 @@ void tst_QDeclarativePropertyMap::count() QCOMPARE(map.size(), map.count()); } +void tst_QDeclarativePropertyMap::crashBug() +{ + QDeclarativePropertyMap map; + + QDeclarativeEngine engine; + QDeclarativeContext context(&engine); + context.setContextProperty("map", &map); + + QDeclarativeComponent c(&engine); + c.setData("import Qt 4.7\nBinding { target: map; property: \"myProp\"; value: 10 + 23 }",QUrl()); + QObject *obj = c.create(&context); + delete obj; +} + QTEST_MAIN(tst_QDeclarativePropertyMap) #include "tst_qdeclarativepropertymap.moc" diff --git a/tests/auto/declarative/qdeclarativeqt/data/closestangle.qml b/tests/auto/declarative/qdeclarativeqt/data/closestangle.qml deleted file mode 100644 index b5f7fc6..0000000 --- a/tests/auto/declarative/qdeclarativeqt/data/closestangle.qml +++ /dev/null @@ -1,12 +0,0 @@ -import Qt 4.6 - -QtObject { - property var testSame: Qt.closestAngle(0,1) - property var testLess: Qt.closestAngle(0,-359) - property var testMore: Qt.closestAngle(0,361) - property var testFail: Qt.closestAngle(0) - property var test5: Qt.closestAngle(0,1,2) - property var test6: Qt.closestAngle(123.45465768,1.11) - property var test7: Qt.closestAngle(-3.1415,1.11) -} - diff --git a/tests/auto/declarative/qdeclarativeqt/data/createQmlObject.qml b/tests/auto/declarative/qdeclarativeqt/data/createQmlObject.qml index 9150782..54a3e7d 100644 --- a/tests/auto/declarative/qdeclarativeqt/data/createQmlObject.qml +++ b/tests/auto/declarative/qdeclarativeqt/data/createQmlObject.qml @@ -7,7 +7,7 @@ Item { property bool incorrectArgCount2: false property bool emptyArg: false property bool noParent: false - property bool notReady: false + property bool notAvailable: false property bool runtimeError: false property bool errors: false @@ -20,7 +20,7 @@ Item { emptyArg = (createQmlObject("", root) == null); errors = (createQmlObject("import Qt 4.6\nQtObject{\nproperty int test: 13\nproperty int test: 13\n}", root, "main.qml") == null); noParent = (createQmlObject("import Qt 4.6\nQtObject{\nproperty int test: 13}", 0) == null); - notReady = (createQmlObject("import Qt 4.6\nQtObject{\nBlah{}\n}", root, "http://www.example.com/main.qml") == null); + notAvailable = (createQmlObject("import Qt 4.6\nQtObject{Blah{}}", root) == null); runtimeError = (createQmlObject("import Qt 4.6\nQtObject{property int test\nonTestChanged: QtObject{}\n}", root) == null); var o = createQmlObject("import Qt 4.6\nQtObject{\nproperty int test: 13\n}", root); diff --git a/tests/auto/declarative/qdeclarativeqt/data/darker.qml b/tests/auto/declarative/qdeclarativeqt/data/darker.qml index 2df067e..b265a0e 100644 --- a/tests/auto/declarative/qdeclarativeqt/data/darker.qml +++ b/tests/auto/declarative/qdeclarativeqt/data/darker.qml @@ -1,11 +1,11 @@ import Qt 4.6 QtObject { - property var test1: Qt.darker(Qt.rgba(1, 0.8, 0.3)) - property var test2: Qt.darker() - property var test3: Qt.darker(Qt.rgba(1, 0.8, 0.3), 10) - property var test4: Qt.darker("red"); - property var test5: Qt.darker("perfectred"); // Non-existant color - property var test6: Qt.darker(10); + property variant test1: Qt.darker(Qt.rgba(1, 0.8, 0.3)) + property variant test2: Qt.darker() + property variant test3: Qt.darker(Qt.rgba(1, 0.8, 0.3), 10) + property variant test4: Qt.darker("red"); + property variant test5: Qt.darker("perfectred"); // Non-existant color + property variant test6: Qt.darker(10); } diff --git a/tests/auto/declarative/qdeclarativeqt/data/formatting.qml b/tests/auto/declarative/qdeclarativeqt/data/formatting.qml new file mode 100644 index 0000000..4cf0602 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeqt/data/formatting.qml @@ -0,0 +1,19 @@ +import Qt 4.6 + +QtObject { + property date date1: "2008-12-24" + property string test1: Qt.formatDate(date1) + property string test2: Qt.formatDate(date1, Qt.DefaultLocaleLongDate) + property string test3: Qt.formatDate(date1, "ddd MMMM d yy") + + property variant time1: new Date(0,0,0,14,15,38,200) + property string test4: Qt.formatTime(time1) + property string test5: Qt.formatTime(time1, Qt.DefaultLocaleLongDate) + property string test6: Qt.formatTime(time1, "H:m:s a") + property string test7: Qt.formatTime(time1, "hh:mm:ss.zzz") + + property variant dateTime1: new Date(1978,2,4,9,13,54) + property string test8: Qt.formatDateTime(dateTime1) + property string test9: Qt.formatDateTime(dateTime1, Qt.DefaultLocaleLongDate) + property string test10: Qt.formatDateTime(dateTime1, "M/d/yy H:m:s a") +} diff --git a/tests/auto/declarative/qdeclarativeqt/data/isQtObject.qml b/tests/auto/declarative/qdeclarativeqt/data/isQtObject.qml new file mode 100644 index 0000000..d986492 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeqt/data/isQtObject.qml @@ -0,0 +1,14 @@ +import Qt 4.6 + +QtObject { + id: root + + property QtObject nullObject + + property bool test1: Qt.isQtObject(root) + property bool test2: Qt.isQtObject(nullObject) + property bool test3: Qt.isQtObject(10) + property bool test4: Qt.isQtObject(null) + property bool test5: Qt.isQtObject({ a: 10, b: 11 }) +} + diff --git a/tests/auto/declarative/qdeclarativeqt/data/lighter.qml b/tests/auto/declarative/qdeclarativeqt/data/lighter.qml index 4e0c431..2d2b835 100644 --- a/tests/auto/declarative/qdeclarativeqt/data/lighter.qml +++ b/tests/auto/declarative/qdeclarativeqt/data/lighter.qml @@ -1,10 +1,10 @@ import Qt 4.6 QtObject { - property var test1: Qt.lighter(Qt.rgba(1, 0.8, 0.3)) - property var test2: Qt.lighter() - property var test3: Qt.lighter(Qt.rgba(1, 0.8, 0.3), 10) - property var test4: Qt.lighter("red"); - property var test5: Qt.lighter("perfectred"); // Non-existant color - property var test6: Qt.lighter(10); + property variant test1: Qt.lighter(Qt.rgba(1, 0.8, 0.3)) + property variant test2: Qt.lighter() + property variant test3: Qt.lighter(Qt.rgba(1, 0.8, 0.3), 10) + property variant test4: Qt.lighter("red"); + property variant test5: Qt.lighter("perfectred"); // Non-existant color + property variant test6: Qt.lighter(10); } diff --git a/tests/auto/declarative/qdeclarativeqt/data/openUrlExternally.qml b/tests/auto/declarative/qdeclarativeqt/data/openUrlExternally.qml new file mode 100644 index 0000000..70bd74d --- /dev/null +++ b/tests/auto/declarative/qdeclarativeqt/data/openUrlExternally.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +QtObject { + Component.onCompleted: Qt.openUrlExternally("test:url") +} diff --git a/tests/auto/declarative/qdeclarativeqt/data/point.qml b/tests/auto/declarative/qdeclarativeqt/data/point.qml index c383beb..1054ac9 100644 --- a/tests/auto/declarative/qdeclarativeqt/data/point.qml +++ b/tests/auto/declarative/qdeclarativeqt/data/point.qml @@ -1,9 +1,9 @@ import Qt 4.6 QtObject { - property var test1: Qt.point(19, 34); - property var test2: Qt.point(-3, 109.2); - property var test3: Qt.point(-3); - property var test4: Qt.point(-3, 109.2, 1); + property variant test1: Qt.point(19, 34); + property variant test2: Qt.point(-3, 109.2); + property variant test3: Qt.point(-3); + property variant test4: Qt.point(-3, 109.2, 1); } diff --git a/tests/auto/declarative/qdeclarativeqt/data/rect.qml b/tests/auto/declarative/qdeclarativeqt/data/rect.qml index 82b6428..e008656 100644 --- a/tests/auto/declarative/qdeclarativeqt/data/rect.qml +++ b/tests/auto/declarative/qdeclarativeqt/data/rect.qml @@ -1,9 +1,9 @@ import Qt 4.6 QtObject { - property var test1: Qt.rect(10, 13, 100, 109) - property var test2: Qt.rect(-10, 13, 100, 109.6) - property var test3: Qt.rect(10, 13); - property var test4: Qt.rect(10, 13, 100, 109, 10) - property var test5: Qt.rect(10, 13, 100, -109) + property variant test1: Qt.rect(10, 13, 100, 109) + property variant test2: Qt.rect(-10, 13, 100, 109.6) + property variant test3: Qt.rect(10, 13); + property variant test4: Qt.rect(10, 13, 100, 109, 10) + property variant test5: Qt.rect(10, 13, 100, -109) } diff --git a/tests/auto/declarative/qdeclarativeqt/data/size.qml b/tests/auto/declarative/qdeclarativeqt/data/size.qml index 05b0317..93577f2 100644 --- a/tests/auto/declarative/qdeclarativeqt/data/size.qml +++ b/tests/auto/declarative/qdeclarativeqt/data/size.qml @@ -1,11 +1,11 @@ import Qt 4.6 QtObject { - property var test1: Qt.size(19, 34); - property var test2: Qt.size(3, 109.2); - property var test3: Qt.size(-3, 10); - property var test4: Qt.size(3); - property var test5: Qt.size(3, 109.2, 1); + property variant test1: Qt.size(19, 34); + property variant test2: Qt.size(3, 109.2); + property variant test3: Qt.size(-3, 10); + property variant test4: Qt.size(3); + property variant test5: Qt.size(3, 109.2, 1); } diff --git a/tests/auto/declarative/qdeclarativeqt/data/tint.qml b/tests/auto/declarative/qdeclarativeqt/data/tint.qml index da8afe2..478245f 100644 --- a/tests/auto/declarative/qdeclarativeqt/data/tint.qml +++ b/tests/auto/declarative/qdeclarativeqt/data/tint.qml @@ -3,7 +3,7 @@ import Qt 4.6 QtObject { property color test1: Qt.tint("red", "blue"); property color test2: Qt.tint(Qt.rgba(1, 0, 0), Qt.rgba(0, 0, 0, 0)); - property color test3: Qt.tint("red", Qt.rgba(0, 0, 1, 0.5)); // XXX - what should this be? + property color test3: Qt.tint("red", Qt.rgba(0, 0, 1, 0.5)); property color test4: Qt.tint("red", Qt.rgba(0, 0, 1, 0.5), 10); property color test5: Qt.tint("red") } diff --git a/tests/auto/declarative/qdeclarativeqt/data/vector.qml b/tests/auto/declarative/qdeclarativeqt/data/vector.qml index a471c7a..16716db 100644 --- a/tests/auto/declarative/qdeclarativeqt/data/vector.qml +++ b/tests/auto/declarative/qdeclarativeqt/data/vector.qml @@ -1,8 +1,8 @@ import Qt 4.6 QtObject { - property var test1: Qt.vector3d(1, 0, 0.9); - property var test2: Qt.vector3d(102, -10, -982.1); - property var test3: Qt.vector3d(102, -10); - property var test4: Qt.vector3d(102, -10, -982.1, 10); + property variant test1: Qt.vector3d(1, 0, 0.9); + property variant test2: Qt.vector3d(102, -10, -982.1); + property variant test3: Qt.vector3d(102, -10); + property variant test4: Qt.vector3d(102, -10, -982.1, 10); } diff --git a/tests/auto/declarative/qdeclarativeqt/qdeclarativeqt.pro b/tests/auto/declarative/qdeclarativeqt/qdeclarativeqt.pro index aff00ad..10e10a3 100644 --- a/tests/auto/declarative/qdeclarativeqt/qdeclarativeqt.pro +++ b/tests/auto/declarative/qdeclarativeqt/qdeclarativeqt.pro @@ -7,3 +7,6 @@ DEFINES += SRCDIR=\\\"$$PWD\\\" # QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage # LIBS += -lgcov + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp index 9ec6872..98f1200 100644 --- a/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp +++ b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp @@ -44,6 +44,7 @@ #include <QDeclarativeEngine> #include <QFileInfo> #include <QDeclarativeComponent> +#include <QDesktopServices> #include <QDir> #include <QVector3D> #include <QCryptographicHash> @@ -66,13 +67,13 @@ private slots: void lighter(); void darker(); void tint(); - void closestAngle(); - void playSound(); void openUrlExternally(); void md5(); void createComponent(); void createQmlObject(); void consoleLog(); + void formatting(); + void isQtObject(); private: QDeclarativeEngine engine; @@ -254,41 +255,39 @@ void tst_qdeclarativeqt::tint() QCOMPARE(qvariant_cast<QColor>(object->property("test1")), QColor::fromRgbF(0, 0, 1)); QCOMPARE(qvariant_cast<QColor>(object->property("test2")), QColor::fromRgbF(1, 0, 0)); - QEXPECT_FAIL("", "QT-2424",Continue); - QCOMPARE(qvariant_cast<QColor>(object->property("test3")), QColor::fromRgbF(1, 0, 0)); + QColor test3 = qvariant_cast<QColor>(object->property("test3")); + QCOMPARE(test3.rgba(), 0xFF7F0080); QCOMPARE(qvariant_cast<QColor>(object->property("test4")), QColor()); QCOMPARE(qvariant_cast<QColor>(object->property("test5")), QColor()); delete object; } -void tst_qdeclarativeqt::closestAngle() +class MyUrlHandler : public QObject { - QDeclarativeComponent component(&engine, TEST_FILE("closestangle.qml")); - QObject *object = component.create(); - QVERIFY(object != 0); - - QCOMPARE(qvariant_cast<qreal>(object->property("testSame")), 1.0); - QCOMPARE(qvariant_cast<qreal>(object->property("testLess")), 1.0); - QCOMPARE(qvariant_cast<qreal>(object->property("testMore")), 1.0); - QCOMPARE(qvariant_cast<qreal>(object->property("testFail")), 0.0); - QCOMPARE(qvariant_cast<qreal>(object->property("test5")), 1.0); - QCOMPARE(qvariant_cast<qreal>(object->property("test6")), 1.11); - QCOMPARE(qvariant_cast<qreal>(object->property("test7")), 1.11); - - delete object; -} + Q_OBJECT +public: + MyUrlHandler() : called(0) { } + int called; + QUrl last; -void tst_qdeclarativeqt::playSound() -{ - QEXPECT_FAIL("", "How do we test this?", Abort); - QVERIFY(false); -} +public slots: + void noteCall(const QUrl &url) { called++; last = url; } +}; void tst_qdeclarativeqt::openUrlExternally() { - QEXPECT_FAIL("", "How do we test this?", Abort); - QVERIFY(false); + MyUrlHandler handler; + + QDesktopServices::setUrlHandler("test", &handler, "noteCall"); + + QDeclarativeComponent component(&engine, TEST_FILE("openUrlExternally.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + QCOMPARE(handler.called,1); + QCOMPARE(handler.last, QUrl("test:url")); + + QDesktopServices::unsetUrlHandler("test"); } void tst_qdeclarativeqt::md5() @@ -325,15 +324,17 @@ void tst_qdeclarativeqt::createQmlObject() QString warning1 = "QDeclarativeEngine::createQmlObject():"; QString warning2 = " " + TEST_FILE("main.qml").toString() + ":4:1: Duplicate property name"; - QString warning3 = "QDeclarativeEngine::createQmlObject(): Component is not ready"; - QString warning4 = "QDeclarativeEngine::createQmlObject():"; - QString warning5 = " " + TEST_FILE("inline").toString() + ":3: Cannot assign object type QObject with no default method"; + QString warning3 = "QDeclarativeEngine::createQmlObject():"; + QString warning4 = " " + TEST_FILE("inline").toString() + ":2:10: Blah is not a type"; + QString warning5 = "QDeclarativeEngine::createQmlObject():"; + QString warning6 = " " + TEST_FILE("inline").toString() + ":3: Cannot assign object type QObject with no default method"; QTest::ignoreMessage(QtWarningMsg, qPrintable(warning1)); QTest::ignoreMessage(QtWarningMsg, qPrintable(warning2)); QTest::ignoreMessage(QtWarningMsg, qPrintable(warning3)); QTest::ignoreMessage(QtWarningMsg, qPrintable(warning4)); QTest::ignoreMessage(QtWarningMsg, qPrintable(warning5)); + QTest::ignoreMessage(QtWarningMsg, qPrintable(warning6)); QObject *object = component.create(); QVERIFY(object != 0); @@ -343,7 +344,7 @@ void tst_qdeclarativeqt::createQmlObject() QCOMPARE(object->property("emptyArg").toBool(), true); QCOMPARE(object->property("errors").toBool(), true); QCOMPARE(object->property("noParent").toBool(), true); - QCOMPARE(object->property("notReady").toBool(), true); + QCOMPARE(object->property("notAvailable").toBool(), true); QCOMPARE(object->property("runtimeError").toBool(), true); QCOMPARE(object->property("success").toBool(), true); @@ -364,6 +365,49 @@ void tst_qdeclarativeqt::consoleLog() delete object; } +void tst_qdeclarativeqt::formatting() +{ + QDeclarativeComponent component(&engine, TEST_FILE("formatting.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QDate date1(2008,12,24); + QCOMPARE(object->property("date1").toDate(), date1); + QCOMPARE(object->property("test1").toString(), date1.toString(Qt::DefaultLocaleShortDate)); + QCOMPARE(object->property("test2").toString(), date1.toString(Qt::DefaultLocaleLongDate)); + QCOMPARE(object->property("test3").toString(), date1.toString("ddd MMMM d yy")); + + QTime time1(14,15,38,200); + QCOMPARE(object->property("time1").toTime(), time1); + QCOMPARE(object->property("test4").toString(), time1.toString(Qt::DefaultLocaleShortDate)); + QCOMPARE(object->property("test5").toString(), time1.toString(Qt::DefaultLocaleLongDate)); + QCOMPARE(object->property("test6").toString(), time1.toString("H:m:s a")); + QCOMPARE(object->property("test7").toString(), time1.toString("hh:mm:ss.zzz")); + + QDateTime dateTime1(QDate(1978,03,04),QTime(9,13,54)); + QCOMPARE(object->property("dateTime1").toDateTime(),dateTime1); + QCOMPARE(object->property("test8").toString(), dateTime1.toString(Qt::DefaultLocaleShortDate)); + QCOMPARE(object->property("test9").toString(), dateTime1.toString(Qt::DefaultLocaleLongDate)); + QCOMPARE(object->property("test10").toString(), dateTime1.toString("M/d/yy H:m:s a")); + + delete object; +} + +void tst_qdeclarativeqt::isQtObject() +{ + QDeclarativeComponent component(&engine, TEST_FILE("isQtObject.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test1").toBool(), true); + QCOMPARE(object->property("test2").toBool(), false); + QCOMPARE(object->property("test3").toBool(), false); + QCOMPARE(object->property("test4").toBool(), false); + QCOMPARE(object->property("test5").toBool(), false); + + delete object; +} + QTEST_MAIN(tst_qdeclarativeqt) #include "tst_qdeclarativeqt.moc" diff --git a/tests/auto/declarative/qdeclarativerepeater/data/itemlist.qml b/tests/auto/declarative/qdeclarativerepeater/data/itemlist.qml index fc6b34c..d74b2dc 100644 --- a/tests/auto/declarative/qdeclarativerepeater/data/itemlist.qml +++ b/tests/auto/declarative/qdeclarativerepeater/data/itemlist.qml @@ -21,17 +21,17 @@ Rectangle { objectName: "itemModel" Rectangle { objectName: "item1" - height: view.height; width: view.width; color: "#FFFEF0" + height: 50; width: 100; color: "#FFFEF0" Text { objectName: "text1"; text: "index: " + parent.VisualItemModel.index; font.bold: true; anchors.centerIn: parent } } Rectangle { objectName: "item2" - height: view.height; width: view.width; color: "#F0FFF7" + height: 50; width: 100; color: "#F0FFF7" Text { objectName: "text2"; text: "index: " + parent.VisualItemModel.index; font.bold: true; anchors.centerIn: parent } } Rectangle { objectName: "item3" - height: view.height; width: view.width; color: "#F4F0FF" + height: 50; width: 100; color: "#F4F0FF" Text { objectName: "text3"; text: "index: " + parent.VisualItemModel.index; font.bold: true; anchors.centerIn: parent } } } @@ -41,8 +41,6 @@ Rectangle { Repeater { id: view objectName: "repeater" - anchors.fill: parent - anchors.bottomMargin: 30 model: testObject.useModel ? itemModel : 0 } } diff --git a/tests/auto/declarative/qdeclarativerepeater/data/properties.qml b/tests/auto/declarative/qdeclarativerepeater/data/properties.qml index 550ce8d..8c9f88e 100644 --- a/tests/auto/declarative/qdeclarativerepeater/data/properties.qml +++ b/tests/auto/declarative/qdeclarativerepeater/data/properties.qml @@ -8,4 +8,4 @@ Row { text: "I'm item " + index } } -}
\ No newline at end of file +} diff --git a/tests/auto/declarative/qdeclarativerepeater/data/repeater.qml b/tests/auto/declarative/qdeclarativerepeater/data/repeater1.qml index 7d83230..7d83230 100644 --- a/tests/auto/declarative/qdeclarativerepeater/data/repeater.qml +++ b/tests/auto/declarative/qdeclarativerepeater/data/repeater1.qml diff --git a/tests/auto/declarative/qdeclarativerepeater/qdeclarativerepeater.pro b/tests/auto/declarative/qdeclarativerepeater/qdeclarativerepeater.pro index 132123a..abd36e0 100644 --- a/tests/auto/declarative/qdeclarativerepeater/qdeclarativerepeater.pro +++ b/tests/auto/declarative/qdeclarativerepeater/qdeclarativerepeater.pro @@ -6,3 +6,5 @@ SOURCES += tst_qdeclarativerepeater.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test diff --git a/tests/auto/declarative/qdeclarativerepeater/tst_qdeclarativerepeater.cpp b/tests/auto/declarative/qdeclarativerepeater/tst_qdeclarativerepeater.cpp index 7a97e60..8be7d80 100644 --- a/tests/auto/declarative/qdeclarativerepeater/tst_qdeclarativerepeater.cpp +++ b/tests/auto/declarative/qdeclarativerepeater/tst_qdeclarativerepeater.cpp @@ -109,7 +109,7 @@ public: setRoleNames(roles); } - int rowCount(const QModelIndex &parent=QModelIndex()) const { return list.count(); } + int rowCount(const QModelIndex &parent=QModelIndex()) const { Q_UNUSED(parent); return list.count(); } QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const { QVariant rv; if (role == Name) @@ -181,6 +181,7 @@ void tst_QDeclarativeRepeater::numberModel() QMetaObject::invokeMethod(canvas->rootObject(), "checkProperties"); QVERIFY(testObject->error() == false); + delete testObject; delete canvas; } @@ -204,6 +205,9 @@ void tst_QDeclarativeRepeater::objectList() QVERIFY(repeater != 0); QCOMPARE(repeater->property("errors").toInt(), 0);//If this fails either they are out of order or can't find the object's data QCOMPARE(repeater->property("instantiated").toInt(), 100); + + qDeleteAll(data); + delete canvas; } /* @@ -224,7 +228,7 @@ void tst_QDeclarativeRepeater::stringList() QDeclarativeContext *ctxt = canvas->rootContext(); ctxt->setContextProperty("testData", data); - canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/repeater.qml")); + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/repeater1.qml")); qApp->processEvents(); QDeclarativeRepeater *repeater = findItem<QDeclarativeRepeater>(canvas->rootObject(), "repeater"); @@ -293,6 +297,9 @@ void tst_QDeclarativeRepeater::dataModel() testModel.removeItem(2); QCOMPARE(container->childItems().count(), 4); + + delete testObject; + delete canvas; } void tst_QDeclarativeRepeater::itemModel() @@ -323,6 +330,7 @@ void tst_QDeclarativeRepeater::itemModel() QVERIFY(qobject_cast<QObject*>(container->childItems().at(2))->objectName() == "item3"); QVERIFY(container->childItems().at(3) == repeater); + delete testObject; delete canvas; } @@ -346,12 +354,14 @@ void tst_QDeclarativeRepeater::properties() QSignalSpy delegateSpy(repeater, SIGNAL(delegateChanged())); QDeclarativeComponent rectComponent(&engine); - rectComponent.setData("import Qt 4.6; Rectangle {}", QUrl::fromLocalFile("")); + rectComponent.setData("import Qt 4.7; Rectangle {}", QUrl::fromLocalFile("")); repeater->setDelegate(&rectComponent); QCOMPARE(delegateSpy.count(),1); repeater->setDelegate(&rectComponent); QCOMPARE(delegateSpy.count(),1); + + delete rootObject; } QDeclarativeView *tst_QDeclarativeRepeater::createView() diff --git a/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimation1.qml b/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimation1.qml new file mode 100644 index 0000000..cfece41 --- /dev/null +++ b/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimation1.qml @@ -0,0 +1,3 @@ +import Qt 4.6 + +SmoothedAnimation {} diff --git a/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimation2.qml b/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimation2.qml new file mode 100644 index 0000000..74a110d --- /dev/null +++ b/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimation2.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +SmoothedAnimation { + to: 10; duration: 300; reversingMode: SmoothedAnimation.Immediate +} diff --git a/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimation3.qml b/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimation3.qml new file mode 100644 index 0000000..3111e82 --- /dev/null +++ b/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimation3.qml @@ -0,0 +1,6 @@ +import Qt 4.6 + +SmoothedAnimation { + to: 10; velocity: 250; reversingMode: SmoothedAnimation.Sync + maximumEasingTime: 150 +} diff --git a/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimationBehavior.qml b/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimationBehavior.qml new file mode 100644 index 0000000..ec35067 --- /dev/null +++ b/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimationBehavior.qml @@ -0,0 +1,24 @@ +import Qt 4.6 + +Rectangle { + width: 400; height: 400; color: "blue" + + Rectangle { + id: rect1 + color: "red" + width: 60; height: 60; + x: 100; y: 100; + SmoothedAnimation on x { to: 200; velocity: 500 } + SmoothedAnimation on y { to: 200; velocity: 500 } + } + + Rectangle { + objectName: "theRect" + color: "green" + width: 60; height: 60; + x: rect1.x; y: rect1.y; + // id are needed for SmoothedAnimation in order to avoid deferred creation + Behavior on x { SmoothedAnimation { id: anim1; objectName: "easeX"; velocity: 400 } } + Behavior on y { SmoothedAnimation { id: anim2; objectName: "easeY"; velocity: 400 } } + } + } diff --git a/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimationValueSource.qml b/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimationValueSource.qml new file mode 100644 index 0000000..9ae744c --- /dev/null +++ b/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimationValueSource.qml @@ -0,0 +1,13 @@ +import Qt 4.6 + +Rectangle { + width: 300; height: 300; + Rectangle { + objectName: "theRect" + color: "red" + width: 60; height: 60; + x: 100; y: 100; + SmoothedAnimation on x { objectName: "easeX"; to: 200; velocity: 500 } + SmoothedAnimation on y { objectName: "easeY"; to: 200; duration: 250; velocity: 500 } + } +} diff --git a/tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro b/tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro new file mode 100644 index 0000000..80b757d --- /dev/null +++ b/tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro @@ -0,0 +1,11 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative gui +macx:CONFIG -= app_bundle + +SOURCES += tst_qdeclarativesmoothedanimation.cpp + +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativesmoothedanimation/tst_qdeclarativesmoothedanimation.cpp b/tests/auto/declarative/qdeclarativesmoothedanimation/tst_qdeclarativesmoothedanimation.cpp new file mode 100644 index 0000000..7cf318a --- /dev/null +++ b/tests/auto/declarative/qdeclarativesmoothedanimation/tst_qdeclarativesmoothedanimation.cpp @@ -0,0 +1,207 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <qtest.h> +#include <QtDeclarative/qdeclarativeengine.h> +#include <QtDeclarative/qdeclarativecomponent.h> +#include <private/qdeclarativesmoothedanimation_p.h> +#include <private/qdeclarativerectangle_p.h> +#include <private/qdeclarativevaluetype_p.h> +#include "../../../shared/util.h" + +class tst_qdeclarativesmoothedanimation : public QObject +{ + Q_OBJECT +public: + tst_qdeclarativesmoothedanimation(); + +private slots: + void defaultValues(); + void values(); + void disabled(); + void simpleAnimation(); + void valueSource(); + void behavior(); + +private: + QDeclarativeEngine engine; +}; + +tst_qdeclarativesmoothedanimation::tst_qdeclarativesmoothedanimation() +{ +} + +void tst_qdeclarativesmoothedanimation::defaultValues() +{ + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/smoothedanimation1.qml")); + QDeclarativeSmoothedAnimation *obj = qobject_cast<QDeclarativeSmoothedAnimation*>(c.create()); + + QVERIFY(obj != 0); + + QCOMPARE(obj->to(), 0.); + QCOMPARE(obj->velocity(), 200.); + QCOMPARE(obj->duration(), -1); + QCOMPARE(obj->maximumEasingTime(), -1); + QCOMPARE(obj->reversingMode(), QDeclarativeSmoothedAnimation::Eased); + + delete obj; +} + +void tst_qdeclarativesmoothedanimation::values() +{ + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/smoothedanimation2.qml")); + QDeclarativeSmoothedAnimation *obj = qobject_cast<QDeclarativeSmoothedAnimation*>(c.create()); + + QVERIFY(obj != 0); + + QCOMPARE(obj->to(), 10.); + QCOMPARE(obj->velocity(), 200.); + QCOMPARE(obj->duration(), 300); + QCOMPARE(obj->maximumEasingTime(), -1); + QCOMPARE(obj->reversingMode(), QDeclarativeSmoothedAnimation::Immediate); + + delete obj; +} + +void tst_qdeclarativesmoothedanimation::disabled() +{ + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/smoothedanimation3.qml")); + QDeclarativeSmoothedAnimation *obj = qobject_cast<QDeclarativeSmoothedAnimation*>(c.create()); + + QVERIFY(obj != 0); + + QCOMPARE(obj->to(), 10.); + QCOMPARE(obj->velocity(), 250.); + QCOMPARE(obj->maximumEasingTime(), 150); + QCOMPARE(obj->reversingMode(), QDeclarativeSmoothedAnimation::Sync); + + delete obj; +} + +void tst_qdeclarativesmoothedanimation::simpleAnimation() +{ + QDeclarativeRectangle rect; + QDeclarativeSmoothedAnimation animation; + animation.setTarget(&rect); + animation.setProperty("x"); + animation.setTo(200); + animation.setDuration(250); + QVERIFY(animation.target() == &rect); + QVERIFY(animation.property() == "x"); + QVERIFY(animation.to() == 200); + animation.start(); + QVERIFY(animation.isRunning()); + QTest::qWait(animation.duration()); + QTRY_COMPARE(rect.x(), qreal(200)); + + rect.setX(0); + animation.start(); + animation.pause(); + QVERIFY(animation.isRunning()); + QVERIFY(animation.isPaused()); + animation.setCurrentTime(125); + QVERIFY(animation.currentTime() == 125); + QCOMPARE(rect.x(), qreal(100)); +} + +void tst_qdeclarativesmoothedanimation::valueSource() +{ + QDeclarativeEngine engine; + + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/smoothedanimationValueSource.qml")); + + QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); + QVERIFY(rect); + + QDeclarativeRectangle *theRect = rect->findChild<QDeclarativeRectangle*>("theRect"); + QVERIFY(theRect); + + QDeclarativeSmoothedAnimation *easeX = rect->findChild<QDeclarativeSmoothedAnimation*>("easeX"); + QVERIFY(easeX); + QVERIFY(easeX->isRunning()); + + QDeclarativeSmoothedAnimation *easeY = rect->findChild<QDeclarativeSmoothedAnimation*>("easeY"); + QVERIFY(easeY); + QVERIFY(easeY->isRunning()); + + // XXX get the proper duration + QTest::qWait(100); + + QTRY_VERIFY(!easeX->isRunning()); + QTRY_VERIFY(!easeY->isRunning()); + + QTRY_COMPARE(theRect->x(), qreal(200)); + QTRY_COMPARE(theRect->y(), qreal(200)); +} + +void tst_qdeclarativesmoothedanimation::behavior() +{ + QDeclarativeEngine engine; + + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/smoothedanimationBehavior.qml")); + + QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); + QVERIFY(rect); + + QDeclarativeRectangle *theRect = rect->findChild<QDeclarativeRectangle*>("theRect"); + QVERIFY(theRect); + + QDeclarativeSmoothedAnimation *easeX = rect->findChild<QDeclarativeSmoothedAnimation*>("easeX"); + QVERIFY(easeX); + + QDeclarativeSmoothedAnimation *easeY = rect->findChild<QDeclarativeSmoothedAnimation*>("easeY"); + QVERIFY(easeY); + + // XXX get the proper duration + QTest::qWait(400); + + QTRY_VERIFY(!easeX->isRunning()); + QTRY_VERIFY(!easeY->isRunning()); + + QTRY_COMPARE(theRect->x(), qreal(200)); + QTRY_COMPARE(theRect->y(), qreal(200)); +} + +QTEST_MAIN(tst_qdeclarativesmoothedanimation) + +#include "tst_qdeclarativesmoothedanimation.moc" diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow1.qml b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow1.qml new file mode 100644 index 0000000..c162e7a --- /dev/null +++ b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow1.qml @@ -0,0 +1,3 @@ +import Qt 4.6 + +SmoothedFollow {} diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow2.qml b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow2.qml new file mode 100644 index 0000000..d45001f --- /dev/null +++ b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow2.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +SmoothedFollow { + to: 10; duration: 300; reversingMode: SmoothedFollow.Immediate +} diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow3.qml b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow3.qml new file mode 100644 index 0000000..c09fb8e --- /dev/null +++ b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollow3.qml @@ -0,0 +1,6 @@ +import Qt 4.6 + +SmoothedFollow { + to: 10; velocity: 250; reversingMode: SmoothedFollow.Sync + maximumEasingTime: 150 +} diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollowDisabled.qml b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollowDisabled.qml new file mode 100644 index 0000000..131f674 --- /dev/null +++ b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollowDisabled.qml @@ -0,0 +1,13 @@ +import Qt 4.6 + +Rectangle { + width: 300; height: 300; + Rectangle { + objectName: "theRect" + color: "red" + width: 60; height: 60; + x: 100; y: 100; + SmoothedFollow on x { id: animX; objectName: "animX"; to: 200; enabled: true; duration: 200 } + SmoothedFollow on y { id: animY; objectName: "animY"; to: 200; enabled: false; duration: 200 } + } +} diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollowValueSource.qml b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollowValueSource.qml new file mode 100644 index 0000000..514537c --- /dev/null +++ b/tests/auto/declarative/qdeclarativesmoothedfollow/data/smoothedfollowValueSource.qml @@ -0,0 +1,13 @@ +import Qt 4.6 + +Rectangle { + width: 300; height: 300; + Rectangle { + objectName: "theRect" + color: "red" + width: 60; height: 60; + x: 100; y: 100; + SmoothedFollow on x { objectName: "easeX"; to: 200; velocity: 500 } + SmoothedFollow on y { objectName: "easeY"; to: 200; duration: 250; velocity: 500 } + } +} diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/qdeclarativesmoothedfollow.pro b/tests/auto/declarative/qdeclarativesmoothedfollow/qdeclarativesmoothedfollow.pro new file mode 100644 index 0000000..7f737c2 --- /dev/null +++ b/tests/auto/declarative/qdeclarativesmoothedfollow/qdeclarativesmoothedfollow.pro @@ -0,0 +1,11 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative gui +macx:CONFIG -= app_bundle + +SOURCES += tst_qdeclarativesmoothedfollow.cpp + +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativesmoothedfollow/tst_qdeclarativesmoothedfollow.cpp b/tests/auto/declarative/qdeclarativesmoothedfollow/tst_qdeclarativesmoothedfollow.cpp new file mode 100644 index 0000000..ac750d9 --- /dev/null +++ b/tests/auto/declarative/qdeclarativesmoothedfollow/tst_qdeclarativesmoothedfollow.cpp @@ -0,0 +1,189 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <qtest.h> +#include <QtDeclarative/qdeclarativeengine.h> +#include <QtDeclarative/qdeclarativecomponent.h> +#include <QtDeclarative/qdeclarativeview.h> + +#include <private/qdeclarativesmoothedfollow_p.h> +#include <private/qdeclarativerectangle_p.h> +#include <private/qdeclarativevaluetype_p.h> +#include "../../../shared/util.h" + +class tst_qdeclarativesmoothedfollow : public QObject +{ + Q_OBJECT +public: + tst_qdeclarativesmoothedfollow(); + +private slots: + void defaultValues(); + void values(); + void disabled(); + void valueSource(); + void followTo(); + +private: + QDeclarativeEngine engine; +}; + +tst_qdeclarativesmoothedfollow::tst_qdeclarativesmoothedfollow() +{ +} + +void tst_qdeclarativesmoothedfollow::defaultValues() +{ + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/smoothedfollow1.qml")); + QDeclarativeSmoothedFollow *obj = qobject_cast<QDeclarativeSmoothedFollow*>(c.create()); + + QVERIFY(obj != 0); + + QCOMPARE(obj->to(), 0.); + QCOMPARE(obj->velocity(), 200.); + QCOMPARE(obj->duration(), -1); + QCOMPARE(obj->maximumEasingTime(), -1); + QCOMPARE(obj->reversingMode(), QDeclarativeSmoothedFollow::Eased); + + delete obj; +} + +void tst_qdeclarativesmoothedfollow::values() +{ + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/smoothedfollow2.qml")); + QDeclarativeSmoothedFollow *obj = qobject_cast<QDeclarativeSmoothedFollow*>(c.create()); + + QVERIFY(obj != 0); + + QCOMPARE(obj->to(), 10.); + QCOMPARE(obj->velocity(), 200.); + QCOMPARE(obj->duration(), 300); + QCOMPARE(obj->maximumEasingTime(), -1); + QCOMPARE(obj->reversingMode(), QDeclarativeSmoothedFollow::Immediate); + + delete obj; +} + +void tst_qdeclarativesmoothedfollow::disabled() +{ + QDeclarativeEngine engine; + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/smoothedfollow3.qml")); + QDeclarativeSmoothedFollow *obj = qobject_cast<QDeclarativeSmoothedFollow*>(c.create()); + + QVERIFY(obj != 0); + + QCOMPARE(obj->to(), 10.); + QCOMPARE(obj->velocity(), 250.); + QCOMPARE(obj->maximumEasingTime(), 150); + QCOMPARE(obj->reversingMode(), QDeclarativeSmoothedFollow::Sync); + + delete obj; +} + +void tst_qdeclarativesmoothedfollow::valueSource() +{ + QDeclarativeEngine engine; + + QDeclarativeComponent c(&engine, QUrl::fromLocalFile(SRCDIR "/data/smoothedfollowValueSource.qml")); + + QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); + QVERIFY(rect); + + QDeclarativeRectangle *theRect = rect->findChild<QDeclarativeRectangle*>("theRect"); + QVERIFY(theRect); + + QDeclarativeSmoothedFollow *easeX = rect->findChild<QDeclarativeSmoothedFollow*>("easeX"); + QVERIFY(easeX); + QVERIFY(easeX->enabled()); + + QDeclarativeSmoothedFollow *easeY = rect->findChild<QDeclarativeSmoothedFollow*>("easeY"); + QVERIFY(easeY); + QVERIFY(easeY->enabled()); + + // XXX get the proper duration + QTest::qWait(200); + + QTRY_COMPARE(theRect->x(), easeX->to()); + QTRY_COMPARE(theRect->y(), easeY->to()); + + QTRY_COMPARE(theRect->x(), qreal(200)); + QTRY_COMPARE(theRect->y(), qreal(200)); +} + +void tst_qdeclarativesmoothedfollow::followTo() +{ + QDeclarativeView canvas; + canvas.setFixedSize(240,320); + + canvas.setSource(QUrl::fromLocalFile(SRCDIR "/data/smoothedfollowDisabled.qml")); + canvas.show(); + canvas.setFocus(); + QVERIFY(canvas.rootObject() != 0); + + QDeclarativeRectangle *rect = canvas.rootObject()->findChild<QDeclarativeRectangle*>("theRect"); + QVERIFY(rect != 0); + + QDeclarativeSmoothedFollow *animX = canvas.rootObject()->findChild<QDeclarativeSmoothedFollow*>("animX"); + QVERIFY(animX != 0); + QDeclarativeSmoothedFollow *animY = canvas.rootObject()->findChild<QDeclarativeSmoothedFollow*>("animY"); + QVERIFY(animY != 0); + + QVERIFY(animX->enabled()); + QVERIFY(!animY->enabled()); + + // animX should track 'to' + animX->setTo(50.0); + // animY should not track this 'to' change + animY->setTo(50.0); + + // XXX get the proper duration + QTest::qWait(250); + + QTRY_COMPARE(rect->x(), animX->to()); + + QCOMPARE(rect->x(), 50.0); + QCOMPARE(rect->y(), 100.0); +} + +QTEST_MAIN(tst_qdeclarativesmoothedfollow) + +#include "tst_qdeclarativesmoothedfollow.moc" diff --git a/tests/auto/declarative/qdeclarativespringfollow/data/springfollow2.qml b/tests/auto/declarative/qdeclarativespringfollow/data/springfollow2.qml index 7c81fb5..ffbf7d5 100644 --- a/tests/auto/declarative/qdeclarativespringfollow/data/springfollow2.qml +++ b/tests/auto/declarative/qdeclarativespringfollow/data/springfollow2.qml @@ -1,7 +1,7 @@ import Qt 4.6 SpringFollow { - source: 1.44; velocity: 0.9 + to: 1.44; velocity: 0.9 spring: 1.0; damping: 0.5 epsilon: 0.25; modulus: 360.0 mass: 2.0; enabled: true diff --git a/tests/auto/declarative/qdeclarativespringfollow/data/springfollow3.qml b/tests/auto/declarative/qdeclarativespringfollow/data/springfollow3.qml index 6fec55b..9a8f6f3 100644 --- a/tests/auto/declarative/qdeclarativespringfollow/data/springfollow3.qml +++ b/tests/auto/declarative/qdeclarativespringfollow/data/springfollow3.qml @@ -1,7 +1,7 @@ import Qt 4.6 SpringFollow { - source: 1.44; velocity: 0.9 + to: 1.44; velocity: 0.9 spring: 1.0; damping: 0.5 epsilon: 0.25; modulus: 360.0 mass: 2.0; enabled: false diff --git a/tests/auto/declarative/qdeclarativespringfollow/qdeclarativespringfollow.pro b/tests/auto/declarative/qdeclarativespringfollow/qdeclarativespringfollow.pro index 61aad0f..6f400a3 100644 --- a/tests/auto/declarative/qdeclarativespringfollow/qdeclarativespringfollow.pro +++ b/tests/auto/declarative/qdeclarativespringfollow/qdeclarativespringfollow.pro @@ -6,3 +6,6 @@ SOURCES += tst_qdeclarativespringfollow.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativespringfollow/tst_qdeclarativespringfollow.cpp b/tests/auto/declarative/qdeclarativespringfollow/tst_qdeclarativespringfollow.cpp index 7a60e78..8a07d6b 100644 --- a/tests/auto/declarative/qdeclarativespringfollow/tst_qdeclarativespringfollow.cpp +++ b/tests/auto/declarative/qdeclarativespringfollow/tst_qdeclarativespringfollow.cpp @@ -72,7 +72,7 @@ void tst_qdeclarativespringfollow::defaultValues() QVERIFY(obj != 0); - QCOMPARE(obj->sourceValue(), 0.); + QCOMPARE(obj->to(), 0.); QCOMPARE(obj->velocity(), 0.); QCOMPARE(obj->spring(), 0.); QCOMPARE(obj->damping(), 0.); @@ -94,7 +94,7 @@ void tst_qdeclarativespringfollow::values() QVERIFY(obj != 0); - QCOMPARE(obj->sourceValue(), 1.44); + QCOMPARE(obj->to(), 1.44); QCOMPARE(obj->velocity(), 0.9); QCOMPARE(obj->spring(), 1.0); QCOMPARE(obj->damping(), 0.5); @@ -117,7 +117,7 @@ void tst_qdeclarativespringfollow::disabled() QVERIFY(obj != 0); - QCOMPARE(obj->sourceValue(), 1.44); + QCOMPARE(obj->to(), 1.44); QCOMPARE(obj->velocity(), 0.9); QCOMPARE(obj->spring(), 1.0); QCOMPARE(obj->damping(), 0.5); diff --git a/tests/auto/declarative/sql/data/README b/tests/auto/declarative/qdeclarativesqldatabase/data/README index 7efca3a..7efca3a 100644 --- a/tests/auto/declarative/sql/data/README +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/README diff --git a/tests/auto/declarative/sql/data/changeversion.js b/tests/auto/declarative/qdeclarativesqldatabase/data/changeversion.js index 680d7a6..680d7a6 100644 --- a/tests/auto/declarative/sql/data/changeversion.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/changeversion.js diff --git a/tests/auto/declarative/sql/data/creation-a.js b/tests/auto/declarative/qdeclarativesqldatabase/data/creation-a.js index bd7d5c5..bd7d5c5 100644 --- a/tests/auto/declarative/sql/data/creation-a.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/creation-a.js diff --git a/tests/auto/declarative/sql/data/creation.js b/tests/auto/declarative/qdeclarativesqldatabase/data/creation.js index 317b4c1..317b4c1 100644 --- a/tests/auto/declarative/sql/data/creation.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/creation.js diff --git a/tests/auto/declarative/sql/data/error-a.js b/tests/auto/declarative/qdeclarativesqldatabase/data/error-a.js index 10a23f6..10a23f6 100644 --- a/tests/auto/declarative/sql/data/error-a.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/error-a.js diff --git a/tests/auto/declarative/sql/data/error-b.js b/tests/auto/declarative/qdeclarativesqldatabase/data/error-b.js index 4dd0ecf..4dd0ecf 100644 --- a/tests/auto/declarative/sql/data/error-b.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/error-b.js diff --git a/tests/auto/declarative/qdeclarativesqldatabase/data/error-creation.js b/tests/auto/declarative/qdeclarativesqldatabase/data/error-creation.js new file mode 100644 index 0000000..0ab2a35 --- /dev/null +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/error-creation.js @@ -0,0 +1,14 @@ +function test() { + var r="transaction_not_finished"; + try { + var db = openDatabaseSync("QmlTestDB-creation", "2.0", "Test database from Qt autotests", 1000000); + } catch (err) { + if (err.code != SQLException.VERSION_ERR) + r = "WRONG ERROR CODE="+err.code; + else if (err.message != "SQL: database version mismatch") + r = "WRONG ERROR="+err.message; + else + r = "passed"; + } + return r; +} diff --git a/tests/auto/declarative/sql/data/error-notransaction.js b/tests/auto/declarative/qdeclarativesqldatabase/data/error-notransaction.js index b9cc647..b9cc647 100644 --- a/tests/auto/declarative/sql/data/error-notransaction.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/error-notransaction.js diff --git a/tests/auto/declarative/sql/data/error-outsidetransaction.js b/tests/auto/declarative/qdeclarativesqldatabase/data/error-outsidetransaction.js index a7af3bd..a7af3bd 100644 --- a/tests/auto/declarative/sql/data/error-outsidetransaction.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/error-outsidetransaction.js diff --git a/tests/auto/declarative/sql/data/iteration-forwardonly.js b/tests/auto/declarative/qdeclarativesqldatabase/data/iteration-forwardonly.js index 45947c0..45947c0 100644 --- a/tests/auto/declarative/sql/data/iteration-forwardonly.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/iteration-forwardonly.js diff --git a/tests/auto/declarative/sql/data/iteration.js b/tests/auto/declarative/qdeclarativesqldatabase/data/iteration.js index c34cbbb..c34cbbb 100644 --- a/tests/auto/declarative/sql/data/iteration.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/iteration.js diff --git a/tests/auto/declarative/sql/data/readonly-error.js b/tests/auto/declarative/qdeclarativesqldatabase/data/readonly-error.js index 69ec67f..69ec67f 100644 --- a/tests/auto/declarative/sql/data/readonly-error.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/readonly-error.js diff --git a/tests/auto/declarative/sql/data/readonly.js b/tests/auto/declarative/qdeclarativesqldatabase/data/readonly.js index 5ee862c..5ee862c 100644 --- a/tests/auto/declarative/sql/data/readonly.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/readonly.js diff --git a/tests/auto/declarative/sql/data/reopen1.js b/tests/auto/declarative/qdeclarativesqldatabase/data/reopen1.js index c1a8157..c1a8157 100644 --- a/tests/auto/declarative/sql/data/reopen1.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/reopen1.js diff --git a/tests/auto/declarative/sql/data/reopen2.js b/tests/auto/declarative/qdeclarativesqldatabase/data/reopen2.js index 4f7248f..4f7248f 100644 --- a/tests/auto/declarative/sql/data/reopen2.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/reopen2.js diff --git a/tests/auto/declarative/sql/data/selection-bindnames.js b/tests/auto/declarative/qdeclarativesqldatabase/data/selection-bindnames.js index 9786821..9786821 100644 --- a/tests/auto/declarative/sql/data/selection-bindnames.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/selection-bindnames.js diff --git a/tests/auto/declarative/sql/data/selection.js b/tests/auto/declarative/qdeclarativesqldatabase/data/selection.js index f116eff..f116eff 100644 --- a/tests/auto/declarative/sql/data/selection.js +++ b/tests/auto/declarative/qdeclarativesqldatabase/data/selection.js diff --git a/tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro b/tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro new file mode 100644 index 0000000..3ff4529 --- /dev/null +++ b/tests/auto/declarative/qdeclarativesqldatabase/qdeclarativesqldatabase.pro @@ -0,0 +1,12 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative +QT += sql script +macx:CONFIG -= app_bundle + +SOURCES += tst_qdeclarativesqldatabase.cpp + +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativesqldatabase/tst_qdeclarativesqldatabase.cpp b/tests/auto/declarative/qdeclarativesqldatabase/tst_qdeclarativesqldatabase.cpp new file mode 100644 index 0000000..7486a4b --- /dev/null +++ b/tests/auto/declarative/qdeclarativesqldatabase/tst_qdeclarativesqldatabase.cpp @@ -0,0 +1,239 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <qtest.h> +#include "../../../shared/util.h" +#include <QtDeclarative/qdeclarativeengine.h> +#include <QtDeclarative/qdeclarativecomponent.h> +#include <private/qdeclarativetext_p.h> +#include <private/qdeclarativeengine_p.h> +#include <QtCore/qcryptographichash.h> +#include <QtWebKit/qwebpage.h> +#include <QtWebKit/qwebframe.h> +#include <QtWebKit/qwebdatabase.h> +#include <QtWebKit/qwebsecurityorigin.h> +#include <QtSql/qsqldatabase.h> +#include <QtCore/qdir.h> +#include <QtCore/qfile.h> + +class tst_qdeclarativesqldatabase : public QObject +{ + Q_OBJECT +public: + tst_qdeclarativesqldatabase() + { + qApp->setApplicationName("tst_qdeclarativesqldatabase"); + qApp->setOrganizationName("Nokia"); + qApp->setOrganizationDomain("nokia.com"); + engine = new QDeclarativeEngine; + } + + ~tst_qdeclarativesqldatabase() + { + delete engine; + } + +private slots: + void initTestCase(); + + void checkDatabasePath(); + + void testQml_data(); + void testQml(); + void testQml_cleanopen_data(); + void testQml_cleanopen(); + void totalDatabases(); + + void cleanupTestCase(); + +private: + QString dbDir() const; + QDeclarativeEngine *engine; +}; + +class QWebPageWithJavaScriptConsoleMessages : public QWebPage { +public: + void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID) + { + qWarning() << sourceID << ":" << lineNumber << ":" << message; + } +}; + +void removeRecursive(const QString& dirname) +{ + QDir dir(dirname); + QFileInfoList entries(dir.entryInfoList(QDir::Dirs|QDir::Files|QDir::NoDotAndDotDot)); + for (int i = 0; i < entries.count(); ++i) + if (entries[i].isDir()) + removeRecursive(entries[i].filePath()); + else + dir.remove(entries[i].fileName()); + QDir().rmdir(dirname); +} + +void tst_qdeclarativesqldatabase::initTestCase() +{ + removeRecursive(dbDir()); + QDir().mkpath(dbDir()); +} + +void tst_qdeclarativesqldatabase::cleanupTestCase() +{ + removeRecursive(dbDir()); +} + +QString tst_qdeclarativesqldatabase::dbDir() const +{ + static QString tmpd = QDir::tempPath()+"/tst_qdeclarativesqldatabase_output-" + + QDateTime::currentDateTime().toString(QLatin1String("yyyyMMddhhmmss")); + return tmpd; +} + +void tst_qdeclarativesqldatabase::checkDatabasePath() +{ + // Check default storage path (we can't use it since we don't want to mess with user's data) + QVERIFY(engine->offlineStoragePath().contains("tst_qdeclarativesqldatabase")); + QVERIFY(engine->offlineStoragePath().contains("OfflineStorage")); +} + +static const int total_databases_created_by_tests = 12; +void tst_qdeclarativesqldatabase::testQml_data() +{ + QTest::addColumn<QString>("jsfile"); // The input file + + // Each test should use a newly named DB to avoid inter-test dependencies + QTest::newRow("creation") << "data/creation.js"; + QTest::newRow("creation-a") << "data/creation-a.js"; + QTest::newRow("creation") << "data/creation.js"; + QTest::newRow("error-creation") << "data/error-creation.js"; // re-uses above DB + QTest::newRow("changeversion") << "data/changeversion.js"; + QTest::newRow("readonly") << "data/readonly.js"; + QTest::newRow("readonly-error") << "data/readonly-error.js"; + QTest::newRow("selection") << "data/selection.js"; + QTest::newRow("selection-bindnames") << "data/selection-bindnames.js"; + QTest::newRow("iteration") << "data/iteration.js"; + QTest::newRow("iteration-forwardonly") << "data/iteration-forwardonly.js"; + QTest::newRow("error-a") << "data/error-a.js"; + QTest::newRow("error-notransaction") << "data/error-notransaction.js"; + QTest::newRow("error-outsidetransaction") << "data/error-outsidetransaction.js"; // reuse above + QTest::newRow("reopen1") << "data/reopen1.js"; + QTest::newRow("reopen2") << "data/reopen2.js"; // re-uses above DB + + // If you add a test, you should usually use a new database in the + // test - in which case increment total_databases_created_by_tests above. +} + +/* +void tst_qdeclarativesqldatabase::validateAgainstWebkit() +{ + // Validates tests against WebKit (HTML5) support. + // + QFETCH(QString, jsfile); + QFETCH(QString, result); + QFETCH(int, databases); + + QFile f(jsfile); + QVERIFY(f.open(QIODevice::ReadOnly)); + QString js=f.readAll(); + + QWebPageWithJavaScriptConsoleMessages webpage; + webpage.settings()->setOfflineStoragePath(dbDir()); + webpage.settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true); + + QEXPECT_FAIL("","WebKit doesn't support openDatabaseSync yet", Continue); + QCOMPARE(webpage.mainFrame()->evaluateJavaScript(js).toString(),result); + + QTest::qWait(100); // WebKit crashes if you quit it too fast + + QWebSecurityOrigin origin = webpage.mainFrame()->securityOrigin(); + QList<QWebDatabase> dbs = origin.databases(); + QCOMPARE(dbs.count(), databases); +} +*/ + +void tst_qdeclarativesqldatabase::testQml() +{ + // Tests QML SQL Database support with tests + // that have been validated against Webkit. + // + QFETCH(QString, jsfile); + + QString qml= + "import Qt 4.7\n" + "import \""+jsfile+"\" as JS\n" + "Text { text: JS.test() }"; + + engine->setOfflineStoragePath(dbDir()); + QDeclarativeComponent component(engine); + component.setData(qml.toUtf8(), QUrl::fromLocalFile(SRCDIR "/empty.qml")); // just a file for relative local imports + QVERIFY(!component.isError()); + QDeclarativeText *text = qobject_cast<QDeclarativeText*>(component.create()); + QVERIFY(text != 0); + QCOMPARE(text->text(),QString("passed")); +} + +void tst_qdeclarativesqldatabase::testQml_cleanopen_data() +{ + QTest::addColumn<QString>("jsfile"); // The input file + QTest::newRow("reopen1") << "data/reopen1.js"; + QTest::newRow("reopen2") << "data/reopen2.js"; + QTest::newRow("error-creation") << "data/error-creation.js"; // re-uses creation DB +} + +void tst_qdeclarativesqldatabase::testQml_cleanopen() +{ + // Same as testQml, but clean connections between tests, + // making it more like the tests are running in new processes. + testQml(); + + QDeclarativeEnginePrivate::getScriptEngine(engine)->collectGarbage(); // close databases + foreach (QString dbname, QSqlDatabase::connectionNames()) { + QSqlDatabase::removeDatabase(dbname); + } +} + +void tst_qdeclarativesqldatabase::totalDatabases() +{ + QCOMPARE(QDir(dbDir()+"/Databases").entryInfoList(QDir::Files|QDir::NoDotAndDotDot).count(), total_databases_created_by_tests*2); +} + +QTEST_MAIN(tst_qdeclarativesqldatabase) + +#include "tst_qdeclarativesqldatabase.moc" diff --git a/tests/auto/declarative/qdeclarativestates/data/Implementation/MyType.qml b/tests/auto/declarative/qdeclarativestates/data/Implementation/MyType.qml new file mode 100644 index 0000000..1872de8 --- /dev/null +++ b/tests/auto/declarative/qdeclarativestates/data/Implementation/MyType.qml @@ -0,0 +1,32 @@ +import Qt 4.7 + +Item { + Column { + anchors.centerIn: parent + Image { id: image1; objectName: "image1" } + Image { id: image2; objectName: "image2" } + Image { id: image3; objectName: "image3" } + } + + states: State { + name: "SetImageState" + PropertyChanges { + target: image1 + source: "images/qt-logo.png" + } + PropertyChanges { + target: image2 + source: "images/" + "qt-logo.png" + } + PropertyChanges { + target: image3 + source: "images/" + (true ? "qt-logo.png" : "") + } + } + + MouseArea { + anchors.fill: parent + onClicked: parent.state = "SetImageState" + } + +} diff --git a/tests/auto/declarative/qdeclarativestates/data/Implementation/images/qt-logo.png b/tests/auto/declarative/qdeclarativestates/data/Implementation/images/qt-logo.png Binary files differnew file mode 100644 index 0000000..14ddf2a --- /dev/null +++ b/tests/auto/declarative/qdeclarativestates/data/Implementation/images/qt-logo.png diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorChanges.qml b/tests/auto/declarative/qdeclarativestates/data/anchorChanges.qml deleted file mode 100644 index 7dce889..0000000 --- a/tests/auto/declarative/qdeclarativestates/data/anchorChanges.qml +++ /dev/null @@ -1,23 +0,0 @@ -import Qt 4.6 - -Rectangle { - id: container - width: 200; height: 200 - Rectangle { - id: myRect - objectName: "MyRect" - width: 50; height: 50 - color: "green"; - anchors.left: parent.left - anchors.leftMargin: 5 - } - states: State { - name: "right" - AnchorChanges { - id: ancCh - target: myRect; - reset: "left" - right: container.right - } - } -} diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorChanges1.qml b/tests/auto/declarative/qdeclarativestates/data/anchorChanges1.qml new file mode 100644 index 0000000..5443e54 --- /dev/null +++ b/tests/auto/declarative/qdeclarativestates/data/anchorChanges1.qml @@ -0,0 +1,23 @@ +import Qt 4.6 + +Rectangle { + id: container + width: 200; height: 200 + Rectangle { + id: myRect + objectName: "MyRect" + width: 50; height: 50 + color: "green"; + anchors.left: parent.left + anchors.leftMargin: 5 + } + states: State { + name: "right" + AnchorChanges { + id: ancCh + target: myRect; + anchors.left: undefined + anchors.right: container.right + } + } +} diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorChanges2.qml b/tests/auto/declarative/qdeclarativestates/data/anchorChanges2.qml index 545345e..56de560 100644 --- a/tests/auto/declarative/qdeclarativestates/data/anchorChanges2.qml +++ b/tests/auto/declarative/qdeclarativestates/data/anchorChanges2.qml @@ -14,8 +14,8 @@ Rectangle { name: "right" AnchorChanges { target: myRect; - reset: "left" - right: parent.right + anchors.left: undefined + anchors.right: parent.right } } } diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorChanges3.qml b/tests/auto/declarative/qdeclarativestates/data/anchorChanges3.qml index 9d5b317..59c3c06 100644 --- a/tests/auto/declarative/qdeclarativestates/data/anchorChanges3.qml +++ b/tests/auto/declarative/qdeclarativestates/data/anchorChanges3.qml @@ -20,10 +20,10 @@ Rectangle { name: "reanchored" AnchorChanges { target: myRect; - left: leftGuideline.left - right: container.right - top: container.top - bottom: bottomGuideline.bottom + anchors.left: leftGuideline.left + anchors.right: container.right + anchors.top: container.top + anchors.bottom: bottomGuideline.bottom } } } diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorChanges4.qml b/tests/auto/declarative/qdeclarativestates/data/anchorChanges4.qml index f128989..7e3ba1c 100644 --- a/tests/auto/declarative/qdeclarativestates/data/anchorChanges4.qml +++ b/tests/auto/declarative/qdeclarativestates/data/anchorChanges4.qml @@ -15,8 +15,8 @@ Rectangle { name: "reanchored" AnchorChanges { target: myRect; - horizontalCenter: bottomGuideline.horizontalCenter - verticalCenter: leftGuideline.verticalCenter + anchors.horizontalCenter: bottomGuideline.horizontalCenter + anchors.verticalCenter: leftGuideline.verticalCenter } } } diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorChanges5.qml b/tests/auto/declarative/qdeclarativestates/data/anchorChanges5.qml index 4e6d34b..b85a922 100644 --- a/tests/auto/declarative/qdeclarativestates/data/anchorChanges5.qml +++ b/tests/auto/declarative/qdeclarativestates/data/anchorChanges5.qml @@ -15,8 +15,8 @@ Rectangle { name: "reanchored" AnchorChanges { target: myRect; - horizontalCenter: bottomGuideline.horizontalCenter - baseline: leftGuideline.baseline + anchors.horizontalCenter: bottomGuideline.horizontalCenter + anchors.baseline: leftGuideline.baseline } } } diff --git a/tests/auto/declarative/qdeclarativestates/data/anchorChangesCrash.qml b/tests/auto/declarative/qdeclarativestates/data/anchorChangesCrash.qml new file mode 100644 index 0000000..861ef8f --- /dev/null +++ b/tests/auto/declarative/qdeclarativestates/data/anchorChangesCrash.qml @@ -0,0 +1,14 @@ +import Qt 4.7 + +Rectangle { + id: container + width: 400 + height: 400 + + states: State { + name: "reanchored" + AnchorChanges { + anchors.top: container.top + } + } +} diff --git a/tests/auto/declarative/qdeclarativestates/data/illegalObj.qml b/tests/auto/declarative/qdeclarativestates/data/illegalObj.qml new file mode 100644 index 0000000..480764e --- /dev/null +++ b/tests/auto/declarative/qdeclarativestates/data/illegalObj.qml @@ -0,0 +1,12 @@ +import Qt 4.6 + +Rectangle { + id: myItem + + states : State { + PropertyChanges { + target: myItem + children: Item { id: newItem } + } + } +} diff --git a/tests/auto/declarative/qdeclarativestates/data/parentChange.qml b/tests/auto/declarative/qdeclarativestates/data/parentChange1.qml index b8c7818..b8c7818 100644 --- a/tests/auto/declarative/qdeclarativestates/data/parentChange.qml +++ b/tests/auto/declarative/qdeclarativestates/data/parentChange1.qml diff --git a/tests/auto/declarative/qdeclarativestates/data/reset.qml b/tests/auto/declarative/qdeclarativestates/data/reset.qml index a0a2b8c..7da80b3 100644 --- a/tests/auto/declarative/qdeclarativestates/data/reset.qml +++ b/tests/auto/declarative/qdeclarativestates/data/reset.qml @@ -5,9 +5,9 @@ Rectangle { height: 480 Text { id: theText - width: 50 - wrap: true - text: "a text string that is longer than 50 pixels" + width: 40 + wrapMode: Text.WordWrap + text: "a text string that is longer than 40 pixels" } states: State { diff --git a/tests/auto/declarative/qdeclarativestates/data/urlResolution.qml b/tests/auto/declarative/qdeclarativestates/data/urlResolution.qml new file mode 100644 index 0000000..8995b56 --- /dev/null +++ b/tests/auto/declarative/qdeclarativestates/data/urlResolution.qml @@ -0,0 +1,12 @@ +import Qt 4.7 +import "Implementation" + +Rectangle { + width: 100 + height: 200 + + MyType { + objectName: "MyType" + anchors.fill: parent + } +} diff --git a/tests/auto/declarative/qdeclarativestates/data/whenOrdering.qml b/tests/auto/declarative/qdeclarativestates/data/whenOrdering.qml new file mode 100644 index 0000000..7369c63 --- /dev/null +++ b/tests/auto/declarative/qdeclarativestates/data/whenOrdering.qml @@ -0,0 +1,11 @@ +import Qt 4.6 + +Rectangle { + property bool condition1: false + property bool condition2: false + + states: [ + State { name: "state1"; when: condition1 }, + State { name: "state2"; when: condition2 } + ] +} diff --git a/tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro b/tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro index f874803..706d045 100644 --- a/tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro +++ b/tests/auto/declarative/qdeclarativestates/qdeclarativestates.pro @@ -6,3 +6,5 @@ SOURCES += tst_qdeclarativestates.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test diff --git a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp index 8d3ca7a..578bcb4 100644 --- a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp +++ b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp @@ -43,6 +43,7 @@ #include <QtDeclarative/qdeclarativecomponent.h> #include <private/qdeclarativeanchors_p_p.h> #include <private/qdeclarativerectangle_p.h> +#include <private/qdeclarativeimage_p.h> #include <private/qdeclarativetext_p.h> #include <private/qdeclarativepropertychanges_p.h> #include <private/qdeclarativestategroup_p.h> @@ -94,6 +95,7 @@ private slots: void anchorChanges3(); void anchorChanges4(); void anchorChanges5(); + void anchorChangesCrash(); void script(); void restoreEntryValues(); void explicitChanges(); @@ -106,11 +108,14 @@ private slots: void illegalTempState(); void nonExistantProperty(); void reset(); + void illegalObjectCreation(); + void whenOrdering(); + void urlResolution(); }; void tst_qdeclarativestates::initTestCase() { - QML_REGISTER_TYPE(Qt.test, 1, 0, MyRectangle,MyRect); + qmlRegisterType<MyRect>("Qt.test", 1, 0, "MyRectangle"); } QByteArray tst_qdeclarativestates::fullDataPath(const QString &path) @@ -441,7 +446,7 @@ void tst_qdeclarativestates::parentChange() QDeclarativeEngine engine; { - QDeclarativeComponent rectComponent(&engine, SRCDIR "/data/parentChange.qml"); + QDeclarativeComponent rectComponent(&engine, SRCDIR "/data/parentChange1.qml"); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(rectComponent.create()); QVERIFY(rect != 0); @@ -546,7 +551,7 @@ void tst_qdeclarativestates::anchorChanges() { QDeclarativeEngine engine; - QDeclarativeComponent rectComponent(&engine, SRCDIR "/data/anchorChanges.qml"); + QDeclarativeComponent rectComponent(&engine, SRCDIR "/data/anchorChanges1.qml"); QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(rectComponent.create()); QVERIFY(rect != 0); @@ -563,10 +568,10 @@ void tst_qdeclarativestates::anchorChanges() rect->setState("right"); QCOMPARE(innerRect->x(), qreal(150)); - QCOMPARE(aChanges->reset(), QString("left")); - QCOMPARE(aChanges->object(), innerRect); - QCOMPARE(aChanges->right().item, rect->right().item); - QCOMPARE(aChanges->right().anchorLine, rect->right().anchorLine); + QCOMPARE(aChanges->anchors()->left().anchorLine, QDeclarativeAnchorLine::Invalid); //### was reset (how do we distinguish from not set at all) + QCOMPARE(aChanges->object(), qobject_cast<QDeclarativeItem*>(innerRect)); + QCOMPARE(aChanges->anchors()->right().item, rect->right().item); + QCOMPARE(aChanges->anchors()->right().anchorLine, rect->right().anchorLine); rect->setState(""); QCOMPARE(innerRect->x(), qreal(5)); @@ -621,15 +626,15 @@ void tst_qdeclarativestates::anchorChanges3() QVERIFY(aChanges != 0); rect->setState("reanchored"); - QCOMPARE(aChanges->object(), innerRect); - QCOMPARE(aChanges->left().item, leftGuideline->left().item); - QCOMPARE(aChanges->left().anchorLine, leftGuideline->left().anchorLine); - QCOMPARE(aChanges->right().item, rect->right().item); - QCOMPARE(aChanges->right().anchorLine, rect->right().anchorLine); - QCOMPARE(aChanges->top().item, rect->top().item); - QCOMPARE(aChanges->top().anchorLine, rect->top().anchorLine); - QCOMPARE(aChanges->bottom().item, bottomGuideline->bottom().item); - QCOMPARE(aChanges->bottom().anchorLine, bottomGuideline->bottom().anchorLine); + QCOMPARE(aChanges->object(), qobject_cast<QDeclarativeItem*>(innerRect)); + QCOMPARE(aChanges->anchors()->left().item, leftGuideline->left().item); + QCOMPARE(aChanges->anchors()->left().anchorLine, leftGuideline->left().anchorLine); + QCOMPARE(aChanges->anchors()->right().item, rect->right().item); + QCOMPARE(aChanges->anchors()->right().anchorLine, rect->right().anchorLine); + QCOMPARE(aChanges->anchors()->top().item, rect->top().item); + QCOMPARE(aChanges->anchors()->top().anchorLine, rect->top().anchorLine); + QCOMPARE(aChanges->anchors()->bottom().item, bottomGuideline->bottom().item); + QCOMPARE(aChanges->anchors()->bottom().anchorLine, bottomGuideline->bottom().anchorLine); QCOMPARE(innerRect->x(), qreal(10)); QCOMPARE(innerRect->y(), qreal(0)); @@ -671,11 +676,11 @@ void tst_qdeclarativestates::anchorChanges4() QVERIFY(aChanges != 0); rect->setState("reanchored"); - QCOMPARE(aChanges->object(), innerRect); - QCOMPARE(aChanges->horizontalCenter().item, bottomGuideline->horizontalCenter().item); - QCOMPARE(aChanges->horizontalCenter().anchorLine, bottomGuideline->horizontalCenter().anchorLine); - QCOMPARE(aChanges->verticalCenter().item, leftGuideline->verticalCenter().item); - QCOMPARE(aChanges->verticalCenter().anchorLine, leftGuideline->verticalCenter().anchorLine); + QCOMPARE(aChanges->object(), qobject_cast<QDeclarativeItem*>(innerRect)); + QCOMPARE(aChanges->anchors()->horizontalCenter().item, bottomGuideline->horizontalCenter().item); + QCOMPARE(aChanges->anchors()->horizontalCenter().anchorLine, bottomGuideline->horizontalCenter().anchorLine); + QCOMPARE(aChanges->anchors()->verticalCenter().item, leftGuideline->verticalCenter().item); + QCOMPARE(aChanges->anchors()->verticalCenter().anchorLine, leftGuideline->verticalCenter().anchorLine); delete rect; } @@ -706,11 +711,25 @@ void tst_qdeclarativestates::anchorChanges5() QVERIFY(aChanges != 0); rect->setState("reanchored"); - QCOMPARE(aChanges->object(), innerRect); - QCOMPARE(aChanges->horizontalCenter().item, bottomGuideline->horizontalCenter().item); - QCOMPARE(aChanges->horizontalCenter().anchorLine, bottomGuideline->horizontalCenter().anchorLine); - QCOMPARE(aChanges->baseline().item, leftGuideline->baseline().item); - QCOMPARE(aChanges->baseline().anchorLine, leftGuideline->baseline().anchorLine); + QCOMPARE(aChanges->object(), qobject_cast<QDeclarativeItem*>(innerRect)); + QCOMPARE(aChanges->anchors()->horizontalCenter().item, bottomGuideline->horizontalCenter().item); + QCOMPARE(aChanges->anchors()->horizontalCenter().anchorLine, bottomGuideline->horizontalCenter().anchorLine); + QCOMPARE(aChanges->anchors()->baseline().item, leftGuideline->baseline().item); + QCOMPARE(aChanges->anchors()->baseline().anchorLine, leftGuideline->baseline().anchorLine); + + delete rect; +} + +//QTBUG-9609 +void tst_qdeclarativestates::anchorChangesCrash() +{ + QDeclarativeEngine engine; + + QDeclarativeComponent rectComponent(&engine, SRCDIR "/data/anchorChangesCrash.qml"); + QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(rectComponent.create()); + QVERIFY(rect != 0); + + rect->setState("reanchored"); delete rect; } @@ -955,15 +974,71 @@ void tst_qdeclarativestates::reset() QDeclarativeText *text = rect->findChild<QDeclarativeText*>(); QVERIFY(text != 0); - QCOMPARE(text->width(), qreal(50.)); + QCOMPARE(text->width(), qreal(40.)); QVERIFY(text->width() < text->height()); rect->setState("state1"); - QVERIFY(text->width() > 51); + QVERIFY(text->width() > 41); QVERIFY(text->width() > text->height()); } +void tst_qdeclarativestates::illegalObjectCreation() +{ + QDeclarativeEngine engine; + + QDeclarativeComponent component(&engine, SRCDIR "/data/illegalObj.qml"); + QList<QDeclarativeError> errors = component.errors(); + QVERIFY(errors.count() == 1); + const QDeclarativeError &error = errors.at(0); + QCOMPARE(error.line(), 9); + QCOMPARE(error.column(), 23); + QCOMPARE(error.description().toUtf8().constData(), "PropertyChanges does not support creating state-specific objects."); +} + +void tst_qdeclarativestates::whenOrdering() +{ + QDeclarativeEngine engine; + + QDeclarativeComponent c(&engine, SRCDIR "/data/whenOrdering.qml"); + QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); + QVERIFY(rect != 0); + + QCOMPARE(rect->state(), QLatin1String("")); + rect->setProperty("condition2", true); + QCOMPARE(rect->state(), QLatin1String("state2")); + rect->setProperty("condition1", true); + QCOMPARE(rect->state(), QLatin1String("state1")); + rect->setProperty("condition2", false); + QCOMPARE(rect->state(), QLatin1String("state1")); + rect->setProperty("condition2", true); + QCOMPARE(rect->state(), QLatin1String("state1")); + rect->setProperty("condition1", false); + rect->setProperty("condition2", false); + QCOMPARE(rect->state(), QLatin1String("")); +} + +void tst_qdeclarativestates::urlResolution() +{ + QDeclarativeEngine engine; + + QDeclarativeComponent c(&engine, SRCDIR "/data/urlResolution.qml"); + QDeclarativeRectangle *rect = qobject_cast<QDeclarativeRectangle*>(c.create()); + QVERIFY(rect != 0); + + QDeclarativeItem *myType = rect->findChild<QDeclarativeItem*>("MyType"); + QDeclarativeImage *image1 = rect->findChild<QDeclarativeImage*>("image1"); + QDeclarativeImage *image2 = rect->findChild<QDeclarativeImage*>("image2"); + QDeclarativeImage *image3 = rect->findChild<QDeclarativeImage*>("image3"); + QVERIFY(myType != 0 && image1 != 0 && image2 != 0 && image3 != 0); + + myType->setState("SetImageState"); + QUrl resolved = QUrl::fromLocalFile(SRCDIR "/data/Implementation/images/qt-logo.png"); + QCOMPARE(image1->source(), resolved); + QCOMPARE(image2->source(), resolved); + QCOMPARE(image3->source(), resolved); +} + QTEST_MAIN(tst_qdeclarativestates) #include "tst_qdeclarativestates.moc" diff --git a/tests/auto/declarative/qdeclarativestyledtext/qdeclarativestyledtext.pro b/tests/auto/declarative/qdeclarativestyledtext/qdeclarativestyledtext.pro index bd4d829..87d0e5b 100644 --- a/tests/auto/declarative/qdeclarativestyledtext/qdeclarativestyledtext.pro +++ b/tests/auto/declarative/qdeclarativestyledtext/qdeclarativestyledtext.pro @@ -7,3 +7,5 @@ SOURCES += tst_qdeclarativestyledtext.cpp # QMAKE_CXXFLAGS = -fprofile-arcs -ftest-coverage # LIBS += -lgcov + +CONFIG += parallel_test diff --git a/tests/auto/declarative/qdeclarativestyledtext/tst_qdeclarativestyledtext.cpp b/tests/auto/declarative/qdeclarativestyledtext/tst_qdeclarativestyledtext.cpp index 7b1293e..e475d42 100644 --- a/tests/auto/declarative/qdeclarativestyledtext/tst_qdeclarativestyledtext.cpp +++ b/tests/auto/declarative/qdeclarativestyledtext/tst_qdeclarativestyledtext.cpp @@ -71,11 +71,16 @@ void tst_qdeclarativestyledtext::textOutput_data() QTest::newRow("missing </b>") << "<b>text" << "text"; QTest::newRow("bad nest") << "<b>text <i>italic</b></i>" << "text italic"; QTest::newRow("font color") << "<font color=\"red\">red text</font>" << "red text"; + QTest::newRow("font color: single quote") << "<font color='red'>red text</font>" << "red text"; QTest::newRow("font size") << "<font size=\"1\">text</font>" << "text"; QTest::newRow("font empty") << "<font>text</font>" << "text"; QTest::newRow("font bad 1") << "<font ezis=\"blah\">text</font>" << "text"; QTest::newRow("font bad 2") << "<font size=\"1>text</font>" << ""; QTest::newRow("extra close") << "<b>text</b></b>" << "text"; + QTest::newRow("extra space") << "<b >text</b>" << "text"; + QTest::newRow("entities") << "<b>this & that</b>" << "<b>this & that</b>"; + QTest::newRow("newline") << "text<br>more text" << QLatin1String("text") + QChar(QChar::LineSeparator) + QLatin1String("more text") ; + QTest::newRow("self-closing newline") << "text<br/>more text" << QLatin1String("text") + QChar(QChar::LineSeparator) + QLatin1String("more text") ; QTest::newRow("empty") << "" << ""; } diff --git a/tests/auto/declarative/qdeclarativesystempalette/qdeclarativesystempalette.pro b/tests/auto/declarative/qdeclarativesystempalette/qdeclarativesystempalette.pro index 0781774..b2705fa 100644 --- a/tests/auto/declarative/qdeclarativesystempalette/qdeclarativesystempalette.pro +++ b/tests/auto/declarative/qdeclarativesystempalette/qdeclarativesystempalette.pro @@ -3,3 +3,6 @@ contains(QT_CONFIG,declarative): QT += declarative gui macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativesystempalette.cpp + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativesystempalette/tst_qdeclarativesystempalette.cpp b/tests/auto/declarative/qdeclarativesystempalette/tst_qdeclarativesystempalette.cpp index 5c93952..7927d97 100644 --- a/tests/auto/declarative/qdeclarativesystempalette/tst_qdeclarativesystempalette.cpp +++ b/tests/auto/declarative/qdeclarativesystempalette/tst_qdeclarativesystempalette.cpp @@ -70,7 +70,7 @@ tst_qdeclarativesystempalette::tst_qdeclarativesystempalette() void tst_qdeclarativesystempalette::activePalette() { - QString componentStr = "import Qt 4.6\nSystemPalette { }"; + QString componentStr = "import Qt 4.7\nSystemPalette { }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeSystemPalette *object = qobject_cast<QDeclarativeSystemPalette*>(component.create()); @@ -99,7 +99,7 @@ void tst_qdeclarativesystempalette::activePalette() void tst_qdeclarativesystempalette::inactivePalette() { - QString componentStr = "import Qt 4.6\nSystemPalette { colorGroup: SystemPalette.Inactive }"; + QString componentStr = "import Qt 4.7\nSystemPalette { colorGroup: SystemPalette.Inactive }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeSystemPalette *object = qobject_cast<QDeclarativeSystemPalette*>(component.create()); @@ -129,7 +129,7 @@ void tst_qdeclarativesystempalette::inactivePalette() void tst_qdeclarativesystempalette::disabledPalette() { - QString componentStr = "import Qt 4.6\nSystemPalette { colorGroup: SystemPalette.Disabled }"; + QString componentStr = "import Qt 4.7\nSystemPalette { colorGroup: SystemPalette.Disabled }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeSystemPalette *object = qobject_cast<QDeclarativeSystemPalette*>(component.create()); @@ -159,7 +159,7 @@ void tst_qdeclarativesystempalette::disabledPalette() void tst_qdeclarativesystempalette::paletteChanged() { - QString componentStr = "import Qt 4.6\nSystemPalette { }"; + QString componentStr = "import Qt 4.7\nSystemPalette { }"; QDeclarativeComponent component(&engine); component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeSystemPalette *object = qobject_cast<QDeclarativeSystemPalette*>(component.create()); diff --git a/tests/auto/declarative/qdeclarativetext/data/embeddedImagesLocal.qml b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesLocal.qml new file mode 100644 index 0000000..5aeea56 --- /dev/null +++ b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesLocal.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +Text { + text: "<img src='http/exists.png'>" +} diff --git a/tests/auto/declarative/qdeclarativetext/data/embeddedImagesLocalError.qml b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesLocalError.qml new file mode 100644 index 0000000..17bb21c --- /dev/null +++ b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesLocalError.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +Text { + text: "<img src='http/notexists.png'>" +} diff --git a/tests/auto/declarative/qdeclarativetext/data/embeddedImagesRemote.qml b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesRemote.qml new file mode 100644 index 0000000..53b0266 --- /dev/null +++ b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesRemote.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +Text { + text: "<img src='http://127.0.0.1:14453/exists.png'>" +} diff --git a/tests/auto/declarative/qdeclarativetext/data/embeddedImagesRemoteError.qml b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesRemoteError.qml new file mode 100644 index 0000000..48c7a95 --- /dev/null +++ b/tests/auto/declarative/qdeclarativetext/data/embeddedImagesRemoteError.qml @@ -0,0 +1,5 @@ +import Qt 4.6 + +Text { + text: "<img src='http://127.0.0.1:14453/notexists.png'>" +} diff --git a/tests/auto/declarative/qdeclarativetext/data/http/exists.png b/tests/auto/declarative/qdeclarativetext/data/http/exists.png Binary files differnew file mode 100644 index 0000000..399bd0b --- /dev/null +++ b/tests/auto/declarative/qdeclarativetext/data/http/exists.png diff --git a/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro b/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro index 8b4b4d1..e70443e 100644 --- a/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro +++ b/tests/auto/declarative/qdeclarativetext/qdeclarativetext.pro @@ -1,5 +1,15 @@ load(qttest_p4) contains(QT_CONFIG,declarative): QT += declarative gui +QT += network macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativetext.cpp + +INCLUDEPATH += ../shared/ +HEADERS += ../shared/testhttpserver.h +SOURCES += ../shared/testhttpserver.cpp + +DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp b/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp index bbbbd83..edb4a32 100644 --- a/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp +++ b/tests/auto/declarative/qdeclarativetext/tst_qdeclarativetext.cpp @@ -48,6 +48,9 @@ #include <QGraphicsSceneMouseEvent> #include <qmath.h> +#include "../../../shared/util.h" +#include "testhttpserver.h" + class tst_qdeclarativetext : public QObject { @@ -62,6 +65,9 @@ private slots: void elide(); void textFormat(); + void embeddedImages_data(); + void embeddedImages(); + // ### these tests may be trivial void horizontalAlignment(); void verticalAlignment(); @@ -156,7 +162,7 @@ void tst_qdeclarativetext::text() { { QDeclarativeComponent textComponent(&engine); - textComponent.setData("import Qt 4.6\nText { text: \"\" }", QUrl::fromLocalFile("")); + textComponent.setData("import Qt 4.7\nText { text: \"\" }", QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); QVERIFY(textObject != 0); @@ -168,7 +174,7 @@ void tst_qdeclarativetext::text() for (int i = 0; i < standard.size(); i++) { - QString componentStr = "import Qt 4.6\nText { text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); @@ -181,7 +187,7 @@ void tst_qdeclarativetext::text() for (int i = 0; i < richText.size(); i++) { - QString componentStr = "import Qt 4.6\nText { text: \"" + richText.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"" + richText.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -198,7 +204,7 @@ void tst_qdeclarativetext::width() // uses Font metrics to find the width for standard and document to find the width for rich { QDeclarativeComponent textComponent(&engine); - textComponent.setData("import Qt 4.6\nText { text: \"\" }", QUrl::fromLocalFile("")); + textComponent.setData("import Qt 4.7\nText { text: \"\" }", QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); QVERIFY(textObject != 0); @@ -214,7 +220,7 @@ void tst_qdeclarativetext::width() qreal metricWidth = fm.size(Qt::TextExpandTabs && Qt::TextShowMnemonic, standard.at(i)).width(); metricWidth = qCeil(metricWidth); - QString componentStr = "import Qt 4.6\nText { text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -234,7 +240,7 @@ void tst_qdeclarativetext::width() int documentWidth = document.idealWidth(); - QString componentStr = "import Qt 4.6\nText { text: \"" + richText.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"" + richText.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -251,18 +257,18 @@ void tst_qdeclarativetext::wrap() // for specified width and wrap set true { QDeclarativeComponent textComponent(&engine); - textComponent.setData("import Qt 4.6\nText { text: \"Hello\"; wrap: true; width: 300 }", QUrl::fromLocalFile("")); + textComponent.setData("import Qt 4.7\nText { text: \"Hello\"; wrapMode: Text.WordWrap; width: 300 }", QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); textHeight = textObject->height(); QVERIFY(textObject != 0); - QVERIFY(textObject->wrap() == true); + QVERIFY(textObject->wrapMode() == QDeclarativeText::WordWrap); QCOMPARE(textObject->width(), 300.); } for (int i = 0; i < standard.size(); i++) { - QString componentStr = "import Qt 4.6\nText { wrap: true; width: 30; text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { wrapMode: Text.WordWrap; width: 30; text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -278,7 +284,7 @@ void tst_qdeclarativetext::wrap() for (int i = 0; i < richText.size(); i++) { - QString componentStr = "import Qt 4.6\nText { wrap: true; width: 30; text: \"" + richText.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { wrapMode: Text.WordWrap; width: 30; text: \"" + richText.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -286,8 +292,28 @@ void tst_qdeclarativetext::wrap() QVERIFY(textObject != 0); QCOMPARE(textObject->width(), 30.); QVERIFY(textObject->height() > textHeight); + + qreal oldHeight = textObject->height(); + textObject->setWidth(100); + QVERIFY(textObject->height() < oldHeight); } + // richtext again with a fixed height + for (int i = 0; i < richText.size(); i++) + { + QString componentStr = "import Qt 4.7\nText { wrapMode: Text.WordWrap; width: 30; height: 50; text: \"" + richText.at(i) + "\" }"; + QDeclarativeComponent textComponent(&engine); + textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); + QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); + + QVERIFY(textObject != 0); + QCOMPARE(textObject->width(), 30.); + QVERIFY(textObject->implicitHeight() > textHeight); + + qreal oldHeight = textObject->implicitHeight(); + textObject->setWidth(100); + QVERIFY(textObject->implicitHeight() < oldHeight); + } } void tst_qdeclarativetext::elide() @@ -300,7 +326,7 @@ void tst_qdeclarativetext::elide() { QDeclarativeComponent textComponent(&engine); - textComponent.setData(("import Qt 4.6\nText { text: \"\"; "+elide+" width: 100 }").toLatin1(), QUrl::fromLocalFile("")); + textComponent.setData(("import Qt 4.7\nText { text: \"\"; "+elide+" width: 100 }").toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); QCOMPARE(textObject->elideMode(), m); @@ -309,7 +335,7 @@ void tst_qdeclarativetext::elide() for (int i = 0; i < standard.size(); i++) { - QString componentStr = "import Qt 4.6\nText { "+elide+" width: 100; text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { "+elide+" width: 100; text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -321,7 +347,7 @@ void tst_qdeclarativetext::elide() // richtext - does nothing for (int i = 0; i < richText.size(); i++) { - QString componentStr = "import Qt 4.6\nText { "+elide+" width: 100; text: \"" + richText.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { "+elide+" width: 100; text: \"" + richText.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -336,7 +362,7 @@ void tst_qdeclarativetext::textFormat() { { QDeclarativeComponent textComponent(&engine); - textComponent.setData("import Qt 4.6\nText { text: \"Hello\"; textFormat: Text.RichText }", QUrl::fromLocalFile("")); + textComponent.setData("import Qt 4.7\nText { text: \"Hello\"; textFormat: Text.RichText }", QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); QVERIFY(textObject != 0); @@ -344,7 +370,7 @@ void tst_qdeclarativetext::textFormat() } { QDeclarativeComponent textComponent(&engine); - textComponent.setData("import Qt 4.6\nText { text: \"<b>Hello</b>\"; textFormat: Text.PlainText }", QUrl::fromLocalFile("")); + textComponent.setData("import Qt 4.7\nText { text: \"<b>Hello</b>\"; textFormat: Text.PlainText }", QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); QVERIFY(textObject != 0); @@ -361,7 +387,7 @@ void tst_qdeclarativetext::horizontalAlignment() { for (int j=0; j < horizontalAlignmentmentStrings.size(); j++) { - QString componentStr = "import Qt 4.6\nText { horizontalAlignment: \"" + horizontalAlignmentmentStrings.at(j) + "\"; text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { horizontalAlignment: \"" + horizontalAlignmentmentStrings.at(j) + "\"; text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -374,7 +400,7 @@ void tst_qdeclarativetext::horizontalAlignment() { for (int j=0; j < horizontalAlignmentmentStrings.size(); j++) { - QString componentStr = "import Qt 4.6\nText { horizontalAlignment: \"" + horizontalAlignmentmentStrings.at(j) + "\"; text: \"" + richText.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { horizontalAlignment: \"" + horizontalAlignmentmentStrings.at(j) + "\"; text: \"" + richText.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -393,7 +419,7 @@ void tst_qdeclarativetext::verticalAlignment() { for (int j=0; j < verticalAlignmentmentStrings.size(); j++) { - QString componentStr = "import Qt 4.6\nText { verticalAlignment: \"" + verticalAlignmentmentStrings.at(j) + "\"; text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { verticalAlignment: \"" + verticalAlignmentmentStrings.at(j) + "\"; text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -407,7 +433,7 @@ void tst_qdeclarativetext::verticalAlignment() { for (int j=0; j < verticalAlignmentmentStrings.size(); j++) { - QString componentStr = "import Qt 4.6\nText { verticalAlignment: \"" + verticalAlignmentmentStrings.at(j) + "\"; text: \"" + richText.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { verticalAlignment: \"" + verticalAlignmentmentStrings.at(j) + "\"; text: \"" + richText.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -423,7 +449,7 @@ void tst_qdeclarativetext::font() { //test size, then bold, then italic, then family { - QString componentStr = "import Qt 4.6\nText { font.pointSize: 40; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nText { font.pointSize: 40; text: \"Hello World\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -434,7 +460,7 @@ void tst_qdeclarativetext::font() } { - QString componentStr = "import Qt 4.6\nText { font.pixelSize: 40; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nText { font.pixelSize: 40; text: \"Hello World\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -445,7 +471,7 @@ void tst_qdeclarativetext::font() } { - QString componentStr = "import Qt 4.6\nText { font.bold: true; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nText { font.bold: true; text: \"Hello World\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -455,7 +481,7 @@ void tst_qdeclarativetext::font() } { - QString componentStr = "import Qt 4.6\nText { font.italic: true; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nText { font.italic: true; text: \"Hello World\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -465,7 +491,7 @@ void tst_qdeclarativetext::font() } { - QString componentStr = "import Qt 4.6\nText { font.family: \"Helvetica\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nText { font.family: \"Helvetica\"; text: \"Hello World\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -476,7 +502,7 @@ void tst_qdeclarativetext::font() } { - QString componentStr = "import Qt 4.6\nText { font.family: \"\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nText { font.family: \"\"; text: \"Hello World\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -490,7 +516,7 @@ void tst_qdeclarativetext::style() //test style for (int i = 0; i < styles.size(); i++) { - QString componentStr = "import Qt 4.6\nText { style: \"" + styleStrings.at(i) + "\"; styleColor: \"white\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nText { style: \"" + styleStrings.at(i) + "\"; styleColor: \"white\"; text: \"Hello World\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -505,7 +531,7 @@ void tst_qdeclarativetext::color() //test style for (int i = 0; i < colorStrings.size(); i++) { - QString componentStr = "import Qt 4.6\nText { color: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nText { color: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -516,7 +542,7 @@ void tst_qdeclarativetext::color() for (int i = 0; i < colorStrings.size(); i++) { - QString componentStr = "import Qt 4.6\nText { styleColor: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nText { styleColor: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -530,7 +556,7 @@ void tst_qdeclarativetext::color() { for (int j = 0; j < colorStrings.size(); j++) { - QString componentStr = "import Qt 4.6\nText { color: \"" + colorStrings.at(i) + "\"; styleColor: \"" + colorStrings.at(j) + "\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nText { color: \"" + colorStrings.at(i) + "\"; styleColor: \"" + colorStrings.at(j) + "\"; text: \"Hello World\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -544,7 +570,7 @@ void tst_qdeclarativetext::color() QColor testColor("#001234"); testColor.setAlpha(170); - QString componentStr = "import Qt 4.6\nText { color: \"" + colorStr + "\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nText { color: \"" + colorStr + "\"; text: \"Hello World\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -558,14 +584,14 @@ void tst_qdeclarativetext::smooth() for (int i = 0; i < standard.size(); i++) { { - QString componentStr = "import Qt 4.6\nText { smooth: true; text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { smooth: true; text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); QCOMPARE(textObject->smooth(), true); } { - QString componentStr = "import Qt 4.6\nText { text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -575,14 +601,14 @@ void tst_qdeclarativetext::smooth() for (int i = 0; i < richText.size(); i++) { { - QString componentStr = "import Qt 4.6\nText { smooth: true; text: \"" + richText.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { smooth: true; text: \"" + richText.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); QCOMPARE(textObject->smooth(), true); } { - QString componentStr = "import Qt 4.6\nText { text: \"" + richText.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"" + richText.at(i) + "\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -594,7 +620,7 @@ void tst_qdeclarativetext::smooth() void tst_qdeclarativetext::weight() { { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -603,7 +629,7 @@ void tst_qdeclarativetext::weight() QCOMPARE((int)textObject->font().weight(), (int)QDeclarativeFontValueType::Normal); } { - QString componentStr = "import Qt 4.6\nText { font.weight: \"Bold\"; text: \"Hello world!\" }"; + QString componentStr = "import Qt 4.7\nText { font.weight: \"Bold\"; text: \"Hello world!\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -616,7 +642,7 @@ void tst_qdeclarativetext::weight() void tst_qdeclarativetext::underline() { { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -625,7 +651,7 @@ void tst_qdeclarativetext::underline() QCOMPARE(textObject->font().underline(), false); } { - QString componentStr = "import Qt 4.6\nText { font.underline: true; text: \"Hello world!\" }"; + QString componentStr = "import Qt 4.7\nText { font.underline: true; text: \"Hello world!\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -638,7 +664,7 @@ void tst_qdeclarativetext::underline() void tst_qdeclarativetext::overline() { { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -647,7 +673,7 @@ void tst_qdeclarativetext::overline() QCOMPARE(textObject->font().overline(), false); } { - QString componentStr = "import Qt 4.6\nText { font.overline: true; text: \"Hello world!\" }"; + QString componentStr = "import Qt 4.7\nText { font.overline: true; text: \"Hello world!\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -660,7 +686,7 @@ void tst_qdeclarativetext::overline() void tst_qdeclarativetext::strikeout() { { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -669,7 +695,7 @@ void tst_qdeclarativetext::strikeout() QCOMPARE(textObject->font().strikeOut(), false); } { - QString componentStr = "import Qt 4.6\nText { font.strikeout: true; text: \"Hello world!\" }"; + QString componentStr = "import Qt 4.7\nText { font.strikeout: true; text: \"Hello world!\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -682,7 +708,7 @@ void tst_qdeclarativetext::strikeout() void tst_qdeclarativetext::capitalization() { { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -691,7 +717,7 @@ void tst_qdeclarativetext::capitalization() QCOMPARE((int)textObject->font().capitalization(), (int)QDeclarativeFontValueType::MixedCase); } { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\"; font.capitalization: \"AllUppercase\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\"; font.capitalization: \"AllUppercase\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -700,7 +726,7 @@ void tst_qdeclarativetext::capitalization() QCOMPARE((int)textObject->font().capitalization(), (int)QDeclarativeFontValueType::AllUppercase); } { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\"; font.capitalization: \"AllLowercase\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\"; font.capitalization: \"AllLowercase\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -709,7 +735,7 @@ void tst_qdeclarativetext::capitalization() QCOMPARE((int)textObject->font().capitalization(), (int)QDeclarativeFontValueType::AllLowercase); } { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\"; font.capitalization: \"SmallCaps\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\"; font.capitalization: \"SmallCaps\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -718,7 +744,7 @@ void tst_qdeclarativetext::capitalization() QCOMPARE((int)textObject->font().capitalization(), (int)QDeclarativeFontValueType::SmallCaps); } { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\"; font.capitalization: \"Capitalize\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\"; font.capitalization: \"Capitalize\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -731,7 +757,7 @@ void tst_qdeclarativetext::capitalization() void tst_qdeclarativetext::letterSpacing() { { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -740,7 +766,7 @@ void tst_qdeclarativetext::letterSpacing() QCOMPARE(textObject->font().letterSpacing(), 0.0); } { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\"; font.letterSpacing: -50 }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\"; font.letterSpacing: -50 }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -749,7 +775,7 @@ void tst_qdeclarativetext::letterSpacing() QCOMPARE(textObject->font().letterSpacing(), -50.); } { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\"; font.letterSpacing: 200 }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\"; font.letterSpacing: 200 }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -762,7 +788,7 @@ void tst_qdeclarativetext::letterSpacing() void tst_qdeclarativetext::wordSpacing() { { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -771,7 +797,7 @@ void tst_qdeclarativetext::wordSpacing() QCOMPARE(textObject->font().wordSpacing(), 0.0); } { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\"; font.wordSpacing: -50 }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\"; font.wordSpacing: -50 }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -780,7 +806,7 @@ void tst_qdeclarativetext::wordSpacing() QCOMPARE(textObject->font().wordSpacing(), -50.); } { - QString componentStr = "import Qt 4.6\nText { text: \"Hello world!\"; font.wordSpacing: 200 }"; + QString componentStr = "import Qt 4.7\nText { text: \"Hello world!\"; font.wordSpacing: 200 }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -811,7 +837,7 @@ public slots: void tst_qdeclarativetext::clickLink() { { - QString componentStr = "import Qt 4.6\nText { text: \"<a href=\\\"http://qt.nokia.com\\\">Hello world!</a>\" }"; + QString componentStr = "import Qt 4.7\nText { text: \"<a href=\\\"http://qt.nokia.com\\\">Hello world!</a>\" }"; QDeclarativeComponent textComponent(&engine); textComponent.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); @@ -839,6 +865,49 @@ void tst_qdeclarativetext::clickLink() } } +void tst_qdeclarativetext::embeddedImages_data() +{ + QTest::addColumn<QUrl>("qmlfile"); + QTest::addColumn<QString>("error"); + QTest::newRow("local") << QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesLocal.qml") << ""; + QTest::newRow("local-error") << QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesLocalError.qml") + << "QML Text ("+QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesLocalError.qml").toString()+":3:1) Cannot open: " + QUrl::fromLocalFile(SRCDIR "/data/http/notexists.png").toString(); + QTest::newRow("remote") << QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesRemote.qml") << ""; + QTest::newRow("remote-error") << QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesRemoteError.qml") + << "QML Text ("+QUrl::fromLocalFile(SRCDIR "/data/embeddedImagesRemoteError.qml").toString()+":3:1) Error downloading http://127.0.0.1:14453/notexists.png - server replied: Not found"; +} + +void tst_qdeclarativetext::embeddedImages() +{ + // Tests QTBUG-9900 + + QFETCH(QUrl, qmlfile); + QFETCH(QString, error); + + TestHTTPServer server(14453); + server.serveDirectory(SRCDIR "/data/http"); + + if (!error.isEmpty()) + QTest::ignoreMessage(QtWarningMsg, error.toLatin1()); + + QDeclarativeComponent textComponent(&engine, qmlfile); + QDeclarativeText *textObject = qobject_cast<QDeclarativeText*>(textComponent.create()); + + QVERIFY(textObject != 0); + + QTRY_COMPARE(textObject->resourcesLoading(), 0); + + QPixmap pm(SRCDIR "/data/http/exists.png"); + if (error.isEmpty()) { + QCOMPARE(textObject->width(), double(pm.width())); + QCOMPARE(textObject->height(), double(pm.height())); + } else { + QVERIFY(16 != pm.width()); // check test is effective + QCOMPARE(textObject->width(), 16.0); // default size of QTextDocument broken image icon + QCOMPARE(textObject->height(), 16.0); + } +} + QTEST_MAIN(tst_qdeclarativetext) #include "tst_qdeclarativetext.moc" diff --git a/tests/auto/declarative/qdeclarativetextedit/data/http/qmldir b/tests/auto/declarative/qdeclarativetextedit/data/http/qmldir new file mode 100644 index 0000000..886e6ff --- /dev/null +++ b/tests/auto/declarative/qdeclarativetextedit/data/http/qmldir @@ -0,0 +1,4 @@ +ErrItem ErrItem.qml +NormItem NormItem.qml +FailItem FailItem.qml +WaitItem WaitItem.qml diff --git a/tests/auto/declarative/qdeclarativetextedit/data/navigation.qml b/tests/auto/declarative/qdeclarativetextedit/data/navigation.qml index 8d7dbbc..1aed8d8 100644 --- a/tests/auto/declarative/qdeclarativetextedit/data/navigation.qml +++ b/tests/auto/declarative/qdeclarativetextedit/data/navigation.qml @@ -1,7 +1,7 @@ import Qt 4.6 Rectangle { - property var myInput: input + property variant myInput: input width: 800; height: 600; color: "blue" diff --git a/tests/auto/declarative/qdeclarativetextedit/data/readOnly.qml b/tests/auto/declarative/qdeclarativetextedit/data/readOnly.qml index 103a627..69a6479 100644 --- a/tests/auto/declarative/qdeclarativetextedit/data/readOnly.qml +++ b/tests/auto/declarative/qdeclarativetextedit/data/readOnly.qml @@ -1,7 +1,7 @@ import Qt 4.6 Rectangle { - property var myInput: input + property variant myInput: input width: 800; height: 600; color: "blue" diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index b677fec..25101ba 100644 --- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -79,6 +79,7 @@ private slots: void inputMethodHints(); void cursorDelegate(); + void delegateLoading_data(); void delegateLoading(); void navigation(); void readOnly(); @@ -149,7 +150,7 @@ void tst_qdeclarativetextedit::text() { { QDeclarativeComponent texteditComponent(&engine); - texteditComponent.setData("import Qt 4.6\nTextEdit { text: \"\" }", QUrl()); + texteditComponent.setData("import Qt 4.7\nTextEdit { text: \"\" }", QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); QVERIFY(textEditObject != 0); @@ -158,7 +159,7 @@ void tst_qdeclarativetextedit::text() for (int i = 0; i < standard.size(); i++) { - QString componentStr = "import Qt 4.6\nTextEdit { text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -169,7 +170,7 @@ void tst_qdeclarativetextedit::text() for (int i = 0; i < richText.size(); i++) { - QString componentStr = "import Qt 4.6\nTextEdit { text: \"" + richText.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { text: \"" + richText.at(i) + "\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -189,7 +190,7 @@ void tst_qdeclarativetextedit::width() // uses Font metrics to find the width for standard and document to find the width for rich { QDeclarativeComponent texteditComponent(&engine); - texteditComponent.setData("import Qt 4.6\nTextEdit { text: \"\" }", QUrl()); + texteditComponent.setData("import Qt 4.7\nTextEdit { text: \"\" }", QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); QVERIFY(textEditObject != 0); @@ -203,7 +204,7 @@ void tst_qdeclarativetextedit::width() qreal metricWidth = fm.size(Qt::TextExpandTabs && Qt::TextShowMnemonic, standard.at(i)).width(); metricWidth = floor(metricWidth); - QString componentStr = "import Qt 4.6\nTextEdit { text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -220,7 +221,7 @@ void tst_qdeclarativetextedit::width() int documentWidth = document.idealWidth(); - QString componentStr = "import Qt 4.6\nTextEdit { text: \"" + richText.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { text: \"" + richText.at(i) + "\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -235,7 +236,7 @@ void tst_qdeclarativetextedit::wrap() // for specified width and wrap set true { QDeclarativeComponent texteditComponent(&engine); - texteditComponent.setData("import Qt 4.6\nTextEdit { text: \"\"; wrap: true; width: 300 }", QUrl()); + texteditComponent.setData("import Qt 4.7\nTextEdit { text: \"\"; wrapMode: TextEdit.WordWrap; width: 300 }", QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); QVERIFY(textEditObject != 0); @@ -244,7 +245,7 @@ void tst_qdeclarativetextedit::wrap() for (int i = 0; i < standard.size(); i++) { - QString componentStr = "import Qt 4.6\nTextEdit { wrap: true; width: 300; text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { wrapMode: TextEdit.WordWrap; width: 300; text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -255,7 +256,7 @@ void tst_qdeclarativetextedit::wrap() for (int i = 0; i < richText.size(); i++) { - QString componentStr = "import Qt 4.6\nTextEdit { wrap: true; width: 300; text: \"" + richText.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { wrapMode: TextEdit.WordWrap; width: 300; text: \"" + richText.at(i) + "\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -270,7 +271,7 @@ void tst_qdeclarativetextedit::textFormat() { { QDeclarativeComponent textComponent(&engine); - textComponent.setData("import Qt 4.6\nTextEdit { text: \"Hello\"; textFormat: Text.RichText }", QUrl::fromLocalFile("")); + textComponent.setData("import Qt 4.7\nTextEdit { text: \"Hello\"; textFormat: Text.RichText }", QUrl::fromLocalFile("")); QDeclarativeTextEdit *textObject = qobject_cast<QDeclarativeTextEdit*>(textComponent.create()); QVERIFY(textObject != 0); @@ -278,7 +279,7 @@ void tst_qdeclarativetextedit::textFormat() } { QDeclarativeComponent textComponent(&engine); - textComponent.setData("import Qt 4.6\nTextEdit { text: \"<b>Hello</b>\"; textFormat: Text.PlainText }", QUrl::fromLocalFile("")); + textComponent.setData("import Qt 4.7\nTextEdit { text: \"<b>Hello</b>\"; textFormat: Text.PlainText }", QUrl::fromLocalFile("")); QDeclarativeTextEdit *textObject = qobject_cast<QDeclarativeTextEdit*>(textComponent.create()); QVERIFY(textObject != 0); @@ -295,7 +296,7 @@ void tst_qdeclarativetextedit::hAlign() { for (int j=0; j < hAlignmentStrings.size(); j++) { - QString componentStr = "import Qt 4.6\nTextEdit { horizontalAlignment: \"" + hAlignmentStrings.at(j) + "\"; text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { horizontalAlignment: \"" + hAlignmentStrings.at(j) + "\"; text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -309,7 +310,7 @@ void tst_qdeclarativetextedit::hAlign() { for (int j=0; j < hAlignmentStrings.size(); j++) { - QString componentStr = "import Qt 4.6\nTextEdit { horizontalAlignment: \"" + hAlignmentStrings.at(j) + "\"; text: \"" + richText.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { horizontalAlignment: \"" + hAlignmentStrings.at(j) + "\"; text: \"" + richText.at(i) + "\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -329,7 +330,7 @@ void tst_qdeclarativetextedit::vAlign() { for (int j=0; j < vAlignmentStrings.size(); j++) { - QString componentStr = "import Qt 4.6\nTextEdit { verticalAlignment: \"" + vAlignmentStrings.at(j) + "\"; text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { verticalAlignment: \"" + vAlignmentStrings.at(j) + "\"; text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -343,7 +344,7 @@ void tst_qdeclarativetextedit::vAlign() { for (int j=0; j < vAlignmentStrings.size(); j++) { - QString componentStr = "import Qt 4.6\nTextEdit { verticalAlignment: \"" + vAlignmentStrings.at(j) + "\"; text: \"" + richText.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { verticalAlignment: \"" + vAlignmentStrings.at(j) + "\"; text: \"" + richText.at(i) + "\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -359,7 +360,7 @@ void tst_qdeclarativetextedit::font() { //test size, then bold, then italic, then family { - QString componentStr = "import Qt 4.6\nTextEdit { font.pointSize: 40; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { font.pointSize: 40; text: \"Hello World\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -371,7 +372,7 @@ void tst_qdeclarativetextedit::font() } { - QString componentStr = "import Qt 4.6\nTextEdit { font.bold: true; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { font.bold: true; text: \"Hello World\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -382,7 +383,7 @@ void tst_qdeclarativetextedit::font() } { - QString componentStr = "import Qt 4.6\nTextEdit { font.italic: true; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { font.italic: true; text: \"Hello World\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -393,7 +394,7 @@ void tst_qdeclarativetextedit::font() } { - QString componentStr = "import Qt 4.6\nTextEdit { font.family: \"Helvetica\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { font.family: \"Helvetica\"; text: \"Hello World\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -405,7 +406,7 @@ void tst_qdeclarativetextedit::font() } { - QString componentStr = "import Qt 4.6\nTextEdit { font.family: \"\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { font.family: \"\"; text: \"Hello World\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -420,7 +421,7 @@ void tst_qdeclarativetextedit::color() //test normal for (int i = 0; i < colorStrings.size(); i++) { - QString componentStr = "import Qt 4.6\nTextEdit { color: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { color: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -432,7 +433,7 @@ void tst_qdeclarativetextedit::color() //test selection for (int i = 0; i < colorStrings.size(); i++) { - QString componentStr = "import Qt 4.6\nTextEdit { selectionColor: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { selectionColor: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -443,7 +444,7 @@ void tst_qdeclarativetextedit::color() //test selected text for (int i = 0; i < colorStrings.size(); i++) { - QString componentStr = "import Qt 4.6\nTextEdit { selectedTextColor: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { selectedTextColor: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -456,7 +457,7 @@ void tst_qdeclarativetextedit::color() QColor testColor("#001234"); testColor.setAlpha(170); - QString componentStr = "import Qt 4.6\nTextEdit { color: \"" + colorStr + "\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { color: \"" + colorStr + "\"; text: \"Hello World\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -469,7 +470,7 @@ void tst_qdeclarativetextedit::color() void tst_qdeclarativetextedit::textMargin() { for(qreal i=0; i<=10; i+=0.3){ - QString componentStr = "import Qt 4.6\nTextEdit { textMargin: " + QString::number(i) + "; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { textMargin: " + QString::number(i) + "; text: \"Hello World\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -481,7 +482,7 @@ void tst_qdeclarativetextedit::textMargin() void tst_qdeclarativetextedit::persistentSelection() { { - QString componentStr = "import Qt 4.6\nTextEdit { persistentSelection: true; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { persistentSelection: true; text: \"Hello World\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -490,7 +491,7 @@ void tst_qdeclarativetextedit::persistentSelection() } { - QString componentStr = "import Qt 4.6\nTextEdit { persistentSelection: false; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { persistentSelection: false; text: \"Hello World\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -502,7 +503,7 @@ void tst_qdeclarativetextedit::persistentSelection() void tst_qdeclarativetextedit::focusOnPress() { { - QString componentStr = "import Qt 4.6\nTextEdit { focusOnPress: true; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { focusOnPress: true; text: \"Hello World\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -511,7 +512,7 @@ void tst_qdeclarativetextedit::focusOnPress() } { - QString componentStr = "import Qt 4.6\nTextEdit { focusOnPress: false; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextEdit { focusOnPress: false; text: \"Hello World\" }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -523,7 +524,7 @@ void tst_qdeclarativetextedit::focusOnPress() void tst_qdeclarativetextedit::selection() { QString testStr = standard[0];//TODO: What should happen for multiline/rich text? - QString componentStr = "import Qt 4.6\nTextEdit { text: \""+ testStr +"\"; }"; + QString componentStr = "import Qt 4.7\nTextEdit { text: \""+ testStr +"\"; }"; QDeclarativeComponent texteditComponent(&engine); texteditComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); @@ -641,39 +642,60 @@ void tst_qdeclarativetextedit::cursorDelegate() QVERIFY(!textEditObject->findChild<QDeclarativeItem*>("cursorInstance")); } +void tst_qdeclarativetextedit::delegateLoading_data() +{ + QTest::addColumn<QString>("qmlfile"); + QTest::addColumn<QString>("error"); + + // import installed + QTest::newRow("pass") << "cursorHttpTestPass.qml" << ""; + QTest::newRow("fail1") << "cursorHttpTestFail1.qml" << ":-1: Network error for URL http://localhost:42332/FailItem.qml "; + QTest::newRow("fail2") << "cursorHttpTestFail2.qml" << "http://localhost:42332/ErrItem.qml:4:5: Fungus is not a type "; +} + void tst_qdeclarativetextedit::delegateLoading() { + QFETCH(QString, qmlfile); + QFETCH(QString, error); + TestHTTPServer server(42332); server.serveDirectory(SRCDIR "/data/httpfail", TestHTTPServer::Disconnect); server.serveDirectory(SRCDIR "/data/httpslow", TestHTTPServer::Delay); server.serveDirectory(SRCDIR "/data/http"); + QDeclarativeView* view = new QDeclarativeView(0); - view->setSource(QUrl("http://localhost:42332/cursorHttpTestPass.qml")); - view->show(); - view->setFocus(); - QTRY_VERIFY(view->rootObject());//Wait for loading to finish. - QDeclarativeTextEdit *textEditObject = view->rootObject()->findChild<QDeclarativeTextEdit*>("textEditObject"); - // view->rootObject()->dumpObjectTree(); - QVERIFY(textEditObject != 0); - textEditObject->setFocus(true); - QDeclarativeItem *delegate; - delegate = view->rootObject()->findChild<QDeclarativeItem*>("delegateOkay"); - QVERIFY(delegate); - delegate = view->rootObject()->findChild<QDeclarativeItem*>("delegateSlow"); - QVERIFY(delegate); - view->setSource(QUrl("http://localhost:42332/cursorHttpTestFail1.qml")); - view->show(); - view->setFocus(); - QTRY_VERIFY(!view->rootObject()); // there is fail item inside this test - view->setSource(QUrl("http://localhost:42332/cursorHttpTestFail2.qml")); + + view->setSource(QUrl(QLatin1String("http://localhost:42332/") + qmlfile)); view->show(); view->setFocus(); - QTRY_VERIFY(!view->rootObject()); // there is fail item inside this test - //ErrorB should get a component which is ready but component.create() returns null + + if (!error.isEmpty()) { + QTest::ignoreMessage(QtWarningMsg, error.toUtf8()); + QTRY_VERIFY(view->status()==QDeclarativeView::Error); + QTRY_VERIFY(!view->rootObject()); // there is fail item inside this test + } else { + QTRY_VERIFY(view->rootObject());//Wait for loading to finish. + QDeclarativeTextEdit *textEditObject = view->rootObject()->findChild<QDeclarativeTextEdit*>("textEditObject"); + // view->rootObject()->dumpObjectTree(); + QVERIFY(textEditObject != 0); + textEditObject->setFocus(true); + QDeclarativeItem *delegate; + delegate = view->rootObject()->findChild<QDeclarativeItem*>("delegateOkay"); + QVERIFY(delegate); + delegate = view->rootObject()->findChild<QDeclarativeItem*>("delegateSlow"); + QVERIFY(delegate); + + delete delegate; + } + + + //A test should be added here with a component which is ready but component.create() returns null //Not sure how to accomplish this with QDeclarativeTextEdits cursor delegate - //###This could be a case of overzealous defensive programming + //###This was only needed for code coverage, and could be a case of overzealous defensive programming //delegate = view->rootObject()->findChild<QDeclarativeItem*>("delegateErrorB"); //QVERIFY(!delegate); + + delete view; } /* diff --git a/tests/auto/declarative/qdeclarativetextinput/data/echoMode.qml b/tests/auto/declarative/qdeclarativetextinput/data/echoMode.qml new file mode 100644 index 0000000..66a2017 --- /dev/null +++ b/tests/auto/declarative/qdeclarativetextinput/data/echoMode.qml @@ -0,0 +1,11 @@ +import Qt 4.7 + +Rectangle { + property QtObject myInput: input + + width: 400; height: 200; color: "green" + + TextInput { id: input; focus: true + text: "ABCDefgh" + } +} diff --git a/tests/auto/declarative/qdeclarativetextinput/data/navigation.qml b/tests/auto/declarative/qdeclarativetextinput/data/navigation.qml index 493db5b..04f06da 100644 --- a/tests/auto/declarative/qdeclarativetextinput/data/navigation.qml +++ b/tests/auto/declarative/qdeclarativetextinput/data/navigation.qml @@ -1,7 +1,7 @@ import Qt 4.6 Rectangle { - property var myInput: input + property variant myInput: input width: 800; height: 600; color: "blue" diff --git a/tests/auto/declarative/qdeclarativetextinput/data/readOnly.qml b/tests/auto/declarative/qdeclarativetextinput/data/readOnly.qml index c47371a..41e8b59 100644 --- a/tests/auto/declarative/qdeclarativetextinput/data/readOnly.qml +++ b/tests/auto/declarative/qdeclarativetextinput/data/readOnly.qml @@ -1,7 +1,7 @@ import Qt 4.6 Rectangle { - property var myInput: input + property variant myInput: input width: 800; height: 600; color: "blue" diff --git a/tests/auto/declarative/qdeclarativetextinput/data/validators.qml b/tests/auto/declarative/qdeclarativetextinput/data/validators.qml index 0c81548..4b1ba27 100644 --- a/tests/auto/declarative/qdeclarativetextinput/data/validators.qml +++ b/tests/auto/declarative/qdeclarativetextinput/data/validators.qml @@ -1,22 +1,21 @@ import Qt 4.7 Item { - property var intInput: intInput - property var dblInput: dblInput - property var strInput: strInput + property variant intInput: intInput + property variant dblInput: dblInput + property variant strInput: strInput width: 800; height: 600; Column{ TextInput { id: intInput; - validator: QIntValidator{top: 11; bottom: 2} + validator: IntValidator{top: 11; bottom: 2} } TextInput { id: dblInput; - validator: QDoubleValidator{top: 12.12; bottom: 2.93; decimals: 2; notation: QDoubleValidator.StandardNotation} + validator: DoubleValidator{top: 12.12; bottom: 2.93; decimals: 2; notation: DoubleValidator.StandardNotation} } TextInput { id: strInput; - //Requires QTBUG-8025 to be implemented first - //validator: QRegExpValidator { regExp: /[a-zA-z]{2,4}/;} + validator: RegExpValidator { regExp: /[a-zA-z]{2,4}/ } } } diff --git a/tests/auto/declarative/qdeclarativetextinput/qdeclarativetextinput.pro b/tests/auto/declarative/qdeclarativetextinput/qdeclarativetextinput.pro index 5aed51f..957e75c 100644 --- a/tests/auto/declarative/qdeclarativetextinput/qdeclarativetextinput.pro +++ b/tests/auto/declarative/qdeclarativetextinput/qdeclarativetextinput.pro @@ -6,3 +6,4 @@ SOURCES += tst_qdeclarativetextinput.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + diff --git a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp index 8b513e8..fcd7527 100644 --- a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp +++ b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp @@ -72,7 +72,10 @@ private slots: void readOnly(); void sendRequestSoftwareInputPanelEvent(); + void setHAlignClearCache(); + void focusOutClearSelection(); + void echoMode(); private: void simulateKey(QDeclarativeView *, int key); QDeclarativeView *createView(const QString &filename); @@ -106,22 +109,26 @@ void tst_qdeclarativetextinput::text() { { QDeclarativeComponent textinputComponent(&engine); - textinputComponent.setData("import Qt 4.6\nTextInput { text: \"\" }", QUrl()); + textinputComponent.setData("import Qt 4.7\nTextInput { text: \"\" }", QUrl()); QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput*>(textinputComponent.create()); QVERIFY(textinputObject != 0); QCOMPARE(textinputObject->text(), QString("")); + + delete textinputObject; } for (int i = 0; i < standard.size(); i++) { - QString componentStr = "import Qt 4.6\nTextInput { text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nTextInput { text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent textinputComponent(&engine); textinputComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput*>(textinputComponent.create()); QVERIFY(textinputObject != 0); QCOMPARE(textinputObject->text(), standard.at(i)); + + delete textinputObject; } } @@ -131,11 +138,13 @@ void tst_qdeclarativetextinput::width() // uses Font metrics to find the width for standard { QDeclarativeComponent textinputComponent(&engine); - textinputComponent.setData("import Qt 4.6\nTextInput { text: \"\" }", QUrl()); + textinputComponent.setData("import Qt 4.7\nTextInput { text: \"\" }", QUrl()); QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput*>(textinputComponent.create()); QVERIFY(textinputObject != 0); QCOMPARE(textinputObject->width(), 1.);//1 for the cursor + + delete textinputObject; } for (int i = 0; i < standard.size(); i++) @@ -144,13 +153,15 @@ void tst_qdeclarativetextinput::width() QFontMetricsF fm(f); qreal metricWidth = fm.width(standard.at(i)); - QString componentStr = "import Qt 4.6\nTextInput { text: \"" + standard.at(i) + "\" }"; + QString componentStr = "import Qt 4.7\nTextInput { text: \"" + standard.at(i) + "\" }"; QDeclarativeComponent textinputComponent(&engine); textinputComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput*>(textinputComponent.create()); QVERIFY(textinputObject != 0); QCOMPARE(textinputObject->width(), qreal(metricWidth) + 1.);//1 for the cursor + + delete textinputObject; } } @@ -158,7 +169,7 @@ void tst_qdeclarativetextinput::font() { //test size, then bold, then italic, then family { - QString componentStr = "import Qt 4.6\nTextInput { font.pointSize: 40; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextInput { font.pointSize: 40; text: \"Hello World\" }"; QDeclarativeComponent textinputComponent(&engine); textinputComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput*>(textinputComponent.create()); @@ -167,10 +178,12 @@ void tst_qdeclarativetextinput::font() QCOMPARE(textinputObject->font().pointSize(), 40); QCOMPARE(textinputObject->font().bold(), false); QCOMPARE(textinputObject->font().italic(), false); + + delete textinputObject; } { - QString componentStr = "import Qt 4.6\nTextInput { font.bold: true; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextInput { font.bold: true; text: \"Hello World\" }"; QDeclarativeComponent textinputComponent(&engine); textinputComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput*>(textinputComponent.create()); @@ -178,10 +191,12 @@ void tst_qdeclarativetextinput::font() QVERIFY(textinputObject != 0); QCOMPARE(textinputObject->font().bold(), true); QCOMPARE(textinputObject->font().italic(), false); + + delete textinputObject; } { - QString componentStr = "import Qt 4.6\nTextInput { font.italic: true; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextInput { font.italic: true; text: \"Hello World\" }"; QDeclarativeComponent textinputComponent(&engine); textinputComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput*>(textinputComponent.create()); @@ -189,10 +204,12 @@ void tst_qdeclarativetextinput::font() QVERIFY(textinputObject != 0); QCOMPARE(textinputObject->font().italic(), true); QCOMPARE(textinputObject->font().bold(), false); + + delete textinputObject; } { - QString componentStr = "import Qt 4.6\nTextInput { font.family: \"Helvetica\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextInput { font.family: \"Helvetica\"; text: \"Hello World\" }"; QDeclarativeComponent textinputComponent(&engine); textinputComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput*>(textinputComponent.create()); @@ -201,16 +218,20 @@ void tst_qdeclarativetextinput::font() QCOMPARE(textinputObject->font().family(), QString("Helvetica")); QCOMPARE(textinputObject->font().bold(), false); QCOMPARE(textinputObject->font().italic(), false); + + delete textinputObject; } { - QString componentStr = "import Qt 4.6\nTextInput { font.family: \"\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextInput { font.family: \"\"; text: \"Hello World\" }"; QDeclarativeComponent textinputComponent(&engine); textinputComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput*>(textinputComponent.create()); QVERIFY(textinputObject != 0); QCOMPARE(textinputObject->font().family(), QString("")); + + delete textinputObject; } } @@ -219,34 +240,40 @@ void tst_qdeclarativetextinput::color() //test color for (int i = 0; i < colorStrings.size(); i++) { - QString componentStr = "import Qt 4.6\nTextInput { color: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextInput { color: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; QDeclarativeComponent textinputComponent(&engine); textinputComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput*>(textinputComponent.create()); QVERIFY(textinputObject != 0); QCOMPARE(textinputObject->color(), QColor(colorStrings.at(i))); + + delete textinputObject; } //test selection color for (int i = 0; i < colorStrings.size(); i++) { - QString componentStr = "import Qt 4.6\nTextInput { selectionColor: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextInput { selectionColor: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; QDeclarativeComponent textinputComponent(&engine); textinputComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput*>(textinputComponent.create()); QVERIFY(textinputObject != 0); QCOMPARE(textinputObject->selectionColor(), QColor(colorStrings.at(i))); + + delete textinputObject; } //test selected text color for (int i = 0; i < colorStrings.size(); i++) { - QString componentStr = "import Qt 4.6\nTextInput { selectedTextColor: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextInput { selectedTextColor: \"" + colorStrings.at(i) + "\"; text: \"Hello World\" }"; QDeclarativeComponent textinputComponent(&engine); textinputComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput*>(textinputComponent.create()); QVERIFY(textinputObject != 0); QCOMPARE(textinputObject->selectedTextColor(), QColor(colorStrings.at(i))); + + delete textinputObject; } { @@ -254,20 +281,22 @@ void tst_qdeclarativetextinput::color() QColor testColor("#001234"); testColor.setAlpha(170); - QString componentStr = "import Qt 4.6\nTextInput { color: \"" + colorStr + "\"; text: \"Hello World\" }"; + QString componentStr = "import Qt 4.7\nTextInput { color: \"" + colorStr + "\"; text: \"Hello World\" }"; QDeclarativeComponent textinputComponent(&engine); textinputComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput*>(textinputComponent.create()); QVERIFY(textinputObject != 0); QCOMPARE(textinputObject->color(), testColor); + + delete textinputObject; } } void tst_qdeclarativetextinput::selection() { QString testStr = standard[0]; - QString componentStr = "import Qt 4.6\nTextInput { text: \""+ testStr +"\"; }"; + QString componentStr = "import Qt 4.7\nTextInput { text: \""+ testStr +"\"; }"; QDeclarativeComponent textinputComponent(&engine); textinputComponent.setData(componentStr.toLatin1(), QUrl()); QDeclarativeTextInput *textinputObject = qobject_cast<QDeclarativeTextInput*>(textinputComponent.create()); @@ -343,11 +372,13 @@ void tst_qdeclarativetextinput::selection() QVERIFY(textinputObject->selectedText().size() == 10); textinputObject->setSelectionEnd(100); QVERIFY(textinputObject->selectedText().size() == 10); + + delete textinputObject; } void tst_qdeclarativetextinput::maxLength() { - //QString componentStr = "import Qt 4.6\nTextInput { maximumLength: 10; }"; + //QString componentStr = "import Qt 4.7\nTextInput { maximumLength: 10; }"; QDeclarativeView *canvas = createView(SRCDIR "/data/maxLength.qml"); canvas->show(); canvas->setFocus(); @@ -370,12 +401,14 @@ void tst_qdeclarativetextinput::maxLength() QTest::keyPress(canvas, Qt::Key_A); QTest::keyRelease(canvas, Qt::Key_A, Qt::NoModifier ,10); } + + delete canvas; } void tst_qdeclarativetextinput::masks() { //Not a comprehensive test of the possible masks, that's done elsewhere (QLineEdit) - //QString componentStr = "import Qt 4.6\nTextInput { inputMask: 'HHHHhhhh'; }"; + //QString componentStr = "import Qt 4.7\nTextInput { inputMask: 'HHHHhhhh'; }"; QDeclarativeView *canvas = createView(SRCDIR "/data/masks.qml"); canvas->show(); canvas->setFocus(); @@ -392,6 +425,8 @@ void tst_qdeclarativetextinput::masks() QTest::keyPress(canvas, Qt::Key_A); QTest::keyRelease(canvas, Qt::Key_A, Qt::NoModifier ,10); } + + delete canvas; } void tst_qdeclarativetextinput::validators() @@ -462,7 +497,6 @@ void tst_qdeclarativetextinput::validators() QVERIFY(strInput->hasFocus() == true); QTest::keyPress(canvas, Qt::Key_1); QTest::keyRelease(canvas, Qt::Key_1, Qt::NoModifier ,10); - QEXPECT_FAIL("","Will not work until QTBUG-8025 is resolved", Abort); QCOMPARE(strInput->text(), QLatin1String("")); QCOMPARE(strInput->hasAcceptableInput(), false); QTest::keyPress(canvas, Qt::Key_A); @@ -485,6 +519,8 @@ void tst_qdeclarativetextinput::validators() QTest::keyRelease(canvas, Qt::Key_A, Qt::NoModifier ,10); QCOMPARE(strInput->text(), QLatin1String("aaaa")); QCOMPARE(strInput->hasAcceptableInput(), true); + + delete canvas; } void tst_qdeclarativetextinput::inputMethodHints() @@ -499,6 +535,8 @@ void tst_qdeclarativetextinput::inputMethodHints() QVERIFY(textinputObject->inputMethodHints() & Qt::ImhNoPredictiveText); textinputObject->setInputMethodHints(Qt::ImhUppercaseOnly); QVERIFY(textinputObject->inputMethodHints() & Qt::ImhUppercaseOnly); + + delete canvas; } /* @@ -523,7 +561,7 @@ void tst_qdeclarativetextinput::navigation() QVERIFY(input->hasFocus() == false); simulateKey(canvas, Qt::Key_Right); QVERIFY(input->hasFocus() == true); - //QT-2944: If text is selected, then we should deselect first. + //QT-2944: If text is selected, ensure we deselect upon cursor motion input->setCursorPosition(input->text().length()); input->setSelectionStart(0); input->setSelectionEnd(input->text().length()); @@ -536,6 +574,8 @@ void tst_qdeclarativetextinput::navigation() QVERIFY(input->hasFocus() == false); simulateKey(canvas, Qt::Key_Left); QVERIFY(input->hasFocus() == true); + + delete canvas; } void tst_qdeclarativetextinput::cursorDelegate() @@ -563,6 +603,8 @@ void tst_qdeclarativetextinput::cursorDelegate() //Test Delegate gets deleted textInputObject->setCursorDelegate(0); QVERIFY(!textInputObject->findChild<QDeclarativeItem*>("cursorInstance")); + + delete view; } void tst_qdeclarativetextinput::readOnly() @@ -585,6 +627,46 @@ void tst_qdeclarativetextinput::readOnly() simulateKey(canvas, Qt::Key_Space); simulateKey(canvas, Qt::Key_Escape); QCOMPARE(input->text(), initial); + + delete canvas; +} + +void tst_qdeclarativetextinput::echoMode() +{ + QDeclarativeView *canvas = createView(SRCDIR "/data/echoMode.qml"); + canvas->show(); + canvas->setFocus(); + + QVERIFY(canvas->rootObject() != 0); + + QDeclarativeTextInput *input = qobject_cast<QDeclarativeTextInput *>(qvariant_cast<QObject *>(canvas->rootObject()->property("myInput"))); + + QVERIFY(input != 0); + QTRY_VERIFY(input->hasFocus() == true); + QString initial = input->text(); + QCOMPARE(initial, QLatin1String("ABCDefgh")); + QCOMPARE(input->echoMode(), QDeclarativeTextInput::Normal); + QCOMPARE(input->displayText(), input->text()); + input->setEchoMode(QDeclarativeTextInput::NoEcho); + QCOMPARE(input->text(), initial); + QCOMPARE(input->displayText(), QLatin1String("")); + QCOMPARE(input->passwordCharacter(), QLatin1String("*")); + input->setEchoMode(QDeclarativeTextInput::Password); + QCOMPARE(input->text(), initial); + QCOMPARE(input->displayText(), QLatin1String("********")); + input->setPasswordCharacter(QChar('Q')); + QCOMPARE(input->passwordCharacter(), QLatin1String("Q")); + QCOMPARE(input->text(), initial); + QCOMPARE(input->displayText(), QLatin1String("QQQQQQQQ")); + input->setEchoMode(QDeclarativeTextInput::PasswordEchoOnEdit); + QCOMPARE(input->text(), initial); + QCOMPARE(input->displayText(), QLatin1String("QQQQQQQQ")); + QTest::keyPress(canvas, Qt::Key_A);//Clearing previous entry is part of PasswordEchoOnEdit + QTest::keyRelease(canvas, Qt::Key_A, Qt::NoModifier ,10); + QCOMPARE(input->text(), QLatin1String("a")); + QCOMPARE(input->displayText(), QLatin1String("a")); + input->setFocus(false); + QCOMPARE(input->displayText(), QLatin1String("Q")); } void tst_qdeclarativetextinput::simulateKey(QDeclarativeView *view, int key) @@ -651,6 +733,61 @@ void tst_qdeclarativetextinput::sendRequestSoftwareInputPanelEvent() QCOMPARE(ic.softwareInputPanelEventReceived, true); } +class MyTextInput : public QDeclarativeTextInput +{ +public: + MyTextInput(QDeclarativeItem *parent = 0) : QDeclarativeTextInput(parent) + { + nbPaint = 0; + } + void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) + { + nbPaint++; + QDeclarativeTextInput::paint(painter, option, widget); + } + int nbPaint; +}; + +void tst_qdeclarativetextinput::setHAlignClearCache() +{ + QGraphicsScene scene; + QGraphicsView view(&scene); + MyTextInput input; + input.setText("Hello world"); + scene.addItem(&input); + view.show(); + QApplication::setActiveWindow(&view); + QTest::qWaitForWindowShown(&view); + QTRY_COMPARE(input.nbPaint, 1); + input.setHAlign(QDeclarativeTextInput::AlignRight); + QApplication::processEvents(); + //Changing the alignment should trigger a repaint + QCOMPARE(input.nbPaint, 2); +} + +void tst_qdeclarativetextinput::focusOutClearSelection() +{ + QGraphicsScene scene; + QGraphicsView view(&scene); + QDeclarativeTextInput input; + QDeclarativeTextInput input2; + input.setText(QLatin1String("Hello world")); + input.setFocus(true); + scene.addItem(&input2); + scene.addItem(&input); + view.show(); + QApplication::setActiveWindow(&view); + QTest::qWaitForWindowShown(&view); + input.setSelectionStart(2); + input.setSelectionEnd(5); + //The selection should work + QTRY_COMPARE(input.selectedText(), QLatin1String("llo")); + input2.setFocus(true); + QApplication::processEvents(); + //The input lost the focus selection should be cleared + QTRY_COMPARE(input.selectedText(), QLatin1String("")); +} + QTEST_MAIN(tst_qdeclarativetextinput) #include "tst_qdeclarativetextinput.moc" diff --git a/tests/auto/declarative/qdeclarativetimer/qdeclarativetimer.pro b/tests/auto/declarative/qdeclarativetimer/qdeclarativetimer.pro index b162739..42604d8 100644 --- a/tests/auto/declarative/qdeclarativetimer/qdeclarativetimer.pro +++ b/tests/auto/declarative/qdeclarativetimer/qdeclarativetimer.pro @@ -5,3 +5,5 @@ macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativetimer.cpp DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test diff --git a/tests/auto/declarative/qdeclarativetimer/tst_qdeclarativetimer.cpp b/tests/auto/declarative/qdeclarativetimer/tst_qdeclarativetimer.cpp index b120d5d..a08a91c 100644 --- a/tests/auto/declarative/qdeclarativetimer/tst_qdeclarativetimer.cpp +++ b/tests/auto/declarative/qdeclarativetimer/tst_qdeclarativetimer.cpp @@ -38,6 +38,7 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ +#include <QtTest/QSignalSpy> #include <qtest.h> #include <QtDeclarative/qdeclarativeengine.h> #include <QtDeclarative/qdeclarativecomponent.h> @@ -92,7 +93,7 @@ void tst_qdeclarativetimer::notRepeating() { QDeclarativeEngine engine; QDeclarativeComponent component(&engine); - component.setData(QByteArray("import Qt 4.6\nTimer { interval: 100; running: true }"), QUrl::fromLocalFile("")); + component.setData(QByteArray("import Qt 4.7\nTimer { interval: 100; running: true }"), QUrl::fromLocalFile("")); QDeclarativeTimer *timer = qobject_cast<QDeclarativeTimer*>(component.create()); QVERIFY(timer != 0); QVERIFY(timer->isRunning()); @@ -113,7 +114,7 @@ void tst_qdeclarativetimer::notRepeatingStart() { QDeclarativeEngine engine; QDeclarativeComponent component(&engine); - component.setData(QByteArray("import Qt 4.6\nTimer { interval: 100 }"), QUrl::fromLocalFile("")); + component.setData(QByteArray("import Qt 4.7\nTimer { interval: 100 }"), QUrl::fromLocalFile("")); QDeclarativeTimer *timer = qobject_cast<QDeclarativeTimer*>(component.create()); QVERIFY(timer != 0); QVERIFY(!timer->isRunning()); @@ -138,7 +139,7 @@ void tst_qdeclarativetimer::repeat() { QDeclarativeEngine engine; QDeclarativeComponent component(&engine); - component.setData(QByteArray("import Qt 4.6\nTimer { interval: 100; repeat: true; running: true }"), QUrl::fromLocalFile("")); + component.setData(QByteArray("import Qt 4.7\nTimer { interval: 100; repeat: true; running: true }"), QUrl::fromLocalFile("")); QDeclarativeTimer *timer = qobject_cast<QDeclarativeTimer*>(component.create()); QVERIFY(timer != 0); @@ -161,6 +162,18 @@ void tst_qdeclarativetimer::repeat() QVERIFY(helper.count == oldCount); QVERIFY(timer->isRunning() == false); + QSignalSpy spy(timer, SIGNAL(repeatChanged())); + + timer->setRepeating(false); + QVERIFY(!timer->isRepeating()); + QCOMPARE(spy.count(),1); + + timer->setRepeating(false); + QCOMPARE(spy.count(),1); + + timer->setRepeating(true); + QCOMPARE(spy.count(),2); + delete timer; } @@ -168,7 +181,7 @@ void tst_qdeclarativetimer::triggeredOnStart() { QDeclarativeEngine engine; QDeclarativeComponent component(&engine); - component.setData(QByteArray("import Qt 4.6\nTimer { interval: 100; running: true; triggeredOnStart: true }"), QUrl::fromLocalFile("")); + component.setData(QByteArray("import Qt 4.7\nTimer { interval: 100; running: true; triggeredOnStart: true }"), QUrl::fromLocalFile("")); QDeclarativeTimer *timer = qobject_cast<QDeclarativeTimer*>(component.create()); QVERIFY(timer != 0); QVERIFY(timer->triggeredOnStart()); @@ -184,6 +197,18 @@ void tst_qdeclarativetimer::triggeredOnStart() QCOMPARE(helper.count, 2); QVERIFY(timer->isRunning() == false); + QSignalSpy spy(timer, SIGNAL(triggeredOnStartChanged())); + + timer->setTriggeredOnStart(false); + QVERIFY(!timer->triggeredOnStart()); + QCOMPARE(spy.count(),1); + + timer->setTriggeredOnStart(false); + QCOMPARE(spy.count(),1); + + timer->setTriggeredOnStart(true); + QCOMPARE(spy.count(),2); + delete timer; } @@ -191,7 +216,7 @@ void tst_qdeclarativetimer::triggeredOnStartRepeat() { QDeclarativeEngine engine; QDeclarativeComponent component(&engine); - component.setData(QByteArray("import Qt 4.6\nTimer { interval: 100; running: true; triggeredOnStart: true; repeat: true }"), QUrl::fromLocalFile("")); + component.setData(QByteArray("import Qt 4.7\nTimer { interval: 100; running: true; triggeredOnStart: true; repeat: true }"), QUrl::fromLocalFile("")); QDeclarativeTimer *timer = qobject_cast<QDeclarativeTimer*>(component.create()); QVERIFY(timer != 0); @@ -215,7 +240,7 @@ void tst_qdeclarativetimer::noTriggerIfNotRunning() QDeclarativeEngine engine; QDeclarativeComponent component(&engine); component.setData(QByteArray( - "import Qt 4.6\n" + "import Qt 4.7\n" "Item { property bool ok: true\n" "Timer { id: t1; interval: 100; repeat: true; running: true; onTriggered: if (!running) ok=false }" "Timer { interval: 10; running: true; onTriggered: t1.running=false }" @@ -233,7 +258,7 @@ void tst_qdeclarativetimer::changeDuration() { QDeclarativeEngine engine; QDeclarativeComponent component(&engine); - component.setData(QByteArray("import Qt 4.6\nTimer { interval: 200; repeat: true; running: true }"), QUrl::fromLocalFile("")); + component.setData(QByteArray("import Qt 4.7\nTimer { interval: 200; repeat: true; running: true }"), QUrl::fromLocalFile("")); QDeclarativeTimer *timer = qobject_cast<QDeclarativeTimer*>(component.create()); QVERIFY(timer != 0); @@ -250,6 +275,18 @@ void tst_qdeclarativetimer::changeDuration() QCOMPARE(helper.count, 3); QVERIFY(timer->isRunning()); + QSignalSpy spy(timer, SIGNAL(intervalChanged())); + + timer->setInterval(200); + QCOMPARE(timer->interval(), 200); + QCOMPARE(spy.count(),1); + + timer->setInterval(200); + QCOMPARE(spy.count(),1); + + timer->setInterval(300); + QCOMPARE(spy.count(),2); + delete timer; } @@ -257,7 +294,7 @@ void tst_qdeclarativetimer::restart() { QDeclarativeEngine engine; QDeclarativeComponent component(&engine); - component.setData(QByteArray("import Qt 4.6\nTimer { interval: 500; repeat: true; running: true }"), QUrl::fromLocalFile("")); + component.setData(QByteArray("import Qt 4.7\nTimer { interval: 500; repeat: true; running: true }"), QUrl::fromLocalFile("")); QDeclarativeTimer *timer = qobject_cast<QDeclarativeTimer*>(component.create()); QVERIFY(timer != 0); diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/autoBindingRemoval.3.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/autoBindingRemoval.3.qml index c82b533..d431b4a 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/autoBindingRemoval.3.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/autoBindingRemoval.3.qml @@ -1,7 +1,7 @@ import Test 1.0 MyTypeObject { - property var value + property variant value rect: value diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/bindingVariantCopy.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingVariantCopy.qml index 691a56c..3a48c8b 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/bindingVariantCopy.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingVariantCopy.qml @@ -1,7 +1,7 @@ import Test 1.0 MyTypeObject { - property var object + property variant object object: MyTypeObject { rect.x: 19 rect.y: 33 diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/conflicting.1.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/conflicting.1.qml new file mode 100644 index 0000000..2697bb5 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/conflicting.1.qml @@ -0,0 +1,42 @@ +import Qt 4.6 + +Rectangle { + id: root + + width: 800 + height: 600 + + property alias font: myText.font + + property int myPixelSize: 12 + property int myPixelSize2: 24 + + Text { + id: other + font.pixelSize: 6 + } + + Text { + id: myText + + text: "Hello world!" + font.pixelSize: myPixelSize + } + + states: State { + name: "Swapped" + PropertyChanges { + target: myText + font: other.font + } + } + + function toggle() { + if (root.state == "") root.state = "Swapped"; else root.state = ""; + } + + MouseArea { + anchors.fill: parent + onClicked: { if (root.state == "") root.state = "Swapped"; else root.state = "";} + } +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/conflicting.2.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/conflicting.2.qml new file mode 100644 index 0000000..478104e1 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/conflicting.2.qml @@ -0,0 +1,42 @@ +import Qt 4.6 + +Rectangle { + id: root + + width: 800 + height: 600 + + property alias font: myText.font + + property int myPixelSize: 12 + property int myPixelSize2: 24 + + Text { + id: other + font.pixelSize: 6 + } + + Text { + id: myText + + text: "Hello world!" + font: other.font + } + + states: State { + name: "Swapped" + PropertyChanges { + target: myText + font.pixelSize: myPixelSize + } + } + + function toggle() { + if (root.state == "") root.state = "Swapped"; else root.state = ""; + } + + MouseArea { + anchors.fill: parent + onClicked: { if (root.state == "") root.state = "Swapped"; else root.state = "";} + } +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/conflicting.3.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/conflicting.3.qml new file mode 100644 index 0000000..d35c72e --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/conflicting.3.qml @@ -0,0 +1,42 @@ +import Qt 4.6 + +Rectangle { + id: root + + width: 800 + height: 600 + + property alias font: myText.font + + property int myPixelSize: 12 + property int myPixelSize2: 24 + + Text { + id: other + font.pixelSize: 6 + } + + Text { + id: myText + + text: "Hello world!" + font.pixelSize: myPixelSize + } + + states: State { + name: "Swapped" + PropertyChanges { + target: myText + font.pixelSize: myPixelSize2 + } + } + + function toggle() { + if (root.state == "") root.state = "Swapped"; else root.state = ""; + } + + MouseArea { + anchors.fill: parent + onClicked: { if (root.state == "") root.state = "Swapped"; else root.state = "";} + } +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/deletedObject.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/deletedObject.qml index 05459f4..7c22775 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/deletedObject.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/deletedObject.qml @@ -1,12 +1,11 @@ import Test 1.0 import Qt 4.6 +import "deletedObject.js" as JS MyTypeObject { - property var object - - Script { source: "deletedObject.js" } + property variant object object: MyTypeObject {} - Component.onCompleted: startup() - onRunScript: afterDelete() + Component.onCompleted: JS.startup() + onRunScript: JS.afterDelete() } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/enums.1.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.1.qml index 0eadd50..cb01a80 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/enums.1.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.1.qml @@ -1,6 +1,6 @@ import Test 1.0 MyTypeObject { - font.capitalization: "MixedCase" + font.capitalization: "AllUppercase" } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/enums.2.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.2.qml index 81f1c92..93f1ed5 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/enums.2.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.2.qml @@ -1,6 +1,6 @@ import Test 1.0 MyTypeObject { - font.capitalization: if (1) "MixedCase" + font.capitalization: if (1) "AllUppercase" } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/enums.3.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.3.qml new file mode 100644 index 0000000..3be5099 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.3.qml @@ -0,0 +1,6 @@ +import Test 1.0 +import Qt 4.6 + +MyTypeObject { + font.capitalization: Font.AllUppercase +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/enums.4.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.4.qml new file mode 100644 index 0000000..6b494e4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/enums.4.qml @@ -0,0 +1,7 @@ +import Test 1.0 +import Qt 4.6 as MyQt + +MyTypeObject { + font.capitalization: MyQt.Font.AllUppercase +} + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/font_read.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/font_read.qml index e1d1ce0..d73bb13 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/font_read.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/font_read.qml @@ -13,6 +13,6 @@ MyTypeObject { property int f_capitalization: font.capitalization property real f_letterSpacing: font.letterSpacing property real f_wordSpacing: font.wordSpacing; - property var copy: font + property variant copy: font } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/font_write.4.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/font_write.4.qml new file mode 100644 index 0000000..2ec69d7 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/font_write.4.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + font.pointSize: 19 + font.pixelSize: 10 +} + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/font_write.5.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/font_write.5.qml new file mode 100644 index 0000000..4c12f21 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/font_write.5.qml @@ -0,0 +1,14 @@ +import Qt 4.6 +import Test 1.0 + +Item { + MyTypeObject { + objectName: "object1" + font.pixelSize: 19 + } + MyTypeObject { + objectName: "object2" + font.pointSize: 14 + } +} + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/point_read.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/point_read.qml index 3e67de6..4bb6c53 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/point_read.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/point_read.qml @@ -3,5 +3,5 @@ import Test 1.0 MyTypeObject { property int p_x: point.x property int p_y: point.y - property var copy: point + property variant copy: point } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/pointf_read.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/pointf_read.qml index d845a5b..0eab6da 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/pointf_read.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/pointf_read.qml @@ -3,6 +3,6 @@ import Test 1.0 MyTypeObject { property real p_x: pointf.x property real p_y: pointf.y - property var copy: pointf + property variant copy: pointf } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/rect_read.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/rect_read.qml index 5364431..c3b37a7 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/rect_read.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/rect_read.qml @@ -5,6 +5,6 @@ MyTypeObject { property int r_y: rect.y property int r_width: rect.width property int r_height: rect.height - property var copy: rect + property variant copy: rect } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/rectf_read.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/rectf_read.qml index aeb9f41..6ff3ce3 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/rectf_read.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/rectf_read.qml @@ -5,6 +5,6 @@ MyTypeObject { property real r_y: rectf.y property real r_width: rectf.width property real r_height: rectf.height - property var copy: rectf + property variant copy: rectf } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/returnValues.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/returnValues.qml new file mode 100644 index 0000000..185e7ba --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/returnValues.qml @@ -0,0 +1,17 @@ +import Test 1.0 +import Qt 4.6 + +MyTypeObject { + property bool test1: false; + property bool test2: false; + + Component.onCompleted: { + var a = method(); + + test1 = (a.width == 13) + test2 = (a.height == 14) + + size = a; + } +} + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/scriptVariantCopy.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/scriptVariantCopy.qml index 29157e8..42fccfa 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/scriptVariantCopy.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/scriptVariantCopy.qml @@ -1,7 +1,7 @@ import Test 1.0 MyTypeObject { - property var object + property variant object object: MyTypeObject { rect.x: 19 rect.y: 33 diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/size_read.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/size_read.qml index 86dba03..a49fd9f 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/size_read.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/size_read.qml @@ -3,6 +3,6 @@ import Test 1.0 MyTypeObject { property int s_width: size.width property int s_height: size.height - property var copy: size + property variant copy: size } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/sizef_read.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/sizef_read.qml index c6f34e4..96cd425 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/sizef_read.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/sizef_read.qml @@ -3,7 +3,7 @@ import Test 1.0 MyTypeObject { property real s_width: sizef.width property real s_height: sizef.height - property var copy: sizef + property variant copy: sizef } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_read.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_read.qml new file mode 100644 index 0000000..7f708a0 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_read.qml @@ -0,0 +1,8 @@ +import Test 1.0 + +MyTypeObject { + property int s_width: sizereadonly.width + property int s_height: sizereadonly.height + property variant copy: sizereadonly +} + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_writeerror.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_writeerror.qml new file mode 100644 index 0000000..3254557 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_writeerror.qml @@ -0,0 +1,6 @@ +import Test 1.0 + +MyTypeObject { + sizereadonly: "13x88" +} + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_writeerror2.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_writeerror2.qml new file mode 100644 index 0000000..656d718 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_writeerror2.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + sizereadonly.width: if (true) 13 + sizereadonly.height: if (true) 88 +} + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_writeerror3.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_writeerror3.qml new file mode 100644 index 0000000..b8e3f0d --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_writeerror3.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + sizereadonly.width: 13 + sizereadonly.height: 88 +} + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_writeerror4.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_writeerror4.qml new file mode 100644 index 0000000..8ae2ef8 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/sizereadonly_writeerror4.qml @@ -0,0 +1,10 @@ +import Test 1.0 +import Qt 4.6 + +MyTypeObject { + Component.onCompleted: { + sizereadonly.width = 13; + } +} + + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/valueInterceptors.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/valueInterceptors.qml index 026ae83..0897847 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/valueInterceptors.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/valueInterceptors.qml @@ -3,6 +3,6 @@ import Test 1.0 MyTypeObject { property int value: 13; - rect.x: MyOffsetValueInterceptor {} + MyOffsetValueInterceptor on rect.x {} rect.x: value } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/valueSources.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/valueSources.qml index d4d4391..717f350 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/valueSources.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/valueSources.qml @@ -1,5 +1,5 @@ import Test 1.0 MyTypeObject { - rect.x: MyConstantValueSource {} + MyConstantValueSource on rect.x {} } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/vector3d_read.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/vector3d_read.qml index abdf9f0..f1e876d 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/data/vector3d_read.qml +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/vector3d_read.qml @@ -4,6 +4,6 @@ MyTypeObject { property real v_x: vector.x property real v_y: vector.y property real v_z: vector.z - property var copy: vector + property variant copy: vector } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/qdeclarativevaluetypes.pro b/tests/auto/declarative/qdeclarativevaluetypes/qdeclarativevaluetypes.pro index 028fc57..d9f1c13 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/qdeclarativevaluetypes.pro +++ b/tests/auto/declarative/qdeclarativevaluetypes/qdeclarativevaluetypes.pro @@ -8,3 +8,6 @@ SOURCES += tst_qdeclarativevaluetypes.cpp \ testtypes.cpp DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/testtypes.cpp b/tests/auto/declarative/qdeclarativevaluetypes/testtypes.cpp index aa8bd6e..e30a319 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/testtypes.cpp +++ b/tests/auto/declarative/qdeclarativevaluetypes/testtypes.cpp @@ -42,7 +42,7 @@ void registerTypes() { - QML_REGISTER_TYPE(Test, 1, 0, MyTypeObject, MyTypeObject); - QML_REGISTER_TYPE(Test, 1, 0, MyConstantValueSource, MyConstantValueSource); - QML_REGISTER_TYPE(Test, 1, 0, MyOffsetValueInterceptor, MyOffsetValueInterceptor); + qmlRegisterType<MyTypeObject>("Test", 1, 0, "MyTypeObject"); + qmlRegisterType<MyConstantValueSource>("Test", 1, 0, "MyConstantValueSource"); + qmlRegisterType<MyOffsetValueInterceptor>("Test", 1, 0, "MyOffsetValueInterceptor"); } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/testtypes.h b/tests/auto/declarative/qdeclarativevaluetypes/testtypes.h index dfc2829..dd13429 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/testtypes.h +++ b/tests/auto/declarative/qdeclarativevaluetypes/testtypes.h @@ -59,14 +59,15 @@ class MyTypeObject : public QObject { Q_OBJECT - Q_PROPERTY(QPoint point READ point WRITE setPoint NOTIFY changed); - Q_PROPERTY(QPointF pointf READ pointf WRITE setPointf NOTIFY changed); - Q_PROPERTY(QSize size READ size WRITE setSize NOTIFY changed); - Q_PROPERTY(QSizeF sizef READ sizef WRITE setSizef NOTIFY changed); - Q_PROPERTY(QRect rect READ rect WRITE setRect NOTIFY changed); - Q_PROPERTY(QRectF rectf READ rectf WRITE setRectf NOTIFY changed); - Q_PROPERTY(QVector3D vector READ vector WRITE setVector NOTIFY changed); - Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY changed); + Q_PROPERTY(QPoint point READ point WRITE setPoint NOTIFY changed) + Q_PROPERTY(QPointF pointf READ pointf WRITE setPointf NOTIFY changed) + Q_PROPERTY(QSize size READ size WRITE setSize NOTIFY changed) + Q_PROPERTY(QSizeF sizef READ sizef WRITE setSizef NOTIFY changed) + Q_PROPERTY(QSize sizereadonly READ size NOTIFY changed) + Q_PROPERTY(QRect rect READ rect WRITE setRect NOTIFY changed) + Q_PROPERTY(QRectF rectf READ rectf WRITE setRectf NOTIFY changed) + Q_PROPERTY(QVector3D vector READ vector WRITE setVector NOTIFY changed) + Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY changed) public: MyTypeObject() : @@ -128,12 +129,16 @@ public: signals: void changed(); void runScript(); + +public slots: + QSize method() { return QSize(13, 14); } }; QML_DECLARE_TYPE(MyTypeObject); class MyConstantValueSource : public QObject, public QDeclarativePropertyValueSource { Q_OBJECT + Q_INTERFACES(QDeclarativePropertyValueSource) public: virtual void setTarget(const QDeclarativeProperty &p) { p.write(3345); } }; @@ -142,6 +147,7 @@ QML_DECLARE_TYPE(MyConstantValueSource); class MyOffsetValueInterceptor : public QObject, public QDeclarativePropertyValueInterceptor { Q_OBJECT + Q_INTERFACES(QDeclarativePropertyValueInterceptor) public: virtual void setTarget(const QDeclarativeProperty &p) { prop = p; } virtual void write(const QVariant &value) { QDeclarativePropertyPrivate::write(prop, value.toInt() + 13, QDeclarativePropertyPrivate::BypassInterceptor); } diff --git a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp index 69646b9..b733b10 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp +++ b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp @@ -59,6 +59,7 @@ private slots: void pointf(); void size(); void sizef(); + void sizereadonly(); void rect(); void rectf(); void vector3d(); @@ -77,6 +78,8 @@ private slots: void scriptVariantCopy(); void cppClasses(); void enums(); + void conflictingBindings(); + void returnValues(); private: QDeclarativeEngine engine; @@ -192,6 +195,50 @@ void tst_qdeclarativevaluetypes::sizef() } } +void tst_qdeclarativevaluetypes::sizereadonly() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("sizereadonly_read.qml")); + MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->property("s_width").toInt(), 1912); + QCOMPARE(object->property("s_height").toInt(), 1913); + QCOMPARE(object->property("copy"), QVariant(QSize(1912, 1913))); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("sizereadonly_writeerror.qml")); + QVERIFY(component.isError()); + QCOMPARE(component.errors().at(0).description(), QLatin1String("Invalid property assignment: \"sizereadonly\" is a read-only property")); + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("sizereadonly_writeerror2.qml")); + QVERIFY(component.isError()); + QCOMPARE(component.errors().at(0).description(), QLatin1String("Invalid property assignment: \"sizereadonly\" is a read-only property")); + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("sizereadonly_writeerror3.qml")); + QVERIFY(component.isError()); + QCOMPARE(component.errors().at(0).description(), QLatin1String("Invalid property assignment: \"sizereadonly\" is a read-only property")); + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("sizereadonly_writeerror4.qml")); + + QObject *object = component.create(); + QVERIFY(object); + + QCOMPARE(object->property("sizereadonly").toSize(), QSize(1912, 1913)); + + delete object; + } +} + void tst_qdeclarativevaluetypes::rect() { { @@ -314,8 +361,17 @@ void tst_qdeclarativevaluetypes::font() font.setLetterSpacing(QFont::AbsoluteSpacing, 9.7); font.setWordSpacing(11.2); - QEXPECT_FAIL("", "QT-2920", Continue); - QCOMPARE(object->font(), font); + QFont f = object->font(); + QCOMPARE(f.family(), font.family()); + QCOMPARE(f.bold(), font.bold()); + QCOMPARE(f.weight(), font.weight()); + QCOMPARE(f.italic(), font.italic()); + QCOMPARE(f.underline(), font.underline()); + QCOMPARE(f.strikeOut(), font.strikeOut()); + QCOMPARE(f.pointSize(), font.pointSize()); + QCOMPARE(f.capitalization(), font.capitalization()); + QCOMPARE(f.letterSpacing(), font.letterSpacing()); + QCOMPARE(f.wordSpacing(), font.wordSpacing()); delete object; } @@ -342,6 +398,30 @@ void tst_qdeclarativevaluetypes::font() delete object; } + { + QDeclarativeComponent component(&engine, TEST_FILE("font_write.4.qml")); + QTest::ignoreMessage(QtWarningMsg, "Both point size and pixel size set. Using pixel size. "); + MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create()); + QVERIFY(object != 0); + + QCOMPARE(object->font().pixelSize(), 10); + + delete object; + } + { + QDeclarativeComponent component(&engine, TEST_FILE("font_write.5.qml")); + QObject *object = qobject_cast<QObject *>(component.create()); + QVERIFY(object != 0); + MyTypeObject *object1 = object->findChild<MyTypeObject *>("object1"); + QVERIFY(object1 != 0); + MyTypeObject *object2 = object->findChild<MyTypeObject *>("object2"); + QVERIFY(object2 != 0); + + QCOMPARE(object1->font().pixelSize(), 19); + QCOMPARE(object2->font().pointSize(), 14); + + delete object; + } } // Test bindings can write to value types @@ -422,12 +502,12 @@ void tst_qdeclarativevaluetypes::autoBindingRemoval() object->setProperty("value", QVariant(92)); - QEXPECT_FAIL("", "QT-2920", Continue); QCOMPARE(object->rect().x(), 42); delete object; } + /* { QDeclarativeComponent component(&engine, TEST_FILE("autoBindingRemoval.2.qml")); MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create()); @@ -465,12 +545,11 @@ void tst_qdeclarativevaluetypes::autoBindingRemoval() object->setProperty("value", QVariant(QRect(19, 3, 4, 8))); - QEXPECT_FAIL("", "QT-2920", Continue); QCOMPARE(object->rect(), QRect(44, 22, 33, 44)); delete object; } - +*/ } // Test that property value sources assign to value types @@ -502,10 +581,9 @@ void tst_qdeclarativevaluetypes::valueInterceptors() QDeclarativeComponent component(&engine, TEST_FILE("valueInterceptors.qml")); MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create()); checkNoErrors(component); - QEXPECT_FAIL("", "QT-2920", Abort); QVERIFY(object != 0); - QCOMPARE(object->rect().x(), 26); + QCOMPARE(object->rect().x(), 13); object->setProperty("value", 99); @@ -598,7 +676,7 @@ void tst_qdeclarativevaluetypes::enums() QDeclarativeComponent component(&engine, TEST_FILE("enums.1.qml")); MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create()); QVERIFY(object != 0); - QVERIFY(object->font().capitalization() == QFont::MixedCase); + QVERIFY(object->font().capitalization() == QFont::AllUppercase); delete object; } @@ -606,9 +684,97 @@ void tst_qdeclarativevaluetypes::enums() QDeclarativeComponent component(&engine, TEST_FILE("enums.2.qml")); MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create()); QVERIFY(object != 0); - QVERIFY(object->font().capitalization() == QFont::MixedCase); + QVERIFY(object->font().capitalization() == QFont::AllUppercase); delete object; } + + { + QDeclarativeComponent component(&engine, TEST_FILE("enums.3.qml")); + MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create()); + QVERIFY(object != 0); + QVERIFY(object->font().capitalization() == QFont::AllUppercase); + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("enums.4.qml")); + MyTypeObject *object = qobject_cast<MyTypeObject *>(component.create()); + QVERIFY(object != 0); + QVERIFY(object->font().capitalization() == QFont::AllUppercase); + delete object; + } +} + +// Tests switching between "conflicting" bindings (eg. a binding on the core +// property, to a binding on the value-type sub-property) +void tst_qdeclarativevaluetypes::conflictingBindings() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("conflicting.1.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(qvariant_cast<QFont>(object->property("font")).pixelSize(), 12); + + QMetaObject::invokeMethod(object, "toggle"); + + QCOMPARE(qvariant_cast<QFont>(object->property("font")).pixelSize(), 6); + + QMetaObject::invokeMethod(object, "toggle"); + + QCOMPARE(qvariant_cast<QFont>(object->property("font")).pixelSize(), 12); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("conflicting.2.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(qvariant_cast<QFont>(object->property("font")).pixelSize(), 6); + + QMetaObject::invokeMethod(object, "toggle"); + + QCOMPARE(qvariant_cast<QFont>(object->property("font")).pixelSize(), 12); + + QMetaObject::invokeMethod(object, "toggle"); + + QCOMPARE(qvariant_cast<QFont>(object->property("font")).pixelSize(), 6); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("conflicting.3.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(qvariant_cast<QFont>(object->property("font")).pixelSize(), 12); + + QMetaObject::invokeMethod(object, "toggle"); + + QCOMPARE(qvariant_cast<QFont>(object->property("font")).pixelSize(), 24); + + QMetaObject::invokeMethod(object, "toggle"); + + QCOMPARE(qvariant_cast<QFont>(object->property("font")).pixelSize(), 12); + + delete object; + } +} + +void tst_qdeclarativevaluetypes::returnValues() +{ + QDeclarativeComponent component(&engine, TEST_FILE("returnValues.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test1").toBool(), true); + QCOMPARE(object->property("test2").toBool(), true); + QCOMPARE(object->property("size").toSize(), QSize(13, 14)); + + delete object; } QTEST_MAIN(tst_qdeclarativevaluetypes) diff --git a/tests/auto/declarative/qdeclarativewebview/data/basic.qml b/tests/auto/declarative/qdeclarativewebview/data/basic.qml index 5394837..f0b41ef 100644 --- a/tests/auto/declarative/qdeclarativewebview/data/basic.qml +++ b/tests/auto/declarative/qdeclarativewebview/data/basic.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { url: "basic.html" diff --git a/tests/auto/declarative/qdeclarativewebview/data/elements.qml b/tests/auto/declarative/qdeclarativewebview/data/elements.qml index 7c030e6..16e5788 100644 --- a/tests/auto/declarative/qdeclarativewebview/data/elements.qml +++ b/tests/auto/declarative/qdeclarativewebview/data/elements.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { url: "elements.html" diff --git a/tests/auto/declarative/qdeclarativewebview/data/forward.png b/tests/auto/declarative/qdeclarativewebview/data/forward.png Binary files differnew file mode 100644 index 0000000..a82533e --- /dev/null +++ b/tests/auto/declarative/qdeclarativewebview/data/forward.png diff --git a/tests/auto/declarative/qdeclarativewebview/data/javaScript.qml b/tests/auto/declarative/qdeclarativewebview/data/javaScript.qml index 07eee88..0e92e0e 100644 --- a/tests/auto/declarative/qdeclarativewebview/data/javaScript.qml +++ b/tests/auto/declarative/qdeclarativewebview/data/javaScript.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { url: "javaScript.html" diff --git a/tests/auto/declarative/qdeclarativewebview/data/loadError.qml b/tests/auto/declarative/qdeclarativewebview/data/loadError.qml index 1460f30..f827238 100644 --- a/tests/auto/declarative/qdeclarativewebview/data/loadError.qml +++ b/tests/auto/declarative/qdeclarativewebview/data/loadError.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { url: "does-not-exist.html" diff --git a/tests/auto/declarative/qdeclarativewebview/data/newwindows.qml b/tests/auto/declarative/qdeclarativewebview/data/newwindows.qml index 0bc8263..5f9f757 100644 --- a/tests/auto/declarative/qdeclarativewebview/data/newwindows.qml +++ b/tests/auto/declarative/qdeclarativewebview/data/newwindows.qml @@ -1,6 +1,7 @@ // Demonstrates opening new WebViews from HTML import Qt 4.6 +import org.webkit 1.0 Grid { columns: 3 @@ -22,8 +23,8 @@ Grid { newWindowParent: pages url: "newwindows.html" Timer { - interval: 10; running: webView.status==WebView.Ready && total<4; repeat: false; - onTriggered: {total++; webView.evaluateJavaScript("clickTheLink()")} + interval: 10; running: total<4; repeat: false; + onTriggered: { if (webView.status==WebView.Ready) { total++; webView.evaluateJavaScript("clickTheLink()") } } } } } diff --git a/tests/auto/declarative/qdeclarativewebview/data/propertychanges.qml b/tests/auto/declarative/qdeclarativewebview/data/propertychanges.qml index 3dd4e51..0770acf 100644 --- a/tests/auto/declarative/qdeclarativewebview/data/propertychanges.qml +++ b/tests/auto/declarative/qdeclarativewebview/data/propertychanges.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 Item { width: 240 @@ -30,4 +31,4 @@ Item { pressGrabTime: 200 } } -}
\ No newline at end of file +} diff --git a/tests/auto/declarative/qdeclarativewebview/data/sethtml.qml b/tests/auto/declarative/qdeclarativewebview/data/sethtml.qml index 063b5a8..9e17597 100644 --- a/tests/auto/declarative/qdeclarativewebview/data/sethtml.qml +++ b/tests/auto/declarative/qdeclarativewebview/data/sethtml.qml @@ -1,4 +1,5 @@ import Qt 4.6 +import org.webkit 1.0 WebView { html: "<p>This is a <b>string</b> set on the WebView" diff --git a/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro b/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro index 6af0a60..956272f 100644 --- a/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro +++ b/tests/auto/declarative/qdeclarativewebview/qdeclarativewebview.pro @@ -3,8 +3,9 @@ contains(QT_CONFIG,declarative): QT += declarative contains(QT_CONFIG,webkit): QT += webkit macx:CONFIG -= app_bundle -SOURCES += tst_qdeclarativewebview.cpp testtypes.cpp -HEADERS += testtypes.h +SOURCES += tst_qdeclarativewebview.cpp # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test diff --git a/tests/auto/declarative/qdeclarativewebview/testtypes.cpp b/tests/auto/declarative/qdeclarativewebview/testtypes.cpp deleted file mode 100644 index 7efc214..0000000 --- a/tests/auto/declarative/qdeclarativewebview/testtypes.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include "testtypes.h" - -void MyWebView::drawContents(QPainter *p, const QRect &r) -{ - pp += r.width()*r.height(); - QDeclarativeWebView::drawContents(p,r); -} - -void registerTypes() -{ - QML_REGISTER_TYPE(Test,1,0,MyWebView,MyWebView); -} diff --git a/tests/auto/declarative/qdeclarativewebview/testtypes.h b/tests/auto/declarative/qdeclarativewebview/testtypes.h deleted file mode 100644 index 8eb703f..0000000 --- a/tests/auto/declarative/qdeclarativewebview/testtypes.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#ifndef TESTTYPES_H -#define TESTTYPES_H - -#include <private/qdeclarativewebview_p.h> - -class MyWebView : public QDeclarativeWebView -{ - Q_OBJECT - Q_PROPERTY(int pixelsPainted READ pixelsPainted); - -public: - MyWebView() : pp(0) {} - - int pixelsPainted() const { return pp; } - - void drawContents(QPainter *p, const QRect &r); - -private: - int pp; -}; - -QML_DECLARE_TYPE(MyWebView); - -void registerTypes(); - -#endif // TESTTYPES_H diff --git a/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp b/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp index 6d16056..beabf86 100644 --- a/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp +++ b/tests/auto/declarative/qdeclarativewebview/tst_qdeclarativewebview.cpp @@ -43,15 +43,12 @@ #include "../../../shared/util.h" #include <QtDeclarative/qdeclarativeengine.h> #include <QtDeclarative/qdeclarativecomponent.h> -#include <private/qdeclarativewebview_p.h> -#include <private/qdeclarativewebview_p_p.h> #include <private/qdeclarativepositioners_p.h> #include <QtWebKit/qwebpage.h> #include <QtWebKit/qwebframe.h> #include <QtCore/qdir.h> #include <QtCore/qfile.h> #include <QtGui/qpainter.h> -#include "testtypes.h" class tst_qdeclarativewebview : public QObject { @@ -70,7 +67,7 @@ private slots: void setHtml(); void javaScript(); void cleanupTestCase(); - void pixelCache(); + //void pixelCache(); void newWindowParent(); void newWindowComponent(); void renderingEnabled(); @@ -89,7 +86,6 @@ private: void tst_qdeclarativewebview::initTestCase() { - registerTypes(); } static QString strippedHtml(QString html) @@ -126,8 +122,7 @@ void tst_qdeclarativewebview::cleanupTestCase() void tst_qdeclarativewebview::checkNoErrors(const QDeclarativeComponent& component) { // Wait until the component is ready - QTRY_VERIFY(component.isReady()); - + QTRY_VERIFY(component.isReady() || component.isError()); if (component.isError()) { QList<QDeclarativeError> errors = component.errors(); @@ -148,81 +143,82 @@ void tst_qdeclarativewebview::basicProperties() checkNoErrors(component); QWebSettings::enablePersistentStorage(tmpDir()); - QDeclarativeWebView *wv = qobject_cast<QDeclarativeWebView*>(component.create()); + QObject *wv = component.create(); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); - QCOMPARE(wv->title(),QString("Basic")); - QTRY_COMPARE(wv->icon().width(), 48); - QCOMPARE(wv->icon(),QPixmap(SRCDIR "/data/basic.png")); - QCOMPARE(wv->statusText(),QString("status here")); - QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/basic.html")), strippedHtml(wv->html())); - QCOMPARE(wv->width(), 123.0); - QCOMPARE(wv->preferredWidth(), 0); - QCOMPARE(wv->preferredHeight(), 0); - QCOMPARE(wv->zoomFactor(), 1.0); - QCOMPARE(wv->url(), QUrl::fromLocalFile(SRCDIR "/data/basic.html")); - QCOMPARE(wv->status(), QDeclarativeWebView::Ready); - QVERIFY(wv->reloadAction()); - QVERIFY(wv->reloadAction()->isEnabled()); - QVERIFY(wv->backAction()); - QVERIFY(!wv->backAction()->isEnabled()); - QVERIFY(wv->forwardAction()); - QVERIFY(!wv->forwardAction()->isEnabled()); - QVERIFY(wv->stopAction()); - QVERIFY(!wv->stopAction()->isEnabled()); - - wv->setPixelCacheSize(0); // mainly testing that it doesn't crash or anything! - QCOMPARE(wv->pixelCacheSize(),0); - wv->reloadAction()->trigger(); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + QCOMPARE(wv->property("title").toString(),QString("Basic")); + QTRY_COMPARE(qvariant_cast<QPixmap>(wv->property("icon")).width(), 48); + QCOMPARE(qvariant_cast<QPixmap>(wv->property("icon")),QPixmap(SRCDIR "/data/basic.png")); + QCOMPARE(wv->property("statusText").toString(),QString("status here")); + QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/basic.html")), strippedHtml(wv->property("html").toString())); + QCOMPARE(wv->property("width").toDouble(), 123.0); + QCOMPARE(wv->property("preferredWidth").toInt(), 0); + QCOMPARE(wv->property("preferredHeight").toInt(), 0); + QCOMPARE(wv->property("zoomFactor").toDouble(), 1.0); + QCOMPARE(wv->property("url").toUrl(), QUrl::fromLocalFile(SRCDIR "/data/basic.html")); + QCOMPARE(wv->property("status").toInt(), 1 /*QDeclarativeWebView::Ready*/); + QVERIFY(qvariant_cast<QAction*>(wv->property("reload"))); + QVERIFY(qvariant_cast<QAction*>(wv->property("reload"))->isEnabled()); + QVERIFY(qvariant_cast<QAction*>(wv->property("back"))); + QVERIFY(!qvariant_cast<QAction*>(wv->property("back"))->isEnabled()); + QVERIFY(qvariant_cast<QAction*>(wv->property("forward"))); + QVERIFY(!qvariant_cast<QAction*>(wv->property("forward"))->isEnabled()); + QVERIFY(qvariant_cast<QAction*>(wv->property("stop"))); + QVERIFY(!qvariant_cast<QAction*>(wv->property("stop"))->isEnabled()); + + wv->setProperty("pixelCacheSize", 0); // mainly testing that it doesn't crash or anything! + QCOMPARE(wv->property("pixelCacheSize").toInt(),0); + qvariant_cast<QAction*>(wv->property("reload"))->trigger(); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); } void tst_qdeclarativewebview::settings() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/basic.qml")); checkNoErrors(component); - QDeclarativeWebView *wv = qobject_cast<QDeclarativeWebView*>(component.create()); + QObject *wv = component.create(); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); - QDeclarativeWebSettings *s = wv->settingsObject(); + QObject *s = QDeclarativeProperty(wv,"settings").object(); + QVERIFY(s != 0); // merely tests that setting gets stored (in QWebSettings) // behavioural tests are in WebKit. for (int b=0; b<=1; ++b) { bool on = !!b; - s->setAutoLoadImages(on); - s->setDeveloperExtrasEnabled(on); - s->setJavaEnabled(on); - s->setJavascriptCanAccessClipboard(on); - s->setJavascriptCanOpenWindows(on); - s->setJavascriptEnabled(on); - s->setLinksIncludedInFocusChain(on); - s->setLocalContentCanAccessRemoteUrls(on); - s->setLocalStorageDatabaseEnabled(on); - s->setOfflineStorageDatabaseEnabled(on); - s->setOfflineWebApplicationCacheEnabled(on); - s->setPluginsEnabled(on); - s->setPrintElementBackgrounds(on); - s->setPrivateBrowsingEnabled(on); - s->setZoomTextOnly(on); - - QVERIFY(s->autoLoadImages() == on); - QVERIFY(s->developerExtrasEnabled() == on); - QVERIFY(s->javaEnabled() == on); - QVERIFY(s->javascriptCanAccessClipboard() == on); - QVERIFY(s->javascriptCanOpenWindows() == on); - QVERIFY(s->javascriptEnabled() == on); - QVERIFY(s->linksIncludedInFocusChain() == on); - QVERIFY(s->localContentCanAccessRemoteUrls() == on); - QVERIFY(s->localStorageDatabaseEnabled() == on); - QVERIFY(s->offlineStorageDatabaseEnabled() == on); - QVERIFY(s->offlineWebApplicationCacheEnabled() == on); - QVERIFY(s->pluginsEnabled() == on); - QVERIFY(s->printElementBackgrounds() == on); - QVERIFY(s->privateBrowsingEnabled() == on); - QVERIFY(s->zoomTextOnly() == on); + s->setProperty("autoLoadImages", on); + s->setProperty("developerExtrasEnabled", on); + s->setProperty("javaEnabled", on); + s->setProperty("javascriptCanAccessClipboard", on); + s->setProperty("javascriptCanOpenWindows", on); + s->setProperty("javascriptEnabled", on); + s->setProperty("linksIncludedInFocusChain", on); + s->setProperty("localContentCanAccessRemoteUrls", on); + s->setProperty("localStorageDatabaseEnabled", on); + s->setProperty("offlineStorageDatabaseEnabled", on); + s->setProperty("offlineWebApplicationCacheEnabled", on); + s->setProperty("pluginsEnabled", on); + s->setProperty("printElementBackgrounds", on); + s->setProperty("privateBrowsingEnabled", on); + s->setProperty("zoomTextOnly", on); + + QVERIFY(s->property("autoLoadImages") == on); + QVERIFY(s->property("developerExtrasEnabled") == on); + QVERIFY(s->property("javaEnabled") == on); + QVERIFY(s->property("javascriptCanAccessClipboard") == on); + QVERIFY(s->property("javascriptCanOpenWindows") == on); + QVERIFY(s->property("javascriptEnabled") == on); + QVERIFY(s->property("linksIncludedInFocusChain") == on); + QVERIFY(s->property("localContentCanAccessRemoteUrls") == on); + QVERIFY(s->property("localStorageDatabaseEnabled") == on); + QVERIFY(s->property("offlineStorageDatabaseEnabled") == on); + QVERIFY(s->property("offlineWebApplicationCacheEnabled") == on); + QVERIFY(s->property("pluginsEnabled") == on); + QVERIFY(s->property("printElementBackgrounds") == on); + QVERIFY(s->property("privateBrowsingEnabled") == on); + QVERIFY(s->property("zoomTextOnly") == on); QVERIFY(s->property("autoLoadImages") == on); QVERIFY(s->property("developerExtrasEnabled") == on); @@ -248,65 +244,65 @@ void tst_qdeclarativewebview::historyNav() checkNoErrors(component); QWebSettings::enablePersistentStorage(tmpDir()); - QDeclarativeWebView *wv = qobject_cast<QDeclarativeWebView*>(component.create()); + QObject *wv = component.create(); QVERIFY(wv != 0); for (int i=1; i<=2; ++i) { - QTRY_COMPARE(wv->progress(), 1.0); - QCOMPARE(wv->title(),QString("Basic")); - QTRY_COMPARE(wv->icon().width(), 48); - QCOMPARE(wv->icon(),QPixmap(SRCDIR "/data/basic.png")); - QCOMPARE(wv->statusText(),QString("status here")); - QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/basic.html")), strippedHtml(wv->html())); - QCOMPARE(wv->width(), 123.0); - QCOMPARE(wv->preferredWidth(), 0); - QCOMPARE(wv->zoomFactor(), 1.0); - QCOMPARE(wv->url(), QUrl::fromLocalFile(SRCDIR "/data/basic.html")); - QCOMPARE(wv->status(), QDeclarativeWebView::Ready); - QVERIFY(wv->reloadAction()); - QVERIFY(wv->reloadAction()->isEnabled()); - QVERIFY(wv->backAction()); - QVERIFY(!wv->backAction()->isEnabled()); - QVERIFY(wv->forwardAction()); - QVERIFY(!wv->forwardAction()->isEnabled()); - QVERIFY(wv->stopAction()); - QVERIFY(!wv->stopAction()->isEnabled()); - - wv->reloadAction()->trigger(); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + QCOMPARE(wv->property("title").toString(),QString("Basic")); + QTRY_COMPARE(qvariant_cast<QPixmap>(wv->property("icon")).width(), 48); + QCOMPARE(qvariant_cast<QPixmap>(wv->property("icon")),QPixmap(SRCDIR "/data/basic.png")); + QCOMPARE(wv->property("statusText").toString(),QString("status here")); + QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/basic.html")), strippedHtml(wv->property("html").toString())); + QCOMPARE(wv->property("width").toDouble(), 123.0); + QCOMPARE(wv->property("preferredWidth").toDouble(), 0.0); + QCOMPARE(wv->property("zoomFactor").toDouble(), 1.0); + QCOMPARE(wv->property("url").toUrl(), QUrl::fromLocalFile(SRCDIR "/data/basic.html")); + QCOMPARE(wv->property("status").toInt(), 1 /*QDeclarativeWebView::Ready*/); + QVERIFY(qvariant_cast<QAction*>(wv->property("reload"))); + QVERIFY(qvariant_cast<QAction*>(wv->property("reload"))->isEnabled()); + QVERIFY(qvariant_cast<QAction*>(wv->property("back"))); + QVERIFY(!qvariant_cast<QAction*>(wv->property("back"))->isEnabled()); + QVERIFY(qvariant_cast<QAction*>(wv->property("forward"))); + QVERIFY(!qvariant_cast<QAction*>(wv->property("forward"))->isEnabled()); + QVERIFY(qvariant_cast<QAction*>(wv->property("stop"))); + QVERIFY(!qvariant_cast<QAction*>(wv->property("stop"))->isEnabled()); + + qvariant_cast<QAction*>(wv->property("reload"))->trigger(); } - wv->setUrl(QUrl::fromLocalFile(SRCDIR "/data/forward.html")); - QTRY_COMPARE(wv->progress(), 1.0); - QCOMPARE(wv->title(),QString("Forward")); - QTRY_COMPARE(wv->icon().width(), 32); - QCOMPARE(wv->icon(),QPixmap(SRCDIR "/data/forward.png")); - QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/forward.html")), strippedHtml(wv->html())); - QCOMPARE(wv->url(), QUrl::fromLocalFile(SRCDIR "/data/forward.html")); - QCOMPARE(wv->status(), QDeclarativeWebView::Ready); - QCOMPARE(wv->statusText(),QString("")); - QVERIFY(wv->reloadAction()); - QVERIFY(wv->reloadAction()->isEnabled()); - QVERIFY(wv->backAction()); - QVERIFY(wv->backAction()->isEnabled()); - QVERIFY(wv->forwardAction()); - QVERIFY(!wv->forwardAction()->isEnabled()); - QVERIFY(wv->stopAction()); - QVERIFY(!wv->stopAction()->isEnabled()); - - wv->backAction()->trigger(); - - QTRY_COMPARE(wv->progress(), 1.0); - QCOMPARE(wv->title(),QString("Basic")); - QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/basic.html")), strippedHtml(wv->html())); - QCOMPARE(wv->url(), QUrl::fromLocalFile(SRCDIR "/data/basic.html")); - QCOMPARE(wv->status(), QDeclarativeWebView::Ready); - QVERIFY(wv->reloadAction()); - QVERIFY(wv->reloadAction()->isEnabled()); - QVERIFY(wv->backAction()); - QVERIFY(!wv->backAction()->isEnabled()); - QVERIFY(wv->forwardAction()); - QVERIFY(wv->forwardAction()->isEnabled()); - QVERIFY(wv->stopAction()); - QVERIFY(!wv->stopAction()->isEnabled()); + wv->setProperty("url", QUrl::fromLocalFile(SRCDIR "/data/forward.html")); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + QCOMPARE(wv->property("title").toString(),QString("Forward")); + QTRY_COMPARE(qvariant_cast<QPixmap>(wv->property("icon")).width(), 32); + QCOMPARE(qvariant_cast<QPixmap>(wv->property("icon")),QPixmap(SRCDIR "/data/forward.png")); + QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/forward.html")), strippedHtml(wv->property("html").toString())); + QCOMPARE(wv->property("url").toUrl(), QUrl::fromLocalFile(SRCDIR "/data/forward.html")); + QCOMPARE(wv->property("status").toInt(), 1 /*QDeclarativeWebView::Ready*/); + QCOMPARE(wv->property("statusText").toString(),QString("")); + QVERIFY(qvariant_cast<QAction*>(wv->property("reload"))); + QVERIFY(qvariant_cast<QAction*>(wv->property("reload"))->isEnabled()); + QVERIFY(qvariant_cast<QAction*>(wv->property("back"))); + QVERIFY(qvariant_cast<QAction*>(wv->property("back"))->isEnabled()); + QVERIFY(qvariant_cast<QAction*>(wv->property("forward"))); + QVERIFY(!qvariant_cast<QAction*>(wv->property("forward"))->isEnabled()); + QVERIFY(qvariant_cast<QAction*>(wv->property("stop"))); + QVERIFY(!qvariant_cast<QAction*>(wv->property("stop"))->isEnabled()); + + qvariant_cast<QAction*>(wv->property("back"))->trigger(); + + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + QCOMPARE(wv->property("title").toString(),QString("Basic")); + QCOMPARE(strippedHtml(fileContents(SRCDIR "/data/basic.html")), strippedHtml(wv->property("html").toString())); + QCOMPARE(wv->property("url").toUrl(), QUrl::fromLocalFile(SRCDIR "/data/basic.html")); + QCOMPARE(wv->property("status").toInt(), 1 /*QDeclarativeWebView::Ready*/); + QVERIFY(qvariant_cast<QAction*>(wv->property("reload"))); + QVERIFY(qvariant_cast<QAction*>(wv->property("reload"))->isEnabled()); + QVERIFY(qvariant_cast<QAction*>(wv->property("back"))); + QVERIFY(!qvariant_cast<QAction*>(wv->property("back"))->isEnabled()); + QVERIFY(qvariant_cast<QAction*>(wv->property("forward"))); + QVERIFY(qvariant_cast<QAction*>(wv->property("forward"))->isEnabled()); + QVERIFY(qvariant_cast<QAction*>(wv->property("stop"))); + QVERIFY(!qvariant_cast<QAction*>(wv->property("stop"))->isEnabled()); } void tst_qdeclarativewebview::multipleWindows() @@ -316,8 +312,8 @@ void tst_qdeclarativewebview::multipleWindows() QDeclarativeGrid *grid = qobject_cast<QDeclarativeGrid*>(component.create()); QVERIFY(grid != 0); - QTRY_COMPARE(grid->children().count(), 2+5); // Component, Loader, 5 WebViews - QDeclarativeItem* popup = qobject_cast<QDeclarativeItem*>(grid->children().at(3)); // first popup after Component, Loaded, original. + QTRY_COMPARE(grid->children().count(), 2+4); // Component, Loader (with 1 WebView), 4 new-window WebViews + QDeclarativeItem* popup = qobject_cast<QDeclarativeItem*>(grid->children().at(2)); // first popup after Component and Loader. QVERIFY(popup != 0); QTRY_COMPARE(popup->x(), 150.0); } @@ -328,16 +324,16 @@ void tst_qdeclarativewebview::loadError() checkNoErrors(component); QWebSettings::enablePersistentStorage(tmpDir()); - QDeclarativeWebView *wv = qobject_cast<QDeclarativeWebView*>(component.create()); + QObject *wv = component.create(); QVERIFY(wv != 0); for (int i=1; i<=2; ++i) { - QTRY_COMPARE(wv->progress(), 1.0); - QCOMPARE(wv->title(),QString("")); - QCOMPARE(wv->statusText(),QString("")); // HTML 'status bar' text, not error message - QCOMPARE(wv->url(), QUrl::fromLocalFile(SRCDIR "/data/does-not-exist.html")); // Unlike QWebPage, which loses url - QCOMPARE(wv->status(), QDeclarativeWebView::Error); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + QCOMPARE(wv->property("title").toString(),QString("")); + QCOMPARE(wv->property("statusText").toString(),QString("")); // HTML 'status bar' text, not error message + QCOMPARE(wv->property("url").toUrl(), QUrl::fromLocalFile(SRCDIR "/data/does-not-exist.html")); // Unlike QWebPage, which loses url + QCOMPARE(wv->property("status").toInt(), 3 /*QDeclarativeWebView::Error*/); - wv->reloadAction()->trigger(); + qvariant_cast<QAction*>(wv->property("reload"))->trigger(); } } @@ -345,12 +341,12 @@ void tst_qdeclarativewebview::setHtml() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/sethtml.qml")); checkNoErrors(component); - QDeclarativeWebView *wv = qobject_cast<QDeclarativeWebView*>(component.create()); + QObject *wv = component.create(); QVERIFY(wv != 0); - QCOMPARE(wv->html(),QString("<html><head></head><body><p>This is a <b>string</b> set on the WebView</p></body></html>")); + QCOMPARE(wv->property("html").toString(),QString("<html><head></head><body><p>This is a <b>string</b> set on the WebView</p></body></html>")); QSignalSpy spy(wv, SIGNAL(htmlChanged())); - wv->setHtml(QString("<html><head><title>Basic</title></head><body><p>text</p></body></html>")); + wv->setProperty("html", QString("<html><head><title>Basic</title></head><body><p>text</p></body></html>")); QCOMPARE(spy.count(),1); } @@ -358,81 +354,91 @@ void tst_qdeclarativewebview::elementAreaAt() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/elements.qml")); checkNoErrors(component); - QDeclarativeWebView *wv = qobject_cast<QDeclarativeWebView*>(component.create()); + QObject *wv = component.create(); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + /* not now it's a plugin... QCOMPARE(wv->elementAreaAt(40,30,100,100),QRect(1,1,75,54)); // Area A in data/elements.html QCOMPARE(wv->elementAreaAt(130,30,200,100),QRect(78,3,110,50)); // Area B QCOMPARE(wv->elementAreaAt(40,30,400,400),QRect(0,0,310,100)); // Whole view QCOMPARE(wv->elementAreaAt(130,30,280,280),QRect(76,1,223,54)); // Area BC QCOMPARE(wv->elementAreaAt(130,30,400,400),QRect(0,0,310,100)); // Whole view + */ } void tst_qdeclarativewebview::javaScript() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/javaScript.qml")); checkNoErrors(component); - QDeclarativeWebView *wv = qobject_cast<QDeclarativeWebView*>(component.create()); + QObject *wv = component.create(); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + /* not now it's a plugin... QCOMPARE(wv->evaluateJavaScript("123").toInt(), 123); QCOMPARE(wv->evaluateJavaScript("window.status").toString(), QString("status here")); QCOMPARE(wv->evaluateJavaScript("window.myjsname.qmlprop").toString(), QString("qmlvalue")); + */ } +/* +Cannot be done now that webkit is a plugin + void tst_qdeclarativewebview::pixelCache() { + QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/pixelCache.qml")); checkNoErrors(component); MyWebView *wv = qobject_cast<MyWebView*>(component.create()); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress"), 1.0); QPixmap pm(150,150); QPainter p(&pm); wv->paint(&p,0,0); const int expected = 120*(150+128); // 120 = width of HTML page, 150=pixmap height, 128=cache extra area - QCOMPARE(wv->pixelsPainted(), expected); + QCOMPARE(wv->property("pixelsPainted"), expected); wv->paint(&p,0,0); - QCOMPARE(wv->pixelsPainted(), expected); // nothing new needed to be painted - wv->setPixelCacheSize(0); // clears the cache + QCOMPARE(wv->property("pixelsPainted"), expected); // nothing new needed to be painted + wv->setProperty("pixelCacheSize", 0); // clears the cache wv->paint(&p,0,0); - QCOMPARE(wv->pixelsPainted(), expected*2); // everything needed to be painted + QCOMPARE(wv->property("pixelsPainted"), expected*2); // everything needed to be painted // Note that painted things always go into the cache (even if they don't "fit"), // just that they will be removed if anything else needs to be painted. - wv->setPixelCacheSize(expected); // won't clear the cache + wv->setProperty("pixelCacheSize", expected); // won't clear the cache wv->paint(&p,0,0); - QCOMPARE(wv->pixelsPainted(), expected*2); // still there - wv->setPixelCacheSize(expected-1); // too small - will clear the cache + QCOMPARE(wv->property("pixelsPainted"), expected*2); // still there + wv->setProperty("pixelCacheSize", expected-1); // too small - will clear the cache wv->paint(&p,0,0); - QCOMPARE(wv->pixelsPainted(), expected*3); // repainted + QCOMPARE(wv->property("pixelsPainted"), expected*3); // repainted } +*/ void tst_qdeclarativewebview::newWindowParent() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); checkNoErrors(component); QDeclarativeItem *rootItem = qobject_cast<QDeclarativeItem*>(component.create()); - QDeclarativeWebView *wv = rootItem->findChild<QDeclarativeWebView*>("webView"); + QObject *wv = rootItem->findChild<QObject*>("webView"); QVERIFY(rootItem != 0); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); QDeclarativeItem* oldWindowParent = rootItem->findChild<QDeclarativeItem*>("oldWindowParent"); - QCOMPARE(wv->newWindowParent(), oldWindowParent); + QCOMPARE(qvariant_cast<QDeclarativeItem*>(wv->property("newWindowParent")), oldWindowParent); QSignalSpy newWindowParentSpy(wv, SIGNAL(newWindowParentChanged())); QDeclarativeItem* newWindowParent = rootItem->findChild<QDeclarativeItem*>("newWindowParent"); - wv->setNewWindowParent(newWindowParent); + wv->setProperty("newWindowParent", QVariant::fromValue(newWindowParent)); + QVERIFY(newWindowParent); QVERIFY(oldWindowParent); QVERIFY(oldWindowParent->childItems().count() == 0); - QCOMPARE(wv->newWindowParent(), newWindowParent); + QCOMPARE(wv->property("newWindowParent"), QVariant::fromValue(newWindowParent)); QCOMPARE(newWindowParentSpy.count(),1); - wv->setNewWindowParent(newWindowParent); + wv->setProperty("newWindowParent", QVariant::fromValue(newWindowParent)); QCOMPARE(newWindowParentSpy.count(),1); - wv->setNewWindowParent(0); + wv->setProperty("newWindowParent", QVariant::fromValue((QDeclarativeItem*)0)); QCOMPARE(newWindowParentSpy.count(),2); } @@ -441,23 +447,23 @@ void tst_qdeclarativewebview::newWindowComponent() QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); checkNoErrors(component); QDeclarativeItem *rootItem = qobject_cast<QDeclarativeItem*>(component.create()); - QDeclarativeWebView *wv = rootItem->findChild<QDeclarativeWebView*>("webView"); + QObject *wv = rootItem->findChild<QObject*>("webView"); QVERIFY(rootItem != 0); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); QDeclarativeComponent substituteComponent(&engine); - substituteComponent.setData("import Qt 4.6; WebView { objectName: 'newWebView'; url: 'basic.html'; }", QUrl::fromLocalFile("")); + substituteComponent.setData("import Qt 4.7; WebView { objectName: 'newWebView'; url: 'basic.html'; }", QUrl::fromLocalFile("")); QSignalSpy newWindowComponentSpy(wv, SIGNAL(newWindowComponentChanged())); - wv->setNewWindowComponent(&substituteComponent); - QCOMPARE(wv->newWindowComponent(), &substituteComponent); + wv->setProperty("newWindowComponent", QVariant::fromValue(&substituteComponent)); + QCOMPARE(wv->property("newWindowComponent"), QVariant::fromValue(&substituteComponent)); QCOMPARE(newWindowComponentSpy.count(),1); - wv->setNewWindowComponent(&substituteComponent); + wv->setProperty("newWindowComponent", QVariant::fromValue(&substituteComponent)); QCOMPARE(newWindowComponentSpy.count(),1); - wv->setNewWindowComponent(0); + wv->setProperty("newWindowComponent", QVariant::fromValue((QDeclarativeComponent*)0)); QCOMPARE(newWindowComponentSpy.count(),2); } @@ -466,22 +472,22 @@ void tst_qdeclarativewebview::renderingEnabled() QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); checkNoErrors(component); QDeclarativeItem *rootItem = qobject_cast<QDeclarativeItem*>(component.create()); - QDeclarativeWebView *wv = rootItem->findChild<QDeclarativeWebView*>("webView"); + QObject *wv = rootItem->findChild<QObject*>("webView"); QVERIFY(rootItem != 0); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); - QVERIFY(wv->renderingEnabled()); + QVERIFY(wv->property("renderingEnabled").toBool()); QSignalSpy renderingEnabledSpy(wv, SIGNAL(renderingEnabledChanged())); - wv->setRenderingEnabled(false); - QVERIFY(!wv->renderingEnabled()); + wv->setProperty("renderingEnabled", false); + QVERIFY(!wv->property("renderingEnabled").toBool()); QCOMPARE(renderingEnabledSpy.count(),1); - wv->setRenderingEnabled(false); + wv->setProperty("renderingEnabled", false); QCOMPARE(renderingEnabledSpy.count(),1); - wv->setRenderingEnabled(true); + wv->setProperty("renderingEnabled", true); QCOMPARE(renderingEnabledSpy.count(),2); } @@ -490,21 +496,21 @@ void tst_qdeclarativewebview::pressGrabTime() QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); checkNoErrors(component); QDeclarativeItem *rootItem = qobject_cast<QDeclarativeItem*>(component.create()); - QDeclarativeWebView *wv = rootItem->findChild<QDeclarativeWebView*>("webView"); + QObject *wv = rootItem->findChild<QObject*>("webView"); QVERIFY(rootItem != 0); QVERIFY(wv != 0); - QTRY_COMPARE(wv->progress(), 1.0); - QCOMPARE(wv->pressGrabTime(), 200); + QTRY_COMPARE(wv->property("progress").toDouble(), 1.0); + QCOMPARE(wv->property("pressGrabTime").toInt(), 200); QSignalSpy pressGrabTimeSpy(wv, SIGNAL(pressGrabTimeChanged())); - wv->setPressGrabTime(100); - QCOMPARE(wv->pressGrabTime(), 100); + wv->setProperty("pressGrabTime", 100); + QCOMPARE(wv->property("pressGrabTime").toInt(), 100); QCOMPARE(pressGrabTimeSpy.count(),1); - wv->setPressGrabTime(100); + wv->setProperty("pressGrabTime", 100); QCOMPARE(pressGrabTimeSpy.count(),1); - wv->setPressGrabTime(0); + wv->setProperty("pressGrabTime", 0); QCOMPARE(pressGrabTimeSpy.count(),2); } diff --git a/tests/auto/declarative/qdeclarativeworkerscript/data/script.js b/tests/auto/declarative/qdeclarativeworkerscript/data/script.js new file mode 100644 index 0000000..09199de --- /dev/null +++ b/tests/auto/declarative/qdeclarativeworkerscript/data/script.js @@ -0,0 +1,5 @@ +WorkerScript.onMessage = function(msg) { + WorkerScript.sendMessage(msg) +} + + diff --git a/tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml b/tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml new file mode 100644 index 0000000..ca989f8 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeworkerscript/data/worker.qml @@ -0,0 +1,24 @@ +import Qt 4.6 + +WorkerScript { + id: worker + source: "script.js" + + property variant response + + signal done() + + function testSend(value) { + worker.sendMessage(value) + } + + function compareLiteralResponse(expected) { + var e = eval('(' + expected + ')') + return worker.response == e + } + + onMessage: { + worker.response = messageObject + worker.done() + } +} diff --git a/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro b/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro new file mode 100644 index 0000000..2e3da4d --- /dev/null +++ b/tests/auto/declarative/qdeclarativeworkerscript/qdeclarativeworkerscript.pro @@ -0,0 +1,11 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative script +macx:CONFIG -= app_bundle + +SOURCES += tst_qdeclarativeworkerscript.cpp + +# Define SRCDIR equal to test's source directory +DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp new file mode 100644 index 0000000..a1dae24 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp @@ -0,0 +1,182 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <qtest.h> +#include <QtCore/qdebug.h> +#include <QtCore/qtimer.h> +#include <QtScript/qscriptengine.h> + +#include <QtDeclarative/qdeclarativecomponent.h> +#include <QtDeclarative/qdeclarativeengine.h> +#include <QtDeclarative/qdeclarativeitem.h> + +#include <private/qdeclarativeworkerscript_p.h> +#include <private/qdeclarativeengine_p.h> +#include "../../../shared/util.h" + +Q_DECLARE_METATYPE(QScriptValue) + +class tst_QDeclarativeWorkerScript : public QObject +{ + Q_OBJECT +public: + tst_QDeclarativeWorkerScript() {} +private slots: + void source(); + void messaging(); + void messaging_data(); + void messaging_sendQObjectList(); + void messaging_sendJsObject(); + +private: + void waitForEchoMessage(QDeclarativeWorkerScript *worker) { + QEventLoop loop; + QVERIFY(connect(worker, SIGNAL(done()), &loop, SLOT(quit()))); + QTimer timer; + timer.setSingleShot(true); + connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit())); + timer.start(10000); + loop.exec(); + QVERIFY(timer.isActive()); + } + + QDeclarativeEngine m_engine; +}; + +void tst_QDeclarativeWorkerScript::source() +{ + QUrl source = QUrl::fromLocalFile(SRCDIR "/data/worker.qml"); + + QDeclarativeComponent component(&m_engine); + component.setData("import Qt 4.7\nWorkerScript { source: '" + source.toString().toUtf8() + "'; }", QUrl()); + + QDeclarativeWorkerScript *item = qobject_cast<QDeclarativeWorkerScript*>(component.create()); + QVERIFY(item != 0); + + QCOMPARE(item->source(), source); + + qApp->processEvents(); + delete item; +} + +void tst_QDeclarativeWorkerScript::messaging() +{ + QFETCH(QVariant, value); + + QDeclarativeComponent component(&m_engine, SRCDIR "/data/worker.qml"); + QDeclarativeWorkerScript *worker = qobject_cast<QDeclarativeWorkerScript*>(component.create()); + QVERIFY(worker != 0); + + QVERIFY(QMetaObject::invokeMethod(worker, "testSend", Q_ARG(QVariant, value))); + waitForEchoMessage(worker); + + const QMetaObject *mo = worker->metaObject(); + QCOMPARE(mo->property(mo->indexOfProperty("response")).read(worker).value<QVariant>(), value); + + qApp->processEvents(); + delete worker; +} + +void tst_QDeclarativeWorkerScript::messaging_data() +{ + QTest::addColumn<QVariant>("value"); + + QTest::newRow("invalid") << QVariant(); + QTest::newRow("bool") << qVariantFromValue(true); + QTest::newRow("int") << qVariantFromValue(1001); + QTest::newRow("real") << qVariantFromValue(10334.323); + QTest::newRow("string") << qVariantFromValue(QString("More cheeeese, Gromit!")); + QTest::newRow("variant list") << qVariantFromValue((QVariantList() << "a" << "b" << "c")); +} + +void tst_QDeclarativeWorkerScript::messaging_sendQObjectList() +{ + // Not allowed to send QObjects other than QDeclarativeWorkerListModelAgent + // instances. If objects are sent in a list, they will be sent as 'undefined' + // js values. + + QDeclarativeComponent component(&m_engine, SRCDIR "/data/worker.qml"); + QDeclarativeWorkerScript *worker = qobject_cast<QDeclarativeWorkerScript*>(component.create()); + QVERIFY(worker != 0); + + QVariantList objects; + for (int i=0; i<3; i++) + objects << qVariantFromValue(new QObject(this)); + + QVERIFY(QMetaObject::invokeMethod(worker, "testSend", Q_ARG(QVariant, qVariantFromValue(objects)))); + waitForEchoMessage(worker); + + const QMetaObject *mo = worker->metaObject(); + QVariantList result = mo->property(mo->indexOfProperty("response")).read(worker).value<QVariantList>(); + QCOMPARE(result, (QVariantList() << QVariant() << QVariant() << QVariant())); + + qApp->processEvents(); + delete worker; +} + +void tst_QDeclarativeWorkerScript::messaging_sendJsObject() +{ + QDeclarativeComponent component(&m_engine, SRCDIR "/data/worker.qml"); + QDeclarativeWorkerScript *worker = qobject_cast<QDeclarativeWorkerScript*>(component.create()); + QVERIFY(worker != 0); + + QString jsObject = "{'name': 'zyz', 'spell power': 3101, 'haste': 1125}"; + + QScriptEngine *engine = QDeclarativeEnginePrivate::getScriptEngine(qmlEngine(worker)); + QScriptValue sv = engine->newObject(); + sv.setProperty("name", "zyz"); + sv.setProperty("spell power", 3101); + sv.setProperty("haste", 1125); + + QVERIFY(QMetaObject::invokeMethod(worker, "testSend", Q_ARG(QVariant, qVariantFromValue(sv)))); + waitForEchoMessage(worker); + + QVariant result = qVariantFromValue(false); + QVERIFY(QMetaObject::invokeMethod(worker, "compareLiteralResponse", Qt::DirectConnection, + Q_RETURN_ARG(QVariant, result), Q_ARG(QVariant, jsObject))); + QVERIFY(result.toBool()); + + qApp->processEvents(); + delete worker; +} + +QTEST_MAIN(tst_QDeclarativeWorkerScript) + +#include "tst_qdeclarativeworkerscript.moc" diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort.expect b/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort.expect index f43e043..4d21122 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort.expect +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort.expect @@ -1,9 +1,9 @@ PUT /testdocument.html HTTP/1.1 +ACCEPT-LANGUAGE: en-US Content-Type: text/plain;charset=UTF-8 Content-Length: 9 Connection: Keep-Alive Accept-Encoding: gzip -Accept-Language: en-US,* User-Agent: Mozilla/5.0 Host: 127.0.0.1:14445 diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort.qml index d7b9266..729793e 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort.qml @@ -13,6 +13,7 @@ QtObject { var x = new XMLHttpRequest; x.open("GET", urlDummy); x.setRequestHeader("Test-header", "TestValue"); + x.setRequestHeader("Accept-Language", "en-US"); x.send(); x.onreadystatechange = function() { @@ -35,6 +36,7 @@ QtObject { } } x.open("PUT", url); + x.setRequestHeader("Accept-Language", "en-US"); x.send("Test Data"); } } diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort_opened.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort_opened.qml index 72a45e7..33ca020 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort_opened.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort_opened.qml @@ -21,10 +21,12 @@ QtObject { readyState = true; x.open("PUT", url); + x.setRequestHeader("Accept-Language", "en-US"); x.abort(); x.open("GET", url); + x.setRequestHeader("Accept-Language", "en-US"); if (x.readyState == XMLHttpRequest.OPENED) openedState = true; diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort_unsent.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort_unsent.qml index aa78cde..c0957ed 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort_unsent.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/abort_unsent.qml @@ -21,6 +21,7 @@ QtObject { readyState = true; x.open("GET", url); + x.setRequestHeader("Accept-Language", "en-US"); if (x.readyState == XMLHttpRequest.OPENED) openedState = true; diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/attr.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/attr.qml index 9049fc7..0b4badc 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/attr.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/attr.qml @@ -4,55 +4,53 @@ QtObject { property bool xmlTest: false property bool dataOK: false - Script { - function checkAttr(documentElement, attr) - { - if (attr == null) - return; + function checkAttr(documentElement, attr) + { + if (attr == null) + return; - if (attr.name != "attr") - return; + if (attr.name != "attr") + return; - if (attr.value != "myvalue") - return; + if (attr.value != "myvalue") + return; - if (attr.ownerElement.tagName != documentElement.tagName) - return; + if (attr.ownerElement.tagName != documentElement.tagName) + return; - if (attr.nodeName != "attr") - return; + if (attr.nodeName != "attr") + return; - if (attr.nodeValue != "myvalue") - return; + if (attr.nodeValue != "myvalue") + return; - if (attr.nodeType != 2) - return; + if (attr.nodeType != 2) + return; - if (attr.childNodes.length != 0) - return; + if (attr.childNodes.length != 0) + return; - if (attr.firstChild != null) - return; + if (attr.firstChild != null) + return; - if (attr.lastChild != null) - return; + if (attr.lastChild != null) + return; - if (attr.previousSibling != null) - return; + if (attr.previousSibling != null) + return; - if (attr.nextSibling != null) - return; + if (attr.nextSibling != null) + return; - if (attr.attributes != null) - return; + if (attr.attributes != null) + return; - xmlTest = true; - } + xmlTest = true; + } - function checkXML(document) - { - checkAttr(document.documentElement, document.documentElement.attributes[0]); - } + function checkXML(document) + { + checkAttr(document.documentElement, document.documentElement.attributes[0]); } Component.onCompleted: { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/cdata.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/cdata.qml index b2d0209..928e514 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/cdata.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/cdata.qml @@ -4,108 +4,106 @@ QtObject { property bool xmlTest: false property bool dataOK: false - Script { - function checkCData(text, whitespacetext) - { - // This is essentially a copy of text.qml/checkText() + function checkCData(text, whitespacetext) + { + // This is essentially a copy of text.qml/checkText() - if (text == null) - return; + if (text == null) + return; - if (text.nodeName != "#cdata-section") - return; + if (text.nodeName != "#cdata-section") + return; - if (text.nodeValue != "Hello world!") - return; + if (text.nodeValue != "Hello world!") + return; - if (text.nodeType != 4) - return; + if (text.nodeType != 4) + return; - if (text.parentNode.nodeName != "item") - return; + if (text.parentNode.nodeName != "item") + return; - if (text.childNodes.length != 0) - return; + if (text.childNodes.length != 0) + return; - if (text.firstChild != null) - return; + if (text.firstChild != null) + return; - if (text.lastChild != null) - return; + if (text.lastChild != null) + return; - if (text.previousSibling != null) - return; + if (text.previousSibling != null) + return; - if (text.nextSibling != null) - return; + if (text.nextSibling != null) + return; - if (text.attributes != null) - return; + if (text.attributes != null) + return; - if (text.wholeText != "Hello world!") - return; + if (text.wholeText != "Hello world!") + return; - if (text.data != "Hello world!") - return; + if (text.data != "Hello world!") + return; - if (text.length != 12) - return; + if (text.length != 12) + return; - if (text.isElementContentWhitespace != false) - return; + if (text.isElementContentWhitespace != false) + return; - if (whitespacetext.nodeName != "#cdata-section") - return; + if (whitespacetext.nodeName != "#cdata-section") + return; - if (whitespacetext.nodeValue != " ") - return; + if (whitespacetext.nodeValue != " ") + return; - if (whitespacetext.nodeType != 4) - return; + if (whitespacetext.nodeType != 4) + return; - if (whitespacetext.parentNode.nodeName != "item") - return; + if (whitespacetext.parentNode.nodeName != "item") + return; - if (whitespacetext.childNodes.length != 0) - return; + if (whitespacetext.childNodes.length != 0) + return; - if (whitespacetext.firstChild != null) - return; + if (whitespacetext.firstChild != null) + return; - if (whitespacetext.lastChild != null) - return; + if (whitespacetext.lastChild != null) + return; - if (whitespacetext.previousSibling != null) - return; + if (whitespacetext.previousSibling != null) + return; - if (whitespacetext.nextSibling != null) - return; + if (whitespacetext.nextSibling != null) + return; - if (whitespacetext.attributes != null) - return; + if (whitespacetext.attributes != null) + return; - if (whitespacetext.wholeText != " ") - return; + if (whitespacetext.wholeText != " ") + return; - if (whitespacetext.data != " ") - return; + if (whitespacetext.data != " ") + return; - if (whitespacetext.length != 3) - return; + if (whitespacetext.length != 3) + return; - if (whitespacetext.isElementContentWhitespace != true) - return; + if (whitespacetext.isElementContentWhitespace != true) + return; - xmlTest = true; - } + xmlTest = true; + } - function checkXML(document) - { - checkCData(document.documentElement.childNodes[0].childNodes[0], - document.documentElement.childNodes[1].childNodes[0]); + function checkXML(document) + { + checkCData(document.documentElement.childNodes[0].childNodes[0], + document.documentElement.childNodes[1].childNodes[0]); - } } Component.onCompleted: { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/document.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/document.qml index e372361..682ea9f 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/document.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/document.qml @@ -4,34 +4,32 @@ QtObject { property bool xmlTest: false property bool dataOK: false - Script { - function checkXML(document) - { - if (document.xmlVersion != "1.0") - return; + function checkXML(document) + { + if (document.xmlVersion != "1.0") + return; - if (document.xmlEncoding != "UTF-8") - return; + if (document.xmlEncoding != "UTF-8") + return; - if (document.xmlStandalone != true) - return; + if (document.xmlStandalone != true) + return; - if (document.documentElement == null) - return; + if (document.documentElement == null) + return; - if (document.nodeName != "#document") - return; + if (document.nodeName != "#document") + return; - if (document.nodeValue != null) - return; + if (document.nodeValue != null) + return; - if (document.parentNode != null) - return; + if (document.parentNode != null) + return; - // ### Test other node properties - // ### test encoding (what is a valid qt encoding?) - xmlTest = true; - } + // ### Test other node properties + // ### test encoding (what is a valid qt encoding?) + xmlTest = true; } Component.onCompleted: { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/element.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/element.qml index 78c0374..200214f 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/element.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/element.qml @@ -4,122 +4,120 @@ QtObject { property bool xmlTest: false property bool dataOK: false - Script { - function checkElement(e, person, fruit) - { - if (e.tagName != "root") - return; + function checkElement(e, person, fruit) + { + if (e.tagName != "root") + return; - if (e.nodeName != "root") - return; + if (e.nodeName != "root") + return; - if (e.nodeValue != null) - return; + if (e.nodeValue != null) + return; - if (e.nodeType != 1) - return; + if (e.nodeType != 1) + return; - var childTagNames = [ "person", "fruit" ]; + var childTagNames = [ "person", "fruit" ]; - if (e.childNodes.length != childTagNames.length) - return; + if (e.childNodes.length != childTagNames.length) + return; - for (var ii = 0; ii < childTagNames.length; ++ii) { - if (e.childNodes[ii].tagName != childTagNames[ii]) - return; - } - - if (e.childNodes[childTagNames.length + 1] != null) + for (var ii = 0; ii < childTagNames.length; ++ii) { + if (e.childNodes[ii].tagName != childTagNames[ii]) return; + } - // Check writing fails - e.childNodes[0] = null; - if (e.childNodes[0] == null) - return; + if (e.childNodes[childTagNames.length + 1] != null) + return; - e.childNodes[10] = 10; - if (e.childNodes[10] != null) - return; + // Check writing fails + e.childNodes[0] = null; + if (e.childNodes[0] == null) + return; - if (e.firstChild.tagName != e.childNodes[0].tagName) - return; + e.childNodes[10] = 10; + if (e.childNodes[10] != null) + return; - if (e.lastChild.tagName != e.childNodes[1].tagName) - return; + if (e.firstChild.tagName != e.childNodes[0].tagName) + return; - if (e.previousSibling != null) - return; + if (e.lastChild.tagName != e.childNodes[1].tagName) + return; - if (e.nextSibling != null) - return; + if (e.previousSibling != null) + return; - if (e.attributes == null) - return; + if (e.nextSibling != null) + return; - if (e.attributes.length != 2) - return; + if (e.attributes == null) + return; - var attr1 = e.attributes["attr"]; - if (attr1.nodeValue != "value") - return; + if (e.attributes.length != 2) + return; - var attrIdx = e.attributes[0]; - if (attrIdx.nodeValue != "value") - return; + var attr1 = e.attributes["attr"]; + if (attr1.nodeValue != "value") + return; - var attr2 = e.attributes["attr2"]; - if (attr2.nodeValue != "value2") - return; + var attrIdx = e.attributes[0]; + if (attrIdx.nodeValue != "value") + return; - var attr3 = e.attributes["attr3"]; - if (attr3 != null) - return; + var attr2 = e.attributes["attr2"]; + if (attr2.nodeValue != "value2") + return; - var attrIdx2 = e.attributes[11]; - if (attrIdx2 != null) - return; + var attr3 = e.attributes["attr3"]; + if (attr3 != null) + return; - // Check writing fails - e.attributes[0] = null; - if (e.attributes[0] == null) - return; + var attrIdx2 = e.attributes[11]; + if (attrIdx2 != null) + return; - e.attributes["attr"] = null; - if (e.attributes["attr"] == null) - return; + // Check writing fails + e.attributes[0] = null; + if (e.attributes[0] == null) + return; - e.attributes["attr3"] = 10; - if (e.attributes["attr3"] != null) - return; + e.attributes["attr"] = null; + if (e.attributes["attr"] == null) + return; - // Check person and fruit sub elements - if (person.parentNode.nodeName != "root") - return; + e.attributes["attr3"] = 10; + if (e.attributes["attr3"] != null) + return; - if (person.previousSibling != null) - return; + // Check person and fruit sub elements + if (person.parentNode.nodeName != "root") + return; - if (person.nextSibling.nodeName != "fruit") - return; + if (person.previousSibling != null) + return; - if (fruit.parentNode.nodeName != "root") - return; + if (person.nextSibling.nodeName != "fruit") + return; - if (fruit.previousSibling.nodeName != "person") - return; + if (fruit.parentNode.nodeName != "root") + return; - if (fruit.nextSibling != null) - return; + if (fruit.previousSibling.nodeName != "person") + return; - xmlTest = true; - } + if (fruit.nextSibling != null) + return; - function checkXML(document) - { - checkElement(document.documentElement, - document.documentElement.childNodes[0], - document.documentElement.childNodes[1]); - } + xmlTest = true; + } + + function checkXML(document) + { + checkElement(document.documentElement, + document.documentElement.childNodes[0], + document.documentElement.childNodes[1]); } Component.onCompleted: { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/getAllResponseHeaders.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/getAllResponseHeaders.qml index 8d67fad..9096999 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/getAllResponseHeaders.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/getAllResponseHeaders.qml @@ -31,6 +31,7 @@ QtObject { readyState = true; x.open("GET", url); + x.setRequestHeader("Accept-Language", "en-US"); if (x.readyState == XMLHttpRequest.OPENED) openedState = true; diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/getResponseHeader.expect b/tests/auto/declarative/qdeclarativexmlhttprequest/data/getResponseHeader.expect index a740c79..c6cad70 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/getResponseHeader.expect +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/getResponseHeader.expect @@ -1,7 +1,7 @@ GET /testdocument.html HTTP/1.1 +ACCEPT-LANGUAGE: en-US Connection: Keep-Alive Accept-Encoding: gzip -Accept-Language: en-US,* User-Agent: Mozilla/5.0 Host: 127.0.0.1:14445 diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/getResponseHeader.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/getResponseHeader.qml index 2f949e1..7a65e25 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/getResponseHeader.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/getResponseHeader.qml @@ -37,6 +37,7 @@ QtObject { readyState = true; x.open("GET", url); + x.setRequestHeader("Accept-Language", "en-US"); if (x.readyState == XMLHttpRequest.OPENED) openedState = true; diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/open.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/open.qml index c06bae3..72fb9d7 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/open.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/open.qml @@ -20,6 +20,7 @@ QtObject { readyState = true; x.open("GET", url); + x.setRequestHeader("Accept-Language","en-US"); if (x.readyState == XMLHttpRequest.OPENED) openedState = true; diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/open_network.expect b/tests/auto/declarative/qdeclarativexmlhttprequest/data/open_network.expect index a740c79..c6cad70 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/open_network.expect +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/open_network.expect @@ -1,7 +1,7 @@ GET /testdocument.html HTTP/1.1 +ACCEPT-LANGUAGE: en-US Connection: Keep-Alive Accept-Encoding: gzip -Accept-Language: en-US,* User-Agent: Mozilla/5.0 Host: 127.0.0.1:14445 diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/open_user.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/open_user.qml index 19e37fa..b07f8e7 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/open_user.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/open_user.qml @@ -20,6 +20,7 @@ QtObject { readyState = true; x.open("GET", url, true, "username", "password"); + x.setRequestHeader("Accept-Language","en-US"); if (x.readyState == XMLHttpRequest.OPENED) openedState = true; diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/responseText.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/responseText.qml index 4bb3a7a..9fa4847 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/responseText.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/responseText.qml @@ -22,6 +22,7 @@ QtObject { unsent = (x.responseText == ""); x.open("GET", url); + x.setRequestHeader("Accept-Language", "en-US"); opened = (x.responseText == ""); @@ -39,6 +40,7 @@ QtObject { dataOK = (x.responseText == expectedText); x.open("GET", url); + x.setRequestHeader("Accept-Language", "en-US"); reset = (x.responseText == ""); } diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_alreadySent.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_alreadySent.qml index 0bad7df..a9ef3e8 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_alreadySent.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_alreadySent.qml @@ -7,6 +7,7 @@ QtObject { Component.onCompleted: { var x = new XMLHttpRequest; x.open("GET", "testdocument.html"); + x.setRequestHeader("Accept-Language","en-US"); // Test to the end x.onreadystatechange = function() { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.1.expect b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.1.expect index 81dd4a0..2effbdc 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.1.expect +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.1.expect @@ -1,9 +1,9 @@ POST /testdocument.html HTTP/1.1 +ACCEPT-LANGUAGE: en-US Content-Type: text/plain;charset=UTF-8 Content-Length: 12 Connection: Keep-Alive Accept-Encoding: gzip -Accept-Language: en-US,* User-Agent: Mozilla/5.0 Host: 127.0.0.1:14445 diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.1.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.1.qml index 03543a9..171e0b1 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.1.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.1.qml @@ -8,6 +8,7 @@ QtObject { Component.onCompleted: { var x = new XMLHttpRequest; x.open("POST", url); + x.setRequestHeader("Accept-Language","en-US"); // Test to the end x.onreadystatechange = function() { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.2.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.2.qml index 79a27b6..09b742b 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.2.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.2.qml @@ -9,6 +9,7 @@ QtObject { var x = new XMLHttpRequest; x.open("POST", url); x.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); + x.setRequestHeader("Accept-Language","en-US"); // Test to the end x.onreadystatechange = function() { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.3.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.3.qml index e048769..8786917 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.3.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.3.qml @@ -9,6 +9,7 @@ QtObject { var x = new XMLHttpRequest; x.open("POST", url); x.setRequestHeader("Content-Type", "text/plain;charset=latin1"); + x.setRequestHeader("Accept-Language","en-US"); // Test to the end x.onreadystatechange = function() { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.4.expect b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.4.expect index 8fcf3ac..8336860 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.4.expect +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.4.expect @@ -1,9 +1,9 @@ POST /testdocument.html HTTP/1.1 +ACCEPT-LANGUAGE: en-US Content-Type: charset=UTF-8;text/plain Content-Length: 12 Connection: Keep-Alive Accept-Encoding: gzip -Accept-Language: en-US,* User-Agent: Mozilla/5.0 Host: 127.0.0.1:14445 diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.4.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.4.qml index 7ab0b27..6789480 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.4.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.4.qml @@ -9,6 +9,7 @@ QtObject { var x = new XMLHttpRequest; x.open("POST", url); x.setRequestHeader("Content-Type", "charset=UTF-8;text/plain"); + x.setRequestHeader("Accept-Language","en-US"); // Test to the end x.onreadystatechange = function() { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.5.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.5.qml index 29bf2c2..08d999d 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.5.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.5.qml @@ -9,6 +9,7 @@ QtObject { var x = new XMLHttpRequest; x.open("POST", url); x.setRequestHeader("Content-Type", "charset=latin1;text/plain"); + x.setRequestHeader("Accept-Language","en-US"); // Test to the end x.onreadystatechange = function() { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.6.expect b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.6.expect index 97e6fac..4f10bbc 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.6.expect +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.6.expect @@ -1,9 +1,9 @@ PUT /testdocument.html HTTP/1.1 +ACCEPT-LANGUAGE: en-US Content-Type: text/plain;charset=UTF-8 Content-Length: 12 Connection: Keep-Alive Accept-Encoding: gzip -Accept-Language: en-US,* User-Agent: Mozilla/5.0 Host: 127.0.0.1:14445 diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.6.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.6.qml index 135f45c..e047fc8 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.6.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.6.qml @@ -8,6 +8,7 @@ QtObject { Component.onCompleted: { var x = new XMLHttpRequest; x.open("PUT", url); + x.setRequestHeader("Accept-Language","en-US"); // Test to the end x.onreadystatechange = function() { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.7.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.7.qml index 4a09527..ba0db25 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.7.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_data.7.qml @@ -9,6 +9,7 @@ QtObject { var x = new XMLHttpRequest; x.open("POST", url); x.setRequestHeader("Content-Type", "text/plain"); + x.setRequestHeader("Accept-Language","en-US"); // Test to the end x.onreadystatechange = function() { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData.qml index dd5fa46..ddf520e 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData.qml @@ -9,6 +9,7 @@ QtObject { Component.onCompleted: { var x = new XMLHttpRequest; x.open(reqType, url); + x.setRequestHeader("Accept-Language","en-US"); // Test to the end x.onreadystatechange = function() { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_GET.expect b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_GET.expect index a740c79..c6cad70 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_GET.expect +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_GET.expect @@ -1,7 +1,7 @@ GET /testdocument.html HTTP/1.1 +ACCEPT-LANGUAGE: en-US Connection: Keep-Alive Accept-Encoding: gzip -Accept-Language: en-US,* User-Agent: Mozilla/5.0 Host: 127.0.0.1:14445 diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_PUT.expect b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_PUT.expect index 991bd59..74a9798 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_PUT.expect +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/send_ignoreData_PUT.expect @@ -1,7 +1,7 @@ HEAD /testdocument.html HTTP/1.1 +ACCEPT-LANGUAGE: en-US Connection: Keep-Alive Accept-Encoding: gzip -Accept-Language: en-US,* User-Agent: Mozilla/5.0 Host: 127.0.0.1:14445 diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader.expect b/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader.expect index 4600f2a..7b8e260 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader.expect +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader.expect @@ -1,9 +1,9 @@ GET /testdocument.html HTTP/1.1 +ACCEPT-LANGUAGE: en-US TEST-HEADER: value TEST-HEADER2: value,value2 Connection: Keep-Alive Accept-Encoding: gzip -Accept-Language: en-US,* User-Agent: Mozilla/5.0 Host: 127.0.0.1:14445 diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader.qml index b0723aa..61eea33 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader.qml @@ -9,6 +9,7 @@ QtObject { var x = new XMLHttpRequest; x.open("GET", url); + x.setRequestHeader("Accept-Language","en-US"); x.setRequestHeader("Test-header", "value"); x.setRequestHeader("Test-header2", "value"); diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader_illegalName.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader_illegalName.qml index bf31eca..b22b239 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader_illegalName.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader_illegalName.qml @@ -21,6 +21,7 @@ QtObject { readyState = true; x.open("GET", url); + x.setRequestHeader("Accept-Language","en-US"); x.setRequestHeader(header, "Value"); diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader_sent.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader_sent.qml index c2bbc6e..666c791 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader_sent.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/setRequestHeader_sent.qml @@ -10,6 +10,7 @@ QtObject { var x = new XMLHttpRequest; x.open("GET", url); + x.setRequestHeader("Accept-Language","en-US"); // Test to the end x.onreadystatechange = function() { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/status.expect b/tests/auto/declarative/qdeclarativexmlhttprequest/data/status.expect index a740c79..c6cad70 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/status.expect +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/status.expect @@ -1,7 +1,7 @@ GET /testdocument.html HTTP/1.1 +ACCEPT-LANGUAGE: en-US Connection: Keep-Alive Accept-Encoding: gzip -Accept-Language: en-US,* User-Agent: Mozilla/5.0 Host: 127.0.0.1:14445 diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/status.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/status.qml index 04202c4..c903e12 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/status.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/status.qml @@ -27,6 +27,7 @@ QtObject { } x.open("GET", url); + x.setRequestHeader("Accept-Language", "en-US"); try { var a = x.status; @@ -54,6 +55,7 @@ QtObject { } x.open("GET", url); + x.setRequestHeader("Accept-Language", "en-US"); try { var a = x.status; diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/statusText.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/statusText.qml index 8becc3b..a3b98be 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/statusText.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/statusText.qml @@ -27,6 +27,7 @@ QtObject { } x.open("GET", url); + x.setRequestHeader("Accept-Language", "en-US"); try { var a = x.statusText; @@ -54,6 +55,7 @@ QtObject { } x.open("GET", url); + x.setRequestHeader("Accept-Language", "en-US"); try { var a = x.statusText; diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/text.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/text.qml index 4615a07..0eb31d5 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/data/text.qml +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/text.qml @@ -4,105 +4,103 @@ QtObject { property bool xmlTest: false property bool dataOK: false - Script { - function checkText(text, whitespacetext) - { - if (text == null) - return; + function checkText(text, whitespacetext) + { + if (text == null) + return; - if (text.nodeName != "#text") - return; + if (text.nodeName != "#text") + return; - if (text.nodeValue != "Hello world!") - return; + if (text.nodeValue != "Hello world!") + return; - if (text.nodeType != 3) - return; + if (text.nodeType != 3) + return; - if (text.parentNode.nodeName != "item") - return; + if (text.parentNode.nodeName != "item") + return; - if (text.childNodes.length != 0) - return; + if (text.childNodes.length != 0) + return; - if (text.firstChild != null) - return; + if (text.firstChild != null) + return; - if (text.lastChild != null) - return; + if (text.lastChild != null) + return; - if (text.previousSibling != null) - return; + if (text.previousSibling != null) + return; - if (text.nextSibling != null) - return; + if (text.nextSibling != null) + return; - if (text.attributes != null) - return; + if (text.attributes != null) + return; - if (text.wholeText != "Hello world!") - return; + if (text.wholeText != "Hello world!") + return; - if (text.data != "Hello world!") - return; + if (text.data != "Hello world!") + return; - if (text.length != 12) - return; + if (text.length != 12) + return; - if (text.isElementContentWhitespace != false) - return; + if (text.isElementContentWhitespace != false) + return; - if (whitespacetext.nodeName != "#text") - return; + if (whitespacetext.nodeName != "#text") + return; - if (whitespacetext.nodeValue != " ") - return; + if (whitespacetext.nodeValue != " ") + return; - if (whitespacetext.nodeType != 3) - return; + if (whitespacetext.nodeType != 3) + return; - if (whitespacetext.parentNode.nodeName != "item") - return; + if (whitespacetext.parentNode.nodeName != "item") + return; - if (whitespacetext.childNodes.length != 0) - return; + if (whitespacetext.childNodes.length != 0) + return; - if (whitespacetext.firstChild != null) - return; + if (whitespacetext.firstChild != null) + return; - if (whitespacetext.lastChild != null) - return; + if (whitespacetext.lastChild != null) + return; - if (whitespacetext.previousSibling != null) - return; + if (whitespacetext.previousSibling != null) + return; - if (whitespacetext.nextSibling != null) - return; + if (whitespacetext.nextSibling != null) + return; - if (whitespacetext.attributes != null) - return; + if (whitespacetext.attributes != null) + return; - if (whitespacetext.wholeText != " ") - return; + if (whitespacetext.wholeText != " ") + return; - if (whitespacetext.data != " ") - return; + if (whitespacetext.data != " ") + return; - if (whitespacetext.length != 3) - return; + if (whitespacetext.length != 3) + return; - if (whitespacetext.isElementContentWhitespace != true) - return; + if (whitespacetext.isElementContentWhitespace != true) + return; - xmlTest = true; - } + xmlTest = true; + } - function checkXML(document) - { - checkText(document.documentElement.childNodes[0].childNodes[0], - document.documentElement.childNodes[1].childNodes[0]); + function checkXML(document) + { + checkText(document.documentElement.childNodes[0].childNodes[0], + document.documentElement.childNodes[1].childNodes[0]); - } } Component.onCompleted: { diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/utf16.qml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/utf16.qml new file mode 100644 index 0000000..63165ab --- /dev/null +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/utf16.qml @@ -0,0 +1,28 @@ +import Qt 4.6 + +QtObject { + property bool dataOK: false + + property string responseText + property string responseXmlRootNodeValue + + Component.onCompleted: { + var x = new XMLHttpRequest; + + x.open("GET", "utf16.xml"); + + // Test to the end + x.onreadystatechange = function() { + if (x.readyState == XMLHttpRequest.DONE) { + + responseText = x.responseText + if (x.responseXML) + responseXmlRootNodeValue = x.responseXML.documentElement.childNodes[0].nodeValue + + dataOK = true; + } + } + x.send() + } +} + diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/data/utf16.xml b/tests/auto/declarative/qdeclarativexmlhttprequest/data/utf16.xml Binary files differnew file mode 100644 index 0000000..0fbb126 --- /dev/null +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/data/utf16.xml diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/qdeclarativexmlhttprequest.pro b/tests/auto/declarative/qdeclarativexmlhttprequest/qdeclarativexmlhttprequest.pro index 7bc92af..160300e 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/qdeclarativexmlhttprequest.pro +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/qdeclarativexmlhttprequest.pro @@ -11,3 +11,6 @@ SOURCES += tst_qdeclarativexmlhttprequest.cpp \ # Define SRCDIR equal to test's source directory DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp b/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp index 37d48fa..1d26f2c 100644 --- a/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp +++ b/tests/auto/declarative/qdeclarativexmlhttprequest/tst_qdeclarativexmlhttprequest.cpp @@ -55,12 +55,6 @@ public: tst_qdeclarativexmlhttprequest() {} private slots: - void initTestCase() { - if (QLocale::system().name().replace(QChar::fromAscii('_'),QChar::fromAscii('-')) != QLatin1String("en-US")) { - qWarning() << "Test will fail unless LANG is en_US"; - } - } - void domExceptionCodes(); void callbackException(); void callbackException_data(); @@ -69,6 +63,7 @@ private slots: void constructor(); void defaultState(); void open(); + void open_data(); void open_invalid_method(); void open_sync(); void open_arg_count(); @@ -82,6 +77,7 @@ private slots: void send_alreadySent(); void send_ignoreData(); void send_withdata(); + void send_withdata_data(); void abort(); void abort_unsent(); void abort_opened(); @@ -94,11 +90,15 @@ private slots: void getAllResponseHeaders_sent(); void getAllResponseHeaders_args(); void status(); + void status_data(); void statusText(); + void statusText_data(); void responseText(); + void responseText_data(); void responseXML_invalid(); void invalidMethodUsage(); void redirects(); + void nonUtf8(); // Attributes void document(); @@ -257,99 +257,50 @@ void tst_qdeclarativexmlhttprequest::defaultState() // Test valid XMLHttpRequest.open() calls void tst_qdeclarativexmlhttprequest::open() { - // Relative url - { - QDeclarativeComponent component(&engine, TEST_FILE("open.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "testdocument.html"); - component.completeCreate(); - - QCOMPARE(object->property("readyState").toBool(), true); - QCOMPARE(object->property("openedState").toBool(), true); - QCOMPARE(object->property("status").toBool(), true); - QCOMPARE(object->property("statusText").toBool(), true); - QCOMPARE(object->property("responseText").toBool(), true); - QCOMPARE(object->property("responseXML").toBool(), true); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; + QFETCH(QUrl, qmlFile); + QFETCH(QString, url); + QFETCH(bool, remote); + + TestHTTPServer *server = 0; + if (remote) { + server = new TestHTTPServer(SERVER_PORT); + QVERIFY(server->isValid()); + QVERIFY(server->wait(TEST_FILE("open_network.expect"), + TEST_FILE("open_network.reply"), + TEST_FILE("testdocument.html"))); } - // Absolute url - { - QDeclarativeComponent component(&engine, TEST_FILE("open.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", TEST_FILE("testdocument.html").toString()); - component.completeCreate(); - - QCOMPARE(object->property("readyState").toBool(), true); - QCOMPARE(object->property("openedState").toBool(), true); - QCOMPARE(object->property("status").toBool(), true); - QCOMPARE(object->property("statusText").toBool(), true); - QCOMPARE(object->property("responseText").toBool(), true); - QCOMPARE(object->property("responseXML").toBool(), true); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } - - // Absolute network url - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("open_network.expect"), - TEST_FILE("open_network.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("open.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); - - QCOMPARE(object->property("readyState").toBool(), true); - QCOMPARE(object->property("openedState").toBool(), true); - QCOMPARE(object->property("status").toBool(), true); - QCOMPARE(object->property("statusText").toBool(), true); - QCOMPARE(object->property("responseText").toBool(), true); - QCOMPARE(object->property("responseXML").toBool(), true); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } + QDeclarativeComponent component(&engine, qmlFile); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", url); + component.completeCreate(); - // User/pass - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("open_network.expect"), - TEST_FILE("open_network.reply"), - TEST_FILE("testdocument.html"))); + QCOMPARE(object->property("readyState").toBool(), true); + QCOMPARE(object->property("openedState").toBool(), true); + QCOMPARE(object->property("status").toBool(), true); + QCOMPARE(object->property("statusText").toBool(), true); + QCOMPARE(object->property("responseText").toBool(), true); + QCOMPARE(object->property("responseXML").toBool(), true); - QDeclarativeComponent component(&engine, TEST_FILE("open_user.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); + TRY_WAIT(object->property("dataOK").toBool() == true); - QCOMPARE(object->property("readyState").toBool(), true); - QCOMPARE(object->property("openedState").toBool(), true); - QCOMPARE(object->property("status").toBool(), true); - QCOMPARE(object->property("statusText").toBool(), true); - QCOMPARE(object->property("responseText").toBool(), true); - QCOMPARE(object->property("responseXML").toBool(), true); + delete server; + delete object; +} - TRY_WAIT(object->property("dataOK").toBool() == true); +void tst_qdeclarativexmlhttprequest::open_data() +{ + QTest::addColumn<QUrl>("qmlFile"); + QTest::addColumn<QString>("url"); + QTest::addColumn<bool>("remote"); - // ### Check that the username/password were sent to the server + QTest::newRow("Relative url)") << TEST_FILE("open.qml") << "testdocument.html" << false; + QTest::newRow("Absolute url)") << TEST_FILE("open.qml") << TEST_FILE("testdocument.html").toString() << false; + QTest::newRow("Absolute network url)") << TEST_FILE("open.qml") << "http://127.0.0.1:14445/testdocument.html" << true; - delete object; - } + // ### Check that the username/password were sent to the server + QTest::newRow("User/pass") << TEST_FILE("open_user.qml") << "http://127.0.0.1:14445/testdocument.html" << true; } // Test that calling XMLHttpRequest.open() with an invalid method raises an exception @@ -594,138 +545,38 @@ void tst_qdeclarativexmlhttprequest::send_ignoreData() // Test that send()'ing data works void tst_qdeclarativexmlhttprequest::send_withdata() { - // No content-type - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_data.1.expect"), - TEST_FILE("send_data.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("send_data.1.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } - - // Correct content-type - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_data.1.expect"), - TEST_FILE("send_data.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("send_data.2.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } - - // Incorrect content-type - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_data.1.expect"), - TEST_FILE("send_data.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("send_data.3.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } - - // Correct content-type - out of order - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_data.4.expect"), - TEST_FILE("send_data.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("send_data.4.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } - - // Incorrect content-type - out of order - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_data.4.expect"), - TEST_FILE("send_data.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("send_data.5.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); + QFETCH(QString, file_expected); + QFETCH(QString, file_qml); - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } - - // PUT - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_data.6.expect"), - TEST_FILE("send_data.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("send_data.6.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); - - TRY_WAIT(object->property("dataOK").toBool() == true); - - delete object; - } + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE(file_expected), + TEST_FILE("send_data.reply"), + TEST_FILE("testdocument.html"))); - // Correct content-type - no charset - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("send_data.1.expect"), - TEST_FILE("send_data.reply"), - TEST_FILE("testdocument.html"))); + QDeclarativeComponent component(&engine, TEST_FILE(file_qml)); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); + component.completeCreate(); - QDeclarativeComponent component(&engine, TEST_FILE("send_data.7.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - component.completeCreate(); + TRY_WAIT(object->property("dataOK").toBool() == true); - TRY_WAIT(object->property("dataOK").toBool() == true); + delete object; +} - delete object; - } +void tst_qdeclarativexmlhttprequest::send_withdata_data() +{ + QTest::addColumn<QString>("file_expected"); + QTest::addColumn<QString>("file_qml"); + + QTest::newRow("No content-type") << "send_data.1.expect" << "send_data.1.qml"; + QTest::newRow("Correct content-type") << "send_data.1.expect" << "send_data.2.qml"; + QTest::newRow("Incorrect content-type") << "send_data.1.expect" << "send_data.3.qml"; + QTest::newRow("Correct content-type - out of order") << "send_data.4.expect" << "send_data.4.qml"; + QTest::newRow("Incorrect content-type - out of order") << "send_data.4.expect" << "send_data.5.qml"; + QTest::newRow("PUT") << "send_data.6.expect" << "send_data.6.qml"; + QTest::newRow("Correct content-type - no charset") << "send_data.1.expect" << "send_data.7.qml"; } // Test abort() has no effect in unsent state @@ -940,200 +791,149 @@ void tst_qdeclarativexmlhttprequest::getAllResponseHeaders_args() void tst_qdeclarativexmlhttprequest::status() { - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("status.expect"), - TEST_FILE("status.200.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("status.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - object->setProperty("expectedStatus", 200); - component.completeCreate(); + QFETCH(QUrl, replyUrl); + QFETCH(int, status); - TRY_WAIT(object->property("dataOK").toBool() == true); - - QCOMPARE(object->property("unsentException").toBool(), true); - QCOMPARE(object->property("openedException").toBool(), true); - QCOMPARE(object->property("sentException").toBool(), true); - QCOMPARE(object->property("headersReceived").toBool(), true); - QCOMPARE(object->property("loading").toBool(), true); - QCOMPARE(object->property("done").toBool(), true); - QCOMPARE(object->property("resetException").toBool(), true); + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("status.expect"), + replyUrl, + TEST_FILE("testdocument.html"))); - delete object; - } + QDeclarativeComponent component(&engine, TEST_FILE("status.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); + object->setProperty("expectedStatus", status); + component.completeCreate(); - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("status.expect"), - TEST_FILE("status.404.reply"), - TEST_FILE("testdocument.html"))); + TRY_WAIT(object->property("dataOK").toBool() == true); - QDeclarativeComponent component(&engine, TEST_FILE("status.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - object->setProperty("expectedStatus", 404); - component.completeCreate(); + QCOMPARE(object->property("unsentException").toBool(), true); + QCOMPARE(object->property("openedException").toBool(), true); + QCOMPARE(object->property("sentException").toBool(), true); + QCOMPARE(object->property("headersReceived").toBool(), true); + QCOMPARE(object->property("loading").toBool(), true); + QCOMPARE(object->property("done").toBool(), true); + QCOMPARE(object->property("resetException").toBool(), true); - TRY_WAIT(object->property("dataOK").toBool() == true); + delete object; +} - QCOMPARE(object->property("unsentException").toBool(), true); - QCOMPARE(object->property("openedException").toBool(), true); - QCOMPARE(object->property("sentException").toBool(), true); - QCOMPARE(object->property("headersReceived").toBool(), true); - QCOMPARE(object->property("loading").toBool(), true); - QCOMPARE(object->property("done").toBool(), true); - QCOMPARE(object->property("resetException").toBool(), true); +void tst_qdeclarativexmlhttprequest::status_data() +{ + QTest::addColumn<QUrl>("replyUrl"); + QTest::addColumn<int>("status"); - delete object; - } + QTest::newRow("OK") << TEST_FILE("status.200.reply") << 200; + QTest::newRow("Not Found") << TEST_FILE("status.404.reply") << 404; } void tst_qdeclarativexmlhttprequest::statusText() { - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("status.expect"), - TEST_FILE("status.200.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("statusText.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - object->setProperty("expectedStatus", "OK"); - component.completeCreate(); + QFETCH(QUrl, replyUrl); + QFETCH(QString, statusText); - TRY_WAIT(object->property("dataOK").toBool() == true); - - QCOMPARE(object->property("unsentException").toBool(), true); - QCOMPARE(object->property("openedException").toBool(), true); - QCOMPARE(object->property("sentException").toBool(), true); - QCOMPARE(object->property("headersReceived").toBool(), true); - QCOMPARE(object->property("loading").toBool(), true); - QCOMPARE(object->property("done").toBool(), true); - QCOMPARE(object->property("resetException").toBool(), true); + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("status.expect"), + replyUrl, + TEST_FILE("testdocument.html"))); - delete object; - } + QDeclarativeComponent component(&engine, TEST_FILE("statusText.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); + object->setProperty("expectedStatus", statusText); + component.completeCreate(); - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("status.expect"), - TEST_FILE("status.404.reply"), - TEST_FILE("testdocument.html"))); + TRY_WAIT(object->property("dataOK").toBool() == true); - QDeclarativeComponent component(&engine, TEST_FILE("statusText.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - object->setProperty("expectedStatus", "Document not found"); - component.completeCreate(); + QCOMPARE(object->property("unsentException").toBool(), true); + QCOMPARE(object->property("openedException").toBool(), true); + QCOMPARE(object->property("sentException").toBool(), true); + QCOMPARE(object->property("headersReceived").toBool(), true); + QCOMPARE(object->property("loading").toBool(), true); + QCOMPARE(object->property("done").toBool(), true); + QCOMPARE(object->property("resetException").toBool(), true); - TRY_WAIT(object->property("dataOK").toBool() == true); + delete object; +} - QCOMPARE(object->property("unsentException").toBool(), true); - QCOMPARE(object->property("openedException").toBool(), true); - QCOMPARE(object->property("sentException").toBool(), true); - QCOMPARE(object->property("headersReceived").toBool(), true); - QCOMPARE(object->property("loading").toBool(), true); - QCOMPARE(object->property("done").toBool(), true); - QCOMPARE(object->property("resetException").toBool(), true); +void tst_qdeclarativexmlhttprequest::statusText_data() +{ + QTest::addColumn<QUrl>("replyUrl"); + QTest::addColumn<QString>("statusText"); - delete object; - } + QTest::newRow("OK") << TEST_FILE("status.200.reply") << "OK"; + QTest::newRow("Not Found") << TEST_FILE("status.404.reply") << "Document not found"; } void tst_qdeclarativexmlhttprequest::responseText() { - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("status.expect"), - TEST_FILE("status.200.reply"), - TEST_FILE("testdocument.html"))); - - QDeclarativeComponent component(&engine, TEST_FILE("responseText.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - object->setProperty("expectedText", "QML Rocks!\n"); - component.completeCreate(); + QFETCH(QUrl, replyUrl); + QFETCH(QUrl, bodyUrl); + QFETCH(QString, responseText); - TRY_WAIT(object->property("dataOK").toBool() == true); + TestHTTPServer server(SERVER_PORT); + QVERIFY(server.isValid()); + QVERIFY(server.wait(TEST_FILE("status.expect"), + replyUrl, + bodyUrl)); - QCOMPARE(object->property("unsent").toBool(), true); - QCOMPARE(object->property("opened").toBool(), true); - QCOMPARE(object->property("sent").toBool(), true); - QCOMPARE(object->property("headersReceived").toBool(), true); - QCOMPARE(object->property("loading").toBool(), true); - QCOMPARE(object->property("done").toBool(), true); - QCOMPARE(object->property("reset").toBool(), true); + QDeclarativeComponent component(&engine, TEST_FILE("responseText.qml")); + QObject *object = component.beginCreate(engine.rootContext()); + QVERIFY(object != 0); + object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); + object->setProperty("expectedText", responseText); + component.completeCreate(); - delete object; - } + TRY_WAIT(object->property("dataOK").toBool() == true); - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("status.expect"), - TEST_FILE("status.200.reply"), - QUrl())); + QCOMPARE(object->property("unsent").toBool(), true); + QCOMPARE(object->property("opened").toBool(), true); + QCOMPARE(object->property("sent").toBool(), true); + QCOMPARE(object->property("headersReceived").toBool(), true); + QCOMPARE(object->property("loading").toBool(), true); + QCOMPARE(object->property("done").toBool(), true); + QCOMPARE(object->property("reset").toBool(), true); - QDeclarativeComponent component(&engine, TEST_FILE("responseText.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - object->setProperty("expectedText", ""); - component.completeCreate(); + delete object; +} - TRY_WAIT(object->property("dataOK").toBool() == true); +void tst_qdeclarativexmlhttprequest::responseText_data() +{ + QTest::addColumn<QUrl>("replyUrl"); + QTest::addColumn<QUrl>("bodyUrl"); + QTest::addColumn<QString>("responseText"); - QCOMPARE(object->property("unsent").toBool(), true); - QCOMPARE(object->property("opened").toBool(), true); - QCOMPARE(object->property("sent").toBool(), true); - QCOMPARE(object->property("headersReceived").toBool(), true); - QCOMPARE(object->property("loading").toBool(), true); - QCOMPARE(object->property("done").toBool(), true); - QCOMPARE(object->property("reset").toBool(), true); + QTest::newRow("OK") << TEST_FILE("status.200.reply") << TEST_FILE("testdocument.html") << "QML Rocks!\n"; + QTest::newRow("empty body") << TEST_FILE("status.200.reply") << QUrl() << ""; + QTest::newRow("Not Found") << TEST_FILE("status.404.reply") << TEST_FILE("testdocument.html") << ""; +} - delete object; - } +void tst_qdeclarativexmlhttprequest::nonUtf8() +{ + QDeclarativeComponent component(&engine, TEST_FILE("utf16.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); - { - TestHTTPServer server(SERVER_PORT); - QVERIFY(server.isValid()); - QVERIFY(server.wait(TEST_FILE("status.expect"), - TEST_FILE("status.404.reply"), - TEST_FILE("testdocument.html"))); + QString uc; + uc.resize(3); + uc[0] = QChar(0x10e3); + uc[1] = QChar(' '); + uc[2] = QChar(0x03a3); + QString xml = "<?xml version=\"1.0\" encoding=\"UTF-16\" standalone='yes'?>\n<root>\n" + uc + "\n</root>\n"; - QDeclarativeComponent component(&engine, TEST_FILE("responseText.qml")); - QObject *object = component.beginCreate(engine.rootContext()); - QVERIFY(object != 0); - object->setProperty("url", "http://127.0.0.1:14445/testdocument.html"); - object->setProperty("expectedText", ""); - component.completeCreate(); + TRY_WAIT(object->property("dataOK").toBool() == true); - TRY_WAIT(object->property("dataOK").toBool() == true); + QString responseText = object->property("responseText").toString(); + QCOMPARE(responseText, xml); - QCOMPARE(object->property("unsent").toBool(), true); - QCOMPARE(object->property("opened").toBool(), true); - QCOMPARE(object->property("sent").toBool(), true); - QCOMPARE(object->property("headersReceived").toBool(), true); - QCOMPARE(object->property("loading").toBool(), true); - QCOMPARE(object->property("done").toBool(), true); - QCOMPARE(object->property("reset").toBool(), true); + QString responseXmlText = object->property("responseXmlRootNodeValue").toString(); + QCOMPARE(responseXmlText, '\n' + uc + '\n'); - delete object; - } + delete object; } // Test that calling hte XMLHttpRequest methods on a non-XMLHttpRequest object @@ -1168,7 +968,7 @@ void tst_qdeclarativexmlhttprequest::redirects() TestHTTPServer server(SERVER_PORT); QVERIFY(server.isValid()); server.addRedirect("redirect.html", "http://127.0.0.1:14445/redirecttarget.html"); - server.serveDirectory("data"); + server.serveDirectory(SRCDIR "/data"); QDeclarativeComponent component(&engine, TEST_FILE("redirects.qml")); QObject *object = component.beginCreate(engine.rootContext()); @@ -1187,7 +987,7 @@ void tst_qdeclarativexmlhttprequest::redirects() TestHTTPServer server(SERVER_PORT); QVERIFY(server.isValid()); server.addRedirect("redirect.html", "http://127.0.0.1:14445/redirectmissing.html"); - server.serveDirectory("data"); + server.serveDirectory(SRCDIR "/data"); QDeclarativeComponent component(&engine, TEST_FILE("redirectError.qml")); QObject *object = component.beginCreate(engine.rootContext()); @@ -1206,7 +1006,7 @@ void tst_qdeclarativexmlhttprequest::redirects() TestHTTPServer server(SERVER_PORT); QVERIFY(server.isValid()); server.addRedirect("redirect.html", "http://127.0.0.1:14445/redirect.html"); - server.serveDirectory("data"); + server.serveDirectory(SRCDIR "/data"); QDeclarativeComponent component(&engine, TEST_FILE("redirectRecur.qml")); QObject *object = component.beginCreate(engine.rootContext()); diff --git a/tests/auto/declarative/qdeclarativexmllistmodel/data/model2.xml b/tests/auto/declarative/qdeclarativexmllistmodel/data/model2.xml new file mode 100644 index 0000000..dab2ec6 --- /dev/null +++ b/tests/auto/declarative/qdeclarativexmllistmodel/data/model2.xml @@ -0,0 +1,14 @@ +<Pets> + <Pet> + <name>Polly</name> + <type>Parrot</type> + <age>12</age> + <size>Small</size> + </Pet> + <Pet> + <name>Penny</name> + <type>Turtle</type> + <age>4</age> + <size>Small</size> + </Pet> +</Pets> diff --git a/tests/auto/declarative/qdeclarativexmllistmodel/data/propertychanges.qml b/tests/auto/declarative/qdeclarativexmllistmodel/data/propertychanges.qml new file mode 100644 index 0000000..737ec81 --- /dev/null +++ b/tests/auto/declarative/qdeclarativexmllistmodel/data/propertychanges.qml @@ -0,0 +1,10 @@ +import Qt 4.6 + +XmlListModel { + source: "model.xml" + query: "/Pets/Pet" + XmlRole { objectName: "role"; name: "name"; query: "name/string()" } + XmlRole { name: "type"; query: "type/string()" } + XmlRole { name: "age"; query: "age/number()" } + XmlRole { name: "size"; query: "size/string()" } +} diff --git a/tests/auto/declarative/qdeclarativexmllistmodel/qdeclarativexmllistmodel.pro b/tests/auto/declarative/qdeclarativexmllistmodel/qdeclarativexmllistmodel.pro index 88832dc..8c5052a 100644 --- a/tests/auto/declarative/qdeclarativexmllistmodel/qdeclarativexmllistmodel.pro +++ b/tests/auto/declarative/qdeclarativexmllistmodel/qdeclarativexmllistmodel.pro @@ -9,3 +9,6 @@ macx:CONFIG -= app_bundle SOURCES += tst_qdeclarativexmllistmodel.cpp DEFINES += SRCDIR=\\\"$$PWD\\\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp b/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp index e19e03d..cf7e357 100644 --- a/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp +++ b/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp @@ -41,6 +41,8 @@ #include <qtest.h> #include <QtTest/qsignalspy.h> #include <QtCore/qtimer.h> +#include <QtCore/qfile.h> +#include <QtCore/qtemporaryfile.h> #ifdef QTEST_XMLPATTERNS #include <QtDeclarative/qdeclarativeengine.h> @@ -53,6 +55,7 @@ typedef QList<QVariantList> QDeclarativeXmlModelData; Q_DECLARE_METATYPE(QList<QDeclarativeXmlListRange>) Q_DECLARE_METATYPE(QDeclarativeXmlModelData) +Q_DECLARE_METATYPE(QDeclarativeXmlListModel::Status) class tst_qdeclarativexmllistmodel : public QObject @@ -62,6 +65,10 @@ public: tst_qdeclarativexmllistmodel() {} private slots: + void initTestCase() { + qRegisterMetaType<QDeclarativeXmlListModel::Status>("QDeclarativeXmlListModel::Status"); + } + void buildModel(); void missingFields(); void cdata(); @@ -69,10 +76,19 @@ private slots: void roles(); void roleErrors(); void uniqueRoleNames(); + void xml(); + void xml_data(); + void source(); + void source_data(); + void data(); + void reload(); void useKeys(); void useKeys_data(); void noKeysValueChanges(); void keysChanged(); + void threading(); + void threading_data(); + void propertyChanges(); private: QString makeItemXmlAndData(const QString &data, QDeclarativeXmlModelData *modelData = 0) const @@ -84,6 +100,8 @@ private: if (!data.isEmpty()) { QStringList items = data.split(";"); foreach(const QString &item, items) { + if (item.isEmpty()) + continue; QVariantList variants; xml += QLatin1String("<item>"); QStringList fields = item.split(","); @@ -116,90 +134,89 @@ private: void tst_qdeclarativexmllistmodel::buildModel() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/model.qml")); - QDeclarativeXmlListModel *listModel = qobject_cast<QDeclarativeXmlListModel*>(component.create()); - QVERIFY(listModel != 0); - QTRY_COMPARE(listModel->count(), 9); + QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QVERIFY(model != 0); + QTRY_COMPARE(model->count(), 9); QList<int> roles; roles << Qt::UserRole << Qt::UserRole + 1 << Qt::UserRole + 2 << Qt::UserRole + 3; - QHash<int, QVariant> data = listModel->data(3, roles); + QHash<int, QVariant> data = model->data(3, roles); QVERIFY(data.count() == 4); QCOMPARE(data.value(Qt::UserRole).toString(), QLatin1String("Spot")); QCOMPARE(data.value(Qt::UserRole+1).toString(), QLatin1String("Dog")); QCOMPARE(data.value(Qt::UserRole+2).toInt(), 9); QCOMPARE(data.value(Qt::UserRole+3).toString(), QLatin1String("Medium")); - delete listModel; + delete model; } void tst_qdeclarativexmllistmodel::missingFields() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/model2.qml")); - QDeclarativeXmlListModel *listModel = qobject_cast<QDeclarativeXmlListModel*>(component.create()); - QVERIFY(listModel != 0); - QTRY_COMPARE(listModel->count(), 9); + QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QVERIFY(model != 0); + QTRY_COMPARE(model->count(), 9); QList<int> roles; roles << Qt::UserRole << Qt::UserRole + 1 << Qt::UserRole + 2 << Qt::UserRole + 3 << Qt::UserRole + 4; - QHash<int, QVariant> data = listModel->data(5, roles); + QHash<int, QVariant> data = model->data(5, roles); QVERIFY(data.count() == 5); QCOMPARE(data.value(Qt::UserRole+3).toString(), QLatin1String("")); QCOMPARE(data.value(Qt::UserRole+4).toString(), QLatin1String("")); - data = listModel->data(7, roles); + data = model->data(7, roles); QVERIFY(data.count() == 5); QCOMPARE(data.value(Qt::UserRole+2).toString(), QLatin1String("")); - delete listModel; + delete model; } void tst_qdeclarativexmllistmodel::cdata() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/recipes.qml")); - QDeclarativeXmlListModel *listModel = qobject_cast<QDeclarativeXmlListModel*>(component.create()); - QVERIFY(listModel != 0); - QTRY_COMPARE(listModel->count(), 5); + QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QVERIFY(model != 0); + QTRY_COMPARE(model->count(), 5); QList<int> roles; roles << Qt::UserRole + 2; - QHash<int, QVariant> data = listModel->data(2, roles); + QHash<int, QVariant> data = model->data(2, roles); QVERIFY(data.count() == 1); QVERIFY(data.value(Qt::UserRole+2).toString().startsWith(QLatin1String("<html>"))); - delete listModel; + delete model; } void tst_qdeclarativexmllistmodel::attributes() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/recipes.qml")); - QDeclarativeXmlListModel *listModel = qobject_cast<QDeclarativeXmlListModel*>(component.create()); - QVERIFY(listModel != 0); - QTRY_COMPARE(listModel->count(), 5); - + QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QVERIFY(model != 0); + QTRY_COMPARE(model->count(), 5); QList<int> roles; roles << Qt::UserRole; - QHash<int, QVariant> data = listModel->data(2, roles); + QHash<int, QVariant> data = model->data(2, roles); QVERIFY(data.count() == 1); QCOMPARE(data.value(Qt::UserRole).toString(), QLatin1String("Vegetable Soup")); - delete listModel; + delete model; } void tst_qdeclarativexmllistmodel::roles() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/model.qml")); - QDeclarativeXmlListModel *listModel = qobject_cast<QDeclarativeXmlListModel*>(component.create()); - QVERIFY(listModel != 0); - QTRY_COMPARE(listModel->count(), 9); + QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QVERIFY(model != 0); + QTRY_COMPARE(model->count(), 9); - QList<int> roles = listModel->roles(); + QList<int> roles = model->roles(); QCOMPARE(roles.count(), 4); - QCOMPARE(listModel->toString(roles.at(0)), QLatin1String("name")); - QCOMPARE(listModel->toString(roles.at(1)), QLatin1String("type")); - QCOMPARE(listModel->toString(roles.at(2)), QLatin1String("age")); - QCOMPARE(listModel->toString(roles.at(3)), QLatin1String("size")); + QCOMPARE(model->toString(roles.at(0)), QLatin1String("name")); + QCOMPARE(model->toString(roles.at(1)), QLatin1String("type")); + QCOMPARE(model->toString(roles.at(2)), QLatin1String("age")); + QCOMPARE(model->toString(roles.at(3)), QLatin1String("size")); - delete listModel; + delete model; } void tst_qdeclarativexmllistmodel::roleErrors() @@ -207,13 +224,13 @@ void tst_qdeclarativexmllistmodel::roleErrors() QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/roleErrors.qml")); QTest::ignoreMessage(QtWarningMsg, QString("QML XmlRole (" + QUrl::fromLocalFile(SRCDIR "/data/roleErrors.qml").toString() + ":6:5) An XmlRole query must not start with '/'").toUtf8().constData()); //### make sure we receive all expected warning messages. - QDeclarativeXmlListModel *listModel = qobject_cast<QDeclarativeXmlListModel*>(component.create()); - QVERIFY(listModel != 0); - QTRY_COMPARE(listModel->count(), 9); + QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QVERIFY(model != 0); + QTRY_COMPARE(model->count(), 9); QList<int> roles; roles << Qt::UserRole << Qt::UserRole + 1 << Qt::UserRole + 2 << Qt::UserRole + 3; - QHash<int, QVariant> data = listModel->data(3, roles); + QHash<int, QVariant> data = model->data(3, roles); QVERIFY(data.count() == 4); //### should any of these return valid values? @@ -224,21 +241,170 @@ void tst_qdeclarativexmllistmodel::roleErrors() QEXPECT_FAIL("", "QT-2456", Continue); QCOMPARE(data.value(Qt::UserRole+3), QVariant()); - delete listModel; + delete model; } void tst_qdeclarativexmllistmodel::uniqueRoleNames() { QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/unique.qml")); QTest::ignoreMessage(QtWarningMsg, QString("QML XmlRole (" + QUrl::fromLocalFile(SRCDIR "/data/unique.qml").toString() + ":7:5) \"name\" duplicates a previous role name and will be disabled.").toUtf8().constData()); - QDeclarativeXmlListModel *listModel = qobject_cast<QDeclarativeXmlListModel*>(component.create()); - QVERIFY(listModel != 0); - QTRY_COMPARE(listModel->count(), 9); + QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QVERIFY(model != 0); + QTRY_COMPARE(model->count(), 9); - QList<int> roles = listModel->roles(); + QList<int> roles = model->roles(); QCOMPARE(roles.count(), 1); - delete listModel; + delete model; +} + + +void tst_qdeclarativexmllistmodel::xml() +{ + QFETCH(QString, xml); + QFETCH(int, count); + + QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/model.qml")); + QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QSignalSpy spy(model, SIGNAL(statusChanged(QDeclarativeXmlListModel::Status))); + + QCOMPARE(model->progress(), qreal(0.0)); + QCOMPARE(model->status(), QDeclarativeXmlListModel::Loading); + QTRY_COMPARE(spy.count(), 1); spy.clear(); + QCOMPARE(model->status(), QDeclarativeXmlListModel::Ready); + QCOMPARE(model->progress(), qreal(1.0)); + QCOMPARE(model->count(), 9); + + // if xml is empty (i.e. clearing) it won't have any effect if a source is set + if (xml.isEmpty()) + model->setSource(QUrl()); + model->setXml(xml); + QCOMPARE(model->progress(), qreal(1.0)); // immediately goes to 1.0 if using setXml() + QTRY_COMPARE(spy.count(), 1); spy.clear(); + QCOMPARE(model->status(), QDeclarativeXmlListModel::Loading); + QTRY_COMPARE(spy.count(), 1); spy.clear(); + QCOMPARE(model->status(), QDeclarativeXmlListModel::Ready); + QCOMPARE(model->count(), count); + + delete model; +} + +void tst_qdeclarativexmllistmodel::xml_data() +{ + QTest::addColumn<QString>("xml"); + QTest::addColumn<int>("count"); + + QTest::newRow("xml with no items") << "<Pets></Pets>" << 0; + QTest::newRow("empty xml") << "" << 0; + QTest::newRow("one item") << "<Pets><Pet><name>Hobbes</name><type>Tiger</type><age>7</age><size>Large</size></Pet></Pets>" << 1; +} + +void tst_qdeclarativexmllistmodel::source() +{ + QFETCH(QUrl, source); + QFETCH(int, count); + QFETCH(QDeclarativeXmlListModel::Status, status); + + QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/model.qml")); + QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QSignalSpy spy(model, SIGNAL(statusChanged(QDeclarativeXmlListModel::Status))); + + QCOMPARE(model->progress(), qreal(0.0)); + QCOMPARE(model->status(), QDeclarativeXmlListModel::Loading); + QTRY_COMPARE(spy.count(), 1); spy.clear(); + QCOMPARE(model->status(), QDeclarativeXmlListModel::Ready); + QCOMPARE(model->progress(), qreal(1.0)); + QCOMPARE(model->count(), 9); + + model->setSource(source); + QCOMPARE(model->progress(), qreal(0.0)); + QTRY_COMPARE(spy.count(), 1); spy.clear(); + QCOMPARE(model->status(), QDeclarativeXmlListModel::Loading); + + QEventLoop loop; + QTimer timer; + timer.setSingleShot(true); + connect(model, SIGNAL(statusChanged(QDeclarativeXmlListModel::Status)), &loop, SLOT(quit())); + connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit())); + timer.start(20000); + loop.exec(); + + if (spy.count() == 0 && status != QDeclarativeXmlListModel::Ready) { + qWarning("QDeclarativeXmlListModel invalid source test timed out"); + } else { + QCOMPARE(spy.count(), 1); spy.clear(); + } + + QCOMPARE(model->status(), status); + QCOMPARE(model->count(), count); + if (status == QDeclarativeXmlListModel::Ready) + QCOMPARE(model->progress(), qreal(1.0)); + + delete model; +} + +void tst_qdeclarativexmllistmodel::source_data() +{ + QTest::addColumn<QUrl>("source"); + QTest::addColumn<int>("count"); + QTest::addColumn<QDeclarativeXmlListModel::Status>("status"); + + QTest::newRow("valid") << QUrl::fromLocalFile(SRCDIR "/data/model2.xml") << 2 << QDeclarativeXmlListModel::Ready; + QTest::newRow("invalid") << QUrl("http://blah.blah/blah.xml") << 0 << QDeclarativeXmlListModel::Error; + + // empty file + QTemporaryFile *temp = new QTemporaryFile(this); + if (temp->open()) + QTest::newRow("empty file") << QUrl::fromLocalFile(temp->fileName()) << 0 << QDeclarativeXmlListModel::Ready; + temp->close(); +} + +void tst_qdeclarativexmllistmodel::data() +{ + QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/model.qml")); + QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QVERIFY(model != 0); + + QHash<int,QVariant> blank; + for (int i=0; i<model->roles().count(); i++) + blank.insert(model->roles()[i], QVariant()); + for (int i=0; i<9; i++) { + QCOMPARE(model->data(i, model->roles()), blank); + for (int j=0; j<model->roles().count(); j++) { + QCOMPARE(model->data(i, j), QVariant()); + } + } + QTRY_COMPARE(model->count(), 9); + + delete model; +} + +void tst_qdeclarativexmllistmodel::reload() +{ + // If no keys are used, the model should be rebuilt from scratch when + // reload() is called. + + QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/model.qml")); + QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QVERIFY(model != 0); + QTRY_COMPARE(model->count(), 9); + + QSignalSpy spyInsert(model, SIGNAL(itemsInserted(int,int))); + QSignalSpy spyRemove(model, SIGNAL(itemsRemoved(int,int))); + QSignalSpy spyCount(model, SIGNAL(countChanged())); + + model->reload(); + QTRY_COMPARE(spyCount.count(), 1); + QTRY_COMPARE(spyInsert.count(), 1); + QTRY_COMPARE(spyRemove.count(), 1); + + QCOMPARE(spyInsert[0][0].toInt(), 0); + QCOMPARE(spyInsert[0][1].toInt(), 9); + + QCOMPARE(spyRemove[0][0].toInt(), 0); + QCOMPARE(spyRemove[0][1].toInt(), 9); + + delete model; } void tst_qdeclarativexmllistmodel::useKeys() @@ -257,7 +423,7 @@ void tst_qdeclarativexmllistmodel::useKeys() QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/roleKeys.qml")); QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create()); QVERIFY(model != 0); - + model->setXml(oldXml); QTRY_COMPARE(model->count(), oldCount); @@ -292,6 +458,8 @@ void tst_qdeclarativexmllistmodel::useKeys() QCOMPARE(spyRemove[i][0].toInt(), removeRanges[i].first); QCOMPARE(spyRemove[i][1].toInt(), removeRanges[i].second); } + + delete model; } void tst_qdeclarativexmllistmodel::useKeys_data() @@ -368,12 +536,33 @@ void tst_qdeclarativexmllistmodel::useKeys_data() << (QList<QDeclarativeXmlListRange>() << qMakePair(0, 1)) << (QList<QDeclarativeXmlListRange>() << qMakePair(0, 1)); - QTest::newRow("add and remove simultaneously") + QTest::newRow("add and remove simultaneously, in different spots") << makeItemXmlAndData("name=A,age=25,sport=Football;name=B,age=35,sport=Athletics;name=C,age=45,sport=Curling;name=D,age=55,sport=Golf") << 4 << makeItemXmlAndData("name=B,age=35,sport=Athletics;name=E,age=65,sport=Fencing", &modelData) << modelData << (QList<QDeclarativeXmlListRange>() << qMakePair(1, 1)) << (QList<QDeclarativeXmlListRange>() << qMakePair(0, 1) << qMakePair(2,2)); + + QTest::newRow("insert at start, remove at end i.e. rss feed") + << makeItemXmlAndData("name=C,age=45,sport=Curling;name=D,age=55,sport=Golf;name=E,age=65,sport=Fencing") << 3 + << makeItemXmlAndData("name=A,age=25,sport=Football;name=B,age=35,sport=Athletics;name=C,age=45,sport=Curling", &modelData) + << modelData + << (QList<QDeclarativeXmlListRange>() << qMakePair(0, 2)) + << (QList<QDeclarativeXmlListRange>() << qMakePair(1, 2)); + + QTest::newRow("remove at start, insert at end") + << makeItemXmlAndData("name=A,age=25,sport=Football;name=B,age=35,sport=Athletics;name=C,age=45,sport=Curling") << 3 + << makeItemXmlAndData("name=C,age=45,sport=Curling;name=D,age=55,sport=Golf;name=E,age=65,sport=Fencing", &modelData) + << modelData + << (QList<QDeclarativeXmlListRange>() << qMakePair(1, 2)) + << (QList<QDeclarativeXmlListRange>() << qMakePair(0, 2)); + + QTest::newRow("all data has changed") + << makeItemXmlAndData("name=A,age=25,sport=Football;name=B,age=35") << 2 + << makeItemXmlAndData("name=C,age=45,sport=Curling;name=D,age=55,sport=Golf", &modelData) + << modelData + << (QList<QDeclarativeXmlListRange>() << qMakePair(0, 2)) + << (QList<QDeclarativeXmlListRange>() << qMakePair(0, 2)); } void tst_qdeclarativexmllistmodel::noKeysValueChanges() @@ -392,6 +581,8 @@ void tst_qdeclarativexmllistmodel::noKeysValueChanges() model->setXml(xml); QTRY_COMPARE(model->count(), 2); + model->setXml(""); + QSignalSpy spyInsert(model, SIGNAL(itemsInserted(int,int))); QSignalSpy spyRemove(model, SIGNAL(itemsRemoved(int,int))); QSignalSpy spyCount(model, SIGNAL(countChanged())); @@ -400,18 +591,16 @@ void tst_qdeclarativexmllistmodel::noKeysValueChanges() model->setXml(xml); // wait for the new xml data to be set, and verify no signals were emitted - for (int i=0; i<50; i++) { - QTest::qWait(100); - if (model->data(0, model->roles()[2]).toString() != QLatin1String("AussieRules")) - break; - } + QTRY_VERIFY(model->data(0, model->roles()[2]).toString() != QLatin1String("Football")); QCOMPARE(model->data(0, model->roles()[2]).toString(), QLatin1String("AussieRules")); QVERIFY(spyInsert.count() == 0); QVERIFY(spyRemove.count() == 0); QVERIFY(spyCount.count() == 0); - + QCOMPARE(model->count(), 2); + + delete model; } void tst_qdeclarativexmllistmodel::keysChanged() @@ -428,6 +617,8 @@ void tst_qdeclarativexmllistmodel::keysChanged() model->setXml(xml); QTRY_COMPARE(model->count(), 2); + model->setXml(""); + QSignalSpy spyInsert(model, SIGNAL(itemsInserted(int,int))); QSignalSpy spyRemove(model, SIGNAL(itemsRemoved(int,int))); QSignalSpy spyCount(model, SIGNAL(countChanged())); @@ -446,6 +637,135 @@ void tst_qdeclarativexmllistmodel::keysChanged() QCOMPARE(spyRemove[0][1].toInt(), 2); QCOMPARE(spyCount.count(), 0); + + delete model; +} + +void tst_qdeclarativexmllistmodel::threading() +{ + QFETCH(int, xmlDataCount); + + QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/roleKeys.qml")); + + QDeclarativeXmlListModel *m1 = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QVERIFY(m1 != 0); + QDeclarativeXmlListModel *m2 = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QVERIFY(m2 != 0); + QDeclarativeXmlListModel *m3 = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QVERIFY(m3 != 0); + + for (int dataCount=0; dataCount<xmlDataCount; dataCount++) { + + QString data1, data2, data3; + for (int i=0; i<dataCount; i++) { + data1 += "name=A" + QString::number(i) + ",age=1" + QString::number(i) + ",sport=Football;"; + data2 += "name=B" + QString::number(i) + ",age=2" + QString::number(i) + ",sport=Athletics;"; + data3 += "name=C" + QString::number(i) + ",age=3" + QString::number(i) + ",sport=Curling;"; + } + + m1->setXml(makeItemXmlAndData(data1)); + m2->setXml(makeItemXmlAndData(data2)); + m3->setXml(makeItemXmlAndData(data3)); + + QTRY_VERIFY(m1->count() == dataCount && m2->count() == dataCount && m3->count() == dataCount); + + for (int i=0; i<dataCount; i++) { + QCOMPARE(m1->data(i, m1->roles()[0]).toString(), QString("A" + QString::number(i))); + QCOMPARE(m1->data(i, m1->roles()[1]).toString(), QString("1" + QString::number(i))); + QCOMPARE(m1->data(i, m1->roles()[2]).toString(), QString("Football")); + + QCOMPARE(m2->data(i, m2->roles()[0]).toString(), QString("B" + QString::number(i))); + QCOMPARE(m2->data(i, m2->roles()[1]).toString(), QString("2" + QString::number(i))); + QCOMPARE(m2->data(i, m2->roles()[2]).toString(), QString("Athletics")); + + QCOMPARE(m3->data(i, m3->roles()[0]).toString(), QString("C" + QString::number(i))); + QCOMPARE(m3->data(i, m3->roles()[1]).toString(), QString("3" + QString::number(i))); + QCOMPARE(m3->data(i, m3->roles()[2]).toString(), QString("Curling")); + } + } + + delete m1; + delete m2; + delete m3; +} + +void tst_qdeclarativexmllistmodel::threading_data() +{ + QTest::addColumn<int>("xmlDataCount"); + + QTest::newRow("1") << 1; + QTest::newRow("2") << 2; + QTest::newRow("10") << 10; +} + +void tst_qdeclarativexmllistmodel::propertyChanges() +{ + QDeclarativeComponent component(&engine, QUrl::fromLocalFile(SRCDIR "/data/propertychanges.qml")); + QDeclarativeXmlListModel *model = qobject_cast<QDeclarativeXmlListModel*>(component.create()); + QVERIFY(model != 0); + QTRY_COMPARE(model->count(), 9); + + QDeclarativeXmlListModelRole *role = model->findChild<QDeclarativeXmlListModelRole*>("role"); + QVERIFY(role); + + QSignalSpy nameSpy(role, SIGNAL(nameChanged())); + QSignalSpy querySpy(role, SIGNAL(queryChanged())); + QSignalSpy isKeySpy(role, SIGNAL(isKeyChanged())); + + role->setName("size"); + role->setQuery("size/string()"); + role->setIsKey(true); + + QCOMPARE(role->name(), QString("size")); + QCOMPARE(role->query(), QString("size/string()")); + QVERIFY(role->isKey()); + + QCOMPARE(nameSpy.count(),1); + QCOMPARE(querySpy.count(),1); + QCOMPARE(isKeySpy.count(),1); + + role->setName("size"); + role->setQuery("size/string()"); + role->setIsKey(true); + + QCOMPARE(nameSpy.count(),1); + QCOMPARE(querySpy.count(),1); + QCOMPARE(isKeySpy.count(),1); + + QSignalSpy sourceSpy(model, SIGNAL(sourceChanged())); + QSignalSpy xmlSpy(model, SIGNAL(xmlChanged())); + QSignalSpy modelQuerySpy(model, SIGNAL(queryChanged())); + QSignalSpy namespaceDeclarationsSpy(model, SIGNAL(namespaceDeclarationsChanged())); + + model->setSource(QUrl("")); + model->setXml("<Pets><Pet><name>Polly</name><type>Parrot</type><age>12</age><size>Small</size></Pet></Pets>"); + model->setQuery("/Pets"); + model->setNamespaceDeclarations("declare namespace media=\"http://search.yahoo.com/mrss/\";"); + + QCOMPARE(model->source(), QUrl("")); + QCOMPARE(model->xml(), QString("<Pets><Pet><name>Polly</name><type>Parrot</type><age>12</age><size>Small</size></Pet></Pets>")); + QCOMPARE(model->query(), QString("/Pets")); + QCOMPARE(model->namespaceDeclarations(), QString("declare namespace media=\"http://search.yahoo.com/mrss/\";")); + + QTRY_VERIFY(model->count() == 1); + + QCOMPARE(sourceSpy.count(),1); + QCOMPARE(xmlSpy.count(),1); + QCOMPARE(modelQuerySpy.count(),1); + QCOMPARE(namespaceDeclarationsSpy.count(),1); + + model->setSource(QUrl("")); + model->setXml("<Pets><Pet><name>Polly</name><type>Parrot</type><age>12</age><size>Small</size></Pet></Pets>"); + model->setQuery("/Pets"); + model->setNamespaceDeclarations("declare namespace media=\"http://search.yahoo.com/mrss/\";"); + + QCOMPARE(sourceSpy.count(),1); + QCOMPARE(xmlSpy.count(),1); + QCOMPARE(modelQuerySpy.count(),1); + QCOMPARE(namespaceDeclarationsSpy.count(),1); + + QTRY_VERIFY(model->count() == 1); + delete model; } QTEST_MAIN(tst_qdeclarativexmllistmodel) diff --git a/tests/auto/declarative/qmetaobjectbuilder/qmetaobjectbuilder.pro b/tests/auto/declarative/qmetaobjectbuilder/qmetaobjectbuilder.pro index 94ffe4b..988177e 100644 --- a/tests/auto/declarative/qmetaobjectbuilder/qmetaobjectbuilder.pro +++ b/tests/auto/declarative/qmetaobjectbuilder/qmetaobjectbuilder.pro @@ -5,3 +5,4 @@ macx:CONFIG -= app_bundle SOURCES += \ tst_qmetaobjectbuilder.cpp +CONFIG += parallel_test diff --git a/tests/auto/declarative/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp b/tests/auto/declarative/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp index c1dc924..8ba9d45 100644 --- a/tests/auto/declarative/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp +++ b/tests/auto/declarative/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp @@ -139,10 +139,10 @@ void tst_QMetaObjectBuilder::mocVersionCheck() // It is intended as a reminder to also update QMetaObjectBuilder // whenenver moc changes. Once QMetaObjectBuilder has been // updated, this test can be changed to check for the next version. - QEXPECT_FAIL("", "QT-2918", Continue); - QCOMPARE(int(QObject::staticMetaObject.d.data[0]), 4); - QEXPECT_FAIL("", "QT-2918", Continue); - QCOMPARE(int(staticMetaObject.d.data[0]), 4); + int version = int(QObject::staticMetaObject.d.data[0]); + QVERIFY(version == 4 || version == 5); + version = int(staticMetaObject.d.data[0]); + QVERIFY(version == 4 || version == 5); } void tst_QMetaObjectBuilder::create() diff --git a/tests/auto/declarative/visual/ListView/basic1.qml b/tests/auto/declarative/qmlvisual/ListView/basic1.qml index 3c371a6..3c371a6 100644 --- a/tests/auto/declarative/visual/ListView/basic1.qml +++ b/tests/auto/declarative/qmlvisual/ListView/basic1.qml diff --git a/tests/auto/declarative/visual/ListView/basic2.qml b/tests/auto/declarative/qmlvisual/ListView/basic2.qml index bdba65e..bdba65e 100644 --- a/tests/auto/declarative/visual/ListView/basic2.qml +++ b/tests/auto/declarative/qmlvisual/ListView/basic2.qml diff --git a/tests/auto/declarative/qmlvisual/ListView/basic3.qml b/tests/auto/declarative/qmlvisual/ListView/basic3.qml new file mode 100644 index 0000000..2d68c0a --- /dev/null +++ b/tests/auto/declarative/qmlvisual/ListView/basic3.qml @@ -0,0 +1,29 @@ +import Qt 4.6 + +Rectangle { + color: "blue" + width: 200 + height: 300 + id: page + ListModel { + id: model + ListElement { + name: "January" + } + ListElement { + name: "February" + } + } + ListView { + anchors.fill: parent + model: model + delegate: Rectangle { + color: "red" + width: 100 + height: 100 + Text { + text: name + } + } + } +} diff --git a/tests/auto/declarative/qmlvisual/ListView/basic4.qml b/tests/auto/declarative/qmlvisual/ListView/basic4.qml new file mode 100644 index 0000000..7c68df1 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/ListView/basic4.qml @@ -0,0 +1,33 @@ +import Qt 4.6 + +Rectangle { + color: "blue" + width: 200 + height: 300 + id: page + ListModel { + id: model + ListElement { + name: "January" + } + ListElement { + name: "February" + } + } + Component { + id: delegate + Rectangle { + color: "red" + width: 100 + height: 100 + Text { + text: name + } + } + } + ListView { + anchors.fill: parent + model: model + delegate: delegate + } +} diff --git a/tests/auto/declarative/visual/ListView/data-MAC/basic1.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic1.qml index 83b700d..83b700d 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/basic1.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic1.qml diff --git a/tests/auto/declarative/visual/ListView/data-MAC/basic2.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic2.qml index 1483512..1483512 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/basic2.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic2.qml diff --git a/tests/auto/declarative/visual/ListView/data-MAC/basic3.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic3.qml index bf68998..bf68998 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/basic3.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic3.qml diff --git a/tests/auto/declarative/visual/ListView/data-MAC/basic4.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic4.qml index 4aa9ab6..4aa9ab6 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/basic4.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic4.qml diff --git a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.0.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.0.png Binary files differindex 13b280c..13b280c 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.0.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.0.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.1.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.1.png Binary files differindex 402872b..402872b 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.1.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.1.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.2.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.2.png Binary files differindex afd0830..afd0830 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.2.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.2.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.3.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.3.png Binary files differindex 7c15f61..7c15f61 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.3.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.3.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.4.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.4.png Binary files differindex afd0830..afd0830 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.4.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.4.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.5.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.5.png Binary files differindex fddf1cb..fddf1cb 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.5.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.5.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.6.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.6.png Binary files differindex 13b280c..13b280c 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.6.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.6.png diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.qml index 073749f..073749f 100644 --- a/tests/auto/declarative/visual/ListView/data/itemlist.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.qml diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.0.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.0.png Binary files differindex a1ab987..a1ab987 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.0.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.0.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.1.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.1.png Binary files differindex a1ab987..a1ab987 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.1.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.1.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.10.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.10.png Binary files differindex dcfca3f..dcfca3f 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.10.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.10.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.11.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.11.png Binary files differindex 7cc4047..7cc4047 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.11.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.11.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.12.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.12.png Binary files differindex a97f4ad..a97f4ad 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.12.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.12.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.13.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.13.png Binary files differindex 7a8c6bd..7a8c6bd 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.13.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.13.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.14.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.14.png Binary files differindex ae47356..ae47356 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.14.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.14.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.15.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.15.png Binary files differindex b3a7260..b3a7260 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.15.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.15.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.16.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.16.png Binary files differindex 581e824..581e824 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.16.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.16.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.17.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.17.png Binary files differindex 581e824..581e824 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.17.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.17.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.18.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.18.png Binary files differindex 581e824..581e824 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.18.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.18.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.19.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.19.png Binary files differindex 581e824..581e824 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.19.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.19.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.2.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.2.png Binary files differindex 9877b92..9877b92 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.2.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.2.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.3.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.3.png Binary files differindex 603bd24..603bd24 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.3.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.3.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.4.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.4.png Binary files differindex 5fdfbb8..5fdfbb8 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.4.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.4.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.5.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.5.png Binary files differindex a1ab987..a1ab987 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.5.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.5.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.6.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.6.png Binary files differindex 9ccf9b0..9ccf9b0 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.6.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.6.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.7.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.7.png Binary files differindex 6b40e1b..6b40e1b 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.7.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.7.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.8.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.8.png Binary files differindex 2fda36d..2fda36d 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.8.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.8.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.9.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.9.png Binary files differindex 581e824..581e824 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.9.png +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.9.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.qml index 3765668..3765668 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.qml diff --git a/tests/auto/declarative/visual/ListView/data-X11/basic1.qml b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic1.qml index ae59b14..ae59b14 100644 --- a/tests/auto/declarative/visual/ListView/data-X11/basic1.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic1.qml diff --git a/tests/auto/declarative/visual/ListView/data-X11/basic2.qml b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic2.qml index ff19d22..ff19d22 100644 --- a/tests/auto/declarative/visual/ListView/data-X11/basic2.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic2.qml diff --git a/tests/auto/declarative/visual/ListView/data-X11/basic3.qml b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic3.qml index 2f33cae..2f33cae 100644 --- a/tests/auto/declarative/visual/ListView/data-X11/basic3.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic3.qml diff --git a/tests/auto/declarative/visual/ListView/data-X11/basic4.qml b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic4.qml index 4b1c5cf..4b1c5cf 100644 --- a/tests/auto/declarative/visual/ListView/data-X11/basic4.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic4.qml diff --git a/tests/auto/declarative/visual/ListView/data/basic1.qml b/tests/auto/declarative/qmlvisual/ListView/data/basic1.qml index 4cd44fc..4cd44fc 100644 --- a/tests/auto/declarative/visual/ListView/data/basic1.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data/basic1.qml diff --git a/tests/auto/declarative/visual/ListView/data/basic2.qml b/tests/auto/declarative/qmlvisual/ListView/data/basic2.qml index 34ad5ed..34ad5ed 100644 --- a/tests/auto/declarative/visual/ListView/data/basic2.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data/basic2.qml diff --git a/tests/auto/declarative/visual/ListView/data/basic3.qml b/tests/auto/declarative/qmlvisual/ListView/data/basic3.qml index 1c5ddb0..1c5ddb0 100644 --- a/tests/auto/declarative/visual/ListView/data/basic3.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data/basic3.qml diff --git a/tests/auto/declarative/visual/ListView/data/basic4.qml b/tests/auto/declarative/qmlvisual/ListView/data/basic4.qml index d121d91..d121d91 100644 --- a/tests/auto/declarative/visual/ListView/data/basic4.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data/basic4.qml diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.0.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.png Binary files differindex a1947ca..a1947ca 100644 --- a/tests/auto/declarative/visual/ListView/data/itemlist.0.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.png diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.1.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.png Binary files differindex d27b7fa..d27b7fa 100644 --- a/tests/auto/declarative/visual/ListView/data/itemlist.1.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.png diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.2.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.png Binary files differindex fdab8c6..fdab8c6 100644 --- a/tests/auto/declarative/visual/ListView/data/itemlist.2.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.png diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.3.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.png Binary files differindex dc321a8..dc321a8 100644 --- a/tests/auto/declarative/visual/ListView/data/itemlist.3.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.png diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.4.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.png Binary files differindex fdab8c6..fdab8c6 100644 --- a/tests/auto/declarative/visual/ListView/data/itemlist.4.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.png diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.5.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.png Binary files differindex 15b51cb..15b51cb 100644 --- a/tests/auto/declarative/visual/ListView/data/itemlist.5.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.png diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.6.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.png Binary files differindex a1947ca..a1947ca 100644 --- a/tests/auto/declarative/visual/ListView/data/itemlist.6.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.qml b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml index 073749f..073749f 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml diff --git a/tests/auto/declarative/visual/ListView/data/listview.0.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.0.png Binary files differindex 581e824..581e824 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.0.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.0.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.1.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.1.png Binary files differindex 581e824..581e824 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.1.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.1.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.10.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.10.png Binary files differindex dcfca3f..dcfca3f 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.10.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.10.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.11.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.11.png Binary files differindex 7cc4047..7cc4047 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.11.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.11.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.12.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.12.png Binary files differindex a97f4ad..a97f4ad 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.12.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.12.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.13.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.13.png Binary files differindex 7a8c6bd..7a8c6bd 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.13.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.13.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.14.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.14.png Binary files differindex ae47356..ae47356 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.14.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.14.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.15.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.15.png Binary files differindex b3a7260..b3a7260 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.15.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.15.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.16.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.16.png Binary files differindex 581e824..581e824 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.16.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.16.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.17.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.17.png Binary files differindex 581e824..581e824 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.17.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.17.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.18.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.18.png Binary files differindex 581e824..581e824 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.18.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.18.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.19.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.19.png Binary files differindex 581e824..581e824 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.19.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.19.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.2.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.2.png Binary files differindex 579c68c..579c68c 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.2.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.2.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.3.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.3.png Binary files differindex b3a7260..b3a7260 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.3.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.3.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.4.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.4.png Binary files differindex 19758b0..19758b0 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.4.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.4.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.5.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png Binary files differindex 581e824..581e824 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.5.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.6.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png Binary files differindex 82cac48..82cac48 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.6.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.7.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.7.png Binary files differindex 9277a82..9277a82 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.7.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.7.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.8.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.8.png Binary files differindex 8c36da7..8c36da7 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.8.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.8.png diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.9.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.9.png Binary files differindex 581e824..581e824 100644 --- a/tests/auto/declarative/visual/ListView/data-MAC/listview.9.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.9.png diff --git a/tests/auto/declarative/visual/ListView/data/listview.qml b/tests/auto/declarative/qmlvisual/ListView/data/listview.qml index cd5d7b4..cd5d7b4 100644 --- a/tests/auto/declarative/visual/ListView/data/listview.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.qml diff --git a/tests/auto/declarative/visual/ListView/itemlist.qml b/tests/auto/declarative/qmlvisual/ListView/itemlist.qml index 8cbbdb0..8cbbdb0 100644 --- a/tests/auto/declarative/visual/ListView/itemlist.qml +++ b/tests/auto/declarative/qmlvisual/ListView/itemlist.qml diff --git a/tests/auto/declarative/visual/ListView/listview.qml b/tests/auto/declarative/qmlvisual/ListView/listview.qml index fb9eecd..fb9eecd 100644 --- a/tests/auto/declarative/visual/ListView/listview.qml +++ b/tests/auto/declarative/qmlvisual/ListView/listview.qml diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.0.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.0.png Binary files differindex c59b816..c59b816 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.0.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.0.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.1.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.1.png Binary files differindex d4dbc70..d4dbc70 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.1.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.1.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.10.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.10.png Binary files differindex ed9d345..ed9d345 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.10.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.10.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.11.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.11.png Binary files differindex ed9d345..ed9d345 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.11.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.11.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.12.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.12.png Binary files differindex 45ee400..45ee400 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.12.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.12.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.13.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.13.png Binary files differindex c73e158..c73e158 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.13.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.13.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.14.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.14.png Binary files differindex e2fff6d..e2fff6d 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.14.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.14.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.15.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.15.png Binary files differindex d7a13df..d7a13df 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.15.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.15.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.16.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.16.png Binary files differindex beb3094..beb3094 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.16.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.16.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.17.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.17.png Binary files differindex beb3094..beb3094 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.17.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.17.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.18.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.18.png Binary files differindex beb3094..beb3094 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.18.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.18.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.19.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.19.png Binary files differindex d3a2650..d3a2650 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.19.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.19.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.2.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.2.png Binary files differindex a09dd28..a09dd28 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.2.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.2.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.20.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.20.png Binary files differindex 600462a..600462a 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.20.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.20.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.21.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.21.png Binary files differindex 6defca0..6defca0 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.21.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.21.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.22.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.22.png Binary files differindex 91967e1..91967e1 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.22.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.22.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.3.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.3.png Binary files differindex d099a79..d099a79 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.3.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.3.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.4.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.4.png Binary files differindex 385efc8..385efc8 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.4.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.4.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.5.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.5.png Binary files differindex 25a7c3c..25a7c3c 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.5.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.5.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.6.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.6.png Binary files differindex 25a7c3c..25a7c3c 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.6.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.6.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.7.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.7.png Binary files differindex 7a24f51..7a24f51 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.7.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.7.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.8.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.8.png Binary files differindex 7a24f51..7a24f51 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.8.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.8.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.9.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.9.png Binary files differindex 45ee400..45ee400 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.9.png +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.9.png diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.qml b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.qml index d062667..d062667 100644 --- a/tests/auto/declarative/visual/Package_Views/data/packageviews.qml +++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.qml diff --git a/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml b/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml new file mode 100644 index 0000000..7ccba10 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml @@ -0,0 +1,90 @@ +import Qt 4.6 + +Rectangle { + id: root + width: 200 + height: 200 + color: "black" + + VisualDataModel { + id: model + model: ListModel { + ListElement { itemColor: "red" } + ListElement { itemColor: "green" } + ListElement { itemColor: "blue" } + ListElement { itemColor: "orange" } + ListElement { itemColor: "purple" } + ListElement { itemColor: "yellow" } + ListElement { itemColor: "slategrey" } + ListElement { itemColor: "cyan" } + ListElement { itemColor: "red" } + ListElement { itemColor: "green" } + ListElement { itemColor: "blue" } + ListElement { itemColor: "orange" } + ListElement { itemColor: "purple" } + ListElement { itemColor: "yellow" } + ListElement { itemColor: "slategrey" } + ListElement { itemColor: "cyan" } + } + delegate: Package { + Rectangle { + id: listItem; Package.name: "list"; width:root.width/2; height: 50; color: "transparent"; border.color: "white" + MouseArea { + anchors.fill: parent + onClicked: myState.state = myState.state == "list" ? "grid" : "list" + } + } + Rectangle { + id: gridItem; Package.name: "grid"; width:50; height: 50; color: "transparent"; border.color: "white" + MouseArea { + anchors.fill: parent + onClicked: myState.state = myState.state == "list" ? "grid" : "list" + } + } + Rectangle { id: myContent; width:50; height: 50; color: itemColor } + + StateGroup { + id: myState + state: "list" + states: [ + State { + name: "list" + ParentChange { target: myContent; parent: listItem } + PropertyChanges { target: myContent; x: 0; y: 0; width: listItem.width } + }, + State { + name: "grid" + ParentChange { target: myContent; parent: gridItem } + PropertyChanges { target: myContent; x: 0; y: 0; width: gridItem.width } + } + ] + + transitions: [ + Transition { + from: "*"; to: "*" + SequentialAnimation { + ParentAnimation{ + NumberAnimation { properties: "x,y,width"; easing.type: "InOutQuad" } + } + } + } + ] + } + } + } + + ListView { + width: parent.width/2 + height: parent.height + model: model.parts.list + } + + GridView { + x: parent.width/2 + width: parent.width/2 + cellWidth: 50 + cellHeight: 50 + height: parent.height + model: model.parts.grid + } +} diff --git a/tests/auto/declarative/visual/animation/bindinganimation/bindinganimation.qml b/tests/auto/declarative/qmlvisual/animation/bindinganimation/bindinganimation.qml index 70c14cf..70c14cf 100644 --- a/tests/auto/declarative/visual/animation/bindinganimation/bindinganimation.qml +++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/bindinganimation.qml diff --git a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.0.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.0.png Binary files differindex 1b08c81..1b08c81 100644 --- a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.0.png +++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.0.png diff --git a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.1.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.1.png Binary files differindex f3074fc..f3074fc 100644 --- a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.1.png +++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.1.png diff --git a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.2.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.2.png Binary files differindex 1b08c81..1b08c81 100644 --- a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.2.png +++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.2.png diff --git a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.3.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.3.png Binary files differindex e2560e0..e2560e0 100644 --- a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.3.png +++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.3.png diff --git a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.4.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.4.png Binary files differindex 2ddde86..2ddde86 100644 --- a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.4.png +++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.4.png diff --git a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.5.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.5.png Binary files differindex f3074fc..f3074fc 100644 --- a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.5.png +++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.5.png diff --git a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.6.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.6.png Binary files differindex 1b08c81..1b08c81 100644 --- a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.6.png +++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.6.png diff --git a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.qml b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.qml index 8297c5a..8297c5a 100644 --- a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.qml +++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.qml diff --git a/tests/auto/declarative/visual/animation/colorAnimation/colorAnimation.qml b/tests/auto/declarative/qmlvisual/animation/colorAnimation/colorAnimation-visual.qml index f205ae8..f205ae8 100644 --- a/tests/auto/declarative/visual/animation/colorAnimation/colorAnimation.qml +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/colorAnimation-visual.qml diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png Binary files differnew file mode 100644 index 0000000..e6ea16d --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png Binary files differnew file mode 100644 index 0000000..b75ba61 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png Binary files differnew file mode 100644 index 0000000..4320f6f --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml new file mode 100644 index 0000000..4ab94f3 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml @@ -0,0 +1,951 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 32 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 48 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 64 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 80 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 96 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 112 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 128 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 144 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 160 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 176 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 192 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 208 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 224 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 240 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 256 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 272 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 288 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 304 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 320 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 336 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 352 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 368 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 384 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 400 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 416 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 432 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 448 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 464 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 480 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 496 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 512 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 93; y: 136 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 528 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 544 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 560 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 576 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 592 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 93; y: 136 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 608 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 624 + hash: "e5bda0daf98288ce18db6ce06eda3ba0" + } + Frame { + msec: 640 + hash: "d35008f75b8c992f80fb16ba7203649d" + } + Frame { + msec: 656 + hash: "14f43e0784ddf42ea8550db88c501bf1" + } + Frame { + msec: 672 + hash: "02276e158b5391480b1bdeaadf1fb903" + } + Frame { + msec: 688 + hash: "35d9513eb97a2c482b7cd197de910934" + } + Frame { + msec: 704 + hash: "faf0fd681e60bb2489099f5df772b6cd" + } + Frame { + msec: 720 + hash: "a863d3e346f94785a3a392fdc91526eb" + } + Frame { + msec: 736 + hash: "fdf328d3f6eb8410da59a91345e41a44" + } + Frame { + msec: 752 + hash: "83514a3b10d5be8f6c3b128d0f3e0b1c" + } + Frame { + msec: 768 + hash: "ead0eae76cd00189075964671effbaea" + } + Frame { + msec: 784 + hash: "24d2457fcd51490fda23071bf9929d12" + } + Frame { + msec: 800 + hash: "1478683446cf543dacbe31d0b76a98a6" + } + Frame { + msec: 816 + hash: "99f7da1f31fe920f6c02add4042ae925" + } + Frame { + msec: 832 + hash: "22def892006cf66667770b0f17baf6c0" + } + Frame { + msec: 848 + hash: "6a36d5a77099bfd58baf285478ff04e4" + } + Frame { + msec: 864 + hash: "6258150666b59b20ab476724c07fc20c" + } + Frame { + msec: 880 + hash: "f1636315bc950a6dd400d9c7ed263b88" + } + Frame { + msec: 896 + hash: "18447ea8dc2e8da956788e5b3cf3790a" + } + Frame { + msec: 912 + hash: "1d2a6e65997a73e9e670356c8e8b63b2" + } + Frame { + msec: 928 + hash: "bed0242c0f9ef229d1392835286d5782" + } + Frame { + msec: 944 + hash: "88923c190e9e5beadef8a409c06df9d6" + } + Frame { + msec: 960 + image: "colorAnimation-visual.0.png" + } + Frame { + msec: 976 + hash: "85b1821cc50f2a9f3ed6944f792b7a2f" + } + Frame { + msec: 992 + hash: "395195716d76bc0be7b2033ed37a7a1c" + } + Frame { + msec: 1008 + hash: "e0f53c5605116a30d9bf3c031c63d958" + } + Frame { + msec: 1024 + hash: "a755068679616d8ac65c2aa7431f2a19" + } + Frame { + msec: 1040 + hash: "e8249b35a47eb492cbdf2d91cc8426f0" + } + Frame { + msec: 1056 + hash: "15f3da1c0e6f0779b96859d51171dd27" + } + Frame { + msec: 1072 + hash: "258c0c756aac3de743b43051f2aace6b" + } + Frame { + msec: 1088 + hash: "a58b9fdf301d72b2cc5c93934cc8927b" + } + Frame { + msec: 1104 + hash: "a9181d30870d472521f8904818ce520f" + } + Frame { + msec: 1120 + hash: "7f9e94069ccf3897c26a71bd7becd903" + } + Frame { + msec: 1136 + hash: "bdf305c2f46cdb86dbf57b1e0cc5a65b" + } + Frame { + msec: 1152 + hash: "fe5b6865d7e4fc7d1d42c1e74f8666f7" + } + Frame { + msec: 1168 + hash: "734f0de45a6e34c9eab7ef606196f96a" + } + Frame { + msec: 1184 + hash: "02a361c4534fdf7f286dc3e6dc23275c" + } + Frame { + msec: 1200 + hash: "e649155ad69999c14b92f6561e4d1185" + } + Frame { + msec: 1216 + hash: "01af177084fab755d622973f64b92018" + } + Frame { + msec: 1232 + hash: "097cc4a082dfab995d213a3a73883c97" + } + Frame { + msec: 1248 + hash: "d7b4239a3280b1eb8e885e3f422df8e9" + } + Frame { + msec: 1264 + hash: "59893977994e34e83f91e7ce3ad65d6d" + } + Frame { + msec: 1280 + hash: "b68e3fbb5cdcd6bd96df7dec558db42b" + } + Frame { + msec: 1296 + hash: "94ad0580648f36a1e18a9ea7e249b04d" + } + Frame { + msec: 1312 + hash: "750a4c01d2f5806a89a1c6cc6a9b9a68" + } + Frame { + msec: 1328 + hash: "4f109f50f388f1bfa4bc6b03b3e6e514" + } + Frame { + msec: 1344 + hash: "c6168d5cf27a533e8ee636637667be47" + } + Frame { + msec: 1360 + hash: "f8120547bed987aa34c00da5a01a4d1e" + } + Frame { + msec: 1376 + hash: "cbff526136fa2c128c8b898fbbef9e5c" + } + Frame { + msec: 1392 + hash: "f29e52398fab1a239a63df4c32f2fc69" + } + Frame { + msec: 1408 + hash: "45770fe0d61c485c13992d0f98b2a3ba" + } + Frame { + msec: 1424 + hash: "ca83285bc8ac633403896fe976896eb0" + } + Frame { + msec: 1440 + hash: "96ba486c09cc69d5aa38c46c00df1181" + } + Frame { + msec: 1456 + hash: "b88eab335842787869f4a14824c19dd8" + } + Frame { + msec: 1472 + hash: "065aa59012729e1e1a246a2083142690" + } + Frame { + msec: 1488 + hash: "dd0e98c8398861002c5f178c5f9f612d" + } + Frame { + msec: 1504 + hash: "04192c2b545948048eccf4d81bbde198" + } + Frame { + msec: 1520 + hash: "bb7502c7208281ef9fd41714ab88a1a8" + } + Frame { + msec: 1536 + hash: "5397195471890d08b703dca101e5bc7c" + } + Frame { + msec: 1552 + hash: "4c678cdbebb2ffd2cbf012ca77800cde" + } + Frame { + msec: 1568 + hash: "0d7a34ecd0c7f52b2c015037bf1902c6" + } + Frame { + msec: 1584 + hash: "fd9d5048be749ac4369fda2d018b43ae" + } + Frame { + msec: 1600 + hash: "93ee03795cd57ae6f7fe3a020b039ad4" + } + Frame { + msec: 1616 + hash: "5e1118963f219c39761ca7fbf564a9ca" + } + Frame { + msec: 1632 + hash: "8f40038741903150136170503649d941" + } + Frame { + msec: 1648 + hash: "b087b7d0aa6224821f8e18718ff5e77d" + } + Frame { + msec: 1664 + hash: "aa46b04a3c67dc772265ed2901955565" + } + Frame { + msec: 1680 + hash: "ac024bf2aeb4becdf31a09fe0a6db8f3" + } + Frame { + msec: 1696 + hash: "13745a174e4d06e2108a5bf125ba50cc" + } + Frame { + msec: 1712 + hash: "bd972f0d8e230eca0b3fea1b8c960c08" + } + Frame { + msec: 1728 + hash: "cbdbec802a58e7ced0cf45b3ab0bc0ba" + } + Frame { + msec: 1744 + hash: "5128584c50305c7d218b81b8367fa3d5" + } + Frame { + msec: 1760 + hash: "a71461d3593f3685620668916de870bd" + } + Frame { + msec: 1776 + hash: "74ebac8f32cf044b58d9883dbcd9a722" + } + Frame { + msec: 1792 + hash: "fedc5b638f339b90fe59b478721e65b7" + } + Frame { + msec: 1808 + hash: "a2fa71b4147372175774250501b6625e" + } + Frame { + msec: 1824 + hash: "4e9b083075bc5e9287a8abc982778b56" + } + Frame { + msec: 1840 + hash: "1d6f02aa99afa47d77fc49ab894b365a" + } + Frame { + msec: 1856 + hash: "a204feec783b3b05de4c209c21745826" + } + Frame { + msec: 1872 + hash: "665a2a8ff00b9663157802767f504754" + } + Frame { + msec: 1888 + hash: "624fb09ebe60cb87d767faf8d2420b1e" + } + Frame { + msec: 1904 + hash: "e5af0cdc33f3275a25abb09e9165f310" + } + Frame { + msec: 1920 + image: "colorAnimation-visual.1.png" + } + Frame { + msec: 1936 + hash: "e7aa6374c73832e57ceb2427a1e258aa" + } + Frame { + msec: 1952 + hash: "b5abd0dff1ab076faac7cc226e83f5d0" + } + Frame { + msec: 1968 + hash: "b759acc35bccff8efc2e6fe276ddc0f7" + } + Frame { + msec: 1984 + hash: "ce52e18c1f7732768779863b45314ff5" + } + Frame { + msec: 2000 + hash: "99d30652559dd6931e0c95543eeaa149" + } + Frame { + msec: 2016 + hash: "ffbd9a00e05e085b89296d19d5caec57" + } + Frame { + msec: 2032 + hash: "9c9d658b9c25602816b8066bf19105db" + } + Frame { + msec: 2048 + hash: "2b7fd058e6601e22a30bb7106b1c683b" + } + Frame { + msec: 2064 + hash: "f4c7e26b19ee0a3e7c9688685eb7bd05" + } + Frame { + msec: 2080 + hash: "0dc6d593bceff56b7f81f2a49d37fefb" + } + Frame { + msec: 2096 + hash: "9bfd7ad5091ccbdde43c593e133a7b10" + } + Frame { + msec: 2112 + hash: "2703b617937914a90ea42ebf249d79ee" + } + Frame { + msec: 2128 + hash: "b77e2983138254016c4cca53100f46fa" + } + Frame { + msec: 2144 + hash: "60c4dd24187d1281081479e586f02b37" + } + Frame { + msec: 2160 + hash: "62f2511abd99ef1231c9fa4b91d4abfe" + } + Frame { + msec: 2176 + hash: "e309b3353fd174e883d309571caddc98" + } + Frame { + msec: 2192 + hash: "1e2d6a134c7b12dde551b148ef4f088c" + } + Frame { + msec: 2208 + hash: "10d46d2862e333e5136b1c046dabb33b" + } + Frame { + msec: 2224 + hash: "c8dae97c10e1962c1e6a51ab3ab8579e" + } + Frame { + msec: 2240 + hash: "4e1b7e06f55fb084080689b474f1fe1d" + } + Frame { + msec: 2256 + hash: "b4639c907fa937bf15fac62421170cd8" + } + Frame { + msec: 2272 + hash: "c250208a0caeb5f6cb4d3aac3d7d350b" + } + Frame { + msec: 2288 + hash: "a73351eabecf0d71149efe31f197413e" + } + Frame { + msec: 2304 + hash: "479425f1b7aff79e4dfb7fca534af018" + } + Frame { + msec: 2320 + hash: "046d0f0040a52d1f26ba9f7c5de06ef4" + } + Frame { + msec: 2336 + hash: "655778bf13c6080903150b0eb43a7edc" + } + Frame { + msec: 2352 + hash: "72da0bbe81514870655fdd3354adac60" + } + Frame { + msec: 2368 + hash: "defe0bdf675c65fff55aaaced1e4dae7" + } + Frame { + msec: 2384 + hash: "c988628b6c3d3780e9a865c7694926cd" + } + Frame { + msec: 2400 + hash: "5ab17563655231089edd986ff13d6012" + } + Frame { + msec: 2416 + hash: "c1adff1d2e5800ed466d1691d3b17382" + } + Frame { + msec: 2432 + hash: "70129ba01fbb19592b9dc0d0a3b3e7df" + } + Frame { + msec: 2448 + hash: "0000829ef7ed908bf430d42904d59cc2" + } + Frame { + msec: 2464 + hash: "843d2927f50ab87b4a86b7a6aaeed91f" + } + Frame { + msec: 2480 + hash: "da86d21756025e7de8050586d5e2a1f8" + } + Frame { + msec: 2496 + hash: "48dd1bd6580133b0793fee327ea4f1e6" + } + Frame { + msec: 2512 + hash: "f0618193dcd0ba2837249515a1898b1c" + } + Frame { + msec: 2528 + hash: "a530184e57251065286c0cbba7301e9c" + } + Frame { + msec: 2544 + hash: "64a1d7203973d65dd342793007a61c58" + } + Frame { + msec: 2560 + hash: "5b830dfc6ba442772de87d75d5a578de" + } + Frame { + msec: 2576 + hash: "5563b056b0409b65f60dd16dd0dd890e" + } + Frame { + msec: 2592 + hash: "b8bcf9ad2ca8720c11563a23d8280804" + } + Frame { + msec: 2608 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2624 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2640 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2656 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2672 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2688 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2704 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2720 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2736 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2752 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2768 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2784 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2800 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2816 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2832 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2848 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2864 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2880 + image: "colorAnimation-visual.2.png" + } + Frame { + msec: 2896 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2912 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2928 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2944 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2960 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2976 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2992 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3008 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3024 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3040 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3056 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3072 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3088 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3104 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3120 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3136 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3152 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3168 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3184 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3200 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3216 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3232 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3248 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3264 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3280 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3296 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3312 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3328 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3344 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3360 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3376 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3392 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3408 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3424 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3440 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3456 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3472 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3488 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3504 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3520 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3536 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3552 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3568 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3584 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3600 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3616 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3632 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 3648 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3664 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3680 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } +} diff --git a/tests/auto/declarative/visual/animation/easing/data/easing.0.png b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.0.png Binary files differindex 4f75bfd..4f75bfd 100644 --- a/tests/auto/declarative/visual/animation/easing/data/easing.0.png +++ b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.0.png diff --git a/tests/auto/declarative/visual/animation/easing/data/easing.1.png b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.1.png Binary files differindex dc17765..dc17765 100644 --- a/tests/auto/declarative/visual/animation/easing/data/easing.1.png +++ b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.1.png diff --git a/tests/auto/declarative/visual/animation/easing/data/easing.2.png b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.2.png Binary files differindex 7f83548..7f83548 100644 --- a/tests/auto/declarative/visual/animation/easing/data/easing.2.png +++ b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.2.png diff --git a/tests/auto/declarative/visual/animation/easing/data/easing.3.png b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.3.png Binary files differindex c68e0fa..c68e0fa 100644 --- a/tests/auto/declarative/visual/animation/easing/data/easing.3.png +++ b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.3.png diff --git a/tests/auto/declarative/visual/animation/easing/data/easing.qml b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.qml index d8e8688..d8e8688 100644 --- a/tests/auto/declarative/visual/animation/easing/data/easing.qml +++ b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.qml diff --git a/tests/auto/declarative/visual/animation/easing/easing.qml b/tests/auto/declarative/qmlvisual/animation/easing/easing.qml index 4248d88..4248d88 100644 --- a/tests/auto/declarative/visual/animation/easing/easing.qml +++ b/tests/auto/declarative/qmlvisual/animation/easing/easing.qml diff --git a/tests/auto/declarative/visual/animation/loop/data/loop.0.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.0.png Binary files differindex f4301d3..f4301d3 100644 --- a/tests/auto/declarative/visual/animation/loop/data/loop.0.png +++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.0.png diff --git a/tests/auto/declarative/visual/animation/loop/data/loop.1.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.1.png Binary files differindex ceb0e20..ceb0e20 100644 --- a/tests/auto/declarative/visual/animation/loop/data/loop.1.png +++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.1.png diff --git a/tests/auto/declarative/visual/animation/loop/data/loop.2.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.2.png Binary files differindex 197c8c0..197c8c0 100644 --- a/tests/auto/declarative/visual/animation/loop/data/loop.2.png +++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.2.png diff --git a/tests/auto/declarative/visual/animation/loop/data/loop.3.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.3.png Binary files differindex 3a4327e..3a4327e 100644 --- a/tests/auto/declarative/visual/animation/loop/data/loop.3.png +++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.3.png diff --git a/tests/auto/declarative/visual/animation/loop/data/loop.4.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.4.png Binary files differindex 2397719..2397719 100644 --- a/tests/auto/declarative/visual/animation/loop/data/loop.4.png +++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.4.png diff --git a/tests/auto/declarative/visual/animation/loop/data/loop.5.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.5.png Binary files differindex 70d91a2..70d91a2 100644 --- a/tests/auto/declarative/visual/animation/loop/data/loop.5.png +++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.5.png diff --git a/tests/auto/declarative/visual/animation/loop/data/loop.qml b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.qml index 8804d44..8804d44 100644 --- a/tests/auto/declarative/visual/animation/loop/data/loop.qml +++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.qml diff --git a/tests/auto/declarative/qmlvisual/animation/loop/loop.qml b/tests/auto/declarative/qmlvisual/animation/loop/loop.qml new file mode 100644 index 0000000..5389b26 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/loop/loop.qml @@ -0,0 +1,24 @@ +import Qt 4.6 + +Rectangle { + id: wrapper + width: 600 + height: 100 + + Rectangle { + id: redRect + width: 100; height: 100 + color: Qt.rgba(1,0,0) + /* This should produce an animation that starts at 0, animates smoothly + to 100, jumps to 200, animates smoothly to 400, animates smoothly + back to 100, jumps to 200, and so on. + */ + SequentialAnimation on x { + loops: Animation.Infinite + NumberAnimation { to: 100; duration: 1000 } + NumberAnimation { from: 200; to: 400; duration: 1000 } + } + + } + +} diff --git a/tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.qml b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation-visual.qml index 5f5b8fc..5f5b8fc 100644 --- a/tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.qml +++ b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation-visual.qml diff --git a/tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.0.png b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.0.png Binary files differindex 82c18d7..82c18d7 100644 --- a/tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.0.png +++ b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.0.png diff --git a/tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.1.png b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.1.png Binary files differindex b9a3b89..b9a3b89 100644 --- a/tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.1.png +++ b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.1.png diff --git a/tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.2.png b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.2.png Binary files differindex 789615b..789615b 100644 --- a/tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.2.png +++ b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.2.png diff --git a/tests/auto/declarative/qmlvisual/animation/parallelAnimation/parallelAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/parallelAnimation-visual.qml new file mode 100644 index 0000000..ba606f4 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/parallelAnimation-visual.qml @@ -0,0 +1,51 @@ +import Qt 4.6 + +/* + This test verifies that a single animation animating two properties is visually the same as two + animations in a parallel group animating the same properties. Visually, you should see a red + rectangle at 0,0 stretching from the top of the window to the bottom. This rect will be moved to + the right side of the window while turning purple. If the bottom half is visually different + than the top half, there is a problem. +*/ + +Rectangle { + width: 400; height: 200 + Rectangle { + id: redRect + width: 100; height: 100 + color: "red" + } + Rectangle { + id: redRect2 + width: 100; height: 100 + y: 100 + color: "red" + } + + MouseArea { + anchors.fill: parent + onClicked: parent.state = "state1" + } + + states: State { + name: "state1" + PropertyChanges { + target: redRect + x: 300 + color: "purple" + } + PropertyChanges { + target: redRect2 + x: 300 + color: "purple" + } + } + + transitions: Transition { + PropertyAnimation { targets: redRect; properties: "x,color"; duration: 300 } + ParallelAnimation { + NumberAnimation { targets: redRect2; properties: "x"; duration: 300 } + ColorAnimation { targets: redRect2; properties: "color"; duration: 300 } + } + } +} diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.qml new file mode 100644 index 0000000..5718560 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.qml @@ -0,0 +1,1663 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 32 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 48 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 64 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 80 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 96 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 112 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 128 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 144 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 160 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 176 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 192 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 208 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 224 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 240 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 256 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 272 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 288 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 304 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 320 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 336 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 352 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 368 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 384 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 400 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 416 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 432 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 448 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 464 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 480 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 496 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 512 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 528 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 544 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 560 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 576 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 592 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 608 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 624 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 640 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 656 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 672 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 688 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 704 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 720 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 736 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 752 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 768 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 784 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 800 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 816 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 832 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 848 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 864 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 880 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 896 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 912 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 928 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 944 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 960 + image: "parentAnimation.0.png" + } + Frame { + msec: 976 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 992 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1008 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1024 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1040 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1056 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1072 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1088 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1104 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1120 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1136 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1152 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1168 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1184 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1200 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1216 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1232 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1248 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1264 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1280 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1296 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1312 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1328 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1344 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1360 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1376 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1392 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1408 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1424 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1440 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1456 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1472 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1488 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1504 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1520 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1536 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1552 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 1568 + hash: "633b5668278295faa57d0cfffe8a29cb" + } + Frame { + msec: 1584 + hash: "ccbf4505e0f05547d2f7ce874ab941c0" + } + Frame { + msec: 1600 + hash: "be904489959fa365badb642fa9e85922" + } + Frame { + msec: 1616 + hash: "de6a97ac6e2677feb223336199cbffe1" + } + Frame { + msec: 1632 + hash: "997b0a547336a9bb6a67cd9beffe1831" + } + Frame { + msec: 1648 + hash: "ac9a6e111050b8a7c4492f06c33d3969" + } + Frame { + msec: 1664 + hash: "7313c0d2ee06e393f486670222c29bb4" + } + Frame { + msec: 1680 + hash: "24cea420d03d1fdcddb1b9cf5112cbee" + } + Frame { + msec: 1696 + hash: "764688785eeaa01e9c84821476911edb" + } + Frame { + msec: 1712 + hash: "b24ae0cb512abfd2606ff9c20a6751bf" + } + Frame { + msec: 1728 + hash: "f1daed3391f10e27435a54222df8d0ab" + } + Frame { + msec: 1744 + hash: "99704e182267f2c12d0215b9c03f4d68" + } + Frame { + msec: 1760 + hash: "143cd9259a41b8af5d41a5b2aaf8de64" + } + Frame { + msec: 1776 + hash: "b5f0a0f838b5870c162a24cd767f068b" + } + Frame { + msec: 1792 + hash: "c5c8cdcbfab7466e447eaff582bf7312" + } + Frame { + msec: 1808 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1824 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1840 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1856 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1872 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1888 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1904 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1920 + image: "parentAnimation.1.png" + } + Frame { + msec: 1936 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1952 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1968 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 1984 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2000 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2016 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2032 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2048 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2064 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2080 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2096 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2112 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2128 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2144 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2160 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2176 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2192 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2208 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2224 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2240 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2256 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2272 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2288 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2304 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2320 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2336 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2352 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2368 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2384 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2400 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2416 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2432 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2448 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2464 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2480 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2496 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 2512 + hash: "eaeeb8c51d43e3c38ff7dde632d1f9c8" + } + Frame { + msec: 2528 + hash: "ec0e68c2e7a75fedd1091ce633dadd4f" + } + Frame { + msec: 2544 + hash: "a5d60efc176dee9083a2d746e7ad8315" + } + Frame { + msec: 2560 + hash: "48bcbbacf413080247f818e35e496e04" + } + Frame { + msec: 2576 + hash: "c521af8efa19fbac39119ad75cd469f5" + } + Frame { + msec: 2592 + hash: "0e74613c67fc9d9acb21a3d382c5efcd" + } + Frame { + msec: 2608 + hash: "eeb3f4467ebd7ee678c3b7371db28519" + } + Frame { + msec: 2624 + hash: "9c5b9009a35b74d0ddec8fec85f204bf" + } + Frame { + msec: 2640 + hash: "aefc70824e23428aebf0a40830a57469" + } + Frame { + msec: 2656 + hash: "1fa9c23760193b74b0063b4e4c434070" + } + Frame { + msec: 2672 + hash: "8091700d4729163bd87521385853e608" + } + Frame { + msec: 2688 + hash: "a13558e609570f9390f20a85d244fa22" + } + Frame { + msec: 2704 + hash: "7be5e3609bbeb9a2c1df7d52f3953d4d" + } + Frame { + msec: 2720 + hash: "51c8ae31f858121d86ef09cc9a5c5ef3" + } + Frame { + msec: 2736 + hash: "84ce8f39207f4b07c2c3323425a8c238" + } + Frame { + msec: 2752 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2768 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2784 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2800 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2816 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2832 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2848 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2864 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2880 + image: "parentAnimation.2.png" + } + Frame { + msec: 2896 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2912 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2928 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2944 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2960 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2976 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 2992 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3008 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3024 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3040 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3056 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3072 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3088 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3104 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3120 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3136 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3152 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3168 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3184 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3200 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3216 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3232 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3248 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3264 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3280 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3296 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3312 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3328 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3344 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3360 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3376 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3392 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 3408 + hash: "633b5668278295faa57d0cfffe8a29cb" + } + Frame { + msec: 3424 + hash: "ccbf4505e0f05547d2f7ce874ab941c0" + } + Frame { + msec: 3440 + hash: "be904489959fa365badb642fa9e85922" + } + Frame { + msec: 3456 + hash: "de6a97ac6e2677feb223336199cbffe1" + } + Frame { + msec: 3472 + hash: "997b0a547336a9bb6a67cd9beffe1831" + } + Frame { + msec: 3488 + hash: "ac9a6e111050b8a7c4492f06c33d3969" + } + Frame { + msec: 3504 + hash: "7313c0d2ee06e393f486670222c29bb4" + } + Frame { + msec: 3520 + hash: "24cea420d03d1fdcddb1b9cf5112cbee" + } + Frame { + msec: 3536 + hash: "764688785eeaa01e9c84821476911edb" + } + Frame { + msec: 3552 + hash: "b24ae0cb512abfd2606ff9c20a6751bf" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3568 + hash: "b24ae0cb512abfd2606ff9c20a6751bf" + } + Frame { + msec: 3584 + hash: "d7bf1b48f1a03974e7f095468e07f037" + } + Frame { + msec: 3600 + hash: "a59ab4fe1c22d27b5cdde949cf90e6f4" + } + Frame { + msec: 3616 + hash: "7c3082720e65b8a6217bf5a5fe4d48c0" + } + Frame { + msec: 3632 + hash: "350d1ff24fb8fba0ab8a6694d99544b3" + } + Frame { + msec: 3648 + hash: "81d17a62c33d79ed25968ec47771d292" + } + Frame { + msec: 3664 + hash: "43fd3ef88bd7a2e5bf4546f088783077" + } + Frame { + msec: 3680 + hash: "041938ad2e023202db18df28f2329c8f" + } + Frame { + msec: 3696 + hash: "ec8677eae06cbf77a9508953325b179e" + } + Mouse { + type: 4 + button: 1 + buttons: 1 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3712 + hash: "ec8677eae06cbf77a9508953325b179e" + } + Frame { + msec: 3728 + hash: "453026339c3901ee286831b4b41088f6" + } + Frame { + msec: 3744 + hash: "d58a7a41ade691cc0acfb0303bfc3b68" + } + Frame { + msec: 3760 + hash: "a200b05ef3d7e39e11513fd2f8ff1497" + } + Frame { + msec: 3776 + hash: "faa1223975acdf2d4b48045d7f2ce445" + } + Frame { + msec: 3792 + hash: "964d9b80d82d0fe3d3fb328a1661a60e" + } + Frame { + msec: 3808 + hash: "705871bc384de93100354acb19b371b0" + } + Frame { + msec: 3824 + hash: "1a4480463adfc5a3d525916b03c2c3ce" + } + Frame { + msec: 3840 + image: "parentAnimation.3.png" + } + Frame { + msec: 3856 + hash: "9a55bdf428f45f02d9c8cf414dcd7754" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3872 + hash: "9a55bdf428f45f02d9c8cf414dcd7754" + } + Frame { + msec: 3888 + hash: "0f6d82d02ce7d79a1bdf6bf81791f321" + } + Frame { + msec: 3904 + hash: "b145b9d299714020686069baec11cb71" + } + Frame { + msec: 3920 + hash: "5dbf5e4151c01f10cf23b07ca1df56ab" + } + Frame { + msec: 3936 + hash: "822d4397ac514673ca1015ad05c9b4ac" + } + Frame { + msec: 3952 + hash: "461d35e865153d22e9a67bb0ffddefb7" + } + Frame { + msec: 3968 + hash: "676fff498e6879144090d5596056c6c8" + } + Frame { + msec: 3984 + hash: "854da7ed627237250e20b263f9eb9d90" + } + Frame { + msec: 4000 + hash: "157ec877797883d329ff329537205d02" + } + Frame { + msec: 4016 + hash: "613669ca60240fcc490d548fe802390d" + } + Frame { + msec: 4032 + hash: "803e84f027c773db96f9530511e5fedb" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4048 + hash: "803e84f027c773db96f9530511e5fedb" + } + Frame { + msec: 4064 + hash: "f47cfd1f1094b782c08490be2f49c6ed" + } + Frame { + msec: 4080 + hash: "db5953f3ee4e2db87e33b85464167f74" + } + Frame { + msec: 4096 + hash: "8313cb750b9abc586a43b9422de08f53" + } + Frame { + msec: 4112 + hash: "deb390ce992fee85c56733168b4bd1ec" + } + Frame { + msec: 4128 + hash: "29a1cda3647c49731e9adcd107a2d13c" + } + Frame { + msec: 4144 + hash: "bfa17a3afa06699107b217df6e4aed43" + } + Frame { + msec: 4160 + hash: "8e639ef01ab6d8876c3f40adc44928c6" + } + Frame { + msec: 4176 + hash: "14038aedf42de0ca62d872d317018ee0" + } + Frame { + msec: 4192 + hash: "c1288465163d44ed40e28f21e0298ea6" + } + Frame { + msec: 4208 + hash: "d6915f22a905737488d27e8138002f31" + } + Frame { + msec: 4224 + hash: "5b1621451a5a3af40302603ec31bb8bb" + } + Frame { + msec: 4240 + hash: "16fd73c0cb615cc717cdc4a6787471c2" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4256 + hash: "16fd73c0cb615cc717cdc4a6787471c2" + } + Frame { + msec: 4272 + hash: "db5caf42e11705ecdb2006e1ed6b0c4f" + } + Frame { + msec: 4288 + hash: "4b7e51e4e9fb1dacb32aac11a4a46ceb" + } + Frame { + msec: 4304 + hash: "63c93cda9892f733809125991af997b6" + } + Frame { + msec: 4320 + hash: "0e74613c67fc9d9acb21a3d382c5efcd" + } + Frame { + msec: 4336 + hash: "58e813a6619828b6c9ec9cf300ff0e2d" + } + Frame { + msec: 4352 + hash: "181a6e334d745381f091bf1b55fc1690" + } + Frame { + msec: 4368 + hash: "f25bbc9ddc8cc72036c49d50b45bece8" + } + Frame { + msec: 4384 + hash: "88e8f0496debfee6bc2426895fe1c3d9" + } + Frame { + msec: 4400 + hash: "db5953f3ee4e2db87e33b85464167f74" + } + Frame { + msec: 4416 + hash: "9818a899adb916b6ba5f7537697ef062" + } + Frame { + msec: 4432 + hash: "3842f40093d70089a4004fb803c05981" + } + Frame { + msec: 4448 + hash: "be904489959fa365badb642fa9e85922" + } + Frame { + msec: 4464 + hash: "cbae27751ff0ebce4fcc164564f4cf1b" + } + Frame { + msec: 4480 + hash: "3a1b468bd3fd747bbe6b069426b170a9" + } + Frame { + msec: 4496 + hash: "57fbcd580eb1607a2a7526a65842dfeb" + } + Frame { + msec: 4512 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4528 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4544 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4560 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4576 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4592 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4608 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4624 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4640 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 4656 + hash: "633b5668278295faa57d0cfffe8a29cb" + } + Frame { + msec: 4672 + hash: "ccbf4505e0f05547d2f7ce874ab941c0" + } + Frame { + msec: 4688 + hash: "be904489959fa365badb642fa9e85922" + } + Frame { + msec: 4704 + hash: "de6a97ac6e2677feb223336199cbffe1" + } + Frame { + msec: 4720 + hash: "997b0a547336a9bb6a67cd9beffe1831" + } + Frame { + msec: 4736 + hash: "ac9a6e111050b8a7c4492f06c33d3969" + } + Frame { + msec: 4752 + hash: "7313c0d2ee06e393f486670222c29bb4" + } + Frame { + msec: 4768 + hash: "24cea420d03d1fdcddb1b9cf5112cbee" + } + Frame { + msec: 4784 + hash: "764688785eeaa01e9c84821476911edb" + } + Frame { + msec: 4800 + image: "parentAnimation.4.png" + } + Frame { + msec: 4816 + hash: "f1daed3391f10e27435a54222df8d0ab" + } + Frame { + msec: 4832 + hash: "99704e182267f2c12d0215b9c03f4d68" + } + Frame { + msec: 4848 + hash: "143cd9259a41b8af5d41a5b2aaf8de64" + } + Frame { + msec: 4864 + hash: "b5f0a0f838b5870c162a24cd767f068b" + } + Frame { + msec: 4880 + hash: "c5c8cdcbfab7466e447eaff582bf7312" + } + Frame { + msec: 4896 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 4912 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 4928 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 4944 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 4960 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 4976 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 4992 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5008 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5024 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5040 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5056 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5072 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5088 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5104 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5120 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5136 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5152 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5168 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5184 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5200 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5216 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5232 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5248 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5264 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5280 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5296 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5312 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5328 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5344 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 237; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5360 + hash: "f1bc451d1f62cfb5dd60a7ea483d3844" + } + Frame { + msec: 5376 + hash: "eaeeb8c51d43e3c38ff7dde632d1f9c8" + } + Frame { + msec: 5392 + hash: "ec0e68c2e7a75fedd1091ce633dadd4f" + } + Frame { + msec: 5408 + hash: "a5d60efc176dee9083a2d746e7ad8315" + } + Frame { + msec: 5424 + hash: "48bcbbacf413080247f818e35e496e04" + } + Frame { + msec: 5440 + hash: "c521af8efa19fbac39119ad75cd469f5" + } + Frame { + msec: 5456 + hash: "0e74613c67fc9d9acb21a3d382c5efcd" + } + Frame { + msec: 5472 + hash: "eeb3f4467ebd7ee678c3b7371db28519" + } + Frame { + msec: 5488 + hash: "9c5b9009a35b74d0ddec8fec85f204bf" + } + Frame { + msec: 5504 + hash: "aefc70824e23428aebf0a40830a57469" + } + Frame { + msec: 5520 + hash: "1fa9c23760193b74b0063b4e4c434070" + } + Frame { + msec: 5536 + hash: "8091700d4729163bd87521385853e608" + } + Frame { + msec: 5552 + hash: "a13558e609570f9390f20a85d244fa22" + } + Frame { + msec: 5568 + hash: "7be5e3609bbeb9a2c1df7d52f3953d4d" + } + Frame { + msec: 5584 + hash: "51c8ae31f858121d86ef09cc9a5c5ef3" + } + Frame { + msec: 5600 + hash: "84ce8f39207f4b07c2c3323425a8c238" + } + Frame { + msec: 5616 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5632 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5648 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5664 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5680 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5696 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5712 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5728 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5744 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5760 + image: "parentAnimation.5.png" + } + Frame { + msec: 5776 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5792 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5808 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5824 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5840 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5856 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5872 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5888 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5904 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5920 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5936 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5952 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5968 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 5984 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6000 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6016 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6032 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6048 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6064 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6080 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6096 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6112 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6128 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6144 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6160 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6176 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6192 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6208 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6224 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6240 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6256 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } + Frame { + msec: 6272 + hash: "4135271d78a5c63c3837a09c86f35ebe" + } +} diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.0.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.0.png Binary files differnew file mode 100644 index 0000000..7d41abc --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.0.png diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.1.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.1.png Binary files differnew file mode 100644 index 0000000..16b95ab --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.1.png diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.2.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.2.png Binary files differnew file mode 100644 index 0000000..7d41abc --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.2.png diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.3.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.3.png Binary files differnew file mode 100644 index 0000000..800bf12 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.3.png diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.4.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.4.png Binary files differnew file mode 100644 index 0000000..d0155bb --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.4.png diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.5.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.5.png Binary files differnew file mode 100644 index 0000000..7d41abc --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.5.png diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/parentAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/parentAnimation/parentAnimation-visual.qml new file mode 100644 index 0000000..8d0b375 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/parentAnimation-visual.qml @@ -0,0 +1,68 @@ +import Qt 4.6 + +/* +This test shows a green rectangle moving and growing from the upper-left corner +of the black rectangle to the same position as the red rectangle (it should end up +the same height as the red rect and twice as wide). There should be no odd jumps or clipping seen. + +The test shows one full transition (to the red and back), then several partial transitions, and +then a final full transition. +*/ + +Rectangle { + width: 800; + height: 480; + color: "black"; + + Rectangle { + id: gr + color: "green" + width: 100; height: 100 + } + + MouseArea { + id: mouser + anchors.fill: parent + } + + Rectangle { + id: np + x: 300 + width: 300; height: 300 + color: "yellow" + clip: true + Rectangle { + color: "red" + x: 100; y: 100; height: 100; width: 100 + } + + } + + Rectangle { + id: vp + x: 200; y: 200 + width: 100; height: 100 + color: "blue" + rotation: 45 + scale: 2 + } + + states: State { + name: "state1" + when: mouser.pressed + ParentChange { + target: gr + parent: np + x: 100; y: 100; width: 200; + } + } + + transitions: Transition { + reversible: true + to: "state1" + ParentAnimation { + target: gr; via: vp; + NumberAnimation { properties: "x,y,rotation,scale,width" } + } + } +} diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.qml b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.qml index 73c6542..73c6542 100644 --- a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.qml +++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.qml diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.0.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.0.png Binary files differindex 693a794..693a794 100644 --- a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.0.png +++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.0.png diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.1.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.1.png Binary files differindex 06d43f1..06d43f1 100644 --- a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.1.png +++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.1.png diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.2.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.2.png Binary files differindex e619baf..e619baf 100644 --- a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.2.png +++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.2.png diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.3.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.3.png Binary files differindex 30c7671..30c7671 100644 --- a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.3.png +++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.3.png diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.4.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.4.png Binary files differindex 132803c..132803c 100644 --- a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.4.png +++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.4.png diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.5.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.5.png Binary files differindex 8372bc3..8372bc3 100644 --- a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.5.png +++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.5.png diff --git a/tests/auto/declarative/qmlvisual/animation/pauseAnimation/pauseAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/pauseAnimation-visual.qml new file mode 100644 index 0000000..8830170 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/pauseAnimation-visual.qml @@ -0,0 +1,36 @@ +import Qt 4.6 + +/* +This test shows a bouncing logo. +When the test starts the logo should be resting at the bottom. It should immediately move +to the top, and then fall down to bounce at the bottom. There should be a pause, and then +one repeat of the sequence. +*/ + +Rectangle { + id: rect + width: 120 + height: 200 + color: "white" + Image { + id: img + source: "pics/qtlogo.png" + x: 60-width/2 + y: 100 + SequentialAnimation on y { + loops: Animation.Infinite + NumberAnimation { + to: 0; duration: 500 + easing.type: "InOutQuad" + } + NumberAnimation { + to: 100 + easing.type: "OutBounce" + duration: 2000 + } + PauseAnimation { + duration: 1000 + } + } + } +} diff --git a/tests/auto/declarative/qmlvisual/animation/pauseAnimation/pics/qtlogo.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/pics/qtlogo.png Binary files differnew file mode 100644 index 0000000..399bd0b --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/pics/qtlogo.png diff --git a/tests/auto/declarative/visual/animation/scriptAction/data/scriptAction.0.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.0.png Binary files differindex 64d6b06..64d6b06 100644 --- a/tests/auto/declarative/visual/animation/scriptAction/data/scriptAction.0.png +++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.0.png diff --git a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.1.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.1.png Binary files differindex f7fce15..f7fce15 100644 --- a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.1.png +++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.1.png diff --git a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.2.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.2.png Binary files differindex 3080df5..3080df5 100644 --- a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.2.png +++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.2.png diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml new file mode 100644 index 0000000..0a9057e --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml @@ -0,0 +1,939 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 32 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 48 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 64 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 80 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 96 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 112 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 128 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 144 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 160 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 176 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 192 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 208 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 224 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 240 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 256 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 272 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 288 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 304 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 320 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 336 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 352 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 368 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 384 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 400 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 416 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 432 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 448 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 464 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 480 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 496 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 512 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 528 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 544 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 560 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 576 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 592 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 608 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 624 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 640 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 656 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 672 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 688 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 704 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 720 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 736 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 752 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 768 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 784 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 800 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 816 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 832 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 848 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 864 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 880 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 896 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 912 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 928 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 944 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 960 + image: "propertyAction-visual.0.png" + } + Frame { + msec: 976 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 992 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1008 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1024 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1040 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1056 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1072 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1088 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1104 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1120 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1136 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1152 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1168 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1184 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1200 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1216 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1232 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1248 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1264 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1280 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1296 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1312 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1328 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1344 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1360 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1376 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1392 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1408 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1424 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1440 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1456 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1472 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1488 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1504 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1520 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1536 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1552 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1568 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1584 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1600 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 109; y: 247 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1616 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 1632 + hash: "c91921dba899d7a86de3cd013773889f" + } + Frame { + msec: 1648 + hash: "888c0fc86155e10b5fc577ef6ec5755a" + } + Frame { + msec: 1664 + hash: "7fd61a8910bf7b0d2bf57653a268c5d8" + } + Frame { + msec: 1680 + hash: "f42f5073f90a423adf011d0e168c8a9b" + } + Frame { + msec: 1696 + hash: "a3d89deb6cfa2bbbaa1d7d5b5e5b48d5" + } + Frame { + msec: 1712 + hash: "f10e997d7a17c18251a32d58b018105a" + } + Frame { + msec: 1728 + hash: "09ffb57d5f67edfa34d6aad36a002554" + } + Frame { + msec: 1744 + hash: "01f3a2f5b9815f1397a907b099339360" + } + Frame { + msec: 1760 + hash: "58c0910c49748edd2ef8472960179472" + } + Frame { + msec: 1776 + hash: "cc82c5f7f93c5bc1af1c6c509268566a" + } + Frame { + msec: 1792 + hash: "3ef272c6439b85fbc166375d1b98403c" + } + Frame { + msec: 1808 + hash: "98c576f0900e4b8752d1f951bb6bf391" + } + Frame { + msec: 1824 + hash: "4d66dd64d8736ef50163e08723873478" + } + Frame { + msec: 1840 + hash: "9a5d8455b6763456185625811253e0b1" + } + Frame { + msec: 1856 + hash: "77e85731efa786a2492aae19a87523c6" + } + Frame { + msec: 1872 + hash: "f3199d0c860f1236e0b9472bef8785bc" + } + Frame { + msec: 1888 + hash: "f3199d0c860f1236e0b9472bef8785bc" + } + Frame { + msec: 1904 + hash: "32ccdab249268b01d9f1658a736052f1" + } + Frame { + msec: 1920 + image: "propertyAction-visual.1.png" + } + Frame { + msec: 1936 + hash: "db3010ef552146df938c237f6c92bff5" + } + Frame { + msec: 1952 + hash: "101e8595d0301e88376ec52ba9361f84" + } + Frame { + msec: 1968 + hash: "119d548c59baa7e47266d2ceca663288" + } + Frame { + msec: 1984 + hash: "f141fafe102a0b9a2bf33e8c3fc800ff" + } + Frame { + msec: 2000 + hash: "b01f9ca8d4fbff17b3d48c70898a044d" + } + Frame { + msec: 2016 + hash: "cf67954a2d1b22e8d2cfdc26419bafb8" + } + Frame { + msec: 2032 + hash: "7680b2b5a63dea13d733947297e01355" + } + Frame { + msec: 2048 + hash: "af1c017acf6b3c8cff86c9ceb60db3cb" + } + Frame { + msec: 2064 + hash: "0b23ec51f71fddae5e2238ab5754f1db" + } + Frame { + msec: 2080 + hash: "976643961ecbdc86335180ba812b874e" + } + Frame { + msec: 2096 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2112 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2128 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2144 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2160 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2176 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2192 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2208 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2224 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2240 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2256 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2272 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2288 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2304 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2320 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2336 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2352 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2368 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2384 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2400 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2416 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2432 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2448 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2464 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2480 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2496 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2512 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2528 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2544 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2560 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2576 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2592 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2608 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2624 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2640 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2656 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2672 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2688 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2704 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2720 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2736 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2752 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 109; y: 247 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2768 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2784 + hash: "aeed60899abb6c486a5b1df81f9a0224" + } + Frame { + msec: 2800 + hash: "ab924ae435262e76381c2e4af5d64342" + } + Frame { + msec: 2816 + hash: "d60758fc12471a19d31c85f058f2ded7" + } + Frame { + msec: 2832 + hash: "c62e2956f8eb5d2c8cd76ba05c5929d5" + } + Frame { + msec: 2848 + hash: "f2967ee7e035a9ff258116a2706529f8" + } + Frame { + msec: 2864 + hash: "885c4705c6c29f69c56c44abc1251d75" + } + Frame { + msec: 2880 + image: "propertyAction-visual.2.png" + } + Frame { + msec: 2896 + hash: "f4af6871e522511f95bc4c5abfc2a562" + } + Frame { + msec: 2912 + hash: "b27e1e7e0d90468525309528ccfe2823" + } + Frame { + msec: 2928 + hash: "78e7d84a4466258b40315fe61b7ca15c" + } + Frame { + msec: 2944 + hash: "471013d921d8d6e7468fd6aba0b75c71" + } + Frame { + msec: 2960 + hash: "856048da893c9136ac5740bc89b64128" + } + Frame { + msec: 2976 + hash: "32ccdab249268b01d9f1658a736052f1" + } + Frame { + msec: 2992 + hash: "2264fa3acd979f104633c1301a0efd8f" + } + Frame { + msec: 3008 + hash: "f3199d0c860f1236e0b9472bef8785bc" + } + Frame { + msec: 3024 + hash: "ad899d1ecaa43a5541be7b70413caee5" + } + Frame { + msec: 3040 + hash: "4e652524c992f5ee1b987275ca509728" + } + Frame { + msec: 3056 + hash: "a44b3dec2a016694bc8553a51b29d46c" + } + Frame { + msec: 3072 + hash: "7fbe20346bc3c28c345e0797b55599f3" + } + Frame { + msec: 3088 + hash: "bcff18ad433bb4f08126ee66efb037d1" + } + Frame { + msec: 3104 + hash: "836666c64f73c38e87de95944ff2fe72" + } + Frame { + msec: 3120 + hash: "4379982d23db239b1741b5d72c53e160" + } + Frame { + msec: 3136 + hash: "0ed9476337214e1493c1510b8a4c90f8" + } + Frame { + msec: 3152 + hash: "dab637406577a1924c7dbb30680e1af3" + } + Frame { + msec: 3168 + hash: "38b7e5894cf49a19ac055264d6447b9f" + } + Frame { + msec: 3184 + hash: "5f207d1dfad4907f200d76104881bf56" + } + Frame { + msec: 3200 + hash: "3434fc7f81e859722585dae97c557864" + } + Frame { + msec: 3216 + hash: "7c775b9be8c5293d4962324574267c22" + } + Frame { + msec: 3232 + hash: "da0ff6955c2e4cd86421bdb9053f56e6" + } + Frame { + msec: 3248 + hash: "a1297d525a3ad41abbbb7c2f15efd4fb" + } + Frame { + msec: 3264 + hash: "5326b220995b2a1eaa308ad10fd353fa" + } + Frame { + msec: 3280 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3296 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3312 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3328 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3344 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 3360 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3376 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3392 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3408 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3424 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3440 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3456 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3472 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3488 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3504 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3520 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3536 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3552 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3568 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3584 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3600 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3616 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } + Frame { + msec: 3632 + hash: "55b713dcb7c810bf126e06cc97d26d24" + } +} diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction-visual.qml b/tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction-visual.qml new file mode 100644 index 0000000..5651b87 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction-visual.qml @@ -0,0 +1,41 @@ +import Qt 4.6 + +/* +This test starts with a red rectangle at 0,0. It should animate a color change to blue, +then jump 50 pixels right, and then animate moving 50 pixels down. Afer this it should +do an exact visual reversal (animate up 50 pixels, jump left 50 pixels, and then animate +a change back to red). +*/ + +Rectangle { + width: 400; height: 400 + Rectangle { + id: myRect + width: 100; height: 100 + color: "red" + } + MouseArea { + id: clickable + anchors.fill: parent + } + + states: State { + name: "state1" + when: clickable.pressed + PropertyChanges { + target: myRect + x: 50; y: 50 + color: "blue" + } + } + + transitions: Transition { + to: "state1" + reversible: true + SequentialAnimation { + ColorAnimation {} + PropertyAction { properties: "x" } + NumberAnimation { properties: "y"; easing.type: "InOutQuad" } + } + } +} diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.0.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.0.png Binary files differnew file mode 100644 index 0000000..454f6c1 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.0.png diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.1.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.1.png Binary files differnew file mode 100644 index 0000000..9dde537 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.1.png diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.2.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.2.png Binary files differnew file mode 100644 index 0000000..454f6c1 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.2.png diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.3.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.3.png Binary files differnew file mode 100644 index 0000000..454f6c1 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.3.png diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.4.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.4.png Binary files differnew file mode 100644 index 0000000..043b487 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.4.png diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.5.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.5.png Binary files differnew file mode 100644 index 0000000..79c791d --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.5.png diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.6.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.6.png Binary files differnew file mode 100644 index 0000000..454f6c1 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.6.png diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.7.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.7.png Binary files differnew file mode 100644 index 0000000..454f6c1 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.7.png diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.8.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.8.png Binary files differnew file mode 100644 index 0000000..a7d6674 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.8.png diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.qml b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.qml new file mode 100644 index 0000000..a130b75 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.qml @@ -0,0 +1,2471 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 32 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 48 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 64 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 80 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 96 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 112 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 128 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 144 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 160 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 176 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 192 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 208 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 224 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 240 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 256 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 272 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 288 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 304 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 320 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 336 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 352 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 368 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 384 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 400 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 416 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 432 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 448 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 464 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 480 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 496 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 512 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 528 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 544 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 560 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 576 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 592 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 608 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 624 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 640 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 656 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 672 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 688 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 704 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 720 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 736 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 752 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 768 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 784 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 800 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 816 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 832 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 848 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 864 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 880 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 896 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 912 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 928 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 944 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 960 + image: "reanchor.0.png" + } + Frame { + msec: 976 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 992 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1008 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1024 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1040 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1056 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1072 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1088 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1104 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1120 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1136 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1152 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1168 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1184 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1200 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1216 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1232 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1248 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1264 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1280 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1296 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1312 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1328 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1344 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1360 + hash: "213811853dbefdc418099721e3bf8651" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 88; y: 115 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1376 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1392 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1408 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1424 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1440 + hash: "213811853dbefdc418099721e3bf8651" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 88; y: 115 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1456 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 1472 + hash: "eb3eeb37ab7b26692cbf100adfaf3772" + } + Frame { + msec: 1488 + hash: "e1a8cdcb1f3ec097a968b3b20964c6e8" + } + Frame { + msec: 1504 + hash: "44fc52479251327d0612de17ddb056eb" + } + Frame { + msec: 1520 + hash: "fa7e4a910aa60500575a34852c0c7cb8" + } + Frame { + msec: 1536 + hash: "66d205a02e35221e7684ab995acc1312" + } + Frame { + msec: 1552 + hash: "4ebe8dba6d9f3179b610b2298a7484a2" + } + Frame { + msec: 1568 + hash: "9b2582fccffa34fe389ba427ce47619a" + } + Frame { + msec: 1584 + hash: "e6f15478bda9995f82976b9e16659c8e" + } + Frame { + msec: 1600 + hash: "f08df0885fff04819ada6c10b25dd489" + } + Frame { + msec: 1616 + hash: "0f57c152306747cfa27171f1947ca65d" + } + Frame { + msec: 1632 + hash: "89d9c988abd55063e210b81193c6a8f0" + } + Frame { + msec: 1648 + hash: "91e0d0a5d57210c790c2d2399d1f7022" + } + Frame { + msec: 1664 + hash: "267874fdc09459b3e854c06d9ae99a54" + } + Frame { + msec: 1680 + hash: "2f58a508f439c40c6f2bd7da1f30deff" + } + Frame { + msec: 1696 + hash: "1451548d9f0002a6c4765cb616ab7f59" + } + Frame { + msec: 1712 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1728 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1744 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1760 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1776 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1792 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1808 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1824 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1840 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1856 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1872 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1888 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1904 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1920 + image: "reanchor.1.png" + } + Frame { + msec: 1936 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1952 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1968 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 1984 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 2000 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 2016 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 2032 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 2048 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 2064 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 2080 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 2096 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 87; y: 114 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2112 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 2128 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 2144 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 2160 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 2176 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 2192 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 2208 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 87; y: 114 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2224 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 2240 + hash: "8ceca291e28f52368346f171c2f31664" + } + Frame { + msec: 2256 + hash: "903877286f3ef112e6a661abde5c17bd" + } + Frame { + msec: 2272 + hash: "cc2d15c96571f9328b929f96849c8f9e" + } + Frame { + msec: 2288 + hash: "26e6c03b1b91b725d6e0fe9216a7413e" + } + Frame { + msec: 2304 + hash: "213e8e9905bea32ddb97d38b75cd19cc" + } + Frame { + msec: 2320 + hash: "17d5726a282d42fcde7796be84606fcd" + } + Frame { + msec: 2336 + hash: "f4629bf9f5837f687ae49008c9d28d02" + } + Frame { + msec: 2352 + hash: "fbc927cb136d8d29b2578e78c4793e41" + } + Frame { + msec: 2368 + hash: "c7099e732490dd2f3205986a7c43a165" + } + Frame { + msec: 2384 + hash: "b3b464a8e67fab05109b49604f1ce705" + } + Frame { + msec: 2400 + hash: "7629b2a77f9f87aa0ef2535aa9b8d390" + } + Frame { + msec: 2416 + hash: "6a329c289236782e095cfa6f15409726" + } + Frame { + msec: 2432 + hash: "1cfbf6f4c292e1520b44d84dd59b93a8" + } + Frame { + msec: 2448 + hash: "a8d3d838bffb39053eb705aefcb39c46" + } + Frame { + msec: 2464 + hash: "a56ad66a949e07e3174a58c80145c85e" + } + Frame { + msec: 2480 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2496 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2512 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2528 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2544 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2560 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2576 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2592 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2608 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2624 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2640 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2656 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2672 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2688 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2704 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2720 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2736 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2752 + hash: "213811853dbefdc418099721e3bf8651" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 87; y: 114 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2768 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2784 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2800 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2816 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2832 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2848 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 2864 + hash: "213811853dbefdc418099721e3bf8651" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 87; y: 114 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2880 + image: "reanchor.2.png" + } + Frame { + msec: 2896 + hash: "eb3eeb37ab7b26692cbf100adfaf3772" + } + Frame { + msec: 2912 + hash: "e1a8cdcb1f3ec097a968b3b20964c6e8" + } + Frame { + msec: 2928 + hash: "44fc52479251327d0612de17ddb056eb" + } + Frame { + msec: 2944 + hash: "fa7e4a910aa60500575a34852c0c7cb8" + } + Frame { + msec: 2960 + hash: "66d205a02e35221e7684ab995acc1312" + } + Frame { + msec: 2976 + hash: "4ebe8dba6d9f3179b610b2298a7484a2" + } + Frame { + msec: 2992 + hash: "9b2582fccffa34fe389ba427ce47619a" + } + Frame { + msec: 3008 + hash: "e6f15478bda9995f82976b9e16659c8e" + } + Frame { + msec: 3024 + hash: "f08df0885fff04819ada6c10b25dd489" + } + Frame { + msec: 3040 + hash: "0f57c152306747cfa27171f1947ca65d" + } + Frame { + msec: 3056 + hash: "89d9c988abd55063e210b81193c6a8f0" + } + Frame { + msec: 3072 + hash: "91e0d0a5d57210c790c2d2399d1f7022" + } + Frame { + msec: 3088 + hash: "267874fdc09459b3e854c06d9ae99a54" + } + Frame { + msec: 3104 + hash: "2f58a508f439c40c6f2bd7da1f30deff" + } + Frame { + msec: 3120 + hash: "1451548d9f0002a6c4765cb616ab7f59" + } + Frame { + msec: 3136 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3152 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3168 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3184 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3200 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3216 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3232 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3248 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3264 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3280 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3296 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3312 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3328 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3344 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3360 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 87; y: 114 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3376 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3392 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3408 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3424 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3440 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3456 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3472 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 87; y: 114 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3488 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 3504 + hash: "8ceca291e28f52368346f171c2f31664" + } + Frame { + msec: 3520 + hash: "903877286f3ef112e6a661abde5c17bd" + } + Frame { + msec: 3536 + hash: "cc2d15c96571f9328b929f96849c8f9e" + } + Frame { + msec: 3552 + hash: "26e6c03b1b91b725d6e0fe9216a7413e" + } + Frame { + msec: 3568 + hash: "213e8e9905bea32ddb97d38b75cd19cc" + } + Frame { + msec: 3584 + hash: "17d5726a282d42fcde7796be84606fcd" + } + Frame { + msec: 3600 + hash: "f4629bf9f5837f687ae49008c9d28d02" + } + Frame { + msec: 3616 + hash: "fbc927cb136d8d29b2578e78c4793e41" + } + Frame { + msec: 3632 + hash: "c7099e732490dd2f3205986a7c43a165" + } + Frame { + msec: 3648 + hash: "b3b464a8e67fab05109b49604f1ce705" + } + Frame { + msec: 3664 + hash: "7629b2a77f9f87aa0ef2535aa9b8d390" + } + Frame { + msec: 3680 + hash: "6a329c289236782e095cfa6f15409726" + } + Frame { + msec: 3696 + hash: "1cfbf6f4c292e1520b44d84dd59b93a8" + } + Frame { + msec: 3712 + hash: "a8d3d838bffb39053eb705aefcb39c46" + } + Frame { + msec: 3728 + hash: "a56ad66a949e07e3174a58c80145c85e" + } + Frame { + msec: 3744 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 3760 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 3776 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 3792 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 3808 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 3824 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 3840 + image: "reanchor.3.png" + } + Frame { + msec: 3856 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 3872 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 3888 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 3904 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 3920 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 3936 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 3952 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 3968 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 3984 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4000 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4016 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4032 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4048 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4064 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4080 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4096 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4112 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4128 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4144 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4160 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4176 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4192 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4208 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4224 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4240 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4256 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4272 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4288 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4304 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4320 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4336 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4352 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4368 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4384 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4400 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4416 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4432 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4448 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4464 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4480 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4496 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4512 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4528 + hash: "213811853dbefdc418099721e3bf8651" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 174; y: 174 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4544 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4560 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4576 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4592 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4608 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4624 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4640 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4656 + hash: "213811853dbefdc418099721e3bf8651" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 174; y: 174 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4672 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 4688 + hash: "5d38bf4a033de31985ae9989107908af" + } + Frame { + msec: 4704 + hash: "ed1bd2abd42848ecd07f0f0654c2b80f" + } + Frame { + msec: 4720 + hash: "588de6662123733303d93f62c6481f6a" + } + Frame { + msec: 4736 + hash: "aae79c2fbb2fd1ac7efa9802bff40f95" + } + Frame { + msec: 4752 + hash: "f17512798136f67f25aaa0aeb60678e1" + } + Frame { + msec: 4768 + hash: "79578a1e0e3e9cd45c210d0c5d3e75d6" + } + Frame { + msec: 4784 + hash: "5dad4ff201744cda6ff41f89414c8d11" + } + Frame { + msec: 4800 + image: "reanchor.4.png" + } + Frame { + msec: 4816 + hash: "c4559982aa3f3d291364deed4bd96d65" + } + Frame { + msec: 4832 + hash: "0dff03ea9154bdb2a813358b04cfbde9" + } + Frame { + msec: 4848 + hash: "09bdf2869dee1c0cbe3c8c2e9254580b" + } + Frame { + msec: 4864 + hash: "ba7762978bbd63d624029910fe16fb6d" + } + Frame { + msec: 4880 + hash: "f00d198ab8f4f625b60e9e2071d8adfd" + } + Frame { + msec: 4896 + hash: "adcec9c9a5b0d60cf45b2915365ea09c" + } + Frame { + msec: 4912 + hash: "a65cd6fbb26d618692ef23148015a4f2" + } + Frame { + msec: 4928 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 4944 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 4960 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 4976 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 4992 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5008 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5024 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5040 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5056 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5072 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5088 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5104 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5120 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5136 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5152 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5168 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5184 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5200 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5216 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5232 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5248 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5264 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5280 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5296 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5312 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5328 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5344 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5360 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5376 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5392 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5408 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5424 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5440 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5456 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5472 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5488 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5504 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5520 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5536 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5552 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5568 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5584 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5600 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5616 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5632 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5648 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5664 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5680 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5696 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5712 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5728 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5744 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5760 + image: "reanchor.5.png" + } + Frame { + msec: 5776 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5792 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5808 + hash: "1137e22c68e043950811dee295e19b04" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 95; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5824 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5840 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5856 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5872 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5888 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5904 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5920 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5936 + hash: "1137e22c68e043950811dee295e19b04" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 95; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5952 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 5968 + hash: "103bbc9ce594851f5243b103f8fef1c1" + } + Frame { + msec: 5984 + hash: "c381148b052be2e6244f24c2292b89cf" + } + Frame { + msec: 6000 + hash: "2fda1d635fa47bff7de867df3dadfb4f" + } + Frame { + msec: 6016 + hash: "4d35e00af33ad5dc84998cda2d066b4e" + } + Frame { + msec: 6032 + hash: "14005d52d372acf6d3495f69bbf00b7d" + } + Frame { + msec: 6048 + hash: "29728f64d12e858d960c4e197824ef43" + } + Frame { + msec: 6064 + hash: "798822f0c20ef87cb01fe1dcd76c7585" + } + Frame { + msec: 6080 + hash: "4cdeea0f91587ef32a2c2e282f6d00e6" + } + Frame { + msec: 6096 + hash: "08ca5d16771e58da6cdd20b86dc65f03" + } + Frame { + msec: 6112 + hash: "e9aeb432709d275048ad9d84fb21db1a" + } + Frame { + msec: 6128 + hash: "3b642f27d356fd1815dc50f8e750623d" + } + Frame { + msec: 6144 + hash: "7c1db0ec278849ec044ea0aa3383075b" + } + Frame { + msec: 6160 + hash: "da902850879c95d4ddffbb1ba0060f25" + } + Frame { + msec: 6176 + hash: "e4053bd0db7752e7a47e096da645b69b" + } + Frame { + msec: 6192 + hash: "aabbb6d34399818347db265151a547b7" + } + Frame { + msec: 6208 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6224 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6240 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6256 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6272 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6288 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6304 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6320 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6336 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6352 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6368 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6384 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6400 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6416 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6432 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6448 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6464 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6480 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6496 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6512 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6528 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6544 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6560 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6576 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6592 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6608 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6624 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6640 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6656 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6672 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6688 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6704 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6720 + image: "reanchor.6.png" + } + Frame { + msec: 6736 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6752 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6768 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6784 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6800 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6816 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6832 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6848 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6864 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6880 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6896 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6912 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6928 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6944 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6960 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6976 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 6992 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7008 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7024 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7040 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7056 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7072 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7088 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7104 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7120 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7136 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7152 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7168 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7184 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7200 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7216 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7232 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7248 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7264 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7280 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7296 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7312 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7328 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7344 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7360 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7376 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7392 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7408 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7424 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7440 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7456 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7472 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7488 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7504 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7520 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7536 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7552 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7568 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7584 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7600 + hash: "213811853dbefdc418099721e3bf8651" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 86; y: 136 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7616 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7632 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7648 + hash: "213811853dbefdc418099721e3bf8651" + } + Frame { + msec: 7664 + hash: "213811853dbefdc418099721e3bf8651" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 86; y: 136 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7680 + image: "reanchor.7.png" + } + Frame { + msec: 7696 + hash: "eb3eeb37ab7b26692cbf100adfaf3772" + } + Frame { + msec: 7712 + hash: "e1a8cdcb1f3ec097a968b3b20964c6e8" + } + Frame { + msec: 7728 + hash: "44fc52479251327d0612de17ddb056eb" + } + Frame { + msec: 7744 + hash: "fa7e4a910aa60500575a34852c0c7cb8" + } + Frame { + msec: 7760 + hash: "66d205a02e35221e7684ab995acc1312" + } + Frame { + msec: 7776 + hash: "4ebe8dba6d9f3179b610b2298a7484a2" + } + Frame { + msec: 7792 + hash: "9b2582fccffa34fe389ba427ce47619a" + } + Frame { + msec: 7808 + hash: "e6f15478bda9995f82976b9e16659c8e" + } + Frame { + msec: 7824 + hash: "f08df0885fff04819ada6c10b25dd489" + } + Frame { + msec: 7840 + hash: "0f57c152306747cfa27171f1947ca65d" + } + Frame { + msec: 7856 + hash: "89d9c988abd55063e210b81193c6a8f0" + } + Frame { + msec: 7872 + hash: "91e0d0a5d57210c790c2d2399d1f7022" + } + Frame { + msec: 7888 + hash: "267874fdc09459b3e854c06d9ae99a54" + } + Frame { + msec: 7904 + hash: "2f58a508f439c40c6f2bd7da1f30deff" + } + Frame { + msec: 7920 + hash: "1451548d9f0002a6c4765cb616ab7f59" + } + Frame { + msec: 7936 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 7952 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 7968 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 7984 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8000 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8016 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8032 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8048 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8064 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8080 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8096 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8112 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8128 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8144 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8160 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8176 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8192 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8208 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8224 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8240 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8256 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8272 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8288 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8304 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8320 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8336 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8352 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8368 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8384 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8400 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 177; y: 173 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8416 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8432 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8448 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8464 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8480 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8496 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8512 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 177; y: 173 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8528 + hash: "ad3837dcf3e69274ac2918d796974f29" + } + Frame { + msec: 8544 + hash: "49a6ed64f80094b41348eda19fa5a55e" + } + Frame { + msec: 8560 + hash: "3ee42fb431d7824c1cd6ddf95af91d10" + } + Frame { + msec: 8576 + hash: "d807890cc0670eda9fac267769366771" + } + Frame { + msec: 8592 + hash: "50cb68de9ca0c3a8db1df58d7cbb0d21" + } + Frame { + msec: 8608 + hash: "0af06233156b3a469ce9e7d80a5767c0" + } + Frame { + msec: 8624 + hash: "9b2c77f004e480fd485e092c08feaf81" + } + Frame { + msec: 8640 + image: "reanchor.8.png" + } + Frame { + msec: 8656 + hash: "6ed9b6118a0dc81c22af9fee108b7432" + } + Frame { + msec: 8672 + hash: "4d3aa8219edffe6fda316482821d4a64" + } + Frame { + msec: 8688 + hash: "ea8a7104840254ac2706ca2635b8a95f" + } + Frame { + msec: 8704 + hash: "a8569ef3287da9699809a2ad107b87b1" + } + Frame { + msec: 8720 + hash: "91d09653dbced4ecb3d711737cb89ca1" + } + Frame { + msec: 8736 + hash: "d5391f3b40f2dfada0336d889d438d69" + } + Frame { + msec: 8752 + hash: "27cd9690607f97cc84c2a0a4455feccb" + } + Frame { + msec: 8768 + hash: "f885588779a5de5d7d47f48bf9a2a6ee" + } + Frame { + msec: 8784 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 8800 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 8816 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 8832 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 8848 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 8864 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 8880 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 8896 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 8912 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 8928 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 8944 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 8960 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 8976 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 8992 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9008 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9024 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9040 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9056 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9072 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9088 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9104 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9120 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9136 + hash: "1137e22c68e043950811dee295e19b04" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 9152 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9168 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9184 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9200 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9216 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9232 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9248 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9264 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9280 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9296 + hash: "1137e22c68e043950811dee295e19b04" + } + Frame { + msec: 9312 + hash: "1137e22c68e043950811dee295e19b04" + } +} diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/reanchor.qml b/tests/auto/declarative/qmlvisual/animation/reanchor/reanchor.qml new file mode 100644 index 0000000..1d0495e --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/reanchor/reanchor.qml @@ -0,0 +1,69 @@ +import Qt 4.6 + +Rectangle { + id: container + width: 200; height: 200 + Rectangle { + id: myRect + objectName: "MyRect" + color: "green"; + anchors.left: parent.left + anchors.right: rightGuideline.left + anchors.top: topGuideline.top + anchors.bottom: container.bottom + } + Item { id: leftGuideline; x: 10 } + Item { id: rightGuideline; x: 150 } + Item { id: topGuideline; y: 10 } + Item { id: bottomGuideline; y: 150 } + Item { id: topGuideline2; y: 50 } + Item { id: bottomGuideline2; y: 175 } + + MouseArea { + id: wholeArea + anchors.fill: parent + onClicked: { + if (container.state == "") { + container.state = "reanchored"; + } else if (container.state == "reanchored") { + container.state = "reanchored2"; + } else if (container.state == "reanchored2") + container.state = "reanchored"; + } + } + + states: [ State { + name: "reanchored" + AnchorChanges { + target: myRect; + anchors.left: leftGuideline.left + anchors.right: container.right + anchors.top: container.top + anchors.bottom: bottomGuideline.bottom + } + }, State { + name: "reanchored2" + AnchorChanges { + target: myRect; + anchors.left: undefined + anchors.right: undefined + anchors.top: topGuideline2.top + anchors.bottom: bottomGuideline2.bottom + } + }] + + transitions: Transition { + AnchorAnimation { } + } + + MouseArea { + width: 50; height: 50 + anchors.right: parent.right + anchors.bottom: parent.bottom + onClicked: { + container.state = ""; + } + } + + state: "reanchored" +} diff --git a/tests/auto/declarative/visual/animation/scriptAction/data/scriptAction.qml b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.qml index 01da490..01da490 100644 --- a/tests/auto/declarative/visual/animation/scriptAction/data/scriptAction.qml +++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.qml diff --git a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.0.png b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.0.png Binary files differindex 64d6b06..64d6b06 100644 --- a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.0.png +++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.0.png diff --git a/tests/auto/declarative/visual/animation/scriptAction/data/scriptAction.1.png b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.1.png Binary files differindex 1a25c63..1a25c63 100644 --- a/tests/auto/declarative/visual/animation/scriptAction/data/scriptAction.1.png +++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.1.png diff --git a/tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction-visual.qml b/tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction-visual.qml new file mode 100644 index 0000000..dc2fcee --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction-visual.qml @@ -0,0 +1,40 @@ +import Qt 4.6 + +/* +This test starts with a red rectangle at 0,0. It should animate moving 50 pixels right, +then immediately change blue, and then animate moving 50 pixels down. +*/ + +Rectangle { + width: 400; height: 400 + Rectangle { + id: myRect + width: 100; height: 100 + color: "red" + } + MouseArea { + id: clickable + anchors.fill: parent + } + + states: State { + name: "state1" + when: clickable.pressed + PropertyChanges { + target: myRect + x: 50; y: 50 + } + StateChangeScript { + name: "setColor" + script: myRect.color = "blue" + } + } + + transitions: Transition { + SequentialAnimation { + NumberAnimation { properties: "x"; easing.type: "InOutQuad" } + ScriptAction { scriptName: "setColor" } + NumberAnimation { properties: "y"; easing.type: "InOutQuad" } + } + } +} diff --git a/tests/auto/declarative/visual/fillmode/data/fillmode.0.png b/tests/auto/declarative/qmlvisual/fillmode/data/fillmode.0.png Binary files differindex 9c9ceae..9c9ceae 100644 --- a/tests/auto/declarative/visual/fillmode/data/fillmode.0.png +++ b/tests/auto/declarative/qmlvisual/fillmode/data/fillmode.0.png diff --git a/tests/auto/declarative/qmlvisual/fillmode/data/fillmode.qml b/tests/auto/declarative/qmlvisual/fillmode/data/fillmode.qml new file mode 100644 index 0000000..08ed609 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/fillmode/data/fillmode.qml @@ -0,0 +1,11 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "fillmode.0.png" + } +} diff --git a/tests/auto/declarative/visual/fillmode/face.png b/tests/auto/declarative/qmlvisual/fillmode/face.png Binary files differindex 9623b1a..9623b1a 100644 --- a/tests/auto/declarative/visual/fillmode/face.png +++ b/tests/auto/declarative/qmlvisual/fillmode/face.png diff --git a/tests/auto/declarative/qmlvisual/fillmode/fillmode.qml b/tests/auto/declarative/qmlvisual/fillmode/fillmode.qml new file mode 100644 index 0000000..7c3b486 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/fillmode/fillmode.qml @@ -0,0 +1,21 @@ +import Qt 4.6 + +/* + This is a static display test of the various Image fill modes. See the png file in the data + subdirectory to see what the image should look like. +*/ + +Rectangle { + id: screen; width: 750; height: 600; color: "gray" + property string source: "face.png" + + Grid { + columns: 3 + Image { width: 250; height: 300; source: screen.source; fillMode: Image.Stretch } + Image { width: 250; height: 300; source: screen.source; fillMode: Image.PreserveAspectFit; smooth: true } + Image { width: 250; height: 300; source: screen.source; fillMode: Image.PreserveAspectCrop } + Image { width: 250; height: 300; source: screen.source; fillMode: Image.Tile; smooth: true } + Image { width: 250; height: 300; source: screen.source; fillMode: Image.TileHorizontally } + Image { width: 250; height: 300; source: screen.source; fillMode: Image.TileVertically } + } +} diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.0.png Binary files differindex 0f33d99..0f33d99 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test.0.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.0.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.1.png Binary files differindex 0f33d99..0f33d99 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test.1.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.1.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.2.png Binary files differindex 06a3dbd..06a3dbd 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test.2.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.2.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.3.png Binary files differindex e0d02d6..e0d02d6 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test.3.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.3.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.4.png Binary files differindex e0d02d6..e0d02d6 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test.4.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.4.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.5.png Binary files differindex e0d02d6..e0d02d6 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test.5.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.5.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test.qml b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.qml index 44900fc..44900fc 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test.qml +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.qml diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test2.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.0.png Binary files differindex fa711c1..fa711c1 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test2.0.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.0.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test2.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.1.png Binary files differindex fa711c1..fa711c1 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test2.1.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.1.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test2.qml b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.qml index 7837ad9..7837ad9 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test2.qml +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.qml diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png Binary files differindex 9309e37..9309e37 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test3.0.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png Binary files differindex 20e6c8e..20e6c8e 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test3.1.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png Binary files differindex c7559ac..c7559ac 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test3.2.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png Binary files differindex bf2844b..bf2844b 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test3.3.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.4.png Binary files differindex beef0bf..beef0bf 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test3.4.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.4.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.5.png Binary files differindex 1847dc7..1847dc7 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test3.5.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.5.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.6.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.6.png Binary files differindex c7559ac..c7559ac 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test3.6.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.6.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.7.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.7.png Binary files differindex 20e6c8e..20e6c8e 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test3.7.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.7.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.8.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.8.png Binary files differindex 9309e37..9309e37 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test3.8.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.8.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.9.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.9.png Binary files differindex 7ac879b..7ac879b 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test3.9.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.9.png diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml index 7308a23..7308a23 100644 --- a/tests/auto/declarative/visual/focusscope/data-MAC/test3.qml +++ b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.0.png Binary files differindex f68f7dc..f68f7dc 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test.0.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.0.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.1.png Binary files differindex f68f7dc..f68f7dc 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test.1.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.1.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.2.png Binary files differindex e26c028..e26c028 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test.2.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.2.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.3.png Binary files differindex 9c4b2f2..9c4b2f2 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test.3.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.3.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.4.png Binary files differindex 9c4b2f2..9c4b2f2 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test.4.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.4.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.5.png Binary files differindex 9c4b2f2..9c4b2f2 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test.5.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.5.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test.qml b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.qml index 93189fa..93189fa 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test.qml +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.qml diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test2.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.0.png Binary files differindex 6be7aef..6be7aef 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test2.0.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.0.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test2.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.1.png Binary files differindex 6be7aef..6be7aef 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test2.1.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.1.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test2.qml b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.qml index 7170907..7170907 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test2.qml +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.qml diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.0.png Binary files differindex 5f93c67..5f93c67 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test3.0.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.0.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.1.png Binary files differindex 3b4e0e6..3b4e0e6 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test3.1.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.1.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.2.png Binary files differindex 54a3934..54a3934 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test3.2.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.2.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.3.png Binary files differindex 4f08fd2..4f08fd2 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test3.3.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.3.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.4.png Binary files differindex 9aee1f8..9aee1f8 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test3.4.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.4.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.5.png Binary files differindex 04eb05c..04eb05c 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test3.5.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.5.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.6.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.6.png Binary files differindex 54a3934..54a3934 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test3.6.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.6.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.7.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.7.png Binary files differindex 3b4e0e6..3b4e0e6 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test3.7.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.7.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.8.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.8.png Binary files differindex 2df55df..2df55df 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test3.8.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.8.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.9.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.9.png Binary files differindex 91816fd..91816fd 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test3.9.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.9.png diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.qml index b1f628f..b1f628f 100644 --- a/tests/auto/declarative/visual/focusscope/data-X11/test3.qml +++ b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.qml diff --git a/tests/auto/declarative/visual/focusscope/data/test.0.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.0.png Binary files differindex 67b99e0..67b99e0 100644 --- a/tests/auto/declarative/visual/focusscope/data/test.0.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.0.png diff --git a/tests/auto/declarative/visual/focusscope/data/test.1.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.1.png Binary files differindex 67b99e0..67b99e0 100644 --- a/tests/auto/declarative/visual/focusscope/data/test.1.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.1.png diff --git a/tests/auto/declarative/visual/focusscope/data/test.2.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.2.png Binary files differindex 69f0366..69f0366 100644 --- a/tests/auto/declarative/visual/focusscope/data/test.2.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.2.png diff --git a/tests/auto/declarative/visual/focusscope/data/test.3.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.3.png Binary files differindex afe0bd9..afe0bd9 100644 --- a/tests/auto/declarative/visual/focusscope/data/test.3.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.3.png diff --git a/tests/auto/declarative/visual/focusscope/data/test.4.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.4.png Binary files differindex afe0bd9..afe0bd9 100644 --- a/tests/auto/declarative/visual/focusscope/data/test.4.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.4.png diff --git a/tests/auto/declarative/visual/focusscope/data/test.5.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.5.png Binary files differindex afe0bd9..afe0bd9 100644 --- a/tests/auto/declarative/visual/focusscope/data/test.5.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.5.png diff --git a/tests/auto/declarative/visual/focusscope/data/test.qml b/tests/auto/declarative/qmlvisual/focusscope/data/test.qml index d86c034..d86c034 100644 --- a/tests/auto/declarative/visual/focusscope/data/test.qml +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.qml diff --git a/tests/auto/declarative/visual/focusscope/data/test2.0.png b/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png Binary files differindex 555a968..555a968 100644 --- a/tests/auto/declarative/visual/focusscope/data/test2.0.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png diff --git a/tests/auto/declarative/visual/focusscope/data/test2.1.png b/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png Binary files differindex 555a968..555a968 100644 --- a/tests/auto/declarative/visual/focusscope/data/test2.1.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png diff --git a/tests/auto/declarative/visual/focusscope/data/test2.qml b/tests/auto/declarative/qmlvisual/focusscope/data/test2.qml index fedc96a..fedc96a 100644 --- a/tests/auto/declarative/visual/focusscope/data/test2.qml +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test2.qml diff --git a/tests/auto/declarative/visual/focusscope/data/test3.0.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.0.png Binary files differindex 374acf5..374acf5 100644 --- a/tests/auto/declarative/visual/focusscope/data/test3.0.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.0.png diff --git a/tests/auto/declarative/visual/focusscope/data/test3.1.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.1.png Binary files differindex b75cb10..b75cb10 100644 --- a/tests/auto/declarative/visual/focusscope/data/test3.1.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.1.png diff --git a/tests/auto/declarative/visual/focusscope/data/test3.2.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.2.png Binary files differindex 9b2f919..9b2f919 100644 --- a/tests/auto/declarative/visual/focusscope/data/test3.2.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.2.png diff --git a/tests/auto/declarative/visual/focusscope/data/test3.3.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.3.png Binary files differindex bf63032..bf63032 100644 --- a/tests/auto/declarative/visual/focusscope/data/test3.3.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.3.png diff --git a/tests/auto/declarative/visual/focusscope/data/test3.4.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.4.png Binary files differindex 6981a06..6981a06 100644 --- a/tests/auto/declarative/visual/focusscope/data/test3.4.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.4.png diff --git a/tests/auto/declarative/visual/focusscope/data/test3.5.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.5.png Binary files differindex 5856325..5856325 100644 --- a/tests/auto/declarative/visual/focusscope/data/test3.5.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.5.png diff --git a/tests/auto/declarative/visual/focusscope/data/test3.6.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.6.png Binary files differindex 9b2f919..9b2f919 100644 --- a/tests/auto/declarative/visual/focusscope/data/test3.6.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.6.png diff --git a/tests/auto/declarative/visual/focusscope/data/test3.7.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.7.png Binary files differindex b75cb10..b75cb10 100644 --- a/tests/auto/declarative/visual/focusscope/data/test3.7.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.7.png diff --git a/tests/auto/declarative/visual/focusscope/data/test3.8.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.8.png Binary files differindex 374acf5..374acf5 100644 --- a/tests/auto/declarative/visual/focusscope/data/test3.8.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.8.png diff --git a/tests/auto/declarative/visual/focusscope/data/test3.9.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.9.png Binary files differindex 11a08bd..11a08bd 100644 --- a/tests/auto/declarative/visual/focusscope/data/test3.9.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.9.png diff --git a/tests/auto/declarative/visual/focusscope/data/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/data/test3.qml index 8ce7944..8ce7944 100644 --- a/tests/auto/declarative/visual/focusscope/data/test3.qml +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.qml diff --git a/tests/auto/declarative/visual/focusscope/test.qml b/tests/auto/declarative/qmlvisual/focusscope/test.qml index 401c7dc..401c7dc 100644 --- a/tests/auto/declarative/visual/focusscope/test.qml +++ b/tests/auto/declarative/qmlvisual/focusscope/test.qml diff --git a/tests/auto/declarative/visual/focusscope/test2.qml b/tests/auto/declarative/qmlvisual/focusscope/test2.qml index 5b6971a..5b6971a 100644 --- a/tests/auto/declarative/visual/focusscope/test2.qml +++ b/tests/auto/declarative/qmlvisual/focusscope/test2.qml diff --git a/tests/auto/declarative/qmlvisual/focusscope/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/test3.qml new file mode 100644 index 0000000..a8bb523 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/focusscope/test3.qml @@ -0,0 +1,52 @@ +import Qt 4.6 + +Rectangle { + color: "white" + width: 800 + height: 600 + + ListModel { + id: model + ListElement { name: "1" } + ListElement { name: "2" } + ListElement { name: "3" } + ListElement { name: "4" } + ListElement { name: "5" } + ListElement { name: "6" } + ListElement { name: "7" } + ListElement { name: "8" } + ListElement { name: "9" } + } + + Component { + id: verticalDelegate + FocusScope { + id: root + width: 50; height: 50; + Keys.onDigit9Pressed: console.log("Error - " + name) + Rectangle { + focus: true + Keys.onDigit9Pressed: console.log(name) + width: 50; height: 50; + color: root.ListView.isCurrentItem?"red":"green" + Text { text: name; anchors.centerIn: parent } + } + } + } + + ListView { + width: 800; height: 50; orientation: "Horizontal" + focus: true + model: model + delegate: verticalDelegate + preferredHighlightBegin: 100 + preferredHighlightEnd: 101 + highlightRangeMode: ListView.StrictlyEnforceRange + } + + + Text { + y: 100; x: 50 + text: "Currently selected element should be red\nPressing \"9\" should print the number of the currently selected item\nBe sure to scroll all the way to the right, pause, and then all the way to the left." + } +} diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/animated-smooth.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated-smooth.qml index 0ceaf49..0ceaf49 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/animated-smooth.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated-smooth.qml diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/animated.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated.qml index 29c02b3..29c02b3 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/animated.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated.qml diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/borders.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/borders.qml index 9879416..9879416 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/borders.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/borders.qml diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml new file mode 100644 index 0000000..58d03a6 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml @@ -0,0 +1,38 @@ +import Qt 4.6 + +Item { + property alias horizontalMode: image.horizontalTileMode + property alias verticalMode: image.verticalTileMode + property alias source: image.source + property alias antialiased: image.smooth + + property int minWidth + property int minHeight + property int maxWidth + property int maxHeight + property int margin + + id: container + width: 240; height: 240 + + BorderImage { + id: image; x: container.width / 2 - width / 2; y: container.height / 2 - height / 2 + + SequentialAnimation on width { + loops: Animation.Infinite + NumberAnimation { from: container.minWidth; to: container.maxWidth; duration: 2000; easing.type: "InOutQuad"} + NumberAnimation { from: container.maxWidth; to: container.minWidth; duration: 2000; easing.type: "InOutQuad" } + } + + SequentialAnimation on height { + loops: Animation.Infinite + NumberAnimation { from: container.minHeight; to: container.maxHeight; duration: 2000; easing.type: "InOutQuad"} + NumberAnimation { from: container.maxHeight; to: container.minHeight; duration: 2000; easing.type: "InOutQuad" } + } + + border.top: container.margin + border.left: container.margin + border.bottom: container.margin + border.right: container.margin + } +} diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/content/bw.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/bw.png Binary files differindex 486eaae..486eaae 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/content/bw.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/bw.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/content/colors-round.sci b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-round.sci index 506f6f5..506f6f5 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/content/colors-round.sci +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-round.sci diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/content/colors-stretch.sci b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-stretch.sci index e4989a7..e4989a7 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/content/colors-stretch.sci +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-stretch.sci diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/content/colors.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors.png Binary files differindex dfb62f3..dfb62f3 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/content/colors.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.0.png Binary files differindex 9a6b079..9a6b079 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png Binary files differnew file mode 100644 index 0000000..4366d53 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.2.png Binary files differindex 85a2729..85a2729 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.2.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.3.png Binary files differindex de6ff7c..de6ff7c 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.3.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.4.png Binary files differindex fe7d3dd..fe7d3dd 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.4.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.5.png Binary files differindex e73bef5..e73bef5 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.5.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.6.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.6.png Binary files differindex 0c75422..0c75422 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.6.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml new file mode 100644 index 0000000..c6df3c4 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml @@ -0,0 +1,1823 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 32 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 48 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 64 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 80 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 96 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 112 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 128 + hash: "cd2180be80101c2aa4350b51b7a6f502" + } + Frame { + msec: 144 + hash: "de471829f8ad3b43bf1b4df9d1d65a4d" + } + Frame { + msec: 160 + hash: "ed9f2ca797894612600bc4b7fbaecb84" + } + Frame { + msec: 176 + hash: "59470d71fa4426d0283e86371f2bfc2a" + } + Frame { + msec: 192 + hash: "9a2f92efb51bcc6293d6a8e82d5314ea" + } + Frame { + msec: 208 + hash: "7b66e21652a7d0982226e281a48411a9" + } + Frame { + msec: 224 + hash: "a716c8d2c94433dee719f92f0822c8ec" + } + Frame { + msec: 240 + hash: "f22a47b846cfee96ebdf39bbce2e6d51" + } + Frame { + msec: 256 + hash: "5a8932d13d624932a65694fd19ec05cd" + } + Frame { + msec: 272 + hash: "48e62dd171f5da82b5aa26c765e4042c" + } + Frame { + msec: 288 + hash: "63d3c47f7dec1236440a05e0a8380900" + } + Frame { + msec: 304 + hash: "323af110731b7af0c30f8862ff59b833" + } + Frame { + msec: 320 + hash: "83c029e328e80af83158c37089cf0ece" + } + Frame { + msec: 336 + hash: "3f9a09ae19be34348bb2552915360cf7" + } + Frame { + msec: 352 + hash: "df624d70cae1bcefda8d69c0ff055d83" + } + Frame { + msec: 368 + hash: "d671a3b971468e1d8aa30ab655e020a9" + } + Frame { + msec: 384 + hash: "74c837b29f7f05b615123f0e608b523f" + } + Frame { + msec: 400 + hash: "277ef98ea859fb7685fe6cd44a538a7d" + } + Frame { + msec: 416 + hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9" + } + Frame { + msec: 432 + hash: "456be9c208d690c479ba12bf6325dde0" + } + Frame { + msec: 448 + hash: "10307beea6d99ab0ff5863f8e35555ed" + } + Frame { + msec: 464 + hash: "170a1d5fe3422cf5223a78015a6a45fd" + } + Frame { + msec: 480 + hash: "64ecb03aa538e74d0b99c6dec7751401" + } + Frame { + msec: 496 + hash: "f3a7e74a1839f9366f9eeec4d2b80d1e" + } + Frame { + msec: 512 + hash: "0f347763f25350ebb62dda1536372b45" + } + Frame { + msec: 528 + hash: "0af81ee0d76ff8335a0e347dc086ca37" + } + Frame { + msec: 544 + hash: "061406edcbd2d4930ab89c3fcab63c7f" + } + Frame { + msec: 560 + hash: "31d65134f340d82dd40f2401bda3fb7e" + } + Frame { + msec: 576 + hash: "16c16c77c65b36d1e0954d5ead2642be" + } + Frame { + msec: 592 + hash: "61c16009b65a55bffb63e27727e1615e" + } + Frame { + msec: 608 + hash: "e1474c2cdd8768ca1ef45bf3bc5234ca" + } + Frame { + msec: 624 + hash: "89c159ef00d273ecfe61332e1bf7244d" + } + Frame { + msec: 640 + hash: "f4d0d3bca25e67908b38910f47b4757e" + } + Frame { + msec: 656 + hash: "0e0c40f8e11a7bd499c80562ac6f8a82" + } + Frame { + msec: 672 + hash: "4310a4c3037d845f088f21ad608f366a" + } + Frame { + msec: 688 + hash: "3d518cd0348d6202243364af1dd6ce89" + } + Frame { + msec: 704 + hash: "41987e6b4248d7944c0dbc6eb3862023" + } + Frame { + msec: 720 + hash: "3e81338d38723d56f2d6c428271f81c1" + } + Frame { + msec: 736 + hash: "74af3457583fbaf73f14556aeccc8403" + } + Frame { + msec: 752 + hash: "efc119983701908a904deb24108c59cb" + } + Frame { + msec: 768 + hash: "3a77785cfd7755f567619d8e04583f6a" + } + Frame { + msec: 784 + hash: "fd85d1dd931033973283a408b5e328a8" + } + Frame { + msec: 800 + hash: "5d3e85acabe5e5ff802eb7731676274f" + } + Frame { + msec: 816 + hash: "ae12f1f37a746e16b06e6b869c89fac1" + } + Frame { + msec: 832 + hash: "d2ed2cf3a12e41bac299399cc35abe6a" + } + Frame { + msec: 848 + hash: "84ef6dda8318b623832f58c46d762e89" + } + Frame { + msec: 864 + hash: "b699285764f5e8866a9996f4a0dccc69" + } + Frame { + msec: 880 + hash: "ddd8a006ef048c8d929144aa9fcd7c5a" + } + Frame { + msec: 896 + hash: "177666cb3bb784c83196886b2c6cf6b6" + } + Frame { + msec: 912 + hash: "9cd29b4b023a8b92573575fb3c3dda83" + } + Frame { + msec: 928 + hash: "adc670a9aa0326744cb23e4f5912e6c7" + } + Frame { + msec: 944 + hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" + } + Frame { + msec: 960 + image: "animated-smooth.0.png" + } + Frame { + msec: 976 + hash: "64b21b89576fdd0083f60a26f57b9c11" + } + Frame { + msec: 992 + hash: "0d407ee07692d0e5a480a60952807b3c" + } + Frame { + msec: 1008 + hash: "845170815a87565dc4229792032b3357" + } + Frame { + msec: 1024 + hash: "8b8120cfc14de03e048632fdea61be21" + } + Frame { + msec: 1040 + hash: "b0070117f1c24a4da87434725d4bb989" + } + Frame { + msec: 1056 + hash: "0239d697642ca1d1b1d1daa3ea048e1e" + } + Frame { + msec: 1072 + hash: "3df54504f8891306fa8f1e9e2075a5e2" + } + Frame { + msec: 1088 + hash: "853429387cc639496c7338244de7e1b7" + } + Frame { + msec: 1104 + hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" + } + Frame { + msec: 1120 + hash: "b375e723b2396b13b8f55cfc0c81c3c3" + } + Frame { + msec: 1136 + hash: "53f05993ba3b426949badd2e4cd66d84" + } + Frame { + msec: 1152 + hash: "23291a0239c69ea07db959e709b1ff5f" + } + Frame { + msec: 1168 + hash: "85ef33fcb3f91e4fc20391bf94455984" + } + Frame { + msec: 1184 + hash: "d6615fc345831a3cc5b9a7196284b632" + } + Frame { + msec: 1200 + hash: "07acba64dc608439a8a54fcb080379e8" + } + Frame { + msec: 1216 + hash: "2a1fcfb753ca237b518da26e67c928e5" + } + Frame { + msec: 1232 + hash: "1f964c6c9bebdc9945dc69a6095400f7" + } + Frame { + msec: 1248 + hash: "bd045f4532d78bba0ef1b64118fd9f24" + } + Frame { + msec: 1264 + hash: "2084ccc60ddd493399c128717816d33b" + } + Frame { + msec: 1280 + hash: "0640fcb0b24d3ba4ab8695f78271a438" + } + Frame { + msec: 1296 + hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" + } + Frame { + msec: 1312 + hash: "fce2648975106bc5c0ca9a4530f7f748" + } + Frame { + msec: 1328 + hash: "39cc17ee2e889f17dd07179fda99e431" + } + Frame { + msec: 1344 + hash: "39c46d85d20f7ef3eca1d09c7eb6a068" + } + Frame { + msec: 1360 + hash: "d65d50fbb920e683b041a1c72238225b" + } + Frame { + msec: 1376 + hash: "45d891d804609ebbe1d5ac3f826d0c17" + } + Frame { + msec: 1392 + hash: "05cbce0eaa80b4610a9067af8c40f819" + } + Frame { + msec: 1408 + hash: "00ab7798bcd77a99886dff0414f35382" + } + Frame { + msec: 1424 + hash: "5cc90d798786c270ddd2616512f4459f" + } + Frame { + msec: 1440 + hash: "e5df07ea21e8e415c3ec82560f2d0f34" + } + Frame { + msec: 1456 + hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" + } + Frame { + msec: 1472 + hash: "c61d2aa7f934fb5a9f9f7883e063b51c" + } + Frame { + msec: 1488 + hash: "29ddde3300d0520a4c01b5536d8b9e7a" + } + Frame { + msec: 1504 + hash: "2fede2f5d871654f3f8a6e9d890adeac" + } + Frame { + msec: 1520 + hash: "deed4c06c9b713834490832b88e7acaf" + } + Frame { + msec: 1536 + hash: "c2edb016cfdd47c192d1c48281ee76ed" + } + Frame { + msec: 1552 + hash: "a261be47ae89e6b53e6bc1c1197154ae" + } + Frame { + msec: 1568 + hash: "e860e97ebd73b7d1d5d5d90458b34bfe" + } + Frame { + msec: 1584 + hash: "a087b532ecb2f28e4ee60819228c2522" + } + Frame { + msec: 1600 + hash: "64df51b4c1bf744b2aae1c6d908c2cc3" + } + Frame { + msec: 1616 + hash: "880640372bf584955627f6835f24be13" + } + Frame { + msec: 1632 + hash: "d1110817827c318ceb0c112e8c2bfc1d" + } + Frame { + msec: 1648 + hash: "705d9c8de05c859a42769f73761c6a63" + } + Frame { + msec: 1664 + hash: "3bae40654ec551d69e7c8c72f631c7a5" + } + Frame { + msec: 1680 + hash: "774740a393f3e9b8f12b81cce8da8280" + } + Frame { + msec: 1696 + hash: "64cd225202ed6c91b02c368a9160a656" + } + Frame { + msec: 1712 + hash: "2b7eb8a9fe26b032be8b4b9c00995912" + } + Frame { + msec: 1728 + hash: "47e920e3884ccf2f0f49e78070af6929" + } + Frame { + msec: 1744 + hash: "fe899138116774df4c4441687e3019c5" + } + Frame { + msec: 1760 + hash: "5d9ee853f083d514fbe51d6953d8e000" + } + Frame { + msec: 1776 + hash: "5736362b42bc2d801e02edabb983663a" + } + Frame { + msec: 1792 + hash: "c3ea530de646612f9203c5800cad884b" + } + Frame { + msec: 1808 + hash: "48952ffa5e300778eafa768b9fe7df0c" + } + Frame { + msec: 1824 + hash: "fe04cae65aeec18697eca4f3f83a40e9" + } + Frame { + msec: 1840 + hash: "382d454f2366c1fb4ca472faa3bfa5e9" + } + Frame { + msec: 1856 + hash: "89022a8e2feb3dcb845de69aafc333ad" + } + Frame { + msec: 1872 + hash: "25506557c853a0020e98cf3992956989" + } + Frame { + msec: 1888 + hash: "9a64706c52c9e962816953e32950b8ba" + } + Frame { + msec: 1904 + hash: "3cbfded47413172ada64095e65c55e8a" + } + Frame { + msec: 1920 + image: "animated-smooth.1.png" + } + Frame { + msec: 1936 + hash: "c5e399e29b988148913e62ee208b3326" + } + Frame { + msec: 1952 + hash: "b980703c1d0018937e83a8ba8862469e" + } + Frame { + msec: 1968 + hash: "05312f9529c94d3331ace7d73c544284" + } + Frame { + msec: 1984 + hash: "a94de4e90a8f8eb4ec33fe902afd226c" + } + Frame { + msec: 2000 + hash: "ee297a2d68c9e58157d9bf189d353713" + } + Frame { + msec: 2016 + hash: "00f3c9b8b37cb104cf2a7701639bc61f" + } + Frame { + msec: 2032 + hash: "ee297a2d68c9e58157d9bf189d353713" + } + Frame { + msec: 2048 + hash: "a94de4e90a8f8eb4ec33fe902afd226c" + } + Frame { + msec: 2064 + hash: "05312f9529c94d3331ace7d73c544284" + } + Frame { + msec: 2080 + hash: "b980703c1d0018937e83a8ba8862469e" + } + Frame { + msec: 2096 + hash: "c5e399e29b988148913e62ee208b3326" + } + Frame { + msec: 2112 + hash: "3b7b83e97d17440b42e6ef4b962076d8" + } + Frame { + msec: 2128 + hash: "3cbfded47413172ada64095e65c55e8a" + } + Frame { + msec: 2144 + hash: "9a64706c52c9e962816953e32950b8ba" + } + Frame { + msec: 2160 + hash: "25506557c853a0020e98cf3992956989" + } + Frame { + msec: 2176 + hash: "89022a8e2feb3dcb845de69aafc333ad" + } + Frame { + msec: 2192 + hash: "382d454f2366c1fb4ca472faa3bfa5e9" + } + Frame { + msec: 2208 + hash: "fe04cae65aeec18697eca4f3f83a40e9" + } + Frame { + msec: 2224 + hash: "48952ffa5e300778eafa768b9fe7df0c" + } + Frame { + msec: 2240 + hash: "c3ea530de646612f9203c5800cad884b" + } + Frame { + msec: 2256 + hash: "5736362b42bc2d801e02edabb983663a" + } + Frame { + msec: 2272 + hash: "5d9ee853f083d514fbe51d6953d8e000" + } + Frame { + msec: 2288 + hash: "fe899138116774df4c4441687e3019c5" + } + Frame { + msec: 2304 + hash: "47e920e3884ccf2f0f49e78070af6929" + } + Frame { + msec: 2320 + hash: "2b7eb8a9fe26b032be8b4b9c00995912" + } + Frame { + msec: 2336 + hash: "64cd225202ed6c91b02c368a9160a656" + } + Frame { + msec: 2352 + hash: "774740a393f3e9b8f12b81cce8da8280" + } + Frame { + msec: 2368 + hash: "3bae40654ec551d69e7c8c72f631c7a5" + } + Frame { + msec: 2384 + hash: "705d9c8de05c859a42769f73761c6a63" + } + Frame { + msec: 2400 + hash: "d1110817827c318ceb0c112e8c2bfc1d" + } + Frame { + msec: 2416 + hash: "880640372bf584955627f6835f24be13" + } + Frame { + msec: 2432 + hash: "64df51b4c1bf744b2aae1c6d908c2cc3" + } + Frame { + msec: 2448 + hash: "a087b532ecb2f28e4ee60819228c2522" + } + Frame { + msec: 2464 + hash: "e860e97ebd73b7d1d5d5d90458b34bfe" + } + Frame { + msec: 2480 + hash: "a261be47ae89e6b53e6bc1c1197154ae" + } + Frame { + msec: 2496 + hash: "c2edb016cfdd47c192d1c48281ee76ed" + } + Frame { + msec: 2512 + hash: "deed4c06c9b713834490832b88e7acaf" + } + Frame { + msec: 2528 + hash: "2fede2f5d871654f3f8a6e9d890adeac" + } + Frame { + msec: 2544 + hash: "29ddde3300d0520a4c01b5536d8b9e7a" + } + Frame { + msec: 2560 + hash: "c61d2aa7f934fb5a9f9f7883e063b51c" + } + Frame { + msec: 2576 + hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" + } + Frame { + msec: 2592 + hash: "e5df07ea21e8e415c3ec82560f2d0f34" + } + Frame { + msec: 2608 + hash: "5cc90d798786c270ddd2616512f4459f" + } + Frame { + msec: 2624 + hash: "00ab7798bcd77a99886dff0414f35382" + } + Frame { + msec: 2640 + hash: "05cbce0eaa80b4610a9067af8c40f819" + } + Frame { + msec: 2656 + hash: "45d891d804609ebbe1d5ac3f826d0c17" + } + Frame { + msec: 2672 + hash: "d65d50fbb920e683b041a1c72238225b" + } + Frame { + msec: 2688 + hash: "39c46d85d20f7ef3eca1d09c7eb6a068" + } + Frame { + msec: 2704 + hash: "39cc17ee2e889f17dd07179fda99e431" + } + Frame { + msec: 2720 + hash: "fce2648975106bc5c0ca9a4530f7f748" + } + Frame { + msec: 2736 + hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" + } + Frame { + msec: 2752 + hash: "0640fcb0b24d3ba4ab8695f78271a438" + } + Frame { + msec: 2768 + hash: "2084ccc60ddd493399c128717816d33b" + } + Frame { + msec: 2784 + hash: "bd045f4532d78bba0ef1b64118fd9f24" + } + Frame { + msec: 2800 + hash: "1f964c6c9bebdc9945dc69a6095400f7" + } + Frame { + msec: 2816 + hash: "2a1fcfb753ca237b518da26e67c928e5" + } + Frame { + msec: 2832 + hash: "07acba64dc608439a8a54fcb080379e8" + } + Frame { + msec: 2848 + hash: "d6615fc345831a3cc5b9a7196284b632" + } + Frame { + msec: 2864 + hash: "85ef33fcb3f91e4fc20391bf94455984" + } + Frame { + msec: 2880 + image: "animated-smooth.2.png" + } + Frame { + msec: 2896 + hash: "53f05993ba3b426949badd2e4cd66d84" + } + Frame { + msec: 2912 + hash: "b375e723b2396b13b8f55cfc0c81c3c3" + } + Frame { + msec: 2928 + hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" + } + Frame { + msec: 2944 + hash: "853429387cc639496c7338244de7e1b7" + } + Frame { + msec: 2960 + hash: "3df54504f8891306fa8f1e9e2075a5e2" + } + Frame { + msec: 2976 + hash: "0239d697642ca1d1b1d1daa3ea048e1e" + } + Frame { + msec: 2992 + hash: "b0070117f1c24a4da87434725d4bb989" + } + Frame { + msec: 3008 + hash: "8b8120cfc14de03e048632fdea61be21" + } + Frame { + msec: 3024 + hash: "845170815a87565dc4229792032b3357" + } + Frame { + msec: 3040 + hash: "0d407ee07692d0e5a480a60952807b3c" + } + Frame { + msec: 3056 + hash: "64b21b89576fdd0083f60a26f57b9c11" + } + Frame { + msec: 3072 + hash: "d7e96278583f83ab636ed68fa130e4d2" + } + Frame { + msec: 3088 + hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" + } + Frame { + msec: 3104 + hash: "adc670a9aa0326744cb23e4f5912e6c7" + } + Frame { + msec: 3120 + hash: "9cd29b4b023a8b92573575fb3c3dda83" + } + Frame { + msec: 3136 + hash: "177666cb3bb784c83196886b2c6cf6b6" + } + Frame { + msec: 3152 + hash: "ddd8a006ef048c8d929144aa9fcd7c5a" + } + Frame { + msec: 3168 + hash: "b699285764f5e8866a9996f4a0dccc69" + } + Frame { + msec: 3184 + hash: "84ef6dda8318b623832f58c46d762e89" + } + Frame { + msec: 3200 + hash: "d2ed2cf3a12e41bac299399cc35abe6a" + } + Frame { + msec: 3216 + hash: "ae12f1f37a746e16b06e6b869c89fac1" + } + Frame { + msec: 3232 + hash: "5d3e85acabe5e5ff802eb7731676274f" + } + Frame { + msec: 3248 + hash: "fd85d1dd931033973283a408b5e328a8" + } + Frame { + msec: 3264 + hash: "3a77785cfd7755f567619d8e04583f6a" + } + Frame { + msec: 3280 + hash: "efc119983701908a904deb24108c59cb" + } + Frame { + msec: 3296 + hash: "74af3457583fbaf73f14556aeccc8403" + } + Frame { + msec: 3312 + hash: "3e81338d38723d56f2d6c428271f81c1" + } + Frame { + msec: 3328 + hash: "41987e6b4248d7944c0dbc6eb3862023" + } + Frame { + msec: 3344 + hash: "3d518cd0348d6202243364af1dd6ce89" + } + Frame { + msec: 3360 + hash: "4310a4c3037d845f088f21ad608f366a" + } + Frame { + msec: 3376 + hash: "0e0c40f8e11a7bd499c80562ac6f8a82" + } + Frame { + msec: 3392 + hash: "f4d0d3bca25e67908b38910f47b4757e" + } + Frame { + msec: 3408 + hash: "89c159ef00d273ecfe61332e1bf7244d" + } + Frame { + msec: 3424 + hash: "e1474c2cdd8768ca1ef45bf3bc5234ca" + } + Frame { + msec: 3440 + hash: "61c16009b65a55bffb63e27727e1615e" + } + Frame { + msec: 3456 + hash: "16c16c77c65b36d1e0954d5ead2642be" + } + Frame { + msec: 3472 + hash: "31d65134f340d82dd40f2401bda3fb7e" + } + Frame { + msec: 3488 + hash: "061406edcbd2d4930ab89c3fcab63c7f" + } + Frame { + msec: 3504 + hash: "0af81ee0d76ff8335a0e347dc086ca37" + } + Frame { + msec: 3520 + hash: "0f347763f25350ebb62dda1536372b45" + } + Frame { + msec: 3536 + hash: "f3a7e74a1839f9366f9eeec4d2b80d1e" + } + Frame { + msec: 3552 + hash: "64ecb03aa538e74d0b99c6dec7751401" + } + Frame { + msec: 3568 + hash: "170a1d5fe3422cf5223a78015a6a45fd" + } + Frame { + msec: 3584 + hash: "10307beea6d99ab0ff5863f8e35555ed" + } + Frame { + msec: 3600 + hash: "456be9c208d690c479ba12bf6325dde0" + } + Frame { + msec: 3616 + hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9" + } + Frame { + msec: 3632 + hash: "277ef98ea859fb7685fe6cd44a538a7d" + } + Frame { + msec: 3648 + hash: "74c837b29f7f05b615123f0e608b523f" + } + Frame { + msec: 3664 + hash: "d671a3b971468e1d8aa30ab655e020a9" + } + Frame { + msec: 3680 + hash: "df624d70cae1bcefda8d69c0ff055d83" + } + Frame { + msec: 3696 + hash: "3f9a09ae19be34348bb2552915360cf7" + } + Frame { + msec: 3712 + hash: "83c029e328e80af83158c37089cf0ece" + } + Frame { + msec: 3728 + hash: "323af110731b7af0c30f8862ff59b833" + } + Frame { + msec: 3744 + hash: "63d3c47f7dec1236440a05e0a8380900" + } + Frame { + msec: 3760 + hash: "48e62dd171f5da82b5aa26c765e4042c" + } + Frame { + msec: 3776 + hash: "5a8932d13d624932a65694fd19ec05cd" + } + Frame { + msec: 3792 + hash: "f22a47b846cfee96ebdf39bbce2e6d51" + } + Frame { + msec: 3808 + hash: "a716c8d2c94433dee719f92f0822c8ec" + } + Frame { + msec: 3824 + hash: "7b66e21652a7d0982226e281a48411a9" + } + Frame { + msec: 3840 + image: "animated-smooth.3.png" + } + Frame { + msec: 3856 + hash: "59470d71fa4426d0283e86371f2bfc2a" + } + Frame { + msec: 3872 + hash: "ed9f2ca797894612600bc4b7fbaecb84" + } + Frame { + msec: 3888 + hash: "de471829f8ad3b43bf1b4df9d1d65a4d" + } + Frame { + msec: 3904 + hash: "cd2180be80101c2aa4350b51b7a6f502" + } + Frame { + msec: 3920 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3936 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3952 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3968 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 3984 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4000 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4016 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4032 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4048 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4064 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4080 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4096 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4112 + hash: "aec13bcab337e55832b0a02fb5c6b526" + } + Frame { + msec: 4128 + hash: "cd2180be80101c2aa4350b51b7a6f502" + } + Frame { + msec: 4144 + hash: "de471829f8ad3b43bf1b4df9d1d65a4d" + } + Frame { + msec: 4160 + hash: "ed9f2ca797894612600bc4b7fbaecb84" + } + Frame { + msec: 4176 + hash: "59470d71fa4426d0283e86371f2bfc2a" + } + Frame { + msec: 4192 + hash: "9a2f92efb51bcc6293d6a8e82d5314ea" + } + Frame { + msec: 4208 + hash: "7b66e21652a7d0982226e281a48411a9" + } + Frame { + msec: 4224 + hash: "a716c8d2c94433dee719f92f0822c8ec" + } + Frame { + msec: 4240 + hash: "f22a47b846cfee96ebdf39bbce2e6d51" + } + Frame { + msec: 4256 + hash: "5a8932d13d624932a65694fd19ec05cd" + } + Frame { + msec: 4272 + hash: "48e62dd171f5da82b5aa26c765e4042c" + } + Frame { + msec: 4288 + hash: "63d3c47f7dec1236440a05e0a8380900" + } + Frame { + msec: 4304 + hash: "323af110731b7af0c30f8862ff59b833" + } + Frame { + msec: 4320 + hash: "83c029e328e80af83158c37089cf0ece" + } + Frame { + msec: 4336 + hash: "3f9a09ae19be34348bb2552915360cf7" + } + Frame { + msec: 4352 + hash: "df624d70cae1bcefda8d69c0ff055d83" + } + Frame { + msec: 4368 + hash: "d671a3b971468e1d8aa30ab655e020a9" + } + Frame { + msec: 4384 + hash: "74c837b29f7f05b615123f0e608b523f" + } + Frame { + msec: 4400 + hash: "277ef98ea859fb7685fe6cd44a538a7d" + } + Frame { + msec: 4416 + hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9" + } + Frame { + msec: 4432 + hash: "456be9c208d690c479ba12bf6325dde0" + } + Frame { + msec: 4448 + hash: "10307beea6d99ab0ff5863f8e35555ed" + } + Frame { + msec: 4464 + hash: "170a1d5fe3422cf5223a78015a6a45fd" + } + Frame { + msec: 4480 + hash: "64ecb03aa538e74d0b99c6dec7751401" + } + Frame { + msec: 4496 + hash: "f3a7e74a1839f9366f9eeec4d2b80d1e" + } + Frame { + msec: 4512 + hash: "0f347763f25350ebb62dda1536372b45" + } + Frame { + msec: 4528 + hash: "0af81ee0d76ff8335a0e347dc086ca37" + } + Frame { + msec: 4544 + hash: "061406edcbd2d4930ab89c3fcab63c7f" + } + Frame { + msec: 4560 + hash: "31d65134f340d82dd40f2401bda3fb7e" + } + Frame { + msec: 4576 + hash: "16c16c77c65b36d1e0954d5ead2642be" + } + Frame { + msec: 4592 + hash: "61c16009b65a55bffb63e27727e1615e" + } + Frame { + msec: 4608 + hash: "e1474c2cdd8768ca1ef45bf3bc5234ca" + } + Frame { + msec: 4624 + hash: "89c159ef00d273ecfe61332e1bf7244d" + } + Frame { + msec: 4640 + hash: "f4d0d3bca25e67908b38910f47b4757e" + } + Frame { + msec: 4656 + hash: "0e0c40f8e11a7bd499c80562ac6f8a82" + } + Frame { + msec: 4672 + hash: "4310a4c3037d845f088f21ad608f366a" + } + Frame { + msec: 4688 + hash: "3d518cd0348d6202243364af1dd6ce89" + } + Frame { + msec: 4704 + hash: "41987e6b4248d7944c0dbc6eb3862023" + } + Frame { + msec: 4720 + hash: "3e81338d38723d56f2d6c428271f81c1" + } + Frame { + msec: 4736 + hash: "74af3457583fbaf73f14556aeccc8403" + } + Frame { + msec: 4752 + hash: "efc119983701908a904deb24108c59cb" + } + Frame { + msec: 4768 + hash: "3a77785cfd7755f567619d8e04583f6a" + } + Frame { + msec: 4784 + hash: "fd85d1dd931033973283a408b5e328a8" + } + Frame { + msec: 4800 + image: "animated-smooth.4.png" + } + Frame { + msec: 4816 + hash: "ae12f1f37a746e16b06e6b869c89fac1" + } + Frame { + msec: 4832 + hash: "d2ed2cf3a12e41bac299399cc35abe6a" + } + Frame { + msec: 4848 + hash: "84ef6dda8318b623832f58c46d762e89" + } + Frame { + msec: 4864 + hash: "b699285764f5e8866a9996f4a0dccc69" + } + Frame { + msec: 4880 + hash: "ddd8a006ef048c8d929144aa9fcd7c5a" + } + Frame { + msec: 4896 + hash: "177666cb3bb784c83196886b2c6cf6b6" + } + Frame { + msec: 4912 + hash: "9cd29b4b023a8b92573575fb3c3dda83" + } + Frame { + msec: 4928 + hash: "adc670a9aa0326744cb23e4f5912e6c7" + } + Frame { + msec: 4944 + hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" + } + Frame { + msec: 4960 + hash: "d7e96278583f83ab636ed68fa130e4d2" + } + Frame { + msec: 4976 + hash: "64b21b89576fdd0083f60a26f57b9c11" + } + Frame { + msec: 4992 + hash: "0d407ee07692d0e5a480a60952807b3c" + } + Frame { + msec: 5008 + hash: "845170815a87565dc4229792032b3357" + } + Frame { + msec: 5024 + hash: "8b8120cfc14de03e048632fdea61be21" + } + Frame { + msec: 5040 + hash: "b0070117f1c24a4da87434725d4bb989" + } + Frame { + msec: 5056 + hash: "0239d697642ca1d1b1d1daa3ea048e1e" + } + Frame { + msec: 5072 + hash: "3df54504f8891306fa8f1e9e2075a5e2" + } + Frame { + msec: 5088 + hash: "853429387cc639496c7338244de7e1b7" + } + Frame { + msec: 5104 + hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" + } + Frame { + msec: 5120 + hash: "b375e723b2396b13b8f55cfc0c81c3c3" + } + Frame { + msec: 5136 + hash: "53f05993ba3b426949badd2e4cd66d84" + } + Frame { + msec: 5152 + hash: "23291a0239c69ea07db959e709b1ff5f" + } + Frame { + msec: 5168 + hash: "85ef33fcb3f91e4fc20391bf94455984" + } + Frame { + msec: 5184 + hash: "d6615fc345831a3cc5b9a7196284b632" + } + Frame { + msec: 5200 + hash: "07acba64dc608439a8a54fcb080379e8" + } + Frame { + msec: 5216 + hash: "2a1fcfb753ca237b518da26e67c928e5" + } + Frame { + msec: 5232 + hash: "1f964c6c9bebdc9945dc69a6095400f7" + } + Frame { + msec: 5248 + hash: "bd045f4532d78bba0ef1b64118fd9f24" + } + Frame { + msec: 5264 + hash: "2084ccc60ddd493399c128717816d33b" + } + Frame { + msec: 5280 + hash: "0640fcb0b24d3ba4ab8695f78271a438" + } + Frame { + msec: 5296 + hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" + } + Frame { + msec: 5312 + hash: "fce2648975106bc5c0ca9a4530f7f748" + } + Frame { + msec: 5328 + hash: "39cc17ee2e889f17dd07179fda99e431" + } + Frame { + msec: 5344 + hash: "39c46d85d20f7ef3eca1d09c7eb6a068" + } + Frame { + msec: 5360 + hash: "d65d50fbb920e683b041a1c72238225b" + } + Frame { + msec: 5376 + hash: "45d891d804609ebbe1d5ac3f826d0c17" + } + Frame { + msec: 5392 + hash: "05cbce0eaa80b4610a9067af8c40f819" + } + Frame { + msec: 5408 + hash: "00ab7798bcd77a99886dff0414f35382" + } + Frame { + msec: 5424 + hash: "5cc90d798786c270ddd2616512f4459f" + } + Frame { + msec: 5440 + hash: "e5df07ea21e8e415c3ec82560f2d0f34" + } + Frame { + msec: 5456 + hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" + } + Frame { + msec: 5472 + hash: "c61d2aa7f934fb5a9f9f7883e063b51c" + } + Frame { + msec: 5488 + hash: "29ddde3300d0520a4c01b5536d8b9e7a" + } + Frame { + msec: 5504 + hash: "2fede2f5d871654f3f8a6e9d890adeac" + } + Frame { + msec: 5520 + hash: "deed4c06c9b713834490832b88e7acaf" + } + Frame { + msec: 5536 + hash: "c2edb016cfdd47c192d1c48281ee76ed" + } + Frame { + msec: 5552 + hash: "a261be47ae89e6b53e6bc1c1197154ae" + } + Frame { + msec: 5568 + hash: "e860e97ebd73b7d1d5d5d90458b34bfe" + } + Frame { + msec: 5584 + hash: "a087b532ecb2f28e4ee60819228c2522" + } + Frame { + msec: 5600 + hash: "64df51b4c1bf744b2aae1c6d908c2cc3" + } + Frame { + msec: 5616 + hash: "880640372bf584955627f6835f24be13" + } + Frame { + msec: 5632 + hash: "d1110817827c318ceb0c112e8c2bfc1d" + } + Frame { + msec: 5648 + hash: "705d9c8de05c859a42769f73761c6a63" + } + Frame { + msec: 5664 + hash: "3bae40654ec551d69e7c8c72f631c7a5" + } + Frame { + msec: 5680 + hash: "774740a393f3e9b8f12b81cce8da8280" + } + Frame { + msec: 5696 + hash: "64cd225202ed6c91b02c368a9160a656" + } + Frame { + msec: 5712 + hash: "2b7eb8a9fe26b032be8b4b9c00995912" + } + Frame { + msec: 5728 + hash: "47e920e3884ccf2f0f49e78070af6929" + } + Frame { + msec: 5744 + hash: "fe899138116774df4c4441687e3019c5" + } + Frame { + msec: 5760 + image: "animated-smooth.5.png" + } + Frame { + msec: 5776 + hash: "5736362b42bc2d801e02edabb983663a" + } + Frame { + msec: 5792 + hash: "c3ea530de646612f9203c5800cad884b" + } + Frame { + msec: 5808 + hash: "48952ffa5e300778eafa768b9fe7df0c" + } + Frame { + msec: 5824 + hash: "fe04cae65aeec18697eca4f3f83a40e9" + } + Frame { + msec: 5840 + hash: "382d454f2366c1fb4ca472faa3bfa5e9" + } + Frame { + msec: 5856 + hash: "89022a8e2feb3dcb845de69aafc333ad" + } + Frame { + msec: 5872 + hash: "25506557c853a0020e98cf3992956989" + } + Frame { + msec: 5888 + hash: "9a64706c52c9e962816953e32950b8ba" + } + Frame { + msec: 5904 + hash: "3cbfded47413172ada64095e65c55e8a" + } + Frame { + msec: 5920 + hash: "3b7b83e97d17440b42e6ef4b962076d8" + } + Frame { + msec: 5936 + hash: "c5e399e29b988148913e62ee208b3326" + } + Frame { + msec: 5952 + hash: "b980703c1d0018937e83a8ba8862469e" + } + Frame { + msec: 5968 + hash: "05312f9529c94d3331ace7d73c544284" + } + Frame { + msec: 5984 + hash: "a94de4e90a8f8eb4ec33fe902afd226c" + } + Frame { + msec: 6000 + hash: "ee297a2d68c9e58157d9bf189d353713" + } + Frame { + msec: 6016 + hash: "00f3c9b8b37cb104cf2a7701639bc61f" + } + Frame { + msec: 6032 + hash: "ee297a2d68c9e58157d9bf189d353713" + } + Frame { + msec: 6048 + hash: "a94de4e90a8f8eb4ec33fe902afd226c" + } + Frame { + msec: 6064 + hash: "05312f9529c94d3331ace7d73c544284" + } + Frame { + msec: 6080 + hash: "b980703c1d0018937e83a8ba8862469e" + } + Frame { + msec: 6096 + hash: "c5e399e29b988148913e62ee208b3326" + } + Frame { + msec: 6112 + hash: "3b7b83e97d17440b42e6ef4b962076d8" + } + Frame { + msec: 6128 + hash: "3cbfded47413172ada64095e65c55e8a" + } + Frame { + msec: 6144 + hash: "9a64706c52c9e962816953e32950b8ba" + } + Frame { + msec: 6160 + hash: "25506557c853a0020e98cf3992956989" + } + Frame { + msec: 6176 + hash: "89022a8e2feb3dcb845de69aafc333ad" + } + Frame { + msec: 6192 + hash: "382d454f2366c1fb4ca472faa3bfa5e9" + } + Frame { + msec: 6208 + hash: "fe04cae65aeec18697eca4f3f83a40e9" + } + Frame { + msec: 6224 + hash: "48952ffa5e300778eafa768b9fe7df0c" + } + Frame { + msec: 6240 + hash: "c3ea530de646612f9203c5800cad884b" + } + Frame { + msec: 6256 + hash: "5736362b42bc2d801e02edabb983663a" + } + Frame { + msec: 6272 + hash: "5d9ee853f083d514fbe51d6953d8e000" + } + Frame { + msec: 6288 + hash: "fe899138116774df4c4441687e3019c5" + } + Frame { + msec: 6304 + hash: "47e920e3884ccf2f0f49e78070af6929" + } + Frame { + msec: 6320 + hash: "2b7eb8a9fe26b032be8b4b9c00995912" + } + Frame { + msec: 6336 + hash: "64cd225202ed6c91b02c368a9160a656" + } + Frame { + msec: 6352 + hash: "774740a393f3e9b8f12b81cce8da8280" + } + Frame { + msec: 6368 + hash: "3bae40654ec551d69e7c8c72f631c7a5" + } + Frame { + msec: 6384 + hash: "705d9c8de05c859a42769f73761c6a63" + } + Frame { + msec: 6400 + hash: "d1110817827c318ceb0c112e8c2bfc1d" + } + Frame { + msec: 6416 + hash: "880640372bf584955627f6835f24be13" + } + Frame { + msec: 6432 + hash: "64df51b4c1bf744b2aae1c6d908c2cc3" + } + Frame { + msec: 6448 + hash: "a087b532ecb2f28e4ee60819228c2522" + } + Frame { + msec: 6464 + hash: "e860e97ebd73b7d1d5d5d90458b34bfe" + } + Frame { + msec: 6480 + hash: "a261be47ae89e6b53e6bc1c1197154ae" + } + Frame { + msec: 6496 + hash: "c2edb016cfdd47c192d1c48281ee76ed" + } + Frame { + msec: 6512 + hash: "deed4c06c9b713834490832b88e7acaf" + } + Frame { + msec: 6528 + hash: "2fede2f5d871654f3f8a6e9d890adeac" + } + Frame { + msec: 6544 + hash: "29ddde3300d0520a4c01b5536d8b9e7a" + } + Frame { + msec: 6560 + hash: "c61d2aa7f934fb5a9f9f7883e063b51c" + } + Frame { + msec: 6576 + hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" + } + Frame { + msec: 6592 + hash: "e5df07ea21e8e415c3ec82560f2d0f34" + } + Frame { + msec: 6608 + hash: "5cc90d798786c270ddd2616512f4459f" + } + Frame { + msec: 6624 + hash: "00ab7798bcd77a99886dff0414f35382" + } + Frame { + msec: 6640 + hash: "05cbce0eaa80b4610a9067af8c40f819" + } + Frame { + msec: 6656 + hash: "45d891d804609ebbe1d5ac3f826d0c17" + } + Frame { + msec: 6672 + hash: "d65d50fbb920e683b041a1c72238225b" + } + Frame { + msec: 6688 + hash: "39c46d85d20f7ef3eca1d09c7eb6a068" + } + Frame { + msec: 6704 + hash: "39cc17ee2e889f17dd07179fda99e431" + } + Frame { + msec: 6720 + image: "animated-smooth.6.png" + } + Frame { + msec: 6736 + hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" + } + Frame { + msec: 6752 + hash: "0640fcb0b24d3ba4ab8695f78271a438" + } + Frame { + msec: 6768 + hash: "2084ccc60ddd493399c128717816d33b" + } + Frame { + msec: 6784 + hash: "bd045f4532d78bba0ef1b64118fd9f24" + } + Frame { + msec: 6800 + hash: "1f964c6c9bebdc9945dc69a6095400f7" + } + Frame { + msec: 6816 + hash: "2a1fcfb753ca237b518da26e67c928e5" + } + Frame { + msec: 6832 + hash: "07acba64dc608439a8a54fcb080379e8" + } + Frame { + msec: 6848 + hash: "d6615fc345831a3cc5b9a7196284b632" + } + Frame { + msec: 6864 + hash: "85ef33fcb3f91e4fc20391bf94455984" + } + Frame { + msec: 6880 + hash: "23291a0239c69ea07db959e709b1ff5f" + } + Frame { + msec: 6896 + hash: "53f05993ba3b426949badd2e4cd66d84" + } + Frame { + msec: 6912 + hash: "b375e723b2396b13b8f55cfc0c81c3c3" + } + Frame { + msec: 6928 + hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" + } + Frame { + msec: 6944 + hash: "853429387cc639496c7338244de7e1b7" + } + Frame { + msec: 6960 + hash: "3df54504f8891306fa8f1e9e2075a5e2" + } + Frame { + msec: 6976 + hash: "0239d697642ca1d1b1d1daa3ea048e1e" + } + Frame { + msec: 6992 + hash: "b0070117f1c24a4da87434725d4bb989" + } + Frame { + msec: 7008 + hash: "8b8120cfc14de03e048632fdea61be21" + } + Frame { + msec: 7024 + hash: "845170815a87565dc4229792032b3357" + } + Frame { + msec: 7040 + hash: "0d407ee07692d0e5a480a60952807b3c" + } + Frame { + msec: 7056 + hash: "64b21b89576fdd0083f60a26f57b9c11" + } + Frame { + msec: 7072 + hash: "d7e96278583f83ab636ed68fa130e4d2" + } + Frame { + msec: 7088 + hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7104 + hash: "adc670a9aa0326744cb23e4f5912e6c7" + } + Frame { + msec: 7120 + hash: "9cd29b4b023a8b92573575fb3c3dda83" + } + Frame { + msec: 7136 + hash: "177666cb3bb784c83196886b2c6cf6b6" + } + Frame { + msec: 7152 + hash: "ddd8a006ef048c8d929144aa9fcd7c5a" + } + Frame { + msec: 7168 + hash: "b699285764f5e8866a9996f4a0dccc69" + } + Frame { + msec: 7184 + hash: "84ef6dda8318b623832f58c46d762e89" + } + Frame { + msec: 7200 + hash: "d2ed2cf3a12e41bac299399cc35abe6a" + } + Frame { + msec: 7216 + hash: "ae12f1f37a746e16b06e6b869c89fac1" + } + Frame { + msec: 7232 + hash: "5d3e85acabe5e5ff802eb7731676274f" + } +} diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.png Binary files differindex 99228f9..99228f9 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.png Binary files differindex a2dcd00..a2dcd00 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.2.png Binary files differindex 8a80020..8a80020 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.2.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.3.png Binary files differindex 02b57ef..02b57ef 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.3.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.4.png Binary files differindex df0f6cc..df0f6cc 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.4.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.5.png Binary files differindex 0add64d..0add64d 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.5.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.6.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.6.png Binary files differindex 0886207..0886207 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.6.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.7.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.7.png Binary files differindex bc1a7b0..bc1a7b0 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.7.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.7.png diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.qml index 29e591a..29e591a 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.qml diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.0.png Binary files differindex 80cbd26..80cbd26 100644 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.qml new file mode 100644 index 0000000..1403d35 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.qml @@ -0,0 +1,11 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "258a7e75b491e4f51a91739c776803b3" + } +} diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.0.png Binary files differindex 016902b..016902b 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.0.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.1.png Binary files differindex a654936..a654936 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.1.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.2.png Binary files differindex cfd5517..cfd5517 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.2.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.3.png Binary files differindex 016902b..016902b 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.3.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml index 46086f9..46086f9 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.0.png Binary files differindex 18fef53..18fef53 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.0.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.1.png Binary files differindex 18fef53..18fef53 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.1.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.10.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.10.png Binary files differindex b352c68..b352c68 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.10.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.10.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.11.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.11.png Binary files differindex ce7ee68..ce7ee68 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.11.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.11.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.12.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.12.png Binary files differindex d8cdacf..d8cdacf 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.12.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.12.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.13.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.13.png Binary files differindex 0c2fa7b..0c2fa7b 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.13.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.13.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.14.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.14.png Binary files differindex e9b3028..e9b3028 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.14.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.14.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.15.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.15.png Binary files differindex 2186a8b..2186a8b 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.15.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.15.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.16.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.16.png Binary files differindex b4590af..b4590af 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.16.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.16.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.17.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.17.png Binary files differindex fe29f19..fe29f19 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.17.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.17.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.18.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.18.png Binary files differindex fe29f19..fe29f19 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.18.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.18.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.19.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.19.png Binary files differindex 4f8587f..4f8587f 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.19.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.19.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.2.png Binary files differindex 0a7cc03..0a7cc03 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.2.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.20.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.20.png Binary files differindex 4f8587f..4f8587f 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.20.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.20.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.21.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.21.png Binary files differindex c0b0bdf..c0b0bdf 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.21.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.21.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.22.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.22.png Binary files differindex 4168c3b..4168c3b 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.22.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.22.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.23.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.23.png Binary files differindex 18fef53..18fef53 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.23.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.23.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.24.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.24.png index e69de29..e69de29 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.24.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.24.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.3.png Binary files differindex fc6669d..fc6669d 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.3.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.4.png Binary files differindex c0b0bdf..c0b0bdf 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.4.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.5.png Binary files differindex 2ffa96e..2ffa96e 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.5.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.6.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.6.png Binary files differindex f550b89..f550b89 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.6.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.7.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.7.png Binary files differindex f550b89..f550b89 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.7.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.7.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.8.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.8.png Binary files differindex f550b89..f550b89 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.8.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.8.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.9.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.9.png Binary files differindex f550b89..f550b89 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.9.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.9.png diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml index db70298..db70298 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/flickable-horizontal.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-horizontal.qml index 50ba9ad..50ba9ad 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/flickable-horizontal.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-horizontal.qml diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/flickable-vertical.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-vertical.qml index ebb963d..ebb963d 100644 --- a/tests/auto/declarative/visual/qdeclarativeflickable/flickable-vertical.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-vertical.qml diff --git a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.0.png Binary files differindex 53a8b42..53a8b42 100644 --- a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.0.png diff --git a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.1.png Binary files differindex b7efe8c..b7efe8c 100644 --- a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.1.png diff --git a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.2.png Binary files differindex aa6d147..aa6d147 100644 --- a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.2.png diff --git a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.3.png Binary files differindex 9d39713..9d39713 100644 --- a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.3.png diff --git a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.4.png Binary files differindex 98e8817..98e8817 100644 --- a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.4.png diff --git a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.5.png Binary files differindex a3f9d8f..a3f9d8f 100644 --- a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.5.png diff --git a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.qml index 520d9a2..520d9a2 100644 --- a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.qml diff --git a/tests/auto/declarative/visual/qdeclarativeflipable/test-flipable.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/test-flipable.qml index a27aa6e..a27aa6e 100644 --- a/tests/auto/declarative/visual/qdeclarativeflipable/test-flipable.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/test-flipable.qml diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.0.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.0.png Binary files differindex 6c82777..6c82777 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.0.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.1.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.png Binary files differindex 07b1f7c..07b1f7c 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.2.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.png Binary files differindex f2f08c0..f2f08c0 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.3.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.png Binary files differindex 08649f9..08649f9 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.4.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.png Binary files differindex f9c2f17..f9c2f17 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.5.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.png Binary files differindex 52ec0bd..52ec0bd 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.6.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.png Binary files differindex 3fe25be..3fe25be 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.7.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.png Binary files differindex 4cc12a6..4cc12a6 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.7.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.8.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.png Binary files differindex 2267f23..2267f23 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.8.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.9.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.png Binary files differindex 6c82777..6c82777 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.9.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.qml b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.qml index c7ac52d..c7ac52d 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.qml diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.0.png Binary files differindex 3021d58..3021d58 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.0.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.1.png Binary files differindex baeb1a6..baeb1a6 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.1.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.10.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.10.png Binary files differindex b0486e5..b0486e5 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.10.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.10.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.2.png Binary files differindex 2d0c731..2d0c731 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.2.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.3.png Binary files differindex af9ed05..af9ed05 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.3.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.4.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.4.png Binary files differindex 0b0945d..0b0945d 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.4.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.5.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.5.png Binary files differindex 618ae0c..618ae0c 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.5.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.6.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.6.png Binary files differindex fc31262..fc31262 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.6.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.7.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.7.png Binary files differindex 22291ac..22291ac 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.7.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.7.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.8.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.8.png Binary files differindex 3021d58..3021d58 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.8.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.8.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.9.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.9.png Binary files differindex 2f2f5b9..2f2f5b9 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.9.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.9.png diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.qml b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.qml index fb5f1fb..fb5f1fb 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.qml diff --git a/tests/auto/declarative/visual/qdeclarativegridview/gridview.qml b/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview.qml index f8782a5..f8782a5 100644 --- a/tests/auto/declarative/visual/qdeclarativegridview/gridview.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview.qml diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml b/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml new file mode 100644 index 0000000..d8512eb --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml @@ -0,0 +1,61 @@ +import Qt 4.6 + +Rectangle { + width: 300; height: 400; color: "black" + + ListModel { + id: appModel + ListElement { lColor: "red" } + ListElement { lColor: "yellow" } + ListElement { lColor: "green" } + ListElement { lColor: "blue" } + ListElement { lColor: "purple" } + ListElement { lColor: "orange" } + ListElement { lColor: "pink" } + ListElement { lColor: "brown" } + ListElement { lColor: "gray" } + ListElement { lColor: "red" } + ListElement { lColor: "yellow" } + ListElement { lColor: "green" } + ListElement { lColor: "blue" } + ListElement { lColor: "purple" } + ListElement { lColor: "orange" } + ListElement { lColor: "pink" } + ListElement { lColor: "brown" } + ListElement { lColor: "gray" } + ListElement { lColor: "red" } + ListElement { lColor: "yellow" } + ListElement { lColor: "green" } + } + + Component { + id: appDelegate + Item { + width: 100; height: 100 + Rectangle { + color: lColor; x: 4; y: 4 + width: 92; height: 92 + } + } + } + + GridView { + id: gridView; anchors.fill: parent + cellWidth: 100; cellHeight: 100; cacheBuffer: 200 + model: appModel; delegate: appDelegate; focus: true + keyNavigationWraps: true + + flickableData: [ + Rectangle { + color: "transparent"; border.color: "white"; border.width: 8; z: 3000 + height: 100; width: 100 + x: gridView.currentItem.x + y: gridView.currentItem.y + + Behavior on x { SmoothedAnimation { velocity: 500 } } + Behavior on y { SmoothedAnimation { velocity: 500 } } + } + ] + } + +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.0.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.0.png Binary files differnew file mode 100644 index 0000000..5b7b426 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.1.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.1.png Binary files differnew file mode 100644 index 0000000..7c27310 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.2.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.2.png Binary files differnew file mode 100644 index 0000000..cbfdb23 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.3.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.3.png Binary files differnew file mode 100644 index 0000000..5b7b426 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.4.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.4.png Binary files differnew file mode 100644 index 0000000..5af705e --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.5.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.5.png Binary files differnew file mode 100644 index 0000000..af4395e --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.5.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.6.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.6.png Binary files differnew file mode 100644 index 0000000..cd12bc9 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.6.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.7.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.7.png Binary files differnew file mode 100644 index 0000000..471c86b --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.7.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.8.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.8.png Binary files differindex 653905e..653905e 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.8.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.8.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.qml new file mode 100644 index 0000000..f3071e4 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.qml @@ -0,0 +1,5207 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 32 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 48 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 64 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 80 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 96 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 112 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 128 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 144 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 160 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 176 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 192 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 208 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 224 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 240 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 256 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 272 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 288 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 304 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 320 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 336 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 352 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 368 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 384 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 400 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 416 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 432 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 448 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 464 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 480 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 496 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 512 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 528 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 544 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 560 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 576 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 592 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 608 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 624 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 640 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 656 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 672 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 688 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 704 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 720 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 736 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 752 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 768 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 784 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 800 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 816 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 832 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 848 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 864 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 880 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 896 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 912 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 928 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 944 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 960 + image: "drag.0.png" + } + Frame { + msec: 976 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 992 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1008 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1024 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1040 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1056 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1072 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1088 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1104 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1120 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1136 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1152 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1168 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1184 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1200 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1216 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1232 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1248 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1264 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1280 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1296 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1312 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1328 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1344 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1360 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1376 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1392 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1408 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1424 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1440 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1456 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1472 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1488 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1504 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1520 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1536 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1552 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1568 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1584 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1600 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1616 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1632 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1648 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1664 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1680 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1696 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1712 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1728 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1744 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1760 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1776 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1792 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 16; y: 54 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1808 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 1824 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 16; y: 55 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 17; y: 55 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1840 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 17; y: 55 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1856 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 18; y: 55 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1872 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 19; y: 54 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1888 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 22; y: 49 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 29; y: 42 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1904 + hash: "a6c6df34bb552249393ba208ad327691" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 37; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1920 + image: "drag.1.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 27 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1936 + hash: "978543d8f9688605625f40b960d79c28" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 59; y: 21 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 73; y: 15 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1952 + hash: "6170ab3a7e51278ac4462b89fe7781b4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 87; y: 9 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1968 + hash: "32866f0aa5b13b3ab68661f49336439e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 100; y: 5 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1984 + hash: "26dc17c16eed46d37932cfe48d182b62" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 111; y: 1 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 121; y: -3 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2000 + hash: "ba70936fb44396fac184cc7ba0e94a90" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 130; y: -6 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2016 + hash: "bae13291d4f031c34d80428d83367ede" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 140; y: -8 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2032 + hash: "0a2fbfdc27bb6662553f637f1c325475" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 151; y: -9 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 160; y: -9 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2048 + hash: "cdab85736dfcc4424d42e0e96094eded" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 170; y: -9 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2064 + hash: "76d51ce9ad69560d983d8d86d50f7bd0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 174; y: -9 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2080 + hash: "b5ada9e80f7f894aa141d5e3cfa5d69e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 176; y: -9 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2096 + hash: "446d35fc7b9c0fe4bf0bfe0182f994f6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 183; y: -5 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2112 + hash: "cced849d314835d43ebd93bcfe396c12" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 188; y: -3 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2128 + hash: "09696d700944c373f82d7c6f75d51c51" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 193; y: 0 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2144 + hash: "af56586db93c49637c9bfbb17cac9001" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 199; y: 2 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 203; y: 5 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2160 + hash: "66fc1b30b4037aad3975036faccbb7a7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 209; y: 8 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2176 + hash: "3f443d9c89d6ba1b36ca9635bc32de1a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 217; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2192 + hash: "df47db8cc7bb466b298749a6449d3d70" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 227; y: 15 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 234; y: 18 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 241; y: 20 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2208 + hash: "c1146fdc0e628d050442606096e52b10" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 252; y: 23 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2224 + hash: "22f44c43f300fd7ff2b4d87d93756178" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 272; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2240 + hash: "bf11dc9a9679692abde5d116a169eecf" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 299; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 329; y: 48 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2256 + hash: "e63f1960f342639ac412010ffcefb049" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 360; y: 57 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2272 + hash: "ae0228419ec9358025c3026a39abd671" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 392; y: 65 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2288 + hash: "6d2272e2bea21c280100ed8de5b95d4e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 422; y: 72 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 451; y: 76 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2304 + hash: "1628c6fa5feabd90924452bc9f55054d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 476; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2320 + hash: "f696791eb0a317b0efb69407616bec9f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 497; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2336 + hash: "f696791eb0a317b0efb69407616bec9f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 513; y: 77 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 527; y: 76 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2352 + hash: "1628c6fa5feabd90924452bc9f55054d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 538; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2368 + hash: "a5d3d247e22a2852a60fe07ab40345a5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 548; y: 74 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2384 + hash: "a453fb6bcdd87f819782d8d8c46b56ee" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 556; y: 74 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 563; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2400 + hash: "a5d3d247e22a2852a60fe07ab40345a5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 570; y: 76 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2416 + hash: "1628c6fa5feabd90924452bc9f55054d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 576; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2432 + hash: "f696791eb0a317b0efb69407616bec9f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 582; y: 78 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 585; y: 80 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2448 + hash: "8f061986df633c21dcad767ee857988c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 589; y: 81 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2464 + hash: "2cc110a6fb800171d7d752693ede1e4e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 592; y: 82 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2480 + hash: "319fc3053e02a8b161f33a79d9839bb1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 595; y: 85 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 597; y: 89 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2496 + hash: "42915c8866746316cf1083a2d55410fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 601; y: 95 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2512 + hash: "5df34b3ae292de9a9cd8ff09347e7bd4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 606; y: 103 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2528 + hash: "1f9bc3c955983ea85f568797cb4f7365" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 609; y: 113 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 613; y: 124 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2544 + hash: "3f156dc64a12c672874acf5456ef4a31" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 618; y: 136 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2560 + hash: "d4d9fe5b5f138e06a87039ebf8695d03" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 619; y: 142 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2576 + hash: "383fe813021ee2791930200b2f88a802" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 620; y: 148 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 622; y: 155 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2592 + hash: "a235544bd5e791dfa329bd0b87358bfa" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 625; y: 163 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2608 + hash: "a87497cf47db3209610b532efe7eb380" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 629; y: 174 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2624 + hash: "abe69b4e4b7508028226f9b73c38058a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 634; y: 194 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 642; y: 225 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2640 + hash: "51c72fa2fa4c8765d882fe65dc0d697d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 649; y: 260 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2656 + hash: "79da7ed21bd6fc16b7264d4403e763cc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 655; y: 291 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2672 + hash: "b2828b6340a57fa45416469b23b7cef0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 658; y: 316 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 659; y: 340 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2688 + hash: "64a5351f2d746b338c34c7ea9ba6e1fe" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 660; y: 370 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2704 + hash: "9eedb7a6875210084fd2ec95d3505512" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 661; y: 408 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2720 + hash: "b88eb8fa8a0cfc263dc7b655ddc29db0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 661; y: 448 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2736 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 660; y: 487 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 659; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2752 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 658; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2768 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 658; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2784 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 658; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 658; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2800 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 657; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2816 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 656; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2832 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 654; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 652; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2848 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 651; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2864 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 650; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2880 + image: "drag.2.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 650; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 648; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2896 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 647; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2912 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 646; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2928 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 645; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 644; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2944 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 643; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2960 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 642; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2976 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 641; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 640; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2992 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 640; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3008 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 639; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3024 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 639; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 638; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3040 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 636; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3056 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 625; y: 505 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3072 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 611; y: 505 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3088 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 582; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 546; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3104 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 505; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3120 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 460; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3136 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 408; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 354; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3152 + hash: "c2997fdde10812f02791bfed5f158ac3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 300; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3168 + hash: "23a6dfbd09e5b44d04f252cedaeb68af" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 250; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3184 + hash: "f74422989711f86a0840ffc98e8a29e9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 206; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 163; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3200 + hash: "fa922246d254a7c46d2d1d6ec91a2b02" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 140; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 122; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3216 + hash: "ef216cb8c2bf58db7d58bd8a2e4eb38d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 101; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3232 + hash: "a383228d22e64b8a7758c959288eaca8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 64; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3248 + hash: "636ca2a8e91c49ef6c8b1c93b830f345" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 36; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 16; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3264 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -1; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3280 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3296 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3312 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3328 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3344 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3360 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3376 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 505 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3392 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 504 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 504 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3408 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 505 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3424 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3440 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3456 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3472 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3488 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3504 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3520 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3536 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3552 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Frame { + msec: 3568 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3584 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3600 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3616 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Frame { + msec: 3632 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 491 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3648 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 428 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3664 + hash: "9fa1e3686467f28cb013fe093dab388c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 342 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3680 + hash: "7ef97d10862f80d53e0b3b4446661deb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 264 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 203 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3696 + hash: "c679866b3965b7b5f48b843d6efccf42" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 160 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3712 + hash: "de4bd9ad3cbb9bb19bf75f871b044072" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 144 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3728 + hash: "c5349bbddc03edd5ee3537e2a738f1ad" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 136 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 132 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3744 + hash: "bcbe9ec2687a6030385f08d3dc17becf" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 130 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3760 + hash: "3ad767f63eaccb9e64a9f704900f2530" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 129 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3776 + hash: "421a1ffde15fda0e7846bc095ed2ea37" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 128 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 128 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3792 + hash: "55c260da304a6b1119af83f6a4efcff0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 123 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3808 + hash: "f231cc521db801b4ec71248812e12db8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 104 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3824 + hash: "b489b6b604e7f7699cac9e42d0725323" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 68 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3840 + image: "drag.3.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 13 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3856 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 2 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3872 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -6 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -12 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3888 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -25 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3904 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -46 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3920 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -65 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -70 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3936 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -74 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3952 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -76 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3968 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -76 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3984 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -76 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4000 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -77 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4016 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4032 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4048 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4064 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4080 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4096 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -77 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4112 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4128 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4144 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: -78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4160 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -3; y: -84 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4176 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -2; y: -105 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 1; y: -151 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4192 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4208 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4224 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4240 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4256 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4272 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4288 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4304 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4320 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4336 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4352 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4368 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Frame { + msec: 4384 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 3; y: -151 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4400 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 4; y: -149 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4416 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 5; y: -147 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4432 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 5; y: -143 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 6; y: -138 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4448 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 7; y: -130 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4464 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 9; y: -117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4480 + hash: "668cc6d9d699b947a7c0f3ff4b26853f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 13; y: -94 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 20; y: -63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4496 + hash: "b1b54f7bf8ab9cf98d96f9b34192434b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 29; y: -24 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4512 + hash: "a6c6df34bb552249393ba208ad327691" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 39; y: 15 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4528 + hash: "a05eb803b1f1f3574a2f2e08fe37bd35" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 50 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 58; y: 74 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4544 + hash: "3c2f3db46673c2640a26832900b609cb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 65; y: 91 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4560 + hash: "d0539a9791874f48634bb3cb9f78d9db" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 71; y: 103 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4576 + hash: "f2d862a0b81e2578799d64aef2e6bddc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 77; y: 112 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 81; y: 121 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4592 + hash: "295ef097845e30064c4d810a7718896c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 86; y: 128 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4608 + hash: "22a4a17d82ac402c0e8372861609ff1c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 136 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4624 + hash: "a70e81b1435afd77b9079c58685ef9d0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 98; y: 143 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 104; y: 151 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4640 + hash: "d66fefd68fcd96834548c18797eee4bd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 111; y: 159 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4656 + hash: "fcc435dc6f2643cd21a7cfac078880af" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 118; y: 166 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4672 + hash: "736edfcf33245d46aaea199634896c17" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 123; y: 173 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 129; y: 183 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4688 + hash: "7b7ab312d0c6f4bfc87a2ae467324f4e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 137; y: 197 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4704 + hash: "d78ce756fc27055eeee15001419b7fb5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 146; y: 215 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4720 + hash: "4f15a726939d7f489d1fe58ebb5bcd0a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 157; y: 235 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 168; y: 255 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4736 + hash: "72184d71fd2fdc6786a43045db0be68f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 180; y: 274 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4752 + hash: "3b3f3f34218bf238f310412cb8c4968d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 192; y: 293 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4768 + hash: "24c00a7154471431d43b1db957ad6424" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 205; y: 316 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 221; y: 343 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4784 + hash: "30081a33ab007ff2c7ba6cc293a5aec3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 237; y: 371 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4800 + image: "drag.4.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 253; y: 396 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4816 + hash: "c0cadb7730838d553b146804c37506b0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 268; y: 419 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 276; y: 429 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 284; y: 438 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4832 + hash: "101c007d0e2cf82331ba1cab4880e8a2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 291; y: 448 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4848 + hash: "72e46df7427420c5e942a97831723d3f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 307; y: 468 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4864 + hash: "4b7a009b46982a1e9e31250d7ebf0a20" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 323; y: 492 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 341; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4880 + hash: "a3ba70933b6452fad0cdc4192e04be23" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 359; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4896 + hash: "c2ee16182222b403f914eb5550ac6f91" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 378; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4912 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 397; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 416; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4928 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 432; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4944 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 445; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4960 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 456; y: 506 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 466; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4976 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 475; y: 506 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4992 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 482; y: 505 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5008 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 488; y: 504 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 492; y: 503 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5024 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 496; y: 503 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5040 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 500; y: 502 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5056 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 507; y: 501 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5072 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 512; y: 500 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 516; y: 498 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5088 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 521; y: 494 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5104 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 525; y: 486 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5120 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 532; y: 472 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 542; y: 445 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5136 + hash: "9356ce797d12ae076af947cd0e658551" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 553; y: 414 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5152 + hash: "76a8d3b8465f08fdc4586c7766667eff" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 563; y: 389 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5168 + hash: "569e56ba99776d03dd3140e53bc77f56" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 569; y: 373 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 573; y: 363 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5184 + hash: "7139c72a2458685006da79d9cf11bc44" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 577; y: 354 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5200 + hash: "a83d5ef213edec4c8f938ab04afb5c4f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 580; y: 344 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5216 + hash: "5533602bc8a473c162966142d4bddebd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 584; y: 321 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 586; y: 301 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5232 + hash: "7a79d6e31874428233e9c141d70522fd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 588; y: 264 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5248 + hash: "b14f4daeb25cd71baae36f4cec111813" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 591; y: 238 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5264 + hash: "e2b2513d2918ffb85bab5fff5a8be644" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 592; y: 225 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 593; y: 216 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5280 + hash: "af0cbb3423491917db1fdaa8350d48b0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 594; y: 209 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5296 + hash: "b9c107f0a13ad37ae05b4d5f9e5f5442" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 594; y: 200 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5312 + hash: "0bbc0c7a4a40ee6b19565c04c23b565d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 594; y: 182 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 593; y: 146 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5328 + hash: "49494e8526a1417c151c7cac7099b9e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 590; y: 107 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5344 + hash: "5e0839c4414cc8ddc5241c658fd3bf88" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 585; y: 80 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5360 + hash: "8f061986df633c21dcad767ee857988c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 582; y: 67 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5376 + hash: "d78c0a4fa0ccad407a565fab3a5c95b9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 579; y: 61 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 576; y: 57 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5392 + hash: "cee6816f84911bc2262afe28d8996719" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 573; y: 55 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5408 + hash: "2cc6cd514ef7299dd60bf1a735b81d36" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 569; y: 51 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5424 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 564; y: 44 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 557; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5440 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 548; y: 25 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5456 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 540; y: 14 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 532; y: 5 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5472 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 524; y: -1 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5488 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 517; y: -5 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5504 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 510; y: -9 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5520 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 501; y: -14 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 492; y: -18 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5536 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 483; y: -21 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5552 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 476; y: -21 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5568 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 470; y: -19 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 464; y: -15 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5584 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 458; y: -9 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5600 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 452; y: -3 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5616 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 446; y: 4 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 439; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5632 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 432; y: 20 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5648 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 424; y: 29 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5664 + hash: "68c40f3551d7d10e61c5ffbb6948c7e6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 413; y: 42 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 400; y: 59 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5680 + hash: "9bc8a652f43c0e3cae9492f5dff624e7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 392; y: 70 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 385; y: 79 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5696 + hash: "5465128afe72d9618cd9abc47f4ce72f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 378; y: 88 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5712 + hash: "ad739c2028caf8f89d8ae04d509c7854" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 366; y: 102 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 353; y: 114 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5728 + hash: "97cd37f639a7bea76a2f68774c0753db" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 339; y: 126 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5744 + hash: "d24fc8a57dd34e6ddb726426247ec219" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 324; y: 140 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5760 + image: "drag.5.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 308; y: 158 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 288; y: 181 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5776 + hash: "7af87eb80fa9d87fe8d8b5e4a2fff5e1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 266; y: 208 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5792 + hash: "73623f4a857fd4d5150c2eeef1341540" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 243; y: 237 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5808 + hash: "076c4b60d9ec197950ade51e3f1be791" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 217; y: 265 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 191; y: 291 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5824 + hash: "22b7d7765c634763fa86912ea262efca" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 167; y: 314 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5840 + hash: "1267c017931bda0b88b4672f46d499e0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 147; y: 331 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5856 + hash: "b6a545e4c14b809f4ebcffbcb59a8e4f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 132; y: 344 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 121; y: 354 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5872 + hash: "b1085cb508d4613c76e99bc879c62cbf" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 111; y: 363 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5888 + hash: "365fd1260c2109e6d5bd0a97ce3a7e4e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 100; y: 370 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5904 + hash: "3a7d001313b23cbbb7f3d842ab40f41b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 86; y: 377 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 66; y: 385 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5920 + hash: "c5bda48bb2eaee54d6d8416592830327" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 45; y: 394 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5936 + hash: "5d0fd6d8a6ced4f197fe3b09e7e9155b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 29; y: 402 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5952 + hash: "79e2825f98644c061ae5216ae1823e4b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 16; y: 410 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 6; y: 417 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5968 + hash: "22a3978f2f3a0cde67f459527af3b3f2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 0; y: 422 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 427 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5984 + hash: "1511bec94911dd272f78a726e15bf76e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 432 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6000 + hash: "0f892f7e570cdc703e492248c9f54b6c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 439 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6016 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 447 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 452 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6032 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 457 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6048 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 459 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6064 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 464 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 465 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6080 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 467 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6096 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 468 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6112 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 468 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 468 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6128 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 468 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6144 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 468 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6160 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 469 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 470 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6176 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 470 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6192 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Frame { + msec: 6208 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 470 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6224 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -3; y: 470 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -3; y: 470 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6240 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -2; y: 470 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6256 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -1; y: 470 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6272 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -1; y: 468 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 0; y: 467 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6288 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 0; y: 464 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6304 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 0; y: 458 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6320 + hash: "ec34aa6937d2c081bdf11660a5eb461a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -3; y: 441 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 408 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6336 + hash: "58413f9b01f1e0b49519d8b6a3011607" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 366 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6352 + hash: "b3992d2f9c1383c710ee325a94117a8b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 327 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6368 + hash: "bd415044fcf6218d8184cb0206105e65" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 300 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 288 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6384 + hash: "e7296140fe8b28bed77e95e588c0e463" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 280 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6400 + hash: "9ff532223ccccd663809187465e478c2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 276 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6416 + hash: "4de9ca75503db05df5d8274d75c202e5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 271 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 259 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6432 + hash: "a83b5bc409207e986055081b4ed3faa6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 227 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6448 + hash: "7fdbd00dd3553241f30fd6568a8ab646" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 190 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6464 + hash: "5ebaa67eaadc1ede8c46964fa1dffff1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -4; y: 169 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -2; y: 160 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6480 + hash: "de4bd9ad3cbb9bb19bf75f871b044072" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 1; y: 156 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6496 + hash: "9d762cd4dd6508cf8b54c47b76f4ef37" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 5; y: 155 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6512 + hash: "bdf17c384f4f824a89a06b88ba17c15f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 10; y: 154 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 25; y: 152 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6528 + hash: "f279f28995785afd143726aef7673b50" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 52; y: 149 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6544 + hash: "53b6b82a61d017e12afb01a728d8d856" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 80; y: 148 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6560 + hash: "9a48039175cab1360a0cf5cc195e2082" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 98; y: 148 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 112; y: 150 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6576 + hash: "cfc3991e30eef6c2edb66cb6060b2bde" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 123; y: 153 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6592 + hash: "737d8907f62768e623ba76866a509d1e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 134; y: 155 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6608 + hash: "dea2a596f7d85f29728b33d126d997e5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 145; y: 158 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 157; y: 161 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6624 + hash: "3969a0bbb284ab1d5efd20cf93b0422d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 168; y: 164 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6640 + hash: "071ff25e49f7f16a727ff58c42ff766e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 176; y: 169 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6656 + hash: "454abec991a4675763f379c256919fa7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 184; y: 173 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 189; y: 177 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6672 + hash: "6de741c4e6057dc8580106155c4ac627" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 194; y: 184 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6688 + hash: "e35853e99cd205b7ccabdf632b238584" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 199; y: 192 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6704 + hash: "15a70a0196227c6bce50ed70cd6383c8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 204; y: 201 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 211; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6720 + image: "drag.6.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 217; y: 217 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6736 + hash: "5e951eb6017a060287e398fcaf4aeba9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 224; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6752 + hash: "ddd0f27027e23a45aef131296c781865" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 235; y: 228 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 246; y: 232 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6768 + hash: "715102a252756e5a8c4f459d808aec6a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 257; y: 235 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6784 + hash: "42b9c1b894247ddbd85f4a4aca5695f1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 267; y: 239 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6800 + hash: "b67b4bdd412ed5160901803c60c6f19e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 275; y: 239 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 280; y: 239 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6816 + hash: "3490cc41c2b1f9301c209bdb8f052add" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 281; y: 239 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6832 + hash: "df32868d564ebbc41c359409b5a69e7d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 282; y: 239 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6848 + hash: "b9cb430a6f677e67c87322e0aff53fb1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 282; y: 239 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6864 + hash: "b9cb430a6f677e67c87322e0aff53fb1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 281; y: 239 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6880 + hash: "df32868d564ebbc41c359409b5a69e7d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 280; y: 239 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6896 + hash: "3490cc41c2b1f9301c209bdb8f052add" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 279; y: 240 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6912 + hash: "e23a88f49a73cd2a9326095dd380ab55" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 277; y: 240 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6928 + hash: "ffffc1aed27fe77c2fe5c035eab706a9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 277; y: 240 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6944 + hash: "ffffc1aed27fe77c2fe5c035eab706a9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 276; y: 240 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6960 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 276; y: 240 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6976 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 6992 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 276; y: 240 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7008 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7024 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7040 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7056 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7072 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7088 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7104 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7120 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7136 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7152 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7168 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7184 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7200 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7216 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7232 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7248 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7264 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7280 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7296 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7312 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7328 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7344 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7360 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7376 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7392 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7408 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7424 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7440 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7456 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7472 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7488 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7504 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7520 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7536 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7552 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7568 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7584 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7600 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7616 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7632 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7648 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7664 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7680 + image: "drag.7.png" + } + Frame { + msec: 7696 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7712 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7728 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7744 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7760 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7776 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7792 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7808 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7824 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7840 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7856 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7872 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7888 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7904 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7920 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7936 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7952 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7968 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 7984 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } + Frame { + msec: 8000 + hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" + } +} diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.qml index cc374fd..cc374fd 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.qml diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.0.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.0.png Binary files differindex c249c21..c249c21 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.0.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.1.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.1.png Binary files differindex a96bf1b..a96bf1b 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.1.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.10.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.10.png Binary files differindex 7420ca7..7420ca7 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.10.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.10.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.11.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.11.png Binary files differindex 7420ca7..7420ca7 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.11.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.11.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.12.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.12.png Binary files differindex 7420ca7..7420ca7 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.12.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.12.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.13.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.13.png Binary files differindex 7420ca7..7420ca7 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.13.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.13.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.14.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.14.png Binary files differindex 7420ca7..7420ca7 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.14.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.14.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.15.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.15.png Binary files differindex e797cc9..e797cc9 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.15.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.15.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.16.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.16.png Binary files differindex 7951309..7951309 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.16.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.16.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.17.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.17.png Binary files differindex 7951309..7951309 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.17.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.17.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.18.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.18.png Binary files differindex 7951309..7951309 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.18.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.18.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.19.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.19.png Binary files differindex 7951309..7951309 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.19.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.19.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.2.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.2.png Binary files differindex a96bf1b..a96bf1b 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.2.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.20.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.20.png Binary files differindex 7951309..7951309 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.20.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.20.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.21.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.21.png Binary files differindex 7951309..7951309 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.21.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.21.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.22.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.22.png Binary files differindex 7951309..7951309 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.22.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.22.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.3.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.3.png Binary files differindex a96bf1b..a96bf1b 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.3.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.4.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.4.png Binary files differindex 1fe365a..1fe365a 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.4.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.5.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.5.png Binary files differindex 1fe365a..1fe365a 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.5.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.6.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.6.png Binary files differindex 1fe365a..1fe365a 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.6.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.7.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.7.png Binary files differindex 1fe365a..1fe365a 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.7.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.7.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.8.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.8.png Binary files differindex 7420ca7..7420ca7 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.8.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.8.png diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.9.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.9.png Binary files differindex 7420ca7..7420ca7 100644 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.9.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.9.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/drag.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/drag.qml new file mode 100644 index 0000000..21c46d8 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/drag.qml @@ -0,0 +1,26 @@ +import Qt 4.6 + +/* +this test shows a blue box being dragged around -- first roughly tracing the +borders of the window, then doing a rough 'x'-shape, then moving to around the middle. +*/ + +Rectangle{ + width:400 + height:440 + color: "white" + Rectangle{ + id: draggable + width:40; height:40; color: "lightsteelblue" + y:20 + MouseArea{ + anchors.fill: parent + drag.target: draggable + drag.axis: "XandYAxis" + drag.minimumX: 0 + drag.maximumX: 360 + drag.minimumY: 20 + drag.maximumY: 400 + } + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/mousearea-visual.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/mousearea-visual.qml new file mode 100644 index 0000000..3019006 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/mousearea-visual.qml @@ -0,0 +1,135 @@ +import Qt 4.6 + +/* +This test displays 6 red rects -- 4 in the top row, 2 in the bottom. + +Sequence: +1. the bottom-left rect turns blue, then green +2. the second rect in the top row turns blue +3. the third rect in the top row turns blue +4. the last rect in the top row quickly turns blue then back to red +5. the bottom-left rect turns blue, then green +*/ + +Rectangle { + id: root + width: 400 + height: 100 + + // Left click on me + Rectangle { + width: 98; height: 48 + color: "red" + MouseArea { + id: mr1 + anchors.fill: parent + enabled: false + onClicked: { parent.color = "blue"; root.error = "mr1 should ignore presses"; } + } + } + + // Left click, then right click + Rectangle { + x: 100 + width: 98; height: 48 + color: "red" + MouseArea { + id: mr2 + anchors.fill: parent + acceptedButtons: Qt.RightButton + onClicked: { + if (mouse.button == Qt.RightButton) { + parent.color = "blue"; + } else { + parent.color = "green"; + root.error = "mr1 should ignore presses"; + } + } + } + } + + // press and hold me + Rectangle { + x: 200 + width: 98; height: 48 + color: "red" + MouseArea { + id: mr3 + anchors.fill: parent + onPressAndHold: { + parent.color = "blue"; + } + } + } + + // click me + Rectangle { + x: 300 + width: 98; height: 48 + color: "red" + MouseArea { + id: mr4 + anchors.fill: parent + onPressed: { + parent.color = "blue"; + } + onReleased: { + parent.color = "red"; + } + } + } + + // move into and out of me + Rectangle { + x: 0 + y: 50 + width: 98; height: 48 + color: "red" + MouseArea { + id: mr5 + anchors.fill: parent + hoverEnabled: true + onEntered: { + parent.color = "blue"; + } + onExited: { + parent.color = "green"; + } + } + } + + // click, then double click me + Rectangle { + x: 100 + y: 50 + width: 98; height: 48 + color: "red" + MouseArea { + id: mr6 + anchors.fill: parent + onClicked: { + parent.color = "blue"; + } + onDoubleClicked: { + parent.color = "green"; + } + } + } + + // click, then double click me - nothing should happen + Rectangle { + x: 100 + y: 50 + width: 98; height: 48 + color: "red" + MouseArea { + id: mr7 + anchors.fill: parent + enabled: false + onClicked: { parent.color = "blue" } + onPressed: { parent.color = "yellow" } + onReleased: { parent.color = "cyan" } + onDoubleClicked: { parent.color = "green" } + } + } +} diff --git a/tests/auto/declarative/visual/qdeclarativeparticles/data/particles.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.png Binary files differindex 7321d95..7321d95 100644 --- a/tests/auto/declarative/visual/qdeclarativeparticles/data/particles.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.png diff --git a/tests/auto/declarative/visual/qdeclarativeparticles/data/particles.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.png Binary files differindex 49d2a5a..49d2a5a 100644 --- a/tests/auto/declarative/visual/qdeclarativeparticles/data/particles.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.png diff --git a/tests/auto/declarative/visual/qdeclarativeparticles/data/particles.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.png Binary files differindex 6fe14b7..6fe14b7 100644 --- a/tests/auto/declarative/visual/qdeclarativeparticles/data/particles.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.png diff --git a/tests/auto/declarative/visual/qdeclarativeparticles/data/particles.qml b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.qml index d766dc6..d766dc6 100644 --- a/tests/auto/declarative/visual/qdeclarativeparticles/data/particles.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.qml diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml new file mode 100644 index 0000000..fc8261f --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml @@ -0,0 +1,55 @@ +import Qt 4.6 +import Qt.labs.particles 1.0 + +Rectangle { + width: 640; height: 480; color: "black" + + Particles { id:particlesAnotEmitting + y:60; width: 260; height:30; source: "star.png"; + lifeSpan:1000; count: 50; angle:70; angleDeviation:36; + velocity:30; velocityDeviation:10; emissionRate: 0 + ParticleMotionWander { yvariance:5; xvariance:30; pace:100 } + } + Particles { id:particlesA + y:0; width: 260; height:30; source: "star.png"; + lifeSpan:1000; count: 50; angle:70; angleDeviation:36; + velocity:30; velocityDeviation:10; emissionRate: 10 + ParticleMotionWander { yvariance:5; xvariance:30; pace:100 } + } + + Particles { id:particlesB + y:280; x:180; width:1; height:1; lifeSpan:1000; source: "star.png" + count: 100; angle:270; angleDeviation:45; velocity:50; velocityDeviation:30; + emissionRate: 0 + ParticleMotionGravity { yattractor: 1000; xattractor:0; acceleration:25 } + } + + Timer { running: true; interval: 1000; repeat: true; onTriggered: particlesB.burst(200, 2000); } + + Column{ + x: 340; + Repeater{ + model: 5 + delegate: Component{ + Item{ + width: 100; height: 100 + Rectangle{ + color: "blue" + width: 2; height: 2; + x: 49; y:49; + } + Particles{ + x: 50; y:50; width: 0; height: 0; + fadeInDuration: 0; fadeOutDuration: 0 + lifeSpan: 1000; lifeSpanDeviation:0; + source: "star.png" + count: -1; emissionRate: 120; + emissionVariance: index/2; + velocity: 250; velocityDeviation: 0; + angle: 0; angleDeviation: 0; + } + } + } + } + } +} diff --git a/tests/auto/declarative/visual/qdeclarativeparticles/star.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/star.png Binary files differindex defbde5..defbde5 100644 --- a/tests/auto/declarative/visual/qdeclarativeparticles/star.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/star.png diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.0.png Binary files differindex 18c8a9e..18c8a9e 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.0.png diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.1.png Binary files differindex e86acb4..e86acb4 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.1.png diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.2.png Binary files differindex 17990b7..17990b7 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.2.png diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.3.png Binary files differindex 18c8a9e..18c8a9e 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.3.png diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.4.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.4.png Binary files differindex 18c8a9e..18c8a9e 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.4.png diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.5.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.5.png Binary files differindex 8636f8f..8636f8f 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.5.png diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.6.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.6.png Binary files differindex fa7c4b6..fa7c4b6 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.6.png diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.qml b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.qml index b8ff925..b8ff925 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.qml diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.0.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.0.png Binary files differindex 442ba9f..442ba9f 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.0.png diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.1.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.1.png Binary files differindex a9ff20f..a9ff20f 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.1.png diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.2.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.2.png Binary files differindex 157bb99..157bb99 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.2.png diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.3.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.3.png Binary files differindex 8c49acb..8c49acb 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.3.png diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.4.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.4.png Binary files differindex eb2bf54..eb2bf54 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.4.png diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.qml b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.qml index 8cff5c6..8cff5c6 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.qml diff --git a/tests/auto/declarative/visual/qdeclarativepathview/test-pathview-2.qml b/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview-2.qml index c6d71d5..c6d71d5 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/test-pathview-2.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview-2.qml diff --git a/tests/auto/declarative/visual/qdeclarativepathview/test-pathview.qml b/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview.qml index 0adfa02..0adfa02 100644 --- a/tests/auto/declarative/visual/qdeclarativepathview/test-pathview.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview.qml diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.0.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.0.png Binary files differindex f474afe..f474afe 100644 --- a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.0.png diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.1.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.1.png Binary files differindex 8b7ae74..8b7ae74 100644 --- a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.1.png diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.2.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.2.png Binary files differindex 9088bb4..9088bb4 100644 --- a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.2.png diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.3.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.3.png Binary files differindex 18cd429..18cd429 100644 --- a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.3.png diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.4.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.4.png Binary files differindex 739afc1..739afc1 100644 --- a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.4.png diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.5.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.5.png Binary files differindex 93f0682..93f0682 100644 --- a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.5.png diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.qml index 7091bb3..7091bb3 100644 --- a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.qml diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/repeater.0.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/repeater.0.png Binary files differindex f7018fd..f7018fd 100644 --- a/tests/auto/declarative/visual/qdeclarativepositioners/data/repeater.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/repeater.0.png diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/repeater.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml index 1eb115d..1eb115d 100644 --- a/tests/auto/declarative/visual/qdeclarativepositioners/data/repeater.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/dynamic.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/dynamic.qml index f45e9a4..f45e9a4 100644 --- a/tests/auto/declarative/visual/qdeclarativepositioners/dynamic.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/dynamic.qml diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/repeater.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/usingRepeater.qml index ff60365..ff60365 100644 --- a/tests/auto/declarative/visual/qdeclarativepositioners/repeater.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/usingRepeater.qml diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.0.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.0.png Binary files differindex 21b6afb..21b6afb 100644 --- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.0.png diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.1.png Binary files differindex bb8a02b..bb8a02b 100644 --- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.1.png diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.2.png Binary files differindex da60237..da60237 100644 --- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.2.png diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.3.png Binary files differindex 3e943e8..3e943e8 100644 --- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.3.png diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.4.png Binary files differindex 4fbaf26..4fbaf26 100644 --- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.4.png diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.5.png Binary files differindex c10d196..c10d196 100644 --- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.5.png diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.6.png Binary files differindex a672c06..a672c06 100644 --- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.6.png diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.qml b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.qml index 029a2fc..029a2fc 100644 --- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.qml diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedanimation.qml b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedanimation.qml new file mode 100644 index 0000000..ee94857 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedanimation.qml @@ -0,0 +1,45 @@ +import Qt 4.6 + +Rectangle { + width: 800; height: 240; color: "gray" + + Rectangle { + id: rect + width: 50; height: 20; y: 30; color: "black" + SequentialAnimation on x { + loops: Animation.Infinite + NumberAnimation { from: 50; to: 700; duration: 2000 } + NumberAnimation { from: 700; to: 50; duration: 2000 } + } + } + + Rectangle { + width: 50; height: 20; y: 60; color: "red" + x: rect.x + Behavior on x { SmoothedAnimation { velocity: 400 } } + } + + Rectangle { + width: 50; height: 20; y: 90; color: "yellow" + x: rect.x + Behavior on x { SmoothedAnimation { velocity: 300; reversingMode: SmoothedAnimation.Immediate } } + } + + Rectangle { + width: 50; height: 20; y: 120; color: "green" + x: rect.x + Behavior on x { SmoothedAnimation { reversingMode: SmoothedAnimation.Sync } } + } + + Rectangle { + width: 50; height: 20; y: 150; color: "purple" + x: rect.x + Behavior on x { SmoothedAnimation { maximumEasingTime: 200 } } + } + + Rectangle { + width: 50; height: 20; y: 180; color: "blue" + x: rect.x + Behavior on x { SmoothedAnimation { duration: 300 } } + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedfollow.qml b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedfollow.qml new file mode 100644 index 0000000..5dee0c6 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedfollow.qml @@ -0,0 +1,40 @@ +import Qt 4.6 + +Rectangle { + width: 800; height: 240; color: "gray" + + Rectangle { + id: rect + width: 50; height: 20; y: 30; color: "black" + SequentialAnimation on x { + loops: Animation.Infinite + NumberAnimation { from: 50; to: 700; duration: 2000 } + NumberAnimation { from: 700; to: 50; duration: 2000 } + } + } + + Rectangle { + width: 50; height: 20; y: 60; color: "red" + SmoothedFollow on x { to: rect.x; velocity: 400; enabled: true } + } + + Rectangle { + width: 50; height: 20; y: 90; color: "yellow" + SmoothedFollow on x { to: rect.x; velocity: 300; reversingMode: SmoothedAnimation.Immediate; enabled: true } + } + + Rectangle { + width: 50; height: 20; y: 120; color: "green" + SmoothedFollow on x { to: rect.x; reversingMode: SmoothedAnimation.Sync; enabled: true } + } + + Rectangle { + width: 50; height: 20; y: 150; color: "purple" + SmoothedFollow on x { to: rect.x; maximumEasingTime: 200; enabled: true } + } + + Rectangle { + width: 50; height: 20; y: 180; color: "blue" + SmoothedFollow on x { to: rect.x; duration: 300; enabled: true } + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml new file mode 100644 index 0000000..0ddcca4 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml @@ -0,0 +1,64 @@ +import Qt 4.6 + +Rectangle { + id: clock + color: "gray" + width: 200; height: 200 + + property variant hours: 10 + property variant minutes: 28 + property variant seconds: 0 + + Timer { + interval: 1000; running: true; repeat: true; triggeredOnStart: true + onTriggered: seconds++ + } + + Image { id: background; source: "content/clock.png" } + + Image { + x: 92.5; y: 27 + source: "content/hour.png" + smooth: true + transform: Rotation { + id: hourRotation + origin.x: 7.5; origin.y: 73; angle: 0 + SpringFollow on angle { + spring: 2; damping: 0.2; modulus: 360 + to: (clock.hours * 30) + (clock.minutes * 0.5) + } + } + } + + Image { + x: 93.5; y: 17 + source: "content/minute.png" + smooth: true + transform: Rotation { + id: minuteRotation + origin.x: 6.5; origin.y: 83; angle: 0 + SpringFollow on angle { + spring: 2; damping: 0.2; modulus: 360 + to: clock.minutes * 6 + } + } + } + + Image { + x: 97.5; y: 20 + source: "content/second.png" + smooth: true + transform: Rotation { + id: secondRotation + origin.x: 2.5; origin.y: 80; angle: 0 + SpringFollow on angle { + spring: 5; damping: 0.25; modulus: 360 + to: clock.seconds * 6 + } + } + } + + Image { + anchors.centerIn: background; source: "content/center.png" + } +} diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/content/background.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/background.png Binary files differindex a885950..a885950 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/content/background.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/background.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/content/center.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/center.png Binary files differindex 7fbd802..7fbd802 100755 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/content/center.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/center.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/content/clock.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/clock.png Binary files differindex 462edac..462edac 100755 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/content/clock.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/clock.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/content/hour.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/hour.png Binary files differindex f8061a1..f8061a1 100755 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/content/hour.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/hour.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/content/minute.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/minute.png Binary files differindex 1297ec7..1297ec7 100755 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/content/minute.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/minute.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/content/second.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/second.png Binary files differindex 4aa9fb5..4aa9fb5 100755 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/content/second.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/second.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.0.png Binary files differindex baf1d45..baf1d45 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.0.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.1.png Binary files differindex 932f63f..932f63f 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.1.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.2.png Binary files differindex a5cb437..a5cb437 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.2.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.3.png Binary files differindex 62e895c..62e895c 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.3.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.qml index ffc6a5e..ffc6a5e 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.qml diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.0.png Binary files differindex 3f42e75..3f42e75 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.0.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.1.png Binary files differindex d661df6..d661df6 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.1.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.10.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.10.png Binary files differindex e8c96e1..e8c96e1 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.10.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.10.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.2.png Binary files differindex 35bfa43..35bfa43 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.2.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.3.png Binary files differindex 74141cf..74141cf 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.3.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.4.png Binary files differindex 9544054..9544054 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.4.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.5.png Binary files differindex 4b02c79..4b02c79 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.5.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.6.png Binary files differindex 8ea8345..8ea8345 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.6.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.7.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.7.png Binary files differindex 76a73e8..76a73e8 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.7.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.7.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.8.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.8.png Binary files differindex 8824940..8824940 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.8.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.8.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.9.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.9.png Binary files differindex f954cc5..f954cc5 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.9.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.9.png diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.qml index fec5428..fec5428 100644 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.qml diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml new file mode 100644 index 0000000..5368349 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml @@ -0,0 +1,71 @@ +import Qt 4.6 + +Rectangle { + color: "#ffffff" + width: 320; height: 240 + Rectangle { + id: rect + color: "#00ff00" + y: 200; width: 60; height: 20 + SequentialAnimation on y { + loops: Animation.Infinite + NumberAnimation { + to: 20; duration: 500 + easing.type: "InOutQuad" + } + NumberAnimation { + to: 200; duration: 2000 + easing.type: "OutBounce" + } + PauseAnimation { duration: 1000 } + } + } + + // Velocity + Rectangle { + color: "#ff0000" + x: rect.width; width: rect.width; height: 20 + y: 200 + SpringFollow on y { to: rect.y; velocity: 200 } + } + + // Spring + Rectangle { + color: "#ff0000" + x: rect.width * 2; width: rect.width/2; height: 20 + y: 200 + SpringFollow on y { to: rect.y; spring: 1.0; damping: 0.2 } + } + Rectangle { + color: "#880000" + x: rect.width * 2.5; width: rect.width/2; height: 20 + y: 200 + SpringFollow on y { to: rect.y; spring: 1.0; damping: 0.2; mass: 3.0 } // "heavier" object + } + + // Follow mouse + MouseArea { + id: mouseRegion + anchors.fill: parent + Rectangle { + id: ball + width: 20; height: 20 + radius: 10 + color: "#0000ff" + SpringFollow on x { id: f1; to: mouseRegion.mouseX-10; spring: 1.0; damping: 0.05; epsilon: 0.25 } + SpringFollow on y { id: f2; to: mouseRegion.mouseY-10; spring: 1.0; damping: 0.05; epsilon: 0.25 } + states: [ + State { + name: "following" + when: !f1.inSync || !f2.inSync + PropertyChanges { target: ball; color: "#ff0000" } + } + ] + transitions: [ + Transition { + ColorAnimation { duration: 200 } + } + ] + } + } +} diff --git a/tests/auto/declarative/visual/qdeclarativetext/baseline/data/parentanchor.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml index 56d616e..56d616e 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/baseline/data/parentanchor.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml diff --git a/tests/auto/declarative/visual/qdeclarativetext/baseline/data-X11/parentanchor.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data/parentanchor.qml index 56d616e..56d616e 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/baseline/data-X11/parentanchor.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data/parentanchor.qml diff --git a/tests/auto/declarative/visual/qdeclarativetext/baseline/parentanchor.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml index 80f0f03..80f0f03 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/baseline/parentanchor.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png Binary files differindex eea3362..eea3362 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml index 1ccede4..1ccede4 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png Binary files differindex 3dfade5..3dfade5 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png Binary files differindex 1ee2076..1ee2076 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png Binary files differindex ae680be..ae680be 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png Binary files differindex c2859be..c2859be 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml index 07ad236..07ad236 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/multilength.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png Binary files differindex 80549b4..80549b4 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/multilength.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml index c2fd0d8..c2fd0d8 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/multilength.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data-X11/elide.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png Binary files differindex 5631a46..5631a46 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data-X11/elide.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data-X11/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml index cfd832e..cfd832e 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data-X11/elide.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data-X11/multilength.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png Binary files differindex 6e2b625..6e2b625 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data-X11/multilength.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data-X11/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml index 0c06196..0c06196 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data-X11/multilength.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data/elide.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.0.png Binary files differindex 1a8c89b..1a8c89b 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data/elide.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.qml index 59f17f7..59f17f7 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data/elide.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.qml diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.0.png Binary files differindex 3dfade5..3dfade5 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.1.png Binary files differindex 1ee2076..1ee2076 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.1.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.2.png Binary files differindex ae680be..ae680be 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.2.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.3.png Binary files differindex c2859be..c2859be 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.3.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.qml index c592f18..c592f18 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.qml diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml index fa6b5da..fa6b5da 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/elide.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml new file mode 100644 index 0000000..ecd9470 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml @@ -0,0 +1,12 @@ +import Qt 4.6 + +Rectangle { + width: 500 + height: 100 + + Text { + width: NumberAnimation { from: 500; to: 0; loops: Animation.Infinite; duration: 5000 } + elide: Text.ElideRight + text: 'Here is some very long text that we should truncate when sizing window' + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml new file mode 100644 index 0000000..ab6e1533 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml @@ -0,0 +1,19 @@ +import Qt 4.6 + +Rectangle { + width: 500 + height: 50 + color: "lightBlue" + Rectangle { + width: myText.width + height: myText.height + color: "white" + anchors.centerIn: parent + Text { + id: myText + width: NumberAnimation { from: 500; to: 0; loops: Animation.Infinite; duration: 1000 } + elide: "ElideRight" + text: "Brevity is the soul of wit, and tediousness the limbs and outward flourishes.\x9CBrevity is a great charm of eloquence.\x9CBe concise!\x9CSHHHHHHHHHHHHHHHHHHHHHHHHHHHH" + } + } +} diff --git a/tests/auto/declarative/visual/qdeclarativetext/font/data-MAC/plaintext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png Binary files differindex 67b497f..67b497f 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/font/data-MAC/plaintext.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/font/data-MAC/plaintext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.qml index ab17eb1..ab17eb1 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/font/data-MAC/plaintext.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.qml diff --git a/tests/auto/declarative/visual/qdeclarativetext/font/data-MAC/richtext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png Binary files differindex 6379942..6379942 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/font/data-MAC/richtext.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/font/data-MAC/richtext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.qml index 72499b9..72499b9 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/font/data-MAC/richtext.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.qml diff --git a/tests/auto/declarative/visual/qdeclarativetext/font/data/plaintext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.0.png Binary files differindex 50d56dc..50d56dc 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/font/data/plaintext.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/font/data/plaintext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.qml index f4cbcbd..f4cbcbd 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/font/data/plaintext.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.qml diff --git a/tests/auto/declarative/visual/qdeclarativetext/font/data/richtext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.0.png Binary files differindex 2910670..2910670 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/font/data/richtext.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetext/font/data/richtext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.qml index 9f396c2..9f396c2 100644 --- a/tests/auto/declarative/visual/qdeclarativetext/font/data/richtext.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.qml diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml new file mode 100644 index 0000000..90b5411 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml @@ -0,0 +1,91 @@ +import Qt 4.6 + +Rectangle { + id: s; width: 800; height: 1000; color: "lightsteelblue" + property string text: "The quick brown fox jumps over the lazy dog." + + Column { + spacing: 10 + Text { + text: s.text + } + Text { + text: s.text; font.pixelSize: 18 + } + Text { + text: s.text; font.pointSize: 25 + } + Text { + text: s.text; color: "red"; smooth: true + } + Text { + text: s.text; font.capitalization: "AllUppercase" + } + Text { + text: s.text; font.underline: true + } + Text { + text: s.text; font.overline: true; smooth: true + } + Text { + text: s.text; font.strikeout: true + } + Text { + text: s.text; font.underline: true; font.overline: true; font.strikeout: true + } + Text { + text: s.text; font.letterSpacing: 200 + } + Text { + text: s.text; font.underline: true; font.letterSpacing: 200; font.capitalization: "AllUppercase"; color: "blue" + } + Text { + text: s.text; font.overline: true; font.wordSpacing: 25; font.capitalization: "Capitalize"; color: "green" + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white" + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Sunken; styleColor: "gray" + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Raised; styleColor: "yellow" + } + Text { + text: s.text; horizontalAlignment: Text.AlignLeft; width: 800 + } + Text { + text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: 800; height: 20 + } + Text { + text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: 800; height: 20 + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrapMode: Text.WordWrap; width: 200 + } + Text { + text: s.text; elide: Text.ElideLeft; width: 200 + } + Text { + text: s.text; elide: Text.ElideMiddle; width: 200 + } + Text { + text: s.text; elide: Text.ElideRight; width: 200 + } + Text { + text: s.text; elide: Text.ElideLeft; width: 200; wrapMode: Text.WordWrap + } + Text { + text: s.text; elide: Text.ElideMiddle; width: 200; wrapMode: Text.WordWrap + } + Text { + text: s.text; elide: Text.ElideRight; width: 200; wrapMode: Text.WordWrap + } + Text { + text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.WrapAnywhere + } + Text { + text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.WrapAtWordBoundaryOrAnywhere + } + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml new file mode 100644 index 0000000..0dba47c --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml @@ -0,0 +1,91 @@ +import Qt 4.6 + +Rectangle { + id: s; width: 800; height: 1000; color: "lightsteelblue" + property string text: "<b>The</b> <i>quick</i> <u>brown</u> <o>fox</o> <big>jumps</big> <small>over</small> <tt>the</tt> <s>lazy</s> <em>dog</em>." + + Column { + spacing: 10 + Text { + text: s.text + } + Text { + text: s.text; font.pixelSize: 18 + } + Text { + text: s.text; font.pointSize: 25 + } + Text { + text: s.text; color: "red"; smooth: true + } + Text { + text: s.text; font.capitalization: "AllUppercase" + } + Text { + text: s.text; font.underline: true + } + Text { + text: s.text; font.overline: true; smooth: true + } + Text { + text: s.text; font.strikeout: true + } + Text { + text: s.text; font.underline: true; font.overline: true; font.strikeout: true + } + Text { + text: s.text; font.letterSpacing: 200 + } + Text { + text: s.text; font.underline: true; font.letterSpacing: 200; font.capitalization: "AllUppercase"; color: "blue" + } + Text { + text: s.text; font.overline: true; font.wordSpacing: 25; font.capitalization: "Capitalize"; color: "green" + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white" + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Sunken; styleColor: "gray" + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Raised; styleColor: "yellow" + } + Text { + text: s.text; horizontalAlignment: Text.AlignLeft; width: 800 + } + Text { + text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: 800; height: 20 + } + Text { + text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: 800; height: 20 + } + Text { + text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrapMode: Text.WordWrap; width: 200 + } + Text { + text: s.text; elide: Text.ElideLeft; width: 200 + } + Text { + text: s.text; elide: Text.ElideMiddle; width: 200 + } + Text { + text: s.text; elide: Text.ElideRight; width: 200 + } + Text { + text: s.text; elide: Text.ElideLeft; width: 200; wrapMode: Text.WordWrap + } + Text { + text: s.text; elide: Text.ElideMiddle; width: 200; wrapMode: Text.WordWrap + } + Text { + text: s.text; elide: Text.ElideRight; width: 200; wrapMode: Text.WordWrap + } + Text { + text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.WrapAnywhere + } + Text { + text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.WrapAtWordBoundaryOrAnywhere + } + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml new file mode 100644 index 0000000..5516fc9 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml @@ -0,0 +1,35 @@ +import Qt 4.6 + Rectangle { + resources: [ + Component { id: cursorA + Item { id: cPage; + x: Behavior { NumberAnimation { } } + y: Behavior { NumberAnimation { } } + height: Behavior { NumberAnimation { duration: 200 } } + Rectangle { id: cRectangle; color: "black"; y: 1; width: 1; height: parent.height-2; + Rectangle { id:top; color: "black"; width: 3; height: 1; x: -1; y:0} + Rectangle { id:bottom; color: "black"; width: 3; height: 1; x: -1; anchors.bottom: parent.bottom;} + opacity: 1 + opacity: SequentialAnimation { running: cPage.parent.focus == true; loops: Animation.Infinite; + NumberAnimation { properties: "opacity"; to: 1; duration: 500; easing.type: "InQuad"} + NumberAnimation { properties: "opacity"; to: 0; duration: 500; easing.type: "OutQuad"} + } + } + width: 1; + } + } + ] + width: 400 + height: 200 + color: "white" + TextEdit { id: mainText + text: "Hello World" + cursorDelegate: cursorA + focus: true + font.pixelSize: 28 + selectionColor: "lightsteelblue" + selectedTextColor: "deeppink" + color: "forestgreen" + anchors.centerIn: parent + } +} diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png Binary files differindex 464a578..464a578 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png Binary files differindex 9beb1ca..9beb1ca 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png Binary files differindex 001be30..001be30 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png Binary files differindex fc3e4b3..fc3e4b3 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png Binary files differindex 24f43e6..24f43e6 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png Binary files differindex 001223b..001223b 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png Binary files differindex 7126e07..7126e07 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png Binary files differindex f0bea88..f0bea88 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png Binary files differindex 4381b8d..4381b8d 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml index 8ee92d7..8ee92d7 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png Binary files differindex cc1774f..cc1774f 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png Binary files differindex 60eba16..60eba16 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png Binary files differindex d4663f7..d4663f7 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png Binary files differindex dc1bb52..dc1bb52 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml index 84c16e1..84c16e1 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png Binary files differindex ec65f49..ec65f49 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png Binary files differindex ec65f49..ec65f49 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png Binary files differindex ec65f49..ec65f49 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png Binary files differindex ec65f49..ec65f49 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png Binary files differindex ec65f49..ec65f49 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png Binary files differindex ec65f49..ec65f49 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png Binary files differindex ec65f49..ec65f49 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml index 4ff00f4..4ff00f4 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.0.png Binary files differindex 555996a..555996a 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.png Binary files differindex b705bad..b705bad 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.png Binary files differindex 094cd2a..094cd2a 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.png Binary files differindex 9c519c7..9c519c7 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.png Binary files differindex 3ec77b5..3ec77b5 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.png Binary files differindex 579a66e..579a66e 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.png Binary files differindex 9e5ac90..9e5ac90 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.png Binary files differindex 9f3acfc..9f3acfc 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.7.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.png Binary files differindex f27518a..f27518a 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.8.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.qml index 8578d48..8578d48 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.qml diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.0.png Binary files differindex 95a835a..95a835a 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.1.png Binary files differindex 409192c..409192c 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.1.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.2.png Binary files differindex cd2f112..cd2f112 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.2.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.3.png Binary files differindex 7191c1e..7191c1e 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.3.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.qml index 352c890..352c890 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.qml diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.0.png Binary files differindex ec65f49..ec65f49 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.1.png Binary files differindex ec65f49..ec65f49 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.1.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.2.png Binary files differindex ec65f49..ec65f49 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.2.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.3.png Binary files differindex ec65f49..ec65f49 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.3.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.4.png Binary files differindex ec65f49..ec65f49 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.4.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.5.png Binary files differindex ec65f49..ec65f49 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.5.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.6.png Binary files differindex ec65f49..ec65f49 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.6.png diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.qml index f96daa9..f96daa9 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.qml diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/qt-669.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml index b01ddf8..b01ddf8 100644 --- a/tests/auto/declarative/visual/qdeclarativetextedit/qt-669.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml new file mode 100644 index 0000000..b2a0754 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml @@ -0,0 +1,34 @@ +import Qt 4.6 + +Item { + height:400 + width: 200 + TextEdit { + width: 200 + height: 100 + wrapMode: TextEdit.WordWrap + focus: true + } + //With QTBUG-6273 only the bottom one would be wrapped + TextEdit { + width: 200 + height: 100 + wrapMode: TextEdit.WordWrap + text: "This is a test that text edit wraps correctly." + y:100 + } + TextEdit { + width: 150 + height: 100 + wrapMode: TextEdit.WrapAnywhere + text: "This is a test that text edit wraps correctly. thisisaverylongstringwithnospaces" + y:200 + } + TextEdit { + width: 150 + height: 100 + wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere + text: "This is a test that text edit wraps correctly. thisisaverylongstringwithnospaces" + y:300 + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml new file mode 100644 index 0000000..31f24ec --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml @@ -0,0 +1,67 @@ +import Qt 4.7 + +Item { + id:lineedit + property alias text: textInp.text + + width: textInp.width + 11 + height: 13 + 11 + + Rectangle{ + color: 'lightsteelblue' + anchors.fill: parent + } + clip: true + Component.onCompleted: textInp.cursorPosition = 0; + TextInput{ + id:textInp + cursorDelegate: Item{ + Rectangle{ + visible: parent.parent.focus + color: "#009BCE" + height: 13 + width: 2 + y: 1 + } + } + property int leftMargin: 6 + property int rightMargin: 6 + x: leftMargin + y: 5 + //Below function implements all scrolling logic + onCursorPositionChanged: { + if(cursorRect.x < leftMargin - textInp.x){//Cursor went off the front + textInp.x = leftMargin - Math.max(0, cursorRect.x); + }else if(cursorRect.x > parent.width - leftMargin - rightMargin - textInp.x){//Cusor went off the end + textInp.x = leftMargin - Math.max(0, cursorRect.x - (parent.width - leftMargin - rightMargin)); + } + } + + text:"" + horizontalAlignment: TextInput.AlignLeft + font.pixelSize:15 + } + MouseArea{ + //Implements all line edit mouse handling + id: mainMouseArea + anchors.fill: parent; + function translateX(x){ + return x - textInp.x + } + onPressed: { + textInp.focus = true; + textInp.cursorPosition = textInp.xToPosition(translateX(mouse.x)); + } + onPositionChanged: { + textInp.moveCursorSelection(textInp.xToPosition(translateX(mouse.x))); + } + onReleased: { + } + onDoubleClicked: { + textInp.selectionStart=0; + textInp.selectionEnd=textInp.text.length; + } + z: textInp.z + 1 + } + +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml new file mode 100644 index 0000000..09f16ab --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml @@ -0,0 +1,35 @@ +import Qt 4.6 + Rectangle { + resources: [ + Component { id: cursorA + Item { id: cPage; + Behavior on x { NumberAnimation { } } + Behavior on y { NumberAnimation { } } + Behavior on height { NumberAnimation { duration: 200 } } + Rectangle { id: cRectangle; color: "black"; y: 1; width: 1; height: parent.height-2; + Rectangle { id:top; color: "black"; width: 3; height: 1; x: -1; y:0} + Rectangle { id:bottom; color: "black"; width: 3; height: 1; x: -1; anchors.bottom: parent.bottom;} + opacity: 1 + SequentialAnimation on opacity { running: cPage.parent.focus == true; loops: Animation.Infinite; + NumberAnimation { properties: "opacity"; to: 1; duration: 500; easing.type: "InQuad"} + NumberAnimation { properties: "opacity"; to: 0; duration: 500; easing.type: "OutQuad"} + } + } + width: 1; + } + } + ] + width: 400 + height: 200 + color: "white" + TextInput { id: mainText + text: "Hello World" + cursorDelegate: cursorA + focus: true + font.pixelSize: 28 + selectionColor: "lightsteelblue" + selectedTextColor: "deeppink" + color: "forestgreen" + anchors.centerIn: parent + } +} diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png Binary files differindex 9d0bab2..9d0bab2 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png Binary files differindex db66ff7..db66ff7 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png Binary files differindex cbcca68..cbcca68 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png Binary files differindex c22196b..c22196b 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png Binary files differindex a1d051e..a1d051e 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png Binary files differindex 9289dc0..9289dc0 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.6.png Binary files differindex 7331f89..7331f89 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.6.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.7.png Binary files differindex 968bdd2..968bdd2 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.7.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.7.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.8.png Binary files differindex 9a3436a..9a3436a 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.8.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.8.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml index 3b664b6..3b664b6 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png Binary files differnew file mode 100644 index 0000000..f30ee4f --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png Binary files differnew file mode 100644 index 0000000..7ae3b94 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png Binary files differnew file mode 100644 index 0000000..636afe8 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png Binary files differindex aa24805..aa24805 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.4.png Binary files differindex aa24805..aa24805 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml new file mode 100644 index 0000000..b779c21 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml @@ -0,0 +1,1043 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 32 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Key { + type: 6 + key: 16777248 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 48 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 64 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 80 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 96 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 112 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 128 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 144 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 160 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 176 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 192 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 208 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 224 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 240 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 256 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 272 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 288 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 304 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 320 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 336 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Frame { + msec: 352 + hash: "48400809c3862dae64b0cd00d51057a4" + } + Key { + type: 6 + key: 74 + modifiers: 33554432 + text: "4a" + autorep: false + count: 1 + } + Frame { + msec: 368 + hash: "4acf112eda369b7eb351e0e522cefa05" + } + Frame { + msec: 384 + hash: "4acf112eda369b7eb351e0e522cefa05" + } + Frame { + msec: 400 + hash: "4acf112eda369b7eb351e0e522cefa05" + } + Frame { + msec: 416 + hash: "4acf112eda369b7eb351e0e522cefa05" + } + Frame { + msec: 432 + hash: "4acf112eda369b7eb351e0e522cefa05" + } + Key { + type: 7 + key: 74 + modifiers: 33554432 + text: "4a" + autorep: false + count: 1 + } + Frame { + msec: 448 + hash: "4acf112eda369b7eb351e0e522cefa05" + } + Frame { + msec: 464 + hash: "4acf112eda369b7eb351e0e522cefa05" + } + Frame { + msec: 480 + hash: "4acf112eda369b7eb351e0e522cefa05" + } + Frame { + msec: 496 + hash: "4acf112eda369b7eb351e0e522cefa05" + } + Frame { + msec: 512 + hash: "4acf112eda369b7eb351e0e522cefa05" + } + Frame { + msec: 528 + hash: "4acf112eda369b7eb351e0e522cefa05" + } + Key { + type: 7 + key: 16777248 + modifiers: 33554432 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 544 + hash: "238dc96885dadb763bfc1500d8b7c5b2" + } + Frame { + msec: 560 + hash: "238dc96885dadb763bfc1500d8b7c5b2" + } + Frame { + msec: 576 + hash: "238dc96885dadb763bfc1500d8b7c5b2" + } + Frame { + msec: 592 + hash: "238dc96885dadb763bfc1500d8b7c5b2" + } + Frame { + msec: 608 + hash: "238dc96885dadb763bfc1500d8b7c5b2" + } + Frame { + msec: 624 + hash: "238dc96885dadb763bfc1500d8b7c5b2" + } + Frame { + msec: 640 + hash: "238dc96885dadb763bfc1500d8b7c5b2" + } + Frame { + msec: 656 + hash: "238dc96885dadb763bfc1500d8b7c5b2" + } + Frame { + msec: 672 + hash: "238dc96885dadb763bfc1500d8b7c5b2" + } + Frame { + msec: 688 + hash: "238dc96885dadb763bfc1500d8b7c5b2" + } + Key { + type: 6 + key: 65 + modifiers: 0 + text: "61" + autorep: false + count: 1 + } + Frame { + msec: 704 + hash: "2da540e72d88932b61a261d791fc34b0" + } + Frame { + msec: 720 + hash: "2da540e72d88932b61a261d791fc34b0" + } + Frame { + msec: 736 + hash: "2da540e72d88932b61a261d791fc34b0" + } + Frame { + msec: 752 + hash: "2da540e72d88932b61a261d791fc34b0" + } + Frame { + msec: 768 + hash: "2da540e72d88932b61a261d791fc34b0" + } + Key { + type: 7 + key: 65 + modifiers: 0 + text: "61" + autorep: false + count: 1 + } + Frame { + msec: 784 + hash: "2da540e72d88932b61a261d791fc34b0" + } + Frame { + msec: 800 + hash: "2da540e72d88932b61a261d791fc34b0" + } + Frame { + msec: 816 + hash: "2da540e72d88932b61a261d791fc34b0" + } + Frame { + msec: 832 + hash: "2da540e72d88932b61a261d791fc34b0" + } + Frame { + msec: 848 + hash: "2da540e72d88932b61a261d791fc34b0" + } + Key { + type: 6 + key: 67 + modifiers: 0 + text: "63" + autorep: false + count: 1 + } + Frame { + msec: 864 + hash: "25ade09747f07a9bdd07f5885a72dc55" + } + Frame { + msec: 880 + hash: "25ade09747f07a9bdd07f5885a72dc55" + } + Frame { + msec: 896 + hash: "25ade09747f07a9bdd07f5885a72dc55" + } + Key { + type: 7 + key: 67 + modifiers: 0 + text: "63" + autorep: false + count: 1 + } + Frame { + msec: 912 + hash: "25ade09747f07a9bdd07f5885a72dc55" + } + Frame { + msec: 928 + hash: "25ade09747f07a9bdd07f5885a72dc55" + } + Frame { + msec: 944 + hash: "25ade09747f07a9bdd07f5885a72dc55" + } + Frame { + msec: 960 + image: "echoMode.0.png" + } + Frame { + msec: 976 + hash: "25ade09747f07a9bdd07f5885a72dc55" + } + Key { + type: 6 + key: 75 + modifiers: 0 + text: "6b" + autorep: false + count: 1 + } + Frame { + msec: 992 + hash: "0a60e76e96846f9f4e909f7a01ede377" + } + Frame { + msec: 1008 + hash: "0a60e76e96846f9f4e909f7a01ede377" + } + Frame { + msec: 1024 + hash: "0a60e76e96846f9f4e909f7a01ede377" + } + Frame { + msec: 1040 + hash: "6f28f435e552cbbf6376f2443ed3843c" + } + Key { + type: 7 + key: 75 + modifiers: 0 + text: "6b" + autorep: false + count: 1 + } + Frame { + msec: 1056 + hash: "6f28f435e552cbbf6376f2443ed3843c" + } + Frame { + msec: 1072 + hash: "6f28f435e552cbbf6376f2443ed3843c" + } + Frame { + msec: 1088 + hash: "6f28f435e552cbbf6376f2443ed3843c" + } + Frame { + msec: 1104 + hash: "6f28f435e552cbbf6376f2443ed3843c" + } + Frame { + msec: 1120 + hash: "6f28f435e552cbbf6376f2443ed3843c" + } + Frame { + msec: 1136 + hash: "6f28f435e552cbbf6376f2443ed3843c" + } + Frame { + msec: 1152 + hash: "6f28f435e552cbbf6376f2443ed3843c" + } + Frame { + msec: 1168 + hash: "6f28f435e552cbbf6376f2443ed3843c" + } + Frame { + msec: 1184 + hash: "6f28f435e552cbbf6376f2443ed3843c" + } + Frame { + msec: 1200 + hash: "6f28f435e552cbbf6376f2443ed3843c" + } + Frame { + msec: 1216 + hash: "6f28f435e552cbbf6376f2443ed3843c" + } + Frame { + msec: 1232 + hash: "6f28f435e552cbbf6376f2443ed3843c" + } + Key { + type: 6 + key: 68 + modifiers: 0 + text: "64" + autorep: false + count: 1 + } + Frame { + msec: 1248 + hash: "16a353e711a8fb654b5fe3097ba29296" + } + Frame { + msec: 1264 + hash: "16a353e711a8fb654b5fe3097ba29296" + } + Frame { + msec: 1280 + hash: "16a353e711a8fb654b5fe3097ba29296" + } + Key { + type: 7 + key: 68 + modifiers: 0 + text: "64" + autorep: false + count: 1 + } + Frame { + msec: 1296 + hash: "16a353e711a8fb654b5fe3097ba29296" + } + Frame { + msec: 1312 + hash: "16a353e711a8fb654b5fe3097ba29296" + } + Frame { + msec: 1328 + hash: "16a353e711a8fb654b5fe3097ba29296" + } + Key { + type: 6 + key: 65 + modifiers: 0 + text: "61" + autorep: false + count: 1 + } + Frame { + msec: 1344 + hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d" + } + Frame { + msec: 1360 + hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d" + } + Frame { + msec: 1376 + hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d" + } + Frame { + msec: 1392 + hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d" + } + Frame { + msec: 1408 + hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d" + } + Frame { + msec: 1424 + hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d" + } + Frame { + msec: 1440 + hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d" + } + Frame { + msec: 1456 + hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d" + } + Frame { + msec: 1472 + hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d" + } + Key { + type: 7 + key: 65 + modifiers: 0 + text: "61" + autorep: false + count: 1 + } + Frame { + msec: 1488 + hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d" + } + Key { + type: 6 + key: 87 + modifiers: 0 + text: "77" + autorep: false + count: 1 + } + Frame { + msec: 1504 + hash: "fe0e4e097f655e0b330ed6fcfce669c2" + } + Frame { + msec: 1520 + hash: "fe0e4e097f655e0b330ed6fcfce669c2" + } + Frame { + msec: 1536 + hash: "522f11cbb8da0cca25af91d3f6d5240b" + } + Frame { + msec: 1552 + hash: "522f11cbb8da0cca25af91d3f6d5240b" + } + Key { + type: 7 + key: 87 + modifiers: 0 + text: "77" + autorep: false + count: 1 + } + Frame { + msec: 1568 + hash: "522f11cbb8da0cca25af91d3f6d5240b" + } + Frame { + msec: 1584 + hash: "522f11cbb8da0cca25af91d3f6d5240b" + } + Frame { + msec: 1600 + hash: "522f11cbb8da0cca25af91d3f6d5240b" + } + Frame { + msec: 1616 + hash: "522f11cbb8da0cca25af91d3f6d5240b" + } + Frame { + msec: 1632 + hash: "522f11cbb8da0cca25af91d3f6d5240b" + } + Frame { + msec: 1648 + hash: "522f11cbb8da0cca25af91d3f6d5240b" + } + Key { + type: 6 + key: 83 + modifiers: 0 + text: "73" + autorep: false + count: 1 + } + Frame { + msec: 1664 + hash: "f459ca172e643d6e22c38067f8ced305" + } + Frame { + msec: 1680 + hash: "f459ca172e643d6e22c38067f8ced305" + } + Frame { + msec: 1696 + hash: "f459ca172e643d6e22c38067f8ced305" + } + Frame { + msec: 1712 + hash: "f459ca172e643d6e22c38067f8ced305" + } + Frame { + msec: 1728 + hash: "f459ca172e643d6e22c38067f8ced305" + } + Key { + type: 6 + key: 32 + modifiers: 0 + text: "20" + autorep: false + count: 1 + } + Frame { + msec: 1744 + hash: "0016ecff508885d3a199b27baa9b7ecf" + } + Key { + type: 7 + key: 83 + modifiers: 0 + text: "73" + autorep: false + count: 1 + } + Frame { + msec: 1760 + hash: "0016ecff508885d3a199b27baa9b7ecf" + } + Frame { + msec: 1776 + hash: "0016ecff508885d3a199b27baa9b7ecf" + } + Frame { + msec: 1792 + hash: "0016ecff508885d3a199b27baa9b7ecf" + } + Key { + type: 7 + key: 32 + modifiers: 0 + text: "20" + autorep: false + count: 1 + } + Frame { + msec: 1808 + hash: "0016ecff508885d3a199b27baa9b7ecf" + } + Frame { + msec: 1824 + hash: "0016ecff508885d3a199b27baa9b7ecf" + } + Frame { + msec: 1840 + hash: "0016ecff508885d3a199b27baa9b7ecf" + } + Frame { + msec: 1856 + hash: "0016ecff508885d3a199b27baa9b7ecf" + } + Key { + type: 6 + key: 76 + modifiers: 0 + text: "6c" + autorep: false + count: 1 + } + Frame { + msec: 1872 + hash: "05c631afb9df51c23b1f714a7de92788" + } + Frame { + msec: 1888 + hash: "05c631afb9df51c23b1f714a7de92788" + } + Frame { + msec: 1904 + hash: "05c631afb9df51c23b1f714a7de92788" + } + Frame { + msec: 1920 + image: "echoMode.1.png" + } + Key { + type: 7 + key: 76 + modifiers: 0 + text: "6c" + autorep: false + count: 1 + } + Frame { + msec: 1936 + hash: "05c631afb9df51c23b1f714a7de92788" + } + Frame { + msec: 1952 + hash: "05c631afb9df51c23b1f714a7de92788" + } + Frame { + msec: 1968 + hash: "05c631afb9df51c23b1f714a7de92788" + } + Frame { + msec: 1984 + hash: "05c631afb9df51c23b1f714a7de92788" + } + Frame { + msec: 2000 + hash: "05c631afb9df51c23b1f714a7de92788" + } + Frame { + msec: 2016 + hash: "05c631afb9df51c23b1f714a7de92788" + } + Key { + type: 6 + key: 79 + modifiers: 0 + text: "6f" + autorep: false + count: 1 + } + Frame { + msec: 2032 + hash: "95ad72a49b991225e2ed5ae9c2a7b4e5" + } + Frame { + msec: 2048 + hash: "95ad72a49b991225e2ed5ae9c2a7b4e5" + } + Key { + type: 7 + key: 79 + modifiers: 0 + text: "6f" + autorep: false + count: 1 + } + Frame { + msec: 2064 + hash: "95ad72a49b991225e2ed5ae9c2a7b4e5" + } + Frame { + msec: 2080 + hash: "95ad72a49b991225e2ed5ae9c2a7b4e5" + } + Key { + type: 6 + key: 86 + modifiers: 0 + text: "76" + autorep: false + count: 1 + } + Frame { + msec: 2096 + hash: "7f2366b163c110a50259936c150d8287" + } + Frame { + msec: 2112 + hash: "7f2366b163c110a50259936c150d8287" + } + Frame { + msec: 2128 + hash: "7f2366b163c110a50259936c150d8287" + } + Frame { + msec: 2144 + hash: "7f2366b163c110a50259936c150d8287" + } + Key { + type: 6 + key: 69 + modifiers: 0 + text: "65" + autorep: false + count: 1 + } + Key { + type: 7 + key: 86 + modifiers: 0 + text: "76" + autorep: false + count: 1 + } + Frame { + msec: 2160 + hash: "b5110b1a7aa74f7b4ed72f573f10b1fe" + } + Frame { + msec: 2176 + hash: "b5110b1a7aa74f7b4ed72f573f10b1fe" + } + Frame { + msec: 2192 + hash: "b5110b1a7aa74f7b4ed72f573f10b1fe" + } + Frame { + msec: 2208 + hash: "b5110b1a7aa74f7b4ed72f573f10b1fe" + } + Key { + type: 6 + key: 32 + modifiers: 0 + text: "20" + autorep: false + count: 1 + } + Frame { + msec: 2224 + hash: "30cdfb276e7a234c72d89a03e6a10dc5" + } + Key { + type: 7 + key: 69 + modifiers: 0 + text: "65" + autorep: false + count: 1 + } + Frame { + msec: 2240 + hash: "30cdfb276e7a234c72d89a03e6a10dc5" + } + Frame { + msec: 2256 + hash: "30cdfb276e7a234c72d89a03e6a10dc5" + } + Frame { + msec: 2272 + hash: "30cdfb276e7a234c72d89a03e6a10dc5" + } + Frame { + msec: 2288 + hash: "30cdfb276e7a234c72d89a03e6a10dc5" + } + Frame { + msec: 2304 + hash: "30cdfb276e7a234c72d89a03e6a10dc5" + } + Key { + type: 7 + key: 32 + modifiers: 0 + text: "20" + autorep: false + count: 1 + } + Frame { + msec: 2320 + hash: "30cdfb276e7a234c72d89a03e6a10dc5" + } + Frame { + msec: 2336 + hash: "30cdfb276e7a234c72d89a03e6a10dc5" + } + Key { + type: 6 + key: 77 + modifiers: 0 + text: "6d" + autorep: false + count: 1 + } + Frame { + msec: 2352 + hash: "c0f7406f3718ab0120c79ff119d6986c" + } + Frame { + msec: 2368 + hash: "c0f7406f3718ab0120c79ff119d6986c" + } + Frame { + msec: 2384 + hash: "c0f7406f3718ab0120c79ff119d6986c" + } + Frame { + msec: 2400 + hash: "c0f7406f3718ab0120c79ff119d6986c" + } + Frame { + msec: 2416 + hash: "c0f7406f3718ab0120c79ff119d6986c" + } + Frame { + msec: 2432 + hash: "c0f7406f3718ab0120c79ff119d6986c" + } + Key { + type: 7 + key: 77 + modifiers: 0 + text: "6d" + autorep: false + count: 1 + } + Frame { + msec: 2448 + hash: "c0f7406f3718ab0120c79ff119d6986c" + } + Frame { + msec: 2464 + hash: "c0f7406f3718ab0120c79ff119d6986c" + } + Frame { + msec: 2480 + hash: "c0f7406f3718ab0120c79ff119d6986c" + } + Frame { + msec: 2496 + hash: "c0f7406f3718ab0120c79ff119d6986c" + } + Key { + type: 6 + key: 89 + modifiers: 0 + text: "79" + autorep: false + count: 1 + } + Frame { + msec: 2512 + hash: "870d7866b8e289b4843b62c856d769d4" + } + Frame { + msec: 2528 + hash: "870d7866b8e289b4843b62c856d769d4" + } + Frame { + msec: 2544 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Key { + type: 7 + key: 89 + modifiers: 0 + text: "79" + autorep: false + count: 1 + } + Frame { + msec: 2560 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2576 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2592 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2608 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2624 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2640 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2656 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2672 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2688 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2704 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2720 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2736 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2752 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2768 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2784 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2800 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2816 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2832 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2848 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2864 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2880 + image: "echoMode.2.png" + } + Frame { + msec: 2896 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2912 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2928 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2944 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2960 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2976 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 2992 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 3008 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 3024 + hash: "84e1cbf26e6b571603e0b9e69579af8b" + } + Frame { + msec: 3040 + hash: "870d7866b8e289b4843b62c856d769d4" + } + Frame { + msec: 3056 + hash: "870d7866b8e289b4843b62c856d769d4" + } +} diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/hAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png Binary files differindex 87c2e07..87c2e07 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/hAlign.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/hAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml index e29ac56..e29ac56 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/hAlign.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.0.png Binary files differnew file mode 100644 index 0000000..b064e79 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.1.png Binary files differnew file mode 100644 index 0000000..7dd1bd8 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.10.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.10.png Binary files differnew file mode 100644 index 0000000..d8e55e2 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.10.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.2.png Binary files differnew file mode 100644 index 0000000..f9f1744 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.3.png Binary files differnew file mode 100644 index 0000000..70ae713 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.4.png Binary files differnew file mode 100644 index 0000000..9ce28db --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.5.png Binary files differnew file mode 100644 index 0000000..2ef2ac0 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.5.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.6.png Binary files differnew file mode 100644 index 0000000..2a614f8 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.6.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.7.png Binary files differnew file mode 100644 index 0000000..f916c97 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.7.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.8.png Binary files differnew file mode 100644 index 0000000..56bf00b --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.8.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.9.png Binary files differnew file mode 100644 index 0000000..97847d9 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.9.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.qml new file mode 100644 index 0000000..645b447 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.qml @@ -0,0 +1,4335 @@ +import Qt.VisualTest 4.6 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 32 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 48 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 64 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 80 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 96 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 112 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 128 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 144 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 160 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 176 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 192 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 208 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 224 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 240 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 256 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 272 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 288 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 304 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 320 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 336 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 352 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 368 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 384 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 400 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 416 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 432 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 448 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 464 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 480 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 496 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 512 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 528 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 544 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 560 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 576 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 592 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 608 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 624 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 640 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 656 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 672 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 688 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 704 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 720 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 736 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 752 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 768 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 784 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 800 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 816 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 832 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 848 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 864 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 880 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 896 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 912 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Frame { + msec: 928 + hash: "a6d33b1212bb4d1241734bfff167d1a5" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 85; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 944 + hash: "c83faf1ed7b59715046e1abef04fa546" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 85; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 960 + image: "usingLineEdit.0.png" + } + Mouse { + type: 4 + button: 1 + buttons: 1 + x: 85; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 976 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 992 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1008 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1024 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1040 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1056 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 85; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1072 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1088 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1104 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1120 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1136 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1152 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1168 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1184 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1200 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1216 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1232 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1248 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1264 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1280 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1296 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1312 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1328 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1344 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1360 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 1376 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1392 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1408 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1424 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1440 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1456 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1472 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1488 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1504 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1520 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1536 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1552 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1568 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1584 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1600 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1616 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1632 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1648 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1664 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1680 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1696 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1712 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1728 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1744 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1760 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1776 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1792 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1808 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1824 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1840 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1856 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1872 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1888 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1904 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1920 + image: "usingLineEdit.1.png" + } + Frame { + msec: 1936 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1952 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1968 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 1984 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Key { + type: 6 + key: 67 + modifiers: 67108864 + text: "03" + autorep: false + count: 1 + } + Frame { + msec: 2000 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2016 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2032 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2048 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2064 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2080 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2096 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2112 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Key { + type: 7 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Key { + type: 7 + key: 67 + modifiers: 0 + text: "63" + autorep: false + count: 1 + } + Frame { + msec: 2128 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2144 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2160 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2176 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2192 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2208 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2224 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2240 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2256 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2272 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2288 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2304 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2320 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2336 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2352 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2368 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2384 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2400 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2416 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2432 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2448 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2464 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Frame { + msec: 2480 + hash: "3b899cd28b58c3f94946286a0ddcab89" + } + Key { + type: 6 + key: 16777233 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 2496 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2512 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2528 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2544 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2560 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2576 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Key { + type: 7 + key: 16777233 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 2592 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2608 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2624 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2640 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2656 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2672 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2688 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2704 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2720 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2736 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2752 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2768 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2784 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 2800 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2816 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2832 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2848 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2864 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2880 + image: "usingLineEdit.2.png" + } + Frame { + msec: 2896 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2912 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2928 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2944 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2960 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2976 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 2992 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 3008 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 3024 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 3040 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 3056 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 3072 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 3088 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 3104 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 3120 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 3136 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 3152 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 3168 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 3184 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 3200 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Frame { + msec: 3216 + hash: "f2a573f227a3eb84f60418d0f3e81fb3" + } + Key { + type: 6 + key: 86 + modifiers: 67108864 + text: "16" + autorep: false + count: 1 + } + Frame { + msec: 3232 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3248 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3264 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3280 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3296 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3312 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3328 + hash: "202ad01bacfb48341efdd85197df6964" + } + Key { + type: 7 + key: 86 + modifiers: 67108864 + text: "16" + autorep: false + count: 1 + } + Frame { + msec: 3344 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3360 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3376 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3392 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3408 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3424 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3440 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3456 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3472 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3488 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3504 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3520 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3536 + hash: "202ad01bacfb48341efdd85197df6964" + } + Frame { + msec: 3552 + hash: "202ad01bacfb48341efdd85197df6964" + } + Key { + type: 6 + key: 86 + modifiers: 67108864 + text: "16" + autorep: false + count: 1 + } + Frame { + msec: 3568 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3584 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3600 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3616 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3632 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3648 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3664 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3680 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Key { + type: 7 + key: 86 + modifiers: 67108864 + text: "16" + autorep: false + count: 1 + } + Frame { + msec: 3696 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3712 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3728 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3744 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3760 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3776 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3792 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3808 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3824 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3840 + image: "usingLineEdit.3.png" + } + Frame { + msec: 3856 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3872 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3888 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3904 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3920 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3936 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3952 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3968 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 3984 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4000 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4016 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4032 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4048 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4064 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4080 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4096 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4112 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4128 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4144 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4160 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4176 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4192 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Key { + type: 7 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 4208 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4224 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4240 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4256 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4272 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4288 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4304 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4320 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4336 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4352 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4368 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4384 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4400 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4416 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4432 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4448 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4464 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4480 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4496 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4512 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4528 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4544 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4560 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4576 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4592 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4608 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4624 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4640 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4656 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4672 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4688 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Frame { + msec: 4704 + hash: "eac37a53473ad7f378a2a1bb37fa6b58" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 69; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4720 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4736 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4752 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4768 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4784 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4800 + image: "usingLineEdit.4.png" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 69; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4816 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4832 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4848 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4864 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4880 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4896 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4912 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4928 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4944 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4960 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4976 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 4992 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5008 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5024 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5040 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5056 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5072 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5088 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5104 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5120 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5136 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5152 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5168 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5184 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5200 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5216 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5232 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5248 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5264 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5280 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5296 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5312 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5328 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5344 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Frame { + msec: 5360 + hash: "c65ff28e032b18223c65f8810b39d603" + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5376 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5392 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5408 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5424 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5440 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5456 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5472 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5488 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5504 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5520 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5536 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5552 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5568 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5584 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5600 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Frame { + msec: 5616 + hash: "8c755780c2d281aba23c507bcebfd5db" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5632 + hash: "baa42bc9d5e16c3e7af81e126d37655a" + } + Frame { + msec: 5648 + hash: "baa42bc9d5e16c3e7af81e126d37655a" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5664 + hash: "aa876e6d6ff0f169bcc3cf25be5e7a81" + } + Frame { + msec: 5680 + hash: "aa876e6d6ff0f169bcc3cf25be5e7a81" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5696 + hash: "8ec4c1a8ae28af44dcabf338fc056717" + } + Frame { + msec: 5712 + hash: "8ec4c1a8ae28af44dcabf338fc056717" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5728 + hash: "ec0da333c0bc090eec0ded5e4d18bd6e" + } + Frame { + msec: 5744 + hash: "ec0da333c0bc090eec0ded5e4d18bd6e" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5760 + image: "usingLineEdit.5.png" + } + Frame { + msec: 5776 + hash: "325ba5789a6150ec0fef81fa5b005c09" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5792 + hash: "023dd8fe428b1ed0f4c994f7e67ac3cd" + } + Frame { + msec: 5808 + hash: "023dd8fe428b1ed0f4c994f7e67ac3cd" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5824 + hash: "f661f599f576ae883f25422b20408138" + } + Frame { + msec: 5840 + hash: "f661f599f576ae883f25422b20408138" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5856 + hash: "f661f599f576ae883f25422b20408138" + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5872 + hash: "8e7ad34802a0ced493e88b779c73cc47" + } + Frame { + msec: 5888 + hash: "8e7ad34802a0ced493e88b779c73cc47" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5904 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5920 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Frame { + msec: 5936 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Frame { + msec: 5952 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Frame { + msec: 5968 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Frame { + msec: 5984 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Frame { + msec: 6000 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Frame { + msec: 6016 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Frame { + msec: 6032 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Frame { + msec: 6048 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6064 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Frame { + msec: 6080 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Frame { + msec: 6096 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Frame { + msec: 6112 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Frame { + msec: 6128 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Frame { + msec: 6144 + hash: "943c7ec51fbe8db38fcd3086990fa4e0" + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6160 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6176 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6192 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6208 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6224 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6240 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6256 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6272 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6288 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6304 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6320 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6336 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6352 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6368 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6384 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Frame { + msec: 6400 + hash: "bd2e37c4ac90a6389f7f4e1e1360b31b" + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6416 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6432 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6448 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6464 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6480 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6496 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6512 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6528 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6544 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6560 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6576 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6592 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6608 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6624 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6640 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6656 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6672 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6688 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6704 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6720 + image: "usingLineEdit.6.png" + } + Frame { + msec: 6736 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6752 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6768 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6784 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6800 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6816 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6832 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6848 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6864 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6880 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6896 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6912 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6928 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Frame { + msec: 6944 + hash: "608bba00320e20da05aa2a6bbcba6e19" + } + Key { + type: 6 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6960 + hash: "40456a6d22e09e1817b07f3898676524" + } + Frame { + msec: 6976 + hash: "40456a6d22e09e1817b07f3898676524" + } + Frame { + msec: 6992 + hash: "40456a6d22e09e1817b07f3898676524" + } + Frame { + msec: 7008 + hash: "40456a6d22e09e1817b07f3898676524" + } + Key { + type: 7 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7024 + hash: "40456a6d22e09e1817b07f3898676524" + } + Frame { + msec: 7040 + hash: "40456a6d22e09e1817b07f3898676524" + } + Frame { + msec: 7056 + hash: "40456a6d22e09e1817b07f3898676524" + } + Frame { + msec: 7072 + hash: "40456a6d22e09e1817b07f3898676524" + } + Frame { + msec: 7088 + hash: "40456a6d22e09e1817b07f3898676524" + } + Key { + type: 6 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7104 + hash: "dada78341b65c1efb2816e16a8cbe8b5" + } + Frame { + msec: 7120 + hash: "dada78341b65c1efb2816e16a8cbe8b5" + } + Frame { + msec: 7136 + hash: "dada78341b65c1efb2816e16a8cbe8b5" + } + Frame { + msec: 7152 + hash: "dada78341b65c1efb2816e16a8cbe8b5" + } + Key { + type: 7 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7168 + hash: "dada78341b65c1efb2816e16a8cbe8b5" + } + Frame { + msec: 7184 + hash: "dada78341b65c1efb2816e16a8cbe8b5" + } + Frame { + msec: 7200 + hash: "dada78341b65c1efb2816e16a8cbe8b5" + } + Frame { + msec: 7216 + hash: "dada78341b65c1efb2816e16a8cbe8b5" + } + Frame { + msec: 7232 + hash: "dada78341b65c1efb2816e16a8cbe8b5" + } + Frame { + msec: 7248 + hash: "dada78341b65c1efb2816e16a8cbe8b5" + } + Frame { + msec: 7264 + hash: "dada78341b65c1efb2816e16a8cbe8b5" + } + Key { + type: 6 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7280 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7296 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7312 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7328 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7344 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Key { + type: 7 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7360 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7376 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7392 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7408 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7424 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7440 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7456 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7472 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7488 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7504 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7520 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Key { + type: 7 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7536 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7552 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7568 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7584 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7600 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7616 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7632 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7648 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7664 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7680 + image: "usingLineEdit.7.png" + } + Frame { + msec: 7696 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7712 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7728 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7744 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7760 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7776 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7792 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7808 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7824 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7840 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7856 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7872 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7888 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7904 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7920 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7936 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7952 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7968 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 7984 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8000 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8016 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8032 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8048 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8064 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8080 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8096 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8112 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8128 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8144 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8160 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8176 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8192 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8208 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8224 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8240 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8256 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8272 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8288 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8304 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8320 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8336 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8352 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8368 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8384 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8400 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8416 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8432 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8448 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8464 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8480 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Frame { + msec: 8496 + hash: "f249bfae1934844abfd5fc158a9c89cf" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 61; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8512 + hash: "e594125fb367adee5b6acdb1268c86cd" + } + Frame { + msec: 8528 + hash: "e594125fb367adee5b6acdb1268c86cd" + } + Frame { + msec: 8544 + hash: "e594125fb367adee5b6acdb1268c86cd" + } + Frame { + msec: 8560 + hash: "e594125fb367adee5b6acdb1268c86cd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 60; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 58; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8576 + hash: "e594125fb367adee5b6acdb1268c86cd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8592 + hash: "7d4116a8689b6995702a042d974ef74b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 41; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8608 + hash: "cb9221f27ac24e4b6b103ca53acad3b3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 32; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8624 + hash: "074bc6abd9a67db829ae5d6c5f187fb6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 31; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 30; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8640 + image: "usingLineEdit.8.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 29; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8656 + hash: "074bc6abd9a67db829ae5d6c5f187fb6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 28; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 27; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8672 + hash: "074bc6abd9a67db829ae5d6c5f187fb6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 26; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8688 + hash: "7e403c56d5652321a7701529fc6b8098" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 25; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 24; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8704 + hash: "7e403c56d5652321a7701529fc6b8098" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 23; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 22; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8720 + hash: "7e403c56d5652321a7701529fc6b8098" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 20; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 19; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8736 + hash: "7e403c56d5652321a7701529fc6b8098" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 18; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 17; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8752 + hash: "2435f2526b3ccc12b7b573872b40e5f1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 16; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 15; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8768 + hash: "2435f2526b3ccc12b7b573872b40e5f1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 14; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 13; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8784 + hash: "2435f2526b3ccc12b7b573872b40e5f1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 12; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 11; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8800 + hash: "2435f2526b3ccc12b7b573872b40e5f1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 10; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 8; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8816 + hash: "f5a185b954e8b181222cc50075d8ebb6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 6; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 5; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8832 + hash: "93a00b37c5027650791d1ff589408d0d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 3; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 2; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8848 + hash: "0b29f6006be3604ef862db7d31f9a434" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 0; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -1; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8864 + hash: "8390b63b71e1452cb93c576a3f2395e1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -2; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -3; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8880 + hash: "72298910946a4e1a9ccc4520d99e9420" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -5; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -6; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8896 + hash: "17d349b0ed29d6aa57bf8fda9a55abf8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -7; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -9; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8912 + hash: "01e8a877d51f5564aaf2f11e7aadbc4a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -10; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -11; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8928 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -12; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -13; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8944 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -14; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -15; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8960 + hash: "bc8f49abd277f5f15d422341de212183" + } + Frame { + msec: 8976 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -16; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -17; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8992 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -18; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9008 + hash: "bc8f49abd277f5f15d422341de212183" + } + Frame { + msec: 9024 + hash: "bc8f49abd277f5f15d422341de212183" + } + Frame { + msec: 9040 + hash: "bc8f49abd277f5f15d422341de212183" + } + Frame { + msec: 9056 + hash: "bc8f49abd277f5f15d422341de212183" + } + Frame { + msec: 9072 + hash: "bc8f49abd277f5f15d422341de212183" + } + Frame { + msec: 9088 + hash: "bc8f49abd277f5f15d422341de212183" + } + Frame { + msec: 9104 + hash: "bc8f49abd277f5f15d422341de212183" + } + Frame { + msec: 9120 + hash: "bc8f49abd277f5f15d422341de212183" + } + Frame { + msec: 9136 + hash: "bc8f49abd277f5f15d422341de212183" + } + Frame { + msec: 9152 + hash: "bc8f49abd277f5f15d422341de212183" + } + Frame { + msec: 9168 + hash: "bc8f49abd277f5f15d422341de212183" + } + Frame { + msec: 9184 + hash: "bc8f49abd277f5f15d422341de212183" + } + Frame { + msec: 9200 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -17; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9216 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -16; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9232 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -14; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -13; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9248 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -11; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -10; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9264 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -8; y: 34 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -7; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9280 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -6; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -5; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9296 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -3; y: 32 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -1; y: 32 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9312 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 1; y: 31 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 3; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9328 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 4; y: 31 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 6; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9344 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 7; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 8; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9360 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 10; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 11; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9376 + hash: "bc8f49abd277f5f15d422341de212183" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 12; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 14; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9392 + hash: "12e705f08ff90fd8ddb1937e5a7e23a0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 15; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 17; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9408 + hash: "12e705f08ff90fd8ddb1937e5a7e23a0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 21; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 24; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9424 + hash: "4daae0f05ff1b7ef68ed1d839b113dc4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 27; y: 31 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 30; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9440 + hash: "a1186544d7f5576e6ccbbd7938c1c374" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 33; y: 32 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 35; y: 32 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9456 + hash: "6ce09c9a06135d2280e4f7bc1c81b70e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 38; y: 32 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 39; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9472 + hash: "6ce09c9a06135d2280e4f7bc1c81b70e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 43; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 45; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9488 + hash: "035b177c3cacd8cdef807d5673de4607" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9504 + hash: "7b7e3c4600f3af7bd0f45799661db993" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9520 + hash: "7b7e3c4600f3af7bd0f45799661db993" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 55; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9536 + hash: "7b7e3c4600f3af7bd0f45799661db993" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 56; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 58; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9552 + hash: "859950e1cf496ef830a30b3a0ec801ac" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 61; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 64; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9568 + hash: "859950e1cf496ef830a30b3a0ec801ac" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 67; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9584 + hash: "be7343825b6adcb16f49e20ee2bdf19f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 73; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 74; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9600 + image: "usingLineEdit.9.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 76; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9616 + hash: "597923ce1046fbf4b728545c54c97fa5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 77; y: 34 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 78; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9632 + hash: "597923ce1046fbf4b728545c54c97fa5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 79; y: 34 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 80; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9648 + hash: "597923ce1046fbf4b728545c54c97fa5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 81; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 84; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9664 + hash: "2fc5c42f94350f28ae0117bc7f6daff1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 88; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9680 + hash: "4b4ec69d583151f1a64052d696966f9c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 91; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9696 + hash: "0882a25ac1c2b534367736d825a73630" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 94; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9712 + hash: "d5b6acc155f827c05b0c4c289a2e3eec" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 95; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 96; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9728 + hash: "a05b3f2f9f22249ab694ac45e1de7b85" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 98; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 100; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9744 + hash: "5b0e034813f8543627f370efdcf3591e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 102; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 104; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9760 + hash: "5b8d80b9d7e2a8c1a24c28e127d0f7e5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 105; y: 39 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 108; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9776 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 109; y: 39 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 110; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9792 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 111; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9808 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 112; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9824 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 113; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9840 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 114; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9856 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 9872 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 115; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9888 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 116; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9904 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 117; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9920 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 118; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9936 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 9952 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 119; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9968 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 120; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9984 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 121; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 10000 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10016 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 122; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 10032 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10048 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10064 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10080 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10096 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10112 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10128 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10144 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10160 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10176 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10192 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10208 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10224 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10240 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 122; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 10256 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10272 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10288 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10304 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10320 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10336 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10352 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10368 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10384 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10400 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10416 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10432 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10448 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10464 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10480 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10496 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10512 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10528 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10544 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10560 + image: "usingLineEdit.10.png" + } + Frame { + msec: 10576 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10592 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10608 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10624 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10640 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10656 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10672 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10688 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10704 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10720 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10736 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10752 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10768 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10784 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10800 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10816 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10832 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10848 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10864 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10880 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10896 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10912 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10928 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10944 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10960 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10976 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 10992 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11008 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11024 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11040 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11056 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11072 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11088 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11104 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11120 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11136 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11152 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11168 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11184 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11200 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11216 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11232 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11248 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } + Frame { + msec: 11264 + hash: "66715d4a4f83d0e5905adbc4c459b0fb" + } +} diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.0.png Binary files differindex f04f65e..f04f65e 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.1.png Binary files differindex 46a703a..46a703a 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.1.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.2.png Binary files differindex e4a3877..e4a3877 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.2.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.3.png Binary files differindex 9ef842a..9ef842a 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.3.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.4.png Binary files differindex 706e2b3..706e2b3 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.4.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.5.png Binary files differindex bcc86cc..bcc86cc 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.5.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.6.png Binary files differindex 51ddd44..51ddd44 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.6.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.7.png Binary files differindex 0a2fdda..0a2fdda 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.7.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.7.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.8.png Binary files differindex 9c88bff..9c88bff 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.8.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.8.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.qml index df2dd38..df2dd38 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.qml diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.0.png Binary files differindex 2b45a06..2b45a06 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.1.png Binary files differindex 1f5bae0..1f5bae0 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.1.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.2.png Binary files differindex cb2b5a4..cb2b5a4 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.2.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.3.png Binary files differindex aa24805..aa24805 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.3.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.4.png Binary files differindex aa24805..aa24805 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.4.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.qml index 873a86d..873a86d 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.qml diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/hAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.0.png Binary files differindex 87c2e07..87c2e07 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/hAlign.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.0.png diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/hAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.qml index e29ac56..e29ac56 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/hAlign.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.qml diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml new file mode 100644 index 0000000..ed8bc2c --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml @@ -0,0 +1,10 @@ +import Qt 4.6 + +Item{ + height: 50; width: 200 + Column{ + //Not an exhaustive echo mode test, that's in QLineEdit (since the functionality is in QLineControl) + TextInput{ id: main; focus: true; echoMode: TextInput.Password; passwordCharacter: '.' } + Text{ text: main.text } + } +} diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/hAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml index 2d65adf..2d65adf 100644 --- a/tests/auto/declarative/visual/qdeclarativetextinput/hAlign.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/usingLineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/usingLineEdit.qml new file mode 100644 index 0000000..2465866 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/usingLineEdit.qml @@ -0,0 +1,10 @@ +import Qt 4.7 + +Rectangle{ + width: 600 + height: 200 + Column{ + LineEdit{text: 'Hello world'} + LineEdit{text: 'Hello underwhelmingly verbose world'; width: 80; height: 24;} + } +} diff --git a/tests/auto/declarative/qmlvisual/qfxwebview/autosize/autosize.qml b/tests/auto/declarative/qmlvisual/qfxwebview/autosize/autosize.qml new file mode 100644 index 0000000..3c00ee6 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qfxwebview/autosize/autosize.qml @@ -0,0 +1,61 @@ +import Qt 4.6 +import org.webkit 1.0 + +// The WebView size is determined by the width, height, +// preferredWidth, and preferredHeight properties. +Rectangle { + id: rect + color: "white" + width: 200 + height: layout.height + Column { + id: layout + spacing: 2 + WebView { + html: "No width defined." + Rectangle { color: "#10000000" + anchors.fill: parent + } + } + WebView { + width: rect.width + html: "The width is full." + Rectangle { + color: "#10000000" + anchors.fill: parent + } + } + WebView { + width: rect.width/2 + html: "The width is half." + Rectangle { + color: "#10000000" + anchors.fill: parent + } + } + WebView { + preferredWidth: rect.width/2 + html: "The preferredWidth is half." + Rectangle { + color: "#10000000" + anchors.fill: parent + } + } + WebView { + preferredWidth: rect.width/2 + html: "The_preferredWidth_is_half." + Rectangle { + color: "#10000000" + anchors.fill: parent + } + } + WebView { + width: rect.width/2 + html: "The_width_is_half." + Rectangle { + color: "#10000000" + anchors.fill: parent + } + } + } +} diff --git a/tests/auto/declarative/visual/qfxwebview/autosize/data/autosize.0.png b/tests/auto/declarative/qmlvisual/qfxwebview/autosize/data-X11/autosize.0.png Binary files differindex 1f28b9a..1f28b9a 100644 --- a/tests/auto/declarative/visual/qfxwebview/autosize/data/autosize.0.png +++ b/tests/auto/declarative/qmlvisual/qfxwebview/autosize/data-X11/autosize.0.png diff --git a/tests/auto/declarative/visual/qfxwebview/autosize/data-X11/autosize.qml b/tests/auto/declarative/qmlvisual/qfxwebview/autosize/data-X11/autosize.qml index d920a4c..d920a4c 100644 --- a/tests/auto/declarative/visual/qfxwebview/autosize/data-X11/autosize.qml +++ b/tests/auto/declarative/qmlvisual/qfxwebview/autosize/data-X11/autosize.qml diff --git a/tests/auto/declarative/visual/qfxwebview/autosize/data-X11/autosize.0.png b/tests/auto/declarative/qmlvisual/qfxwebview/autosize/data/autosize.0.png Binary files differindex 1f28b9a..1f28b9a 100644 --- a/tests/auto/declarative/visual/qfxwebview/autosize/data-X11/autosize.0.png +++ b/tests/auto/declarative/qmlvisual/qfxwebview/autosize/data/autosize.0.png diff --git a/tests/auto/declarative/visual/qfxwebview/autosize/data/autosize.qml b/tests/auto/declarative/qmlvisual/qfxwebview/autosize/data/autosize.qml index 47999be..47999be 100644 --- a/tests/auto/declarative/visual/qfxwebview/autosize/data/autosize.qml +++ b/tests/auto/declarative/qmlvisual/qfxwebview/autosize/data/autosize.qml diff --git a/tests/auto/declarative/qmlvisual/qmlvisual.pro b/tests/auto/declarative/qmlvisual/qmlvisual.pro new file mode 100644 index 0000000..a3abbe3 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qmlvisual.pro @@ -0,0 +1,10 @@ +load(qttest_p4) +contains(QT_CONFIG,declarative): QT += declarative +macx:CONFIG -= app_bundle + +SOURCES += tst_qmlvisual.cpp + +DEFINES += QT_TEST_SOURCE_DIR=\"\\\"$$PWD\\\"\" + +CONFIG += parallel_test + diff --git a/tests/auto/declarative/visual/rect/GradientRect.qml b/tests/auto/declarative/qmlvisual/rect/GradientRect.qml index 1d3ec98..1d3ec98 100644 --- a/tests/auto/declarative/visual/rect/GradientRect.qml +++ b/tests/auto/declarative/qmlvisual/rect/GradientRect.qml diff --git a/tests/auto/declarative/visual/rect/MyRect.qml b/tests/auto/declarative/qmlvisual/rect/MyRect.qml index 22e0948..22e0948 100644 --- a/tests/auto/declarative/visual/rect/MyRect.qml +++ b/tests/auto/declarative/qmlvisual/rect/MyRect.qml diff --git a/tests/auto/declarative/visual/rect/data/rect-painting.0.png b/tests/auto/declarative/qmlvisual/rect/data/rect-painting.0.png Binary files differindex 3b7970d..3b7970d 100644 --- a/tests/auto/declarative/visual/rect/data/rect-painting.0.png +++ b/tests/auto/declarative/qmlvisual/rect/data/rect-painting.0.png diff --git a/tests/auto/declarative/visual/rect/data/rect-painting.qml b/tests/auto/declarative/qmlvisual/rect/data/rect-painting.qml index 52acadf..52acadf 100644 --- a/tests/auto/declarative/visual/rect/data/rect-painting.qml +++ b/tests/auto/declarative/qmlvisual/rect/data/rect-painting.qml diff --git a/tests/auto/declarative/visual/rect/rect-painting.qml b/tests/auto/declarative/qmlvisual/rect/rect-painting.qml index 93beeec..93beeec 100644 --- a/tests/auto/declarative/visual/rect/rect-painting.qml +++ b/tests/auto/declarative/qmlvisual/rect/rect-painting.qml diff --git a/tests/auto/declarative/visual/repeater/basic1.qml b/tests/auto/declarative/qmlvisual/repeater/basic1.qml index acb669c..acb669c 100644 --- a/tests/auto/declarative/visual/repeater/basic1.qml +++ b/tests/auto/declarative/qmlvisual/repeater/basic1.qml diff --git a/tests/auto/declarative/visual/repeater/basic2.qml b/tests/auto/declarative/qmlvisual/repeater/basic2.qml index 3323da5..3323da5 100644 --- a/tests/auto/declarative/visual/repeater/basic2.qml +++ b/tests/auto/declarative/qmlvisual/repeater/basic2.qml diff --git a/tests/auto/declarative/visual/repeater/basic3.qml b/tests/auto/declarative/qmlvisual/repeater/basic3.qml index cb57d49..cb57d49 100644 --- a/tests/auto/declarative/visual/repeater/basic3.qml +++ b/tests/auto/declarative/qmlvisual/repeater/basic3.qml diff --git a/tests/auto/declarative/visual/repeater/basic4.qml b/tests/auto/declarative/qmlvisual/repeater/basic4.qml index f31de2c..f31de2c 100644 --- a/tests/auto/declarative/visual/repeater/basic4.qml +++ b/tests/auto/declarative/qmlvisual/repeater/basic4.qml diff --git a/tests/auto/declarative/visual/repeater/data-MAC/basic1.0.png b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.0.png Binary files differindex 2658b6b..2658b6b 100644 --- a/tests/auto/declarative/visual/repeater/data-MAC/basic1.0.png +++ b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.0.png diff --git a/tests/auto/declarative/visual/repeater/data-MAC/basic1.qml b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.qml index 5bc0d6b..5bc0d6b 100644 --- a/tests/auto/declarative/visual/repeater/data-MAC/basic1.qml +++ b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.qml diff --git a/tests/auto/declarative/visual/repeater/data-MAC/basic2.0.png b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.0.png Binary files differindex 2658b6b..2658b6b 100644 --- a/tests/auto/declarative/visual/repeater/data-MAC/basic2.0.png +++ b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.0.png diff --git a/tests/auto/declarative/visual/repeater/data-MAC/basic2.qml b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.qml index 64cf2ea..64cf2ea 100644 --- a/tests/auto/declarative/visual/repeater/data-MAC/basic2.qml +++ b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.qml diff --git a/tests/auto/declarative/visual/repeater/data-MAC/basic3.0.png b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.0.png Binary files differindex 2658b6b..2658b6b 100644 --- a/tests/auto/declarative/visual/repeater/data-MAC/basic3.0.png +++ b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.0.png diff --git a/tests/auto/declarative/visual/repeater/data-MAC/basic3.qml b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.qml index 41e174a..41e174a 100644 --- a/tests/auto/declarative/visual/repeater/data-MAC/basic3.qml +++ b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.qml diff --git a/tests/auto/declarative/visual/repeater/data-MAC/basic4.0.png b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.0.png Binary files differindex 2658b6b..2658b6b 100644 --- a/tests/auto/declarative/visual/repeater/data-MAC/basic4.0.png +++ b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.0.png diff --git a/tests/auto/declarative/visual/repeater/data-MAC/basic4.qml b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.qml index fcf2504..fcf2504 100644 --- a/tests/auto/declarative/visual/repeater/data-MAC/basic4.qml +++ b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.qml diff --git a/tests/auto/declarative/visual/repeater/data-X11/basic1.0.png b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.0.png Binary files differindex 18ab543..18ab543 100644 --- a/tests/auto/declarative/visual/repeater/data-X11/basic1.0.png +++ b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.0.png diff --git a/tests/auto/declarative/visual/repeater/data-X11/basic1.qml b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.qml index bf215ca..bf215ca 100644 --- a/tests/auto/declarative/visual/repeater/data-X11/basic1.qml +++ b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.qml diff --git a/tests/auto/declarative/visual/repeater/data-X11/basic2.0.png b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.0.png Binary files differindex 18ab543..18ab543 100644 --- a/tests/auto/declarative/visual/repeater/data-X11/basic2.0.png +++ b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.0.png diff --git a/tests/auto/declarative/visual/repeater/data-X11/basic2.qml b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.qml index cb6b46c..cb6b46c 100644 --- a/tests/auto/declarative/visual/repeater/data-X11/basic2.qml +++ b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.qml diff --git a/tests/auto/declarative/visual/repeater/data-X11/basic3.0.png b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.0.png Binary files differindex 18ab543..18ab543 100644 --- a/tests/auto/declarative/visual/repeater/data-X11/basic3.0.png +++ b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.0.png diff --git a/tests/auto/declarative/visual/repeater/data-X11/basic3.qml b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.qml index 9545fa9..9545fa9 100644 --- a/tests/auto/declarative/visual/repeater/data-X11/basic3.qml +++ b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.qml diff --git a/tests/auto/declarative/visual/repeater/data-X11/basic4.0.png b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.0.png Binary files differindex 18ab543..18ab543 100644 --- a/tests/auto/declarative/visual/repeater/data-X11/basic4.0.png +++ b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.0.png diff --git a/tests/auto/declarative/visual/repeater/data-X11/basic4.qml b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.qml index 4839206..4839206 100644 --- a/tests/auto/declarative/visual/repeater/data-X11/basic4.qml +++ b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.qml diff --git a/tests/auto/declarative/visual/repeater/data/basic1.0.png b/tests/auto/declarative/qmlvisual/repeater/data/basic1.0.png Binary files differindex aea0e98..aea0e98 100644 --- a/tests/auto/declarative/visual/repeater/data/basic1.0.png +++ b/tests/auto/declarative/qmlvisual/repeater/data/basic1.0.png diff --git a/tests/auto/declarative/visual/repeater/data/basic1.qml b/tests/auto/declarative/qmlvisual/repeater/data/basic1.qml index 9535a2c..9535a2c 100644 --- a/tests/auto/declarative/visual/repeater/data/basic1.qml +++ b/tests/auto/declarative/qmlvisual/repeater/data/basic1.qml diff --git a/tests/auto/declarative/visual/repeater/data/basic2.0.png b/tests/auto/declarative/qmlvisual/repeater/data/basic2.0.png Binary files differindex aea0e98..aea0e98 100644 --- a/tests/auto/declarative/visual/repeater/data/basic2.0.png +++ b/tests/auto/declarative/qmlvisual/repeater/data/basic2.0.png diff --git a/tests/auto/declarative/visual/repeater/data/basic2.qml b/tests/auto/declarative/qmlvisual/repeater/data/basic2.qml index 81bc1f7..81bc1f7 100644 --- a/tests/auto/declarative/visual/repeater/data/basic2.qml +++ b/tests/auto/declarative/qmlvisual/repeater/data/basic2.qml diff --git a/tests/auto/declarative/visual/repeater/data/basic3.0.png b/tests/auto/declarative/qmlvisual/repeater/data/basic3.0.png Binary files differindex aea0e98..aea0e98 100644 --- a/tests/auto/declarative/visual/repeater/data/basic3.0.png +++ b/tests/auto/declarative/qmlvisual/repeater/data/basic3.0.png diff --git a/tests/auto/declarative/visual/repeater/data/basic3.qml b/tests/auto/declarative/qmlvisual/repeater/data/basic3.qml index 417eaab..417eaab 100644 --- a/tests/auto/declarative/visual/repeater/data/basic3.qml +++ b/tests/auto/declarative/qmlvisual/repeater/data/basic3.qml diff --git a/tests/auto/declarative/visual/repeater/data/basic4.0.png b/tests/auto/declarative/qmlvisual/repeater/data/basic4.0.png Binary files differindex aea0e98..aea0e98 100644 --- a/tests/auto/declarative/visual/repeater/data/basic4.0.png +++ b/tests/auto/declarative/qmlvisual/repeater/data/basic4.0.png diff --git a/tests/auto/declarative/visual/repeater/data/basic4.qml b/tests/auto/declarative/qmlvisual/repeater/data/basic4.qml index 264d825..264d825 100644 --- a/tests/auto/declarative/visual/repeater/data/basic4.qml +++ b/tests/auto/declarative/qmlvisual/repeater/data/basic4.qml diff --git a/tests/auto/declarative/visual/selftest_noimages/data/selftest_noimages.qml b/tests/auto/declarative/qmlvisual/selftest_noimages/data/selftest_noimages.qml index 3104906..3104906 100644 --- a/tests/auto/declarative/visual/selftest_noimages/data/selftest_noimages.qml +++ b/tests/auto/declarative/qmlvisual/selftest_noimages/data/selftest_noimages.qml diff --git a/tests/auto/declarative/visual/selftest_noimages/selftest_noimages.qml b/tests/auto/declarative/qmlvisual/selftest_noimages/selftest_noimages.qml index da7f9b6..da7f9b6 100644 --- a/tests/auto/declarative/visual/selftest_noimages/selftest_noimages.qml +++ b/tests/auto/declarative/qmlvisual/selftest_noimages/selftest_noimages.qml diff --git a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp new file mode 100644 index 0000000..681b530 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp @@ -0,0 +1,417 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include <qtest.h> +#include <QDeclarativeView> +#include <QApplication> +#include <QLibraryInfo> +#include <QDir> +#include <QDebug> +#include <QProcess> +#include <QFile> + +enum Mode { Record, RecordNoVisuals, RecordSnapshot, Play, TestVisuals, RemoveVisuals, UpdateVisuals, UpdatePlatformVisuals, Test }; + +static QString testdir; +class tst_qmlvisual : public QObject +{ + Q_OBJECT +public: + tst_qmlvisual(); + + static QString toTestScript(const QString &, Mode=Test); + static QString viewer(); + + static QStringList findQmlFiles(const QDir &d); +private slots: + void visual_data(); + void visual(); + +private: + QString qmlruntime; +}; + + +tst_qmlvisual::tst_qmlvisual() +{ + qmlruntime = viewer(); +} + +QString tst_qmlvisual::viewer() +{ + QString binaries = QLibraryInfo::location(QLibraryInfo::BinariesPath); + + QString qmlruntime; + +#if defined(Q_WS_MAC) + qmlruntime = QDir(binaries).absoluteFilePath("qml.app/Contents/MacOS/qml"); +#elif defined(Q_WS_WIN) + qmlruntime = QDir(binaries).absoluteFilePath("qml.exe"); +#else + qmlruntime = QDir(binaries).absoluteFilePath("qml"); +#endif + + return qmlruntime; +} + +void tst_qmlvisual::visual_data() +{ + QTest::addColumn<QString>("file"); + QTest::addColumn<QString>("testdata"); + + QStringList files; + if (qgetenv("QMLVISUAL_ALL") != "") + files << findQmlFiles(QDir(QT_TEST_SOURCE_DIR)); + else { + //these are newly added tests we want to try out in CI (then move to the stable list) + files << QT_TEST_SOURCE_DIR "/qdeclarativeborderimage/borders.qml"; + files << QT_TEST_SOURCE_DIR "/qdeclarativeborderimage/animated.qml"; + files << QT_TEST_SOURCE_DIR "/qdeclarativeborderimage/animated-smooth.qml"; + files << QT_TEST_SOURCE_DIR "/qdeclarativeflipable/test-flipable.qml"; + files << QT_TEST_SOURCE_DIR "/qdeclarativepositioners/usingRepeater.qml"; + + //these are tests we think are stable and useful enough to be run by the CI system + files << QT_TEST_SOURCE_DIR "/animation/bindinganimation/bindinganimation.qml"; + files << QT_TEST_SOURCE_DIR "/animation/loop/loop.qml"; + files << QT_TEST_SOURCE_DIR "/animation/parallelAnimation/parallelAnimation-visual.qml"; + files << QT_TEST_SOURCE_DIR "/animation/parentAnimation/parentAnimation-visual.qml"; + files << QT_TEST_SOURCE_DIR "/animation/reanchor/reanchor.qml"; + files << QT_TEST_SOURCE_DIR "/animation/scriptAction/scriptAction-visual.qml"; + files << QT_TEST_SOURCE_DIR "/qdeclarativemousearea/drag.qml"; + files << QT_TEST_SOURCE_DIR "/fillmode/fillmode.qml"; + + //these reliably fail in CI, for unknown reasons + //files << QT_TEST_SOURCE_DIR "/animation/easing/easing.qml"; + //files << QT_TEST_SOURCE_DIR "/animation/pauseAnimation/pauseAnimation-visual.qml"; + + //these reliably fail on Linux because of color interpolation (different float rounding) +#if !defined(Q_WS_X11) && !defined(Q_WS_QWS) + files << QT_TEST_SOURCE_DIR "/animation/colorAnimation/colorAnimation-visual.qml"; + files << QT_TEST_SOURCE_DIR "/animation/propertyAction/propertyAction-visual.qml"; +#endif + + //this is unstable because the MouseArea press-and-hold timer is not synchronized to the animation framework. + //files << QT_TEST_SOURCE_DIR "/qdeclarativemousearea/mousearea-visual.qml"; + } + + foreach (const QString &file, files) { + QString testdata = toTestScript(file); + if (testdata.isEmpty()) + continue; + + QTest::newRow(file.toLatin1().constData()) << file << testdata; + } +} + +void tst_qmlvisual::visual() +{ + QFETCH(QString, file); + QFETCH(QString, testdata); + + QStringList arguments; + arguments << "-script" << testdata + << "-scriptopts" << "play,testimages,testerror,exitoncomplete,exitonfailure" + << file; +#ifdef Q_WS_QWS + arguments << "-qws"; +#endif + + QProcess p; + p.start(qmlruntime, arguments); + QVERIFY(p.waitForFinished()); + if (p.exitCode() != 0) + qDebug() << p.readAllStandardError(); + QCOMPARE(p.exitStatus(), QProcess::NormalExit); + QCOMPARE(p.exitCode(), 0); +} + +QString tst_qmlvisual::toTestScript(const QString &file, Mode mode) +{ + if (!file.endsWith(".qml")) + return QString(); + + int index = file.lastIndexOf(QDir::separator()); + if (index == -1) + index = file.lastIndexOf('/'); + if (index == -1) + return QString(); + + const char* platformsuffix=0; // platforms with different fonts +#if defined(Q_WS_MACX) + platformsuffix = "-MAC"; +#elif defined(Q_WS_X11) + platformsuffix = "-X11"; +#elif defined(Q_WS_WIN32) + platformsuffix = "-WIN"; +#elif defined(Q_WS_QWS) + platformsuffix = "-QWS"; +#elif defined(Q_WS_S60) + platformsuffix = "-S60"; +#endif + + QString testdata = file.left(index + 1) + + QString("data"); + QString testname = file.mid(index + 1, file.length() - index - 5); + + if (platformsuffix && (mode == UpdatePlatformVisuals || QFile::exists(testdata+QLatin1String(platformsuffix)+QDir::separator()+testname+".qml"))) { + QString platformdir = testdata + QLatin1String(platformsuffix); + if (mode == UpdatePlatformVisuals) { + Q_ASSERT(QDir().mkpath(platformdir)); + // Copy from base + QDir dir(testdata,testname+".*"); + dir.setFilter(QDir::Files); + QFileInfoList list = dir.entryInfoList(); + for (int i = 0; i < list.size(); ++i) { + QFile in(list.at(i).filePath()); + Q_ASSERT(in.open(QIODevice::ReadOnly)); + QFile out(platformdir + QDir::separator() + list.at(i).fileName()); + Q_ASSERT(out.open(QIODevice::WriteOnly)); + out.write(in.readAll()); + } + } + testdata = platformdir; + } + + testdata += QDir::separator() + testname; + + return testdata; +} + +QStringList tst_qmlvisual::findQmlFiles(const QDir &d) +{ + QStringList rv; + + QStringList files = d.entryList(QStringList() << QLatin1String("*.qml"), + QDir::Files); + foreach (const QString &file, files) { + if (file.at(0).isLower()) { + rv << d.absoluteFilePath(file); + } + } + + QStringList dirs = d.entryList(QDir::Dirs | QDir::NoDotAndDotDot | + QDir::NoSymLinks); + foreach (const QString &dir, dirs) { + if (dir.left(4) == "data") + continue; + + QDir sub = d; + sub.cd(dir); + rv << findQmlFiles(sub); + } + + return rv; +} + +void action(Mode mode, const QString &file) +{ + Q_ASSERT(mode != Test); + + QString testdata = tst_qmlvisual::toTestScript(file,mode); + + QStringList arguments; + switch (mode) { + case Test: + // Don't run qml + break; + case Record: + arguments << "-script" << testdata + << "-scriptopts" << "record,testimages,saveonexit" + << file; + break; + case RecordNoVisuals: + arguments << "-script" << testdata + << "-scriptopts" << "record,saveonexit" + << file; + break; + case RecordSnapshot: + arguments << "-script" << testdata + << "-scriptopts" << "record,testimages,snapshot,saveonexit" + << file; + break; + case Play: + arguments << "-script" << testdata + << "-scriptopts" << "play,testimages,testerror,exitoncomplete" + << file; + break; + case TestVisuals: + arguments << "-script" << testdata + << "-scriptopts" << "play" + << file; + break; + case UpdateVisuals: + case UpdatePlatformVisuals: + arguments << "-script" << testdata + << "-scriptopts" << "play,record,testimages,exitoncomplete,saveonexit" + << file; + break; + case RemoveVisuals: + arguments << "-script" << testdata + << "-scriptopts" << "play,record,exitoncomplete,saveonexit" + << file; + break; + } + if (!arguments.isEmpty()) { + QProcess p; + p.setProcessChannelMode(QProcess::ForwardedChannels); + p.start(tst_qmlvisual::viewer(), arguments); + p.waitForFinished(); + } +} + +void usage() +{ + fprintf(stderr, "\n"); + fprintf(stderr, "QML related options\n"); + fprintf(stderr, " -listtests : list all the tests seen by tst_qmlvisual, and then exit immediately\n"); + fprintf(stderr, " -record file : record new test data for file\n"); + fprintf(stderr, " -recordnovisuals file : record new test data for file, but ignore visuals\n"); + fprintf(stderr, " -recordsnapshot file : record new snapshot for file (like record but only records a single frame and then exits)\n"); + fprintf(stderr, " -play file : playback test data for file, printing errors\n"); + fprintf(stderr, " -testvisuals file : playback test data for file, without errors\n"); + fprintf(stderr, " -updatevisuals file : playback test data for file, accept new visuals for file\n"); + fprintf(stderr, " -updateplatformvisuals file : playback test data for file, accept new visuals for file only on current platform (MacOSX/Win32/X11/QWS/S60)\n"); + fprintf(stderr, "\n" + "Visual tests are recordings of manual interactions with a QML test,\n" + "that can then be run automatically. To record a new test, run:\n" + "\n" + " tst_qmlvisual -record yourtestdir/yourtest.qml\n" + "\n" + "This records everything you do (try to keep it short).\n" + "To play back a test, run:\n" + "\n" + " tst_qmlvisual -play yourtestdir/yourtest.qml\n" + "\n" + "Your test may include QML code to test itself, reporting any error to an\n" + "'error' property on the root object - the test will fail if this property\n" + "gets set to anything non-empty.\n" + "\n" + "If your test changes slightly but is still correct (check with -play), you\n" + "can update the visuals by running:\n" + "\n" + " tst_qmlvisual -updatevisuals yourtestdir/yourtest.qml\n" + "\n" + "If your test includes platform-sensitive visuals (eg. text in system fonts),\n" + "you should create platform-specific visuals, using -updateplatformvisuals\n" + "instead.\n" + "\n" + "If you ONLY wish to use the 'error' property, you can record your test with\n" + "-recordnovisuals, or discard existing visuals with -removevisuals; the test\n" + "will then only fail on a syntax error, crash, or non-empty 'error' property.\n" + ); +} + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + + Mode mode = Test; + QString file; + bool showHelp = false; + + int newArgc = 1; + char **newArgv = new char*[argc]; + newArgv[0] = argv[0]; + + for (int ii = 1; ii < argc; ++ii) { + QString arg(argv[ii]); + if (arg == "-play" && (ii + 1) < argc) { + mode = Play; + file = argv[++ii]; + } else if (arg == "-record" && (ii + 1) < argc) { + mode = Record; + file = argv[++ii]; + } else if (arg == "-recordnovisuals" && (ii + 1) < argc) { + mode = RecordNoVisuals; + file = argv[++ii]; + } else if (arg == "-recordsnapshot" && (ii + 1) < argc) { + mode = RecordSnapshot; + file = argv[++ii]; + } else if (arg == "-testvisuals" && (ii + 1) < argc) { + mode = TestVisuals; + file = argv[++ii]; + } else if (arg == "-removevisuals" && (ii + 1) < argc) { + mode = RemoveVisuals; + file = argv[++ii]; + } else if (arg == "-updatevisuals" && (ii + 1) < argc) { + mode = UpdateVisuals; + file = argv[++ii]; + } else if (arg == "-updateplatformvisuals" && (ii + 1) < argc) { + mode = UpdatePlatformVisuals; + file = argv[++ii]; + } else { + newArgv[newArgc++] = argv[ii]; + } + + if (arg == "-help" || arg == "-?" || arg == "--help") { + atexit(usage); + showHelp = true; + } + + if (arg == "-listtests") { + QStringList list = tst_qmlvisual::findQmlFiles(QDir(QT_TEST_SOURCE_DIR)); + foreach (QString test, list) { + qWarning() << qPrintable(test); + } + return 0; + } + } + + if (mode == Test || showHelp) { + tst_qmlvisual tc; + return QTest::qExec(&tc, newArgc, newArgv); + } else { + if (!file.endsWith(QLatin1String(".qml"))) { + qWarning() << "Error: Invalid file name (must end in .qml)"; + return -1; + } + QDir d = QDir::current(); + QString absFile = d.absoluteFilePath(file); + if (!QFile::exists(absFile)) { + qWarning() << "Error: File does not exist"; + return -1; + } + + action(mode, absFile); + return 0; + } +} + +#include "tst_qmlvisual.moc" diff --git a/tests/auto/declarative/visual/webview/embedding/data/nesting.0.png b/tests/auto/declarative/qmlvisual/webview/embedding/data/nesting.0.png Binary files differindex 57de710..57de710 100644 --- a/tests/auto/declarative/visual/webview/embedding/data/nesting.0.png +++ b/tests/auto/declarative/qmlvisual/webview/embedding/data/nesting.0.png diff --git a/tests/auto/declarative/visual/webview/embedding/data/nesting.qml b/tests/auto/declarative/qmlvisual/webview/embedding/data/nesting.qml index 8d38ebe..8d38ebe 100644 --- a/tests/auto/declarative/visual/webview/embedding/data/nesting.qml +++ b/tests/auto/declarative/qmlvisual/webview/embedding/data/nesting.qml diff --git a/tests/auto/declarative/qmlvisual/webview/embedding/egg.qml b/tests/auto/declarative/qmlvisual/webview/embedding/egg.qml new file mode 100644 index 0000000..711a747 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/embedding/egg.qml @@ -0,0 +1,26 @@ +import Qt 4.6 + +Item { + property variant period : 250 + property variant color : "black" + id: root + + Item { + x: root.width/2 + y: root.height/2 + Rectangle { + radius: width/2 + color: root.color + x: -width/2 + y: -height/2 + width: root.width*1.5 + height: root.height*1.5 + } + rotation: NumberAnimation { + from: 0 + to: 360 + repeat: true + duration: root.period + } + } +} diff --git a/tests/auto/declarative/visual/webview/embedding/nesting.html b/tests/auto/declarative/qmlvisual/webview/embedding/nesting.html index 6e81689..6e81689 100644 --- a/tests/auto/declarative/visual/webview/embedding/nesting.html +++ b/tests/auto/declarative/qmlvisual/webview/embedding/nesting.html diff --git a/tests/auto/declarative/qmlvisual/webview/embedding/nesting.qml b/tests/auto/declarative/qmlvisual/webview/embedding/nesting.qml new file mode 100644 index 0000000..5e35306 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/embedding/nesting.qml @@ -0,0 +1,9 @@ +import Qt 4.6 +import org.webkit 1.0 + +WebView { + width: 300 + height: 200 + url: "nesting.html" + settings.pluginsEnabled: true +} diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.0.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.0.png Binary files differindex 139aa9d..139aa9d 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.0.png +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.0.png diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.1.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.1.png Binary files differindex e2e1644..e2e1644 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.1.png +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.1.png diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.2.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.2.png Binary files differindex aa2fb82..aa2fb82 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.2.png +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.2.png diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.3.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.3.png Binary files differindex 1976430..1976430 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.3.png +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.3.png diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.4.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.4.png Binary files differindex c895a0a..c895a0a 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.4.png +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.4.png diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.5.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.5.png Binary files differindex c895a0a..c895a0a 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.5.png +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.5.png diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.6.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.6.png Binary files differindex c895a0a..c895a0a 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.6.png +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.6.png diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.7.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.7.png Binary files differindex c895a0a..c895a0a 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.7.png +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.7.png diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.8.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.8.png Binary files differindex c895a0a..c895a0a 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.8.png +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.8.png diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.qml b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.qml index 957f9d5..957f9d5 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.qml +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.qml diff --git a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.0.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.0.png Binary files differindex b5c35d2..b5c35d2 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.0.png +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.0.png diff --git a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.1.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.1.png Binary files differindex b5c35d2..b5c35d2 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.1.png +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.1.png diff --git a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.2.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.2.png Binary files differindex 28403c8..28403c8 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.2.png +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.2.png diff --git a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.3.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.3.png Binary files differindex 241b9f8..241b9f8 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.3.png +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.3.png diff --git a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.4.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.4.png Binary files differindex 1877cb2..1877cb2 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.4.png +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.4.png diff --git a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.qml b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.qml index 7fce295..7fce295 100644 --- a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.qml +++ b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.qml diff --git a/tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml b/tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml new file mode 100644 index 0000000..6c01382 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml @@ -0,0 +1,32 @@ +import Qt 4.6 +import org.webkit 1.0 + +Column { + WebView { + id: webview + width: 200 + height: 200 + url: "test-objects.html" + javaScriptWindowObjects: + QtObject { + property string text: btntext.text + WebView.windowObjectName: "qmltext" + onTextChanged: { + webview.evaluateJavaScript("{document.getElementById('button').value=window.qmltext.text}") + } + } + } + Row { + Text { text: "Input:" } + Rectangle { + width: btntext.width+10 + height: btntext.height+10 + border.color: "black" + TextInput { + id: btntext + text: "Blah" + cursorDelegate: Rectangle { width: 1; color: "red" } + } + } + } +} diff --git a/tests/auto/declarative/visual/webview/javascript/test-objects.html b/tests/auto/declarative/qmlvisual/webview/javascript/test-objects.html index ed7d2ea..ed7d2ea 100644 --- a/tests/auto/declarative/visual/webview/javascript/test-objects.html +++ b/tests/auto/declarative/qmlvisual/webview/javascript/test-objects.html diff --git a/tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml b/tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml new file mode 100644 index 0000000..8c52aff --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml @@ -0,0 +1,27 @@ +import Qt 4.6 +import org.webkit 1.0 + +Column { + WebView { + width: 200 + height: 200 + url: "test-objects.html" + javaScriptWindowObjects: + QtObject { + property string text: btntext.text + WebView.windowObjectName: "qmltext" + } + } + Row { + Text { text: "Input:" } + Rectangle { + width: btntext.width+10 + height: btntext.height+10 + border.color: "black" + TextInput { + id: btntext + text: "Blah" + } + } + } +} diff --git a/tests/auto/declarative/visual/webview/settings/data/fontFamily.0.png b/tests/auto/declarative/qmlvisual/webview/settings/data/fontFamily.0.png Binary files differindex 7721e75..7721e75 100644 --- a/tests/auto/declarative/visual/webview/settings/data/fontFamily.0.png +++ b/tests/auto/declarative/qmlvisual/webview/settings/data/fontFamily.0.png diff --git a/tests/auto/declarative/visual/webview/settings/data/fontFamily.qml b/tests/auto/declarative/qmlvisual/webview/settings/data/fontFamily.qml index 195c3ba..195c3ba 100644 --- a/tests/auto/declarative/visual/webview/settings/data/fontFamily.qml +++ b/tests/auto/declarative/qmlvisual/webview/settings/data/fontFamily.qml diff --git a/tests/auto/declarative/visual/webview/settings/data/fontSize.0.png b/tests/auto/declarative/qmlvisual/webview/settings/data/fontSize.0.png Binary files differindex 95196a1..95196a1 100644 --- a/tests/auto/declarative/visual/webview/settings/data/fontSize.0.png +++ b/tests/auto/declarative/qmlvisual/webview/settings/data/fontSize.0.png diff --git a/tests/auto/declarative/visual/webview/settings/data/fontSize.qml b/tests/auto/declarative/qmlvisual/webview/settings/data/fontSize.qml index 438ffa5..438ffa5 100644 --- a/tests/auto/declarative/visual/webview/settings/data/fontSize.qml +++ b/tests/auto/declarative/qmlvisual/webview/settings/data/fontSize.qml diff --git a/tests/auto/declarative/visual/webview/settings/data/noAutoLoadImages.0.png b/tests/auto/declarative/qmlvisual/webview/settings/data/noAutoLoadImages.0.png Binary files differindex 48920a2..48920a2 100644 --- a/tests/auto/declarative/visual/webview/settings/data/noAutoLoadImages.0.png +++ b/tests/auto/declarative/qmlvisual/webview/settings/data/noAutoLoadImages.0.png diff --git a/tests/auto/declarative/visual/webview/settings/data/noAutoLoadImages.1.png b/tests/auto/declarative/qmlvisual/webview/settings/data/noAutoLoadImages.1.png Binary files differindex 48920a2..48920a2 100644 --- a/tests/auto/declarative/visual/webview/settings/data/noAutoLoadImages.1.png +++ b/tests/auto/declarative/qmlvisual/webview/settings/data/noAutoLoadImages.1.png diff --git a/tests/auto/declarative/visual/webview/settings/data/noAutoLoadImages.qml b/tests/auto/declarative/qmlvisual/webview/settings/data/noAutoLoadImages.qml index ead5c3b..ead5c3b 100644 --- a/tests/auto/declarative/visual/webview/settings/data/noAutoLoadImages.qml +++ b/tests/auto/declarative/qmlvisual/webview/settings/data/noAutoLoadImages.qml diff --git a/tests/auto/declarative/visual/webview/settings/data/setFontFamily.0.png b/tests/auto/declarative/qmlvisual/webview/settings/data/setFontFamily.0.png Binary files differindex f3c621a..f3c621a 100644 --- a/tests/auto/declarative/visual/webview/settings/data/setFontFamily.0.png +++ b/tests/auto/declarative/qmlvisual/webview/settings/data/setFontFamily.0.png diff --git a/tests/auto/declarative/visual/webview/settings/data/setFontFamily.qml b/tests/auto/declarative/qmlvisual/webview/settings/data/setFontFamily.qml index cf74d42..cf74d42 100644 --- a/tests/auto/declarative/visual/webview/settings/data/setFontFamily.qml +++ b/tests/auto/declarative/qmlvisual/webview/settings/data/setFontFamily.qml diff --git a/tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml b/tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml new file mode 100644 index 0000000..f547b0e --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml @@ -0,0 +1,17 @@ +import Qt 4.6 +import org.webkit 1.0 + +WebView { + id: web + width: 200 + height: 200 + Column { + anchors.fill: parent + Text { text: "standard: " + web.settings.standardFontFamily } + Text { text: "fixed: " + web.settings.fixedFontFamily } + Text { text: "serif: " + web.settings.serifFontFamily } + Text { text: "sansserif: " + web.settings.sansSerifFontFamily } + Text { text: "cursive: " + web.settings.cursiveFontFamily } + Text { text: "fantasy: " + web.settings.fantasyFontFamily } + } +} diff --git a/tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml b/tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml new file mode 100644 index 0000000..7eaa96b --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml @@ -0,0 +1,71 @@ +import Qt 4.6 +import org.webkit 1.0 + +Grid { + columns: 3 + Rectangle { + Text { color: "green"; text: "Normal" } + border.color: "black" + width: 200 + height: 200 + WebView { + anchors.fill: parent + url: "test.html" + } + } + Rectangle { + Text { color: "green"; text: "Big" } + border.color: "black" + width: 200 + height: 200 + WebView { + anchors.fill: parent + url: "test.html" + settings.minimumFontSize: 20 + } + } + Rectangle { + Text { color: "green"; text: "Big (logical)" } + border.color: "black" + width: 200 + height: 200 + WebView { + anchors.fill: parent + url: "test.html" + settings.minimumLogicalFontSize: 20 + } + } + Rectangle { + Text { color: "green"; text: "Bigger" } + border.color: "black" + width: 200 + height: 200 + WebView { + anchors.fill: parent + url: "test.html" + settings.minimumFontSize: 30 + } + } + Rectangle { + Text { color: "green"; text: "Small (except fixed)" } + border.color: "black" + width: 200 + height: 200 + WebView { + anchors.fill: parent + url: "test.html" + settings.defaultFontSize: 8 + } + } + Rectangle { + Text { color: "green"; text: "Small fixed" } + border.color: "black" + width: 200 + height: 200 + WebView { + anchors.fill: parent + url: "test.html" + settings.defaultFixedFontSize: 8 + } + } +} diff --git a/tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml b/tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml new file mode 100644 index 0000000..67f1633 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml @@ -0,0 +1,21 @@ +import Qt 4.6 +import org.webkit 1.0 + +Grid { + columns: 2 + Rectangle { + Text { id: label; x:10; y:170; color: "green"; text: "No image" } + border.color: "black" + width: 200 + height: 200 + WebView { + anchors.fill: parent + settings.autoLoadImages: false + url: "test-img.html" + MouseArea { + anchors.fill: parent + onClicked: { parent.settings.autoLoadImages=true; label.text=""; parent.reload.trigger() } + } + } + } +} diff --git a/tests/auto/declarative/qmlvisual/webview/settings/qtlogo.png b/tests/auto/declarative/qmlvisual/webview/settings/qtlogo.png Binary files differnew file mode 100644 index 0000000..399bd0b --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/settings/qtlogo.png diff --git a/tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml b/tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml new file mode 100644 index 0000000..823469f --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml @@ -0,0 +1,11 @@ +import Qt 4.6 +import org.webkit 1.0 + +WebView { + url: "test.html" + width: 300 + height: 300 + settings.standardFontFamily: font.name + // WebKit doesn't seem to honour any other FontFamily settings + FontLoader { id: font; source: "tarzeau_ocr_a.ttf" } +} diff --git a/tests/auto/declarative/visual/webview/settings/tarzeau_ocr_a.ttf b/tests/auto/declarative/qmlvisual/webview/settings/tarzeau_ocr_a.ttf Binary files differindex cf93f96..cf93f96 100644 --- a/tests/auto/declarative/visual/webview/settings/tarzeau_ocr_a.ttf +++ b/tests/auto/declarative/qmlvisual/webview/settings/tarzeau_ocr_a.ttf diff --git a/tests/auto/declarative/visual/webview/settings/test-img.html b/tests/auto/declarative/qmlvisual/webview/settings/test-img.html index cdd63ac..cdd63ac 100644 --- a/tests/auto/declarative/visual/webview/settings/test-img.html +++ b/tests/auto/declarative/qmlvisual/webview/settings/test-img.html diff --git a/tests/auto/declarative/visual/webview/settings/test.html b/tests/auto/declarative/qmlvisual/webview/settings/test.html index 3265e20..3265e20 100644 --- a/tests/auto/declarative/visual/webview/settings/test.html +++ b/tests/auto/declarative/qmlvisual/webview/settings/test.html diff --git a/tests/auto/declarative/visual/webview/zooming/data/pageWidth.qml b/tests/auto/declarative/qmlvisual/webview/zooming/data/pageWidth.qml index 1a993e1..1a993e1 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/pageWidth.qml +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/pageWidth.qml diff --git a/tests/auto/declarative/visual/webview/zooming/data/renderControl.0.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/renderControl.0.png Binary files differindex 38df70e..38df70e 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/renderControl.0.png +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/renderControl.0.png diff --git a/tests/auto/declarative/visual/webview/zooming/data/renderControl.qml b/tests/auto/declarative/qmlvisual/webview/zooming/data/renderControl.qml index d3c5890..d3c5890 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/renderControl.qml +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/renderControl.qml diff --git a/tests/auto/declarative/visual/webview/zooming/data/resolution.0.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.0.png Binary files differindex 7e989c6..7e989c6 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/resolution.0.png +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.0.png diff --git a/tests/auto/declarative/visual/webview/zooming/data/resolution.1.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.1.png Binary files differindex 60ccc0b..60ccc0b 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/resolution.1.png +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.1.png diff --git a/tests/auto/declarative/visual/webview/zooming/data/resolution.2.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.2.png Binary files differindex 6c22494..6c22494 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/resolution.2.png +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.2.png diff --git a/tests/auto/declarative/visual/webview/zooming/data/resolution.3.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.3.png Binary files differindex 71dd56f..71dd56f 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/resolution.3.png +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.3.png diff --git a/tests/auto/declarative/visual/webview/zooming/data/resolution.4.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.4.png Binary files differindex ce03cb6..ce03cb6 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/resolution.4.png +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.4.png diff --git a/tests/auto/declarative/visual/webview/zooming/data/resolution.qml b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.qml index 0a2b8db..0a2b8db 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/resolution.qml +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.qml diff --git a/tests/auto/declarative/visual/webview/zooming/data/zoomTextOnly.0.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/zoomTextOnly.0.png Binary files differindex 4b9abb4..4b9abb4 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/zoomTextOnly.0.png +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/zoomTextOnly.0.png diff --git a/tests/auto/declarative/visual/webview/zooming/data/zoomTextOnly.1.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/zoomTextOnly.1.png Binary files differindex 5ce9787..5ce9787 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/zoomTextOnly.1.png +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/zoomTextOnly.1.png diff --git a/tests/auto/declarative/visual/webview/zooming/data/zoomTextOnly.qml b/tests/auto/declarative/qmlvisual/webview/zooming/data/zoomTextOnly.qml index aaa7583..aaa7583 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/zoomTextOnly.qml +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/zoomTextOnly.qml diff --git a/tests/auto/declarative/visual/webview/zooming/data/zooming.0.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.0.png Binary files differindex aaab35d..aaab35d 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/zooming.0.png +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.0.png diff --git a/tests/auto/declarative/visual/webview/zooming/data/zooming.1.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.1.png Binary files differindex aaab35d..aaab35d 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/zooming.1.png +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.1.png diff --git a/tests/auto/declarative/visual/webview/zooming/data/zooming.2.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.2.png Binary files differindex aaab35d..aaab35d 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/zooming.2.png +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.2.png diff --git a/tests/auto/declarative/visual/webview/zooming/data/zooming.3.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.3.png Binary files differindex aaab35d..aaab35d 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/zooming.3.png +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.3.png diff --git a/tests/auto/declarative/visual/webview/zooming/data/zooming.qml b/tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.qml index ad83800..ad83800 100644 --- a/tests/auto/declarative/visual/webview/zooming/data/zooming.qml +++ b/tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.qml diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml b/tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml new file mode 100644 index 0000000..4a876dd --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml @@ -0,0 +1,10 @@ +import Qt 4.6 +import org.webkit 1.0 + +WebView { + width: 200 + height: 250 + url: "resolution.html" + webPageWidth: 400 + preferredWidth: 200 +} diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/qtlogo.png b/tests/auto/declarative/qmlvisual/webview/zooming/qtlogo.png Binary files differnew file mode 100644 index 0000000..399bd0b --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/zooming/qtlogo.png diff --git a/tests/auto/declarative/visual/webview/zooming/renderControl.html b/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.html index 1a01a33..1a01a33 100644 --- a/tests/auto/declarative/visual/webview/zooming/renderControl.html +++ b/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.html diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml b/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml new file mode 100644 index 0000000..52a569e --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml @@ -0,0 +1,21 @@ +import Qt 4.6 +import org.webkit 1.0 + +Rectangle { + width: 200 + height: 250 + clip: true + WebView { + id: webview + width: 400 + url: "renderControl.html" + SequentialAnimation on x { + loops: Animation.Infinite + NumberAnimation { from: 100; to: 0; duration: 200 } + PropertyAction { target: webview; property: "renderingEnabled"; value: false } + NumberAnimation { from: 0; to: -100; duration: 200 } + PropertyAction { target: webview; property: "renderingEnabled"; value: true } + NumberAnimation { from: -100; to: 100; duration: 400 } + } + } +} diff --git a/tests/auto/declarative/visual/webview/zooming/resolution.html b/tests/auto/declarative/qmlvisual/webview/zooming/resolution.html index 75b1e3f..75b1e3f 100644 --- a/tests/auto/declarative/visual/webview/zooming/resolution.html +++ b/tests/auto/declarative/qmlvisual/webview/zooming/resolution.html diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/resolution.qml b/tests/auto/declarative/qmlvisual/webview/zooming/resolution.qml new file mode 100644 index 0000000..d6c35d4 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/zooming/resolution.qml @@ -0,0 +1,16 @@ +import Qt 4.6 +import org.webkit 1.0 + +WebView { + width: 200 * zoomFactor + height: 250 * zoomFactor + scale: 1/zoomFactor + url: "resolution.html" + SequentialAnimation on zoomFactor { + loops: Animation.Infinite + NumberAnimation { from: 1; to: 0.25; duration: 2000 } + NumberAnimation { from: 0.25; to: 1; duration: 2000 } + NumberAnimation { from: 1; to: 5; duration: 2000 } + NumberAnimation { from: 5; to: 1; duration: 2000 } + } +} diff --git a/tests/auto/declarative/visual/webview/zooming/zoomTextOnly.html b/tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.html index 4997712..4997712 100644 --- a/tests/auto/declarative/visual/webview/zooming/zoomTextOnly.html +++ b/tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.html diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.qml b/tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.qml new file mode 100644 index 0000000..741450f --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.qml @@ -0,0 +1,14 @@ +import Qt 4.6 +import org.webkit 1.0 + +WebView { + width: 200 + height: 250 + url: "zoomTextOnly.html" + settings.zoomTextOnly: true + SequentialAnimation on zoomFactor { + loops: Animation.Infinite + NumberAnimation { from: 2; to: 0.25; duration: 1000 } + NumberAnimation { from: 0.25; to: 2; duration: 1000 } + } +} diff --git a/tests/auto/declarative/visual/webview/zooming/zooming.html b/tests/auto/declarative/qmlvisual/webview/zooming/zooming.html index 4e91035..4e91035 100644 --- a/tests/auto/declarative/visual/webview/zooming/zooming.html +++ b/tests/auto/declarative/qmlvisual/webview/zooming/zooming.html diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml b/tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml new file mode 100644 index 0000000..adbd7a5 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml @@ -0,0 +1,18 @@ +import Qt 4.6 +import org.webkit 1.0 + +// Note that zooming is better done using zoomFactor and careful +// control of rendering to avoid excessive re-rendering during +// zoom animations. This test is written for simplicity. +WebView { + width: 200 + height: 250 + Behavior on x { NumberAnimation { } } + Behavior on y { NumberAnimation { } } + Behavior on scale { NumberAnimation { } } + url: "zooming.html" + preferredWidth: width + preferredHeight: height + onDoubleClick: {console.log(clickX,clickY);heuristicZoom(clickX,clickY,2)} + onZoomTo: {console.log(zoom);scale=zoom;x=width/2-centerX;y=height/2-centerY} +} diff --git a/tests/auto/declarative/qpacketprotocol/qpacketprotocol.pro b/tests/auto/declarative/qpacketprotocol/qpacketprotocol.pro index f42cecc..7ffda93 100644 --- a/tests/auto/declarative/qpacketprotocol/qpacketprotocol.pro +++ b/tests/auto/declarative/qpacketprotocol/qpacketprotocol.pro @@ -5,3 +5,5 @@ macx:CONFIG -= app_bundle HEADERS += ../shared/debugutil_p.h SOURCES += tst_qpacketprotocol.cpp \ ../shared/debugutil.cpp + +CONFIG += parallel_test diff --git a/tests/auto/declarative/runall.sh b/tests/auto/declarative/runall.sh index 39485d3..62e03e3 100755 --- a/tests/auto/declarative/runall.sh +++ b/tests/auto/declarative/runall.sh @@ -41,37 +41,60 @@ ## ############################################################################/ -Xnest :7 2>/dev/null & -sleep 1 -trap "kill $!" EXIT -export DISPLAY=:7 +if [ "$(uname)" = Linux ] +then + Xnest :7 2>/dev/null & + sleep 1 + trap "kill $!" EXIT + export DISPLAY=:7 + export LANG=en_US + kwin 2>/dev/null & + sleep 1 +fi -( make -k -j1 install 2>&1; - for exe in $(make install | sed -n 's/^install .* "\([^"]*qt4\/tst_[^"]*\)".*/\1/p') - do - $exe - done -) | +function filter +{ + exe=$1 + skip=0 while read line do - case "$line" in - make*Error) echo "$line";; - make*Stop) echo "$line";; - make*) ;; - install*) ;; - */qmake*) ;; - */bin/moc*) ;; - *targ.debug*) ;; - g++*) ;; - cd*) ;; - PASS*) ;; - QDEBUG*) ;; - Makefile*) ;; - Config*) ;; - Totals*) ;; - \**) ;; - ./*) ;; - *) echo "$line" - esac + if [ $skip != 0 ] + then + let skip=skip-1 + else + case "$line" in + make*Error) echo "$line";; + make*Stop) echo "$line";; + /*/bin/make*) ;; + make*) ;; + install*) ;; + QDeclarativeDebugServer:*Waiting*) ;; + QDeclarativeDebugServer:*Connection*) ;; + */qmake*) ;; + */bin/moc*) ;; + *targ.debug*) ;; + g++*) ;; + cd*) ;; + XFAIL*) skip=1;; + SKIP*) skip=1;; + PASS*) ;; + QDEBUG*) ;; + Makefile*) ;; + Config*) ;; + Totals*) ;; + \**) ;; + ./*) ;; + *tst_*) echo "$line" ;; + *) echo "$exe: $line" + esac + fi done +} + +make -k -j1 install 2>&1 | filter build +for exe in $(make install | sed -n 's/^install .* "\([^"]*qt4\/tst_[^"]*\)".*/\1/p') +do + echo $exe + $exe 2>&1 | filter $exe +done diff --git a/tests/auto/declarative/sql/data/error-creation.js b/tests/auto/declarative/sql/data/error-creation.js deleted file mode 100644 index 92245fd..0000000 --- a/tests/auto/declarative/sql/data/error-creation.js +++ /dev/null @@ -1,12 +0,0 @@ -function test() { - var r="transaction_not_finished"; - try { - var db = openDatabaseSync("QmlTestDB-creation", "2.0", "Test database from Qt autotests", 1000000); - } catch (err) { - if (err.message == "SQL: database version mismatch") - r = "passed"; - else - r = "WRONG ERROR="+err.message; - } - return r; -} diff --git a/tests/auto/declarative/sql/sql.pro b/tests/auto/declarative/sql/sql.pro deleted file mode 100644 index 4217eac..0000000 --- a/tests/auto/declarative/sql/sql.pro +++ /dev/null @@ -1,9 +0,0 @@ -load(qttest_p4) -contains(QT_CONFIG,declarative): QT += declarative -QT += sql script -macx:CONFIG -= app_bundle - -SOURCES += tst_sql.cpp - -# Define SRCDIR equal to test's source directory -DEFINES += SRCDIR=\\\"$$PWD\\\" diff --git a/tests/auto/declarative/sql/tst_sql.cpp b/tests/auto/declarative/sql/tst_sql.cpp deleted file mode 100644 index e8a5e0c..0000000 --- a/tests/auto/declarative/sql/tst_sql.cpp +++ /dev/null @@ -1,237 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include <qtest.h> -#include "../../../shared/util.h" -#include <QtDeclarative/qdeclarativeengine.h> -#include <QtDeclarative/qdeclarativecomponent.h> -#include <private/qdeclarativetext_p.h> -#include <private/qdeclarativeengine_p.h> -#include <QtCore/qcryptographichash.h> -#include <QtWebKit/qwebpage.h> -#include <QtWebKit/qwebframe.h> -#include <QtWebKit/qwebdatabase.h> -#include <QtWebKit/qwebsecurityorigin.h> -#include <QtSql/qsqldatabase.h> -#include <QtCore/qdir.h> -#include <QtCore/qfile.h> - -class tst_sql : public QObject -{ - Q_OBJECT -public: - tst_sql() - { - qApp->setApplicationName("tst_sql"); - qApp->setOrganizationName("Nokia"); - qApp->setOrganizationDomain("nokia.com"); - engine = new QDeclarativeEngine; - } - - ~tst_sql() - { - delete engine; - } - -private slots: - void initTestCase(); - - void checkDatabasePath(); - - void testQml_data(); - void testQml(); - void testQml_cleanopen_data(); - void testQml_cleanopen(); - void totalDatabases(); - - void cleanupTestCase(); - -private: - QString dbDir() const; - QDeclarativeEngine *engine; -}; - -class QWebPageWithJavaScriptConsoleMessages : public QWebPage { -public: - void javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID) - { - qWarning() << sourceID << ":" << lineNumber << ":" << message; - } -}; - -void removeRecursive(const QString& dirname) -{ - QDir dir(dirname); - QFileInfoList entries(dir.entryInfoList(QDir::Dirs|QDir::Files|QDir::NoDotAndDotDot)); - for (int i = 0; i < entries.count(); ++i) - if (entries[i].isDir()) - removeRecursive(entries[i].filePath()); - else - dir.remove(entries[i].fileName()); - QDir().rmdir(dirname); -} - -void tst_sql::initTestCase() -{ - removeRecursive(dbDir()); - QDir().mkpath(dbDir()); -} - -void tst_sql::cleanupTestCase() -{ - removeRecursive(dbDir()); -} - -QString tst_sql::dbDir() const -{ - static QString tmpd = QDir::tempPath()+"/tst_sql_output-" - + QDateTime::currentDateTime().toString(QLatin1String("yyyyMMddhhmmss")); - return tmpd; -} - -void tst_sql::checkDatabasePath() -{ - // Check default storage path (we can't use it since we don't want to mess with user's data) - QVERIFY(engine->offlineStoragePath().contains("tst_sql")); - QVERIFY(engine->offlineStoragePath().contains("OfflineStorage")); -} - -static const int total_databases_created_by_tests = 12; -void tst_sql::testQml_data() -{ - QTest::addColumn<QString>("jsfile"); // The input file - - // Each test should use a newly named DB to avoid inter-test dependencies - QTest::newRow("creation") << "data/creation.js"; - QTest::newRow("creation-a") << "data/creation-a.js"; - QTest::newRow("creation") << "data/creation.js"; - QTest::newRow("error-creation") << "data/error-creation.js"; // re-uses above DB - QTest::newRow("changeversion") << "data/changeversion.js"; - QTest::newRow("readonly") << "data/readonly.js"; - QTest::newRow("readonly-error") << "data/readonly-error.js"; - QTest::newRow("selection") << "data/selection.js"; - QTest::newRow("selection-bindnames") << "data/selection-bindnames.js"; - QTest::newRow("iteration") << "data/iteration.js"; - QTest::newRow("iteration-forwardonly") << "data/iteration-forwardonly.js"; - QTest::newRow("error-a") << "data/error-a.js"; - QTest::newRow("error-notransaction") << "data/error-notransaction.js"; - QTest::newRow("error-outsidetransaction") << "data/error-outsidetransaction.js"; // reuse above - QTest::newRow("reopen1") << "data/reopen1.js"; - QTest::newRow("reopen2") << "data/reopen2.js"; // re-uses above DB - - // If you add a test, you should usually use a new database in the - // test - in which case increment total_databases_created_by_tests above. -} - -/* -void tst_sql::validateAgainstWebkit() -{ - // Validates tests against WebKit (HTML5) support. - // - QFETCH(QString, jsfile); - QFETCH(QString, result); - QFETCH(int, databases); - - QFile f(jsfile); - QVERIFY(f.open(QIODevice::ReadOnly)); - QString js=f.readAll(); - - QWebPageWithJavaScriptConsoleMessages webpage; - webpage.settings()->setOfflineStoragePath(dbDir()); - webpage.settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true); - - QEXPECT_FAIL("","WebKit doesn't support openDatabaseSync yet", Continue); - QCOMPARE(webpage.mainFrame()->evaluateJavaScript(js).toString(),result); - - QTest::qWait(100); // WebKit crashes if you quit it too fast - - QWebSecurityOrigin origin = webpage.mainFrame()->securityOrigin(); - QList<QWebDatabase> dbs = origin.databases(); - QCOMPARE(dbs.count(), databases); -} -*/ - -void tst_sql::testQml() -{ - // Tests QML SQL Database support with tests - // that have been validated against Webkit. - // - QFETCH(QString, jsfile); - - QString qml= - "import Qt 4.6\n" - "Text { Script { source: \""+jsfile+"\" } text: test() }"; - - engine->setOfflineStoragePath(dbDir()); - QDeclarativeComponent component(engine); - component.setData(qml.toUtf8(), QUrl::fromLocalFile(SRCDIR "/empty.qml")); // just a file for relative local imports - QDeclarativeText *text = qobject_cast<QDeclarativeText*>(component.create()); - QVERIFY(text != 0); - QCOMPARE(text->text(),QString("passed")); -} - -void tst_sql::testQml_cleanopen_data() -{ - QTest::addColumn<QString>("jsfile"); // The input file - QTest::newRow("reopen1") << "data/reopen1.js"; - QTest::newRow("reopen2") << "data/reopen2.js"; - QTest::newRow("error-creation") << "data/error-creation.js"; // re-uses creation DB -} - -void tst_sql::testQml_cleanopen() -{ - // Same as testQml, but clean connections between tests, - // making it more like the tests are running in new processes. - testQml(); - - QDeclarativeEnginePrivate::getScriptEngine(engine)->collectGarbage(); // close databases - foreach (QString dbname, QSqlDatabase::connectionNames()) { - QSqlDatabase::removeDatabase(dbname); - } -} - -void tst_sql::totalDatabases() -{ - QCOMPARE(QDir(dbDir()+"/Databases").entryInfoList(QDir::Files|QDir::NoDotAndDotDot).count(), total_databases_created_by_tests*2); -} - -QTEST_MAIN(tst_sql) - -#include "tst_sql.moc" diff --git a/tests/auto/declarative/visual/ListView/basic3.qml b/tests/auto/declarative/visual/ListView/basic3.qml deleted file mode 100644 index 05ac358..0000000 --- a/tests/auto/declarative/visual/ListView/basic3.qml +++ /dev/null @@ -1,29 +0,0 @@ -import Qt 4.6 - -Rectangle { - color: "blue" - width: 200 - height: 300 - id: page - Listmodel { - id: model - ListElement { - name: "January" - } - ListElement { - name: "February" - } - } - ListView { - anchors.fill: parent - model: model - delegate: Rectangle { - color: "red" - width: 100 - height: 100 - Text { - text: name - } - } - } -} diff --git a/tests/auto/declarative/visual/ListView/basic4.qml b/tests/auto/declarative/visual/ListView/basic4.qml deleted file mode 100644 index 3628bd3..0000000 --- a/tests/auto/declarative/visual/ListView/basic4.qml +++ /dev/null @@ -1,33 +0,0 @@ -import Qt 4.6 - -Rectangle { - color: "blue" - width: 200 - height: 300 - id: page - Listmodel { - id: model - ListElement { - name: "January" - } - ListElement { - name: "February" - } - } - Component { - id: delegate - Rectangle { - color: "red" - width: 100 - height: 100 - Text { - text: name - } - } - } - ListView { - anchors.fill: parent - model: model - delegate: delegate - } -} diff --git a/tests/auto/declarative/visual/Package_Views/packageviews.qml b/tests/auto/declarative/visual/Package_Views/packageviews.qml deleted file mode 100644 index cf3f9f7..0000000 --- a/tests/auto/declarative/visual/Package_Views/packageviews.qml +++ /dev/null @@ -1,89 +0,0 @@ -import Qt 4.6 - -Rectangle { - id: root - width: 200 - height: 200 - color: "black" - - VisualDatamodel { - id: model - model: Listmodel { - ListElement { itemColor: "red" } - ListElement { itemColor: "green" } - ListElement { itemColor: "blue" } - ListElement { itemColor: "orange" } - ListElement { itemColor: "purple" } - ListElement { itemColor: "yellow" } - ListElement { itemColor: "slategrey" } - ListElement { itemColor: "cyan" } - ListElement { itemColor: "red" } - ListElement { itemColor: "green" } - ListElement { itemColor: "blue" } - ListElement { itemColor: "orange" } - ListElement { itemColor: "purple" } - ListElement { itemColor: "yellow" } - ListElement { itemColor: "slategrey" } - ListElement { itemColor: "cyan" } - } - delegate: Package { - Rectangle { - id: listItem; Package.name: "list"; width:root.width/2; height: 50; color: "transparent"; border.color: "white" - MouseArea { - anchors.fill: parent - onClicked: myState.state = myState.state == "list" ? "grid" : "list" - } - } - Rectangle { - id: gridItem; Package.name: "grid"; width:50; height: 50; color: "transparent"; border.color: "white" - MouseArea { - anchors.fill: parent - onClicked: myState.state = myState.state == "list" ? "grid" : "list" - } - } - Rectangle { id: myContent; width:50; height: 50; color: itemColor } - - StateGroup { - id: myState - state: "list" - states: [ - State { - name: "list" - ParentChange { target: myContent; parent: listItem } - PropertyChanges { target: myContent; x: 0; y: 0; width: listItem.width } - }, - State { - name: "grid" - ParentChange { target: myContent; parent: gridItem } - PropertyChanges { target: myContent; x: 0; y: 0; width: gridItem.width } - } - ] - - transitions: [ - Transition { - from: "*"; to: "*" - SequentialAnimation { - ParentAction{} - NumberAnimation { properties: "x,y,width"; easing.type: "InOutQuad" } - } - } - ] - } - } - } - - ListView { - width: parent.width/2 - height: parent.height - model: model.parts.list - } - - GridView { - x: parent.width/2 - width: parent.width/2 - cellWidth: 50 - cellHeight: 50 - height: parent.height - model: model.parts.grid - } -} diff --git a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.0.png b/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.0.png Binary files differdeleted file mode 100644 index f4a6cfd..0000000 --- a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.0.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.1.png b/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.1.png Binary files differdeleted file mode 100644 index f4a6cfd..0000000 --- a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.1.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.2.png b/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.2.png Binary files differdeleted file mode 100644 index f4a6cfd..0000000 --- a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.2.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.qml b/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.qml deleted file mode 100644 index 900bf5c..0000000 --- a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.qml +++ /dev/null @@ -1,951 +0,0 @@ -import Qt.VisualTest 4.6 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 32 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 48 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 64 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 80 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 96 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 112 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 128 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 144 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 160 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 176 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 192 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 208 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 224 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 240 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 256 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 272 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 288 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 304 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 320 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 336 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 352 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 368 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 384 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 400 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 416 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 432 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 448 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 464 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 480 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 496 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 512 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 93; y: 136 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 528 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 544 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 560 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 576 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Frame { - msec: 592 - hash: "acc736435c9f84aa82941ba561bc5dbc" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 93; y: 136 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 608 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 624 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 640 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 656 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 672 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 688 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 704 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 720 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 736 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 752 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 768 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 784 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 800 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 816 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 832 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 848 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 864 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 880 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 896 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 912 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 928 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 944 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 960 - image: "colorAnimation.0.png" - } - Frame { - msec: 976 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 992 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1008 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1024 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1040 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1056 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1072 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1088 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1104 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1120 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1136 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1152 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1168 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1184 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1200 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1216 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1232 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1248 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1264 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1280 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1296 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1312 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1328 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1344 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1360 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1376 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1392 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1408 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1424 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1440 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1456 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1472 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1488 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1504 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1520 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1536 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1552 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1568 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1584 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1600 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1616 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1632 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1648 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1664 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1680 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1696 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1712 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1728 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1744 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1760 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1776 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1792 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1808 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1824 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1840 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1856 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1872 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1888 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1904 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1920 - image: "colorAnimation.1.png" - } - Frame { - msec: 1936 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1952 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1968 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 1984 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2000 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2016 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2032 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2048 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2064 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2080 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2096 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2112 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2128 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2144 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2160 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2176 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2192 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2208 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2224 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2240 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2256 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2272 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2288 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2304 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2320 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2336 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2352 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2368 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2384 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2400 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2416 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2432 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2448 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2464 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2480 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2496 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2512 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2528 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2544 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2560 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2576 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2592 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2608 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2624 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2640 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2656 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2672 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2688 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2704 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2720 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2736 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2752 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2768 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2784 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2800 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2816 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2832 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2848 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2864 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2880 - image: "colorAnimation.2.png" - } - Frame { - msec: 2896 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2912 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2928 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2944 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2960 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2976 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 2992 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3008 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3024 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3040 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3056 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3072 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3088 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3104 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3120 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3136 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3152 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3168 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3184 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3200 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3216 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3232 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3248 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3264 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3280 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3296 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3312 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3328 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3344 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3360 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3376 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3392 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3408 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3424 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3440 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3456 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3472 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3488 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3504 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3520 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3536 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3552 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3568 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3584 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3600 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3616 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3632 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Key { - type: 6 - key: 16777249 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3648 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3664 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } - Frame { - msec: 3680 - hash: "8c0fcda4f8956394c53fc4ba18caa850" - } -} diff --git a/tests/auto/declarative/visual/animation/loop/loop.qml b/tests/auto/declarative/visual/animation/loop/loop.qml deleted file mode 100644 index f6049ae..0000000 --- a/tests/auto/declarative/visual/animation/loop/loop.qml +++ /dev/null @@ -1,24 +0,0 @@ -import Qt 4.6 - -Rectangle { - id: wrapper - width: 600 - height: 100 - - Rectangle { - id: redRect - width: 100; height: 100 - color: Qt.rgba(1,0,0) - /* This should produce an animation that starts at 0, animates smoothly - to 100, jumps to 200, animates smoothly to 400, animates smoothly - back to 100, jumps to 200, and so on. - */ - x: SequentialAnimation { - repeat: true - NumberAnimation { to: 100; duration: 1000 } - NumberAnimation { from: 200; to: 400; duration: 1000 } - } - - } - -} diff --git a/tests/auto/declarative/visual/animation/parallelAnimation/parallelAnimation.qml b/tests/auto/declarative/visual/animation/parallelAnimation/parallelAnimation.qml deleted file mode 100644 index 1980b91..0000000 --- a/tests/auto/declarative/visual/animation/parallelAnimation/parallelAnimation.qml +++ /dev/null @@ -1,43 +0,0 @@ -import Qt 4.6 - -Rectangle { - width: 400; height: 200 - Rectangle { - id: redRect - width: 100; height: 100 - color: "red" - } - Rectangle { - id: redRect2 - width: 100; height: 100 - y: 100 - color: "red" - } - - MouseArea { - anchors.fill: parent - onClicked: parent.state = "state1" - } - - states: State { - name: "state1" - PropertyChanges { - target: redRect - x: 300 - color: "purple" - } - PropertyChanges { - target: redRect2 - x: 300 - color: "purple" - } - } - - transitions: Transition { - PropertyAnimation { targets: redRect; properties: "x,color"; duration: 300 } - ParallelAnimation { - NumberAnimation { targets: redRect2; properties: "x"; duration: 300 } - ColorAnimation { targets: redRect2; properties: "color"; duration: 300 } - } - } -} diff --git a/tests/auto/declarative/visual/animation/parentAction/data/parentAction.0.png b/tests/auto/declarative/visual/animation/parentAction/data/parentAction.0.png Binary files differdeleted file mode 100644 index a0032f8..0000000 --- a/tests/auto/declarative/visual/animation/parentAction/data/parentAction.0.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/parentAction/data/parentAction.1.png b/tests/auto/declarative/visual/animation/parentAction/data/parentAction.1.png Binary files differdeleted file mode 100644 index 958b6af..0000000 --- a/tests/auto/declarative/visual/animation/parentAction/data/parentAction.1.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/parentAction/data/parentAction.2.png b/tests/auto/declarative/visual/animation/parentAction/data/parentAction.2.png Binary files differdeleted file mode 100644 index 3a1811f..0000000 --- a/tests/auto/declarative/visual/animation/parentAction/data/parentAction.2.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/parentAction/data/parentAction.3.png b/tests/auto/declarative/visual/animation/parentAction/data/parentAction.3.png Binary files differdeleted file mode 100644 index 36064c2..0000000 --- a/tests/auto/declarative/visual/animation/parentAction/data/parentAction.3.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/parentAction/data/parentAction.4.png b/tests/auto/declarative/visual/animation/parentAction/data/parentAction.4.png Binary files differdeleted file mode 100644 index c493a1d..0000000 --- a/tests/auto/declarative/visual/animation/parentAction/data/parentAction.4.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/parentAction/data/parentAction.5.png b/tests/auto/declarative/visual/animation/parentAction/data/parentAction.5.png Binary files differdeleted file mode 100644 index c493a1d..0000000 --- a/tests/auto/declarative/visual/animation/parentAction/data/parentAction.5.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/parentAction/data/parentAction.qml b/tests/auto/declarative/visual/animation/parentAction/data/parentAction.qml deleted file mode 100644 index de27af7..0000000 --- a/tests/auto/declarative/visual/animation/parentAction/data/parentAction.qml +++ /dev/null @@ -1,1207 +0,0 @@ -import Qt.VisualTest 4.6 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 32 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 48 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 64 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 80 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 96 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 112 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 128 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 144 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 160 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 176 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 192 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 208 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 224 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 240 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 256 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 272 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 288 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 304 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 320 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 336 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 352 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 368 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 384 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 400 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 416 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 432 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 448 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 464 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 480 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 496 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 512 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 528 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 544 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 560 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 576 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 150; y: 274 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 592 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 608 - hash: "a7bb3d44c8bcf403906afa86f5bc3062" - } - Frame { - msec: 624 - hash: "2b366e6009e70fa0227a1fee662fe1bf" - } - Frame { - msec: 640 - hash: "c12869fb8002aa36c3bfad7fd0979240" - } - Frame { - msec: 656 - hash: "56c583e77b5e0a8707e977dc937c2acf" - } - Frame { - msec: 672 - hash: "6b191d57a45a3f2d010a7f44064e409a" - } - Frame { - msec: 688 - hash: "9457ee33c999a63fa4bd4db5c3ceac8b" - } - Frame { - msec: 704 - hash: "446b23b662640ad6ad8c456f956fe73a" - } - Frame { - msec: 720 - hash: "23c59708069406486e4979c7d59f3f4a" - } - Frame { - msec: 736 - hash: "c9ce43ddca79b5b6f26af2c2259dc071" - } - Frame { - msec: 752 - hash: "e838229ba70c30112918f19bb471fa34" - } - Frame { - msec: 768 - hash: "0cbaeddb2ff6408a37a68fc685e2bca0" - } - Frame { - msec: 784 - hash: "616b4ec719586b151ba3d709e51038bf" - } - Frame { - msec: 800 - hash: "89b2c709f5c3083c204a9450e605c1d4" - } - Frame { - msec: 816 - hash: "427a5c2d13631d899ff2d673e762f114" - } - Frame { - msec: 832 - hash: "958aa9ca5a6b91aa6dfbc2a1ae3e2deb" - } - Frame { - msec: 848 - hash: "09a3ac0010ed8f3df2cfa7ed9d0a92e4" - } - Frame { - msec: 864 - hash: "5607ea54f9990f3232d6f56080e1ef15" - } - Frame { - msec: 880 - hash: "600682467c55288b9d5e65299637dd72" - } - Frame { - msec: 896 - hash: "bc7a238611574a13650f854ceac35032" - } - Frame { - msec: 912 - hash: "e5f6b19b3685a96d4d0c3b8384513643" - } - Frame { - msec: 928 - hash: "d5d23b0fc09136fd1ae121e311866cc3" - } - Frame { - msec: 944 - hash: "5099e5edd1a6bd37f5f6c836a6ca7644" - } - Frame { - msec: 960 - image: "parentAction.0.png" - } - Frame { - msec: 976 - hash: "97dd20f7774cfd8379e1d1b44f8ddc7b" - } - Frame { - msec: 992 - hash: "ab2deea9e4f8c43ed58b5a355800ecda" - } - Frame { - msec: 1008 - hash: "88ec383ce368259d3cc18612b6f5b941" - } - Frame { - msec: 1024 - hash: "f84b20b849a77e50717f99b9d844240e" - } - Frame { - msec: 1040 - hash: "6c042360c2d24ad56cec32d01ce82d6b" - } - Frame { - msec: 1056 - hash: "c86b464720192f3e039fa5d8ab5f09bb" - } - Frame { - msec: 1072 - hash: "35ec432fdf91fcd1dfcd945cfe785b09" - } - Frame { - msec: 1088 - hash: "27a2ec28e4fef006622e8211fd709853" - } - Frame { - msec: 1104 - hash: "8454d1f5ed89551e2a403c869885116a" - } - Frame { - msec: 1120 - hash: "7e33aed53dc4338c168274d972c8e711" - } - Frame { - msec: 1136 - hash: "e0192ea2049d6bae6012f00406630a92" - } - Frame { - msec: 1152 - hash: "a2ea5489a373084169024035a0f69e71" - } - Frame { - msec: 1168 - hash: "6947a72c4d959b90dafdaddcac815b3e" - } - Frame { - msec: 1184 - hash: "0e22cc3c96d0934095b7254f0f28b18b" - } - Frame { - msec: 1200 - hash: "72529ddc6f2678a783aedf445d7038a4" - } - Frame { - msec: 1216 - hash: "38f03c0ee50488ffd23a2fb3d3445461" - } - Frame { - msec: 1232 - hash: "b441721ed30c787874a2a71a94e1ba44" - } - Frame { - msec: 1248 - hash: "1e37f26d78590414b2ef01c72ad136a9" - } - Frame { - msec: 1264 - hash: "88e4af80d068485ebd8c3d51f9bbfe8d" - } - Frame { - msec: 1280 - hash: "107707216c16c629d8409cf006f9f2dc" - } - Frame { - msec: 1296 - hash: "f56f3f4f140ac072f7df47eddfc76844" - } - Frame { - msec: 1312 - hash: "41239a9d8ed793c24967875aabeae8a5" - } - Frame { - msec: 1328 - hash: "30035e37320dae4f9ead01a30895eb38" - } - Frame { - msec: 1344 - hash: "fb2f535b42b862b65f8adb3ad1a46779" - } - Frame { - msec: 1360 - hash: "e10ba7f74d52fc963e20a4647ff0d620" - } - Frame { - msec: 1376 - hash: "5abf5388566bed2fdb71afc8cd7cfe9b" - } - Frame { - msec: 1392 - hash: "91990471563e3c8292e8e8325a1d17a2" - } - Frame { - msec: 1408 - hash: "59a6293a48f83a9197adcffed3f32f15" - } - Frame { - msec: 1424 - hash: "db3e75df318e9f0d239ce9b76e92eff3" - } - Frame { - msec: 1440 - hash: "3b5c64bc64a701edb5c2e40b23443bc3" - } - Frame { - msec: 1456 - hash: "9db08c0375148b2317427591b5f43608" - } - Frame { - msec: 1472 - hash: "2d761f1530846eff87a7625a120e0afd" - } - Frame { - msec: 1488 - hash: "c5460f8c58b83c2ac15842ddb023ad4f" - } - Frame { - msec: 1504 - hash: "0efb51810a2dc359c7964268c98ea8eb" - } - Frame { - msec: 1520 - hash: "b92a42012df57eb261badf1f518b8e67" - } - Frame { - msec: 1536 - hash: "8d348bae62af2d35bdfee806a1c39910" - } - Frame { - msec: 1552 - hash: "762d9bb4ed11d249bfd902a541129d60" - } - Frame { - msec: 1568 - hash: "bddbd9f64a9f7156984feccd5fa94093" - } - Frame { - msec: 1584 - hash: "353a98e1573b0518941ff22bf2776244" - } - Frame { - msec: 1600 - hash: "1765aed97e29f25dee93a77a06557b82" - } - Frame { - msec: 1616 - hash: "73b5c2bdb7f268f7a33e129c8ba44013" - } - Frame { - msec: 1632 - hash: "46ac1976fb9932d0ef6e0b5927386ad9" - } - Frame { - msec: 1648 - hash: "90b5b5b46c9c352e8be41cc74f96133a" - } - Frame { - msec: 1664 - hash: "0efe0036577c890fd45cd7dd53014616" - } - Frame { - msec: 1680 - hash: "7f32df17481abf40ccb33afe6d17085d" - } - Frame { - msec: 1696 - hash: "1fa8544c48a476764f4f8278c14b651d" - } - Frame { - msec: 1712 - hash: "f8f06ece30f690deeba5999ce63bf40b" - } - Frame { - msec: 1728 - hash: "885b230f4b2fe380c7cf68955940d206" - } - Frame { - msec: 1744 - hash: "d0fc5aa4df46099bb46a1d7db30baa09" - } - Frame { - msec: 1760 - hash: "8fa7fe5197cbe1ff67f8a2c47f1f0740" - } - Frame { - msec: 1776 - hash: "aa3b3b03460daf54f085551e1a46c08b" - } - Frame { - msec: 1792 - hash: "35a1728a2430027a9474fb7d61090643" - } - Frame { - msec: 1808 - hash: "2b1cff3986b8b03f1061176a4722b0f9" - } - Frame { - msec: 1824 - hash: "8047be1b35ee3d5078a68c6cdc35eeb7" - } - Frame { - msec: 1840 - hash: "7f7afa48bb7d612b354c8488e72c8339" - } - Frame { - msec: 1856 - hash: "691a876caefce9aa0f5140c17059b8f4" - } - Frame { - msec: 1872 - hash: "903bec66e47db766dc431f060726988c" - } - Frame { - msec: 1888 - hash: "f13593fc891f0b050c01b61963019da1" - } - Frame { - msec: 1904 - hash: "aa00de965bdb370a5974b195c3fb38af" - } - Frame { - msec: 1920 - image: "parentAction.1.png" - } - Frame { - msec: 1936 - hash: "168d3e27261c0943e6262b6be27adfb0" - } - Frame { - msec: 1952 - hash: "6fafebd0b396e7c0a78c767c6af936ba" - } - Frame { - msec: 1968 - hash: "827e3a3fcd6fd8588e9fcc043769b3a8" - } - Frame { - msec: 1984 - hash: "155329bf1c1a6f6c37bf7e6e8a92c59b" - } - Frame { - msec: 2000 - hash: "d3008d1e7cee5170171699ef6fb9aa81" - } - Frame { - msec: 2016 - hash: "5c1244e7806e131a6063f22a66e4eb12" - } - Frame { - msec: 2032 - hash: "fcd6b372229a6cf14face81e9d614456" - } - Frame { - msec: 2048 - hash: "bf1a375a81bf43c5671cccc62e9a0462" - } - Frame { - msec: 2064 - hash: "0e22404508470baaa6621f37361951fa" - } - Frame { - msec: 2080 - hash: "45046f28c103caa161e41861f71731c4" - } - Frame { - msec: 2096 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2112 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2128 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2144 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2160 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2176 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2192 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2208 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2224 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2240 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2256 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2272 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2288 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2304 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2320 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2336 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2352 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2368 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2384 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2400 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2416 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2432 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2448 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2464 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2480 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2496 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2512 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2528 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2544 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2560 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2576 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2592 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2608 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2624 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2640 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2656 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2672 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2688 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2704 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2720 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2736 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2752 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 150; y: 274 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2768 - hash: "7a92731c713470a2b2c91fd6b83447de" - } - Frame { - msec: 2784 - hash: "44a0b46c21bd4c76d44883ba146e3614" - } - Frame { - msec: 2800 - hash: "2224abc3333a2bc5fa1cf3c4e8d6a6f9" - } - Frame { - msec: 2816 - hash: "ea9c05c0295a300e21aacbdfd5b4968e" - } - Frame { - msec: 2832 - hash: "e630e2893f89a6ae536bcbd1a084af07" - } - Frame { - msec: 2848 - hash: "af56f1e79eb3746efb9e4bcbc3fbced8" - } - Frame { - msec: 2864 - hash: "96be8c3ba0d7a85c6f6df877b869b563" - } - Frame { - msec: 2880 - image: "parentAction.2.png" - } - Frame { - msec: 2896 - hash: "603d8684cb6f097e3ab2a2e5ef053112" - } - Frame { - msec: 2912 - hash: "0433d242d1dd40a3792f55f807ebbff4" - } - Frame { - msec: 2928 - hash: "1190067cacc7361f6cfe09f153c7a07e" - } - Frame { - msec: 2944 - hash: "98e917880471511122847ad8a406e3a3" - } - Frame { - msec: 2960 - hash: "fff06869074a3a6c5823ed3fb6fa7a43" - } - Frame { - msec: 2976 - hash: "602d95daee8f160a0fd784931d0a06bd" - } - Frame { - msec: 2992 - hash: "f7e466bbd52f40e88ff567758f4db835" - } - Frame { - msec: 3008 - hash: "54417a4c4fb71d458439ad2e2126f8e1" - } - Frame { - msec: 3024 - hash: "fe150dd5056b9dbf1cd0b196e9a7a47b" - } - Frame { - msec: 3040 - hash: "1384c871bead85916f7bfcdebc370697" - } - Frame { - msec: 3056 - hash: "5f13339cc0e604b75a9d1d85342fa717" - } - Frame { - msec: 3072 - hash: "655069d61b7a44e729a2cbb33d683c3e" - } - Frame { - msec: 3088 - hash: "2324e9e4a02e41855b066983dbf0e61d" - } - Frame { - msec: 3104 - hash: "0217baf091325b95c033ba073bd68ce5" - } - Frame { - msec: 3120 - hash: "c27854c3af5b58db85846a1762ab18ba" - } - Frame { - msec: 3136 - hash: "45246ee6383ceb6260f84571a885ba90" - } - Frame { - msec: 3152 - hash: "d82ded86f093d1a376994cacf43d0343" - } - Frame { - msec: 3168 - hash: "c9179d30f80c6101bca2bed40d6a859f" - } - Frame { - msec: 3184 - hash: "a63e032d20a9d985c6c345434d98a364" - } - Frame { - msec: 3200 - hash: "fc7d6797ce15edf7fadb9dae691ecd5c" - } - Frame { - msec: 3216 - hash: "76cf37ad8c50fed8b1900784b647819c" - } - Frame { - msec: 3232 - hash: "256aab3690c9ba928bb4d4dd3bbfc756" - } - Frame { - msec: 3248 - hash: "90cab52fdefbae4e7d0f0f93b46ebeb0" - } - Frame { - msec: 3264 - hash: "badb5103bf826dc467f6e620cc2b47be" - } - Frame { - msec: 3280 - hash: "e7d0e437de5ebc0fa07b2a4ef11159cb" - } - Frame { - msec: 3296 - hash: "5931b1c3932ab91446324165d7e2603a" - } - Frame { - msec: 3312 - hash: "ce1808db90ba955ab3cb845500f4c013" - } - Frame { - msec: 3328 - hash: "142f8a440d1fe2d868f47ba3006de9d7" - } - Frame { - msec: 3344 - hash: "10d32a6cc90319ea66d7f2c1241590ce" - } - Frame { - msec: 3360 - hash: "7f633559d715396e6de451b3dd2fadbd" - } - Frame { - msec: 3376 - hash: "d44590ae51ceef5e082747c44bc41be9" - } - Frame { - msec: 3392 - hash: "2b498181668fb1fbf65294d575654929" - } - Frame { - msec: 3408 - hash: "7efeeffd08e4de440da83511313de729" - } - Frame { - msec: 3424 - hash: "8de2331393d1e712192d11ed096836d3" - } - Frame { - msec: 3440 - hash: "fa9381ef2e295865a9b8cb9b36a0eacf" - } - Frame { - msec: 3456 - hash: "97debc4432c5ecb7f606a81e5411b02c" - } - Frame { - msec: 3472 - hash: "eb4c1bb1f4398e3c18182c28a015be76" - } - Frame { - msec: 3488 - hash: "a976aa509f4c6f309d9a6011eeae02aa" - } - Frame { - msec: 3504 - hash: "457de7ee05e0ef0ef120a3d4e371c02e" - } - Frame { - msec: 3520 - hash: "0c01f9f150fe33155fa20703735a6d27" - } - Frame { - msec: 3536 - hash: "5af4f80624082a264010247ea8630a1a" - } - Frame { - msec: 3552 - hash: "b23a1191d149549fa29a61b6dc70f037" - } - Frame { - msec: 3568 - hash: "e00fb32cb13b1347e4b7b9fdbcca68e5" - } - Frame { - msec: 3584 - hash: "fef0503c82f253f8bc3fb3e705a98aa7" - } - Frame { - msec: 3600 - hash: "7a9beca28340d2aa89da5e05f5ac2a55" - } - Frame { - msec: 3616 - hash: "f3c57ea07ab486ffa1f46da60de0b8f1" - } - Frame { - msec: 3632 - hash: "ef0a4ad9ac339fd6ea50dbe6baa9387f" - } - Frame { - msec: 3648 - hash: "1b317a9eb4ce022f005d551546c688a4" - } - Frame { - msec: 3664 - hash: "628e912a4a26800b9b7b5e60e60e3a7d" - } - Frame { - msec: 3680 - hash: "3587b75e4d834a88729754d2c2a4b193" - } - Frame { - msec: 3696 - hash: "084bc1360a38123589baec5aae15b4ff" - } - Frame { - msec: 3712 - hash: "47f0f6c3cdf456826a6fd6846e58dcc8" - } - Frame { - msec: 3728 - hash: "ed982c4c3ebd132baaaf43efad40a3f7" - } - Frame { - msec: 3744 - hash: "d7ddce47c23fada4c69d53d934582d71" - } - Frame { - msec: 3760 - hash: "74f2f911bee26c4c551f4c70596753ae" - } - Frame { - msec: 3776 - hash: "3ed7cbf10dfce3a485d7878766cf9da6" - } - Frame { - msec: 3792 - hash: "87a74257551ab6c7fcfe05e815482ae9" - } - Frame { - msec: 3808 - hash: "4f63e4904e97d4ce832b20b7317a9958" - } - Frame { - msec: 3824 - hash: "f912da8781e547c6e28890655c1b8884" - } - Frame { - msec: 3840 - image: "parentAction.3.png" - } - Frame { - msec: 3856 - hash: "faa640ccf993324400254ffb862ac279" - } - Frame { - msec: 3872 - hash: "b67f342424d1b9a364b09da8994fcd6b" - } - Frame { - msec: 3888 - hash: "b2407732194c1e0c2a9bfb379b94b562" - } - Frame { - msec: 3904 - hash: "55733608d0302ef90c124322ac6d8dc6" - } - Frame { - msec: 3920 - hash: "734f5b628a26d3d7c91ee84fb26d5b5f" - } - Frame { - msec: 3936 - hash: "27839fefa4a218cd77843358392bb874" - } - Frame { - msec: 3952 - hash: "8cac19559d37bd2b581cef0a4c707753" - } - Frame { - msec: 3968 - hash: "91422870aa1471571e7dd8ff5103f76c" - } - Frame { - msec: 3984 - hash: "7156166d5f8d13483467ef515627c95d" - } - Frame { - msec: 4000 - hash: "6028e8374c2ce42a9a9e85b4a8b53027" - } - Frame { - msec: 4016 - hash: "17c99592be58d2e03f9f173c47c0649b" - } - Frame { - msec: 4032 - hash: "6084b53186c6a7eda38ac7fa34bf45ce" - } - Frame { - msec: 4048 - hash: "e82131a8a5a06519f49308bbc25738cf" - } - Frame { - msec: 4064 - hash: "77bdb69cbe55d9c503c6aa1c0f974d87" - } - Frame { - msec: 4080 - hash: "b2346ec5d376651347281d5fb00fc4d7" - } - Frame { - msec: 4096 - hash: "36a3b72c9d7f09795c546855a269801d" - } - Frame { - msec: 4112 - hash: "4e5478b33baca797f3f8f72c2c6c51ad" - } - Frame { - msec: 4128 - hash: "e59d12be3ed1f58de010d385ddfe78e5" - } - Frame { - msec: 4144 - hash: "9674106a146effd47c2724a2dd82ae84" - } - Frame { - msec: 4160 - hash: "862cec781f169f713032e6d52d3616ce" - } - Frame { - msec: 4176 - hash: "c8d47bdfb6518ef4827677023313d559" - } - Frame { - msec: 4192 - hash: "19413931b3e788067dfaef39b47d30ff" - } - Frame { - msec: 4208 - hash: "600e426532c0348cd622257b0773efd5" - } - Frame { - msec: 4224 - hash: "6d975e259d4efa108375d271451531c1" - } - Frame { - msec: 4240 - hash: "50b0da4848564c063694202ce16ea808" - } - Frame { - msec: 4256 - hash: "0a9450739031f680735b5210e6a30c3f" - } - Frame { - msec: 4272 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4288 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4304 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4320 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4336 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4352 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4368 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4384 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4400 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4416 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4432 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4448 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4464 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4480 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4496 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4512 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4528 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4544 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Key { - type: 6 - key: 16777249 - modifiers: 67108864 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 4560 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4576 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4592 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4608 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4624 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4640 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4656 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4672 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4688 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } - Frame { - msec: 4704 - hash: "23ce049cd7e715c28f5845fd1a1fc195" - } -} diff --git a/tests/auto/declarative/visual/animation/parentAction/parentAction.qml b/tests/auto/declarative/visual/animation/parentAction/parentAction.qml deleted file mode 100644 index eb3103e..0000000 --- a/tests/auto/declarative/visual/animation/parentAction/parentAction.qml +++ /dev/null @@ -1,55 +0,0 @@ -import Qt 4.6 - -Rectangle { - width: 400; height: 400 - Item { - scale: .5 - rotation: 15 - transformOrigin: "Center" - x: 10; y: 10 - Rectangle { - id: myRect - x: 5 - width: 100; height: 100 - transformOrigin: "BottomLeft" - color: "red" - } - } - MouseArea { - id: clickable - anchors.fill: parent - } - - Item { - x: 200; y: 200 - rotation: 52; - scale: 2 - Item { - id: newParent - x: 100; y: 100 - } - } - - states: State { - name: "moved" - when: clickable.pressed - ParentChange { - target: myRect - parent: newParent - } - PropertyChanges { - target: myRect - rotation: -52 - scale: 1 - color: "blue" - } - } - - transitions: Transition { - SequentialAnimation { - ColorAnimation { duration: 500} - ParentAction {} - NumberAnimation { properties: "rotation, scale"; duration: 1000 } - } - } -} diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/pauseAnimation.qml b/tests/auto/declarative/visual/animation/pauseAnimation/pauseAnimation.qml deleted file mode 100644 index 24ca76b..0000000 --- a/tests/auto/declarative/visual/animation/pauseAnimation/pauseAnimation.qml +++ /dev/null @@ -1,29 +0,0 @@ -import Qt 4.6 - -Rectangle { - id: rect - width: 120 - height: 200 - color: "white" - Image { - id: img - source: "pics/qtlogo.png" - x: 60-width/2 - y: 200-height - y: SequentialAnimation { - repeat: true - NumberAnimation { - to: 0; duration: 500 - easing.type: "InOutQuad" - } - NumberAnimation { - to: 200-img.height - easing.type: "OutBounce" - duration: 2000 - } - PauseAnimation { - duration: 1000 - } - } - } -} diff --git a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.qml b/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.qml deleted file mode 100644 index 7c8c233..0000000 --- a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.qml +++ /dev/null @@ -1,939 +0,0 @@ -import Qt.VisualTest 4.6 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 32 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 48 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 64 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 80 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 96 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 112 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 128 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 144 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 160 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 176 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 192 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 208 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 224 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 240 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 256 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 272 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 288 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 304 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 320 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 336 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 352 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 368 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 384 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 400 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 416 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 432 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 448 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 464 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 480 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 496 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 512 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 528 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 544 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 560 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 576 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 592 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 608 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 624 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 640 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 656 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 672 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 688 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 704 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 720 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 736 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 752 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 768 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 784 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 800 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 816 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 832 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 848 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 864 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 880 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 896 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 912 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 928 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 944 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 960 - image: "propertyAction.0.png" - } - Frame { - msec: 976 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 992 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1008 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1024 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1040 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1056 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1072 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1088 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1104 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1120 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1136 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1152 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1168 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1184 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1200 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1216 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1232 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1248 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1264 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1280 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1296 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1312 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1328 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1344 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1360 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1376 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1392 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1408 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1424 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1440 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1456 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1472 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1488 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1504 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1520 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1536 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1552 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1568 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1584 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1600 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 109; y: 247 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 1616 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 1632 - hash: "c91921dba899d7a86de3cd013773889f" - } - Frame { - msec: 1648 - hash: "888c0fc86155e10b5fc577ef6ec5755a" - } - Frame { - msec: 1664 - hash: "7fd61a8910bf7b0d2bf57653a268c5d8" - } - Frame { - msec: 1680 - hash: "f42f5073f90a423adf011d0e168c8a9b" - } - Frame { - msec: 1696 - hash: "a3d89deb6cfa2bbbaa1d7d5b5e5b48d5" - } - Frame { - msec: 1712 - hash: "f10e997d7a17c18251a32d58b018105a" - } - Frame { - msec: 1728 - hash: "09ffb57d5f67edfa34d6aad36a002554" - } - Frame { - msec: 1744 - hash: "01f3a2f5b9815f1397a907b099339360" - } - Frame { - msec: 1760 - hash: "58c0910c49748edd2ef8472960179472" - } - Frame { - msec: 1776 - hash: "cc82c5f7f93c5bc1af1c6c509268566a" - } - Frame { - msec: 1792 - hash: "3ef272c6439b85fbc166375d1b98403c" - } - Frame { - msec: 1808 - hash: "98c576f0900e4b8752d1f951bb6bf391" - } - Frame { - msec: 1824 - hash: "4d66dd64d8736ef50163e08723873478" - } - Frame { - msec: 1840 - hash: "9a5d8455b6763456185625811253e0b1" - } - Frame { - msec: 1856 - hash: "77e85731efa786a2492aae19a87523c6" - } - Frame { - msec: 1872 - hash: "f3199d0c860f1236e0b9472bef8785bc" - } - Frame { - msec: 1888 - hash: "f3199d0c860f1236e0b9472bef8785bc" - } - Frame { - msec: 1904 - hash: "32ccdab249268b01d9f1658a736052f1" - } - Frame { - msec: 1920 - image: "propertyAction.1.png" - } - Frame { - msec: 1936 - hash: "db3010ef552146df938c237f6c92bff5" - } - Frame { - msec: 1952 - hash: "101e8595d0301e88376ec52ba9361f84" - } - Frame { - msec: 1968 - hash: "119d548c59baa7e47266d2ceca663288" - } - Frame { - msec: 1984 - hash: "f141fafe102a0b9a2bf33e8c3fc800ff" - } - Frame { - msec: 2000 - hash: "b01f9ca8d4fbff17b3d48c70898a044d" - } - Frame { - msec: 2016 - hash: "cf67954a2d1b22e8d2cfdc26419bafb8" - } - Frame { - msec: 2032 - hash: "7680b2b5a63dea13d733947297e01355" - } - Frame { - msec: 2048 - hash: "af1c017acf6b3c8cff86c9ceb60db3cb" - } - Frame { - msec: 2064 - hash: "0b23ec51f71fddae5e2238ab5754f1db" - } - Frame { - msec: 2080 - hash: "976643961ecbdc86335180ba812b874e" - } - Frame { - msec: 2096 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2112 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2128 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2144 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2160 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2176 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2192 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2208 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2224 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2240 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2256 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2272 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2288 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2304 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2320 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2336 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2352 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2368 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2384 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2400 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2416 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2432 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2448 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2464 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2480 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2496 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2512 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2528 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2544 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2560 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2576 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2592 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2608 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2624 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2640 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2656 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2672 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2688 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2704 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2720 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2736 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2752 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 109; y: 247 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2768 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2784 - hash: "aeed60899abb6c486a5b1df81f9a0224" - } - Frame { - msec: 2800 - hash: "ab924ae435262e76381c2e4af5d64342" - } - Frame { - msec: 2816 - hash: "d60758fc12471a19d31c85f058f2ded7" - } - Frame { - msec: 2832 - hash: "c62e2956f8eb5d2c8cd76ba05c5929d5" - } - Frame { - msec: 2848 - hash: "f2967ee7e035a9ff258116a2706529f8" - } - Frame { - msec: 2864 - hash: "885c4705c6c29f69c56c44abc1251d75" - } - Frame { - msec: 2880 - image: "propertyAction.2.png" - } - Frame { - msec: 2896 - hash: "f4af6871e522511f95bc4c5abfc2a562" - } - Frame { - msec: 2912 - hash: "b27e1e7e0d90468525309528ccfe2823" - } - Frame { - msec: 2928 - hash: "78e7d84a4466258b40315fe61b7ca15c" - } - Frame { - msec: 2944 - hash: "471013d921d8d6e7468fd6aba0b75c71" - } - Frame { - msec: 2960 - hash: "856048da893c9136ac5740bc89b64128" - } - Frame { - msec: 2976 - hash: "32ccdab249268b01d9f1658a736052f1" - } - Frame { - msec: 2992 - hash: "2264fa3acd979f104633c1301a0efd8f" - } - Frame { - msec: 3008 - hash: "f3199d0c860f1236e0b9472bef8785bc" - } - Frame { - msec: 3024 - hash: "ad899d1ecaa43a5541be7b70413caee5" - } - Frame { - msec: 3040 - hash: "4e652524c992f5ee1b987275ca509728" - } - Frame { - msec: 3056 - hash: "a44b3dec2a016694bc8553a51b29d46c" - } - Frame { - msec: 3072 - hash: "7fbe20346bc3c28c345e0797b55599f3" - } - Frame { - msec: 3088 - hash: "bcff18ad433bb4f08126ee66efb037d1" - } - Frame { - msec: 3104 - hash: "836666c64f73c38e87de95944ff2fe72" - } - Frame { - msec: 3120 - hash: "4379982d23db239b1741b5d72c53e160" - } - Frame { - msec: 3136 - hash: "0ed9476337214e1493c1510b8a4c90f8" - } - Frame { - msec: 3152 - hash: "dab637406577a1924c7dbb30680e1af3" - } - Frame { - msec: 3168 - hash: "dcc79277fdb8966e5a3f2ed1b2fc4292" - } - Frame { - msec: 3184 - hash: "5f207d1dfad4907f200d76104881bf56" - } - Frame { - msec: 3200 - hash: "3434fc7f81e859722585dae97c557864" - } - Frame { - msec: 3216 - hash: "7c775b9be8c5293d4962324574267c22" - } - Frame { - msec: 3232 - hash: "da0ff6955c2e4cd86421bdb9053f56e6" - } - Frame { - msec: 3248 - hash: "a1297d525a3ad41abbbb7c2f15efd4fb" - } - Frame { - msec: 3264 - hash: "5326b220995b2a1eaa308ad10fd353fa" - } - Frame { - msec: 3280 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3296 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3312 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3328 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3344 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Key { - type: 6 - key: 16777249 - modifiers: 67108864 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3360 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3376 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3392 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3408 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3424 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3440 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3456 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3472 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3488 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3504 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3520 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3536 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3552 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3568 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3584 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3600 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3616 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } - Frame { - msec: 3632 - hash: "55b713dcb7c810bf126e06cc97d26d24" - } -} diff --git a/tests/auto/declarative/visual/animation/propertyAction/propertyAction.qml b/tests/auto/declarative/visual/animation/propertyAction/propertyAction.qml deleted file mode 100644 index e18e770..0000000 --- a/tests/auto/declarative/visual/animation/propertyAction/propertyAction.qml +++ /dev/null @@ -1,34 +0,0 @@ -import Qt 4.6 - -Rectangle { - width: 400; height: 400 - Rectangle { - id: myRect - width: 100; height: 100 - color: "red" - } - MouseArea { - id: clickable - anchors.fill: parent - } - - states: State { - name: "state1" - when: clickable.pressed - PropertyChanges { - target: myRect - x: 50; y: 50 - color: "blue" - } - } - - transitions: Transition { - to: "state1" - reversible: true - SequentialAnimation { - ColorAnimation {} - PropertyAction { properties: "x" } - NumberAnimation { properties: "y"; easing.type: "InOutQuad" } - } - } -} diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.0.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.0.png Binary files differdeleted file mode 100644 index c7bbf38..0000000 --- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.0.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.1.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.1.png Binary files differdeleted file mode 100644 index 612500b..0000000 --- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.1.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.2.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.2.png Binary files differdeleted file mode 100644 index c7bbf38..0000000 --- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.2.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.3.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.3.png Binary files differdeleted file mode 100644 index c7bbf38..0000000 --- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.3.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.4.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.4.png Binary files differdeleted file mode 100644 index 1910eb4..0000000 --- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.4.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.5.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.5.png Binary files differdeleted file mode 100644 index 3b8eebd..0000000 --- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.5.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.6.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.6.png Binary files differdeleted file mode 100644 index c7bbf38..0000000 --- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.6.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.7.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.7.png Binary files differdeleted file mode 100644 index c7bbf38..0000000 --- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.7.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.8.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.8.png Binary files differdeleted file mode 100644 index 960be31..0000000 --- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.8.png +++ /dev/null diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.qml b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.qml deleted file mode 100644 index 0f58de5..0000000 --- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.qml +++ /dev/null @@ -1,2471 +0,0 @@ -import Qt.VisualTest 4.6 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 32 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 48 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 64 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 80 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 96 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 112 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 128 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 144 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 160 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 176 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 192 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 208 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 224 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 240 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 256 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 272 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 288 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 304 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 320 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 336 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 352 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 368 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 384 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 400 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 416 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 432 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 448 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 464 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 480 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 496 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 512 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 528 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 544 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 560 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 576 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 592 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 608 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 624 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 640 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 656 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 672 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 688 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 704 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 720 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 736 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 752 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 768 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 784 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 800 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 816 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 832 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 848 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 864 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 880 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 896 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 912 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 928 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 944 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 960 - image: "reanchor.0.png" - } - Frame { - msec: 976 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 992 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1008 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1024 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1040 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1056 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1072 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1088 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1104 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1120 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1136 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1152 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1168 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1184 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1200 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1216 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1232 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1248 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1264 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1280 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1296 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1312 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1328 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1344 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1360 - hash: "213811853dbefdc418099721e3bf8651" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 88; y: 115 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 1376 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1392 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1408 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1424 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1440 - hash: "213811853dbefdc418099721e3bf8651" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 88; y: 115 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 1456 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 1472 - hash: "c2d6dd91f3e9cdcacbadcb449c8a9896" - } - Frame { - msec: 1488 - hash: "1098ea19aecebd71208e101d522c1981" - } - Frame { - msec: 1504 - hash: "8cc59c20d796c073038518d2855fb6f0" - } - Frame { - msec: 1520 - hash: "914a89d0cfdc68145024ce2305a5e76e" - } - Frame { - msec: 1536 - hash: "7a2e3ca2660df24d9a6ec49a7422ebe1" - } - Frame { - msec: 1552 - hash: "b71496d986d5f0aa76b4f1663627f1f7" - } - Frame { - msec: 1568 - hash: "41b29a523db919bc0a4e0a9a88bfc873" - } - Frame { - msec: 1584 - hash: "97632a0de766b9ffbf71f21eeb0ff9a2" - } - Frame { - msec: 1600 - hash: "94cc196e62c150008461ff9996b4cae8" - } - Frame { - msec: 1616 - hash: "32e96ad2d15fa2386d365ab249ddf4f4" - } - Frame { - msec: 1632 - hash: "209394314f971b12fbc61ca45010cc62" - } - Frame { - msec: 1648 - hash: "b917c2684dda8af00278b34ababdcf5c" - } - Frame { - msec: 1664 - hash: "92b506860c1c5dc52f87c24c89921b05" - } - Frame { - msec: 1680 - hash: "7b7e96113fa9359954be9b3ac87943c3" - } - Frame { - msec: 1696 - hash: "42bc69db42c5df902038cec414246ec5" - } - Frame { - msec: 1712 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1728 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1744 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1760 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1776 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1792 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1808 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1824 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1840 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1856 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1872 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1888 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1904 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1920 - image: "reanchor.1.png" - } - Frame { - msec: 1936 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1952 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1968 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 1984 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 2000 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 2016 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 2032 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 2048 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 2064 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 2080 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 2096 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 87; y: 114 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2112 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 2128 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 2144 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 2160 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 2176 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 2192 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 2208 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 87; y: 114 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2224 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 2240 - hash: "2d1aa011f2008a6147ba593e3cf272d7" - } - Frame { - msec: 2256 - hash: "206699ea84ce9fd60c1603b7a48a5134" - } - Frame { - msec: 2272 - hash: "68eb6df93a2b6db7023f7c3cc71d5b5f" - } - Frame { - msec: 2288 - hash: "5a4cd0620959dde92eeeaaa4dcd13091" - } - Frame { - msec: 2304 - hash: "17b763187a777253b25b22f5dd7253ae" - } - Frame { - msec: 2320 - hash: "1de9dcf4d385266f4482e2d0967d9119" - } - Frame { - msec: 2336 - hash: "833496add6dbc3103a28a47e453a738b" - } - Frame { - msec: 2352 - hash: "b3bab2e9c56db60cd54e68369e6b790d" - } - Frame { - msec: 2368 - hash: "ee91c6cd909bec401a1a7eebd10b8b02" - } - Frame { - msec: 2384 - hash: "0ed679ad0ab7bd3544947bccda88647b" - } - Frame { - msec: 2400 - hash: "d7dfcdc8a4233821919f1732d8c39712" - } - Frame { - msec: 2416 - hash: "c52829ee689e4c312a9dff8dbd4a79f9" - } - Frame { - msec: 2432 - hash: "7962badda0e80a61b67943d3b31f892d" - } - Frame { - msec: 2448 - hash: "fc5f2c24e3d8743ab5b20aaa122bacc2" - } - Frame { - msec: 2464 - hash: "201b9ee6c9ac6208ef812fe2e95020ef" - } - Frame { - msec: 2480 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2496 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2512 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2528 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2544 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2560 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2576 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2592 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2608 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2624 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2640 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2656 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2672 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2688 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2704 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2720 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2736 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2752 - hash: "213811853dbefdc418099721e3bf8651" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 87; y: 114 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2768 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2784 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2800 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2816 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2832 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2848 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 2864 - hash: "213811853dbefdc418099721e3bf8651" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 87; y: 114 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2880 - image: "reanchor.2.png" - } - Frame { - msec: 2896 - hash: "c2d6dd91f3e9cdcacbadcb449c8a9896" - } - Frame { - msec: 2912 - hash: "1098ea19aecebd71208e101d522c1981" - } - Frame { - msec: 2928 - hash: "8cc59c20d796c073038518d2855fb6f0" - } - Frame { - msec: 2944 - hash: "914a89d0cfdc68145024ce2305a5e76e" - } - Frame { - msec: 2960 - hash: "7a2e3ca2660df24d9a6ec49a7422ebe1" - } - Frame { - msec: 2976 - hash: "b71496d986d5f0aa76b4f1663627f1f7" - } - Frame { - msec: 2992 - hash: "41b29a523db919bc0a4e0a9a88bfc873" - } - Frame { - msec: 3008 - hash: "97632a0de766b9ffbf71f21eeb0ff9a2" - } - Frame { - msec: 3024 - hash: "94cc196e62c150008461ff9996b4cae8" - } - Frame { - msec: 3040 - hash: "32e96ad2d15fa2386d365ab249ddf4f4" - } - Frame { - msec: 3056 - hash: "209394314f971b12fbc61ca45010cc62" - } - Frame { - msec: 3072 - hash: "b917c2684dda8af00278b34ababdcf5c" - } - Frame { - msec: 3088 - hash: "92b506860c1c5dc52f87c24c89921b05" - } - Frame { - msec: 3104 - hash: "7b7e96113fa9359954be9b3ac87943c3" - } - Frame { - msec: 3120 - hash: "42bc69db42c5df902038cec414246ec5" - } - Frame { - msec: 3136 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3152 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3168 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3184 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3200 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3216 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3232 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3248 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3264 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3280 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3296 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3312 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3328 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3344 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3360 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 87; y: 114 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3376 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3392 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3408 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3424 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3440 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3456 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3472 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 87; y: 114 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3488 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 3504 - hash: "2d1aa011f2008a6147ba593e3cf272d7" - } - Frame { - msec: 3520 - hash: "206699ea84ce9fd60c1603b7a48a5134" - } - Frame { - msec: 3536 - hash: "68eb6df93a2b6db7023f7c3cc71d5b5f" - } - Frame { - msec: 3552 - hash: "5a4cd0620959dde92eeeaaa4dcd13091" - } - Frame { - msec: 3568 - hash: "17b763187a777253b25b22f5dd7253ae" - } - Frame { - msec: 3584 - hash: "1de9dcf4d385266f4482e2d0967d9119" - } - Frame { - msec: 3600 - hash: "833496add6dbc3103a28a47e453a738b" - } - Frame { - msec: 3616 - hash: "b3bab2e9c56db60cd54e68369e6b790d" - } - Frame { - msec: 3632 - hash: "ee91c6cd909bec401a1a7eebd10b8b02" - } - Frame { - msec: 3648 - hash: "0ed679ad0ab7bd3544947bccda88647b" - } - Frame { - msec: 3664 - hash: "d7dfcdc8a4233821919f1732d8c39712" - } - Frame { - msec: 3680 - hash: "c52829ee689e4c312a9dff8dbd4a79f9" - } - Frame { - msec: 3696 - hash: "7962badda0e80a61b67943d3b31f892d" - } - Frame { - msec: 3712 - hash: "fc5f2c24e3d8743ab5b20aaa122bacc2" - } - Frame { - msec: 3728 - hash: "201b9ee6c9ac6208ef812fe2e95020ef" - } - Frame { - msec: 3744 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 3760 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 3776 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 3792 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 3808 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 3824 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 3840 - image: "reanchor.3.png" - } - Frame { - msec: 3856 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 3872 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 3888 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 3904 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 3920 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 3936 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 3952 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 3968 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 3984 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4000 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4016 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4032 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4048 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4064 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4080 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4096 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4112 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4128 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4144 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4160 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4176 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4192 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4208 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4224 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4240 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4256 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4272 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4288 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4304 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4320 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4336 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4352 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4368 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4384 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4400 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4416 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4432 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4448 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4464 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4480 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4496 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4512 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4528 - hash: "213811853dbefdc418099721e3bf8651" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 174; y: 174 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4544 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4560 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4576 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4592 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4608 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4624 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4640 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4656 - hash: "213811853dbefdc418099721e3bf8651" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 174; y: 174 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4672 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 4688 - hash: "5d38bf4a033de31985ae9989107908af" - } - Frame { - msec: 4704 - hash: "ed1bd2abd42848ecd07f0f0654c2b80f" - } - Frame { - msec: 4720 - hash: "588de6662123733303d93f62c6481f6a" - } - Frame { - msec: 4736 - hash: "aae79c2fbb2fd1ac7efa9802bff40f95" - } - Frame { - msec: 4752 - hash: "f17512798136f67f25aaa0aeb60678e1" - } - Frame { - msec: 4768 - hash: "79578a1e0e3e9cd45c210d0c5d3e75d6" - } - Frame { - msec: 4784 - hash: "5dad4ff201744cda6ff41f89414c8d11" - } - Frame { - msec: 4800 - image: "reanchor.4.png" - } - Frame { - msec: 4816 - hash: "c4559982aa3f3d291364deed4bd96d65" - } - Frame { - msec: 4832 - hash: "0dff03ea9154bdb2a813358b04cfbde9" - } - Frame { - msec: 4848 - hash: "09bdf2869dee1c0cbe3c8c2e9254580b" - } - Frame { - msec: 4864 - hash: "ba7762978bbd63d624029910fe16fb6d" - } - Frame { - msec: 4880 - hash: "f00d198ab8f4f625b60e9e2071d8adfd" - } - Frame { - msec: 4896 - hash: "adcec9c9a5b0d60cf45b2915365ea09c" - } - Frame { - msec: 4912 - hash: "a65cd6fbb26d618692ef23148015a4f2" - } - Frame { - msec: 4928 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 4944 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 4960 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 4976 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 4992 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5008 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5024 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5040 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5056 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5072 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5088 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5104 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5120 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5136 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5152 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5168 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5184 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5200 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5216 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5232 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5248 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5264 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5280 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5296 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5312 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5328 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5344 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5360 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5376 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5392 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5408 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5424 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5440 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5456 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5472 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5488 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5504 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5520 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5536 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5552 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5568 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5584 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5600 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5616 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5632 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5648 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5664 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5680 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5696 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5712 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5728 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5744 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5760 - image: "reanchor.5.png" - } - Frame { - msec: 5776 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5792 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5808 - hash: "1137e22c68e043950811dee295e19b04" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 95; y: 78 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5824 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5840 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5856 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5872 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5888 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5904 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5920 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5936 - hash: "1137e22c68e043950811dee295e19b04" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 95; y: 78 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5952 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 5968 - hash: "103bbc9ce594851f5243b103f8fef1c1" - } - Frame { - msec: 5984 - hash: "c381148b052be2e6244f24c2292b89cf" - } - Frame { - msec: 6000 - hash: "2fda1d635fa47bff7de867df3dadfb4f" - } - Frame { - msec: 6016 - hash: "4d35e00af33ad5dc84998cda2d066b4e" - } - Frame { - msec: 6032 - hash: "14005d52d372acf6d3495f69bbf00b7d" - } - Frame { - msec: 6048 - hash: "29728f64d12e858d960c4e197824ef43" - } - Frame { - msec: 6064 - hash: "798822f0c20ef87cb01fe1dcd76c7585" - } - Frame { - msec: 6080 - hash: "4cdeea0f91587ef32a2c2e282f6d00e6" - } - Frame { - msec: 6096 - hash: "08ca5d16771e58da6cdd20b86dc65f03" - } - Frame { - msec: 6112 - hash: "e9aeb432709d275048ad9d84fb21db1a" - } - Frame { - msec: 6128 - hash: "3b642f27d356fd1815dc50f8e750623d" - } - Frame { - msec: 6144 - hash: "7c1db0ec278849ec044ea0aa3383075b" - } - Frame { - msec: 6160 - hash: "da902850879c95d4ddffbb1ba0060f25" - } - Frame { - msec: 6176 - hash: "e4053bd0db7752e7a47e096da645b69b" - } - Frame { - msec: 6192 - hash: "aabbb6d34399818347db265151a547b7" - } - Frame { - msec: 6208 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6224 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6240 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6256 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6272 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6288 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6304 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6320 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6336 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6352 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6368 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6384 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6400 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6416 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6432 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6448 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6464 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6480 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6496 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6512 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6528 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6544 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6560 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6576 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6592 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6608 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6624 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6640 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6656 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6672 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6688 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6704 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6720 - image: "reanchor.6.png" - } - Frame { - msec: 6736 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6752 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6768 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6784 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6800 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6816 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6832 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6848 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6864 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6880 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6896 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6912 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6928 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6944 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6960 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6976 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 6992 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7008 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7024 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7040 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7056 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7072 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7088 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7104 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7120 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7136 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7152 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7168 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7184 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7200 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7216 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7232 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7248 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7264 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7280 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7296 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7312 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7328 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7344 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7360 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7376 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7392 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7408 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7424 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7440 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7456 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7472 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7488 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7504 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7520 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7536 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7552 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7568 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7584 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7600 - hash: "213811853dbefdc418099721e3bf8651" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 86; y: 136 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 7616 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7632 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7648 - hash: "213811853dbefdc418099721e3bf8651" - } - Frame { - msec: 7664 - hash: "213811853dbefdc418099721e3bf8651" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 86; y: 136 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 7680 - image: "reanchor.7.png" - } - Frame { - msec: 7696 - hash: "c2d6dd91f3e9cdcacbadcb449c8a9896" - } - Frame { - msec: 7712 - hash: "1098ea19aecebd71208e101d522c1981" - } - Frame { - msec: 7728 - hash: "8cc59c20d796c073038518d2855fb6f0" - } - Frame { - msec: 7744 - hash: "914a89d0cfdc68145024ce2305a5e76e" - } - Frame { - msec: 7760 - hash: "7a2e3ca2660df24d9a6ec49a7422ebe1" - } - Frame { - msec: 7776 - hash: "b71496d986d5f0aa76b4f1663627f1f7" - } - Frame { - msec: 7792 - hash: "41b29a523db919bc0a4e0a9a88bfc873" - } - Frame { - msec: 7808 - hash: "97632a0de766b9ffbf71f21eeb0ff9a2" - } - Frame { - msec: 7824 - hash: "94cc196e62c150008461ff9996b4cae8" - } - Frame { - msec: 7840 - hash: "32e96ad2d15fa2386d365ab249ddf4f4" - } - Frame { - msec: 7856 - hash: "209394314f971b12fbc61ca45010cc62" - } - Frame { - msec: 7872 - hash: "b917c2684dda8af00278b34ababdcf5c" - } - Frame { - msec: 7888 - hash: "92b506860c1c5dc52f87c24c89921b05" - } - Frame { - msec: 7904 - hash: "7b7e96113fa9359954be9b3ac87943c3" - } - Frame { - msec: 7920 - hash: "42bc69db42c5df902038cec414246ec5" - } - Frame { - msec: 7936 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 7952 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 7968 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 7984 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8000 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8016 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8032 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8048 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8064 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8080 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8096 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8112 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8128 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8144 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8160 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8176 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8192 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8208 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8224 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8240 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8256 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8272 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8288 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8304 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8320 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8336 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8352 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8368 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8384 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8400 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 177; y: 173 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 8416 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8432 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8448 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8464 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8480 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8496 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8512 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 177; y: 173 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 8528 - hash: "7eb4027421fd6aa7d668a704e40a6e61" - } - Frame { - msec: 8544 - hash: "b4f30663a9b21e42375645e970f57d0b" - } - Frame { - msec: 8560 - hash: "6c12dbf4af8801573515b61123d4b1d7" - } - Frame { - msec: 8576 - hash: "facc61397c734bb4409d5664dc059a14" - } - Frame { - msec: 8592 - hash: "897e15e37276454d11fac6a528e967a6" - } - Frame { - msec: 8608 - hash: "cf8173519f1e042c227ff61c62308640" - } - Frame { - msec: 8624 - hash: "d0fcda14ea4bcfebf04ccf99e292ac6a" - } - Frame { - msec: 8640 - image: "reanchor.8.png" - } - Frame { - msec: 8656 - hash: "74b4ababa97def538f5340e88a4419a4" - } - Frame { - msec: 8672 - hash: "b96b5b64505b1814ddd42a52569d7fd9" - } - Frame { - msec: 8688 - hash: "0e3e07aad030b2075c4bc61b02ebe49e" - } - Frame { - msec: 8704 - hash: "c5eebc652c58e3a44d5ed481100ef242" - } - Frame { - msec: 8720 - hash: "d4a74185304c126739af728ddda40e0c" - } - Frame { - msec: 8736 - hash: "448572d3c1060b8311952429a7f9430d" - } - Frame { - msec: 8752 - hash: "00f64c09657a8afd6caa186efb6ad860" - } - Frame { - msec: 8768 - hash: "2a360e6feaaf303e9ee63145085796e6" - } - Frame { - msec: 8784 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 8800 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 8816 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 8832 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 8848 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 8864 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 8880 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 8896 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 8912 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 8928 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 8944 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 8960 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 8976 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 8992 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9008 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9024 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9040 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9056 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9072 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9088 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9104 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9120 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9136 - hash: "1137e22c68e043950811dee295e19b04" - } - Key { - type: 6 - key: 16777249 - modifiers: 67108864 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 9152 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9168 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9184 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9200 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9216 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9232 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9248 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9264 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9280 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9296 - hash: "1137e22c68e043950811dee295e19b04" - } - Frame { - msec: 9312 - hash: "1137e22c68e043950811dee295e19b04" - } -} diff --git a/tests/auto/declarative/visual/animation/reanchor/reanchor.qml b/tests/auto/declarative/visual/animation/reanchor/reanchor.qml deleted file mode 100644 index d80631f..0000000 --- a/tests/auto/declarative/visual/animation/reanchor/reanchor.qml +++ /dev/null @@ -1,68 +0,0 @@ -import Qt 4.6 - -Rectangle { - id: container - width: 200; height: 200 - Rectangle { - id: myRect - objectName: "MyRect" - color: "green"; - anchors.left: parent.left - anchors.right: rightGuideline.left - anchors.top: topGuideline.top - anchors.bottom: container.bottom - } - Item { id: leftGuideline; x: 10 } - Item { id: rightGuideline; x: 150 } - Item { id: topGuideline; y: 10 } - Item { id: bottomGuideline; y: 150 } - Item { id: topGuideline2; y: 50 } - Item { id: bottomGuideline2; y: 175 } - - MouseArea { - id: wholeArea - anchors.fill: parent - onClicked: { - if (container.state == "") { - container.state = "reanchored"; - } else if (container.state == "reanchored") { - container.state = "reanchored2"; - } else if (container.state == "reanchored2") - container.state = "reanchored"; - } - } - - states: [ State { - name: "reanchored" - AnchorChanges { - target: myRect; - left: leftGuideline.left - right: container.right - top: container.top - bottom: bottomGuideline.bottom - } - }, State { - name: "reanchored2" - AnchorChanges { - target: myRect; - reset: "left, right" - top: topGuideline2.top - bottom: bottomGuideline2.bottom - } - }] - - transitions: Transition { - NumberAnimation { properties: "x,y,width,height" } - } - - MouseArea { - width: 50; height: 50 - anchors.right: parent.right - anchors.bottom: parent.bottom - onClicked: { - container.state = ""; - } - } - - state: "reanchored" -} diff --git a/tests/auto/declarative/visual/animation/scriptAction/scriptAction.qml b/tests/auto/declarative/visual/animation/scriptAction/scriptAction.qml deleted file mode 100644 index ef4ed76..0000000 --- a/tests/auto/declarative/visual/animation/scriptAction/scriptAction.qml +++ /dev/null @@ -1,35 +0,0 @@ -import Qt 4.6 - -Rectangle { - width: 400; height: 400 - Rectangle { - id: myRect - width: 100; height: 100 - color: "red" - } - MouseArea { - id: clickable - anchors.fill: parent - } - - states: State { - name: "state1" - when: clickable.pressed - PropertyChanges { - target: myRect - x: 50; y: 50 - } - StateChangeScript { - name: "setColor" - script: myRect.color = "blue" - } - } - - transitions: Transition { - SequentialAnimation { - NumberAnimation { properties: "x"; easing.type: "InOutQuad" } - ScriptAction { stateChangeScriptName: "setColor" } - NumberAnimation { properties: "y"; easing.type: "InOutQuad" } - } - } -} diff --git a/tests/auto/declarative/visual/fillmode/data/fillmode.qml b/tests/auto/declarative/visual/fillmode/data/fillmode.qml deleted file mode 100644 index 7ac6f51..0000000 --- a/tests/auto/declarative/visual/fillmode/data/fillmode.qml +++ /dev/null @@ -1,279 +0,0 @@ -import Qt.VisualTest 4.6 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 32 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 48 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 64 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 80 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 96 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 112 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 128 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 144 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 160 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 176 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 192 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 208 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 224 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 240 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 256 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 272 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 288 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 304 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 320 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 336 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 352 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 368 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 384 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 400 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 416 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 432 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 448 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 464 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 480 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 496 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 512 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 528 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 544 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 560 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 576 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 592 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 608 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 624 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 640 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 656 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 672 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 688 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 704 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Key { - type: 6 - key: 16777249 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 720 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 736 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 752 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 768 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 784 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 800 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 816 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 832 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 848 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 864 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 880 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 896 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 912 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 928 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 944 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 960 - image: "fillmode.0.png" - } - Frame { - msec: 976 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 992 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 1008 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 1024 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 1040 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } - Frame { - msec: 1056 - hash: "c8cb8d51ca04231dc272133faaf2fb6d" - } -} diff --git a/tests/auto/declarative/visual/fillmode/fillmode.qml b/tests/auto/declarative/visual/fillmode/fillmode.qml deleted file mode 100644 index 8450bf2..0000000 --- a/tests/auto/declarative/visual/fillmode/fillmode.qml +++ /dev/null @@ -1,16 +0,0 @@ -import Qt 4.6 - -Rectangle { - id: screen; width: 750; height: 600; color: "gray" - property string source: "face.png" - - Grid { - columns: 3 - Image { width: 250; height: 300; source: screen.source; fillMode: Image.Stretch } - Image { width: 250; height: 300; source: screen.source; fillMode: Image.PreserveAspectFit; smooth: true } - Image { width: 250; height: 300; source: screen.source; fillMode: Image.PreserveAspectCrop } - Image { width: 250; height: 300; source: screen.source; fillMode: Image.Tile; smooth: true } - Image { width: 250; height: 300; source: screen.source; fillMode: Image.TileHorizontally } - Image { width: 250; height: 300; source: screen.source; fillMode: Image.TileVertically } - } -} diff --git a/tests/auto/declarative/visual/focusscope/test3.qml b/tests/auto/declarative/visual/focusscope/test3.qml deleted file mode 100644 index 855bdc5..0000000 --- a/tests/auto/declarative/visual/focusscope/test3.qml +++ /dev/null @@ -1,52 +0,0 @@ -import Qt 4.6 - -Rectangle { - color: "white" - width: 800 - height: 600 - - Listmodel { - id: model - ListElement { name: "1" } - ListElement { name: "2" } - ListElement { name: "3" } - ListElement { name: "4" } - ListElement { name: "5" } - ListElement { name: "6" } - ListElement { name: "7" } - ListElement { name: "8" } - ListElement { name: "9" } - } - - Component { - id: verticalDelegate - FocusScope { - id: root - width: 50; height: 50; - Keys.onDigit9Pressed: console.log("Error - " + name) - Rectangle { - focus: true - Keys.onDigit9Pressed: console.log(name) - width: 50; height: 50; - color: root.ListView.isCurrentItem?"red":"green" - Text { text: name; anchors.centerIn: parent } - } - } - } - - ListView { - width: 800; height: 50; orientation: "Horizontal" - focus: true - model: model - delegate: verticalDelegate - preferredHighlightBegin: 100 - preferredHighlightEnd: 101 - highlightRangeMode: ListView.StrictlyEnforceRange - } - - - Text { - y: 100; x: 50 - text: "Currently selected element should be red\nPressing \"9\" should print the number of the currently selected item\nBe sure to scroll all the way to the right, pause, and then all the way to the left." - } -} diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/content/MyBorderImage.qml b/tests/auto/declarative/visual/qdeclarativeborderimage/content/MyBorderImage.qml deleted file mode 100644 index e268ce7..0000000 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/content/MyBorderImage.qml +++ /dev/null @@ -1,38 +0,0 @@ -import Qt 4.6 - -Item { - property alias horizontalMode: image.horizontalTileMode - property alias verticalMode: image.verticalTileMode - property alias source: image.source - property alias antialiased: image.smooth - - property int minWidth - property int minHeight - property int maxWidth - property int maxHeight - property int margin - - id: container - width: 240; height: 240 - - BorderImage { - id: image; x: container.width / 2 - width / 2; y: container.height / 2 - height / 2 - - width: SequentialAnimation { - repeat: true - NumberAnimation { from: container.minWidth; to: container.maxWidth; duration: 2000; easing.type: "InOutQuad"} - NumberAnimation { from: container.maxWidth; to: container.minWidth; duration: 2000; easing.type: "InOutQuad" } - } - - height: SequentialAnimation { - repeat: true - NumberAnimation { from: container.minHeight; to: container.maxHeight; duration: 2000; easing.type: "InOutQuad"} - NumberAnimation { from: container.maxHeight; to: container.minHeight; duration: 2000; easing.type: "InOutQuad" } - } - - border.top: container.margin - border.left: container.margin - border.bottom: container.margin - border.right: container.margin - } -} diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.1.png b/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.1.png Binary files differdeleted file mode 100644 index 1f960e5..0000000 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.1.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.qml b/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.qml deleted file mode 100644 index 043f5e2..0000000 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.qml +++ /dev/null @@ -1,1823 +0,0 @@ -import Qt.VisualTest 4.6 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 32 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 48 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 64 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 80 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 96 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 112 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 128 - hash: "cd2180be80101c2aa4350b51b7a6f502" - } - Frame { - msec: 144 - hash: "de471829f8ad3b43bf1b4df9d1d65a4d" - } - Frame { - msec: 160 - hash: "ed9f2ca797894612600bc4b7fbaecb84" - } - Frame { - msec: 176 - hash: "59470d71fa4426d0283e86371f2bfc2a" - } - Frame { - msec: 192 - hash: "9a2f92efb51bcc6293d6a8e82d5314ea" - } - Frame { - msec: 208 - hash: "7b66e21652a7d0982226e281a48411a9" - } - Frame { - msec: 224 - hash: "a716c8d2c94433dee719f92f0822c8ec" - } - Frame { - msec: 240 - hash: "f22a47b846cfee96ebdf39bbce2e6d51" - } - Frame { - msec: 256 - hash: "5a8932d13d624932a65694fd19ec05cd" - } - Frame { - msec: 272 - hash: "48e62dd171f5da82b5aa26c765e4042c" - } - Frame { - msec: 288 - hash: "63d3c47f7dec1236440a05e0a8380900" - } - Frame { - msec: 304 - hash: "323af110731b7af0c30f8862ff59b833" - } - Frame { - msec: 320 - hash: "83c029e328e80af83158c37089cf0ece" - } - Frame { - msec: 336 - hash: "3f9a09ae19be34348bb2552915360cf7" - } - Frame { - msec: 352 - hash: "df624d70cae1bcefda8d69c0ff055d83" - } - Frame { - msec: 368 - hash: "d671a3b971468e1d8aa30ab655e020a9" - } - Frame { - msec: 384 - hash: "74c837b29f7f05b615123f0e608b523f" - } - Frame { - msec: 400 - hash: "277ef98ea859fb7685fe6cd44a538a7d" - } - Frame { - msec: 416 - hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9" - } - Frame { - msec: 432 - hash: "456be9c208d690c479ba12bf6325dde0" - } - Frame { - msec: 448 - hash: "10307beea6d99ab0ff5863f8e35555ed" - } - Frame { - msec: 464 - hash: "170a1d5fe3422cf5223a78015a6a45fd" - } - Frame { - msec: 480 - hash: "64ecb03aa538e74d0b99c6dec7751401" - } - Frame { - msec: 496 - hash: "f3a7e74a1839f9366f9eeec4d2b80d1e" - } - Frame { - msec: 512 - hash: "37c3f25e5cfdb48d7e3ab0cf8ffb9154" - } - Frame { - msec: 528 - hash: "0af81ee0d76ff8335a0e347dc086ca37" - } - Frame { - msec: 544 - hash: "061406edcbd2d4930ab89c3fcab63c7f" - } - Frame { - msec: 560 - hash: "31d65134f340d82dd40f2401bda3fb7e" - } - Frame { - msec: 576 - hash: "16c16c77c65b36d1e0954d5ead2642be" - } - Frame { - msec: 592 - hash: "61c16009b65a55bffb63e27727e1615e" - } - Frame { - msec: 608 - hash: "e1474c2cdd8768ca1ef45bf3bc5234ca" - } - Frame { - msec: 624 - hash: "89c159ef00d273ecfe61332e1bf7244d" - } - Frame { - msec: 640 - hash: "f4d0d3bca25e67908b38910f47b4757e" - } - Frame { - msec: 656 - hash: "0e0c40f8e11a7bd499c80562ac6f8a82" - } - Frame { - msec: 672 - hash: "4310a4c3037d845f088f21ad608f366a" - } - Frame { - msec: 688 - hash: "3d518cd0348d6202243364af1dd6ce89" - } - Frame { - msec: 704 - hash: "41987e6b4248d7944c0dbc6eb3862023" - } - Frame { - msec: 720 - hash: "3e81338d38723d56f2d6c428271f81c1" - } - Frame { - msec: 736 - hash: "902683d72f789399e9d99d1cea1bf177" - } - Frame { - msec: 752 - hash: "efc119983701908a904deb24108c59cb" - } - Frame { - msec: 768 - hash: "3a77785cfd7755f567619d8e04583f6a" - } - Frame { - msec: 784 - hash: "fd85d1dd931033973283a408b5e328a8" - } - Frame { - msec: 800 - hash: "5d3e85acabe5e5ff802eb7731676274f" - } - Frame { - msec: 816 - hash: "ae12f1f37a746e16b06e6b869c89fac1" - } - Frame { - msec: 832 - hash: "a15f19f374bbfb6a922b69d080a91eaa" - } - Frame { - msec: 848 - hash: "84ef6dda8318b623832f58c46d762e89" - } - Frame { - msec: 864 - hash: "b699285764f5e8866a9996f4a0dccc69" - } - Frame { - msec: 880 - hash: "ddd8a006ef048c8d929144aa9fcd7c5a" - } - Frame { - msec: 896 - hash: "177666cb3bb784c83196886b2c6cf6b6" - } - Frame { - msec: 912 - hash: "9cd29b4b023a8b92573575fb3c3dda83" - } - Frame { - msec: 928 - hash: "adc670a9aa0326744cb23e4f5912e6c7" - } - Frame { - msec: 944 - hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" - } - Frame { - msec: 960 - image: "animated-smooth.0.png" - } - Frame { - msec: 976 - hash: "64b21b89576fdd0083f60a26f57b9c11" - } - Frame { - msec: 992 - hash: "0d407ee07692d0e5a480a60952807b3c" - } - Frame { - msec: 1008 - hash: "845170815a87565dc4229792032b3357" - } - Frame { - msec: 1024 - hash: "8b8120cfc14de03e048632fdea61be21" - } - Frame { - msec: 1040 - hash: "b0070117f1c24a4da87434725d4bb989" - } - Frame { - msec: 1056 - hash: "0239d697642ca1d1b1d1daa3ea048e1e" - } - Frame { - msec: 1072 - hash: "3df54504f8891306fa8f1e9e2075a5e2" - } - Frame { - msec: 1088 - hash: "853429387cc639496c7338244de7e1b7" - } - Frame { - msec: 1104 - hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" - } - Frame { - msec: 1120 - hash: "b375e723b2396b13b8f55cfc0c81c3c3" - } - Frame { - msec: 1136 - hash: "53f05993ba3b426949badd2e4cd66d84" - } - Frame { - msec: 1152 - hash: "23291a0239c69ea07db959e709b1ff5f" - } - Frame { - msec: 1168 - hash: "2192094410e2d7c8d9d4aa5f8deacff5" - } - Frame { - msec: 1184 - hash: "d6615fc345831a3cc5b9a7196284b632" - } - Frame { - msec: 1200 - hash: "92176cce4836dcae4dfca94e49b041a8" - } - Frame { - msec: 1216 - hash: "2a1fcfb753ca237b518da26e67c928e5" - } - Frame { - msec: 1232 - hash: "42be5d26afb9f066dd27cc9fbaf6ce20" - } - Frame { - msec: 1248 - hash: "bd045f4532d78bba0ef1b64118fd9f24" - } - Frame { - msec: 1264 - hash: "7f9999a9c87af43b9703323efab31770" - } - Frame { - msec: 1280 - hash: "0640fcb0b24d3ba4ab8695f78271a438" - } - Frame { - msec: 1296 - hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" - } - Frame { - msec: 1312 - hash: "fce2648975106bc5c0ca9a4530f7f748" - } - Frame { - msec: 1328 - hash: "39cc17ee2e889f17dd07179fda99e431" - } - Frame { - msec: 1344 - hash: "39c46d85d20f7ef3eca1d09c7eb6a068" - } - Frame { - msec: 1360 - hash: "d65d50fbb920e683b041a1c72238225b" - } - Frame { - msec: 1376 - hash: "49a1df977b0494c7c72ca0b65c394e13" - } - Frame { - msec: 1392 - hash: "05cbce0eaa80b4610a9067af8c40f819" - } - Frame { - msec: 1408 - hash: "00ab7798bcd77a99886dff0414f35382" - } - Frame { - msec: 1424 - hash: "5cc90d798786c270ddd2616512f4459f" - } - Frame { - msec: 1440 - hash: "e5df07ea21e8e415c3ec82560f2d0f34" - } - Frame { - msec: 1456 - hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" - } - Frame { - msec: 1472 - hash: "c61d2aa7f934fb5a9f9f7883e063b51c" - } - Frame { - msec: 1488 - hash: "29ddde3300d0520a4c01b5536d8b9e7a" - } - Frame { - msec: 1504 - hash: "2fede2f5d871654f3f8a6e9d890adeac" - } - Frame { - msec: 1520 - hash: "deed4c06c9b713834490832b88e7acaf" - } - Frame { - msec: 1536 - hash: "c2edb016cfdd47c192d1c48281ee76ed" - } - Frame { - msec: 1552 - hash: "a261be47ae89e6b53e6bc1c1197154ae" - } - Frame { - msec: 1568 - hash: "e860e97ebd73b7d1d5d5d90458b34bfe" - } - Frame { - msec: 1584 - hash: "a087b532ecb2f28e4ee60819228c2522" - } - Frame { - msec: 1600 - hash: "64df51b4c1bf744b2aae1c6d908c2cc3" - } - Frame { - msec: 1616 - hash: "4520003d4b221a3de6834b2729b3026d" - } - Frame { - msec: 1632 - hash: "d1110817827c318ceb0c112e8c2bfc1d" - } - Frame { - msec: 1648 - hash: "83d49474db15d5779923972ff5f55917" - } - Frame { - msec: 1664 - hash: "3bae40654ec551d69e7c8c72f631c7a5" - } - Frame { - msec: 1680 - hash: "774740a393f3e9b8f12b81cce8da8280" - } - Frame { - msec: 1696 - hash: "d8e398a1ce9ca45c19951e93bd5c932a" - } - Frame { - msec: 1712 - hash: "2b7eb8a9fe26b032be8b4b9c00995912" - } - Frame { - msec: 1728 - hash: "47e920e3884ccf2f0f49e78070af6929" - } - Frame { - msec: 1744 - hash: "fc913807eb1069d611495fbd5d43ee3d" - } - Frame { - msec: 1760 - hash: "5d9ee853f083d514fbe51d6953d8e000" - } - Frame { - msec: 1776 - hash: "5736362b42bc2d801e02edabb983663a" - } - Frame { - msec: 1792 - hash: "e3a2b5c7247acfc1b30825233fbfd56b" - } - Frame { - msec: 1808 - hash: "48952ffa5e300778eafa768b9fe7df0c" - } - Frame { - msec: 1824 - hash: "fe04cae65aeec18697eca4f3f83a40e9" - } - Frame { - msec: 1840 - hash: "382d454f2366c1fb4ca472faa3bfa5e9" - } - Frame { - msec: 1856 - hash: "89022a8e2feb3dcb845de69aafc333ad" - } - Frame { - msec: 1872 - hash: "25506557c853a0020e98cf3992956989" - } - Frame { - msec: 1888 - hash: "9a64706c52c9e962816953e32950b8ba" - } - Frame { - msec: 1904 - hash: "3cbfded47413172ada64095e65c55e8a" - } - Frame { - msec: 1920 - image: "animated-smooth.1.png" - } - Frame { - msec: 1936 - hash: "c5e399e29b988148913e62ee208b3326" - } - Frame { - msec: 1952 - hash: "3991bc7760b7981d80665e3a7654c9f4" - } - Frame { - msec: 1968 - hash: "05312f9529c94d3331ace7d73c544284" - } - Frame { - msec: 1984 - hash: "a94de4e90a8f8eb4ec33fe902afd226c" - } - Frame { - msec: 2000 - hash: "723f87da7e5b002a2e9b0bcbc81f9458" - } - Frame { - msec: 2016 - hash: "6b8ded0d9386a3fff0601a100c513080" - } - Frame { - msec: 2032 - hash: "f976cd5046ef5391536859e63db905bd" - } - Frame { - msec: 2048 - hash: "a94de4e90a8f8eb4ec33fe902afd226c" - } - Frame { - msec: 2064 - hash: "05312f9529c94d3331ace7d73c544284" - } - Frame { - msec: 2080 - hash: "b980703c1d0018937e83a8ba8862469e" - } - Frame { - msec: 2096 - hash: "c5e399e29b988148913e62ee208b3326" - } - Frame { - msec: 2112 - hash: "3b7b83e97d17440b42e6ef4b962076d8" - } - Frame { - msec: 2128 - hash: "3cbfded47413172ada64095e65c55e8a" - } - Frame { - msec: 2144 - hash: "9a64706c52c9e962816953e32950b8ba" - } - Frame { - msec: 2160 - hash: "25506557c853a0020e98cf3992956989" - } - Frame { - msec: 2176 - hash: "89022a8e2feb3dcb845de69aafc333ad" - } - Frame { - msec: 2192 - hash: "382d454f2366c1fb4ca472faa3bfa5e9" - } - Frame { - msec: 2208 - hash: "fe04cae65aeec18697eca4f3f83a40e9" - } - Frame { - msec: 2224 - hash: "48952ffa5e300778eafa768b9fe7df0c" - } - Frame { - msec: 2240 - hash: "e3a2b5c7247acfc1b30825233fbfd56b" - } - Frame { - msec: 2256 - hash: "5736362b42bc2d801e02edabb983663a" - } - Frame { - msec: 2272 - hash: "5d9ee853f083d514fbe51d6953d8e000" - } - Frame { - msec: 2288 - hash: "fe899138116774df4c4441687e3019c5" - } - Frame { - msec: 2304 - hash: "47e920e3884ccf2f0f49e78070af6929" - } - Frame { - msec: 2320 - hash: "2b7eb8a9fe26b032be8b4b9c00995912" - } - Frame { - msec: 2336 - hash: "64cd225202ed6c91b02c368a9160a656" - } - Frame { - msec: 2352 - hash: "774740a393f3e9b8f12b81cce8da8280" - } - Frame { - msec: 2368 - hash: "3bae40654ec551d69e7c8c72f631c7a5" - } - Frame { - msec: 2384 - hash: "83d49474db15d5779923972ff5f55917" - } - Frame { - msec: 2400 - hash: "d1110817827c318ceb0c112e8c2bfc1d" - } - Frame { - msec: 2416 - hash: "4520003d4b221a3de6834b2729b3026d" - } - Frame { - msec: 2432 - hash: "64df51b4c1bf744b2aae1c6d908c2cc3" - } - Frame { - msec: 2448 - hash: "a087b532ecb2f28e4ee60819228c2522" - } - Frame { - msec: 2464 - hash: "e860e97ebd73b7d1d5d5d90458b34bfe" - } - Frame { - msec: 2480 - hash: "a261be47ae89e6b53e6bc1c1197154ae" - } - Frame { - msec: 2496 - hash: "c2edb016cfdd47c192d1c48281ee76ed" - } - Frame { - msec: 2512 - hash: "deed4c06c9b713834490832b88e7acaf" - } - Frame { - msec: 2528 - hash: "2fede2f5d871654f3f8a6e9d890adeac" - } - Frame { - msec: 2544 - hash: "29ddde3300d0520a4c01b5536d8b9e7a" - } - Frame { - msec: 2560 - hash: "c61d2aa7f934fb5a9f9f7883e063b51c" - } - Frame { - msec: 2576 - hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" - } - Frame { - msec: 2592 - hash: "e5df07ea21e8e415c3ec82560f2d0f34" - } - Frame { - msec: 2608 - hash: "5cc90d798786c270ddd2616512f4459f" - } - Frame { - msec: 2624 - hash: "00ab7798bcd77a99886dff0414f35382" - } - Frame { - msec: 2640 - hash: "05cbce0eaa80b4610a9067af8c40f819" - } - Frame { - msec: 2656 - hash: "a676f45d946aeb9fa577c0e862735b01" - } - Frame { - msec: 2672 - hash: "d65d50fbb920e683b041a1c72238225b" - } - Frame { - msec: 2688 - hash: "39c46d85d20f7ef3eca1d09c7eb6a068" - } - Frame { - msec: 2704 - hash: "39cc17ee2e889f17dd07179fda99e431" - } - Frame { - msec: 2720 - hash: "fce2648975106bc5c0ca9a4530f7f748" - } - Frame { - msec: 2736 - hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" - } - Frame { - msec: 2752 - hash: "0640fcb0b24d3ba4ab8695f78271a438" - } - Frame { - msec: 2768 - hash: "2084ccc60ddd493399c128717816d33b" - } - Frame { - msec: 2784 - hash: "bd045f4532d78bba0ef1b64118fd9f24" - } - Frame { - msec: 2800 - hash: "42be5d26afb9f066dd27cc9fbaf6ce20" - } - Frame { - msec: 2816 - hash: "2a1fcfb753ca237b518da26e67c928e5" - } - Frame { - msec: 2832 - hash: "92176cce4836dcae4dfca94e49b041a8" - } - Frame { - msec: 2848 - hash: "d6615fc345831a3cc5b9a7196284b632" - } - Frame { - msec: 2864 - hash: "85ef33fcb3f91e4fc20391bf94455984" - } - Frame { - msec: 2880 - image: "animated-smooth.2.png" - } - Frame { - msec: 2896 - hash: "53f05993ba3b426949badd2e4cd66d84" - } - Frame { - msec: 2912 - hash: "b375e723b2396b13b8f55cfc0c81c3c3" - } - Frame { - msec: 2928 - hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" - } - Frame { - msec: 2944 - hash: "853429387cc639496c7338244de7e1b7" - } - Frame { - msec: 2960 - hash: "3df54504f8891306fa8f1e9e2075a5e2" - } - Frame { - msec: 2976 - hash: "0239d697642ca1d1b1d1daa3ea048e1e" - } - Frame { - msec: 2992 - hash: "b0070117f1c24a4da87434725d4bb989" - } - Frame { - msec: 3008 - hash: "8b8120cfc14de03e048632fdea61be21" - } - Frame { - msec: 3024 - hash: "845170815a87565dc4229792032b3357" - } - Frame { - msec: 3040 - hash: "0d407ee07692d0e5a480a60952807b3c" - } - Frame { - msec: 3056 - hash: "64b21b89576fdd0083f60a26f57b9c11" - } - Frame { - msec: 3072 - hash: "d7e96278583f83ab636ed68fa130e4d2" - } - Frame { - msec: 3088 - hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" - } - Frame { - msec: 3104 - hash: "adc670a9aa0326744cb23e4f5912e6c7" - } - Frame { - msec: 3120 - hash: "9cd29b4b023a8b92573575fb3c3dda83" - } - Frame { - msec: 3136 - hash: "177666cb3bb784c83196886b2c6cf6b6" - } - Frame { - msec: 3152 - hash: "ddd8a006ef048c8d929144aa9fcd7c5a" - } - Frame { - msec: 3168 - hash: "b699285764f5e8866a9996f4a0dccc69" - } - Frame { - msec: 3184 - hash: "84ef6dda8318b623832f58c46d762e89" - } - Frame { - msec: 3200 - hash: "a15f19f374bbfb6a922b69d080a91eaa" - } - Frame { - msec: 3216 - hash: "ae12f1f37a746e16b06e6b869c89fac1" - } - Frame { - msec: 3232 - hash: "5d3e85acabe5e5ff802eb7731676274f" - } - Frame { - msec: 3248 - hash: "fd85d1dd931033973283a408b5e328a8" - } - Frame { - msec: 3264 - hash: "3a77785cfd7755f567619d8e04583f6a" - } - Frame { - msec: 3280 - hash: "efc119983701908a904deb24108c59cb" - } - Frame { - msec: 3296 - hash: "902683d72f789399e9d99d1cea1bf177" - } - Frame { - msec: 3312 - hash: "3e81338d38723d56f2d6c428271f81c1" - } - Frame { - msec: 3328 - hash: "41987e6b4248d7944c0dbc6eb3862023" - } - Frame { - msec: 3344 - hash: "3d518cd0348d6202243364af1dd6ce89" - } - Frame { - msec: 3360 - hash: "4310a4c3037d845f088f21ad608f366a" - } - Frame { - msec: 3376 - hash: "0e0c40f8e11a7bd499c80562ac6f8a82" - } - Frame { - msec: 3392 - hash: "f4d0d3bca25e67908b38910f47b4757e" - } - Frame { - msec: 3408 - hash: "f602e3eda1889d1a7e49560f0dfb5d4c" - } - Frame { - msec: 3424 - hash: "e1474c2cdd8768ca1ef45bf3bc5234ca" - } - Frame { - msec: 3440 - hash: "c8312ede0998636a6bd6451d13636577" - } - Frame { - msec: 3456 - hash: "16c16c77c65b36d1e0954d5ead2642be" - } - Frame { - msec: 3472 - hash: "31d65134f340d82dd40f2401bda3fb7e" - } - Frame { - msec: 3488 - hash: "061406edcbd2d4930ab89c3fcab63c7f" - } - Frame { - msec: 3504 - hash: "0af81ee0d76ff8335a0e347dc086ca37" - } - Frame { - msec: 3520 - hash: "0f347763f25350ebb62dda1536372b45" - } - Frame { - msec: 3536 - hash: "f3a7e74a1839f9366f9eeec4d2b80d1e" - } - Frame { - msec: 3552 - hash: "64ecb03aa538e74d0b99c6dec7751401" - } - Frame { - msec: 3568 - hash: "170a1d5fe3422cf5223a78015a6a45fd" - } - Frame { - msec: 3584 - hash: "10307beea6d99ab0ff5863f8e35555ed" - } - Frame { - msec: 3600 - hash: "456be9c208d690c479ba12bf6325dde0" - } - Frame { - msec: 3616 - hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9" - } - Frame { - msec: 3632 - hash: "277ef98ea859fb7685fe6cd44a538a7d" - } - Frame { - msec: 3648 - hash: "74c837b29f7f05b615123f0e608b523f" - } - Frame { - msec: 3664 - hash: "d671a3b971468e1d8aa30ab655e020a9" - } - Frame { - msec: 3680 - hash: "df624d70cae1bcefda8d69c0ff055d83" - } - Frame { - msec: 3696 - hash: "3f9a09ae19be34348bb2552915360cf7" - } - Frame { - msec: 3712 - hash: "83c029e328e80af83158c37089cf0ece" - } - Frame { - msec: 3728 - hash: "323af110731b7af0c30f8862ff59b833" - } - Frame { - msec: 3744 - hash: "63d3c47f7dec1236440a05e0a8380900" - } - Frame { - msec: 3760 - hash: "48e62dd171f5da82b5aa26c765e4042c" - } - Frame { - msec: 3776 - hash: "5a8932d13d624932a65694fd19ec05cd" - } - Frame { - msec: 3792 - hash: "8419b295f67cae133760da79dfc26505" - } - Frame { - msec: 3808 - hash: "a716c8d2c94433dee719f92f0822c8ec" - } - Frame { - msec: 3824 - hash: "7b66e21652a7d0982226e281a48411a9" - } - Frame { - msec: 3840 - image: "animated-smooth.3.png" - } - Frame { - msec: 3856 - hash: "59470d71fa4426d0283e86371f2bfc2a" - } - Frame { - msec: 3872 - hash: "d56ba74d38c1889a278929d1c1b7f17a" - } - Frame { - msec: 3888 - hash: "de471829f8ad3b43bf1b4df9d1d65a4d" - } - Frame { - msec: 3904 - hash: "cd2180be80101c2aa4350b51b7a6f502" - } - Frame { - msec: 3920 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 3936 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 3952 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 3968 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 3984 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 4000 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 4016 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 4032 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 4048 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 4064 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 4080 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 4096 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 4112 - hash: "aec13bcab337e55832b0a02fb5c6b526" - } - Frame { - msec: 4128 - hash: "cd2180be80101c2aa4350b51b7a6f502" - } - Frame { - msec: 4144 - hash: "de471829f8ad3b43bf1b4df9d1d65a4d" - } - Frame { - msec: 4160 - hash: "ed9f2ca797894612600bc4b7fbaecb84" - } - Frame { - msec: 4176 - hash: "59470d71fa4426d0283e86371f2bfc2a" - } - Frame { - msec: 4192 - hash: "9a2f92efb51bcc6293d6a8e82d5314ea" - } - Frame { - msec: 4208 - hash: "7b66e21652a7d0982226e281a48411a9" - } - Frame { - msec: 4224 - hash: "a716c8d2c94433dee719f92f0822c8ec" - } - Frame { - msec: 4240 - hash: "f22a47b846cfee96ebdf39bbce2e6d51" - } - Frame { - msec: 4256 - hash: "5a8932d13d624932a65694fd19ec05cd" - } - Frame { - msec: 4272 - hash: "48e62dd171f5da82b5aa26c765e4042c" - } - Frame { - msec: 4288 - hash: "63d3c47f7dec1236440a05e0a8380900" - } - Frame { - msec: 4304 - hash: "323af110731b7af0c30f8862ff59b833" - } - Frame { - msec: 4320 - hash: "83c029e328e80af83158c37089cf0ece" - } - Frame { - msec: 4336 - hash: "3f9a09ae19be34348bb2552915360cf7" - } - Frame { - msec: 4352 - hash: "df624d70cae1bcefda8d69c0ff055d83" - } - Frame { - msec: 4368 - hash: "d671a3b971468e1d8aa30ab655e020a9" - } - Frame { - msec: 4384 - hash: "74c837b29f7f05b615123f0e608b523f" - } - Frame { - msec: 4400 - hash: "277ef98ea859fb7685fe6cd44a538a7d" - } - Frame { - msec: 4416 - hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9" - } - Frame { - msec: 4432 - hash: "456be9c208d690c479ba12bf6325dde0" - } - Frame { - msec: 4448 - hash: "10307beea6d99ab0ff5863f8e35555ed" - } - Frame { - msec: 4464 - hash: "170a1d5fe3422cf5223a78015a6a45fd" - } - Frame { - msec: 4480 - hash: "64ecb03aa538e74d0b99c6dec7751401" - } - Frame { - msec: 4496 - hash: "f3a7e74a1839f9366f9eeec4d2b80d1e" - } - Frame { - msec: 4512 - hash: "37c3f25e5cfdb48d7e3ab0cf8ffb9154" - } - Frame { - msec: 4528 - hash: "0af81ee0d76ff8335a0e347dc086ca37" - } - Frame { - msec: 4544 - hash: "061406edcbd2d4930ab89c3fcab63c7f" - } - Frame { - msec: 4560 - hash: "31d65134f340d82dd40f2401bda3fb7e" - } - Frame { - msec: 4576 - hash: "16c16c77c65b36d1e0954d5ead2642be" - } - Frame { - msec: 4592 - hash: "61c16009b65a55bffb63e27727e1615e" - } - Frame { - msec: 4608 - hash: "e1474c2cdd8768ca1ef45bf3bc5234ca" - } - Frame { - msec: 4624 - hash: "89c159ef00d273ecfe61332e1bf7244d" - } - Frame { - msec: 4640 - hash: "f4d0d3bca25e67908b38910f47b4757e" - } - Frame { - msec: 4656 - hash: "0e0c40f8e11a7bd499c80562ac6f8a82" - } - Frame { - msec: 4672 - hash: "4310a4c3037d845f088f21ad608f366a" - } - Frame { - msec: 4688 - hash: "3d518cd0348d6202243364af1dd6ce89" - } - Frame { - msec: 4704 - hash: "41987e6b4248d7944c0dbc6eb3862023" - } - Frame { - msec: 4720 - hash: "3e81338d38723d56f2d6c428271f81c1" - } - Frame { - msec: 4736 - hash: "902683d72f789399e9d99d1cea1bf177" - } - Frame { - msec: 4752 - hash: "efc119983701908a904deb24108c59cb" - } - Frame { - msec: 4768 - hash: "3a77785cfd7755f567619d8e04583f6a" - } - Frame { - msec: 4784 - hash: "fd85d1dd931033973283a408b5e328a8" - } - Frame { - msec: 4800 - image: "animated-smooth.4.png" - } - Frame { - msec: 4816 - hash: "ae12f1f37a746e16b06e6b869c89fac1" - } - Frame { - msec: 4832 - hash: "a15f19f374bbfb6a922b69d080a91eaa" - } - Frame { - msec: 4848 - hash: "84ef6dda8318b623832f58c46d762e89" - } - Frame { - msec: 4864 - hash: "b699285764f5e8866a9996f4a0dccc69" - } - Frame { - msec: 4880 - hash: "ddd8a006ef048c8d929144aa9fcd7c5a" - } - Frame { - msec: 4896 - hash: "177666cb3bb784c83196886b2c6cf6b6" - } - Frame { - msec: 4912 - hash: "9cd29b4b023a8b92573575fb3c3dda83" - } - Frame { - msec: 4928 - hash: "adc670a9aa0326744cb23e4f5912e6c7" - } - Frame { - msec: 4944 - hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" - } - Frame { - msec: 4960 - hash: "d7e96278583f83ab636ed68fa130e4d2" - } - Frame { - msec: 4976 - hash: "64b21b89576fdd0083f60a26f57b9c11" - } - Frame { - msec: 4992 - hash: "0d407ee07692d0e5a480a60952807b3c" - } - Frame { - msec: 5008 - hash: "845170815a87565dc4229792032b3357" - } - Frame { - msec: 5024 - hash: "8b8120cfc14de03e048632fdea61be21" - } - Frame { - msec: 5040 - hash: "b0070117f1c24a4da87434725d4bb989" - } - Frame { - msec: 5056 - hash: "0239d697642ca1d1b1d1daa3ea048e1e" - } - Frame { - msec: 5072 - hash: "3df54504f8891306fa8f1e9e2075a5e2" - } - Frame { - msec: 5088 - hash: "853429387cc639496c7338244de7e1b7" - } - Frame { - msec: 5104 - hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" - } - Frame { - msec: 5120 - hash: "b375e723b2396b13b8f55cfc0c81c3c3" - } - Frame { - msec: 5136 - hash: "53f05993ba3b426949badd2e4cd66d84" - } - Frame { - msec: 5152 - hash: "23291a0239c69ea07db959e709b1ff5f" - } - Frame { - msec: 5168 - hash: "2192094410e2d7c8d9d4aa5f8deacff5" - } - Frame { - msec: 5184 - hash: "d6615fc345831a3cc5b9a7196284b632" - } - Frame { - msec: 5200 - hash: "92176cce4836dcae4dfca94e49b041a8" - } - Frame { - msec: 5216 - hash: "2a1fcfb753ca237b518da26e67c928e5" - } - Frame { - msec: 5232 - hash: "42be5d26afb9f066dd27cc9fbaf6ce20" - } - Frame { - msec: 5248 - hash: "bd045f4532d78bba0ef1b64118fd9f24" - } - Frame { - msec: 5264 - hash: "7f9999a9c87af43b9703323efab31770" - } - Frame { - msec: 5280 - hash: "0640fcb0b24d3ba4ab8695f78271a438" - } - Frame { - msec: 5296 - hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" - } - Frame { - msec: 5312 - hash: "fce2648975106bc5c0ca9a4530f7f748" - } - Frame { - msec: 5328 - hash: "39cc17ee2e889f17dd07179fda99e431" - } - Frame { - msec: 5344 - hash: "39c46d85d20f7ef3eca1d09c7eb6a068" - } - Frame { - msec: 5360 - hash: "d65d50fbb920e683b041a1c72238225b" - } - Frame { - msec: 5376 - hash: "49a1df977b0494c7c72ca0b65c394e13" - } - Frame { - msec: 5392 - hash: "05cbce0eaa80b4610a9067af8c40f819" - } - Frame { - msec: 5408 - hash: "00ab7798bcd77a99886dff0414f35382" - } - Frame { - msec: 5424 - hash: "5cc90d798786c270ddd2616512f4459f" - } - Frame { - msec: 5440 - hash: "e5df07ea21e8e415c3ec82560f2d0f34" - } - Frame { - msec: 5456 - hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" - } - Frame { - msec: 5472 - hash: "c61d2aa7f934fb5a9f9f7883e063b51c" - } - Frame { - msec: 5488 - hash: "29ddde3300d0520a4c01b5536d8b9e7a" - } - Frame { - msec: 5504 - hash: "2fede2f5d871654f3f8a6e9d890adeac" - } - Frame { - msec: 5520 - hash: "deed4c06c9b713834490832b88e7acaf" - } - Frame { - msec: 5536 - hash: "c2edb016cfdd47c192d1c48281ee76ed" - } - Frame { - msec: 5552 - hash: "a261be47ae89e6b53e6bc1c1197154ae" - } - Frame { - msec: 5568 - hash: "e860e97ebd73b7d1d5d5d90458b34bfe" - } - Frame { - msec: 5584 - hash: "a087b532ecb2f28e4ee60819228c2522" - } - Frame { - msec: 5600 - hash: "64df51b4c1bf744b2aae1c6d908c2cc3" - } - Frame { - msec: 5616 - hash: "4520003d4b221a3de6834b2729b3026d" - } - Frame { - msec: 5632 - hash: "d1110817827c318ceb0c112e8c2bfc1d" - } - Frame { - msec: 5648 - hash: "83d49474db15d5779923972ff5f55917" - } - Frame { - msec: 5664 - hash: "3bae40654ec551d69e7c8c72f631c7a5" - } - Frame { - msec: 5680 - hash: "774740a393f3e9b8f12b81cce8da8280" - } - Frame { - msec: 5696 - hash: "d8e398a1ce9ca45c19951e93bd5c932a" - } - Frame { - msec: 5712 - hash: "2b7eb8a9fe26b032be8b4b9c00995912" - } - Frame { - msec: 5728 - hash: "47e920e3884ccf2f0f49e78070af6929" - } - Frame { - msec: 5744 - hash: "fc913807eb1069d611495fbd5d43ee3d" - } - Frame { - msec: 5760 - image: "animated-smooth.5.png" - } - Frame { - msec: 5776 - hash: "5736362b42bc2d801e02edabb983663a" - } - Frame { - msec: 5792 - hash: "e3a2b5c7247acfc1b30825233fbfd56b" - } - Frame { - msec: 5808 - hash: "48952ffa5e300778eafa768b9fe7df0c" - } - Frame { - msec: 5824 - hash: "fe04cae65aeec18697eca4f3f83a40e9" - } - Frame { - msec: 5840 - hash: "382d454f2366c1fb4ca472faa3bfa5e9" - } - Frame { - msec: 5856 - hash: "89022a8e2feb3dcb845de69aafc333ad" - } - Frame { - msec: 5872 - hash: "25506557c853a0020e98cf3992956989" - } - Frame { - msec: 5888 - hash: "9a64706c52c9e962816953e32950b8ba" - } - Frame { - msec: 5904 - hash: "3cbfded47413172ada64095e65c55e8a" - } - Frame { - msec: 5920 - hash: "ec7e1190dd4fe122545e6ce6c8740500" - } - Frame { - msec: 5936 - hash: "c5e399e29b988148913e62ee208b3326" - } - Frame { - msec: 5952 - hash: "3991bc7760b7981d80665e3a7654c9f4" - } - Frame { - msec: 5968 - hash: "05312f9529c94d3331ace7d73c544284" - } - Frame { - msec: 5984 - hash: "a94de4e90a8f8eb4ec33fe902afd226c" - } - Frame { - msec: 6000 - hash: "723f87da7e5b002a2e9b0bcbc81f9458" - } - Frame { - msec: 6016 - hash: "6b8ded0d9386a3fff0601a100c513080" - } - Frame { - msec: 6032 - hash: "f976cd5046ef5391536859e63db905bd" - } - Frame { - msec: 6048 - hash: "a94de4e90a8f8eb4ec33fe902afd226c" - } - Frame { - msec: 6064 - hash: "05312f9529c94d3331ace7d73c544284" - } - Frame { - msec: 6080 - hash: "b980703c1d0018937e83a8ba8862469e" - } - Frame { - msec: 6096 - hash: "c5e399e29b988148913e62ee208b3326" - } - Frame { - msec: 6112 - hash: "3b7b83e97d17440b42e6ef4b962076d8" - } - Frame { - msec: 6128 - hash: "3cbfded47413172ada64095e65c55e8a" - } - Frame { - msec: 6144 - hash: "9a64706c52c9e962816953e32950b8ba" - } - Frame { - msec: 6160 - hash: "25506557c853a0020e98cf3992956989" - } - Frame { - msec: 6176 - hash: "89022a8e2feb3dcb845de69aafc333ad" - } - Frame { - msec: 6192 - hash: "382d454f2366c1fb4ca472faa3bfa5e9" - } - Frame { - msec: 6208 - hash: "fe04cae65aeec18697eca4f3f83a40e9" - } - Frame { - msec: 6224 - hash: "48952ffa5e300778eafa768b9fe7df0c" - } - Frame { - msec: 6240 - hash: "e3a2b5c7247acfc1b30825233fbfd56b" - } - Frame { - msec: 6256 - hash: "5736362b42bc2d801e02edabb983663a" - } - Frame { - msec: 6272 - hash: "5d9ee853f083d514fbe51d6953d8e000" - } - Frame { - msec: 6288 - hash: "fe899138116774df4c4441687e3019c5" - } - Frame { - msec: 6304 - hash: "47e920e3884ccf2f0f49e78070af6929" - } - Frame { - msec: 6320 - hash: "2b7eb8a9fe26b032be8b4b9c00995912" - } - Frame { - msec: 6336 - hash: "64cd225202ed6c91b02c368a9160a656" - } - Frame { - msec: 6352 - hash: "774740a393f3e9b8f12b81cce8da8280" - } - Frame { - msec: 6368 - hash: "3bae40654ec551d69e7c8c72f631c7a5" - } - Frame { - msec: 6384 - hash: "83d49474db15d5779923972ff5f55917" - } - Frame { - msec: 6400 - hash: "d1110817827c318ceb0c112e8c2bfc1d" - } - Frame { - msec: 6416 - hash: "4520003d4b221a3de6834b2729b3026d" - } - Frame { - msec: 6432 - hash: "64df51b4c1bf744b2aae1c6d908c2cc3" - } - Frame { - msec: 6448 - hash: "a087b532ecb2f28e4ee60819228c2522" - } - Frame { - msec: 6464 - hash: "e860e97ebd73b7d1d5d5d90458b34bfe" - } - Frame { - msec: 6480 - hash: "a261be47ae89e6b53e6bc1c1197154ae" - } - Frame { - msec: 6496 - hash: "c2edb016cfdd47c192d1c48281ee76ed" - } - Frame { - msec: 6512 - hash: "deed4c06c9b713834490832b88e7acaf" - } - Frame { - msec: 6528 - hash: "2fede2f5d871654f3f8a6e9d890adeac" - } - Frame { - msec: 6544 - hash: "29ddde3300d0520a4c01b5536d8b9e7a" - } - Frame { - msec: 6560 - hash: "c61d2aa7f934fb5a9f9f7883e063b51c" - } - Frame { - msec: 6576 - hash: "ddf1f5c0b97fe4821719ec5bf4bd091b" - } - Frame { - msec: 6592 - hash: "e5df07ea21e8e415c3ec82560f2d0f34" - } - Frame { - msec: 6608 - hash: "5cc90d798786c270ddd2616512f4459f" - } - Frame { - msec: 6624 - hash: "00ab7798bcd77a99886dff0414f35382" - } - Frame { - msec: 6640 - hash: "05cbce0eaa80b4610a9067af8c40f819" - } - Frame { - msec: 6656 - hash: "a676f45d946aeb9fa577c0e862735b01" - } - Frame { - msec: 6672 - hash: "d65d50fbb920e683b041a1c72238225b" - } - Frame { - msec: 6688 - hash: "39c46d85d20f7ef3eca1d09c7eb6a068" - } - Frame { - msec: 6704 - hash: "39cc17ee2e889f17dd07179fda99e431" - } - Frame { - msec: 6720 - image: "animated-smooth.6.png" - } - Frame { - msec: 6736 - hash: "7c9a98e2101c33e17c1bd7e6c2d921ff" - } - Frame { - msec: 6752 - hash: "0640fcb0b24d3ba4ab8695f78271a438" - } - Frame { - msec: 6768 - hash: "2084ccc60ddd493399c128717816d33b" - } - Frame { - msec: 6784 - hash: "bd045f4532d78bba0ef1b64118fd9f24" - } - Frame { - msec: 6800 - hash: "42be5d26afb9f066dd27cc9fbaf6ce20" - } - Frame { - msec: 6816 - hash: "2a1fcfb753ca237b518da26e67c928e5" - } - Frame { - msec: 6832 - hash: "92176cce4836dcae4dfca94e49b041a8" - } - Frame { - msec: 6848 - hash: "d6615fc345831a3cc5b9a7196284b632" - } - Frame { - msec: 6864 - hash: "85ef33fcb3f91e4fc20391bf94455984" - } - Frame { - msec: 6880 - hash: "23291a0239c69ea07db959e709b1ff5f" - } - Frame { - msec: 6896 - hash: "53f05993ba3b426949badd2e4cd66d84" - } - Frame { - msec: 6912 - hash: "b375e723b2396b13b8f55cfc0c81c3c3" - } - Frame { - msec: 6928 - hash: "bd70500fbdfe5aa2fe4362a97a1dee2d" - } - Frame { - msec: 6944 - hash: "853429387cc639496c7338244de7e1b7" - } - Frame { - msec: 6960 - hash: "3df54504f8891306fa8f1e9e2075a5e2" - } - Frame { - msec: 6976 - hash: "0239d697642ca1d1b1d1daa3ea048e1e" - } - Frame { - msec: 6992 - hash: "b0070117f1c24a4da87434725d4bb989" - } - Frame { - msec: 7008 - hash: "8b8120cfc14de03e048632fdea61be21" - } - Frame { - msec: 7024 - hash: "845170815a87565dc4229792032b3357" - } - Frame { - msec: 7040 - hash: "0d407ee07692d0e5a480a60952807b3c" - } - Frame { - msec: 7056 - hash: "64b21b89576fdd0083f60a26f57b9c11" - } - Frame { - msec: 7072 - hash: "d7e96278583f83ab636ed68fa130e4d2" - } - Frame { - msec: 7088 - hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6" - } - Key { - type: 6 - key: 16777249 - modifiers: 67108864 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 7104 - hash: "adc670a9aa0326744cb23e4f5912e6c7" - } - Frame { - msec: 7120 - hash: "9cd29b4b023a8b92573575fb3c3dda83" - } - Frame { - msec: 7136 - hash: "177666cb3bb784c83196886b2c6cf6b6" - } - Frame { - msec: 7152 - hash: "ddd8a006ef048c8d929144aa9fcd7c5a" - } - Frame { - msec: 7168 - hash: "b699285764f5e8866a9996f4a0dccc69" - } - Frame { - msec: 7184 - hash: "84ef6dda8318b623832f58c46d762e89" - } - Frame { - msec: 7200 - hash: "a15f19f374bbfb6a922b69d080a91eaa" - } - Frame { - msec: 7216 - hash: "ae12f1f37a746e16b06e6b869c89fac1" - } - Frame { - msec: 7232 - hash: "5d3e85acabe5e5ff802eb7731676274f" - } -} diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.1.png b/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.1.png Binary files differdeleted file mode 100644 index 80cbd26..0000000 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.1.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.2.png b/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.2.png Binary files differdeleted file mode 100644 index 80cbd26..0000000 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.2.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.3.png b/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.3.png Binary files differdeleted file mode 100644 index 80cbd26..0000000 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.3.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.4.png b/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.4.png Binary files differdeleted file mode 100644 index 80cbd26..0000000 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.4.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.qml b/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.qml deleted file mode 100644 index 16cd5e9..0000000 --- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.qml +++ /dev/null @@ -1,1359 +0,0 @@ -import Qt.VisualTest 4.6 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 32 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 48 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 64 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 80 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 96 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 112 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 128 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 144 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 160 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 176 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 192 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 208 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 224 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 240 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 256 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 272 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 288 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 304 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 320 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 336 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 352 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 368 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 384 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 400 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 416 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 432 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 448 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 464 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 480 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 496 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 512 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 528 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 544 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 560 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 576 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 592 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 608 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 624 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 640 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 656 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 672 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 688 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 704 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 720 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 736 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 752 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 768 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 784 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 800 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 816 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 832 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 848 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 864 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 880 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 896 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 912 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 928 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 944 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 960 - image: "borders.0.png" - } - Frame { - msec: 976 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 992 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1008 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1024 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1040 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1056 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1072 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1088 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1104 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1120 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1136 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1152 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1168 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1184 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1200 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1216 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1232 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1248 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1264 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1280 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1296 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1312 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1328 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1344 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1360 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1376 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1392 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1408 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1424 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1440 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1456 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1472 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1488 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1504 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1520 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1536 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1552 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1568 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1584 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1600 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1616 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1632 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1648 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1664 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1680 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1696 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1712 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1728 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1744 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1760 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1776 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1792 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1808 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1824 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1840 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1856 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1872 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1888 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1904 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1920 - image: "borders.1.png" - } - Frame { - msec: 1936 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1952 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1968 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 1984 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2000 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2016 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2032 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2048 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2064 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2080 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2096 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2112 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2128 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2144 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2160 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2176 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2192 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2208 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2224 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2240 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2256 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2272 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2288 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2304 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2320 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2336 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2352 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2368 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2384 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2400 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2416 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2432 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2448 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2464 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2480 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2496 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2512 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2528 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2544 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2560 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2576 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2592 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2608 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2624 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2640 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2656 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2672 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2688 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2704 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2720 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2736 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2752 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2768 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2784 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2800 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2816 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2832 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2848 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2864 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2880 - image: "borders.2.png" - } - Frame { - msec: 2896 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2912 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2928 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2944 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2960 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2976 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 2992 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3008 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3024 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3040 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3056 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3072 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3088 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3104 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3120 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3136 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3152 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3168 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3184 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3200 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3216 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3232 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3248 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3264 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3280 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3296 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3312 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3328 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3344 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3360 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3376 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3392 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3408 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3424 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3440 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3456 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3472 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3488 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3504 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3520 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3536 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3552 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3568 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3584 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3600 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3616 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3632 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3648 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3664 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3680 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3696 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3712 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3728 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3744 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3760 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3776 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3792 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3808 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3824 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3840 - image: "borders.3.png" - } - Frame { - msec: 3856 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3872 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3888 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3904 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3920 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3936 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3952 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3968 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 3984 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4000 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4016 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4032 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4048 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4064 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4080 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4096 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4112 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4128 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4144 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4160 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4176 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4192 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4208 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4224 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4240 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4256 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4272 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4288 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4304 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4320 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4336 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4352 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4368 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4384 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4400 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4416 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4432 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4448 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4464 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4480 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4496 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4512 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4528 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4544 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4560 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4576 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4592 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4608 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4624 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4640 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4656 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4672 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4688 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4704 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4720 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4736 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4752 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4768 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4784 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4800 - image: "borders.4.png" - } - Frame { - msec: 4816 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4832 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4848 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4864 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4880 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4896 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4912 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4928 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4944 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4960 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4976 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 4992 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5008 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5024 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5040 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5056 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5072 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5088 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5104 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5120 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5136 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5152 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5168 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5184 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5200 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5216 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5232 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5248 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5264 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5280 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5296 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5312 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5328 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5344 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5360 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5376 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5392 - hash: "ab9753116e289c932064144bb0845857" - } - Frame { - msec: 5408 - hash: "ab9753116e289c932064144bb0845857" - } -} diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/easefollow.qml b/tests/auto/declarative/visual/qdeclarativeeasefollow/easefollow.qml deleted file mode 100644 index bd3270f..0000000 --- a/tests/auto/declarative/visual/qdeclarativeeasefollow/easefollow.qml +++ /dev/null @@ -1,40 +0,0 @@ -import Qt 4.6 - -Rectangle { - width: 800; height: 240; color: "gray" - - Rectangle { - id: rect - width: 50; height: 20; y: 30; color: "black" - x: SequentialAnimation { - repeat: true - NumberAnimation { from: 50; to: 700; duration: 2000 } - NumberAnimation { from: 700; to: 50; duration: 2000 } - } - } - - Rectangle { - width: 50; height: 20; y: 60; color: "red" - x: EaseFollow { source: rect.x; velocity: 400 } - } - - Rectangle { - width: 50; height: 20; y: 90; color: "yellow" - x: EaseFollow { source: rect.x; velocity: 300; reversingMode: EaseFollow.Immediate } - } - - Rectangle { - width: 50; height: 20; y: 120; color: "green" - x: EaseFollow { source: rect.x; reversingMode: EaseFollow.Sync } - } - - Rectangle { - width: 50; height: 20; y: 150; color: "purple" - x: EaseFollow { source: rect.x; maximumEasingTime: 200 } - } - - Rectangle { - width: 50; height: 20; y: 180; color: "blue" - x: EaseFollow { source: rect.x; duration: 300 } - } -} diff --git a/tests/auto/declarative/visual/qdeclarativegridview/gridview2.qml b/tests/auto/declarative/visual/qdeclarativegridview/gridview2.qml deleted file mode 100644 index 81d06cf..0000000 --- a/tests/auto/declarative/visual/qdeclarativegridview/gridview2.qml +++ /dev/null @@ -1,58 +0,0 @@ -import Qt 4.6 - -Rectangle { - width: 300; height: 400; color: "black" - - ListModel { - id: appModel - ListElement { lColor: "red" } - ListElement { lColor: "yellow" } - ListElement { lColor: "green" } - ListElement { lColor: "blue" } - ListElement { lColor: "purple" } - ListElement { lColor: "orange" } - ListElement { lColor: "pink" } - ListElement { lColor: "brown" } - ListElement { lColor: "gray" } - ListElement { lColor: "red" } - ListElement { lColor: "yellow" } - ListElement { lColor: "green" } - ListElement { lColor: "blue" } - ListElement { lColor: "purple" } - ListElement { lColor: "orange" } - ListElement { lColor: "pink" } - ListElement { lColor: "brown" } - ListElement { lColor: "gray" } - ListElement { lColor: "red" } - ListElement { lColor: "yellow" } - ListElement { lColor: "green" } - } - - Component { - id: appDelegate - Item { - width: 100; height: 100 - Rectangle { - color: lColor; x: 4; y: 4 - width: 92; height: 92 - } - } - } - - GridView { - id: gridView; anchors.fill: parent - cellWidth: 100; cellHeight: 100; cacheBuffer: 200 - model: appModel; delegate: appDelegate; focus: true - keyNavigationWraps: true - - flickableData: [ - Rectangle { - color: "transparent"; border.color: "white"; border.width: 8; z: 3000 - height: 100; width: 100; x: 4; y: 4 - x: EaseFollow { source: gridView.currentItem.x; velocity: 500 } - y: EaseFollow { source: gridView.currentItem.y; velocity: 500 } - } - ] - } - -} diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.0.png b/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.0.png Binary files differdeleted file mode 100644 index cf36d60..0000000 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.0.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.1.png b/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.1.png Binary files differdeleted file mode 100644 index 6069df8..0000000 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.1.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.2.png b/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.2.png Binary files differdeleted file mode 100644 index b8bd5f3..0000000 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.2.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.3.png b/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.3.png Binary files differdeleted file mode 100644 index cf36d60..0000000 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.3.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.4.png b/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.4.png Binary files differdeleted file mode 100644 index 831d6b4..0000000 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.4.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.5.png b/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.5.png Binary files differdeleted file mode 100644 index f7079dc..0000000 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.5.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.6.png b/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.6.png Binary files differdeleted file mode 100644 index a5f4451..0000000 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.6.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.7.png b/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.7.png Binary files differdeleted file mode 100644 index e1261d0..0000000 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.7.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.qml b/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.qml deleted file mode 100644 index 5a131e9..0000000 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.qml +++ /dev/null @@ -1,5207 +0,0 @@ -import Qt.VisualTest 4.6 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 32 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 48 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 64 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 80 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 96 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 112 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 128 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 144 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 160 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 176 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 192 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 208 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 224 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 240 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 256 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 272 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 288 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 304 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 320 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 336 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 352 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 368 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 384 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 400 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 416 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 432 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 448 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 464 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 480 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 496 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 512 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 528 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 544 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 560 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 576 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 592 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 608 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 624 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 640 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 656 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 672 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 688 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 704 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 720 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 736 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 752 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 768 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 784 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 800 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 816 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 832 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 848 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 864 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 880 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 896 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 912 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 928 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 944 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 960 - image: "drag.0.png" - } - Frame { - msec: 976 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 992 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1008 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1024 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1040 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1056 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1072 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1088 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1104 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1120 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1136 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1152 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1168 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1184 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1200 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1216 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1232 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1248 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1264 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1280 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1296 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1312 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1328 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1344 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1360 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1376 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1392 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1408 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1424 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1440 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1456 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1472 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1488 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1504 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1520 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1536 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1552 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1568 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1584 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1600 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1616 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1632 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1648 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1664 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1680 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1696 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1712 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1728 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1744 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1760 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1776 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1792 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 2 - button: 1 - buttons: 1 - x: 16; y: 54 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 1808 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 1824 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 16; y: 55 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 17; y: 55 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 1840 - hash: "b6b4b2c7acddd23609caa9727911b981" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 17; y: 55 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 1856 - hash: "b6b4b2c7acddd23609caa9727911b981" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 18; y: 55 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 1872 - hash: "022610222cfbcf9e9a8991cdb60c7bbb" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 19; y: 54 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 1888 - hash: "9b5201a3201a102b20592d81218b5e74" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 22; y: 49 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 29; y: 42 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 1904 - hash: "a6c6df34bb552249393ba208ad327691" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 37; y: 35 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 1920 - image: "drag.1.png" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 47; y: 27 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 1936 - hash: "978543d8f9688605625f40b960d79c28" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 59; y: 21 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 73; y: 15 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 1952 - hash: "6170ab3a7e51278ac4462b89fe7781b4" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 87; y: 9 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 1968 - hash: "32866f0aa5b13b3ab68661f49336439e" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 100; y: 5 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 1984 - hash: "26dc17c16eed46d37932cfe48d182b62" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 111; y: 1 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 121; y: -3 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2000 - hash: "ba70936fb44396fac184cc7ba0e94a90" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 130; y: -6 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2016 - hash: "bae13291d4f031c34d80428d83367ede" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 140; y: -8 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2032 - hash: "0a2fbfdc27bb6662553f637f1c325475" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 151; y: -9 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 160; y: -9 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2048 - hash: "cdab85736dfcc4424d42e0e96094eded" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 170; y: -9 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2064 - hash: "76d51ce9ad69560d983d8d86d50f7bd0" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 174; y: -9 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2080 - hash: "b5ada9e80f7f894aa141d5e3cfa5d69e" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 176; y: -9 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2096 - hash: "446d35fc7b9c0fe4bf0bfe0182f994f6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 183; y: -5 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2112 - hash: "cced849d314835d43ebd93bcfe396c12" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 188; y: -3 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2128 - hash: "09696d700944c373f82d7c6f75d51c51" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 193; y: 0 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2144 - hash: "af56586db93c49637c9bfbb17cac9001" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 199; y: 2 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 203; y: 5 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2160 - hash: "66fc1b30b4037aad3975036faccbb7a7" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 209; y: 8 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2176 - hash: "3f443d9c89d6ba1b36ca9635bc32de1a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 217; y: 11 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2192 - hash: "df47db8cc7bb466b298749a6449d3d70" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 227; y: 15 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 234; y: 18 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 241; y: 20 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2208 - hash: "c1146fdc0e628d050442606096e52b10" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 252; y: 23 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2224 - hash: "22f44c43f300fd7ff2b4d87d93756178" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 272; y: 30 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2240 - hash: "bf11dc9a9679692abde5d116a169eecf" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 299; y: 38 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 329; y: 48 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2256 - hash: "e63f1960f342639ac412010ffcefb049" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 360; y: 57 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2272 - hash: "ae0228419ec9358025c3026a39abd671" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 392; y: 65 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2288 - hash: "6d2272e2bea21c280100ed8de5b95d4e" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 422; y: 72 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 451; y: 76 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2304 - hash: "1628c6fa5feabd90924452bc9f55054d" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 476; y: 78 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2320 - hash: "f696791eb0a317b0efb69407616bec9f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 497; y: 78 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2336 - hash: "f696791eb0a317b0efb69407616bec9f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 513; y: 77 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 527; y: 76 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2352 - hash: "1628c6fa5feabd90924452bc9f55054d" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 538; y: 75 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2368 - hash: "a5d3d247e22a2852a60fe07ab40345a5" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 548; y: 74 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2384 - hash: "a453fb6bcdd87f819782d8d8c46b56ee" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 556; y: 74 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 563; y: 75 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2400 - hash: "a5d3d247e22a2852a60fe07ab40345a5" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 570; y: 76 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2416 - hash: "1628c6fa5feabd90924452bc9f55054d" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 576; y: 78 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2432 - hash: "f696791eb0a317b0efb69407616bec9f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 582; y: 78 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 585; y: 80 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2448 - hash: "8f061986df633c21dcad767ee857988c" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 589; y: 81 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2464 - hash: "2cc110a6fb800171d7d752693ede1e4e" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 592; y: 82 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2480 - hash: "319fc3053e02a8b161f33a79d9839bb1" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 595; y: 85 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 597; y: 89 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2496 - hash: "42915c8866746316cf1083a2d55410fb" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 601; y: 95 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2512 - hash: "5df34b3ae292de9a9cd8ff09347e7bd4" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 606; y: 103 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2528 - hash: "1f9bc3c955983ea85f568797cb4f7365" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 609; y: 113 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 613; y: 124 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2544 - hash: "3f156dc64a12c672874acf5456ef4a31" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 618; y: 136 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2560 - hash: "d4d9fe5b5f138e06a87039ebf8695d03" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 619; y: 142 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2576 - hash: "383fe813021ee2791930200b2f88a802" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 620; y: 148 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 622; y: 155 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2592 - hash: "a235544bd5e791dfa329bd0b87358bfa" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 625; y: 163 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2608 - hash: "a87497cf47db3209610b532efe7eb380" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 629; y: 174 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2624 - hash: "abe69b4e4b7508028226f9b73c38058a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 634; y: 194 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 642; y: 225 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2640 - hash: "51c72fa2fa4c8765d882fe65dc0d697d" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 649; y: 260 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2656 - hash: "79da7ed21bd6fc16b7264d4403e763cc" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 655; y: 291 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2672 - hash: "b2828b6340a57fa45416469b23b7cef0" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 658; y: 316 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 659; y: 340 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2688 - hash: "64a5351f2d746b338c34c7ea9ba6e1fe" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 660; y: 370 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2704 - hash: "9eedb7a6875210084fd2ec95d3505512" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 661; y: 408 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2720 - hash: "b88eb8fa8a0cfc263dc7b655ddc29db0" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 661; y: 448 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2736 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 660; y: 487 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 659; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2752 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 658; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2768 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 658; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2784 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 658; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 658; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2800 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 657; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2816 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 656; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2832 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 654; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 652; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2848 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 651; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2864 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 650; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2880 - image: "drag.2.png" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 650; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 648; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2896 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 647; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2912 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 646; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2928 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 645; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 644; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2944 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 643; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2960 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 642; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2976 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 641; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 640; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 2992 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 640; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3008 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 639; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3024 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 639; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 638; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3040 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 636; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3056 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 625; y: 505 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3072 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 611; y: 505 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3088 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 582; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 546; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3104 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 505; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3120 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 460; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3136 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 408; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 354; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3152 - hash: "c2997fdde10812f02791bfed5f158ac3" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 300; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3168 - hash: "23a6dfbd09e5b44d04f252cedaeb68af" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 250; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3184 - hash: "f74422989711f86a0840ffc98e8a29e9" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 206; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 163; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3200 - hash: "fa922246d254a7c46d2d1d6ec91a2b02" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 140; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 122; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3216 - hash: "ef216cb8c2bf58db7d58bd8a2e4eb38d" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 101; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3232 - hash: "a383228d22e64b8a7758c959288eaca8" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 64; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3248 - hash: "636ca2a8e91c49ef6c8b1c93b830f345" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 36; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 16; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3264 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -1; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3280 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3296 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3312 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3328 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3344 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3360 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3376 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 505 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3392 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 504 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 504 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3408 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 505 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3424 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3440 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3456 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3472 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3488 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3504 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3520 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3536 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3552 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Frame { - msec: 3568 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3584 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3600 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3616 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Frame { - msec: 3632 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 491 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3648 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 428 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3664 - hash: "9fa1e3686467f28cb013fe093dab388c" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 342 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3680 - hash: "7ef97d10862f80d53e0b3b4446661deb" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 264 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 203 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3696 - hash: "c679866b3965b7b5f48b843d6efccf42" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 160 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3712 - hash: "de4bd9ad3cbb9bb19bf75f871b044072" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 144 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3728 - hash: "c5349bbddc03edd5ee3537e2a738f1ad" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 136 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 132 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3744 - hash: "bcbe9ec2687a6030385f08d3dc17becf" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 130 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3760 - hash: "3ad767f63eaccb9e64a9f704900f2530" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 129 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3776 - hash: "421a1ffde15fda0e7846bc095ed2ea37" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 128 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 128 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3792 - hash: "55c260da304a6b1119af83f6a4efcff0" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 123 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3808 - hash: "f231cc521db801b4ec71248812e12db8" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 104 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3824 - hash: "b489b6b604e7f7699cac9e42d0725323" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 68 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 35 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3840 - image: "drag.3.png" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 13 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3856 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 2 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3872 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -6 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -12 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3888 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -25 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3904 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -46 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3920 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -65 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -70 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3936 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -74 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3952 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -76 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3968 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -76 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 3984 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -76 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4000 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -77 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4016 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -78 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4032 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4048 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -78 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4064 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4080 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4096 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -77 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4112 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4128 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4144 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: -78 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4160 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -3; y: -84 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4176 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -2; y: -105 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 1; y: -151 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4192 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4208 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4224 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4240 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4256 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4272 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4288 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4304 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4320 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4336 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4352 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4368 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Frame { - msec: 4384 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 3; y: -151 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4400 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 4; y: -149 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4416 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 5; y: -147 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4432 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 5; y: -143 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 6; y: -138 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4448 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 7; y: -130 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4464 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 9; y: -117 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4480 - hash: "668cc6d9d699b947a7c0f3ff4b26853f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 13; y: -94 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 20; y: -63 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4496 - hash: "b1b54f7bf8ab9cf98d96f9b34192434b" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 29; y: -24 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4512 - hash: "a6c6df34bb552249393ba208ad327691" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 39; y: 15 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4528 - hash: "a05eb803b1f1f3574a2f2e08fe37bd35" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 49; y: 50 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 58; y: 74 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4544 - hash: "3c2f3db46673c2640a26832900b609cb" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 65; y: 91 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4560 - hash: "d0539a9791874f48634bb3cb9f78d9db" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 71; y: 103 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4576 - hash: "f2d862a0b81e2578799d64aef2e6bddc" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 77; y: 112 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 81; y: 121 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4592 - hash: "295ef097845e30064c4d810a7718896c" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 86; y: 128 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4608 - hash: "22a4a17d82ac402c0e8372861609ff1c" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 92; y: 136 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4624 - hash: "a70e81b1435afd77b9079c58685ef9d0" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 98; y: 143 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 104; y: 151 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4640 - hash: "d66fefd68fcd96834548c18797eee4bd" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 111; y: 159 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4656 - hash: "fcc435dc6f2643cd21a7cfac078880af" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 118; y: 166 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4672 - hash: "736edfcf33245d46aaea199634896c17" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 123; y: 173 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 129; y: 183 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4688 - hash: "7b7ab312d0c6f4bfc87a2ae467324f4e" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 137; y: 197 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4704 - hash: "d78ce756fc27055eeee15001419b7fb5" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 146; y: 215 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4720 - hash: "4f15a726939d7f489d1fe58ebb5bcd0a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 157; y: 235 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 168; y: 255 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4736 - hash: "72184d71fd2fdc6786a43045db0be68f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 180; y: 274 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4752 - hash: "3b3f3f34218bf238f310412cb8c4968d" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 192; y: 293 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4768 - hash: "24c00a7154471431d43b1db957ad6424" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 205; y: 316 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 221; y: 343 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4784 - hash: "30081a33ab007ff2c7ba6cc293a5aec3" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 237; y: 371 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4800 - image: "drag.4.png" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 253; y: 396 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4816 - hash: "c0cadb7730838d553b146804c37506b0" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 268; y: 419 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 276; y: 429 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 284; y: 438 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4832 - hash: "101c007d0e2cf82331ba1cab4880e8a2" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 291; y: 448 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4848 - hash: "72e46df7427420c5e942a97831723d3f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 307; y: 468 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4864 - hash: "4b7a009b46982a1e9e31250d7ebf0a20" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 323; y: 492 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 341; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4880 - hash: "a3ba70933b6452fad0cdc4192e04be23" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 359; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4896 - hash: "c2ee16182222b403f914eb5550ac6f91" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 378; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4912 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 397; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 416; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4928 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 432; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4944 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 445; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4960 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 456; y: 506 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 466; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4976 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 475; y: 506 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 4992 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 482; y: 505 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5008 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 488; y: 504 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 492; y: 503 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5024 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 496; y: 503 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5040 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 500; y: 502 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5056 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 507; y: 501 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5072 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 512; y: 500 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 516; y: 498 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5088 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 521; y: 494 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5104 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 525; y: 486 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5120 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 532; y: 472 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 542; y: 445 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5136 - hash: "9356ce797d12ae076af947cd0e658551" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 553; y: 414 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5152 - hash: "76a8d3b8465f08fdc4586c7766667eff" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 563; y: 389 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5168 - hash: "569e56ba99776d03dd3140e53bc77f56" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 569; y: 373 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 573; y: 363 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5184 - hash: "7139c72a2458685006da79d9cf11bc44" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 577; y: 354 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5200 - hash: "a83d5ef213edec4c8f938ab04afb5c4f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 580; y: 344 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5216 - hash: "5533602bc8a473c162966142d4bddebd" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 584; y: 321 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 586; y: 301 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5232 - hash: "7a79d6e31874428233e9c141d70522fd" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 588; y: 264 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5248 - hash: "b14f4daeb25cd71baae36f4cec111813" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 591; y: 238 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5264 - hash: "e2b2513d2918ffb85bab5fff5a8be644" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 592; y: 225 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 593; y: 216 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5280 - hash: "af0cbb3423491917db1fdaa8350d48b0" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 594; y: 209 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5296 - hash: "b9c107f0a13ad37ae05b4d5f9e5f5442" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 594; y: 200 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5312 - hash: "0bbc0c7a4a40ee6b19565c04c23b565d" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 594; y: 182 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 593; y: 146 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5328 - hash: "49494e8526a1417c151c7cac7099b9e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 590; y: 107 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5344 - hash: "5e0839c4414cc8ddc5241c658fd3bf88" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 585; y: 80 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5360 - hash: "8f061986df633c21dcad767ee857988c" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 582; y: 67 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5376 - hash: "d78c0a4fa0ccad407a565fab3a5c95b9" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 579; y: 61 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 576; y: 57 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5392 - hash: "cee6816f84911bc2262afe28d8996719" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 573; y: 55 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5408 - hash: "2cc6cd514ef7299dd60bf1a735b81d36" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 569; y: 51 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5424 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 564; y: 44 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 557; y: 35 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5440 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 548; y: 25 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5456 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 540; y: 14 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 532; y: 5 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5472 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 524; y: -1 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5488 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 517; y: -5 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5504 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 510; y: -9 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5520 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 501; y: -14 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 492; y: -18 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5536 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 483; y: -21 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5552 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 476; y: -21 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5568 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 470; y: -19 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 464; y: -15 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5584 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 458; y: -9 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5600 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 452; y: -3 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5616 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 446; y: 4 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 439; y: 11 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5632 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 432; y: 20 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5648 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 424; y: 29 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5664 - hash: "68c40f3551d7d10e61c5ffbb6948c7e6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 413; y: 42 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 400; y: 59 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5680 - hash: "9bc8a652f43c0e3cae9492f5dff624e7" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 392; y: 70 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 385; y: 79 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5696 - hash: "5465128afe72d9618cd9abc47f4ce72f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 378; y: 88 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5712 - hash: "ad739c2028caf8f89d8ae04d509c7854" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 366; y: 102 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 353; y: 114 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5728 - hash: "97cd37f639a7bea76a2f68774c0753db" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 339; y: 126 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5744 - hash: "d24fc8a57dd34e6ddb726426247ec219" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 324; y: 140 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5760 - image: "drag.5.png" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 308; y: 158 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 288; y: 181 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5776 - hash: "7af87eb80fa9d87fe8d8b5e4a2fff5e1" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 266; y: 208 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5792 - hash: "73623f4a857fd4d5150c2eeef1341540" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 243; y: 237 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5808 - hash: "076c4b60d9ec197950ade51e3f1be791" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 217; y: 265 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 191; y: 291 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5824 - hash: "22b7d7765c634763fa86912ea262efca" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 167; y: 314 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5840 - hash: "1267c017931bda0b88b4672f46d499e0" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 147; y: 331 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5856 - hash: "b6a545e4c14b809f4ebcffbcb59a8e4f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 132; y: 344 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 121; y: 354 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5872 - hash: "b1085cb508d4613c76e99bc879c62cbf" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 111; y: 363 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5888 - hash: "365fd1260c2109e6d5bd0a97ce3a7e4e" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 100; y: 370 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5904 - hash: "3a7d001313b23cbbb7f3d842ab40f41b" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 86; y: 377 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 66; y: 385 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5920 - hash: "c5bda48bb2eaee54d6d8416592830327" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 45; y: 394 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5936 - hash: "5d0fd6d8a6ced4f197fe3b09e7e9155b" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 29; y: 402 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5952 - hash: "79e2825f98644c061ae5216ae1823e4b" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 16; y: 410 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 6; y: 417 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5968 - hash: "22a3978f2f3a0cde67f459527af3b3f2" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 0; y: 422 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 427 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 5984 - hash: "1511bec94911dd272f78a726e15bf76e" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 432 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6000 - hash: "0f892f7e570cdc703e492248c9f54b6c" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 439 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6016 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 447 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 452 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6032 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 457 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6048 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 459 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6064 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 464 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 465 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6080 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 467 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6096 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 468 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6112 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 468 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 468 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6128 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 468 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6144 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 468 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6160 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 469 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 470 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6176 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 470 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6192 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Frame { - msec: 6208 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 470 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6224 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -3; y: 470 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -3; y: 470 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6240 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -2; y: 470 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6256 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -1; y: 470 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6272 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -1; y: 468 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 0; y: 467 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6288 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 0; y: 464 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6304 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 0; y: 458 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6320 - hash: "ec34aa6937d2c081bdf11660a5eb461a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -3; y: 441 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 408 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6336 - hash: "58413f9b01f1e0b49519d8b6a3011607" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 366 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6352 - hash: "b3992d2f9c1383c710ee325a94117a8b" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 327 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6368 - hash: "bd415044fcf6218d8184cb0206105e65" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 300 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 288 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6384 - hash: "e7296140fe8b28bed77e95e588c0e463" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 280 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6400 - hash: "9ff532223ccccd663809187465e478c2" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 276 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6416 - hash: "4de9ca75503db05df5d8274d75c202e5" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 271 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 259 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6432 - hash: "a83b5bc409207e986055081b4ed3faa6" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 227 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6448 - hash: "7fdbd00dd3553241f30fd6568a8ab646" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 190 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6464 - hash: "5ebaa67eaadc1ede8c46964fa1dffff1" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -4; y: 169 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: -2; y: 160 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6480 - hash: "de4bd9ad3cbb9bb19bf75f871b044072" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 1; y: 156 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6496 - hash: "9d762cd4dd6508cf8b54c47b76f4ef37" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 5; y: 155 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6512 - hash: "bdf17c384f4f824a89a06b88ba17c15f" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 10; y: 154 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 25; y: 152 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6528 - hash: "f279f28995785afd143726aef7673b50" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 52; y: 149 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6544 - hash: "53b6b82a61d017e12afb01a728d8d856" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 80; y: 148 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6560 - hash: "9a48039175cab1360a0cf5cc195e2082" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 98; y: 148 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 112; y: 150 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6576 - hash: "cfc3991e30eef6c2edb66cb6060b2bde" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 123; y: 153 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6592 - hash: "737d8907f62768e623ba76866a509d1e" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 134; y: 155 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6608 - hash: "dea2a596f7d85f29728b33d126d997e5" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 145; y: 158 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 157; y: 161 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6624 - hash: "3969a0bbb284ab1d5efd20cf93b0422d" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 168; y: 164 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6640 - hash: "071ff25e49f7f16a727ff58c42ff766e" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 176; y: 169 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6656 - hash: "454abec991a4675763f379c256919fa7" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 184; y: 173 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 189; y: 177 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6672 - hash: "6de741c4e6057dc8580106155c4ac627" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 194; y: 184 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6688 - hash: "e35853e99cd205b7ccabdf632b238584" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 199; y: 192 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6704 - hash: "15a70a0196227c6bce50ed70cd6383c8" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 204; y: 201 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 211; y: 210 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6720 - image: "drag.6.png" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 217; y: 217 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6736 - hash: "5e951eb6017a060287e398fcaf4aeba9" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 224; y: 223 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6752 - hash: "ddd0f27027e23a45aef131296c781865" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 235; y: 228 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 246; y: 232 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6768 - hash: "715102a252756e5a8c4f459d808aec6a" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 257; y: 235 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6784 - hash: "42b9c1b894247ddbd85f4a4aca5695f1" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 267; y: 239 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6800 - hash: "b67b4bdd412ed5160901803c60c6f19e" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 275; y: 239 - modifiers: 0 - sendToViewport: true - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 280; y: 239 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6816 - hash: "3490cc41c2b1f9301c209bdb8f052add" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 281; y: 239 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6832 - hash: "df32868d564ebbc41c359409b5a69e7d" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 282; y: 239 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6848 - hash: "b9cb430a6f677e67c87322e0aff53fb1" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 282; y: 239 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6864 - hash: "b9cb430a6f677e67c87322e0aff53fb1" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 281; y: 239 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6880 - hash: "df32868d564ebbc41c359409b5a69e7d" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 280; y: 239 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6896 - hash: "3490cc41c2b1f9301c209bdb8f052add" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 279; y: 240 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6912 - hash: "e23a88f49a73cd2a9326095dd380ab55" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 277; y: 240 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6928 - hash: "ffffc1aed27fe77c2fe5c035eab706a9" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 277; y: 240 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6944 - hash: "ffffc1aed27fe77c2fe5c035eab706a9" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 276; y: 240 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6960 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Mouse { - type: 5 - button: 0 - buttons: 1 - x: 276; y: 240 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 6976 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 6992 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Mouse { - type: 3 - button: 1 - buttons: 0 - x: 276; y: 240 - modifiers: 0 - sendToViewport: true - } - Frame { - msec: 7008 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7024 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7040 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7056 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7072 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7088 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7104 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7120 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7136 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7152 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7168 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7184 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7200 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7216 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7232 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7248 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7264 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7280 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7296 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7312 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7328 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7344 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7360 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7376 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7392 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7408 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7424 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7440 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7456 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7472 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7488 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7504 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7520 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7536 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7552 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7568 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7584 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7600 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7616 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7632 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7648 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7664 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7680 - image: "drag.7.png" - } - Frame { - msec: 7696 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7712 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7728 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7744 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7760 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7776 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7792 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7808 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7824 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7840 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7856 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7872 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7888 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7904 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7920 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7936 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7952 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7968 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 7984 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } - Frame { - msec: 8000 - hash: "2c1ce07ab6ce0072f6cb205f1e5297e0" - } -} diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/drag.qml b/tests/auto/declarative/visual/qdeclarativemouseregion/drag.qml deleted file mode 100644 index dbb2a24..0000000 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/drag.qml +++ /dev/null @@ -1,21 +0,0 @@ -import Qt 4.6 - -Rectangle{ - width:400 - height:440 - color: "white" - Rectangle{ - id: draggable - width:40; height:40; color: "lightsteelblue" - y:20 - MouseArea{ - anchors.fill: parent - drag.target: draggable - drag.axis: "XandYAxis" - drag.minimumX: 0 - drag.maximumX: 360 - drag.minimumY: 20 - drag.maximumY: 400 - } - } -} diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/mouseregion.qml b/tests/auto/declarative/visual/qdeclarativemouseregion/mouseregion.qml deleted file mode 100644 index 3c722d0..0000000 --- a/tests/auto/declarative/visual/qdeclarativemouseregion/mouseregion.qml +++ /dev/null @@ -1,124 +0,0 @@ -import Qt 4.6 - -Rectangle { - id: root - width: 400 - height: 100 - - // Left click on me - Rectangle { - width: 98; height: 48 - color: "red" - MouseArea { - id: mr1 - anchors.fill: parent - enabled: false - onClicked: { parent.color = "blue"; root.error = "mr1 should ignore presses"; } - } - } - - // Left click, then right click - Rectangle { - x: 100 - width: 98; height: 48 - color: "red" - MouseArea { - id: mr2 - anchors.fill: parent - acceptedButtons: Qt.RightButton - onClicked: { - if (mouse.button == Qt.RightButton) { - parent.color = "blue"; - } else { - parent.color = "green"; - root.error = "mr1 should ignore presses"; - } - } - } - } - - // press and hold me - Rectangle { - x: 200 - width: 98; height: 48 - color: "red" - MouseArea { - id: mr3 - anchors.fill: parent - onPressAndHold: { - parent.color = "blue"; - } - } - } - - // click me - Rectangle { - x: 300 - width: 98; height: 48 - color: "red" - MouseArea { - id: mr4 - anchors.fill: parent - onPressed: { - parent.color = "blue"; - } - onReleased: { - parent.color = "red"; - } - } - } - - // move into and out of me - Rectangle { - x: 0 - y: 50 - width: 98; height: 48 - color: "red" - MouseArea { - id: mr5 - anchors.fill: parent - hoverEnabled: true - onEntered: { - parent.color = "blue"; - } - onExited: { - parent.color = "green"; - } - } - } - - // click, then double click me - Rectangle { - x: 100 - y: 50 - width: 98; height: 48 - color: "red" - MouseArea { - id: mr6 - anchors.fill: parent - onClicked: { - parent.color = "blue"; - } - onDoubleClicked: { - parent.color = "green"; - } - } - } - - // click, then double click me - nothing should happen - Rectangle { - x: 100 - y: 50 - width: 98; height: 48 - color: "red" - MouseArea { - id: mr7 - anchors.fill: parent - enabled: false - onClicked: { parent.color = "blue" } - onPressed: { parent.color = "yellow" } - onReleased: { parent.color = "cyan" } - onDoubleClicked: { parent.color = "green" } - } - } -} diff --git a/tests/auto/declarative/visual/qdeclarativeparticles/particles.qml b/tests/auto/declarative/visual/qdeclarativeparticles/particles.qml deleted file mode 100644 index 2d481c9..0000000 --- a/tests/auto/declarative/visual/qdeclarativeparticles/particles.qml +++ /dev/null @@ -1,54 +0,0 @@ -import Qt 4.6 - -Rectangle { - width: 640; height: 480; color: "black" - - Particles { id:particlesAnotEmitting - y:60; width: 260; height:30; source: "star.png"; - lifeSpan:1000; count: 50; angle:70; angleDeviation:36; - velocity:30; velocityDeviation:10; emissionRate: 0 - ParticleMotionWander { yvariance:5; xvariance:30; pace:100 } - } - Particles { id:particlesA - y:0; width: 260; height:30; source: "star.png"; - lifeSpan:1000; count: 50; angle:70; angleDeviation:36; - velocity:30; velocityDeviation:10; emissionRate: 10 - ParticleMotionWander { yvariance:5; xvariance:30; pace:100 } - } - - Particles { id:particlesB - y:280; x:180; width:1; height:1; lifeSpan:1000; source: "star.png" - count: 100; angle:270; angleDeviation:45; velocity:50; velocityDeviation:30; - emissionRate: 0 - ParticleMotionGravity { yattractor: 1000; xattractor:0; acceleration:25 } - } - - Timer { running: true; interval: 1000; repeat: true; onTriggered: particlesB.burst(200, 2000); } - - Column{ - x: 340; - Repeater{ - model: 5 - delegate: Component{ - Item{ - width: 100; height: 100 - Rectangle{ - color: "blue" - width: 2; height: 2; - x: 49; y:49; - } - Particles{ - x: 50; y:50; width: 0; height: 0; - fadeInDuration: 0; fadeOutDuration: 0 - lifeSpan: 1000; lifeSpanDeviation:0; - source: "star.png" - count: -1; emissionRate: 120; - emissionVariance: index/2; - velocity: 250; velocityDeviation: 0; - angle: 0; angleDeviation: 0; - } - } - } - } - } -} diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/clock.qml b/tests/auto/declarative/visual/qdeclarativespringfollow/clock.qml deleted file mode 100644 index 04bbabc..0000000 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/clock.qml +++ /dev/null @@ -1,64 +0,0 @@ -import Qt 4.6 - -Rectangle { - id: clock - color: "gray" - width: 200; height: 200 - - property var hours: 10 - property var minutes: 28 - property var seconds: 0 - - Timer { - interval: 1000; running: true; repeat: true; triggeredOnStart: true - onTriggered: seconds++ - } - - Image { id: background; source: "content/clock.png" } - - Image { - x: 92.5; y: 27 - source: "content/hour.png" - smooth: true - transform: Rotation { - id: hourRotation - origin.x: 7.5; origin.y: 73; angle: 0 - angle: SpringFollow { - spring: 2; damping: 0.2; modulus: 360 - source: (clock.hours * 30) + (clock.minutes * 0.5) - } - } - } - - Image { - x: 93.5; y: 17 - source: "content/minute.png" - smooth: true - transform: Rotation { - id: minuteRotation - origin.x: 6.5; origin.y: 83; angle: 0 - angle: SpringFollow { - spring: 2; damping: 0.2; modulus: 360 - source: clock.minutes * 6 - } - } - } - - Image { - x: 97.5; y: 20 - source: "content/second.png" - smooth: true - transform: Rotation { - id: secondRotation - origin.x: 2.5; origin.y: 80; angle: 0 - angle: SpringFollow { - spring: 5; damping: 0.25; modulus: 360 - source: clock.seconds * 6 - } - } - } - - Image { - anchors.centerIn: background; source: "content/center.png" - } -} diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/follow.qml b/tests/auto/declarative/visual/qdeclarativespringfollow/follow.qml deleted file mode 100644 index 62503e4..0000000 --- a/tests/auto/declarative/visual/qdeclarativespringfollow/follow.qml +++ /dev/null @@ -1,71 +0,0 @@ -import Qt 4.6 - -Rectangle { - color: "#ffffff" - width: 320; height: 240 - Rectangle { - id: rect - color: "#00ff00" - y: 200; width: 60; height: 20 - y: SequentialAnimation { - repeat: true - NumberAnimation { - to: 20; duration: 500 - easing.type: "InOutQuad" - } - NumberAnimation { - to: 200; duration: 2000 - easing.type: "OutBounce" - } - PauseAnimation { duration: 1000 } - } - } - - // Velocity - Rectangle { - color: "#ff0000" - x: rect.width; width: rect.width; height: 20 - y: 200 - y: SpringFollow { source: rect.y; velocity: 200 } - } - - // Spring - Rectangle { - color: "#ff0000" - x: rect.width * 2; width: rect.width/2; height: 20 - y: 200 - y: SpringFollow { source: rect.y; spring: 1.0; damping: 0.2 } - } - Rectangle { - color: "#880000" - x: rect.width * 2.5; width: rect.width/2; height: 20 - y: 200 - y: SpringFollow { source: rect.y; spring: 1.0; damping: 0.2; mass: 3.0 } // "heavier" object - } - - // Follow mouse - MouseArea { - id: mouseRegion - anchors.fill: parent - Rectangle { - id: ball - width: 20; height: 20 - radius: 10 - color: "#0000ff" - x: SpringFollow { id: f1; source: mouseRegion.mouseX-10; spring: 1.0; damping: 0.05; epsilon: 0.25 } - y: SpringFollow { id: f2; source: mouseRegion.mouseY-10; spring: 1.0; damping: 0.05; epsilon: 0.25 } - states: [ - State { - name: "following" - when: !f1.inSync || !f2.inSync - PropertyChanges { target: ball; color: "#ff0000" } - } - ] - transitions: [ - Transition { - ColorAnimation { duration: 200 } - } - ] - } - } -} diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/elide2.qml b/tests/auto/declarative/visual/qdeclarativetext/elide/elide2.qml deleted file mode 100644 index c163e05..0000000 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/elide2.qml +++ /dev/null @@ -1,12 +0,0 @@ -import Qt 4.6 - -Rectangle { - width: 500 - height: 100 - - Text { - width: NumberAnimation { from: 500; to: 0; repeat: true; duration: 5000 } - elide: Text.ElideRight - text: 'Here is some very long text that we should truncate when sizing window' - } -} diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/multilength.qml b/tests/auto/declarative/visual/qdeclarativetext/elide/multilength.qml deleted file mode 100644 index ca41eab..0000000 --- a/tests/auto/declarative/visual/qdeclarativetext/elide/multilength.qml +++ /dev/null @@ -1,19 +0,0 @@ -import Qt 4.6 - -Rectangle { - width: 500 - height: 50 - color: "lightBlue" - Rectangle { - width: myText.width - height: myText.height - color: "white" - anchors.centerIn: parent - Text { - id: myText - width: NumberAnimation { from: 500; to: 0; repeat: true; duration: 1000 } - elide: "ElideRight" - text: "Brevity is the soul of wit, and tediousness the limbs and outward flourishes.\x9CBrevity is a great charm of eloquence.\x9CBe concise!\x9CSHHHHHHHHHHHHHHHHHHHHHHHHHHHH" - } - } -} diff --git a/tests/auto/declarative/visual/qdeclarativetext/font/plaintext.qml b/tests/auto/declarative/visual/qdeclarativetext/font/plaintext.qml deleted file mode 100644 index a3aa929..0000000 --- a/tests/auto/declarative/visual/qdeclarativetext/font/plaintext.qml +++ /dev/null @@ -1,85 +0,0 @@ -import Qt 4.6 - -Rectangle { - id: s; width: 800; height: 1000; color: "lightsteelblue" - property string text: "The quick brown fox jumps over the lazy dog." - - Column { - spacing: 10 - Text { - text: s.text - } - Text { - text: s.text; font.pixelSize: 18 - } - Text { - text: s.text; font.pointSize: 25 - } - Text { - text: s.text; color: "red"; smooth: true - } - Text { - text: s.text; font.capitalization: "AllUppercase" - } - Text { - text: s.text; font.underline: true - } - Text { - text: s.text; font.overline: true; smooth: true - } - Text { - text: s.text; font.strikeout: true - } - Text { - text: s.text; font.underline: true; font.overline: true; font.strikeout: true - } - Text { - text: s.text; font.letterSpacing: 200 - } - Text { - text: s.text; font.underline: true; font.letterSpacing: 200; font.capitalization: "AllUppercase"; color: "blue" - } - Text { - text: s.text; font.overline: true; font.wordSpacing: 25; font.capitalization: "Capitalize"; color: "green" - } - Text { - text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white" - } - Text { - text: s.text; font.pixelSize: 18; style: Text.Sunken; styleColor: "gray" - } - Text { - text: s.text; font.pixelSize: 18; style: Text.Raised; styleColor: "yellow" - } - Text { - text: s.text; horizontalAlignment: Text.AlignLeft; width: 800 - } - Text { - text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: 800; height: 20 - } - Text { - text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: 800; height: 20 - } - Text { - text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrap: true; width: 200 - } - Text { - text: s.text; elide: Text.ElideLeft; width: 200 - } - Text { - text: s.text; elide: Text.ElideMiddle; width: 200 - } - Text { - text: s.text; elide: Text.ElideRight; width: 200 - } - Text { - text: s.text; elide: Text.ElideLeft; width: 200; wrap: true - } - Text { - text: s.text; elide: Text.ElideMiddle; width: 200; wrap: true - } - Text { - text: s.text; elide: Text.ElideRight; width: 200; wrap: true - } - } -} diff --git a/tests/auto/declarative/visual/qdeclarativetext/font/richtext.qml b/tests/auto/declarative/visual/qdeclarativetext/font/richtext.qml deleted file mode 100644 index 35aa232..0000000 --- a/tests/auto/declarative/visual/qdeclarativetext/font/richtext.qml +++ /dev/null @@ -1,85 +0,0 @@ -import Qt 4.6 - -Rectangle { - id: s; width: 800; height: 1000; color: "lightsteelblue" - property string text: "<b>The</b> <i>quick</i> <u>brown</u> <o>fox</o> <big>jumps</big> <small>over</small> <tt>the</tt> <s>lazy</s> <em>dog</em>." - - Column { - spacing: 10 - Text { - text: s.text - } - Text { - text: s.text; font.pixelSize: 18 - } - Text { - text: s.text; font.pointSize: 25 - } - Text { - text: s.text; color: "red"; smooth: true - } - Text { - text: s.text; font.capitalization: "AllUppercase" - } - Text { - text: s.text; font.underline: true - } - Text { - text: s.text; font.overline: true; smooth: true - } - Text { - text: s.text; font.strikeout: true - } - Text { - text: s.text; font.underline: true; font.overline: true; font.strikeout: true - } - Text { - text: s.text; font.letterSpacing: 200 - } - Text { - text: s.text; font.underline: true; font.letterSpacing: 200; font.capitalization: "AllUppercase"; color: "blue" - } - Text { - text: s.text; font.overline: true; font.wordSpacing: 25; font.capitalization: "Capitalize"; color: "green" - } - Text { - text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white" - } - Text { - text: s.text; font.pixelSize: 18; style: Text.Sunken; styleColor: "gray" - } - Text { - text: s.text; font.pixelSize: 18; style: Text.Raised; styleColor: "yellow" - } - Text { - text: s.text; horizontalAlignment: Text.AlignLeft; width: 800 - } - Text { - text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: 800; height: 20 - } - Text { - text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: 800; height: 20 - } - Text { - text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrap: true; width: 200 - } - Text { - text: s.text; elide: Text.ElideLeft; width: 200 - } - Text { - text: s.text; elide: Text.ElideMiddle; width: 200 - } - Text { - text: s.text; elide: Text.ElideRight; width: 200 - } - Text { - text: s.text; elide: Text.ElideLeft; width: 200; wrap: true - } - Text { - text: s.text; elide: Text.ElideMiddle; width: 200; wrap: true - } - Text { - text: s.text; elide: Text.ElideRight; width: 200; wrap: true - } - } -} diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/cursorDelegate.qml b/tests/auto/declarative/visual/qdeclarativetextedit/cursorDelegate.qml deleted file mode 100644 index 176a5b8..0000000 --- a/tests/auto/declarative/visual/qdeclarativetextedit/cursorDelegate.qml +++ /dev/null @@ -1,35 +0,0 @@ -import Qt 4.6 - Rectangle { - resources: [ - Component { id: cursorA - Item { id: cPage; - x: Behavior { NumberAnimation { } } - y: Behavior { NumberAnimation { } } - height: Behavior { NumberAnimation { duration: 200 } } - Rectangle { id: cRectangle; color: "black"; y: 1; width: 1; height: parent.height-2; - Rectangle { id:top; color: "black"; width: 3; height: 1; x: -1; y:0} - Rectangle { id:bottom; color: "black"; width: 3; height: 1; x: -1; anchors.bottom: parent.bottom;} - opacity: 1 - opacity: SequentialAnimation { running: cPage.parent.focus == true; repeat: true; - NumberAnimation { properties: "opacity"; to: 1; duration: 500; easing.type: "InQuad"} - NumberAnimation { properties: "opacity"; to: 0; duration: 500; easing.type: "OutQuad"} - } - } - width: 1; - } - } - ] - width: 400 - height: 200 - color: "white" - TextEdit { id: mainText - text: "Hello World" - cursorDelegate: cursorA - focus: true - font.pixelSize: 28 - selectionColor: "lightsteelblue" - selectedTextColor: "deeppink" - color: "forestgreen" - anchors.centerIn: parent - } -} diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/wrap.qml b/tests/auto/declarative/visual/qdeclarativetextedit/wrap.qml deleted file mode 100644 index f9fe025..0000000 --- a/tests/auto/declarative/visual/qdeclarativetextedit/wrap.qml +++ /dev/null @@ -1,21 +0,0 @@ -import Qt 4.6 - -Item { - height:400 - width: 200 - TextEdit { - width: 200 - height: 200 - wrap: true - focus: true - } - //With QTBUG-6273 only the bottom one would be wrapped - TextEdit { - width: 200 - height: 200 - wrap: true - text: "This is a test that text edit wraps correctly." - y:200 - } - -} diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/cursorDelegate.qml b/tests/auto/declarative/visual/qdeclarativetextinput/cursorDelegate.qml deleted file mode 100644 index 6a4e7fa..0000000 --- a/tests/auto/declarative/visual/qdeclarativetextinput/cursorDelegate.qml +++ /dev/null @@ -1,35 +0,0 @@ -import Qt 4.6 - Rectangle { - resources: [ - Component { id: cursorA - Item { id: cPage; - x: Behavior { NumberAnimation { } } - y: Behavior { NumberAnimation { } } - height: Behavior { NumberAnimation { duration: 200 } } - Rectangle { id: cRectangle; color: "black"; y: 1; width: 1; height: parent.height-2; - Rectangle { id:top; color: "black"; width: 3; height: 1; x: -1; y:0} - Rectangle { id:bottom; color: "black"; width: 3; height: 1; x: -1; anchors.bottom: parent.bottom;} - opacity: 1 - opacity: SequentialAnimation { running: cPage.parent.focus == true; repeat: true; - NumberAnimation { properties: "opacity"; to: 1; duration: 500; easing.type: "InQuad"} - NumberAnimation { properties: "opacity"; to: 0; duration: 500; easing.type: "OutQuad"} - } - } - width: 1; - } - } - ] - width: 400 - height: 200 - color: "white" - TextInput { id: mainText - text: "Hello World" - cursorDelegate: cursorA - focus: true - font.pixelSize: 28 - selectionColor: "lightsteelblue" - selectedTextColor: "deeppink" - color: "forestgreen" - anchors.centerIn: parent - } -} diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.0.png b/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.0.png Binary files differdeleted file mode 100644 index 2b45a06..0000000 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.0.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.1.png b/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.1.png Binary files differdeleted file mode 100644 index 1f5bae0..0000000 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.1.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.2.png b/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.2.png Binary files differdeleted file mode 100644 index cb2b5a4..0000000 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.2.png +++ /dev/null diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.qml b/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.qml deleted file mode 100644 index dd7b291..0000000 --- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.qml +++ /dev/null @@ -1,1043 +0,0 @@ -import Qt.VisualTest 4.6 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 32 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Key { - type: 6 - key: 16777248 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 48 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 64 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 80 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 96 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 112 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 128 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 144 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 160 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 176 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 192 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 208 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 224 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 240 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 256 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 272 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 288 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 304 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 320 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 336 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Frame { - msec: 352 - hash: "b73bd9c2fef8812591fff9f43b73da13" - } - Key { - type: 6 - key: 74 - modifiers: 33554432 - text: "4a" - autorep: false - count: 1 - } - Frame { - msec: 368 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 384 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 400 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 416 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 432 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Key { - type: 7 - key: 74 - modifiers: 33554432 - text: "4a" - autorep: false - count: 1 - } - Frame { - msec: 448 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 464 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 480 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 496 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 512 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 528 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Key { - type: 7 - key: 16777248 - modifiers: 33554432 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 544 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 560 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 576 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 592 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 608 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 624 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 640 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 656 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 672 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Frame { - msec: 688 - hash: "e8b6bdc7d552bb13c5dc2f50b8cf1125" - } - Key { - type: 6 - key: 65 - modifiers: 0 - text: "61" - autorep: false - count: 1 - } - Frame { - msec: 704 - hash: "fbc09d695e0b47aae6e977c13f535bfd" - } - Frame { - msec: 720 - hash: "fbc09d695e0b47aae6e977c13f535bfd" - } - Frame { - msec: 736 - hash: "fbc09d695e0b47aae6e977c13f535bfd" - } - Frame { - msec: 752 - hash: "fbc09d695e0b47aae6e977c13f535bfd" - } - Frame { - msec: 768 - hash: "fbc09d695e0b47aae6e977c13f535bfd" - } - Key { - type: 7 - key: 65 - modifiers: 0 - text: "61" - autorep: false - count: 1 - } - Frame { - msec: 784 - hash: "fbc09d695e0b47aae6e977c13f535bfd" - } - Frame { - msec: 800 - hash: "fbc09d695e0b47aae6e977c13f535bfd" - } - Frame { - msec: 816 - hash: "fbc09d695e0b47aae6e977c13f535bfd" - } - Frame { - msec: 832 - hash: "fbc09d695e0b47aae6e977c13f535bfd" - } - Frame { - msec: 848 - hash: "fbc09d695e0b47aae6e977c13f535bfd" - } - Key { - type: 6 - key: 67 - modifiers: 0 - text: "63" - autorep: false - count: 1 - } - Frame { - msec: 864 - hash: "a4b81c526a5bf8902fde9b8721980977" - } - Frame { - msec: 880 - hash: "a4b81c526a5bf8902fde9b8721980977" - } - Frame { - msec: 896 - hash: "a4b81c526a5bf8902fde9b8721980977" - } - Key { - type: 7 - key: 67 - modifiers: 0 - text: "63" - autorep: false - count: 1 - } - Frame { - msec: 912 - hash: "a4b81c526a5bf8902fde9b8721980977" - } - Frame { - msec: 928 - hash: "a4b81c526a5bf8902fde9b8721980977" - } - Frame { - msec: 944 - hash: "a4b81c526a5bf8902fde9b8721980977" - } - Frame { - msec: 960 - image: "echoMode.0.png" - } - Frame { - msec: 976 - hash: "a4b81c526a5bf8902fde9b8721980977" - } - Key { - type: 6 - key: 75 - modifiers: 0 - text: "6b" - autorep: false - count: 1 - } - Frame { - msec: 992 - hash: "d072aebc2314a149a856634786b208a0" - } - Frame { - msec: 1008 - hash: "d072aebc2314a149a856634786b208a0" - } - Frame { - msec: 1024 - hash: "d072aebc2314a149a856634786b208a0" - } - Frame { - msec: 1040 - hash: "d072aebc2314a149a856634786b208a0" - } - Key { - type: 7 - key: 75 - modifiers: 0 - text: "6b" - autorep: false - count: 1 - } - Frame { - msec: 1056 - hash: "d072aebc2314a149a856634786b208a0" - } - Frame { - msec: 1072 - hash: "d072aebc2314a149a856634786b208a0" - } - Frame { - msec: 1088 - hash: "d072aebc2314a149a856634786b208a0" - } - Frame { - msec: 1104 - hash: "d072aebc2314a149a856634786b208a0" - } - Frame { - msec: 1120 - hash: "d072aebc2314a149a856634786b208a0" - } - Frame { - msec: 1136 - hash: "d072aebc2314a149a856634786b208a0" - } - Frame { - msec: 1152 - hash: "d072aebc2314a149a856634786b208a0" - } - Frame { - msec: 1168 - hash: "d072aebc2314a149a856634786b208a0" - } - Frame { - msec: 1184 - hash: "d072aebc2314a149a856634786b208a0" - } - Frame { - msec: 1200 - hash: "d072aebc2314a149a856634786b208a0" - } - Frame { - msec: 1216 - hash: "d072aebc2314a149a856634786b208a0" - } - Frame { - msec: 1232 - hash: "d072aebc2314a149a856634786b208a0" - } - Key { - type: 6 - key: 68 - modifiers: 0 - text: "64" - autorep: false - count: 1 - } - Frame { - msec: 1248 - hash: "94defec2865529f185d02cfcbfe166cc" - } - Frame { - msec: 1264 - hash: "94defec2865529f185d02cfcbfe166cc" - } - Frame { - msec: 1280 - hash: "94defec2865529f185d02cfcbfe166cc" - } - Key { - type: 7 - key: 68 - modifiers: 0 - text: "64" - autorep: false - count: 1 - } - Frame { - msec: 1296 - hash: "94defec2865529f185d02cfcbfe166cc" - } - Frame { - msec: 1312 - hash: "94defec2865529f185d02cfcbfe166cc" - } - Frame { - msec: 1328 - hash: "94defec2865529f185d02cfcbfe166cc" - } - Key { - type: 6 - key: 65 - modifiers: 0 - text: "61" - autorep: false - count: 1 - } - Frame { - msec: 1344 - hash: "f625a2a82879df96141000e6931d4487" - } - Frame { - msec: 1360 - hash: "f625a2a82879df96141000e6931d4487" - } - Frame { - msec: 1376 - hash: "f625a2a82879df96141000e6931d4487" - } - Frame { - msec: 1392 - hash: "f625a2a82879df96141000e6931d4487" - } - Frame { - msec: 1408 - hash: "f625a2a82879df96141000e6931d4487" - } - Frame { - msec: 1424 - hash: "f625a2a82879df96141000e6931d4487" - } - Frame { - msec: 1440 - hash: "f625a2a82879df96141000e6931d4487" - } - Frame { - msec: 1456 - hash: "f625a2a82879df96141000e6931d4487" - } - Frame { - msec: 1472 - hash: "f625a2a82879df96141000e6931d4487" - } - Key { - type: 7 - key: 65 - modifiers: 0 - text: "61" - autorep: false - count: 1 - } - Frame { - msec: 1488 - hash: "f625a2a82879df96141000e6931d4487" - } - Key { - type: 6 - key: 87 - modifiers: 0 - text: "77" - autorep: false - count: 1 - } - Frame { - msec: 1504 - hash: "1cf29837a4ea63bbb06c15382680d1b6" - } - Frame { - msec: 1520 - hash: "1cf29837a4ea63bbb06c15382680d1b6" - } - Frame { - msec: 1536 - hash: "1cf29837a4ea63bbb06c15382680d1b6" - } - Frame { - msec: 1552 - hash: "1cf29837a4ea63bbb06c15382680d1b6" - } - Key { - type: 7 - key: 87 - modifiers: 0 - text: "77" - autorep: false - count: 1 - } - Frame { - msec: 1568 - hash: "1cf29837a4ea63bbb06c15382680d1b6" - } - Frame { - msec: 1584 - hash: "1cf29837a4ea63bbb06c15382680d1b6" - } - Frame { - msec: 1600 - hash: "1cf29837a4ea63bbb06c15382680d1b6" - } - Frame { - msec: 1616 - hash: "1cf29837a4ea63bbb06c15382680d1b6" - } - Frame { - msec: 1632 - hash: "1cf29837a4ea63bbb06c15382680d1b6" - } - Frame { - msec: 1648 - hash: "1cf29837a4ea63bbb06c15382680d1b6" - } - Key { - type: 6 - key: 83 - modifiers: 0 - text: "73" - autorep: false - count: 1 - } - Frame { - msec: 1664 - hash: "6eabb6d168ecc9ac604dcf2db0075380" - } - Frame { - msec: 1680 - hash: "6eabb6d168ecc9ac604dcf2db0075380" - } - Frame { - msec: 1696 - hash: "6eabb6d168ecc9ac604dcf2db0075380" - } - Frame { - msec: 1712 - hash: "6eabb6d168ecc9ac604dcf2db0075380" - } - Frame { - msec: 1728 - hash: "6eabb6d168ecc9ac604dcf2db0075380" - } - Key { - type: 6 - key: 32 - modifiers: 0 - text: "20" - autorep: false - count: 1 - } - Frame { - msec: 1744 - hash: "6eabb6d168ecc9ac604dcf2db0075380" - } - Key { - type: 7 - key: 83 - modifiers: 0 - text: "73" - autorep: false - count: 1 - } - Frame { - msec: 1760 - hash: "6eabb6d168ecc9ac604dcf2db0075380" - } - Frame { - msec: 1776 - hash: "6eabb6d168ecc9ac604dcf2db0075380" - } - Frame { - msec: 1792 - hash: "6eabb6d168ecc9ac604dcf2db0075380" - } - Key { - type: 7 - key: 32 - modifiers: 0 - text: "20" - autorep: false - count: 1 - } - Frame { - msec: 1808 - hash: "6eabb6d168ecc9ac604dcf2db0075380" - } - Frame { - msec: 1824 - hash: "6eabb6d168ecc9ac604dcf2db0075380" - } - Frame { - msec: 1840 - hash: "6eabb6d168ecc9ac604dcf2db0075380" - } - Frame { - msec: 1856 - hash: "6eabb6d168ecc9ac604dcf2db0075380" - } - Key { - type: 6 - key: 76 - modifiers: 0 - text: "6c" - autorep: false - count: 1 - } - Frame { - msec: 1872 - hash: "cb2dc1c4fc4e213841b873561f404a4f" - } - Frame { - msec: 1888 - hash: "cb2dc1c4fc4e213841b873561f404a4f" - } - Frame { - msec: 1904 - hash: "cb2dc1c4fc4e213841b873561f404a4f" - } - Frame { - msec: 1920 - image: "echoMode.1.png" - } - Key { - type: 7 - key: 76 - modifiers: 0 - text: "6c" - autorep: false - count: 1 - } - Frame { - msec: 1936 - hash: "cb2dc1c4fc4e213841b873561f404a4f" - } - Frame { - msec: 1952 - hash: "cb2dc1c4fc4e213841b873561f404a4f" - } - Frame { - msec: 1968 - hash: "cb2dc1c4fc4e213841b873561f404a4f" - } - Frame { - msec: 1984 - hash: "cb2dc1c4fc4e213841b873561f404a4f" - } - Frame { - msec: 2000 - hash: "cb2dc1c4fc4e213841b873561f404a4f" - } - Frame { - msec: 2016 - hash: "cb2dc1c4fc4e213841b873561f404a4f" - } - Key { - type: 6 - key: 79 - modifiers: 0 - text: "6f" - autorep: false - count: 1 - } - Frame { - msec: 2032 - hash: "c2aff1ebdee69cca7dc67a102fce5e8e" - } - Frame { - msec: 2048 - hash: "c2aff1ebdee69cca7dc67a102fce5e8e" - } - Key { - type: 7 - key: 79 - modifiers: 0 - text: "6f" - autorep: false - count: 1 - } - Frame { - msec: 2064 - hash: "c2aff1ebdee69cca7dc67a102fce5e8e" - } - Frame { - msec: 2080 - hash: "c2aff1ebdee69cca7dc67a102fce5e8e" - } - Key { - type: 6 - key: 86 - modifiers: 0 - text: "76" - autorep: false - count: 1 - } - Frame { - msec: 2096 - hash: "c82441813af6ff577687f29f6a09da38" - } - Frame { - msec: 2112 - hash: "c82441813af6ff577687f29f6a09da38" - } - Frame { - msec: 2128 - hash: "c82441813af6ff577687f29f6a09da38" - } - Frame { - msec: 2144 - hash: "c82441813af6ff577687f29f6a09da38" - } - Key { - type: 6 - key: 69 - modifiers: 0 - text: "65" - autorep: false - count: 1 - } - Key { - type: 7 - key: 86 - modifiers: 0 - text: "76" - autorep: false - count: 1 - } - Frame { - msec: 2160 - hash: "d7da9862980b99e97a1fcd1b5c4c976f" - } - Frame { - msec: 2176 - hash: "d7da9862980b99e97a1fcd1b5c4c976f" - } - Frame { - msec: 2192 - hash: "d7da9862980b99e97a1fcd1b5c4c976f" - } - Frame { - msec: 2208 - hash: "d7da9862980b99e97a1fcd1b5c4c976f" - } - Key { - type: 6 - key: 32 - modifiers: 0 - text: "20" - autorep: false - count: 1 - } - Frame { - msec: 2224 - hash: "d7da9862980b99e97a1fcd1b5c4c976f" - } - Key { - type: 7 - key: 69 - modifiers: 0 - text: "65" - autorep: false - count: 1 - } - Frame { - msec: 2240 - hash: "d7da9862980b99e97a1fcd1b5c4c976f" - } - Frame { - msec: 2256 - hash: "d7da9862980b99e97a1fcd1b5c4c976f" - } - Frame { - msec: 2272 - hash: "d7da9862980b99e97a1fcd1b5c4c976f" - } - Frame { - msec: 2288 - hash: "d7da9862980b99e97a1fcd1b5c4c976f" - } - Frame { - msec: 2304 - hash: "d7da9862980b99e97a1fcd1b5c4c976f" - } - Key { - type: 7 - key: 32 - modifiers: 0 - text: "20" - autorep: false - count: 1 - } - Frame { - msec: 2320 - hash: "d7da9862980b99e97a1fcd1b5c4c976f" - } - Frame { - msec: 2336 - hash: "d7da9862980b99e97a1fcd1b5c4c976f" - } - Key { - type: 6 - key: 77 - modifiers: 0 - text: "6d" - autorep: false - count: 1 - } - Frame { - msec: 2352 - hash: "8f36e26d8685fe55e7a1dd294188f649" - } - Frame { - msec: 2368 - hash: "8f36e26d8685fe55e7a1dd294188f649" - } - Frame { - msec: 2384 - hash: "8f36e26d8685fe55e7a1dd294188f649" - } - Frame { - msec: 2400 - hash: "8f36e26d8685fe55e7a1dd294188f649" - } - Frame { - msec: 2416 - hash: "8f36e26d8685fe55e7a1dd294188f649" - } - Frame { - msec: 2432 - hash: "8f36e26d8685fe55e7a1dd294188f649" - } - Key { - type: 7 - key: 77 - modifiers: 0 - text: "6d" - autorep: false - count: 1 - } - Frame { - msec: 2448 - hash: "8f36e26d8685fe55e7a1dd294188f649" - } - Frame { - msec: 2464 - hash: "8f36e26d8685fe55e7a1dd294188f649" - } - Frame { - msec: 2480 - hash: "8f36e26d8685fe55e7a1dd294188f649" - } - Frame { - msec: 2496 - hash: "8f36e26d8685fe55e7a1dd294188f649" - } - Key { - type: 6 - key: 89 - modifiers: 0 - text: "79" - autorep: false - count: 1 - } - Frame { - msec: 2512 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2528 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2544 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Key { - type: 7 - key: 89 - modifiers: 0 - text: "79" - autorep: false - count: 1 - } - Frame { - msec: 2560 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2576 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2592 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2608 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2624 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2640 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2656 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2672 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2688 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2704 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2720 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2736 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2752 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2768 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2784 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2800 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2816 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2832 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2848 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2864 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2880 - image: "echoMode.2.png" - } - Frame { - msec: 2896 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2912 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2928 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2944 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2960 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2976 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 2992 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 3008 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 3024 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 3040 - hash: "316f2ba46d059755576e6822dc77afb2" - } - Frame { - msec: 3056 - hash: "316f2ba46d059755576e6822dc77afb2" - } -} diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/echoMode.qml b/tests/auto/declarative/visual/qdeclarativetextinput/echoMode.qml deleted file mode 100644 index b0b50e4..0000000 --- a/tests/auto/declarative/visual/qdeclarativetextinput/echoMode.qml +++ /dev/null @@ -1,10 +0,0 @@ -import Qt 4.6 - -Item{ - height: 50; width: 200 - Column{ - //Not an exhaustive echo mode test, that's in QLineEdit (since the functionality is in QLineControl) - TextInput{ id: main; focus: true; echoMode: TextInput.Password } - Text{ text: main.text } - } -} diff --git a/tests/auto/declarative/visual/qfxwebview/autosize/autosize.qml b/tests/auto/declarative/visual/qfxwebview/autosize/autosize.qml deleted file mode 100644 index 74c6844..0000000 --- a/tests/auto/declarative/visual/qfxwebview/autosize/autosize.qml +++ /dev/null @@ -1,60 +0,0 @@ -import Qt 4.6 - -// The WebView size is determined by the width, height, -// preferredWidth, and preferredHeight properties. -Rectangle { - id: rect - color: "white" - width: 200 - height: layout.height - Column { - id: layout - spacing: 2 - WebView { - html: "No width defined." - Rectangle { color: "#10000000" - anchors.fill: parent - } - } - WebView { - width: rect.width - html: "The width is full." - Rectangle { - color: "#10000000" - anchors.fill: parent - } - } - WebView { - width: rect.width/2 - html: "The width is half." - Rectangle { - color: "#10000000" - anchors.fill: parent - } - } - WebView { - preferredWidth: rect.width/2 - html: "The preferredWidth is half." - Rectangle { - color: "#10000000" - anchors.fill: parent - } - } - WebView { - preferredWidth: rect.width/2 - html: "The_preferredWidth_is_half." - Rectangle { - color: "#10000000" - anchors.fill: parent - } - } - WebView { - width: rect.width/2 - html: "The_width_is_half." - Rectangle { - color: "#10000000" - anchors.fill: parent - } - } - } -} diff --git a/tests/auto/declarative/visual/tst_visual.cpp b/tests/auto/declarative/visual/tst_visual.cpp deleted file mode 100644 index cd88e87..0000000 --- a/tests/auto/declarative/visual/tst_visual.cpp +++ /dev/null @@ -1,370 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** No Commercial Usage -** This file contains pre-release code and may not be distributed. -** You may use this file in accordance with the terms and conditions -** contained in the Technology Preview License Agreement accompanying -** this package. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** -** -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#include <qtest.h> -#include <QDeclarativeView> -#include <QApplication> -#include <QLibraryInfo> -#include <QDir> -#include <QDebug> -#include <QProcess> -#include <QFile> - -enum Mode { Record, RecordNoVisuals, Play, TestVisuals, RemoveVisuals, UpdateVisuals, UpdatePlatformVisuals, Test }; - -static QString testdir; -class tst_visual : public QObject -{ - Q_OBJECT -public: - tst_visual(); - - static QString toTestScript(const QString &, Mode=Test); - static QString viewer(); - - static QStringList findQmlFiles(const QDir &d); -private slots: - void visual_data(); - void visual(); - -private: - QString qmlruntime; -}; - - -tst_visual::tst_visual() -{ - qmlruntime = viewer(); -} - -QString tst_visual::viewer() -{ - QString binaries = QLibraryInfo::location(QLibraryInfo::BinariesPath); - - QString qmlruntime; - -#if defined(Q_WS_MAC) - qmlruntime = QDir(binaries).absoluteFilePath("qml.app/Contents/MacOS/qml"); -#elif defined(Q_WS_WIN) - qmlruntime = QDir(binaries).absoluteFilePath("qml.exe"); -#else - qmlruntime = QDir(binaries).absoluteFilePath("qml"); -#endif - - return qmlruntime; -} - -void tst_visual::visual_data() -{ - QTest::addColumn<QString>("file"); - QTest::addColumn<QString>("testdata"); - - QStringList files; - files << findQmlFiles(QDir(QT_TEST_SOURCE_DIR)); - - foreach (const QString &file, files) { - QString testdata = toTestScript(file); - if (testdata.isEmpty()) - continue; - - QTest::newRow(file.toLatin1().constData()) << file << testdata; - } -} - -void tst_visual::visual() -{ - QFETCH(QString, file); - QFETCH(QString, testdata); - - QStringList arguments; - arguments << "-script" << testdata - << "-scriptopts" << "play,testimages,testerror,exitoncomplete,exitonfailure" - << file; - QProcess p; - p.start(qmlruntime, arguments); - QVERIFY(p.waitForFinished()); - if (p.exitCode() != 0) - qDebug() << p.readAllStandardError(); - QCOMPARE(p.exitStatus(), QProcess::NormalExit); - QCOMPARE(p.exitCode(), 0); -} - -QString tst_visual::toTestScript(const QString &file, Mode mode) -{ - if (!file.endsWith(".qml")) - return QString(); - - int index = file.lastIndexOf(QDir::separator()); - if (index == -1) - return QString(); - - const char* platformsuffix=0; // platforms with different fonts -#if defined(Q_WS_MACX) - platformsuffix = "-MAC"; -#elif defined(Q_WS_X11) - platformsuffix = "-X11"; -#elif defined(Q_WS_WIN32) - platformsuffix = "-WIN"; -#elif defined(Q_WS_QWS) - platformsuffix = "-QWS"; -#elif defined(Q_WS_S60) - platformsuffix = "-S60"; -#endif - - QString testdata = file.left(index + 1) + - QString("data"); - QString testname = file.mid(index + 1, file.length() - index - 5); - - if (platformsuffix && (mode == UpdatePlatformVisuals || QFile::exists(testdata+QLatin1String(platformsuffix)+QDir::separator()+testname+".qml"))) { - QString platformdir = testdata + QLatin1String(platformsuffix); - if (mode == UpdatePlatformVisuals) { - Q_ASSERT(QDir().mkpath(platformdir)); - // Copy from base - QDir dir(testdata,testname+".*"); - dir.setFilter(QDir::Files); - QFileInfoList list = dir.entryInfoList(); - for (int i = 0; i < list.size(); ++i) { - QFile in(list.at(i).filePath()); - Q_ASSERT(in.open(QIODevice::ReadOnly)); - QFile out(platformdir + QDir::separator() + list.at(i).fileName()); - Q_ASSERT(out.open(QIODevice::WriteOnly)); - out.write(in.readAll()); - } - } - testdata = platformdir; - } - - testdata += QDir::separator() + testname; - - return testdata; -} - -QStringList tst_visual::findQmlFiles(const QDir &d) -{ - QStringList rv; - - QStringList files = d.entryList(QStringList() << QLatin1String("*.qml"), - QDir::Files); - foreach (const QString &file, files) { - if (file.at(0).isLower()) { - rv << d.absoluteFilePath(file); - } - } - - QStringList dirs = d.entryList(QDir::Dirs | QDir::NoDotAndDotDot | - QDir::NoSymLinks); - foreach (const QString &dir, dirs) { - if (dir.left(4) == "data") - continue; - - QDir sub = d; - sub.cd(dir); - rv << findQmlFiles(sub); - } - - return rv; -} - -void action(Mode mode, const QString &file) -{ - Q_ASSERT(mode != Test); - - QString testdata = tst_visual::toTestScript(file,mode); - - QStringList arguments; - switch (mode) { - case Test: - // Don't run qml - break; - case Record: - arguments << "-script" << testdata - << "-scriptopts" << "record,testimages,saveonexit" - << file; - break; - case RecordNoVisuals: - arguments << "-script" << testdata - << "-scriptopts" << "record,saveonexit" - << file; - break; - case Play: - arguments << "-script" << testdata - << "-scriptopts" << "play,testimages,testerror,exitoncomplete" - << file; - break; - case TestVisuals: - arguments << "-script" << testdata - << "-scriptopts" << "play" - << file; - break; - case UpdateVisuals: - case UpdatePlatformVisuals: - arguments << "-script" << testdata - << "-scriptopts" << "play,record,testimages,exitoncomplete,saveonexit" - << file; - break; - case RemoveVisuals: - arguments << "-script" << testdata - << "-scriptopts" << "play,record,exitoncomplete,saveonexit" - << file; - break; - } - if (!arguments.isEmpty()) { - QProcess p; - p.setProcessChannelMode(QProcess::ForwardedChannels); - p.start(tst_visual::viewer(), arguments); - p.waitForFinished(); - } -} - -void usage() -{ - fprintf(stderr, "\n"); - fprintf(stderr, "QML related options\n"); - fprintf(stderr, " -listtests : list all the tests seen by tst_visual, and then exit immediately\n"); - fprintf(stderr, " -record file : record new test data for file\n"); - fprintf(stderr, " -recordnovisuals file : record new test data for file, but ignore visuals\n"); - fprintf(stderr, " -play file : playback test data for file, printing errors\n"); - fprintf(stderr, " -testvisuals file : playback test data for file, without errors\n"); - fprintf(stderr, " -updatevisuals file : playback test data for file, accept new visuals for file\n"); - fprintf(stderr, " -updateplatformvisuals file : playback test data for file, accept new visuals for file only on current platform (MacOSX/Win32/X11/QWS/S60)\n"); - fprintf(stderr, "\n" - "Visual tests are recordings of manual interactions with a QML test,\n" - "that can then be run automatically. To record a new test, run:\n" - "\n" - " tst_visual -record yourtestdir/yourtest.qml\n" - "\n" - "This records everything you do (try to keep it short).\n" - "To play back a test, run:\n" - "\n" - " tst_visual -play yourtestdir/yourtest.qml\n" - "\n" - "Your test may include QML code to test itself, reporting any error to an\n" - "'error' property on the root object - the test will fail if this property\n" - "gets set to anything non-empty.\n" - "\n" - "If your test changes slightly but is still correct (check with -play), you\n" - "can update the visuals by running:\n" - "\n" - " tst_visual -updatevisuals yourtestdir/yourtest.qml\n" - "\n" - "If your test includes platform-sensitive visuals (eg. text in system fonts),\n" - "you should create platform-specific visuals, using -updateplatformvisuals\n" - "instead.\n" - "\n" - "If you ONLY wish to use the 'error' property, you can record your test with\n" - "-recordnovisuals, or discard existing visuals with -removevisuals; the test\n" - "will then only fail on a syntax error, crash, or non-empty 'error' property.\n" - ); -} - -int main(int argc, char **argv) -{ - QApplication app(argc, argv); - - Mode mode = Test; - QString file; - bool showHelp = false; - - int newArgc = 1; - char **newArgv = new char*[argc]; - newArgv[0] = argv[0]; - - for (int ii = 1; ii < argc; ++ii) { - QString arg(argv[ii]); - if (arg == "-play" && (ii + 1) < argc) { - mode = Play; - file = argv[++ii]; - } else if (arg == "-record" && (ii + 1) < argc) { - mode = Record; - file = argv[++ii]; - } else if (arg == "-recordnovisuals" && (ii + 1) < argc) { - mode = RecordNoVisuals; - file = argv[++ii]; - } else if (arg == "-testvisuals" && (ii + 1) < argc) { - mode = TestVisuals; - file = argv[++ii]; - } else if (arg == "-removevisuals" && (ii + 1) < argc) { - mode = RemoveVisuals; - file = argv[++ii]; - } else if (arg == "-updatevisuals" && (ii + 1) < argc) { - mode = UpdateVisuals; - file = argv[++ii]; - } else if (arg == "-updateplatformvisuals" && (ii + 1) < argc) { - mode = UpdatePlatformVisuals; - file = argv[++ii]; - } else { - newArgv[newArgc++] = argv[ii]; - } - - if (arg == "-help" || arg == "-?" || arg == "--help") { - atexit(usage); - showHelp = true; - } - - if (arg == "-listtests") { - QStringList list = tst_visual::findQmlFiles(QDir(QT_TEST_SOURCE_DIR)); - foreach (QString test, list) { - qWarning() << qPrintable(test); - } - return 0; - } - } - - if (mode == Test || showHelp) { - tst_visual tc; - return QTest::qExec(&tc, newArgc, newArgv); - } else { - if (!file.endsWith(QLatin1String(".qml"))) { - qWarning() << "Error: Invalid file name (must end in .qml)"; - return -1; - } - QDir d = QDir::current(); - QString absFile = d.absoluteFilePath(file); - if (!QFile::exists(absFile)) { - qWarning() << "Error: File does not exist"; - return -1; - } - - action(mode, absFile); - return 0; - } -} - -#include "tst_visual.moc" diff --git a/tests/auto/declarative/visual/visual.pro b/tests/auto/declarative/visual/visual.pro deleted file mode 100644 index 7ae2bed..0000000 --- a/tests/auto/declarative/visual/visual.pro +++ /dev/null @@ -1,7 +0,0 @@ -load(qttest_p4) -contains(QT_CONFIG,declarative): QT += declarative -macx:CONFIG -= app_bundle - -SOURCES += tst_visual.cpp - -DEFINES += QT_TEST_SOURCE_DIR=\"\\\"$$PWD\\\"\" diff --git a/tests/auto/declarative/visual/webview/embedding/egg.qml b/tests/auto/declarative/visual/webview/embedding/egg.qml deleted file mode 100644 index fe1bb70..0000000 --- a/tests/auto/declarative/visual/webview/embedding/egg.qml +++ /dev/null @@ -1,26 +0,0 @@ -import Qt 4.6 - -Item { - property var period : 250 - property var color : "black" - id: root - - Item { - x: root.width/2 - y: root.height/2 - Rectangle { - radius: width/2 - color: root.color - x: -width/2 - y: -height/2 - width: root.width*1.5 - height: root.height*1.5 - } - rotation: NumberAnimation { - from: 0 - to: 360 - repeat: true - duration: root.period - } - } -} diff --git a/tests/auto/declarative/visual/webview/embedding/nesting.qml b/tests/auto/declarative/visual/webview/embedding/nesting.qml deleted file mode 100644 index 0d76579..0000000 --- a/tests/auto/declarative/visual/webview/embedding/nesting.qml +++ /dev/null @@ -1,8 +0,0 @@ -import Qt 4.6 - -WebView { - width: 300 - height: 200 - url: "nesting.html" - settings.pluginsEnabled: true -} diff --git a/tests/auto/declarative/visual/webview/javascript/evaluateJavaScript.qml b/tests/auto/declarative/visual/webview/javascript/evaluateJavaScript.qml deleted file mode 100644 index 78d5cfc..0000000 --- a/tests/auto/declarative/visual/webview/javascript/evaluateJavaScript.qml +++ /dev/null @@ -1,31 +0,0 @@ -import Qt 4.6 - -Column { - WebView { - id: webview - width: 200 - height: 200 - url: "test-objects.html" - javaScriptWindowObjects: - QtObject { - property string text: btntext.text - WebView.windowObjectName: "qmltext" - onTextChanged: { - webview.evaluateJavaScript("{document.getElementById('button').value=window.qmltext.text}") - } - } - } - Row { - Text { text: "Input:" } - Rectangle { - width: btntext.width+10 - height: btntext.height+10 - border.color: "black" - TextInput { - id: btntext - text: "Blah" - cursorDelegate: Rectangle { width: 1; color: "red" } - } - } - } -} diff --git a/tests/auto/declarative/visual/webview/javascript/windowObjects.qml b/tests/auto/declarative/visual/webview/javascript/windowObjects.qml deleted file mode 100644 index a41de9a..0000000 --- a/tests/auto/declarative/visual/webview/javascript/windowObjects.qml +++ /dev/null @@ -1,26 +0,0 @@ -import Qt 4.6 - -Column { - WebView { - width: 200 - height: 200 - url: "test-objects.html" - javaScriptWindowObjects: - QtObject { - property string text: btntext.text - WebView.windowObjectName: "qmltext" - } - } - Row { - Text { text: "Input:" } - Rectangle { - width: btntext.width+10 - height: btntext.height+10 - border.color: "black" - TextInput { - id: btntext - text: "Blah" - } - } - } -} diff --git a/tests/auto/declarative/visual/webview/settings/fontFamily.qml b/tests/auto/declarative/visual/webview/settings/fontFamily.qml deleted file mode 100644 index 2bb2a53..0000000 --- a/tests/auto/declarative/visual/webview/settings/fontFamily.qml +++ /dev/null @@ -1,16 +0,0 @@ -import Qt 4.6 - -WebView { - id: web - width: 200 - height: 200 - Column { - anchors.fill: parent - Text { text: "standard: " + web.settings.standardFontFamily } - Text { text: "fixed: " + web.settings.fixedFontFamily } - Text { text: "serif: " + web.settings.serifFontFamily } - Text { text: "sansserif: " + web.settings.sansSerifFontFamily } - Text { text: "cursive: " + web.settings.cursiveFontFamily } - Text { text: "fantasy: " + web.settings.fantasyFontFamily } - } -} diff --git a/tests/auto/declarative/visual/webview/settings/fontSize.qml b/tests/auto/declarative/visual/webview/settings/fontSize.qml deleted file mode 100644 index b970783..0000000 --- a/tests/auto/declarative/visual/webview/settings/fontSize.qml +++ /dev/null @@ -1,70 +0,0 @@ -import Qt 4.6 - -Grid { - columns: 3 - Rectangle { - Text { color: "green"; text: "Normal" } - border.color: "black" - width: 200 - height: 200 - WebView { - anchors.fill: parent - url: "test.html" - } - } - Rectangle { - Text { color: "green"; text: "Big" } - border.color: "black" - width: 200 - height: 200 - WebView { - anchors.fill: parent - url: "test.html" - settings.minimumFontSize: 20 - } - } - Rectangle { - Text { color: "green"; text: "Big (logical)" } - border.color: "black" - width: 200 - height: 200 - WebView { - anchors.fill: parent - url: "test.html" - settings.minimumLogicalFontSize: 20 - } - } - Rectangle { - Text { color: "green"; text: "Bigger" } - border.color: "black" - width: 200 - height: 200 - WebView { - anchors.fill: parent - url: "test.html" - settings.minimumFontSize: 30 - } - } - Rectangle { - Text { color: "green"; text: "Small (except fixed)" } - border.color: "black" - width: 200 - height: 200 - WebView { - anchors.fill: parent - url: "test.html" - settings.defaultFontSize: 8 - } - } - Rectangle { - Text { color: "green"; text: "Small fixed" } - border.color: "black" - width: 200 - height: 200 - WebView { - anchors.fill: parent - url: "test.html" - settings.defaultFixedFontSize: 8 - } - } -} diff --git a/tests/auto/declarative/visual/webview/settings/noAutoLoadImages.qml b/tests/auto/declarative/visual/webview/settings/noAutoLoadImages.qml deleted file mode 100644 index 72e672d..0000000 --- a/tests/auto/declarative/visual/webview/settings/noAutoLoadImages.qml +++ /dev/null @@ -1,20 +0,0 @@ -import Qt 4.6 - -Grid { - columns: 2 - Rectangle { - Text { id: label; x:10; y:170; color: "green"; text: "No image" } - border.color: "black" - width: 200 - height: 200 - WebView { - anchors.fill: parent - settings.autoLoadImages: false - url: "test-img.html" - MouseArea { - anchors.fill: parent - onClicked: { parent.settings.autoLoadImages=true; label.text=""; parent.reload.trigger() } - } - } - } -} diff --git a/tests/auto/declarative/visual/webview/settings/setFontFamily.qml b/tests/auto/declarative/visual/webview/settings/setFontFamily.qml deleted file mode 100644 index 26deed8..0000000 --- a/tests/auto/declarative/visual/webview/settings/setFontFamily.qml +++ /dev/null @@ -1,10 +0,0 @@ -import Qt 4.6 - -WebView { - url: "test.html" - width: 300 - height: 300 - settings.standardFontFamily: font.name - // WebKit doesn't seem to honour any other FontFamily settings - FontLoader { id: font; source: "tarzeau_ocr_a.ttf" } -} diff --git a/tests/auto/declarative/visual/webview/zooming/pageWidth.qml b/tests/auto/declarative/visual/webview/zooming/pageWidth.qml deleted file mode 100644 index 86dd7d2..0000000 --- a/tests/auto/declarative/visual/webview/zooming/pageWidth.qml +++ /dev/null @@ -1,9 +0,0 @@ -import Qt 4.6 - -WebView { - width: 200 - height: 250 - url: "resolution.html" - webPageWidth: 400 - preferredWidth: 200 -} diff --git a/tests/auto/declarative/visual/webview/zooming/renderControl.qml b/tests/auto/declarative/visual/webview/zooming/renderControl.qml deleted file mode 100644 index 0c8bb3b..0000000 --- a/tests/auto/declarative/visual/webview/zooming/renderControl.qml +++ /dev/null @@ -1,20 +0,0 @@ -import Qt 4.6 - -Rectangle { - width: 200 - height: 250 - clip: true - WebView { - id: webview - width: 400 - url: "renderControl.html" - x: SequentialAnimation { - repeat: true - NumberAnimation { from: 100; to: 0; duration: 200 } - PropertyAction { target: webview; property: "renderingEnabled"; value: false } - NumberAnimation { from: 0; to: -100; duration: 200 } - PropertyAction { target: webview; property: "renderingEnabled"; value: true } - NumberAnimation { from: -100; to: 100; duration: 400 } - } - } -} diff --git a/tests/auto/declarative/visual/webview/zooming/resolution.qml b/tests/auto/declarative/visual/webview/zooming/resolution.qml deleted file mode 100644 index a9d4e3a..0000000 --- a/tests/auto/declarative/visual/webview/zooming/resolution.qml +++ /dev/null @@ -1,16 +0,0 @@ -import Qt 4.6 - -WebView { - width: 200 * zoomFactor - height: 250 * zoomFactor - scale: 1/zoomFactor - url: "resolution.html" - zoomFactor: - SequentialAnimation { - repeat: true - NumberAnimation { from: 1; to: 0.25; duration: 2000 } - NumberAnimation { from: 0.25; to: 1; duration: 2000 } - NumberAnimation { from: 1; to: 5; duration: 2000 } - NumberAnimation { from: 5; to: 1; duration: 2000 } - } -} diff --git a/tests/auto/declarative/visual/webview/zooming/zoomTextOnly.qml b/tests/auto/declarative/visual/webview/zooming/zoomTextOnly.qml deleted file mode 100644 index 4455b43..0000000 --- a/tests/auto/declarative/visual/webview/zooming/zoomTextOnly.qml +++ /dev/null @@ -1,14 +0,0 @@ -import Qt 4.6 - -WebView { - width: 200 - height: 250 - url: "zoomTextOnly.html" - settings.zoomTextOnly: true - zoomFactor: - SequentialAnimation { - repeat: true - NumberAnimation { from: 2; to: 0.25; duration: 1000 } - NumberAnimation { from: 0.25; to: 2; duration: 1000 } - } -} diff --git a/tests/auto/declarative/visual/webview/zooming/zooming.qml b/tests/auto/declarative/visual/webview/zooming/zooming.qml deleted file mode 100644 index 0ea9131..0000000 --- a/tests/auto/declarative/visual/webview/zooming/zooming.qml +++ /dev/null @@ -1,17 +0,0 @@ -import Qt 4.6 - -// Note that zooming is better done using zoomFactor and careful -// control of rendering to avoid excessive re-rendering during -// zoom animations. This test is written for simplicity. -WebView { - width: 200 - height: 250 - x: Behavior { NumberAnimation { } } - y: Behavior { NumberAnimation { } } - scale: Behavior { NumberAnimation { } } - url: "zooming.html" - preferredWidth: width - preferredHeight: height - onDoubleClick: {console.log(clickX,clickY);heuristicZoom(clickX,clickY,2)} - onZoomTo: {console.log(zoom);scale=zoom;x=width/2-centerX;y=height/2-centerY} -} |