summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config.tests/unix/pulseaudio/pulseaudio.cpp (renamed from config.tests/unix/pulseaudio/pulseaudiotest.cpp)19
-rw-r--r--config.tests/unix/pulseaudio/pulseaudio.pro7
-rwxr-xr-xconfigure82
-rw-r--r--demos/declarative/minehunt/minehunt.pro16
-rw-r--r--demos/declarative/minehunt/minehunt.qml2
-rw-r--r--demos/declarative/photoviewer/photoviewer.qml2
-rw-r--r--demos/declarative/samegame/samegame.qml2
-rw-r--r--demos/declarative/twitter/twitter.qml2
-rw-r--r--demos/multimedia/player/videowidget.cpp6
-rw-r--r--demos/symbianpkgrules.pri3
-rw-r--r--dist/changes-4.6.38
-rw-r--r--doc/src/declarative/advtutorial.qdoc413
-rw-r--r--doc/src/declarative/declarativeui.qdoc1
-rw-r--r--doc/src/declarative/elements.qdoc33
-rw-r--r--doc/src/declarative/examples.qdoc10
-rw-r--r--doc/src/declarative/extending.qdoc16
-rw-r--r--doc/src/declarative/focus.qdoc2
-rw-r--r--doc/src/declarative/globalobject.qdoc79
-rw-r--r--doc/src/declarative/javascriptblocks.qdoc2
-rw-r--r--doc/src/declarative/modules.qdoc155
-rw-r--r--doc/src/declarative/network.qdoc4
-rw-r--r--doc/src/declarative/pics/qmldebugger-creator.pngbin170972 -> 0 bytes
-rw-r--r--doc/src/declarative/qdeclarativedebugging.qdoc61
-rw-r--r--doc/src/declarative/qdeclarativei18n.qdoc8
-rw-r--r--doc/src/declarative/qmlruntime.qdoc98
-rw-r--r--doc/src/declarative/scope.qdoc2
-rw-r--r--doc/src/declarative/tutorial.qdoc10
-rw-r--r--doc/src/development/qmake-manual.qdoc18
-rw-r--r--doc/src/frameworks-technologies/activeqt.qdoc18
-rw-r--r--doc/src/modules.qdoc12
-rw-r--r--doc/src/snippets/code/doc_src_deployment.qdoc7
-rw-r--r--doc/src/snippets/code/doc_src_qmake-manual.qdoc4
-rw-r--r--doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp1
-rw-r--r--doc/src/snippets/declarative/flipable.qml37
-rw-r--r--examples/declarative/animations/property-animation.qml4
-rw-r--r--examples/declarative/behaviors/SideRect.qml (renamed from examples/declarative/behaviours/SideRect.qml)7
-rw-r--r--examples/declarative/behaviors/behavior-example.qml (renamed from examples/declarative/behaviours/behavior-example.qml)45
-rw-r--r--examples/declarative/clocks/clocks.qml7
-rw-r--r--examples/declarative/clocks/content/Clock.qml4
-rw-r--r--examples/declarative/colorbrowser/colorbrowser.qml101
-rw-r--r--examples/declarative/colorbrowser/dummydata/ColorsModel.qml96
-rw-r--r--examples/declarative/colorbrowser/qml/ColorDelegate.qml114
-rw-r--r--examples/declarative/colorbrowser/qml/box-shadow.pngbin871 -> 0 bytes
-rw-r--r--examples/declarative/colorbrowser/qml/box.pngbin765 -> 0 bytes
-rw-r--r--examples/declarative/declarative.pro11
-rw-r--r--examples/declarative/extending/attached/person.h2
-rw-r--r--examples/declarative/extending/binding/person.h2
-rw-r--r--examples/declarative/extending/extended/lineedit.h8
-rw-r--r--examples/declarative/extending/grouped/person.h2
-rw-r--r--examples/declarative/extending/signal/person.h2
-rw-r--r--examples/declarative/extending/valuesource/person.h2
-rw-r--r--examples/declarative/flipable/back.pngbin5048 -> 0 bytes
-rw-r--r--examples/declarative/flipable/content/5_heart.pngbin0 -> 3872 bytes
-rw-r--r--examples/declarative/flipable/content/9_club.pngbin0 -> 6135 bytes
-rw-r--r--examples/declarative/flipable/content/Card.qml38
-rw-r--r--examples/declarative/flipable/content/back.pngbin0 -> 1418 bytes
-rw-r--r--examples/declarative/flipable/flipable-example.qml40
-rw-r--r--examples/declarative/flipable/front.pngbin6431 -> 0 bytes
-rw-r--r--examples/declarative/focus/Core/ContextMenu.qml15
-rw-r--r--examples/declarative/focus/Core/GridMenu.qml54
-rw-r--r--examples/declarative/focus/Core/ListViewDelegate.qml39
-rw-r--r--examples/declarative/focus/Core/ListViews.qml47
-rw-r--r--examples/declarative/focus/Core/images/arrow.pngbin0 -> 583 bytes
-rw-r--r--examples/declarative/focus/Core/images/qt-logo.pngbin0 -> 5149 bytes
-rw-r--r--examples/declarative/focus/Core/qmldir4
-rw-r--r--examples/declarative/focus/focus.qml50
-rw-r--r--examples/declarative/gestures/experimental-gestures.qml27
-rw-r--r--examples/declarative/imageprovider/imageprovider-example.qml3
-rw-r--r--examples/declarative/imageprovider/imageprovider.cpp14
-rw-r--r--examples/declarative/imageprovider/imageprovider.pro4
-rw-r--r--examples/declarative/images/content/lemonade.jpgbin0 -> 6645 bytes
-rw-r--r--examples/declarative/images/images.qml69
-rw-r--r--examples/declarative/plugins/plugin.cpp18
-rw-r--r--examples/declarative/plugins/plugins.pro7
-rw-r--r--examples/declarative/progressbar/content/ProgressBar.qml3
-rw-r--r--examples/declarative/proxywidgets/ProxyWidgets/qmldir1
-rw-r--r--examples/declarative/proxywidgets/README4
-rw-r--r--examples/declarative/proxywidgets/proxywidgets.cpp99
-rw-r--r--examples/declarative/proxywidgets/proxywidgets.pro22
-rw-r--r--examples/declarative/proxywidgets/proxywidgets.qml53
-rw-r--r--examples/declarative/tutorials/helloworld/Cell.qml6
-rw-r--r--examples/declarative/tutorials/helloworld/tutorial2.qml14
-rw-r--r--examples/declarative/tutorials/helloworld/tutorial3.qml19
-rw-r--r--examples/declarative/tutorials/samegame/samegame1/Button.qml4
-rw-r--r--examples/declarative/tutorials/samegame/samegame1/samegame.qml2
-rw-r--r--examples/declarative/tutorials/samegame/samegame2/Button.qml4
-rw-r--r--examples/declarative/tutorials/samegame/samegame2/samegame.js6
-rw-r--r--examples/declarative/tutorials/samegame/samegame2/samegame.qml8
-rw-r--r--examples/declarative/tutorials/samegame/samegame3/Button.qml4
-rw-r--r--examples/declarative/tutorials/samegame/samegame3/Dialog.qml2
-rw-r--r--examples/declarative/tutorials/samegame/samegame3/samegame.js6
-rw-r--r--examples/declarative/tutorials/samegame/samegame3/samegame.qml7
-rw-r--r--examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml2
-rw-r--r--examples/declarative/tutorials/samegame/samegame4/content/Button.qml4
-rw-r--r--examples/declarative/tutorials/samegame/samegame4/content/Dialog.qml2
-rw-r--r--examples/declarative/tutorials/samegame/samegame4/samegame.qml11
-rw-r--r--examples/declarative/webview/alerts.html5
-rw-r--r--examples/declarative/webview/alerts.qml58
-rw-r--r--examples/examples.pro1
-rw-r--r--examples/multimedia/audioinput/audioinput.pro1
-rw-r--r--examples/qtconcurrent/map/main.cpp2
-rw-r--r--examples/symbianpkgrules.pri3
-rw-r--r--imports/.gitignore5
-rw-r--r--imports/Qt/.gitignore2
-rw-r--r--mkspecs/common/symbian/symbian.conf6
-rw-r--r--mkspecs/features/symbian/data_caging_paths.prf1
-rw-r--r--mkspecs/features/symbian/qt.prf12
-rw-r--r--mkspecs/features/symbian/symbian_building.prf4
-rw-r--r--qmake/generators/symbian/symbian_makefile.h8
-rw-r--r--qmake/generators/symbian/symbiancommon.cpp48
-rw-r--r--qmake/generators/symbian/symbiancommon.h2
-rw-r--r--qmake/generators/symbian/symmake.cpp17
-rw-r--r--qmake/generators/symbian/symmake.h3
-rw-r--r--qmake/project.cpp15
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/StructureTransitionTable.h4
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h2
-rw-r--r--src/3rdparty/phonon/CMakeLists.txt6
-rw-r--r--src/3rdparty/phonon/ds9/iodevicereader.cpp3
-rw-r--r--src/3rdparty/phonon/gstreamer/CMakeLists.txt18
-rw-r--r--src/3rdparty/phonon/gstreamer/ConfigureChecks.cmake7
-rw-r--r--src/3rdparty/phonon/gstreamer/audiodataoutput.cpp149
-rw-r--r--src/3rdparty/phonon/gstreamer/audiodataoutput.h90
-rw-r--r--src/3rdparty/phonon/gstreamer/audiooutput.cpp16
-rw-r--r--src/3rdparty/phonon/gstreamer/backend.cpp73
-rw-r--r--src/3rdparty/phonon/gstreamer/backend.h1
-rw-r--r--src/3rdparty/phonon/gstreamer/devicemanager.cpp70
-rw-r--r--src/3rdparty/phonon/gstreamer/devicemanager.h6
-rw-r--r--src/3rdparty/phonon/gstreamer/effectmanager.cpp2
-rw-r--r--src/3rdparty/phonon/gstreamer/glrenderer.cpp2
-rw-r--r--src/3rdparty/phonon/gstreamer/gsthelper.cpp2
-rw-r--r--src/3rdparty/phonon/gstreamer/gstreamer.desktop57
-rw-r--r--src/3rdparty/phonon/gstreamer/medianode.cpp4
-rw-r--r--src/3rdparty/phonon/gstreamer/mediaobject.cpp296
-rw-r--r--src/3rdparty/phonon/gstreamer/mediaobject.h12
-rw-r--r--src/3rdparty/phonon/gstreamer/qwidgetvideosink.h1
-rw-r--r--src/3rdparty/phonon/gstreamer/videowidget.h1
-rw-r--r--src/3rdparty/phonon/gstreamer/x11renderer.cpp3
-rw-r--r--src/3rdparty/phonon/mmf/abstractvideooutput.cpp8
-rw-r--r--src/3rdparty/phonon/mmf/abstractvideoplayer.cpp8
-rw-r--r--src/3rdparty/phonon/mmf/videooutput_dsa.cpp6
-rw-r--r--src/3rdparty/phonon/mmf/videoplayer_dsa.cpp33
-rw-r--r--src/3rdparty/phonon/phonon/CMakeLists.txt35
-rw-r--r--src/3rdparty/phonon/phonon/audiodataoutput.cpp72
-rw-r--r--src/3rdparty/phonon/phonon/audiodataoutput.h135
-rw-r--r--src/3rdparty/phonon/phonon/audiodataoutput_p.h54
-rw-r--r--src/3rdparty/phonon/phonon/audiodataoutputinterface.h50
-rw-r--r--src/3rdparty/phonon/phonon/audiooutput.cpp107
-rw-r--r--src/3rdparty/phonon/phonon/audiooutput.h1
-rw-r--r--src/3rdparty/phonon/phonon/audiooutput_p.h8
-rw-r--r--src/3rdparty/phonon/phonon/audiooutputinterface.h2
-rw-r--r--src/3rdparty/phonon/phonon/backendcapabilities.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/factory.cpp25
-rw-r--r--src/3rdparty/phonon/phonon/factory_p.h7
-rw-r--r--src/3rdparty/phonon/phonon/globalconfig.cpp358
-rw-r--r--src/3rdparty/phonon/phonon/globalconfig.h71
-rw-r--r--src/3rdparty/phonon/phonon/globalconfig_p.h31
-rw-r--r--src/3rdparty/phonon/phonon/mediaobject.cpp12
-rw-r--r--src/3rdparty/phonon/phonon/objectdescription.cpp44
-rw-r--r--src/3rdparty/phonon/phonon/objectdescriptionmodel.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/path.cpp8
-rw-r--r--src/3rdparty/phonon/phonon/phonondefs.h5
-rw-r--r--src/3rdparty/phonon/phonon/pulsesupport.cpp1040
-rw-r--r--src/3rdparty/phonon/phonon/pulsesupport.h78
-rw-r--r--src/3rdparty/phonon/phonon/seekslider.cpp4
-rw-r--r--src/3rdparty/phonon/phonon/seekslider_p.h4
-rw-r--r--src/3rdparty/phonon/phonon/swiftslider.cpp103
-rw-r--r--src/3rdparty/phonon/phonon/swiftslider_p.h68
-rw-r--r--src/3rdparty/phonon/phonon/videowidget.cpp16
-rw-r--r--src/3rdparty/phonon/phonon/videowidget.h1
-rw-r--r--src/3rdparty/phonon/phonon/videowidgetinterface.h13
-rw-r--r--src/3rdparty/phonon/phonon/volumeslider_p.h4
-rw-r--r--src/3rdparty/phonon/qt7/audionode.h2
-rw-r--r--src/3rdparty/phonon/qt7/audionode.mm1
-rw-r--r--src/3rdparty/phonon/qt7/backendinfo.mm13
-rw-r--r--src/3rdparty/phonon/qt7/mediaobject.h40
-rw-r--r--src/3rdparty/phonon/qt7/mediaobject.mm306
-rw-r--r--src/3rdparty/phonon/qt7/mediaobjectaudionode.mm2
-rw-r--r--src/3rdparty/phonon/qt7/quicktimeaudioplayer.mm2
-rw-r--r--src/3rdparty/phonon/qt7/quicktimemetadata.h8
-rw-r--r--src/3rdparty/phonon/qt7/quicktimemetadata.mm43
-rw-r--r--src/3rdparty/phonon/qt7/quicktimevideoplayer.h28
-rw-r--r--src/3rdparty/phonon/qt7/quicktimevideoplayer.mm265
-rw-r--r--src/3rdparty/phonon/qt7/videoframe.mm24
-rw-r--r--src/3rdparty/webkit/.gitattributes4
-rw-r--r--src/3rdparty/webkit/ChangeLog8
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/ChangeLog28
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri6
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp47
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h9
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/StructureTransitionTable.h4
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.cpp132
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.h120
-rw-r--r--src/3rdparty/webkit/VERSION2
-rw-r--r--src/3rdparty/webkit/WebCore/ChangeLog271
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.pro13
-rw-r--r--src/3rdparty/webkit/WebCore/config.h2
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSParser.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizer.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizer.h20
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizerLibxml2.cpp59
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFormElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLImageElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLImageElement.h7
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLParser.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/page/FrameView.cpp75
-rw-r--r--src/3rdparty/webkit/WebCore/page/FrameView.h7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ScrollView.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ScrollView.h3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h4
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.h7
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBlock.h1
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderObject.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderText.cpp11
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp9
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h3
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp36
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/ChangeLog84
-rw-r--r--src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/tst_painting.cpp27
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp67
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp20
-rw-r--r--src/corelib/corelib.pro1
-rw-r--r--src/corelib/io/qdir.cpp2
-rw-r--r--src/corelib/io/qfile.cpp46
-rw-r--r--src/corelib/io/qfile_p.h2
-rw-r--r--src/corelib/io/qfsfileengine_p.h4
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp40
-rw-r--r--src/corelib/io/qiodevice.cpp163
-rw-r--r--src/corelib/io/qiodevice_p.h127
-rw-r--r--src/corelib/io/qwindowspipewriter.cpp4
-rw-r--r--src/corelib/kernel/kernel.pri1
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian.cpp13
-rw-r--r--src/corelib/kernel/qguard_p.h157
-rw-r--r--src/corelib/kernel/qobject.cpp9
-rw-r--r--src/corelib/kernel/qobject_p.h31
-rw-r--r--src/corelib/plugin/qlibrary.cpp14
-rw-r--r--src/corelib/plugin/qplugin.h2
-rw-r--r--src/corelib/statemachine/qstatemachine.cpp11
-rw-r--r--src/corelib/statemachine/qstatemachine_p.h2
-rw-r--r--src/corelib/tools/qchar.cpp8
-rw-r--r--src/corelib/tools/qdatetime.cpp132
-rw-r--r--src/corelib/tools/qdatetime.h5
-rw-r--r--src/corelib/tools/qelapsedtimer_generic.cpp4
-rw-r--r--src/corelib/tools/qelapsedtimer_unix.cpp8
-rw-r--r--src/corelib/tools/qvarlengtharray.h19
-rw-r--r--src/corelib/tools/qvarlengtharray.qdoc32
-rw-r--r--src/dbus/dbus.pro3
-rw-r--r--src/dbus/qdbusserver.cpp2
-rw-r--r--src/declarative/3rdparty/qlistmodelinterface.cpp2
-rw-r--r--src/declarative/QmlChanges.txt39
-rw-r--r--src/declarative/debugger/qdeclarativedebug.cpp4
-rw-r--r--src/declarative/debugger/qdeclarativedebugclient.cpp4
-rw-r--r--src/declarative/debugger/qdeclarativedebuggerstatus.cpp2
-rw-r--r--src/declarative/debugger/qdeclarativedebugservice.cpp4
-rw-r--r--src/declarative/debugger/qpacketprotocol.cpp2
-rw-r--r--src/declarative/graphicsitems/graphicsitems.pri2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanchors.cpp8
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanchors_p_p.h4
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanimatedimage_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanimatedimage_p_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeborderimage.cpp29
-rw-r--r--src/declarative/graphicsitems/qdeclarativeborderimage_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeborderimage_p_p.h4
-rw-r--r--src/declarative/graphicsitems/qdeclarativeevents.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable.cpp17
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable_p.h4
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable_p_p.h6
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflipable.cpp29
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflipable_p.h12
-rw-r--r--src/declarative/graphicsitems/qdeclarativefocuspanel.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativefocusscope.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativegraphicsobjectcontainer.cpp14
-rw-r--r--src/declarative/graphicsitems/qdeclarativegraphicsobjectcontainer_p.h1
-rw-r--r--src/declarative/graphicsitems/qdeclarativegridview.cpp63
-rw-r--r--src/declarative/graphicsitems/qdeclarativegridview_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage.cpp33
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage_p_p.h4
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimagebase.cpp44
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimagebase_p.h6
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h3
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem.cpp288
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem.h9
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem_p.h37
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp76
-rw-r--r--src/declarative/graphicsitems/qdeclarativelayoutitem.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview.cpp120
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeloader.cpp10
-rw-r--r--src/declarative/graphicsitems/qdeclarativeloader_p_p.h6
-rw-r--r--src/declarative/graphicsitems/qdeclarativemousearea.cpp8
-rw-r--r--src/declarative/graphicsitems/qdeclarativemousearea_p_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativepainteditem.cpp8
-rw-r--r--src/declarative/graphicsitems/qdeclarativepainteditem_p_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativepath.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativepath_p_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativepathview.cpp905
-rw-r--r--src/declarative/graphicsitems/qdeclarativepathview_p.h48
-rw-r--r--src/declarative/graphicsitems/qdeclarativepathview_p_p.h54
-rw-r--r--src/declarative/graphicsitems/qdeclarativepositioners.cpp50
-rw-r--r--src/declarative/graphicsitems/qdeclarativepositioners_p.h18
-rw-r--r--src/declarative/graphicsitems/qdeclarativepositioners_p_p.h9
-rw-r--r--src/declarative/graphicsitems/qdeclarativerectangle.cpp9
-rw-r--r--src/declarative/graphicsitems/qdeclarativerectangle_p_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativerepeater.cpp16
-rw-r--r--src/declarative/graphicsitems/qdeclarativerepeater_p_p.h4
-rw-r--r--src/declarative/graphicsitems/qdeclarativescalegrid.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext_p_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit.cpp8
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit_p.h4
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit_p_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput.cpp23
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput_p.h4
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput_p_p.h4
-rw-r--r--src/declarative/graphicsitems/qdeclarativetranslate.cpp136
-rw-r--r--src/declarative/graphicsitems/qdeclarativetranslate_p.h (renamed from src/declarative/qml/qdeclarativescript.cpp)94
-rw-r--r--src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp2
-rw-r--r--src/declarative/qml/parser/qdeclarativejs.g79
-rw-r--r--src/declarative/qml/parser/qdeclarativejsast.cpp5
-rw-r--r--src/declarative/qml/parser/qdeclarativejsast_p.h14
-rw-r--r--src/declarative/qml/parser/qdeclarativejsastfwd_p.h2
-rw-r--r--src/declarative/qml/parser/qdeclarativejsastvisitor.cpp2
-rw-r--r--src/declarative/qml/parser/qdeclarativejsastvisitor_p.h4
-rw-r--r--src/declarative/qml/parser/qdeclarativejsengine_p.cpp6
-rw-r--r--src/declarative/qml/parser/qdeclarativejsengine_p.h4
-rw-r--r--src/declarative/qml/parser/qdeclarativejsgrammar.cpp1667
-rw-r--r--src/declarative/qml/parser/qdeclarativejsgrammar_p.h12
-rw-r--r--src/declarative/qml/parser/qdeclarativejslexer.cpp8
-rw-r--r--src/declarative/qml/parser/qdeclarativejslexer_p.h2
-rw-r--r--src/declarative/qml/parser/qdeclarativejsmemorypool_p.h2
-rw-r--r--src/declarative/qml/parser/qdeclarativejsnodepool_p.h4
-rw-r--r--src/declarative/qml/parser/qdeclarativejsparser.cpp443
-rw-r--r--src/declarative/qml/parser/qdeclarativejsparser_p.h12
-rw-r--r--src/declarative/qml/qdeclarative.h10
-rw-r--r--src/declarative/qml/qdeclarativebinding.cpp10
-rw-r--r--src/declarative/qml/qdeclarativebinding_p.h2
-rw-r--r--src/declarative/qml/qdeclarativebinding_p_p.h4
-rw-r--r--src/declarative/qml/qdeclarativeboundsignal.cpp14
-rw-r--r--src/declarative/qml/qdeclarativeclassfactory.cpp2
-rw-r--r--src/declarative/qml/qdeclarativecleanup.cpp4
-rw-r--r--src/declarative/qml/qdeclarativecompiledbindings.cpp90
-rw-r--r--src/declarative/qml/qdeclarativecompiledbindings_p.h4
-rw-r--r--src/declarative/qml/qdeclarativecompileddata.cpp6
-rw-r--r--src/declarative/qml/qdeclarativecompiler.cpp95
-rw-r--r--src/declarative/qml/qdeclarativecompiler_p.h23
-rw-r--r--src/declarative/qml/qdeclarativecomponent.cpp20
-rw-r--r--src/declarative/qml/qdeclarativecomponent.h4
-rw-r--r--src/declarative/qml/qdeclarativecomponent_p.h6
-rw-r--r--src/declarative/qml/qdeclarativecompositetypedata_p.h2
-rw-r--r--src/declarative/qml/qdeclarativecompositetypemanager.cpp62
-rw-r--r--src/declarative/qml/qdeclarativecompositetypemanager_p.h4
-rw-r--r--src/declarative/qml/qdeclarativecontext.cpp95
-rw-r--r--src/declarative/qml/qdeclarativecontext_p.h12
-rw-r--r--src/declarative/qml/qdeclarativecontextscriptclass.cpp12
-rw-r--r--src/declarative/qml/qdeclarativecontextscriptclass_p.h4
-rw-r--r--src/declarative/qml/qdeclarativecustomparser.cpp8
-rw-r--r--src/declarative/qml/qdeclarativecustomparser_p.h4
-rw-r--r--src/declarative/qml/qdeclarativecustomparser_p_p.h4
-rw-r--r--src/declarative/qml/qdeclarativedeclarativedata_p.h2
-rw-r--r--src/declarative/qml/qdeclarativedirparser.cpp2
-rw-r--r--src/declarative/qml/qdeclarativedom.cpp20
-rw-r--r--src/declarative/qml/qdeclarativedom_p_p.h2
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp234
-rw-r--r--src/declarative/qml/qdeclarativeengine.h3
-rw-r--r--src/declarative/qml/qdeclarativeengine_p.h27
-rw-r--r--src/declarative/qml/qdeclarativeenginedebug.cpp16
-rw-r--r--src/declarative/qml/qdeclarativeexpression.cpp12
-rw-r--r--src/declarative/qml/qdeclarativeexpression.h2
-rw-r--r--src/declarative/qml/qdeclarativeexpression_p.h4
-rw-r--r--src/declarative/qml/qdeclarativeextensionplugin.h2
-rw-r--r--src/declarative/qml/qdeclarativefastproperties.cpp92
-rw-r--r--src/declarative/qml/qdeclarativefastproperties_p.h75
-rw-r--r--src/declarative/qml/qdeclarativeglobalscriptclass.cpp2
-rw-r--r--src/declarative/qml/qdeclarativeguard_p.h2
-rw-r--r--src/declarative/qml/qdeclarativeimageprovider.cpp6
-rw-r--r--src/declarative/qml/qdeclarativeimageprovider.h2
-rw-r--r--src/declarative/qml/qdeclarativeinfo.cpp6
-rw-r--r--src/declarative/qml/qdeclarativeinstruction.cpp4
-rw-r--r--src/declarative/qml/qdeclarativeintegercache.cpp6
-rw-r--r--src/declarative/qml/qdeclarativeintegercache_p.h4
-rw-r--r--src/declarative/qml/qdeclarativelist.cpp6
-rw-r--r--src/declarative/qml/qdeclarativelist.h9
-rw-r--r--src/declarative/qml/qdeclarativelist_p.h2
-rw-r--r--src/declarative/qml/qdeclarativelistscriptclass.cpp8
-rw-r--r--src/declarative/qml/qdeclarativemetatype.cpp8
-rw-r--r--src/declarative/qml/qdeclarativenotifier.cpp2
-rw-r--r--src/declarative/qml/qdeclarativenotifier_p.h2
-rw-r--r--src/declarative/qml/qdeclarativeobjectscriptclass.cpp20
-rw-r--r--src/declarative/qml/qdeclarativeobjectscriptclass_p.h4
-rw-r--r--src/declarative/qml/qdeclarativeparser.cpp12
-rw-r--r--src/declarative/qml/qdeclarativeparser_p.h6
-rw-r--r--src/declarative/qml/qdeclarativeproperty.cpp20
-rw-r--r--src/declarative/qml/qdeclarativeproperty.h5
-rw-r--r--src/declarative/qml/qdeclarativeproperty_p.h4
-rw-r--r--src/declarative/qml/qdeclarativepropertycache.cpp6
-rw-r--r--src/declarative/qml/qdeclarativepropertycache_p.h6
-rw-r--r--src/declarative/qml/qdeclarativeproxymetaobject.cpp2
-rw-r--r--src/declarative/qml/qdeclarativeproxymetaobject_p.h2
-rw-r--r--src/declarative/qml/qdeclarativerefcount.cpp2
-rw-r--r--src/declarative/qml/qdeclarativerewrite.cpp4
-rw-r--r--src/declarative/qml/qdeclarativescriptparser.cpp30
-rw-r--r--src/declarative/qml/qdeclarativescriptparser_p.h2
-rw-r--r--src/declarative/qml/qdeclarativesqldatabase.cpp12
-rw-r--r--src/declarative/qml/qdeclarativestringconverters.cpp2
-rw-r--r--src/declarative/qml/qdeclarativetypenamecache.cpp4
-rw-r--r--src/declarative/qml/qdeclarativetypenamecache_p.h4
-rw-r--r--src/declarative/qml/qdeclarativetypenamescriptclass.cpp6
-rw-r--r--src/declarative/qml/qdeclarativetypenamescriptclass_p.h2
-rw-r--r--src/declarative/qml/qdeclarativevaluetype.cpp4
-rw-r--r--src/declarative/qml/qdeclarativevaluetype_p.h2
-rw-r--r--src/declarative/qml/qdeclarativevaluetypescriptclass.cpp10
-rw-r--r--src/declarative/qml/qdeclarativevme.cpp30
-rw-r--r--src/declarative/qml/qdeclarativevme_p.h2
-rw-r--r--src/declarative/qml/qdeclarativevmemetaobject.cpp469
-rw-r--r--src/declarative/qml/qdeclarativevmemetaobject_p.h23
-rw-r--r--src/declarative/qml/qdeclarativewatcher.cpp2
-rw-r--r--src/declarative/qml/qdeclarativeworkerscript.cpp14
-rw-r--r--src/declarative/qml/qdeclarativexmlhttprequest.cpp10
-rw-r--r--src/declarative/qml/qmetaobjectbuilder.cpp2
-rw-r--r--src/declarative/qml/qml.pri3
-rw-r--r--src/declarative/qml/rewriter/rewriter.cpp2
-rw-r--r--src/declarative/qml/rewriter/rewriter_p.h2
-rw-r--r--src/declarative/qml/rewriter/textwriter.cpp2
-rw-r--r--src/declarative/util/qdeclarativeanimation.cpp27
-rw-r--r--src/declarative/util/qdeclarativeanimation_p.h14
-rw-r--r--src/declarative/util/qdeclarativeanimation_p_p.h37
-rw-r--r--src/declarative/util/qdeclarativebehavior.cpp21
-rw-r--r--src/declarative/util/qdeclarativebehavior_p.h2
-rw-r--r--src/declarative/util/qdeclarativebind.cpp4
-rw-r--r--src/declarative/util/qdeclarativeconnections.cpp2
-rw-r--r--src/declarative/util/qdeclarativeeasefollow.cpp537
-rw-r--r--src/declarative/util/qdeclarativefontloader.cpp2
-rw-r--r--src/declarative/util/qdeclarativelistaccessor.cpp2
-rw-r--r--src/declarative/util/qdeclarativelistmodel.cpp29
-rw-r--r--src/declarative/util/qdeclarativelistmodel_p.h2
-rw-r--r--src/declarative/util/qdeclarativelistmodel_p_p.h4
-rw-r--r--src/declarative/util/qdeclarativelistmodelworkeragent.cpp10
-rw-r--r--src/declarative/util/qdeclarativeopenmetaobject.cpp18
-rw-r--r--src/declarative/util/qdeclarativeopenmetaobject_p.h2
-rw-r--r--src/declarative/util/qdeclarativepackage.cpp2
-rw-r--r--src/declarative/util/qdeclarativepixmapcache.cpp209
-rw-r--r--src/declarative/util/qdeclarativepixmapcache_p.h9
-rw-r--r--src/declarative/util/qdeclarativepropertychanges.cpp4
-rw-r--r--src/declarative/util/qdeclarativepropertychanges_p.h2
-rw-r--r--src/declarative/util/qdeclarativepropertymap.cpp33
-rw-r--r--src/declarative/util/qdeclarativepropertymap.h2
-rw-r--r--src/declarative/util/qdeclarativesmoothedanimation.cpp483
-rw-r--r--src/declarative/util/qdeclarativesmoothedanimation_p.h (renamed from src/declarative/util/qdeclarativeeasefollow_p.h)48
-rw-r--r--src/declarative/util/qdeclarativesmoothedanimation_p_p.h134
-rw-r--r--src/declarative/util/qdeclarativespringfollow.cpp6
-rw-r--r--src/declarative/util/qdeclarativestate.cpp16
-rw-r--r--src/declarative/util/qdeclarativestate_p_p.h6
-rw-r--r--src/declarative/util/qdeclarativestategroup.cpp32
-rw-r--r--src/declarative/util/qdeclarativestategroup_p.h2
-rw-r--r--src/declarative/util/qdeclarativestateoperations.cpp476
-rw-r--r--src/declarative/util/qdeclarativestateoperations_p.h125
-rw-r--r--src/declarative/util/qdeclarativestyledtext.cpp2
-rw-r--r--src/declarative/util/qdeclarativesystempalette.cpp2
-rw-r--r--src/declarative/util/qdeclarativetimeline.cpp2
-rw-r--r--src/declarative/util/qdeclarativetimer.cpp2
-rw-r--r--src/declarative/util/qdeclarativetransition.cpp20
-rw-r--r--src/declarative/util/qdeclarativetransition_p.h2
-rw-r--r--src/declarative/util/qdeclarativetransitionmanager.cpp4
-rw-r--r--src/declarative/util/qdeclarativetransitionmanager_p_p.h2
-rw-r--r--src/declarative/util/qdeclarativeutilmodule.cpp57
-rw-r--r--src/declarative/util/qdeclarativeview.cpp6
-rw-r--r--src/declarative/util/qdeclarativexmllistmodel.cpp175
-rw-r--r--src/declarative/util/qdeclarativexmllistmodel_p.h3
-rw-r--r--src/declarative/util/util.pri5
-rw-r--r--src/gui/dialogs/qdialog.cpp18
-rw-r--r--src/gui/dialogs/qfiledialog.cpp6
-rw-r--r--src/gui/dialogs/qfilesystemmodel.cpp10
-rw-r--r--src/gui/dialogs/qmessagebox.cpp14
-rw-r--r--src/gui/egl/qegl.cpp4
-rw-r--r--src/gui/egl/qegl_p.h35
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp174
-rw-r--r--src/gui/graphicsview/qgraphicsitem.h11
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h69
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp13
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp23
-rw-r--r--src/gui/graphicsview/qgraphicswidget.h2
-rw-r--r--src/gui/graphicsview/qgraphicswidget_p.cpp51
-rw-r--r--src/gui/graphicsview/qgraphicswidget_p.h9
-rw-r--r--src/gui/gui.pro2
-rw-r--r--src/gui/image/qimage.cpp7
-rw-r--r--src/gui/inputmethod/inputmethod.pri2
-rw-r--r--src/gui/inputmethod/qinputcontextfactory.cpp47
-rw-r--r--src/gui/inputmethod/qximinputcontext_x11.cpp54
-rw-r--r--src/gui/itemviews/qtreeview.cpp4
-rw-r--r--src/gui/kernel/qapplication.h1
-rw-r--r--src/gui/kernel/qapplication_s60.cpp45
-rw-r--r--src/gui/kernel/qeventdispatcher_mac.mm9
-rw-r--r--src/gui/kernel/qkeymapper_x11.cpp5
-rw-r--r--src/gui/kernel/qsoftkeymanager.cpp60
-rw-r--r--src/gui/kernel/qsoftkeymanager_p.h5
-rw-r--r--src/gui/kernel/qsoftkeymanager_s60.cpp7
-rw-r--r--src/gui/kernel/qsound.cpp3
-rw-r--r--src/gui/kernel/qt_s60_p.h1
-rw-r--r--src/gui/kernel/qwidget_p.h20
-rw-r--r--src/gui/kernel/qwidget_s60.cpp8
-rw-r--r--src/gui/painting/qpaintbuffer.cpp33
-rw-r--r--src/gui/painting/qpainter.cpp66
-rw-r--r--src/gui/painting/qpainter.h6
-rw-r--r--src/gui/painting/qtextureglyphcache.cpp14
-rw-r--r--src/gui/painting/qtextureglyphcache_p.h3
-rw-r--r--src/gui/styles/qgtkstyle.cpp3
-rw-r--r--src/gui/styles/qgtkstyle_p.h5
-rw-r--r--src/gui/styles/qplastiquestyle.cpp1
-rw-r--r--src/gui/styles/qs60style.cpp161
-rw-r--r--src/gui/styles/qs60style.h10
-rw-r--r--src/gui/styles/qs60style_p.h15
-rw-r--r--src/gui/styles/qs60style_s60.cpp28
-rw-r--r--src/gui/styles/qwindowsstyle.cpp8
-rw-r--r--src/gui/text/qfontdatabase_s60.cpp5
-rw-r--r--src/gui/text/qfontengine.cpp15
-rw-r--r--src/gui/text/qfontengine_p.h3
-rw-r--r--src/gui/text/qfontengine_win.cpp31
-rw-r--r--src/gui/text/qfontengine_win_p.h4
-rw-r--r--src/gui/text/qfontmetrics.cpp21
-rw-r--r--src/gui/text/qstatictext.cpp172
-rw-r--r--src/gui/text/qstatictext.h8
-rw-r--r--src/gui/text/qstatictext_p.h13
-rw-r--r--src/gui/text/qtextcontrol.cpp4
-rw-r--r--src/gui/text/qtextlayout.cpp6
-rw-r--r--src/gui/widgets/qcombobox.cpp10
-rw-r--r--src/gui/widgets/qlineedit.cpp4
-rw-r--r--src/gui/widgets/qmenu.cpp4
-rw-r--r--src/gui/widgets/qmenubar.cpp12
-rw-r--r--src/gui/widgets/qspinbox.cpp15
-rw-r--r--src/gui/widgets/qvalidator.cpp2
-rw-r--r--src/imports/gestures/gestures.pro27
-rw-r--r--src/imports/gestures/plugin.cpp66
-rw-r--r--src/imports/gestures/qdeclarativegesturearea.cpp266
-rw-r--r--src/imports/gestures/qdeclarativegesturearea_p.h100
-rw-r--r--src/imports/gestures/qmldir1
-rw-r--r--src/imports/multimedia/multimedia.pro13
-rw-r--r--src/imports/multimedia/qdeclarativeaudio.cpp5
-rw-r--r--src/imports/multimedia/qdeclarativevideo.cpp5
-rw-r--r--src/imports/particles/particles.pro13
-rw-r--r--src/imports/particles/qdeclarativeparticles.cpp5
-rw-r--r--src/imports/webkit/qdeclarativewebview.cpp12
-rw-r--r--src/imports/webkit/webkit.pro13
-rw-r--r--src/imports/widgets/widgets.pro13
-rw-r--r--src/multimedia/audio/qaudioinput_mac_p.cpp4
-rw-r--r--src/multimedia/audio/qaudiooutput_symbian_p.cpp3
-rw-r--r--src/multimedia/base/base.pri8
-rw-r--r--src/multimedia/base/qpaintervideosurface.cpp55
-rw-r--r--src/multimedia/base/qpaintervideosurface_mac.mm274
-rw-r--r--src/multimedia/base/qpaintervideosurface_mac_p.h100
-rw-r--r--src/multimedia/base/qpaintervideosurface_p.h22
-rw-r--r--src/multimedia/base/qvideowidget.cpp34
-rw-r--r--src/multimedia/effects/effects.pri3
-rw-r--r--src/multimedia/effects/qsoundeffect.cpp25
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp50
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel_p.h20
-rw-r--r--src/network/bearer/qnetworkconfigmanager.h17
-rw-r--r--src/network/bearer/qnetworkconfiguration.h24
-rw-r--r--src/network/bearer/qnetworksession.h22
-rw-r--r--src/network/kernel/qhostinfo.cpp1
-rw-r--r--src/network/kernel/qhostinfo_p.h3
-rw-r--r--src/opengl/qgl_p.h2
-rw-r--r--src/opengl/qgl_x11egl.cpp48
-rw-r--r--src/openvg/qpaintengine_vg.cpp41
-rw-r--r--src/openvg/qpixmapdata_vg.cpp19
-rw-r--r--src/phonon/phonon.pro64
-rw-r--r--src/plugins/bearer/nativewifi/platformdefs.h4
-rw-r--r--src/plugins/bearer/platformdefs_win.h4
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp25
-rw-r--r--src/plugins/imageformats/svg/main.cpp16
-rw-r--r--src/plugins/imageformats/svg/qsvgiohandler.cpp157
-rw-r--r--src/plugins/mediaservices/directshow/mediaplayer/vmr9videowindowcontrol.cpp1
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamerserviceplugin.cpp9
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp2
-rw-r--r--src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm39
-rw-r--r--src/plugins/mediaservices/qt7/qt7.pro2
-rw-r--r--src/plugins/mediaservices/qt7/qt7ciimagevideobuffer.h90
-rw-r--r--src/plugins/mediaservices/qt7/qt7ciimagevideobuffer.mm104
-rw-r--r--src/plugins/mediaservices/qt7/qt7movierenderer.h1
-rw-r--r--src/plugins/mediaservices/qt7/qt7movierenderer.mm17
-rw-r--r--src/plugins/mediaservices/qt7/qt7movievideowidget.h1
-rw-r--r--src/plugins/mediaservices/qt7/qt7movievideowidget.mm7
-rw-r--r--src/plugins/mediaservices/qt7/qt7movieviewoutput.h1
-rw-r--r--src/plugins/mediaservices/qt7/qt7movieviewoutput.mm4
-rw-r--r--src/plugins/mediaservices/qt7/qt7movieviewrenderer.h2
-rw-r--r--src/plugins/mediaservices/qt7/qt7movieviewrenderer.mm85
-rw-r--r--src/plugins/mediaservices/qt7/qt7videooutputcontrol.h1
-rw-r--r--src/plugins/phonon/gstreamer/gstreamer.pro22
-rw-r--r--src/s60installs/bwins/QtGuiu.def9
-rw-r--r--src/s60installs/eabi/QtCoreu.def37
-rw-r--r--src/s60installs/eabi/QtDeclarativeu.def6820
-rw-r--r--src/s60installs/eabi/QtGuiu.def54
-rw-r--r--src/s60installs/eabi/QtMultimediau.def30
-rw-r--r--src/s60installs/eabi/QtNetworku.def24
-rw-r--r--src/s60installs/eabi/QtScriptu.def8
-rw-r--r--src/s60installs/s60installs.pro5
-rw-r--r--src/s60main/qts60main_mcrt0.cpp2
-rw-r--r--src/script/api/qscriptcontext.cpp14
-rw-r--r--src/script/api/qscriptengine.cpp41
-rw-r--r--src/script/api/qscriptengine_p.h1
-rw-r--r--src/script/api/qscriptprogram.cpp2
-rw-r--r--src/script/api/qscriptstring.cpp6
-rw-r--r--src/script/api/qscriptvalue.cpp80
-rw-r--r--src/script/api/qscriptvalueiterator.cpp15
-rw-r--r--src/script/bridge/qscriptdeclarativeclass.cpp33
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.cpp157
-rw-r--r--src/src.pro2
-rw-r--r--src/tools/uic/cpp/cppextractimages.cpp2
-rw-r--r--src/tools/uic/cpp/cppwriteicondata.cpp12
-rw-r--r--src/tools/uic/cpp/cppwriteicondata.h3
-rw-r--r--src/tools/uic/option.h2
-rw-r--r--src/tools/uic3/converter.cpp1
-rw-r--r--src/tools/uic3/form.cpp1
-rw-r--r--src/tools/uic3/main.cpp3
-rw-r--r--src/tools/uic3/ui3reader.h3
-rw-r--r--src/xmlpatterns/api/qxmlresultitems.cpp4
-rw-r--r--tests/auto/declarative/declarative.pro6
-rw-r--r--tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp4
-rw-r--r--tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp30
-rw-r--r--tests/auto/declarative/qdeclarativebinding/data/test-binding.qml2
-rw-r--r--tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp8
-rw-r--r--tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp11
-rw-r--r--tests/auto/declarative/qdeclarativeeasefollow/data/easefollow1.qml3
-rw-r--r--tests/auto/declarative/qdeclarativeeasefollow/data/easefollow2.qml5
-rw-r--r--tests/auto/declarative/qdeclarativeeasefollow/data/easefollow3.qml6
-rw-r--r--tests/auto/declarative/qdeclarativeeasefollow/tst_qdeclarativeeasefollow.cpp122
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/compiled.qml44
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/regExp.qml7
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/strictlyEquals.qml17
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/testtypes.h5
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp70
-rw-r--r--tests/auto/declarative/qdeclarativefocusscope/data/test.qml (renamed from examples/declarative/focusscope/test.qml)11
-rw-r--r--tests/auto/declarative/qdeclarativefocusscope/data/test2.qml (renamed from examples/declarative/focusscope/test2.qml)11
-rw-r--r--tests/auto/declarative/qdeclarativefocusscope/data/test3.qml (renamed from examples/declarative/focusscope/test3.qml)0
-rw-r--r--tests/auto/declarative/qdeclarativefocusscope/data/test4.qml (renamed from examples/declarative/focusscope/test4.qml)9
-rw-r--r--tests/auto/declarative/qdeclarativefocusscope/data/test5.qml (renamed from examples/declarative/focusscope/test5.qml)9
-rw-r--r--tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro6
-rw-r--r--tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp278
-rw-r--r--tests/auto/declarative/qdeclarativeimage/data/big.jpegbin0 -> 1700081 bytes
-rw-r--r--tests/auto/declarative/qdeclarativeimage/data/big256.pngbin0 -> 3566 bytes
-rw-r--r--tests/auto/declarative/qdeclarativeimage/data/heart-mac.pngbin0 -> 12621 bytes
-rw-r--r--tests/auto/declarative/qdeclarativeimage/data/heart-win32.pngbin0 -> 12621 bytes
-rw-r--r--tests/auto/declarative/qdeclarativeimage/data/heart.pngbin0 -> 12577 bytes
-rw-r--r--tests/auto/declarative/qdeclarativeimage/data/heart.svg55
-rw-r--r--tests/auto/declarative/qdeclarativeimage/data/heart200-mac.pngbin0 -> 8062 bytes
-rw-r--r--tests/auto/declarative/qdeclarativeimage/data/heart200-win32.pngbin0 -> 8062 bytes
-rw-r--r--tests/auto/declarative/qdeclarativeimage/data/heart200.pngbin0 -> 8063 bytes
-rw-r--r--tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp84
-rw-r--r--tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp30
-rw-r--r--tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp37
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/LocalLast.qml2
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/dynamicProperties.qml1
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/InstalledTest.qml4
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/LocalLast.qml2
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/lib/com/nokia/installedtest/qmldir1
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp9
-rw-r--r--tests/auto/declarative/qdeclarativelayouts/tst_qdeclarativelayouts.cpp2
-rw-r--r--tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp37
-rw-r--r--tests/auto/declarative/qdeclarativelistview/data/listviewtest.qml6
-rw-r--r--tests/auto/declarative/qdeclarativeloader/tst_qdeclarativeloader.cpp4
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/updateMousePosOnClick.qml20
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp36
-rw-r--r--tests/auto/declarative/qdeclarativepathview/data/displaypath.qml1
-rw-r--r--tests/auto/declarative/qdeclarativepathview/data/pathview0.qml6
-rw-r--r--tests/auto/declarative/qdeclarativepathview/data/pathview3.qml6
-rw-r--r--tests/auto/declarative/qdeclarativepathview/data/propertychanges.qml3
-rw-r--r--tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp39
-rw-r--r--tests/auto/declarative/qdeclarativepositioners/data/flowtest.qml40
-rw-r--r--tests/auto/declarative/qdeclarativepositioners/data/grid-animated.qml1
-rw-r--r--tests/auto/declarative/qdeclarativepositioners/data/grid-spacing.qml1
-rw-r--r--tests/auto/declarative/qdeclarativepositioners/data/gridtest.qml1
-rw-r--r--tests/auto/declarative/qdeclarativepositioners/data/horizontal-animated.qml1
-rw-r--r--tests/auto/declarative/qdeclarativepositioners/data/horizontal-spacing.qml1
-rw-r--r--tests/auto/declarative/qdeclarativepositioners/data/horizontal.qml1
-rw-r--r--tests/auto/declarative/qdeclarativepositioners/data/vertical-animated.qml1
-rw-r--r--tests/auto/declarative/qdeclarativepositioners/data/vertical-spacing.qml1
-rw-r--r--tests/auto/declarative/qdeclarativepositioners/data/vertical.qml1
-rw-r--r--tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp114
-rw-r--r--tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp137
-rw-r--r--tests/auto/declarative/qdeclarativepropertymap/tst_qdeclarativepropertymap.cpp20
-rw-r--r--tests/auto/declarative/qdeclarativeqt/data/openUrlExternally.qml5
-rw-r--r--tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp26
-rw-r--r--tests/auto/declarative/qdeclarativerepeater/data/itemlist.qml8
-rw-r--r--tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimation1.qml3
-rw-r--r--tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimation2.qml5
-rw-r--r--tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimation3.qml6
-rw-r--r--tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimationBehavior.qml23
-rw-r--r--tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimationValueSource.qml13
-rw-r--r--tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro (renamed from tests/auto/declarative/qdeclarativeeasefollow/qdeclarativeeasefollow.pro)2
-rw-r--r--tests/auto/declarative/qdeclarativesmoothedanimation/tst_qdeclarativesmoothedanimation.cpp207
-rw-r--r--tests/auto/declarative/qdeclarativestates/data/anchorChanges1.qml4
-rw-r--r--tests/auto/declarative/qdeclarativestates/data/anchorChanges2.qml4
-rw-r--r--tests/auto/declarative/qdeclarativestates/data/anchorChanges3.qml8
-rw-r--r--tests/auto/declarative/qdeclarativestates/data/anchorChanges4.qml4
-rw-r--r--tests/auto/declarative/qdeclarativestates/data/anchorChanges5.qml4
-rw-r--r--tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp38
-rw-r--r--tests/auto/declarative/qdeclarativetextinput/data/validators.qml7
-rw-r--r--tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp3
-rw-r--r--tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp1
-rw-r--r--tests/auto/declarative/qdeclarativexmllistmodel/data/model2.xml14
-rw-r--r--tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp120
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/basic1.qml (renamed from tests/auto/declarative/visual/ListView/basic1.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/basic2.qml (renamed from tests/auto/declarative/visual/ListView/basic2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/basic3.qml (renamed from tests/auto/declarative/visual/ListView/basic3.qml)2
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/basic4.qml (renamed from tests/auto/declarative/visual/ListView/basic4.qml)2
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/basic1.qml (renamed from tests/auto/declarative/visual/ListView/data-MAC/basic1.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/basic2.qml (renamed from tests/auto/declarative/visual/ListView/data-MAC/basic2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/basic3.qml (renamed from tests/auto/declarative/visual/ListView/data-MAC/basic3.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/basic4.qml (renamed from tests/auto/declarative/visual/ListView/data-MAC/basic4.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.0.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/itemlist.0.png)bin961 -> 961 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.1.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/itemlist.1.png)bin972 -> 972 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.2.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/itemlist.2.png)bin962 -> 962 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.3.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/itemlist.3.png)bin962 -> 962 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.4.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/itemlist.4.png)bin962 -> 962 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.5.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/itemlist.5.png)bin970 -> 970 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.6.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/itemlist.6.png)bin961 -> 961 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.qml (renamed from tests/auto/declarative/visual/ListView/data/itemlist.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.0.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.0.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.1.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.1.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.10.png (renamed from tests/auto/declarative/visual/ListView/data/listview.10.png)bin1588 -> 1588 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.11.png (renamed from tests/auto/declarative/visual/ListView/data/listview.11.png)bin1575 -> 1575 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.12.png (renamed from tests/auto/declarative/visual/ListView/data/listview.12.png)bin1502 -> 1502 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.13.png (renamed from tests/auto/declarative/visual/ListView/data/listview.13.png)bin1583 -> 1583 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.14.png (renamed from tests/auto/declarative/visual/ListView/data/listview.14.png)bin1681 -> 1681 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.15.png (renamed from tests/auto/declarative/visual/ListView/data/listview.15.png)bin1524 -> 1524 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.16.png (renamed from tests/auto/declarative/visual/ListView/data/listview.16.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.17.png (renamed from tests/auto/declarative/visual/ListView/data/listview.17.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.18.png (renamed from tests/auto/declarative/visual/ListView/data/listview.18.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.19.png (renamed from tests/auto/declarative/visual/ListView/data/listview.19.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.2.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.2.png)bin1627 -> 1627 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.3.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.3.png)bin1524 -> 1524 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.4.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.4.png)bin1678 -> 1678 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.5.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.5.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.6.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.6.png)bin1573 -> 1573 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.7.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.7.png)bin1670 -> 1670 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.8.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.8.png)bin1658 -> 1658 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.9.png (renamed from tests/auto/declarative/visual/ListView/data/listview.9.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.qml (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-X11/basic1.qml (renamed from tests/auto/declarative/visual/ListView/data-X11/basic1.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-X11/basic2.qml (renamed from tests/auto/declarative/visual/ListView/data-X11/basic2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-X11/basic3.qml (renamed from tests/auto/declarative/visual/ListView/data-X11/basic3.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-X11/basic4.qml (renamed from tests/auto/declarative/visual/ListView/data-X11/basic4.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic1.qml (renamed from tests/auto/declarative/visual/ListView/data/basic1.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic2.qml (renamed from tests/auto/declarative/visual/ListView/data/basic2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic3.qml (renamed from tests/auto/declarative/visual/ListView/data/basic3.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic4.qml (renamed from tests/auto/declarative/visual/ListView/data/basic4.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.png (renamed from tests/auto/declarative/visual/ListView/data/itemlist.0.png)bin961 -> 961 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.png (renamed from tests/auto/declarative/visual/ListView/data/itemlist.1.png)bin972 -> 972 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.png (renamed from tests/auto/declarative/visual/ListView/data/itemlist.2.png)bin962 -> 962 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.png (renamed from tests/auto/declarative/visual/ListView/data/itemlist.3.png)bin962 -> 962 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.png (renamed from tests/auto/declarative/visual/ListView/data/itemlist.4.png)bin962 -> 962 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.png (renamed from tests/auto/declarative/visual/ListView/data/itemlist.5.png)bin970 -> 970 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.png (renamed from tests/auto/declarative/visual/ListView/data/itemlist.6.png)bin961 -> 961 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml (renamed from tests/auto/declarative/visual/ListView/data-MAC/itemlist.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.0.png (renamed from tests/auto/declarative/visual/ListView/data/listview.0.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.1.png (renamed from tests/auto/declarative/visual/ListView/data/listview.1.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.10.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.10.png)bin1588 -> 1588 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.11.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.11.png)bin1575 -> 1575 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.12.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.12.png)bin1502 -> 1502 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.13.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.13.png)bin1583 -> 1583 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.14.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.14.png)bin1681 -> 1681 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.15.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.15.png)bin1524 -> 1524 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.16.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.16.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.17.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.17.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.18.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.18.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.19.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.19.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.2.png (renamed from tests/auto/declarative/visual/ListView/data/listview.2.png)bin1656 -> 1656 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.3.png (renamed from tests/auto/declarative/visual/ListView/data/listview.3.png)bin1524 -> 1524 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.4.png (renamed from tests/auto/declarative/visual/ListView/data/listview.4.png)bin1678 -> 1678 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.5.png (renamed from tests/auto/declarative/visual/ListView/data/listview.5.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.6.png (renamed from tests/auto/declarative/visual/ListView/data/listview.6.png)bin1573 -> 1573 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.7.png (renamed from tests/auto/declarative/visual/ListView/data/listview.7.png)bin1669 -> 1669 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.8.png (renamed from tests/auto/declarative/visual/ListView/data/listview.8.png)bin1658 -> 1658 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.9.png (renamed from tests/auto/declarative/visual/ListView/data-MAC/listview.9.png)bin1510 -> 1510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.qml (renamed from tests/auto/declarative/visual/ListView/data/listview.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/itemlist.qml (renamed from tests/auto/declarative/visual/ListView/itemlist.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/listview.qml (renamed from tests/auto/declarative/visual/ListView/listview.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.0.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.0.png)bin714 -> 714 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.1.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.1.png)bin798 -> 798 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.10.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.10.png)bin773 -> 773 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.11.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.11.png)bin773 -> 773 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.12.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.12.png)bin754 -> 754 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.13.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.13.png)bin742 -> 742 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.14.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.14.png)bin733 -> 733 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.15.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.15.png)bin712 -> 712 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.16.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.16.png)bin730 -> 730 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.17.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.17.png)bin730 -> 730 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.18.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.18.png)bin730 -> 730 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.19.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.19.png)bin744 -> 744 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.2.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.2.png)bin757 -> 757 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.20.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.20.png)bin754 -> 754 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.21.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.21.png)bin721 -> 721 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.22.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.22.png)bin732 -> 732 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.3.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.3.png)bin813 -> 813 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.4.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.4.png)bin756 -> 756 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.5.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.5.png)bin752 -> 752 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.6.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.6.png)bin752 -> 752 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.7.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.7.png)bin774 -> 774 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.8.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.8.png)bin774 -> 774 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.9.png (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.9.png)bin754 -> 754 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.qml (renamed from tests/auto/declarative/visual/Package_Views/data/packageviews.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml (renamed from tests/auto/declarative/visual/Package_Views/packageviews.qml)4
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/bindinganimation.qml (renamed from tests/auto/declarative/visual/animation/bindinganimation/bindinganimation.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.0.png (renamed from tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.0.png)bin817 -> 817 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.1.png (renamed from tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.1.png)bin815 -> 815 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.2.png (renamed from tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.2.png)bin817 -> 817 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.3.png (renamed from tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.3.png)bin815 -> 815 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.4.png (renamed from tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.4.png)bin813 -> 813 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.5.png (renamed from tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.5.png)bin815 -> 815 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.6.png (renamed from tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.6.png)bin817 -> 817 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.qml (renamed from tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/colorAnimation.qml (renamed from tests/auto/declarative/visual/animation/colorAnimation/colorAnimation.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.0.png (renamed from tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.0.png)bin610 -> 627 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.1.pngbin0 -> 626 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.2.png (renamed from tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.2.png)bin610 -> 625 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.qml (renamed from tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.qml)248
-rw-r--r--tests/auto/declarative/qmlvisual/animation/easing/data/easing.0.png (renamed from tests/auto/declarative/visual/animation/easing/data/easing.0.png)bin3393 -> 3393 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/easing/data/easing.1.png (renamed from tests/auto/declarative/visual/animation/easing/data/easing.1.png)bin3381 -> 3381 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/easing/data/easing.2.png (renamed from tests/auto/declarative/visual/animation/easing/data/easing.2.png)bin3101 -> 3101 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/easing/data/easing.3.png (renamed from tests/auto/declarative/visual/animation/easing/data/easing.3.png)bin16542 -> 16542 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/easing/data/easing.qml (renamed from tests/auto/declarative/visual/animation/easing/data/easing.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/animation/easing/easing.qml (renamed from tests/auto/declarative/visual/animation/easing/easing.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/animation/easing/pics/qtlogo.png (renamed from tests/auto/declarative/visual/webview/zooming/qtlogo.png)bin2738 -> 2738 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.0.png (renamed from tests/auto/declarative/visual/animation/loop/data/loop.0.png)bin508 -> 508 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.1.png (renamed from tests/auto/declarative/visual/animation/loop/data/loop.1.png)bin507 -> 507 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.2.png (renamed from tests/auto/declarative/visual/animation/loop/data/loop.2.png)bin508 -> 508 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.3.png (renamed from tests/auto/declarative/visual/animation/loop/data/loop.3.png)bin508 -> 508 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.4.png (renamed from tests/auto/declarative/visual/animation/loop/data/loop.4.png)bin505 -> 505 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.5.png (renamed from tests/auto/declarative/visual/animation/loop/data/loop.5.png)bin508 -> 508 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.qml (renamed from tests/auto/declarative/visual/animation/loop/data/loop.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/loop.qml (renamed from tests/auto/declarative/visual/animation/loop/loop.qml)2
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.0.png (renamed from tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.0.png)bin774 -> 774 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.1.png (renamed from tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.1.png)bin762 -> 762 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.2.png (renamed from tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.2.png)bin773 -> 773 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.qml (renamed from tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parallelAnimation/parallelAnimation.qml (renamed from tests/auto/declarative/visual/animation/parallelAnimation/parallelAnimation.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.qml (renamed from tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.0.png (renamed from tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.0.png)bin3742 -> 3742 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.1.png (renamed from tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.1.png)bin3727 -> 3727 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.2.png (renamed from tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.2.png)bin3742 -> 3742 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.3.png (renamed from tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.3.png)bin3628 -> 3628 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.4.png (renamed from tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.4.png)bin3610 -> 3610 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.5.png (renamed from tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.5.png)bin3742 -> 3742 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/parentAnimation-visual.qml (renamed from tests/auto/declarative/visual/animation/parentAnimation/parentAnimation.qml)10
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.qml (renamed from tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.0.png (renamed from tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.0.png)bin3211 -> 3211 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.1.png (renamed from tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.1.png)bin3214 -> 3214 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.2.png (renamed from tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.2.png)bin3209 -> 3209 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.3.png (renamed from tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.3.png)bin3211 -> 3211 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.4.png (renamed from tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.4.png)bin3214 -> 3214 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.5.png (renamed from tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.5.png)bin3214 -> 3214 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/pauseAnimation-visual.qml (renamed from tests/auto/declarative/visual/animation/pauseAnimation/pauseAnimation.qml)13
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/pics/qtlogo.png (renamed from tests/auto/declarative/visual/webview/settings/qtlogo.png)bin2738 -> 2738 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.0.png (renamed from tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.0.png)bin1418 -> 1418 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.1.png (renamed from tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.1.png)bin1430 -> 1430 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.2.png (renamed from tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.2.png)bin1431 -> 1431 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.qml (renamed from tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction.qml (renamed from tests/auto/declarative/visual/animation/propertyAction/propertyAction.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.0.png (renamed from tests/auto/declarative/visual/animation/reanchor/data/reanchor.0.png)bin637 -> 637 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.1.png (renamed from tests/auto/declarative/visual/animation/reanchor/data/reanchor.1.png)bin642 -> 642 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.2.png (renamed from tests/auto/declarative/visual/animation/reanchor/data/reanchor.2.png)bin637 -> 637 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.3.png (renamed from tests/auto/declarative/visual/animation/reanchor/data/reanchor.3.png)bin637 -> 637 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.4.png (renamed from tests/auto/declarative/visual/animation/reanchor/data/reanchor.4.png)bin647 -> 647 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.5.png (renamed from tests/auto/declarative/visual/animation/reanchor/data/reanchor.5.png)bin637 -> 637 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.6.png (renamed from tests/auto/declarative/visual/animation/reanchor/data/reanchor.6.png)bin637 -> 637 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.7.png (renamed from tests/auto/declarative/visual/animation/reanchor/data/reanchor.7.png)bin637 -> 637 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.8.png (renamed from tests/auto/declarative/visual/animation/reanchor/data/reanchor.8.png)bin642 -> 642 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.qml (renamed from tests/auto/declarative/visual/animation/reanchor/data/reanchor.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/reanchor.qml (renamed from tests/auto/declarative/visual/animation/reanchor/reanchor.qml)15
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.0.png (renamed from tests/auto/declarative/visual/animation/scriptAction/data/scriptAction.0.png)bin1418 -> 1418 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.1.png (renamed from tests/auto/declarative/visual/animation/scriptAction/data/scriptAction.1.png)bin1431 -> 1431 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.qml (renamed from tests/auto/declarative/visual/animation/scriptAction/data/scriptAction.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction.qml (renamed from tests/auto/declarative/visual/animation/scriptAction/scriptAction.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/fillmode/data/fillmode.0.png (renamed from tests/auto/declarative/visual/fillmode/data/fillmode.0.png)bin26099 -> 26099 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/fillmode/data/fillmode.qml (renamed from tests/auto/declarative/visual/fillmode/data/fillmode.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/fillmode/face.png (renamed from tests/auto/declarative/visual/fillmode/face.png)bin905 -> 905 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/fillmode/fillmode.qml (renamed from tests/auto/declarative/visual/fillmode/fillmode.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.0.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test.0.png)bin14875 -> 14875 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.1.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test.1.png)bin14875 -> 14875 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.2.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test.2.png)bin14863 -> 14863 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.3.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test.3.png)bin14877 -> 14877 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.4.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test.4.png)bin14877 -> 14877 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.5.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test.5.png)bin14877 -> 14877 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.qml (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.0.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test2.0.png)bin5375 -> 5375 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.1.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test2.1.png)bin5375 -> 5375 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.qml (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test3.0.png)bin12749 -> 12749 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test3.1.png)bin12667 -> 12667 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test3.2.png)bin12373 -> 12373 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test3.3.png)bin12150 -> 12150 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.4.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test3.4.png)bin11944 -> 11944 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.5.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test3.5.png)bin12150 -> 12150 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.6.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test3.6.png)bin12373 -> 12373 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.7.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test3.7.png)bin12667 -> 12667 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.8.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test3.8.png)bin12749 -> 12749 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.9.png (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test3.9.png)bin12710 -> 12710 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml (renamed from tests/auto/declarative/visual/focusscope/data-MAC/test3.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.0.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test.0.png)bin11501 -> 11501 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.1.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test.1.png)bin11501 -> 11501 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.2.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test.2.png)bin11486 -> 11486 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.3.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test.3.png)bin11500 -> 11500 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.4.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test.4.png)bin11500 -> 11500 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.5.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test.5.png)bin11500 -> 11500 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.qml (renamed from tests/auto/declarative/visual/focusscope/data-X11/test.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.0.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test2.0.png)bin4656 -> 4656 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.1.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test2.1.png)bin4656 -> 4656 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.qml (renamed from tests/auto/declarative/visual/focusscope/data-X11/test2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.0.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test3.0.png)bin10093 -> 10093 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.1.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test3.1.png)bin10051 -> 10051 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.2.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test3.2.png)bin9812 -> 9812 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.3.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test3.3.png)bin9625 -> 9625 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.4.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test3.4.png)bin9458 -> 9458 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.5.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test3.5.png)bin9645 -> 9645 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.6.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test3.6.png)bin9812 -> 9812 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.7.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test3.7.png)bin10051 -> 10051 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.8.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test3.8.png)bin10087 -> 10087 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.9.png (renamed from tests/auto/declarative/visual/focusscope/data-X11/test3.9.png)bin10072 -> 10072 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.qml (renamed from tests/auto/declarative/visual/focusscope/data-X11/test3.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.0.png (renamed from tests/auto/declarative/visual/focusscope/data/test.0.png)bin14836 -> 14836 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.1.png (renamed from tests/auto/declarative/visual/focusscope/data/test.1.png)bin14836 -> 14836 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.2.png (renamed from tests/auto/declarative/visual/focusscope/data/test.2.png)bin14821 -> 14821 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.3.png (renamed from tests/auto/declarative/visual/focusscope/data/test.3.png)bin14833 -> 14833 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.4.png (renamed from tests/auto/declarative/visual/focusscope/data/test.4.png)bin14833 -> 14833 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.5.png (renamed from tests/auto/declarative/visual/focusscope/data/test.5.png)bin14833 -> 14833 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.qml (renamed from tests/auto/declarative/visual/focusscope/data/test.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png (renamed from tests/auto/declarative/visual/focusscope/data/test2.0.png)bin5359 -> 5359 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png (renamed from tests/auto/declarative/visual/focusscope/data/test2.1.png)bin5359 -> 5359 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test2.qml (renamed from tests/auto/declarative/visual/focusscope/data/test2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.0.png (renamed from tests/auto/declarative/visual/focusscope/data/test3.0.png)bin12616 -> 12616 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.1.png (renamed from tests/auto/declarative/visual/focusscope/data/test3.1.png)bin12538 -> 12538 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.2.png (renamed from tests/auto/declarative/visual/focusscope/data/test3.2.png)bin12257 -> 12257 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.3.png (renamed from tests/auto/declarative/visual/focusscope/data/test3.3.png)bin12035 -> 12035 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.4.png (renamed from tests/auto/declarative/visual/focusscope/data/test3.4.png)bin11877 -> 11877 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.5.png (renamed from tests/auto/declarative/visual/focusscope/data/test3.5.png)bin12046 -> 12046 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.6.png (renamed from tests/auto/declarative/visual/focusscope/data/test3.6.png)bin12257 -> 12257 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.7.png (renamed from tests/auto/declarative/visual/focusscope/data/test3.7.png)bin12538 -> 12538 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.8.png (renamed from tests/auto/declarative/visual/focusscope/data/test3.8.png)bin12616 -> 12616 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.9.png (renamed from tests/auto/declarative/visual/focusscope/data/test3.9.png)bin12581 -> 12581 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.qml (renamed from tests/auto/declarative/visual/focusscope/data/test3.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/test.qml (renamed from tests/auto/declarative/visual/focusscope/test.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/test2.qml (renamed from tests/auto/declarative/visual/focusscope/test2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/test3.qml (renamed from tests/auto/declarative/visual/focusscope/test3.qml)2
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated-smooth.qml (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/animated-smooth.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated.qml (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/animated.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/borders.qml (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/borders.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/content/MyBorderImage.qml)4
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/bw.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/content/bw.png)bin1357 -> 1357 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-round.sci (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/content/colors-round.sci)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-stretch.sci (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/content/colors-stretch.sci)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/content/colors.png)bin1655 -> 1655 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.0.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.0.png)bin61731 -> 61731 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.1.png)bin98912 -> 98912 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.2.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.2.png)bin48780 -> 48780 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.3.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.3.png)bin32431 -> 32431 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.4.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.4.png)bin35835 -> 35835 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.5.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.5.png)bin79428 -> 79428 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.6.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.6.png)bin45928 -> 45928 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.0.png)bin23684 -> 23684 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.1.png)bin29115 -> 29115 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.2.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.2.png)bin27580 -> 27580 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.3.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.3.png)bin14822 -> 14822 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.4.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.4.png)bin21356 -> 21356 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.5.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.5.png)bin31143 -> 31143 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.6.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.6.png)bin26468 -> 26468 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.7.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.7.png)bin16225 -> 16225 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.qml (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.0.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.0.png)bin23029 -> 23029 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.1.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.1.png)bin23029 -> 23029 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.2.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.2.png)bin23029 -> 23029 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.3.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.3.png)bin23029 -> 23029 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.4.png (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.4.png)bin23029 -> 23029 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.qml (renamed from tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.0.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.0.png)bin1427 -> 1427 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.1.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.1.png)bin1357 -> 1357 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.2.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.2.png)bin1405 -> 1405 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.3.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.3.png)bin1427 -> 1427 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.0.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.0.png)bin1951 -> 1951 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.1.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.1.png)bin1951 -> 1951 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.10.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.10.png)bin1952 -> 1952 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.11.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.11.png)bin1930 -> 1930 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.12.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.12.png)bin1974 -> 1974 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.13.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.13.png)bin1961 -> 1961 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.14.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.14.png)bin1959 -> 1959 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.15.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.15.png)bin1937 -> 1937 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.16.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.16.png)bin1618 -> 1618 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.17.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.17.png)bin1952 -> 1952 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.18.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.18.png)bin1952 -> 1952 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.19.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.19.png)bin1930 -> 1930 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.2.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.2.png)bin1976 -> 1976 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.20.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.20.png)bin1930 -> 1930 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.21.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.21.png)bin1947 -> 1947 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.22.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.22.png)bin1941 -> 1941 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.23.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.23.png)bin1951 -> 1951 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.24.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.24.png)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.3.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.3.png)bin1987 -> 1987 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.4.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.4.png)bin1947 -> 1947 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.5.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.5.png)bin1975 -> 1975 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.6.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.6.png)bin1928 -> 1928 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.7.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.7.png)bin1928 -> 1928 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.8.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.8.png)bin1928 -> 1928 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.9.png (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.9.png)bin1928 -> 1928 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml (renamed from tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-horizontal.qml (renamed from tests/auto/declarative/visual/qdeclarativeflickable/flickable-horizontal.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-vertical.qml (renamed from tests/auto/declarative/visual/qdeclarativeflickable/flickable-vertical.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.0.png (renamed from tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.0.png)bin1090 -> 1090 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.1.png (renamed from tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.1.png)bin1134 -> 1134 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.2.png (renamed from tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.2.png)bin961 -> 961 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.3.png (renamed from tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.3.png)bin1076 -> 1076 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.4.png (renamed from tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.4.png)bin1134 -> 1134 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.5.png (renamed from tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.5.png)bin969 -> 969 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.qml (renamed from tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/test-flipable.qml (renamed from tests/auto/declarative/visual/qdeclarativeflipable/test-flipable.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.0.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview.0.png)bin1303 -> 1303 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview.1.png)bin1317 -> 1317 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview.2.png)bin1318 -> 1318 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview.3.png)bin1306 -> 1306 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview.4.png)bin1308 -> 1308 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview.5.png)bin1303 -> 1303 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview.6.png)bin1323 -> 1323 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview.7.png)bin1325 -> 1325 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview.8.png)bin1346 -> 1346 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview.9.png)bin1303 -> 1303 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.qml (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.0.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.0.png)bin1310 -> 1310 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.1.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.1.png)bin1322 -> 1322 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.10.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.10.png)bin1313 -> 1313 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.2.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.2.png)bin1341 -> 1341 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.3.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.3.png)bin1368 -> 1368 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.4.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.4.png)bin1319 -> 1319 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.5.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.5.png)bin1352 -> 1352 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.6.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.6.png)bin1309 -> 1309 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.7.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.7.png)bin1347 -> 1347 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.8.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.8.png)bin1310 -> 1310 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.9.png (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.9.png)bin1354 -> 1354 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.qml (renamed from tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview.qml (renamed from tests/auto/declarative/visual/qdeclarativegridview/gridview.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml (renamed from tests/auto/declarative/visual/qdeclarativegridview/gridview2.qml)9
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.0.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.0.png)bin1563 -> 1563 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.1.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.1.png)bin1570 -> 1570 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.2.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.2.png)bin1553 -> 1553 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.3.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.3.png)bin1563 -> 1563 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.4.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.4.png)bin1569 -> 1569 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.5.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.5.png)bin1569 -> 1569 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.6.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.6.png)bin1566 -> 1566 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.7.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.7.png)bin1566 -> 1566 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.8.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.8.png)bin1567 -> 1567 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.qml (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.qml (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.0.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.0.png)bin471 -> 471 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.1.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.1.png)bin474 -> 474 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.10.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.10.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.11.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.11.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.12.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.12.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.13.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.13.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.14.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.14.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.15.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.15.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.16.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.16.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.17.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.17.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.18.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.18.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.19.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.19.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.2.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.2.png)bin474 -> 474 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.20.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.20.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.21.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.21.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.22.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.22.png)bin1454 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.3.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.3.png)bin474 -> 474 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.4.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.4.png)bin481 -> 481 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.5.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.5.png)bin481 -> 481 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.6.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.6.png)bin481 -> 481 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.7.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.7.png)bin481 -> 481 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.8.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.8.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.9.png (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.9.png)bin479 -> 479 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/drag.qml (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/drag.qml)5
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/mousearea-visual.qml (renamed from tests/auto/declarative/visual/qdeclarativemouseregion/mouseregion.qml)11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.png (renamed from tests/auto/declarative/visual/qdeclarativeparticles/data/particles.0.png)bin10219 -> 10219 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.png (renamed from tests/auto/declarative/visual/qdeclarativeparticles/data/particles.1.png)bin13469 -> 13469 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.png (renamed from tests/auto/declarative/visual/qdeclarativeparticles/data/particles.2.png)bin14051 -> 14051 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.qml (renamed from tests/auto/declarative/visual/qdeclarativeparticles/data/particles.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml (renamed from tests/auto/declarative/visual/qdeclarativeparticles/particles.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/star.png (renamed from tests/auto/declarative/visual/qdeclarativeparticles/star.png)bin262 -> 262 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.0.png (renamed from tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.0.png)bin2263 -> 2263 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.1.png (renamed from tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.1.png)bin2329 -> 2329 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.2.png (renamed from tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.2.png)bin2279 -> 2279 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.3.png (renamed from tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.3.png)bin2263 -> 2263 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.4.png (renamed from tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.4.png)bin2263 -> 2263 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.5.png (renamed from tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.5.png)bin2308 -> 2308 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.6.png (renamed from tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.6.png)bin2280 -> 2280 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.qml (renamed from tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview-2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.0.png (renamed from tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.0.png)bin2321 -> 2321 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.1.png (renamed from tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.1.png)bin2380 -> 2380 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.2.png (renamed from tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.2.png)bin2315 -> 2315 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.3.png (renamed from tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.3.png)bin2372 -> 2372 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.4.png (renamed from tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.4.png)bin2327 -> 2327 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.qml (renamed from tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview-2.qml (renamed from tests/auto/declarative/visual/qdeclarativepathview/test-pathview-2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview.qml (renamed from tests/auto/declarative/visual/qdeclarativepathview/test-pathview.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.0.png (renamed from tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.0.png)bin1429 -> 1429 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.1.png (renamed from tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.1.png)bin1433 -> 1433 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.2.png (renamed from tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.2.png)bin1431 -> 1431 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.3.png (renamed from tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.3.png)bin1428 -> 1428 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.4.png (renamed from tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.4.png)bin1432 -> 1432 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.5.png (renamed from tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.5.png)bin1434 -> 1434 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.qml (renamed from tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/repeater.0.png (renamed from tests/auto/declarative/visual/qdeclarativepositioners/data/repeater.0.png)bin2790 -> 2790 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/repeater.qml (renamed from tests/auto/declarative/visual/qdeclarativepositioners/data/repeater.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/dynamic.qml (renamed from tests/auto/declarative/visual/qdeclarativepositioners/dynamic.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/repeater.qml (renamed from tests/auto/declarative/visual/qdeclarativepositioners/repeater.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.0.png (renamed from tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.0.png)bin1305 -> 1305 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.1.png (renamed from tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.1.png)bin1306 -> 1306 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.2.png (renamed from tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.2.png)bin1305 -> 1305 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.3.png (renamed from tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.3.png)bin1303 -> 1303 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.4.png (renamed from tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.4.png)bin1303 -> 1303 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.5.png (renamed from tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.5.png)bin1305 -> 1305 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.6.png (renamed from tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.6.png)bin1306 -> 1306 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.qml (renamed from tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedanimation.qml (renamed from tests/auto/declarative/visual/qdeclarativeeasefollow/easefollow.qml)17
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/clock.qml)6
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/background.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/content/background.png)bin46895 -> 46895 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/center.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/content/center.png)bin765 -> 765 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/clock.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/content/clock.png)bin20653 -> 20653 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/hour.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/content/hour.png)bin625 -> 625 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/minute.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/content/minute.png)bin625 -> 625 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/second.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/content/second.png)bin303 -> 303 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.0.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.0.png)bin17294 -> 17294 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.1.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.1.png)bin17394 -> 17394 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.2.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.2.png)bin17524 -> 17524 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.3.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.3.png)bin17572 -> 17572 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.qml (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.0.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.0.png)bin959 -> 959 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.1.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.1.png)bin1244 -> 1244 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.10.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.10.png)bin1299 -> 1299 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.2.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.2.png)bin1224 -> 1224 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.3.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.3.png)bin1243 -> 1243 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.4.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.4.png)bin1230 -> 1230 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.5.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.5.png)bin1231 -> 1231 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.6.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.6.png)bin1239 -> 1239 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.7.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.7.png)bin1241 -> 1241 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.8.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.8.png)bin1237 -> 1237 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.9.png (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.9.png)bin1229 -> 1229 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.qml (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml (renamed from tests/auto/declarative/visual/qdeclarativespringfollow/follow.qml)12
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/baseline/data/parentanchor.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data/parentanchor.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/baseline/data-X11/parentanchor.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/baseline/parentanchor.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide.0.png)bin2276 -> 2276 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.0.png)bin4818 -> 4818 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.1.png)bin4089 -> 4089 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.2.png)bin3128 -> 3128 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.3.png)bin1963 -> 1963 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/multilength.0.png)bin736 -> 736 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/multilength.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data-X11/elide.0.png)bin1002 -> 1002 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data-X11/elide.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data-X11/multilength.0.png)bin596 -> 596 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data-X11/multilength.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.0.png (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data/elide.0.png)bin1604 -> 1604 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data/elide.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.0.png (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.0.png)bin4818 -> 4818 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.1.png (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.1.png)bin4089 -> 4089 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.2.png (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.2.png)bin3128 -> 3128 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.3.png (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data-MAC/elide2.3.png)bin1963 -> 1963 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/data/elide2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/elide.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/elide2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/elide/multilength.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png (renamed from tests/auto/declarative/visual/qdeclarativetext/font/data-MAC/plaintext.0.png)bin103018 -> 103018 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/font/data-MAC/plaintext.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png (renamed from tests/auto/declarative/visual/qdeclarativetext/font/data-MAC/richtext.0.png)bin136492 -> 136492 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/font/data-MAC/richtext.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.0.png (renamed from tests/auto/declarative/visual/qdeclarativetext/font/data/plaintext.0.png)bin94120 -> 94120 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/font/data/plaintext.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.0.png (renamed from tests/auto/declarative/visual/qdeclarativetext/font/data/richtext.0.png)bin121122 -> 121122 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/font/data/richtext.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/font/plaintext.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml (renamed from tests/auto/declarative/visual/qdeclarativetext/font/richtext.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml (renamed from tests/auto/declarative/visual/qdeclarativetextedit/cursorDelegate.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png)bin793 -> 793 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png)bin795 -> 795 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png)bin803 -> 803 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png)bin805 -> 805 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png)bin805 -> 805 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png)bin805 -> 805 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png)bin799 -> 799 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png)bin799 -> 799 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png)bin803 -> 803 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.0.png)bin365 -> 365 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.1.png)bin365 -> 365 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.2.png)bin366 -> 366 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.3.png)bin362 -> 362 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/qt-669.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.0.png)bin1110 -> 1110 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.1.png)bin1110 -> 1110 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.2.png)bin1110 -> 1110 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.3.png)bin1110 -> 1110 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.4.png)bin1110 -> 1110 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.5.png)bin1110 -> 1110 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.6.png)bin1110 -> 1110 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.0.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.0.png)bin3322 -> 3322 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.1.png)bin3323 -> 3323 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.2.png)bin3325 -> 3325 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.3.png)bin3332 -> 3332 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.4.png)bin3329 -> 3329 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.5.png)bin3818 -> 3818 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.6.png)bin3333 -> 3333 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.7.png)bin3332 -> 3332 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.8.png)bin3347 -> 3347 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.qml (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.0.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.0.png)bin4802 -> 4802 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.1.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.1.png)bin4804 -> 4804 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.2.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.2.png)bin4801 -> 4801 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.3.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.3.png)bin4791 -> 4791 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.qml (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.0.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.0.png)bin1110 -> 1110 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.1.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.1.png)bin1110 -> 1110 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.2.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.2.png)bin1110 -> 1110 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.3.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.3.png)bin1110 -> 1110 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.4.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.4.png)bin1110 -> 1110 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.5.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.5.png)bin1110 -> 1110 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.6.png (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.6.png)bin1110 -> 1110 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.qml (renamed from tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml (renamed from tests/auto/declarative/visual/qdeclarativetextedit/qt-669.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml (renamed from tests/auto/declarative/visual/qdeclarativetextedit/wrap.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml (renamed from tests/auto/declarative/visual/qdeclarativetextinput/cursorDelegate.qml)14
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png)bin793 -> 793 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png)bin796 -> 796 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png)bin804 -> 804 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png)bin805 -> 805 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png)bin805 -> 805 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png)bin805 -> 805 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.6.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.6.png)bin801 -> 801 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.7.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.7.png)bin802 -> 802 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.8.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.8.png)bin802 -> 802 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.0.png)bin999 -> 999 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.1.png)bin1880 -> 1880 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.2.png)bin2962 -> 2962 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.3.png)bin2827 -> 2827 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.4.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.4.png)bin2827 -> 2827 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/hAlign.0.png)bin1245 -> 1245 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/hAlign.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.0.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.0.png)bin3314 -> 3314 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.1.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.1.png)bin3377 -> 3377 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.2.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.2.png)bin3323 -> 3323 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.3.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.3.png)bin3325 -> 3325 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.4.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.4.png)bin3322 -> 3322 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.5.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.5.png)bin3322 -> 3322 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.6.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.6.png)bin3326 -> 3326 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.7.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.7.png)bin3814 -> 3814 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.8.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.8.png)bin3324 -> 3324 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.qml (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.0.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.0.png)bin999 -> 999 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.1.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.1.png)bin1880 -> 1880 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.2.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.2.png)bin2962 -> 2962 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.3.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.3.png)bin2827 -> 2827 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.4.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.4.png)bin2827 -> 2827 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.qml (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.0.png (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-X11/hAlign.0.png)bin1245 -> 1245 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.qml (renamed from tests/auto/declarative/visual/qdeclarativetextinput/data-X11/hAlign.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml (renamed from tests/auto/declarative/visual/qdeclarativetextinput/echoMode.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml (renamed from tests/auto/declarative/visual/qdeclarativetextinput/hAlign.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qfxwebview/autosize/autosize.qml (renamed from tests/auto/declarative/visual/qfxwebview/autosize/autosize.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qfxwebview/autosize/data-X11/autosize.0.png (renamed from tests/auto/declarative/visual/qfxwebview/autosize/data/autosize.0.png)bin6886 -> 6886 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qfxwebview/autosize/data-X11/autosize.qml (renamed from tests/auto/declarative/visual/qfxwebview/autosize/data-X11/autosize.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qfxwebview/autosize/data/autosize.0.png (renamed from tests/auto/declarative/visual/qfxwebview/autosize/data-X11/autosize.0.png)bin6886 -> 6886 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qfxwebview/autosize/data/autosize.qml (renamed from tests/auto/declarative/visual/qfxwebview/autosize/data/autosize.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qmlvisual.pro (renamed from tests/auto/declarative/visual/visual.pro)2
-rw-r--r--tests/auto/declarative/qmlvisual/rect/GradientRect.qml (renamed from tests/auto/declarative/visual/rect/GradientRect.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/rect/MyRect.qml (renamed from tests/auto/declarative/visual/rect/MyRect.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/rect/data/rect-painting.0.png (renamed from tests/auto/declarative/visual/rect/data/rect-painting.0.png)bin29725 -> 29725 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/rect/data/rect-painting.qml (renamed from tests/auto/declarative/visual/rect/data/rect-painting.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/rect/rect-painting.qml (renamed from tests/auto/declarative/visual/rect/rect-painting.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/basic1.qml (renamed from tests/auto/declarative/visual/repeater/basic1.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/basic2.qml (renamed from tests/auto/declarative/visual/repeater/basic2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/basic3.qml (renamed from tests/auto/declarative/visual/repeater/basic3.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/basic4.qml (renamed from tests/auto/declarative/visual/repeater/basic4.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.0.png (renamed from tests/auto/declarative/visual/repeater/data-MAC/basic1.0.png)bin1550 -> 1550 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.qml (renamed from tests/auto/declarative/visual/repeater/data-MAC/basic1.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.0.png (renamed from tests/auto/declarative/visual/repeater/data-MAC/basic2.0.png)bin1550 -> 1550 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.qml (renamed from tests/auto/declarative/visual/repeater/data-MAC/basic2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.0.png (renamed from tests/auto/declarative/visual/repeater/data-MAC/basic3.0.png)bin1550 -> 1550 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.qml (renamed from tests/auto/declarative/visual/repeater/data-MAC/basic3.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.0.png (renamed from tests/auto/declarative/visual/repeater/data-MAC/basic4.0.png)bin1550 -> 1550 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.qml (renamed from tests/auto/declarative/visual/repeater/data-MAC/basic4.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.0.png (renamed from tests/auto/declarative/visual/repeater/data-X11/basic1.0.png)bin1354 -> 1354 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.qml (renamed from tests/auto/declarative/visual/repeater/data-X11/basic1.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.0.png (renamed from tests/auto/declarative/visual/repeater/data-X11/basic2.0.png)bin1354 -> 1354 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.qml (renamed from tests/auto/declarative/visual/repeater/data-X11/basic2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.0.png (renamed from tests/auto/declarative/visual/repeater/data-X11/basic3.0.png)bin1354 -> 1354 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.qml (renamed from tests/auto/declarative/visual/repeater/data-X11/basic3.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.0.png (renamed from tests/auto/declarative/visual/repeater/data-X11/basic4.0.png)bin1354 -> 1354 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.qml (renamed from tests/auto/declarative/visual/repeater/data-X11/basic4.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic1.0.png (renamed from tests/auto/declarative/visual/repeater/data/basic1.0.png)bin1513 -> 1513 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic1.qml (renamed from tests/auto/declarative/visual/repeater/data/basic1.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic2.0.png (renamed from tests/auto/declarative/visual/repeater/data/basic2.0.png)bin1513 -> 1513 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic2.qml (renamed from tests/auto/declarative/visual/repeater/data/basic2.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic3.0.png (renamed from tests/auto/declarative/visual/repeater/data/basic3.0.png)bin1513 -> 1513 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic3.qml (renamed from tests/auto/declarative/visual/repeater/data/basic3.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic4.0.png (renamed from tests/auto/declarative/visual/repeater/data/basic4.0.png)bin1513 -> 1513 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic4.qml (renamed from tests/auto/declarative/visual/repeater/data/basic4.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/selftest_noimages/data/selftest_noimages.qml (renamed from tests/auto/declarative/visual/selftest_noimages/data/selftest_noimages.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/selftest_noimages/selftest_noimages.qml (renamed from tests/auto/declarative/visual/selftest_noimages/selftest_noimages.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp (renamed from tests/auto/declarative/visual/tst_visual.cpp)55
-rw-r--r--tests/auto/declarative/qmlvisual/webview/embedding/data/nesting.0.png (renamed from tests/auto/declarative/visual/webview/embedding/data/nesting.0.png)bin5659 -> 5659 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/embedding/data/nesting.qml (renamed from tests/auto/declarative/visual/webview/embedding/data/nesting.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/embedding/egg.qml (renamed from tests/auto/declarative/visual/webview/embedding/egg.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/embedding/nesting.html (renamed from tests/auto/declarative/visual/webview/embedding/nesting.html)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/embedding/nesting.qml (renamed from tests/auto/declarative/visual/webview/embedding/nesting.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.0.png (renamed from tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.0.png)bin7999 -> 7999 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.1.png (renamed from tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.1.png)bin8020 -> 8020 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.2.png (renamed from tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.2.png)bin8143 -> 8143 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.3.png (renamed from tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.3.png)bin8158 -> 8158 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.4.png (renamed from tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.4.png)bin8284 -> 8284 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.5.png (renamed from tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.5.png)bin8284 -> 8284 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.6.png (renamed from tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.6.png)bin8284 -> 8284 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.7.png (renamed from tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.7.png)bin8284 -> 8284 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.8.png (renamed from tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.8.png)bin8284 -> 8284 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.qml (renamed from tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.0.png (renamed from tests/auto/declarative/visual/webview/javascript/data/windowObjects.0.png)bin7991 -> 7991 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.1.png (renamed from tests/auto/declarative/visual/webview/javascript/data/windowObjects.1.png)bin7991 -> 7991 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.2.png (renamed from tests/auto/declarative/visual/webview/javascript/data/windowObjects.2.png)bin7643 -> 7643 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.3.png (renamed from tests/auto/declarative/visual/webview/javascript/data/windowObjects.3.png)bin7733 -> 7733 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.4.png (renamed from tests/auto/declarative/visual/webview/javascript/data/windowObjects.4.png)bin8116 -> 8116 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.qml (renamed from tests/auto/declarative/visual/webview/javascript/data/windowObjects.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml (renamed from tests/auto/declarative/visual/webview/javascript/evaluateJavaScript.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/test-objects.html (renamed from tests/auto/declarative/visual/webview/javascript/test-objects.html)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml (renamed from tests/auto/declarative/visual/webview/javascript/windowObjects.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/data/fontFamily.0.png (renamed from tests/auto/declarative/visual/webview/settings/data/fontFamily.0.png)bin3774 -> 3774 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/data/fontFamily.qml (renamed from tests/auto/declarative/visual/webview/settings/data/fontFamily.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/data/fontSize.0.png (renamed from tests/auto/declarative/visual/webview/settings/data/fontSize.0.png)bin32180 -> 32180 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/data/fontSize.qml (renamed from tests/auto/declarative/visual/webview/settings/data/fontSize.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/data/noAutoLoadImages.0.png (renamed from tests/auto/declarative/visual/webview/settings/data/noAutoLoadImages.0.png)bin6609 -> 6609 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/data/noAutoLoadImages.1.png (renamed from tests/auto/declarative/visual/webview/settings/data/noAutoLoadImages.1.png)bin6609 -> 6609 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/data/noAutoLoadImages.qml (renamed from tests/auto/declarative/visual/webview/settings/data/noAutoLoadImages.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/data/setFontFamily.0.png (renamed from tests/auto/declarative/visual/webview/settings/data/setFontFamily.0.png)bin12132 -> 12132 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/data/setFontFamily.qml (renamed from tests/auto/declarative/visual/webview/settings/data/setFontFamily.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml (renamed from tests/auto/declarative/visual/webview/settings/fontFamily.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml (renamed from tests/auto/declarative/visual/webview/settings/fontSize.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml (renamed from tests/auto/declarative/visual/webview/settings/noAutoLoadImages.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/qtlogo.png (renamed from tests/auto/declarative/visual/animation/pauseAnimation/pics/qtlogo.png)bin2738 -> 2738 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml (renamed from tests/auto/declarative/visual/webview/settings/setFontFamily.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/tarzeau_ocr_a.ttf (renamed from tests/auto/declarative/visual/webview/settings/tarzeau_ocr_a.ttf)bin24544 -> 24544 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/test-img.html (renamed from tests/auto/declarative/visual/webview/settings/test-img.html)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/test.html (renamed from tests/auto/declarative/visual/webview/settings/test.html)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/pageWidth.qml (renamed from tests/auto/declarative/visual/webview/zooming/data/pageWidth.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/renderControl.0.png (renamed from tests/auto/declarative/visual/webview/zooming/data/renderControl.0.png)bin7589 -> 7589 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/renderControl.qml (renamed from tests/auto/declarative/visual/webview/zooming/data/renderControl.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.0.png (renamed from tests/auto/declarative/visual/webview/zooming/data/resolution.0.png)bin6275 -> 6275 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.1.png (renamed from tests/auto/declarative/visual/webview/zooming/data/resolution.1.png)bin3553 -> 3553 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.2.png (renamed from tests/auto/declarative/visual/webview/zooming/data/resolution.2.png)bin5838 -> 5838 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.3.png (renamed from tests/auto/declarative/visual/webview/zooming/data/resolution.3.png)bin8005 -> 8005 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.4.png (renamed from tests/auto/declarative/visual/webview/zooming/data/resolution.4.png)bin6087 -> 6087 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.qml (renamed from tests/auto/declarative/visual/webview/zooming/data/resolution.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/zoomTextOnly.0.png (renamed from tests/auto/declarative/visual/webview/zooming/data/zoomTextOnly.0.png)bin5589 -> 5589 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/zoomTextOnly.1.png (renamed from tests/auto/declarative/visual/webview/zooming/data/zoomTextOnly.1.png)bin6848 -> 6848 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/zoomTextOnly.qml (renamed from tests/auto/declarative/visual/webview/zooming/data/zoomTextOnly.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.0.png (renamed from tests/auto/declarative/visual/webview/zooming/data/zooming.0.png)bin735 -> 735 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.1.png (renamed from tests/auto/declarative/visual/webview/zooming/data/zooming.1.png)bin735 -> 735 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.2.png (renamed from tests/auto/declarative/visual/webview/zooming/data/zooming.2.png)bin735 -> 735 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.3.png (renamed from tests/auto/declarative/visual/webview/zooming/data/zooming.3.png)bin735 -> 735 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.qml (renamed from tests/auto/declarative/visual/webview/zooming/data/zooming.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml (renamed from tests/auto/declarative/visual/webview/zooming/pageWidth.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/qtlogo.png (renamed from tests/auto/declarative/visual/animation/easing/pics/qtlogo.png)bin2738 -> 2738 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/renderControl.html (renamed from tests/auto/declarative/visual/webview/zooming/renderControl.html)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml (renamed from tests/auto/declarative/visual/webview/zooming/renderControl.qml)2
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/resolution.html (renamed from tests/auto/declarative/visual/webview/zooming/resolution.html)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/resolution.qml16
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.html (renamed from tests/auto/declarative/visual/webview/zooming/zoomTextOnly.html)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.qml14
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/zooming.html (renamed from tests/auto/declarative/visual/webview/zooming/zooming.html)0
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml (renamed from tests/auto/declarative/visual/webview/zooming/zooming.qml)6
-rw-r--r--tests/auto/declarative/sql/data/error-creation.js8
-rw-r--r--tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.1.pngbin610 -> 0 bytes
-rw-r--r--tests/auto/declarative/visual/webview/zooming/resolution.qml17
-rw-r--r--tests/auto/declarative/visual/webview/zooming/zoomTextOnly.qml15
-rw-r--r--tests/auto/gui.pro1
-rw-r--r--tests/auto/headers/headersclean.cpp2
-rw-r--r--tests/auto/linguist/lconvert/data/endless-po-loop.ts4
-rwxr-xr-xtests/auto/linguist/lconvert/data/makeplurals.pl12
-rw-r--r--tests/auto/linguist/lconvert/data/msgid.ts10
-rw-r--r--tests/auto/linguist/lconvert/data/singular.po6
-rw-r--r--tests/auto/linguist/lconvert/data/test-broken-utf8.po.out3
-rw-r--r--tests/auto/linguist/lconvert/data/test-escapes.po.out3
-rw-r--r--tests/auto/linguist/lconvert/data/test-kde-fuzzy.po2
-rw-r--r--tests/auto/linguist/lconvert/data/test-kde-multiline.po2
-rw-r--r--tests/auto/linguist/lconvert/data/test-kde-plurals.po2
-rw-r--r--tests/auto/linguist/lconvert/data/test-slurp.po.out3
-rw-r--r--tests/auto/linguist/lconvert/data/test1-de.po2
-rw-r--r--tests/auto/linguist/lconvert/data/wrapping.po3
-rw-r--r--tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp178
-rw-r--r--tests/auto/qdate/tst_qdate.cpp50
-rw-r--r--tests/auto/qdatetime/tst_qdatetime.cpp71
-rw-r--r--tests/auto/qdir/tst_qdir.cpp7
-rw-r--r--tests/auto/qfiledialog/tst_qfiledialog.cpp3
-rw-r--r--tests/auto/qgl/qgl.pro1
-rw-r--r--tests/auto/qglbuffer/qglbuffer.pro2
-rw-r--r--tests/auto/qglthreads/qglthreads.pro2
-rw-r--r--tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp44
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp200
-rw-r--r--tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp31
-rw-r--r--tests/auto/qguard/qguard.pro2
-rw-r--r--tests/auto/qguard/tst_qguard.cpp350
-rw-r--r--tests/auto/qimagereader/images/corrupt.svg32
-rw-r--r--tests/auto/qimagereader/images/corrupt.svgzbin0 -> 407 bytes
-rw-r--r--tests/auto/qimagereader/images/rect.svg462
-rw-r--r--tests/auto/qimagereader/images/rect.svgzbin0 -> 5082 bytes
-rw-r--r--tests/auto/qimagereader/qimagereader.pro1
-rw-r--r--tests/auto/qimagereader/qimagereader.qrc4
-rw-r--r--tests/auto/qimagereader/tst_qimagereader.cpp64
-rw-r--r--tests/auto/qnetworkreply/tst_qnetworkreply.cpp13
-rw-r--r--tests/auto/qscriptengine/tst_qscriptengine.cpp21
-rw-r--r--tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp4
-rw-r--r--tests/auto/qsharedpointer/externaltests.cpp17
-rw-r--r--tests/auto/qsharedpointer/externaltests.h3
-rw-r--r--tests/auto/qsharedpointer/tst_qsharedpointer.cpp2
-rw-r--r--tests/auto/qsqlquery/tst_qsqlquery.cpp9
-rw-r--r--tests/auto/qstatemachine/tst_qstatemachine.cpp59
-rw-r--r--tests/auto/qstatictext/tst_qstatictext.cpp135
-rw-r--r--tests/auto/qtextcodec/tst_qtextcodec.cpp39
-rw-r--r--tests/auto/qtreeview/tst_qtreeview.cpp32
-rw-r--r--tests/auto/qvarlengtharray/tst_qvarlengtharray.cpp13
-rw-r--r--tests/auto/uic/baseline/config_fromuic3.ui.h1
-rw-r--r--tests/auto/uic/baseline/paletteeditoradvancedbase.ui.h1
-rw-r--r--tests/benchmarks/declarative/declarative.pro2
-rw-r--r--tests/benchmarks/declarative/qmltime/example.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/example.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/qmltime.cpp (renamed from tests/benchmarks/declarative/qdeclarativetime/qdeclarativetime.cpp)4
-rw-r--r--tests/benchmarks/declarative/qmltime/qmltime.pro (renamed from tests/benchmarks/declarative/qdeclarativetime/qdeclarativetime.pro)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/anchors/empty.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/anchors/empty.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/anchors/fill.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/anchors/fill.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/anchors/null.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/anchors/null.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/animation/large.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/animation/large.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/animation/largeNoProps.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/animation/largeNoProps.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/item_creation/children.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/item_creation/children.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/item_creation/data.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/item_creation/data.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/item_creation/no_creation.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/item_creation/no_creation.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/item_creation/resources.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/item_creation/resources.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/loader/Loaded.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/loader/Loaded.qml)0
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/loader/component_loader.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/loader/component_loader.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/loader/empty_loader.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/loader/empty_loader.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/loader/no_loader.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/loader/no_loader.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/loader/source_loader.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/loader/source_loader.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/positioner_creation/no_positioner.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/positioner_creation/no_positioner.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/positioner_creation/null_positioner.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/positioner_creation/null_positioner.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/positioner_creation/positioner.qml (renamed from tests/benchmarks/declarative/qdeclarativetime/tests/positioner_creation/positioner.qml)4
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/vmemetaobject/null.qml13
-rw-r--r--tests/benchmarks/declarative/qmltime/tests/vmemetaobject/property.qml18
-rw-r--r--tests/benchmarks/declarative/typeimports/data/QmlTestType1.qml2
-rw-r--r--tests/benchmarks/declarative/typeimports/data/QmlTestType2.qml2
-rw-r--r--tests/benchmarks/declarative/typeimports/data/QmlTestType3.qml2
-rw-r--r--tests/benchmarks/declarative/typeimports/data/QmlTestType4.qml2
-rw-r--r--tests/benchmarks/declarative/typeimports/data/cpp.qml15
-rw-r--r--tests/benchmarks/declarative/typeimports/data/qml.qml13
-rw-r--r--tests/benchmarks/declarative/typeimports/tst_typeimports.cpp138
-rw-r--r--tests/benchmarks/declarative/typeimports/typeimports.pro15
-rw-r--r--tools/linguist/linguist.pro2
-rw-r--r--tools/linguist/linguist/mainwindow.cpp2
-rw-r--r--tools/linguist/linguist/messagemodel.cpp2
-rw-r--r--tools/linguist/lupdate/lupdate.pro2
-rw-r--r--tools/linguist/lupdate/main.cpp3
-rw-r--r--tools/linguist/shared/numerus.cpp65
-rw-r--r--tools/linguist/shared/po.cpp472
-rw-r--r--tools/linguist/shared/qm.cpp4
-rw-r--r--tools/linguist/shared/translator.cpp2
-rw-r--r--tools/linguist/shared/translator.h2
-rw-r--r--tools/linguist/shared/xliff.cpp2
-rw-r--r--tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp5
-rw-r--r--tools/qdoc3/codemarker.cpp2
-rw-r--r--tools/qdoc3/codemarker.h24
-rw-r--r--tools/qdoc3/cppcodemarker.cpp76
-rw-r--r--tools/qdoc3/doc/examples/main.cpp2
-rw-r--r--tools/qdoc3/doc/qdoc-manual.qdoc106
-rw-r--r--tools/qdoc3/htmlgenerator.cpp8
-rw-r--r--tools/qdoc3/node.cpp2
-rw-r--r--tools/qdoc3/qscodemarker.cpp18
-rw-r--r--tools/qml/main.cpp13
-rw-r--r--tools/qml/qdeclarativetester.cpp (renamed from tools/qml/qfxtester.cpp)8
-rw-r--r--tools/qml/qdeclarativetester.h (renamed from tools/qml/qfxtester.h)6
-rw-r--r--tools/qml/qml.pro4
-rw-r--r--tools/qml/qmlruntime.cpp35
-rw-r--r--util/s60pixelmetrics/pixel_metrics.cpp11
-rw-r--r--util/s60pixelmetrics/pixel_metrics.h4
-rw-r--r--util/s60pixelmetrics/pm_mapperapp.cpp9
1499 files changed, 22092 insertions, 11625 deletions
diff --git a/config.tests/unix/pulseaudio/pulseaudiotest.cpp b/config.tests/unix/pulseaudio/pulseaudio.cpp
index eed88da..ba5405b 100644
--- a/config.tests/unix/pulseaudio/pulseaudiotest.cpp
+++ b/config.tests/unix/pulseaudio/pulseaudio.cpp
@@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the documentation of the Qt Toolkit.
+** This file is part of the config.tests of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -40,10 +40,19 @@
****************************************************************************/
#include <pulse/pulseaudio.h>
+#include <pulse/glib-mainloop.h>
-int main(int ,char **)
+#if !defined(PA_API_VERSION) || PA_API_VERSION-0 != 12
+# error "Incompatible PulseAudio API version"
+#endif
+#if !PA_CHECK_VERSION(0,9,0)
+# error "PulseAudio version too old"
+#endif
+
+int main(int, char **)
{
- pa_threaded_mainloop *mainloop = pa_threaded_mainloop_new();
- return 0;
+ const char *headers = pa_get_headers_version();
+ const char *library = pa_get_library_version();
+ pa_glib_mainloop_new(0);
+ return (headers - library) * 0;
}
-
diff --git a/config.tests/unix/pulseaudio/pulseaudio.pro b/config.tests/unix/pulseaudio/pulseaudio.pro
index 698a35f..d75b16f 100644
--- a/config.tests/unix/pulseaudio/pulseaudio.pro
+++ b/config.tests/unix/pulseaudio/pulseaudio.pro
@@ -1,4 +1,3 @@
-SOURCES = pulseaudiotest.cpp
-LIBS+=-lpulse
-CONFIG -= qt dylib
-mac:CONFIG -= app_bundle
+SOURCES = pulseaudio.cpp
+CONFIG -= qt
+LIBS +=
diff --git a/configure b/configure
index 3c38763..0dbf98f 100755
--- a/configure
+++ b/configure
@@ -173,6 +173,12 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+# detect the "echo without newline" style. usage: echo $ECHO_N "<string>$ECHO_C"
+if echo '\c' | grep '\c' >/dev/null; then
+ ECHO_N=-n
+else
+ ECHO_C='\c'
+fi
#-------------------------------------------------------------------------------
# window system detection
@@ -399,11 +405,7 @@ elif [ $COMMERCIAL_USER = "yes" ]; then
else
if [ -z "$LicenseKeyExt" ]; then
echo
- if echo '\c' | grep '\c' >/dev/null; then
- echo -n "Please enter your license key: "
- else
- echo "Please enter your license key: \c"
- fi
+ echo $ECHO_N "Please enter your license key: $ECHO_C"
read LicenseKeyExt
Licensee="Unknown user"
fi
@@ -4064,11 +4066,7 @@ elif [ "$Edition" = "OpenSource" ]; then
echo "Type 'yes' to accept this license offer."
echo "Type 'no' to decline this license offer."
echo
- if echo '\c' | grep '\c' >/dev/null; then
- echo -n "Do you accept the terms of $affix license? "
- else
- echo "Do you accept the terms of $affix license? \c"
- fi
+ echo $ECHO_N "Do you accept the terms of $affix license? $ECHO_C"
read acceptance
fi
echo
@@ -4099,11 +4097,7 @@ elif [ "$Edition" = "Preview" ]; then
echo "Type 'yes' to accept this license offer."
echo "Type 'no' to decline this license offer."
echo
- if echo '\c' | grep '\c' >/dev/null; then
- echo -n "Do you accept the terms of the license? "
- else
- echo "Do you accept the terms of the license? \c"
- fi
+ echo $ECHO_N "Do you accept the terms of the license? $ECHO_C"
read acceptance
fi
echo
@@ -4189,11 +4183,7 @@ elif [ "$Edition" != "OpenSource" ]; then
echo "Type 'yes' to accept this license offer."
echo "Type 'no' to decline this license offer."
echo
- if echo '\c' | grep '\c' >/dev/null; then
- echo -n "Do you accept the terms of the $TheLicense? "
- else
- echo "Do you accept the terms of the $TheLicense? \c"
- fi
+ echo $ECHO_N "Do you accept the terms of the $TheLicense? $ECHO_C"
read acceptance
fi
echo
@@ -5213,6 +5203,29 @@ if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" ]; then
elif [ "$CFG_GLIB" = "no" ]; then
CFG_ICD=no
fi
+
+ # Auto-detect PulseAudio support
+ if [ "$CFG_PULSEAUDIO" != "no" ]; then
+ if [ -n "$PKG_CONFIG" ]; then
+ QT_CFLAGS_PULSEAUDIO=`$PKG_CONFIG --cflags libpulse '>=' 0.9.10 libpulse-mainloop-glib 2>/dev/null`
+ QT_LIBS_PULSEAUDIO=`$PKG_CONFIG --libs libpulse '>=' 0.9.10 libpulse-mainloop-glib 2>/dev/null`
+ fi
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/pulseaudio "PulseAudio" $L_FLAGS $I_FLAGS $l_FLAGS $QT_CFLAGS_PULSEAUDIO $QT_LIBS_PULSEAUDIO $X11TESTS_FLAGS; then
+ CFG_PULSEAUDIO=yes
+ QMakeVar set QT_CFLAGS_PULSEAUDIO "$QT_CFLAGS_PULSEAUDIO"
+ QMakeVar set QT_LIBS_PULSEAUDIO "$QT_LIBS_PULSEAUDIO"
+ else
+ if [ "$CFG_PULSEAUDIO" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
+ echo "PulseAudio support cannot be enabled due to functionality tests!"
+ echo " Turn on verbose messaging (-v) to $0 to see the final report."
+ echo " If you believe this message is in error you may use the continue"
+ echo " switch (-continue) to $0 to continue."
+ exit 101
+ else
+ CFG_PULSEAUDIO=no
+ fi
+ fi
+ fi
fi # X11/QWS
# x11
@@ -6036,14 +6049,6 @@ if [ "$CFG_ALSA" = "auto" ]; then
fi
fi
-if [ "$CFG_PULSEAUDIO" = "auto" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/pulseaudio "pulseaudio" $L_FLAGS $I_FLAGS $l_FLAGS; then
- CFG_PULSEAUDIO=yes
- else
- CFG_PULSEAUDIO=no
- fi
-fi
-
if [ "$CFG_JAVASCRIPTCORE_JIT" = "yes" ] || [ "$CFG_JAVASCRIPTCORE_JIT" = "auto" ]; then
if [ "$CFG_ARCH" = "arm" ] || [ "$CFG_ARCH" = "armv6" ]; then
"$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/javascriptcore-jit "javascriptcore-jit" $L_FLAGS $I_FLAGS $l_FLAGS
@@ -7638,11 +7643,7 @@ else
fi
if [ "$OPT_VERBOSE" = "yes" ]; then
- if echo '\c' | grep '\c' >/dev/null; then
- echo -n "qmake vars ............. "
- else
- echo "qmake vars ............. \c"
- fi
+ echo $ECHO_N "qmake vars .......... $ECHO_C"
cat "$QMAKE_VARS_FILE" | tr '\n' ' '
echo "qmake switches ......... $QMAKE_SWITCHES"
fi
@@ -7700,6 +7701,7 @@ echo "CUPS support ........... $CFG_CUPS"
echo "Iconv support .......... $CFG_ICONV"
echo "Glib support ........... $CFG_GLIB"
echo "GStreamer support ...... $CFG_GSTREAMER"
+echo "PulseAudio support ..... $CFG_PULSEAUDIO"
echo "Large File support ..... $CFG_LARGEFILE"
echo "GIF support ............ $CFG_GIF"
if [ "$CFG_TIFF" = "no" ]; then
@@ -7807,7 +7809,6 @@ elif [ "$CFG_OPENSSL" = "linked" ]; then
fi
echo "OpenSSL support ........ $CFG_OPENSSL $OPENSSL_LINKAGE"
echo "Alsa support ........... $CFG_ALSA"
-echo "Pulse Audio support .... $CFG_PULSEAUDIO"
if [ "$PLATFORM_MAC" = "yes" ]; then
echo "CoreWlan support ....... $CFG_COREWLAN"
fi
@@ -8025,21 +8026,12 @@ for file in .projects .projects.3; do
continue;
fi
QMAKE_SPEC_ARGS="-spec $SPEC"
- if echo '\c' | grep '\c' >/dev/null; then
- echo -n " for $a"
- else
- echo " for $a\c"
- fi
+ echo $ECHO_N " for $a$ECHO_C"
QMAKE="$outpath/bin/qmake"
QMAKE_ARGS="$QMAKE_SWITCHES $QMAKE_SPEC_ARGS"
if [ "$file" = ".projects.3" ]; then
- if echo '\c' | grep '\c' >/dev/null; then
- echo -n " (fast)"
- else
- echo " (fast)\c"
- fi
- echo
+ echo " (fast)"
cat >"${OUTDIR}/Makefile" <<EOF
# ${OUTDIR}/Makefile: generated by configure
diff --git a/demos/declarative/minehunt/minehunt.pro b/demos/declarative/minehunt/minehunt.pro
index 2df33e6..7b18bfb 100644
--- a/demos/declarative/minehunt/minehunt.pro
+++ b/demos/declarative/minehunt/minehunt.pro
@@ -9,7 +9,6 @@ DESTDIR = MinehuntCore
# Input
SOURCES += minehunt.cpp
-
sources.files = minehunt.qml minehunt.pro
sources.path = $$[QT_INSTALL_DEMOS]/declarative/minehunt
@@ -23,3 +22,18 @@ MinehuntCore_sources.path = $$[QT_INSTALL_DEMOS]/declarative/minehunt/MinehuntCo
INSTALLS = sources MinehuntCore_sources target
+symbian:{
+ load(data_caging_paths)
+ TARGET.EPOCALLOWDLLDATA = 1
+ TARGET.CAPABILITY = all -tcb
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
+ importFiles.sources = minehunt.dll \
+ MinehuntCore/Explosion.qml \
+ MinehuntCore/pics \
+ MinehuntCore/qmldir
+ importFiles.path = $$QT_IMPORTS_BASE_DIR/MinehuntCore
+ DEPLOYMENT = importFiles
+}
+
+INSTALLS = sources MinehuntCore_sources target
diff --git a/demos/declarative/minehunt/minehunt.qml b/demos/declarative/minehunt/minehunt.qml
index 9e99706..2ca6c4c 100644
--- a/demos/declarative/minehunt/minehunt.qml
+++ b/demos/declarative/minehunt/minehunt.qml
@@ -1,5 +1,5 @@
import Qt 4.6
-import MinehuntCore 1.0
+import "MinehuntCore" 1.0
Item {
id: field
diff --git a/demos/declarative/photoviewer/photoviewer.qml b/demos/declarative/photoviewer/photoviewer.qml
index 8feee02..662ea12 100644
--- a/demos/declarative/photoviewer/photoviewer.qml
+++ b/demos/declarative/photoviewer/photoviewer.qml
@@ -1,5 +1,5 @@
import Qt 4.6
-import PhotoViewerCore 1.0
+import "PhotoViewerCore" 1.0
Rectangle {
id: mainWindow
diff --git a/demos/declarative/samegame/samegame.qml b/demos/declarative/samegame/samegame.qml
index f084ff6..6c58d49 100644
--- a/demos/declarative/samegame/samegame.qml
+++ b/demos/declarative/samegame/samegame.qml
@@ -1,5 +1,5 @@
import Qt 4.6
-import SamegameCore 1.0
+import "SamegameCore" 1.0
import "SamegameCore/samegame.js" as Logic
Rectangle {
diff --git a/demos/declarative/twitter/twitter.qml b/demos/declarative/twitter/twitter.qml
index 259f79a..94d53f1 100644
--- a/demos/declarative/twitter/twitter.qml
+++ b/demos/declarative/twitter/twitter.qml
@@ -1,5 +1,5 @@
import Qt 4.6
-import TwitterCore 1.0 as Twitter
+import "TwitterCore" 1.0 as Twitter
Item {
id: screen; width: 320; height: 480
diff --git a/demos/multimedia/player/videowidget.cpp b/demos/multimedia/player/videowidget.cpp
index 3bf36c3..be864ec 100644
--- a/demos/multimedia/player/videowidget.cpp
+++ b/demos/multimedia/player/videowidget.cpp
@@ -47,6 +47,12 @@ VideoWidget::VideoWidget(QWidget *parent)
: QVideoWidget(parent)
{
setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
+
+ QPalette p = palette();
+ p.setColor(QPalette::Window, Qt::black);
+ setPalette(p);
+
+ setAttribute(Qt::WA_OpaquePaintEvent);
}
void VideoWidget::keyPressEvent(QKeyEvent *event)
diff --git a/demos/symbianpkgrules.pri b/demos/symbianpkgrules.pri
index c511836..68a82cd 100644
--- a/demos/symbianpkgrules.pri
+++ b/demos/symbianpkgrules.pri
@@ -10,6 +10,7 @@ vendorinfo = \
":\"Nokia, Qt\"" \
" "
-default_deployment.pkg_prerules += vendorinfo
+demos_deployment.pkg_prerules += vendorinfo
+DEPLOYMENT += demos_deployment
isEmpty(ICON):ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg
diff --git a/dist/changes-4.6.3 b/dist/changes-4.6.3
index 57cc453..d8e9fb4 100644
--- a/dist/changes-4.6.3
+++ b/dist/changes-4.6.3
@@ -138,6 +138,14 @@ Qt for Windows CE
-
+Qt for Symbian
+--------------
+
+ - [QT-567] Implementation of QtMultimedia QAudio* APIs
+ - [QTBUG-8919] Modified Phonon MMF backend to support video playback on
+ platforms which use graphics surfaces (i.e. platforms using the
+ New Graphics Architecture a.k.a. ScreenPlay)
+
****************************************************************************
* Tools *
****************************************************************************
diff --git a/doc/src/declarative/advtutorial.qdoc b/doc/src/declarative/advtutorial.qdoc
index e420e6d..598f47b 100644
--- a/doc/src/declarative/advtutorial.qdoc
+++ b/doc/src/declarative/advtutorial.qdoc
@@ -45,11 +45,12 @@
\brief A more advanced tutorial, showing how to use QML to create a game.
\nextpage QML Advanced Tutorial 1 - Creating the Game Canvas and Blocks
-This tutorial goes step-by-step through creating a full application using just QML.
-It is assumed that you already know basic QML (such as from doing the simple tutorial) and the focus is on showing
-how to turn that knowledge into a complete and functioning application.
+This tutorial walks step-by-step through the creation of a full application using QML.
-This tutorial involves a significant amount of JavaScript to implement the game logic. An understanding of JavaScript is helpful to understand the JavaScript parts of this tutorial, but if you don't understand JavaScript you can still get a feel for how to integrate QML elements with backend logic which creates and controls them. From the QML perspective, there is little difference between integrating with backend logic written in C++ and backend logic written in JavaScript.
+It is assumed that you already know the basics of QML (for example, from reading the \l{QML Tutorial}{simple tutorial}) and this
+tutorial focuses on using that knowledge to produce a complete and functioning application.
+
+The tutorial involves a significant amount of JavaScript to implement the game logic. An understanding of JavaScript is helpful to understand parts of this tutorial, but if you don't understand JavaScript you can still get a feel for how you can integrate backend logic to create and control QML elements. From the QML perspective, there is little difference between integrating QML with backend logic written in C++ and backend logic written in JavaScript.
In this tutorial we recreate, step by step, a version of the Same Game demo in $QTDIR/demos/declarative/samegame.qml.
The results of the individual steps are in the $QTDIR/examples/declarative/tutorials/samegame directory.
@@ -75,45 +76,62 @@ Tutorial chapters:
\previouspage QML Advanced Tutorial
\nextpage QML Advanced Tutorial 2 - Populating the Game Canvas
-The first step is to create the items in your application. In Same Game we have a main game screen and the blocks that populate it.
+In this chapter:
+
+\tableofcontents
+
+The files referenced on this page can be found in \c $QTDIR\examples\tutorials\samegame\samegame1.
+
+\section2 Creating the application screen
+
+The first step is to create the basic QML items in your application.
+
+To begin with, we create our Same Game application with a main screen like this:
\image declarative-adv-tutorial1.png
-Here is the QML code for the basic elements. The game window:
+This is defined by the main application file, \c samegame.qml, which looks like this:
\snippet declarative/tutorials/samegame/samegame1/samegame.qml 0
-This gives you a basic game window, with room for the game canvas. A new game
-button and room to display the score. The one thing you may not recognize here
-is the \l SystemPalette item. This item provides access to the Qt system palette
-and is used to make the button look more like a system button (for exact native
-feel you would use a \l QPushButton). Since we want a fully functional button,
-we use the QML elements Text and MouseArea inside a Rectangle to assemble a
-button. Below is the code which we wrote to do this:
+This gives you a basic game window that includes the main canvas for the
+blocks, a "New Game" button and a score display.
-\snippet declarative/tutorials/samegame/samegame1/Button.qml 0
+One item you may not recognize here
+is the \l SystemPalette item. This provides access to the Qt system palette
+and is used to give the button a more native look-and-feel.
+
+\section2 Adding \c Button and \c Block components
-Note that this Button component was written to be fairly generic, in case we
-want to use a similarly styled button later.
+The \c Button item in the code above is defined in a separate file named \c Button.qml.
+To create a functional button, we use the QML elements \l Text and \l MouseArea inside a \l Rectangle.
+Here is the \c Button.qml code:
+
+\snippet declarative/tutorials/samegame/samegame1/Button.qml 0
-And here is a simple block:
+In Same Game, the screen is filled with small blocks when the game begins.
+Each block is just an item that contains an image. The block
+code is defined in a separate \c Block.qml file:
\snippet declarative/tutorials/samegame/samegame1/Block.qml 0
-Since it doesn't do anything yet it's very simple, just an image. As the
-tutorial progresses and the block starts doing things the file will become
-more than just an image. Note that we've set the image to be the size of the item.
-This will be used later, when we dynamically create and size the block items the image will be scaled automatically
-to the correct size.
+At the moment, the block doesn't do anything; it is just an image. As the
+tutorial progresses we will animate and give behaviors to the blocks.
+We have not added any code yet to create the blocks; we will do this
+in the next chapter.
-Note that because there are several stages to this tutorial they share images. This is done by having a shared resources
-folder containing the images, and all stages of the tutorial refer to the same shared folder. This is the reason for the
-'../shared/pics' part of the image source. The image source can be any relative or absolute path, and it is relative to the
-location of the file the Image element is in, with ../ meaning to go up one level.
+We have set the image to be the size of its parent Item using \c {anchors.fill: parent}.
+This means that when we dynamically create and resize the block items
+later on in the tutorial, the image will be scaled automatically to the
+correct size.
-You should be familiar with all that goes on in these files so far. This is a
-very basic start and doesn't move at all - next we will populate the game canvas
-with some blocks.
+Notice the relative path for the Image element's \c source property.
+This path is relative to the location of the file that contains the \l Image element.
+Alternatively, you could set the Image source to an absolute file path or a URL
+that contains an image.
+
+You should be familiar with the code so far. We have just created some basic
+elements to get started. Next, we will populate the game canvas with some blocks.
*/
@@ -124,64 +142,69 @@ with some blocks.
\previouspage QML Advanced Tutorial 1 - Creating the Game Canvas and Blocks
\nextpage QML Advanced Tutorial 3 - Implementing the Game Logic
-Now that we've written some basic elements, let's start writing the game. The
-first thing to do is to generate all of the blocks. Now we need to dynamically
-generate all of these blocks, because you have a new, random set of blocks
-every time. As they are dynamically generated every time the new game button is
-clicked, as opposed to on startup, we will be dynamically generating the blocks
-in the JavaScript, as opposed to using a \l Repeater.
+In this chapter:
+
+\tableofcontents
+
+The files referenced on this page can be found in \c $QTDIR\examples\tutorials\samegame\samegame2.
+
+
+\section2 Generating the blocks in JavaScript
-This adds enough script to justify a new file, \c{samegame.js}, the intial version
-of which is shown below
+Now that we've written some basic elements, let's start writing the game.
+
+The first task is to generate the game blocks. Each time the New Game button
+is clicked, the game canvas is populated with a new, random set of
+blocks. Since we need to dynamically generate new blocks for each new game,
+we cannot use \l Repeater to define the blocks. Instead, we will
+create the blocks in JavaScript.
+
+Here is the JavaScript code for generating the blocks, contained in a new
+file, \c samegame.js:
\snippet declarative/tutorials/samegame/samegame2/samegame.js 0
-The gist of this code is that we create the blocks dynamically, as many as will fit, and then store them in an array for future reference.
-The \c initBoard function will be hooked up to the new game button soon, and should be fairly straight forward.
-
-The \c createBlock function is a lot bigger, and I'll explain it block by block.
-First we ensure that the component has been constructed. QML elements, including composite ones like the \c Block.qml
-that we've written, are never created directly in script. While there is a function to parse and create an arbitrary QML string,
-in the case where you are repeatedly creating the same item you will want to use the \c createComponent function. \c createComponent is
-a built-in function in the declarative JavaScript, and returns a component object.
-A component object prepares and stores a QML element (usually a composite element) for easy and efficient use.
-When the component is ready, you can create a new instance of the loaded QML with the \c createObject method.
-If the component is loaded remotely (over HTTP for example) then you will have to wait for the component to finish loading
-before calling \c createObject. Since we don't wait here (the waiting is asyncronous, the component object will send a signal to tell
-you when it's done) this code will only work if the block QML is a local file.
-
-As we aren't waiting for the component, the next block of code creates a game block with \c{component.createObject}.
-Since there could be an error in the QML file you are trying to load, success is not guaranteed.
-The first bit of error checkign code comes right after \c{createObject()}, to ensure that the object loaded correctly.
-If it did not load correctly the function returns false, but we don't have that hooked up to the main UI to indicate
-that something has gone wrong. Instead we print out error messages to the console, because an error here means an invalid
-QML file and should only happen while you are developing and testing the UI.
-
-Next we start to set up our dynamically created block.
-Because the \c{Block.qml} file is generic it needs to be placed in the main scene, and in the right place.
-This is why \c parent, \c x, \c y, \c width and \c height are set. We then store it in the board array for later use.
-
-Finally, we have some more error handling. You can only call \c{createObject} if the component has loaded.
-If it has not loaded, either it is still loading or there was an error loading (such as a missing file).
-Since we don't request remote files the problem is likely to be a missing or misplaced file.
-Again we print this to the console to aid debugging.
-
-You now have the code to create a field of blocks dynamically, like below:
+The main function here is \c initBoard(). It creates an array to store all the game
+blocks, then calls \c createBlock() to create enough blocks to fill the game canvas.
-\image declarative-adv-tutorial2.png
+The \c createBlock() function creates a block using the \c Block.qml file
+and moves the new block to its position on the game canvas. This involves several steps:
-To hook this code up to the \e{New Game} button, you alter it as below:
+\list
+\o \l {createComponent(url file)} is called to generate an element from \c Block.qml.
+ If the component is ready, we can call \c createObject() to create an instance of the \c Block item.
+ (If a component is loaded remotely - over HTTP for example - then we would have to wait for the
+ component to finish loading before calling \c createObject()).
+\o If \c createObject() returned null (i.e. if there was an error while
+ loading the object), print the error information.
+\o Place the block in its position on the board and set its width and height.
+ Also, store in the blocks array for future reference.
+\o Finally, print error information to the console if the component could not be
+ loaded for some reason (for example, if the file is missing).
+\endlist
-\snippet declarative/tutorials/samegame/samegame2/samegame.qml 1
-We have just replaced the \c{onClicked: console.log("Implement me!")} with \c{onClicked: initBoard()}.
-Note that in order to have the function available, you'll need to include the script in the main file,
-by adding a script element to it.
+\section2 Connecting JavaScript components to QML
+
+Now we need to call the JavaScript code in \c samegame.js from our QML files.
+To do this, we add this line to \c samegame.qml which imports
+the JavaScript file as a \l{Modules#QML Modules}{module}:
\snippet declarative/tutorials/samegame/samegame2/samegame.qml 2
-With those two changes, and the script file, you are now dynamically creating a field of blocks you can play with.
-They don't do anything now though; the next chapter will add the game mechanics.
+This allows us to refer to any functions within \c samegame.js using "SameGame"
+as a prefix: for example, \c SameGame.initBoard() or \c SameGame.createBlock().
+This means we can now connect the New Game button's \c onClicked handler to the \c initBoard()
+function, like this:
+
+\snippet declarative/tutorials/samegame/samegame2/samegame.qml 1
+
+So, when you click the New Game button, \c initBoard() is called and generates a field of blocks, like this:
+
+\image declarative-adv-tutorial2.png
+
+Now, we have a screen of blocks, and we can begin to add the game mechanics.
+
*/
/*!
@@ -191,11 +214,20 @@ They don't do anything now though; the next chapter will add the game mechanics.
\previouspage QML Advanced Tutorial 2 - Populating the Game Canvas
\nextpage QML Advanced Tutorial 4 - Finishing Touches
-First we add to the \c initBoard function clearing of the board before filling it up again, so that clicking new game won't leave the previous game
-lying around in the background. To the \c createComponent function we have added setting the type of the block to a number between
-one and three - it's fundamental to the game logic that the blocks be different types if you want a fun game.
+In this chapter:
+
+\tableofcontents
+
+The files referenced on this page can be found in \c $QTDIR\examples\tutorials\samegame\samegame3.
+
+\section2 Making a playable game
+
+Now that we have all the game components, we can add the game logic that
+dictates how a player interacts with the blocks and plays the game
+until it is won or lost.
+
+To do this, we have added the following functions to \c samegame.js:
-The main change was adding the following game logic functions:
\list
\o function \c{handleClick(x,y)}
\o function \c{floodFill(xIdx,yIdx,type)}
@@ -204,59 +236,65 @@ The main change was adding the following game logic functions:
\o function \c{floodMoveCheck(xIdx, yIdx, type)}
\endlist
-As this is a tutorial about QML, not game design, these functions will not be discussed in detail. The game logic here
-was written in script, but it could have been written in C++ and had these functions exposed in the same way (except probably faster).
-The interfacing of these functions and QML is what we will focus on. Of these functions, only \c handleClick and \c victoryCheck
-interface closely with the QML. Those functions are shown below (the rest are still in the code for this tutorial located at
-\c{$QTDIR/examples/declarative/tutorials/samegame}).
+As this is a tutorial about QML, not game design, we will only discuss \c handleClick() and \c victoryCheck() below since they interface directly with the QML elements. Note that although the game logic here is written in JavaScript, it could have been written in C++ and then exposed to JavaScript.
-\snippet declarative/tutorials/samegame/samegame3/samegame.js 1
-\snippet declarative/tutorials/samegame/samegame3/samegame.js 2
+\section3 Enabling mouse click interaction
-You'll notice them referring to the \c gameCanvas item. This is an item that has been added to the QML for easier interfacing with the game logic.
-It is placed next to the background image and replaces the background as the item to create the blocks in.
-Its code is shown below:
+To make it easier for the JavaScript code to interface with the QML elements, we have added an Item called \c gameCanvas to \c samegame.qml. It replaces the background as the item which contains the blocks, and accepts mouse input from the user. Here is the item code:
\snippet declarative/tutorials/samegame/samegame3/samegame.qml 1
-This item is the exact size of the board, contains a score property, and a mouse region for input.
-The blocks are now created as its children, and its size is used to determining the board size, so as to scale to the available screen size.
-Since it needs to bind its size to a multiple of \c tileSize, \c tileSize needs to be moved into a QML property and out of the script file.
+The \c gameCanvas item is the exact size of the board, and has a \c score property and a \l MouseArea for input.
+The blocks are now created as its children, and its dimensions are used to determine the board size so that
+the application scales to the available screen size.
+Since its size is bound to a multiple of \c tileSize, \c tileSize needs to be moved out of \c samegame.js and into \c samegame.qml as a QML property.
Note that it can still be accessed from the script.
-The mouse region simply calls \c{handleClick()}, which deals with the input events.
-Should those events cause the player to score, \c{gameCanvas.score} is updated.
-The score display text item has also been changed to bind its text property to \c{gamecanvas.score}.
-Note that if score was a global variable in the \c{samegame.js} file you could not bind to it. You can only bind to QML properties.
+The \l MouseArea simply calls \c{handleClick()} in \c samegame.js, which determines whether the player's click should cause any blocks to be removed, and updates \c gameCanvas.score with the current score if necessary. Here is the \c handleClick() function:
+
+\snippet declarative/tutorials/samegame/samegame3/samegame.js 1
+
+Note that if \c score was a global variable in the \c{samegame.js} file you would not be able to bind to it. You can only bind to QML properties.
-\c victoryCheck() primarily updates the score variable. But it also pops up a dialog saying \e {Game Over} when the game is over.
-In this example we wanted a pure-QML, animated dialog, and since QML doesn't contain one, we wrote our own.
-Below is the code for the \c Dialog element, note how it's designed so as to be usable imperatively from within the script file (via the functions and signals):
+\section3 Updating the score
+
+When the player clicks a block and triggers \c handleClick(), \c handleClick() also calls victoryCheck() to update the score and to check whether the player has completed the game. Here is the \c victoryCheck() code:
+
+\snippet declarative/tutorials/samegame/samegame3/samegame.js 2
+
+This updates the \c gameCanvas.score value and displays a "Game Over" dialog if the game is finished.
+
+The Game Over dialog is created using a \c Dialog element that is defined in \c Dialog.qml. Here is the \c Dialog.qml code. Notice how it is designed to be usable imperatively from the script file, via the functions and signals:
\snippet declarative/tutorials/samegame/samegame3/Dialog.qml 0
-And this is how it's used in the main QML file:
+And this is how it is used in the main \c samegame.qml file:
\snippet declarative/tutorials/samegame/samegame3/samegame.qml 2
-Combined with the line of code in \c victoryCheck, this causes a dialog to appear when the game is over, informing the user of that fact.
-We now have a working game! The blocks can be clicked, the player can score, and the game can end (and then you start a new one).
-Below is a screenshot of what has been accomplished so far:
+\section3 A dash of color
-\image declarative-adv-tutorial3.png
+It's not much fun to play Same Game if all the blocks are the same color, so we've modified the \c createBlock() function in \c samegame.js to randomly create a different type of block (for either red, green or blue) each time it is called. \c Block.qml has also changed so that each block contains a different image depending on its type:
-Here is the QML code as it is now for the main file:
+\snippet declarative/tutorials/samegame/samegame3/Block.qml 0
-\snippet declarative/tutorials/samegame/samegame3/samegame.qml 0
-And the code for the block:
+\section2 A working game
-\snippet declarative/tutorials/samegame/samegame3/Block.qml 0
+Now we now have a working game! The blocks can be clicked, the player can score, and the game can end (and then you can start a new one).
+Here is a screenshot of what has been accomplished so far:
+
+\image declarative-adv-tutorial3.png
+
+Here is the QML code as it is now in \c samegame.qml:
+
+\snippet declarative/tutorials/samegame/samegame3/samegame.qml 0
The game works, but it's a little boring right now. Where are the smooth animated transitions? Where are the high scores?
-If you were a QML expert you could have written these in for the first iteration, but in this tutorial they've been saved
+If you were a QML expert you could have written these in the first iteration, but in this tutorial they've been saved
until the next chapter - where your application becomes alive!
+
*/
/*!
@@ -265,115 +303,146 @@ until the next chapter - where your application becomes alive!
\contentspage QML Advanced Tutorial
\previouspage QML Advanced Tutorial 3 - Implementing the Game Logic
-Now we're going to do two things to liven the game up. Animate the blocks and add a web-based high score system.
+In this chapter:
-If you compare the \c samegame3 directory with \c samegame4, you'll noticed that we've cleaned the directory structure up.
-We now have a lot of files, and so they've been split up into folders - the most notable one being a content folder
-which we've placed all the QML but the main file.
+\tableofcontents
-\section2 Animated Blocks
+The files referenced on this page can be found in \c $QTDIR\examples\tutorials\samegame\samegame4.
-The most vital animations are that the blocks move fluidly around the board. QML has many tools for fluid behavior,
-and in this case we're going to use the \l SpringFollow element. By having the script set \c targetX and \c targetY, instead of \c x
-and \c y directly, we can set the \c x and \c y of the block to a follow. \l SpringFollow is a property value source, which means
-that you can set a property to be one of these elements and it will automatically bind the property to the element's value.
-The SpringFollow's value follows another value over time, when the value it is tracking changes the SpringFollow's
-value will also change, but it will move smoothly there over time with a spring-like movement (based on the spring
-parameters specified). This is shown in the below snippet of code from \c Block.qml:
+\section2 Adding some flair
-\code
- property int targetX: 0
- property int targetY: 0
+Now we're going to do two things to liven up the game: animate the blocks and add a High Score system.
- x: SpringFollow { source: targetX; spring: 2; damping: 0.2 }
- y: SpringFollow { source: targetY; spring: 2; damping: 0.2 }
-\endcode
+We've also cleaned up the directory structure for our application files. We now have a lot of files, so all the
+JavaScript and QML files outside of \c samegame.qml have been moved into a new sub-directory named "content".
+
+In anticipation of the new block animations, \c Block.qml file is now renamed to \c BoomBlock.qml.
+
+\section3 Animating block movement
-We also have to change the \c{samegame.js} code, so that wherever it was setting the \c x or \c y it now sets \c targetX and \c targetY
-(including when creating the block). This simple change is all you need to get spring moving blocks that no longer teleport
-around the board. If you try doing just this though, you'll notice that they now never jump from one point to another, even in
-the initialization! This gives an odd effect of having them all slide out of the corner (0,0) on start up. We'd rather that they
-fall down from the top in rows. To do this, we disable the \c x follow (but not the \c y follow) and only enable it after we've set
-the \c x in the \c createBlock function. The above snippet now becomes:
+First we will animate the blocks so that they move in a fluid manner. QML has a number of methods for adding fluid
+movement, and in this case we're going to use the \l SpringFollow element to add an animation with a spring-like
+movement. In \c BoomBlock.qml, we apply a \l SpringFollow
+to the \c x and \c y properties so that the block will follow and animate its movement towards the
+position specified by the new \c targetX and \c targetY properties (whose values will be set by \c samegame.js).
+Here is the code added to \c BoomBlock.qml:
\snippet declarative/tutorials/samegame/samegame4/content/BoomBlock.qml 1
-The next-most vital animation is a smooth exit. For this animation, we'll use a \l Behavior element. A Behavior is also a property
-value source, and it is much like SpringFollow except that it doesn't model the behavior of a spring. You specify how a Behavior
-transitions using the standard animations. As we want the blocks to smoothly fade in and out we'll set a Behavior on the block
-image's opacity, like so:
+The \c spring and \c damping values can be changed to modify the spring-like effect of the animation.
+
+The \c {enabled: spawned} setting refers to the \c spawned value that is set from \c createBlock() in \c samegame.js.
+This ensures the \l SpringFollow on the \c x is only enabled after \c createBlock() has set the block to
+the correct position. Otherwise, the blocks will slide out of the corner (0,0) when a game begins, instead of falling
+from the top in rows. (Try commenting out \c {enabled: spawned} and see for yourself.)
+
+\section3 Animating block opacity changes
+
+Next, we will add a smooth exit animation. For this, we'll use a \l Behavior element, which allows us to specify
+a default animation when a property change occurs. In this case, when the \c opacity of a Block changes, we will
+animate the opacity value so that it gradually fades in and out, instead of abruptly changing between fully
+visible and invisible. To do this, we'll apply a \l Behavior on the \c opacity property of the \c Image
+element in \c BoomBlock.qml:
\snippet declarative/tutorials/samegame/samegame4/content/BoomBlock.qml 2
-Note that the \c{opacity: 0} makes it start out transparent. We could set the opacity in the script file when we create and destroy the blocks,
-but instead we use states (as this is useful for the next animation we'll implement). The below snippet is set on the root
-element of \c{Block.qml}:
+Note the \c{opacity: 0} which means the block is transparent when it is first created. We could set the opacity
+in \c samegame.js when we create and destroy the blocks,
+but instead we'll use \l{QML States}{states}, since this is useful for the next animation we're going to add.
+Initially, we add these States to the root element of \c{BoomBlock.qml}:
\code
property bool dying: false
states: [
State{ name: "AliveState"; when: spawned == true && dying == false
PropertyChanges { target: img; opacity: 1 }
- }, State{ name: "DeathState"; when: dying == true
+ },
+ State{ name: "DeathState"; when: dying == true
PropertyChanges { target: img; opacity: 0 }
}
]
\endcode
-Now it will automatically fade in, as we set spawned to true already when implementing the block movement animations.
-To fade out, we set 'dying' to true instead of setting opacity to 0 when a block is destroyed (in the \c floodFill function).
+Now blocks will automatically fade in, as we already set \c spawned to true when we implemented the block animations.
+To fade out, we set \c dying to true instead of setting opacity to 0 when a block is destroyed (in the \c floodFill() function).
-The least vital animations are a cool-looking particle effect when they get destroyed. First we create a \l Particles element in
-the block, like so:
+\section3 Adding particle effects
+
+Finally, we'll add a cool-looking particle effect to the blocks when they are destroyed. To do this, we first add a \l Particles element in
+\c BoomBlock.qml, like so:
\snippet declarative/tutorials/samegame/samegame4/content/BoomBlock.qml 3
-To fully understand this you'll want to look at the Particles element documentation, but it's important to note that emissionRate is set
-to zero, so that no particles are emitted normally.
-We next extend the 'dying' state, which creates a burst of particles by calling the burst method on the particles element. The code for the states now look
+To fully understand this you should read the \l Particles documentation, but it's important to note that \c emissionRate is set
+to zero so that particles are not emitted normally.
+Also, we extend the \c dying State, which creates a burst of particles by calling the \c burst() method on the particles element. The code for the states now look
like this:
\snippet declarative/tutorials/samegame/samegame4/content/BoomBlock.qml 4
-And now the game should be beautifully animated and smooth, with a subtle (or not-so-subtle) animation added for all of the
-player's actions. The end result is shown below, with a different set of images to demonstrate basic themeing:
+Now the game is beautifully animated, with subtle (or not-so-subtle) animations added for all of the
+player's actions. The end result is shown below, with a different set of images to demonstrate basic theming:
\image declarative-adv-tutorial4.gif
-The basic theme change there is the result of simply replacing the images. This can be done at run time by setting the source property, so a further advanced feature to try on your own is to add a button which toggles between two different themes.
+The theme change here is produced simply by replacing the block images. This can be done at runtime by changing the \l Image \c source property, so for a further challenge, you could add a button that toggles between themes with different images.
+
+\section2 Keeping a High Scores table
+
+Another feature we might want to add to the game is a method of storing and retrieving high scores.
+
+In \c samegame.qml we now pop up a dialog when the game is over and requests the player's name so it can be added to a High Scores table. The dialog is created using \c Dialog.qml:
+
+\snippet declarative/tutorials/samegame/samegame4/samegame.qml 0
+
+When the dialog is closed, we call the new \c saveHighScore() function in \c samegame.js, which stores the high score locally in an SQL database and also send the score to an online database if possible.
+
-\section2 Offline High Scores
-Another extension we might want for the game is some way of storing and retrieving high scores. This tutorial contains both online and offline high score storage.
+\section3 Storing high scores offline
-For better high score data, we want the name and time of the player. The time is obtained in the script fairly simply, but we
-have to ask the player for their name. We thus re-use the dialog QML file to pop up a dialog asking for the player's name (and
-if they exit this dialog without entering it they have a way to opt out of posting their high score). When the dialog is closed we store the name and high score, using the code below.
+Here is the \c saveHighScore() function in \c samegame.js:
\snippet declarative/tutorials/samegame/samegame4/content/samegame.js 2
-For offline storage, we use the HTML 5 offline storage JavaScript API to maintain a persistant SQL database unique to this application. This first line in this function calls the function for the web-based high scores, described later, if it has been setup. Next we create an offline storage database for the high scores using openDatabase and prepare the data and SQL query that we want to use to save it. The offline storage API uses SQL queries for data manipulation and retrival, and in the db.transaction call we use three SQL queries to initialize the database (if necessary), and then add to and retrieve high scores. To use the returned data, we turn it into a string with one line per row returned, and show a dialog containing that string. For a more detailed explanation of the offline storage API in QML, consult the global object documentation.
+First we call \c sendHighScore() (explained in the section below) if it is possible to send the high scores to an online database.
-This is one way of storing and displaying high scores locally, but not the only way. A more complex alternative would have been to create a high score dialog component, and pass the results to it for processing and display (instead of resusing the Dialog). This would allow a more themable dialog that could present the high scores better. If your QML is the UI for a C++ application, you could also have passed the score to a C++ function to store it locally in a variety of ways, including a simple format without SQL or in another SQL database.
+Then, we use the \l{Offline Storage API} to maintain a persistant SQL database unique to this application. We create an offline storage database for the high scores using \c openDatabase() and prepare the data and SQL query that we want to use to save it. The offline storage API uses SQL queries for data manipulation and retrival, and in the \c db.transaction() call we use three SQL queries to initialize the database (if necessary), and then add to and retrieve high scores. To use the returned data, we turn it into a string with one line per row returned, and show a dialog containing that string.
-\section2 Web-based High Scores
+This is one way of storing and displaying high scores locally, but certainly not the only way. A more complex alternative would be to create a high score dialog component, and pass it the results for processing and display (instead of reusing the \c Dialog). This would allow a more themeable dialog that could beter present the high scores. If your QML is the UI for a C++ application, you could also have passed the score to a C++ function to store it locally in a variety of ways, including a simple format without SQL or in another SQL database.
-You've seen how to store high scores locally, but it is also easy to integrate a web enabled high score storage into your QML application. This tutorial also shows you how to communicate the high scores to a web server. The implementation we've done is very
-simple - the high score data is posted to a php script running on a server somewhere, and that server then stores it and
-displays it to visitors. You could request an XML or QML file from that same server, which contained and displayed the scores,
-but that's beyond the scope of this tutorial. The php script we've used is available in the examples directory.
+\section3 Storing high scores online
-if the player entered their name we can send the data to the web service in the following snippet out of the script file:
+You've seen how you can store high scores locally, but it is also easy to integrate a web-enabled high score storage into your QML application. The implementation we've done her is very
+simple: the high score data is posted to a php script running on a server somewhere, and that server then stores it and
+displays it to visitors. You could also request an XML or QML file from that same server, which contains and displays the scores,
+but that's beyond the scope of this tutorial. The php script we use here is available in the \c examples directory.
+
+If the player entered their name we can send the data to the web service us
+
+If the player enters a name, we send the data to the service using this code in \c samegame.js:
\snippet declarative/tutorials/samegame/samegame4/content/samegame.js 1
-This is the same \c XMLHttpRequest() as you'll find in browser JavaScript, and can be used in the same way to dynamically get XML
-or QML from the web service to display the high scores. We don't worry about the response in this case, we just post the high
+The \c XMLHttpRequest in this code is the same \c XMLHttpRequest() as you'll find in standard browser JavaScript, and can be used in the same way to dynamically get XML
+or QML from the web service to display the high scores. We don't worry about the response in this case - we just post the high
score data to the web server. If it had returned a QML file (or a URL to a QML file) you could instantiate it in much the same
-way as you did the blocks.
+way as you did with the blocks.
-An alternate way to access and submit web-based data would be to use QML elements designed for this purpose - XmlListModel
+An alternate way to access and submit web-based data would be to use QML elements designed for this purpose. XmlListModel
makes it very easy to fetch and display XML based data such as RSS in a QML application (see the Flickr demo for an example).
-By following this tutorial you've now ben shown how to write a fully functional application in QML, with the application logic
-written in a script file and with both many fluid animations and being web-enabled. Congratulations, you should now be skilled
-enough to write entire applications in QML.
+
+\section2 That's it!
+
+By following this tutorial you've seen how you can write a fully functional application in QML:
+
+\list
+\o Build your application with \l {{QML Elements}}{QML elements}
+\o Add application logic \l{Integrating JavaScript}{with JavaScript code}
+\o Add animations with \l {Behavior}{Behaviors} and \l{QML States}{states}
+\o Store persistent application data through online and offline methods
+\endlist
+
+There is so much more to learn about QML that we haven't been able to cover in this tutorial. Check out all the
+demos and examples and the \l {Declarative UI (QML)}{documentation} to find out all the things you can do with QML!
+
*/
diff --git a/doc/src/declarative/declarativeui.qdoc b/doc/src/declarative/declarativeui.qdoc
index cc61c01..f310484 100644
--- a/doc/src/declarative/declarativeui.qdoc
+++ b/doc/src/declarative/declarativeui.qdoc
@@ -94,6 +94,7 @@ completely new applications. QML is fully \l {Extending QML in C++}{extensible
\o \l {qdeclarativefocus.html}{Keyboard Focus}
\o \l {Extending types from QML}
\o \l {Dynamic Object Creation}
+\o \l {qmlruntime.html}{The Qt Declarative Runtime}
\endlist
\section1 Reference:
diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc
index e35d67c..1bb739d 100644
--- a/doc/src/declarative/elements.qdoc
+++ b/doc/src/declarative/elements.qdoc
@@ -77,11 +77,11 @@ The following table lists the QML elements provided by the Qt Declarative module
\o \l PauseAnimation
\o \l ParentAnimation
\o \l AnchorAnimation
+\o \l SmoothedAnimation
\o \l PropertyAction
\o \l ScriptAction
\o \l Transition
\o \l SpringFollow
-\o \l EaseFollow
\o \l Behavior
\endlist
@@ -97,7 +97,6 @@ The following table lists the QML elements provided by the Qt Declarative module
\o
\list
-\o \l Script
\o \l Connections
\o \l Component
\o \l Timer
@@ -112,8 +111,8 @@ The following table lists the QML elements provided by the Qt Declarative module
\header
\o \bold {Basic Visual Items}
\o \bold {Basic Interaction Items}
-\o \bold {Widgets}
\o \bold {Utility}
+\o \bold {Transforms}
\row
\o
@@ -131,13 +130,9 @@ The following table lists the QML elements provided by the Qt Declarative module
\list
\o \l MouseArea
\o \l FocusScope
-\endlist
-
-\o
-\list
\o \l Flickable
\o \l Flipable
-\o \l WebView
+\o \l GestureArea (experimental)
\endlist
\o
@@ -149,10 +144,17 @@ The following table lists the QML elements provided by the Qt Declarative module
\o \l LayoutItem
\endlist
+\o
+\list
+\o \l Scale
+\o \l Rotation
+\o \l Translate
+\endlist
+
\header
\o \bold {Views}
\o \bold {Positioners}
-\o \bold {Transforms}
+\o \bold {Media}
\o \bold {Effects}
\row
@@ -173,6 +175,7 @@ The following table lists the QML elements provided by the Qt Declarative module
\o \l PathPercent
\endlist
\endlist
+\o \l WebView
\endlist
\o
@@ -180,21 +183,19 @@ The following table lists the QML elements provided by the Qt Declarative module
\o \l Column
\o \l Row
\o \l Grid
+\o \l Flow
\endlist
\o
\list
-\o \l Scale
-\o \l Rotation
+\o \l SoundEffect
+\o \l Audio
+\o \l Video
\endlist
\o
\list
-\o \l Blur
-\o \l Colorize
-\o \l DropShadow
-\o \l Opacity
-\o \l Particles
+\o \l Particles (experimental)
\list
\o \l ParticleMotionLinear
\o \l ParticleMotionGravity
diff --git a/doc/src/declarative/examples.qdoc b/doc/src/declarative/examples.qdoc
index b7da508..3d8325e 100644
--- a/doc/src/declarative/examples.qdoc
+++ b/doc/src/declarative/examples.qdoc
@@ -51,21 +51,17 @@ sub-directory that show how to use various aspects of QML. In addition, the
applications. These demos are intended to show integrated functionality
rather than being instructive on specifice elements.
-To run the examples and demos, use the included \l {qmlviewer}{qmlviewer}
+To run the examples and demos, use the included \l {Qt Declarative UI Runtime}{qml}
application. It has some useful options, revealed by:
\code
- bin/qmlviewer -help
+ bin/qml -help
\endcode
For example, from your build directory, run:
\code
- bin/qmlviewer $QTDIR/demos/declarative/flickr/flickr-desktop.qml
-\endcode
-or
-\code
- bin/qmlviewer $QTDIR/demos/declarative/samegame/samegame.qml
+ bin/qml $QTDIR/demos/declarative/samegame/samegame.qml
\endcode
\section1 Examples
diff --git a/doc/src/declarative/extending.qdoc b/doc/src/declarative/extending.qdoc
index 8c096da..b6aa9da 100644
--- a/doc/src/declarative/extending.qdoc
+++ b/doc/src/declarative/extending.qdoc
@@ -654,9 +654,8 @@ declaring a new property, and the corresponding C++ type.
\row \o string \o QString
\row \o url \o QUrl
\row \o color \o QColor
-\row \o date \o QDate
+\row \o date \o QDateTime
\row \o var \o QVariant
-\row \o variant \o QVariant
\endtable
QML supports two methods for adding a new property to a type: a new property
@@ -693,6 +692,19 @@ it in two steps, like this:
myProperty: 10
\endcode
+If a default value is not supplied or set later in the file, each type has a
+default value for when none is explictly set. Below are the default values
+of some of the types. For the remaining types the default values are undefined.
+
+\table
+\header \o QML Type \o Default Value
+\row \o bool \o false
+\row \o int \o 0
+\row \o double, real \o 0.0
+\row \o string, url \o "" (an empty string)
+\row \o color \o #000000 (black)
+\endtable
+
If specified, the optional "default" attribute marks the new property as the
types default property, overriding any existing default property. Using the
default attribute twice in the same type block is an error.
diff --git a/doc/src/declarative/focus.qdoc b/doc/src/declarative/focus.qdoc
index d7e890c..e5c1d32 100644
--- a/doc/src/declarative/focus.qdoc
+++ b/doc/src/declarative/focus.qdoc
@@ -96,7 +96,7 @@ Text {
An \l Item requests focus by setting the \c {Item::focus} property to true.
For very simple cases simply setting the \c {Item::focus} property is sometimes
-sufficient. If we run the following example in the \c qmlviewer, we see that
+sufficient. If we run the following example with the \l {Qt Declarative UI Runtime}{qml} tool, we see that
the \c {keyHandler} element has \e {active focus} and pressing the 'A', 'B'
or 'C' keys modifies the text appropriately.
diff --git a/doc/src/declarative/globalobject.qdoc b/doc/src/declarative/globalobject.qdoc
index 9f6be12..231e75a 100644
--- a/doc/src/declarative/globalobject.qdoc
+++ b/doc/src/declarative/globalobject.qdoc
@@ -189,6 +189,20 @@ This function attempts to open the specified \c target url in an external applic
\section3 Qt.md5(data)
This function returns a hex string of the md5 hash of \c data.
+\section3 Qt.btoa(data)
+This function returns a base64 encoding of \c data.
+
+\section3 Qt.atob(data)
+This function returns a base64 decoding of \c data.
+
+\section3 Qt.quit()
+This function causes the QML engine to emit the quit signal, which in
+\l {Qt Declarative UI Runtime}{qml} causes the runtime to quit.
+
+\section3 Qt.resolvedUrl(url)
+This function returns \c url resolved relative to the URL of the
+caller.
+
\section1 Dynamic Object Creation
The following functions on the global object allow you to dynamically create QML
items from files or strings. See \l{Dynamic Object Management} for an overview
@@ -273,20 +287,33 @@ of their use.
QML script supports the XMLHttpRequest object, which can be used to asynchronously obtain data from over a network.
\section2 XMLHttpRequest()
In QML you can construct an XMLHttpRequest object just like in a web browser! TODO: Real documentation for this object.
+
+
\section1 Offline Storage API
-The \c openDatabase() and related functions
+\section2 Database API
+
+The \c openDatabaseSync() and related functions
provide the ability to access local offline storage in an SQL database.
-These databases are user-specific and QML-specific. They are stored in the \c Databases subdirectory
+These databases are user-specific and QML-specific, but accessible to all QML applications.
+They are stored in the \c Databases subdirectory
of QDeclarativeEngine::offlineStoragePath(), currently as SQLite databases.
+The API can be used from JavaScript functions in your QML:
+
+\quotefile declarative/sql/hello.qml
+
The API conforms to the Synchronous API of the HTML5 Web Database API,
\link http://www.w3.org/TR/2009/WD-webdatabase-20091029/ W3C Working Draft 29 October 2009\endlink.
-The API can be used from JavaScript functions in your QML:
+\section3 db = openDatabaseSync(identifier, version, description, estimated_size, callback(db))
-\quotefile declarative/sql/hello.qml
+Returns the database identified by \e identifier. If the database does not already exist, it
+is created with the properties \e description and \e estimated_size and the function \e callback
+is called with the database as a parameter.
+
+May throw exception with code property SQLException.DATABASE_ERR, or SQLException.VERSION_ERR.
When a database is first created, an INI file is also created specifying its characteristics:
@@ -301,4 +328,48 @@ When a database is first created, an INI file is also created specifying its cha
This data can be used by application tools.
+\section3 db.changeVersion(from, to, callback(tx))
+
+This method allows you to perform a \e{Scheme Upgrade}.
+
+If the current version of \e db is not \e from, then an exception is thrown.
+
+Otherwise, a database transaction is created and passed to \e callback. In this function,
+you can call \e executeSql on \e tx to upgrade the database.
+
+May throw exception with code property SQLException.DATABASE_ERR or SQLException.UNKNOWN_ERR.
+
+\section3 db.transaction(callback(tx))
+
+This method creates a read/write transaction and passed to \e callback. In this function,
+you can call \e executeSql on \e tx to read and modify the database.
+
+If the callback throws exceptions, the transaction is rolled back.
+
+\section3 db.readTransaction(callback(tx))
+
+This method creates a read-only transaction and passed to \e callback. In this function,
+you can call \e executeSql on \e tx to read the database (with SELECT statements).
+
+\section3 results = tx.executeSql(statement, values)
+
+This method executes a SQL \e statement, binding the list of \e values to SQL positional parameters ("?").
+
+It returns a results object, with the following properties:
+
+\table
+\header \o \bold {Type} \o \bold {Property} \o \bold {Value} \o \bold {Applicability}
+\row \o int \o rows.length \o The number of rows in the result \o SELECT
+\row \o var \o rows.item(i) \o Function that returns row \e i of the result \o SELECT
+\row \o int \o rowsAffected \o The number of rows affected by a modification \o UPDATE, DELETE
+\row \o string \o insertId \o The id of the row inserted \o INSERT
+\endtable
+
+May throw exception with code property SQLException.DATABASE_ERR, SQLException.SYNTAX_ERR, or SQLException.UNKNOWN_ERR.
+
+\section1 Logging
+
+\c console.log() and \c console.debug() can be used to print information
+to the console. See \l{Debugging QML} for more information.
+
*/
diff --git a/doc/src/declarative/javascriptblocks.qdoc b/doc/src/declarative/javascriptblocks.qdoc
index e57439f..c198295 100644
--- a/doc/src/declarative/javascriptblocks.qdoc
+++ b/doc/src/declarative/javascriptblocks.qdoc
@@ -244,7 +244,7 @@ var initialPosition = { rootObject.x, rootObject.y }
This restriction exists as the QML environment is not yet fully established.
To run code after the environment setup has completed, refer to
-\l {Running Script at Startup}.
+\l {Running JavaScript at Startup}.
\endlist
diff --git a/doc/src/declarative/modules.qdoc b/doc/src/declarative/modules.qdoc
index 53de32c..d476d6f 100644
--- a/doc/src/declarative/modules.qdoc
+++ b/doc/src/declarative/modules.qdoc
@@ -42,125 +42,106 @@
/*!
\page qdeclarativemodules.html
\title Modules
+\section1 QML Modules
-A \bold module is a collection of QML types.
+A \bold {QML module} is a collection of QML types. They allow you to organize your QML content
+into independent units. Modules have an optional versioning mechanism that allows for independent
+upgradability of the modules.
-To use types from a module it must be imported using the \c import statement. Successive
-import statements override earlier import statements, however, since imports have version
-qualifiers, changes in modules do not alter the semantics of imports.
+There are two types of modules:
+location modules (defined by a URL),
+and
+installed modules (defined by a URI).
-\section1 Importing Types Defined in C++
-
-Types \link adding-types defined in C++\endlink can be from types your application defines, standard QML types,
-or types defined in plugins. To use any such types, you must import
-the module defining them. For example, to use types from Qt, import it:
+Location modules types are defined in QML files and \l{QDeclarativeExtensionPlugin}{QML C++ plugins}
+in a directory refered to directly by
+the location URL, either on the local filesystem, or as a network resource. The URL that locates them
+can be relative, in which case they actual URL is resolved by the QML file containing the import.
+When importing a location module, a quoted URL is used:
\code
-import Qt 4.6
+import "https://qml.nokia.com/qml/example" 1.0
+import "https://qml.nokia.com/qml/example" as NokiaExample
+import "mymodule" 1.0
+import "mymodule"
\endcode
-This makes available all types in Qt that were available in Qt 4.6, regardless of the
-actual version of Qt executing the QML. So even if Qt 4.7 adds a type that would conflict
-with a type you defined while using 4.6, that type is not imported, so there is no conflict.
-
-Types defined by plugins are made using QDeclarativeExtensionPlugin. Installed plugins and QML files
-can both contribute types to the same module.
-
-
-\section1 Importing Types Defined in QML
-
-When importing types \link components defined using QML\endlink, the syntax depends
-on whether or not the types are installed on the system.
-
-
-\section2 Installed QML Files
-
-To import types defined in QML files that are installed on the system running the
-QML, a URI import is used:
-
-\code
-import com.nokia.Example 1.0
-\endcode
-
-Files imported in this way are found on the paths added by QDeclarativeEngine::addImportPath(),
-which by default only inludes \c $QTDIR/qml, so the above would make available those types
-defined in \c $QTDIR/qml/com/nokia/Example which are specified as being in version 1.0.
-Installed plugins and QML files can both contribute types to the same module.
-
-The specification of types to versions is given by a special file, \c qmldir which must
-exist in the module directory. The syntax is described below.
-
-The \c -L option to the \l {qmlviewer}{viewer} application also adds paths to the import path.
-
-
-\section2 Local QML Files
-
-To import types defined in QML files in directories relative to the file importing them,
-a quoted import directory is used:
+Installed modules can \e only be on the local file system or in application C++ code. Again they
+are defined in QML files and \l{QDeclarativeExtensionPlugin}{QML C++ plugins} in a directory,
+but the directory is indirectly referred to by the URI. The mapping to actual content is either
+by application C++ code registering a C++ type to a module URI (see \l{Extending QML in C++}),
+or in the referenced subdirectory of a path on the import path (see below).
+When importing a location module, an un-quoted URI is used:
\code
-import "path"
+import com.nokia.qml.mymodule 1.0
+import com.nokia.qml.mymodule as MyModule
\endcode
-This allows all components defined in the directory \c path to be used in
-the component where this statement appears.
-In this case, and only this case, it is not necessary for the module directory to include
-a \c qmldir file, nor is it necessary to provide a version qualifier. The basis of this is
-that the files in the subdirectory are assumed to be packaged with the importer, and therefore
-they form a single versioned unit.
+For either type of module, a \c qmldir file in the module directory defines the content of the module. This file is
+optional for location modules, but only for local filesystem content or a single remote content with a namespace.
+The second exception is explained in more detail in the section below on Namespaces.
+\section2 The Import Path
-\section2 Remote QML Files
-
-To import types defined in QML file at arbitrary network locations, a quoted absolute URL is used:
-
-\code
-import "http://url/.../" 1.0
-\endcode
-
-This works the same as for relative directory imports, except that the target location \e must
-include a \c qmldir file, and a version qualifier must be given.
+Installed modules are searched for on the import path.
+The \c -L option to the \l {Qt Declarative UI Runtime}{qml} runtime adds paths to the import path.
+From C++, the path is available via \l QDeclarativeEngine::importPathList() and can be prepended to
+using \l QDeclarativeEngine::addImportPath().
\section2 The \c qmldir File
-Directories of installed files and remote content must include a file \c qmldir which specifies the
-mapping from all type names to versioned QML files. It is a list of lines of the form:
+Installed QML modules and remote content without a namespace require a file \c qmldir which
+specifies the mapping from all type names to versioned QML files. It is a list of lines of the form:
\code
# <Comment>
-<TypeName> <InitialVersion> <File>
+<TypeName> [<InitialVersion>] <File>
+internal <Name> <File>
+plugin <Name> [<Path>]
\endcode
-<TypeName> is the type being made available; <InitialVersion> is a version
-number like \c 4.0; <File> is the (relative)
-file name of the QML file defining the type.
+# <Comment> lines are ignored, and can be used for comments.
-The same type can be provided by different files in different versions, in which
-case later earlier versions (eg. 1.2) must precede earlier versions (eg. 1.0),
-since the \e first name-version match is used.
+<TypeName> <InitialVersion> <File> lines are used to add QML files as types.
+<TypeName> is the type being made available; the optional <InitialVersion> is a version
+number like \c 4.0; <File> is the (relative)
+file name of the QML file defining the type.
Installed files do not need to import the module of which they are a part, as they can refer
-to the other QML files in the module as relative (local) files.
-If the module is imported from a remote location, those files must nevertheless be listed in
-the \c qmldir file. Internal files can be marked with the \c internal keyword, to ensure
-they are not visible outside the module:
+to the other QML files in the module as relative (local) files, but
+if the module is imported from a remote location, those files must nevertheless be listed in
+the \c qmldir file. Types which you do not wish to export to users of your module
+may be marked with the \c internal keyword:
\code
internal <TypeName> <File>
\endcode
-Installed and remote files \e must be referred to by version information described above,
+\c plugin <Name> [<Path>] lines are used to add \l{QDeclarativeExtensionPlugin}{QML C++ plugins}
+to the module. <Name> is the
+name of the library. <Path> is an optional argument specifying the full path to the directory
+containing the plugin file; if it is omitted then the directory is assumed to be the same as
+the directory of the \c qmldir file. Note that <Name> is not usually the same as the file name
+of the plugin binary, which is platform dependent; e.g. the library MyAppTypes would produce
+a libMyAppTypes.so on Linux and MyAppTypes.dll on Windows.
+
+The same type can be provided by different files in different versions, in which
+case later earlier versions (eg. 1.2) must precede earlier versions (eg. 1.0),
+since the \e first name-version match is used and a request for a version of a type
+can be fulfilled by one defined in an earlier version of the module.
+
+Installed and remote files without a namespace \e must be referred to by version information described above,
local files \e may have it.
The versioning system ensures that a given QML file will work regardless of the version
of installed software, since a versioned import \e only imports types for that version,
leaving other identifiers available, even if the actual installed version might otherwise
-use those identifiers.
-
+provide those identifiers.
-\section1 Namespaces - Named Imports
+\section2 Namespaces - Named Imports
When importing content it by default imports types into the global namespace.
You may choose to import the module into another namespace, either to allow identically-named
@@ -185,10 +166,18 @@ modules can be imported into the global namespace:
import Qt 4.6 as Nokia
import Ovi 1.0 as Nokia
\endcode
+
+While import statements are needed to make any types available in QML, the directory of the
+current file is implicitly loaded. This is the exact same as if you had added 'import "."' to
+the start of every QML file. The effect of this is that you can automatically use types defined in C++ plugins
+or QML files if they reside in the same directory. This is the last location searched for types - so if you
+happen to have a "Text.qml" file, or "text.qml" on case-insensitive file systems, it will not override
+the one from Qt if you import Qt.
+
*/
/*
-See original requirement QT-558.
+Original requirement is QT-558.
*/
diff --git a/doc/src/declarative/network.qdoc b/doc/src/declarative/network.qdoc
index e642257..f1d4db1 100644
--- a/doc/src/declarative/network.qdoc
+++ b/doc/src/declarative/network.qdoc
@@ -69,7 +69,7 @@ Network transparency is supported throughout QML, for example:
\o WebViews - the \c url property of WebView (obviously!)
\endlist
-Even QML types themselves can be on the network - if \l qmlviewer is used to load
+Even QML types themselves can be on the network - if the \l {Qt Declarative UI Runtime}{qml} tool is used to load
\tt http://example.com/mystuff/Hello.qml and that content refers to a type "World", this
will load from \tt http://example.com/mystuff/World.qml just as it would for a local file.
Any other resources that \tt Hello.qml referred to, usually by a relative URL, would
@@ -131,7 +131,7 @@ See the \tt demos/declarative/flickr for a real demonstration of this.
All network access from QML is managed by a QNetworkAccessManager set on the QDeclarativeEngine which executes the QML.
By default, this is an unmodified Qt QNetworkAccessManager. You may set a different manager using
QDeclarativeEngine::setNetworkAccessManager() as appropriate for the policies of your application.
-For example, the \l qmlviewer tool sets a new QNetworkAccessManager which
+For example, the \l {Qt Declarative UI Runtime}{qml} tool sets a new QNetworkAccessManager which
trusts HTTP Expiry headers to avoid network cache checks, allows HTTP Pipelining, adds a persistent HTTP CookieJar,
a simple disk cache, and supports proxy settings.
diff --git a/doc/src/declarative/pics/qmldebugger-creator.png b/doc/src/declarative/pics/qmldebugger-creator.png
deleted file mode 100644
index da1e22d..0000000
--- a/doc/src/declarative/pics/qmldebugger-creator.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/declarative/qdeclarativedebugging.qdoc b/doc/src/declarative/qdeclarativedebugging.qdoc
index 3ef9ce7..4ff7fde 100644
--- a/doc/src/declarative/qdeclarativedebugging.qdoc
+++ b/doc/src/declarative/qdeclarativedebugging.qdoc
@@ -60,61 +60,26 @@ Rectangle {
\section1 Debugging Transitions
When a transition doesn't look quite right, it can be helpful to view it in slow
-motion to see what is happening more clearly. \l {qmlviewer} provides a
+motion to see what is happening more clearly. The \l {Qt Declarative UI Runtime}{qml} tool provides a
"Slow Down Animations" menu option to facilitate this.
+\section1 Debugging with Qt Creator
-\section1 The QML Inspector
+\l{http://qt.nokia.com/products/developer-tools}{Qt Creator} provides built-in
+support for QML debugging. Open a QML project in Creator and enter Debug mode,
+or click the "Start Debugging" option from the menu, and Creator will
+show QML debugging information and options for your application, including
+object inspection, property monitoring and application frame-rate analysis.
-The \c qmldebugger tool provides an experimental inspector to aid with debugging.
-It can be run as a Qt Creator plugin or as a standalone application.
-
-\section2 Qt Creator plugin
-
-The Qt Creator plugin currently builds against Qt Creator 1.3.
-
-To build the Qt Creator plugin:
-
-\list
-\o Set an environment variable \c CREATOR_SRC_DIR that points to the Qt Creator
- source directory
-\o Set an environment variable \c CREATOR_BUILD_DIR that points to the Qt Creator
- build directory
-\o Run \c qmake on \c $QTDIR/tools/qmldebugger/qmldebugger.pro
-\endlist
-
-This builds the plugin into your Qt Creator installation.
-
-The plugin adds a "QML Inspect" mode into Qt Creator that provides:
-
-\list
-\o An object tree showing all objects and their children
-\o The current property values for the object selected in the object tree
- (this table is dynamically updated for all properties that have property changed
- notifications)
-\o An expression evaluator for querying and setting values dynamically
-\o A table of watched properties (double-click on a property in the property
- table to add it to the watch table)
-\o A graph that shows the frame rate of your application
-\endlist
-
-
-To start the debugger, open a QML project and click the "QML Inspect" mode, then click the green
-"play" button in the toolbar of the bottom-right debugger window.
-
-\image qmldebugger-creator.png
-
-
-\section2 Standalone qmldebugger tool
-
-To run the standalone \c qmldebugger tool, set an environment variable \c QML_DEBUG_SERVER_PORT
-to an available port number and run the \c qmlviewer. For example:
+Creator can be used to debug both local and remote QML applications. To
+enable remote debugging, start the \l {Qt Declarative UI Runtime}{qml} tool
+on the remote device with a debugging port defined, like this:
\code
- QML_DEBUG_SERVER_PORT=3768 qmlviewer myqmlfile.qml
+ QML_DEBUG_SERVER_PORT=3768 qml myqmlfile.qml
\endcode
-Then in another process, start the \c qmldebugger tool, enter the port number into the corresponding spinbox
-in the top right hand corner, and press the "Connect" button.
+In Creator, open the project settings pane and set the server and port
+details for the remote device, then start debugging.
*/
diff --git a/doc/src/declarative/qdeclarativei18n.qdoc b/doc/src/declarative/qdeclarativei18n.qdoc
index 9c10a46..598c567 100644
--- a/doc/src/declarative/qdeclarativei18n.qdoc
+++ b/doc/src/declarative/qdeclarativei18n.qdoc
@@ -63,7 +63,7 @@ capabilities are described more fully in:
\o \l {Qt Linguist Manual}
\endlist
-You can test a translation in \l {qmlviewer} using the -translation option.
+You can test a translation with the \l {Qt Declarative UI Runtime}{qml} tool using the -translation option.
\section1 Example
@@ -86,10 +86,10 @@ lupdate hello.qml -ts hello.ts
\endcode
Then we open \c hello.ts in \l{Qt Linguist Manual} {Linguist}, provide
-a translation and create the release file \c hello.qm.
+a translation and create the release file \c hello.qml.
-Finally, we can test the translation in qmlviewer:
+Finally, we can test the translation:
\code
-qmlviewer -translation hello.qm hello.qml
+qml -translation hello.qm hello.qml
\endcode
*/
diff --git a/doc/src/declarative/qmlruntime.qdoc b/doc/src/declarative/qmlruntime.qdoc
index 6d3e109..8bb3ec7 100644
--- a/doc/src/declarative/qmlruntime.qdoc
+++ b/doc/src/declarative/qmlruntime.qdoc
@@ -41,32 +41,90 @@
/*!
\page qmlruntime.html
- \title Qt Declarative UI Viewer (qmlviewer)
+ \title Qt Declarative UI Runtime
+ \keyword qml runtime
\ingroup qttools
- \keyword qmlviewer
- This page documents the \e{Declarative UI Viewer} for the Qt GUI
- toolkit. The \c qmlviewer reads a declarative user interface definition
+ This page documents the \e{Declarative UI Runtime} for the Qt GUI
+ toolkit, and the \c qml executable which can be used to run apps
+ written for the runtime. The \c qml executable reads a declarative user interface definition
(\c .qml) file and displays the user interface it describes.
- qmlviewer is a development tool. It is not intended to be
- installed in a production environment.
+ QML is a runtime, as you can run plain qml files which pull in their required modules.
+ To run apps with the QML runtime, you can either start the runtime
+ from your on application (using a QDeclarativeView) or with the simple \c qml application.
+ The \c qml application can be
+ installed in a production environment, assuming that it is not already
+ present in the system. It is generally packaged alongside Qt.
- \section1 Options
+ To deploy an application using the QML runtime, you have two options:
- When run with the \c -help option, qmlviewer shows available options.
+ \list
+ \o Write your own Qt application including a QDeclarative view and deploy it the same as
+ any other Qt application (not discussed further on this page), or
+ \o Write a main QML file for your application, and run your application using the included \c qml tool.
+ \endlist
- \section1 Dummy Data
+ To run an application with the \c qml tool, pass the filename as an argument:
- One use of qmlviewer is to allow QML files to be viewed stand-alone,
- rather than being loaded from within a Qt program. Qt applications will
- usually bind objects and properties into the execution context before
- running the QML. To stand-in for such bindings, you can provide dummy
- data: create a directory called "dummydata" in the same directory as
+ \code
+ qml myQmlFile.qml
+ \endcode
+
+ Deploying a QML application via the \c qml executable allows for QML only deployments, but can also
+ include custom C++ modules just as easily. Below is an example of how you might structure
+ a complex application deployed via the qml runtime, it is a listing of the files that would
+ be included in the deployment package.
+
+ \code
+ MyApp.qml
+ MyAppCore/qmldir
+ MyAppCore/libMyAppCore.so
+ MyAppCore/MyAppCore.dll
+ MyAppCore/AnAppElement.qml
+ MyAppCore/AnotherElement.qml
+ MyAppCore/images/Logo.png
+ OtherModule/qmldir
+ OtherModule/OtherElement.qml
+ \endcode
+
+ Note that this example is for deploying the example to both windows and linux. You will still need to compile the C++
+ modules for each target platform, but you can deploy multiple versions of the modules across platforms with different naming conventions,
+ as the appropriate module file is chosen based on platform naming conventions. The C++
+ modules must contain a QDeclarativeExtentionPlugin subclass.
+
+ The application would be executed either with your own application, the command 'qml MyApp.qml' or by
+ opening the qml file if your system has the \c qml executable registered as the handler for qml files. The MyApp.qml file would have access
+ to all of the deployed types using the import statements such as the following:
+
+ \code
+ import "MyAppCore"
+ import "OtherModule" 1.0 as Other
+ \endcode
+
+ \section1 \c qml application functionality
+ The \c qml application implements some additional functionality to help it serve the role of a launcher
+ for myriad applications. If you implement your own launcher application, you may also wish to reimplement
+ some or all of this functionality. However, much of this functionality is intended to aid the prototyping of
+ qml applications and may not be necessary for a deployed application.
+
+ \section2 Options
+
+ When run with the \c -help option, qml shows available options.
+
+ \section2 Dummy Data
+
+ The secondary use of the qml runtime is to allow QML files to be viewed with
+ dummy data. This is useful when prototyping the UI, as the dummy data can
+ be later replaced with actual data and bindings from a C++ plugin.
+ To provide dummy data: create a directory called "dummydata" in the same directory as
the target QML file and create files there with the "qml" extension.
All such files will be loaded as QML objects and bound to the root
context as a property with the name of the file (without ".qml").
+ To replace this with real data, you simply bind the real object to
+ the root context in C++.
+
For example, if the Qt application has a "clock.time" property
that is a qreal from 0 to 86400 representing the number of seconds since
midnight, dummy data for this could be provided by \c dummydata/clock.qml:
@@ -76,9 +134,9 @@
Any QML can be used in the dummy data files. You could even animate the
fictional data!
- \section1 Screen Orientation
+ \section2 Screen Orientation
- A special piece of dummy data which is integrated into the viewer is
+ A special piece of dummy data which is integrated into the runtime is
a simple orientation property. The orientation can be set via the
settings menu in the application, or by pressing Ctrl+T to toggle it.
@@ -91,9 +149,13 @@
import QDeclarativeViewer 1.0 as QDeclarativeViewer
Item {
- QDeclarativeViewer.Screen { id: qmlviewerScreen }
- state: (qmlviewerScreen.orientation == QDeclarativeViewer.Screen.Landscape) ? 'landscape' : ''
+ QDeclarativeViewer.Screen { id: screen }
+ state: (screen.orientation == QDeclarativeViewer.Screen.Landscape) ? 'landscape' : ''
}
\endcode
+ This allows your application to respond to the orientation of the screen changing. The runtime
+ will automatically update this on some platforms (currently the N900 only) to match the physical
+ screen's orientation. On other plaforms orientation changes will only happen when explictly asked for.
+
*/
diff --git a/doc/src/declarative/scope.qdoc b/doc/src/declarative/scope.qdoc
index c588b45..964f7d5 100644
--- a/doc/src/declarative/scope.qdoc
+++ b/doc/src/declarative/scope.qdoc
@@ -160,7 +160,7 @@ Bindings have access to the scope object's properties without qualification.
In the previous example, the binding accesses the \l Item's \c parent property
directly, without needing any form of object prefix. QML introduces a more
structured, object-oriented approach to JavaScript, and consequently does not
-require (although it does support) use of the implicit \c this property.
+require the use of the JavaScript \c this property.
Care must be used when accessing \l {Attached Properties} from bindings due
to their interaction with the scope object. Conceptually attached properties
diff --git a/doc/src/declarative/tutorial.qdoc b/doc/src/declarative/tutorial.qdoc
index 310b776..1a93d05 100644
--- a/doc/src/declarative/tutorial.qdoc
+++ b/doc/src/declarative/tutorial.qdoc
@@ -114,11 +114,11 @@ In this case, we specify that our text element should be horizontally centered i
\section2 Viewing the example
-To view what you have created, run the qmlviewer (located in the \c bin directory) with your filename as the first argument.
+To view what you have created, run the \l{Qt Declarative UI Runtime}{qml} tool (located in the \c bin directory) with your filename as the first argument.
For example, to run the provided completed Tutorial 1 example from the install location, you would type:
\code
-bin/qmlviewer $QTDIR/examples/declarative/tutorials/helloworld/tutorial1.qml
+bin/qml $QTDIR/examples/declarative/tutorials/helloworld/tutorial1.qml
\endcode
*/
@@ -155,13 +155,13 @@ An \l Item is the most basic visual element in QML and is often used as a contai
\snippet examples/declarative/tutorials/helloworld/Cell.qml 4
-We declare a \c color property. This property is accessible from \e outside our component, this allows us
+We declare a \c cellColor property. This property is accessible from \e outside our component, this allows us
to instantiate the cells with different colors.
This property is just an alias to an existing property - the color of the rectangle that compose the cell (see \l{intro-properties}{Properties}).
\snippet examples/declarative/tutorials/helloworld/Cell.qml 5
-We want our component to also have a signal that we call \e clicked with a \e color parameter.
+We want our component to also have a signal that we call \e clicked with a \e cellColor parameter of type \e color.
We will use this signal to change the color of the text in the main QML file later.
\snippet examples/declarative/tutorials/helloworld/Cell.qml 2
@@ -189,7 +189,7 @@ We create the color picker by putting 6 cells with different colors in a grid.
\snippet examples/declarative/tutorials/helloworld/tutorial2.qml 1
-When the \e clicked signal of our cell is triggered, we want to set the color of the text to the color passed as a parameter.
+When the \e clicked signal of our cell is triggered, we want to set the color of the text to the \e cellColor passed as a parameter.
We can react to any signal of our component through a property of the name \e 'onSignalName' (see \l{Signal Handlers}).
*/
diff --git a/doc/src/development/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc
index 8cb8705..688122b 100644
--- a/doc/src/development/qmake-manual.qdoc
+++ b/doc/src/development/qmake-manual.qdoc
@@ -1425,12 +1425,20 @@ is the application private directory on the drive it is installed to.
attention that also other statements stay valid. For example if you
override languages statement, you must override also package-header
statement and all other statements which are language specific.
+
+ On the Symbian platform, the \c default_deployment item specifies
+ default platform and package dependencies. Those dependencies can be
+ selectively disabled if alternative dependencies need to be defined
+ - e.g. if a specific device is required to run the application or
+ more languages need to be supported by the package file. The supported
+ \c default_deployment rules that can be disabled are:
- On the Symbian platform, the \c default_deployment item specifies
- default platform dependencies. It can be overwritten if a more
- restrictive set is needed - e.g. if a specific
- device is required to run the application.
-
+ \list
+ \o pkg_depends_qt
+ \o pkg_depends_webkit
+ \o pkg_platform_dependencies
+ \endlist
+
For example:
\snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 141
diff --git a/doc/src/frameworks-technologies/activeqt.qdoc b/doc/src/frameworks-technologies/activeqt.qdoc
index e24959d..b752122 100644
--- a/doc/src/frameworks-technologies/activeqt.qdoc
+++ b/doc/src/frameworks-technologies/activeqt.qdoc
@@ -57,6 +57,7 @@
\brief An overview of Qt's ActiveX and COM integration on Windows.
\ingroup platform-specific
+ \ingroup frameworks-technologies
\keyword ActiveQt
Qt's ActiveX and COM support allows Qt for Windows developers to:
@@ -69,19 +70,26 @@
controls.
\endlist
+ For more information about using ActiveX with Qt, see
+ \l{Building ActiveX servers and controls with Qt}.
+
The ActiveQt framework consists of two modules:
\list
- \o The \l QAxContainer module is a static
- library implementing QObject and QWidget subclasses, QAxObject and
- QAxWidget, that act as containers for COM objects and ActiveX
- controls.
- \o The \l QAxServer module is a static library that implements
+ \o The \l{Using ActiveX controls and COM objects in Qt}{QAxContainer}
+ module is a static library implementing QObject and QWidget subclasses,
+ QAxObject and QAxWidget, that act as containers for COM objects and
+ ActiveX controls.
+ \o The \l{Building ActiveX servers and controls with Qt}{QAxServer}
+ module is a static library that implements
functionality for in-process and executable COM servers. This
module provides the QAxAggregated, QAxBindable and QAxFactory
classes.
\endlist
+ A set of \l{Tools for ActiveQt}{tools} is provided to simplify the
+ developing and building of Qt projects that use ActiveX.
+
To build the static libraries, change into the \c activeqt directory
(usually \c QTDIR/src/activeqt), and run \c qmake and your make
tool in both the \c container and the \c control subdirectory.
diff --git a/doc/src/modules.qdoc b/doc/src/modules.qdoc
index 76a52b4..8731d57 100644
--- a/doc/src/modules.qdoc
+++ b/doc/src/modules.qdoc
@@ -493,6 +493,14 @@
\snippet doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc 1
+ \section1 Further Reading
+
+ General overviews of XQuery and XSchema can be found in the
+ \l{Using XML Technologies} document.
+
+ An introduction to the XQuery language can be found in
+ \l{A Short Path to XQuery}.
+
\section1 License Information
The XML Schema implementation provided by this module contains the \c xml.xsd file
@@ -810,6 +818,8 @@
\brief The QAxContainer module is a Windows-only extension for
accessing ActiveX controls and COM objects.
+ QAxServer is part of the \l{ActiveQt Framework}.
+
\section1 License Information
The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
@@ -860,6 +870,8 @@
\brief The QAxServer module is a Windows-only static library that
you can use to turn a standard Qt binary into a COM server.
+ QAxServer is part of the \l{ActiveQt Framework}.
+
\section1 License Information
The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
diff --git a/doc/src/snippets/code/doc_src_deployment.qdoc b/doc/src/snippets/code/doc_src_deployment.qdoc
index 3b0cda1..48e9ac6 100644
--- a/doc/src/snippets/code/doc_src_deployment.qdoc
+++ b/doc/src/snippets/code/doc_src_deployment.qdoc
@@ -463,7 +463,8 @@ vendorinfo = \
"%{\"Example Localized Vendor\"}" \
":\"Example Vendor\""
-default_deployment.pkg_prerules = vendorinfo
+my_deployment.pkg_prerules = vendorinfo
+DEPLOYMENT += my_deployment
//! [56]
//! [57]
@@ -471,7 +472,9 @@ supported_platforms = \
"; This demo only supports S60 5.0" \
"[0x1028315F],0,0,0,{\"S60ProductID\"}"
-default_deployment.pkg_prerules += supported_platforms
+default_deployment.pkg_prerules -= pkg_platform_dependencies
+my_deployment.pkg_prerules += supported_platforms
+DEPLOYMENT += my_deployment
//! [57]
//! [58]
diff --git a/doc/src/snippets/code/doc_src_qmake-manual.qdoc b/doc/src/snippets/code/doc_src_qmake-manual.qdoc
index 36676ae..d9e5d3c 100644
--- a/doc/src/snippets/code/doc_src_qmake-manual.qdoc
+++ b/doc/src/snippets/code/doc_src_qmake-manual.qdoc
@@ -933,7 +933,9 @@ DEPLOYMENT += somelib justdep
//! [140]
//! [141]
-default_deployment.pkg_prerules = "[0x11223344],0,0,0,{\"SomeSpecificDeviceID\"}"
+default_deployment.pkg_prerules -= pkg_platform_dependencies
+my_deployment.pkg_prerules = "[0x11223344],0,0,0,{\"SomeSpecificDeviceID\"}"
+DEPLOYMENT += my_deployment
//! [141]
//! [142]
diff --git a/doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp b/doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp
index 94a9f68..2867bd5a 100644
--- a/doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp
+++ b/doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp
@@ -61,5 +61,6 @@ void MyClass::callFinishedSlot(QDBusPendingCallWatcher *call)
QByteArray data = reply.argumentAt<1>();
showReply(text, data);
}
+ call->deleteLater();
}
//! [1]
diff --git a/doc/src/snippets/declarative/flipable.qml b/doc/src/snippets/declarative/flipable.qml
new file mode 100644
index 0000000..c837ebc
--- /dev/null
+++ b/doc/src/snippets/declarative/flipable.qml
@@ -0,0 +1,37 @@
+//! [0]
+import Qt 4.6
+
+Flipable {
+ id: flipable
+ width: 240
+ height: 240
+
+ property int angle: 0
+ property bool flipped: false
+
+ front: Image { source: "front.png" }
+ back: Image { source: "back.png" }
+
+ transform: Rotation {
+ origin.x: flipable.width/2; origin.y: flipable.height/2
+ axis.x: 0; axis.y: 1; axis.z: 0 // rotate around y-axis
+ angle: flipable.angle
+ }
+
+ states: State {
+ name: "back"
+ PropertyChanges { target: flipable; angle: 180 }
+ when: flipable.flipped
+ }
+
+ transitions: Transition {
+ NumberAnimation { properties: "angle"; duration: 1000 }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: flipable.flipped = !flipable.flipped
+ }
+}
+//! [0]
+
diff --git a/examples/declarative/animations/property-animation.qml b/examples/declarative/animations/property-animation.qml
index 401feb5..fd5eb3c 100644
--- a/examples/declarative/animations/property-animation.qml
+++ b/examples/declarative/animations/property-animation.qml
@@ -40,7 +40,7 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
source: "images/face-smile.png"; y: minHeight
- // Animate the y property. Setting repeat to true makes the
+ // Animate the y property. Setting loops to Animation.Infinite makes the
// animation repeat indefinitely, otherwise it would only run once.
SequentialAnimation on y {
loops: Animation.Infinite
@@ -50,7 +50,7 @@ Item {
from: smiley.minHeight; to: smiley.maxHeight
easing.type: "OutExpo"; duration: 300
}
-
+
// Then move back to minHeight in 1 second, using the OutBounce easing function
NumberAnimation {
from: smiley.maxHeight; to: smiley.minHeight
diff --git a/examples/declarative/behaviours/SideRect.qml b/examples/declarative/behaviors/SideRect.qml
index 63b7db2..7caac45 100644
--- a/examples/declarative/behaviours/SideRect.qml
+++ b/examples/declarative/behaviors/SideRect.qml
@@ -5,10 +5,9 @@ Rectangle {
property string text
- color: "black"
- width: 75; height: 50
- radius: 5
- border.width: 10; border.color: "white";
+ width: 75; height: 50; radius: 6
+ color: "#646464"; border.width: 4; border.color: "white"
+
MouseArea {
anchors.fill: parent
hoverEnabled: true
diff --git a/examples/declarative/behaviours/behavior-example.qml b/examples/declarative/behaviors/behavior-example.qml
index c84bf62..8da1ada 100644
--- a/examples/declarative/behaviours/behavior-example.qml
+++ b/examples/declarative/behaviors/behavior-example.qml
@@ -1,15 +1,14 @@
import Qt 4.6
Rectangle {
- color: "black"
- width: 400; height: 400
+ color: "#343434"
+ width: 600; height: 400
Rectangle {
- color: "transparent"
anchors.centerIn: parent
- width: 200; height: 200
- radius: 30
- border.width: 10; border.color: "white";
+ width: 200; height: 200; radius: 30
+ color: "transparent"; border.width: 4; border.color: "white"
+
SideRect {
id: leftRect
@@ -45,27 +44,35 @@ Rectangle {
property string text
- color: "red"
- width: 75; height: 50
- radius: 5
- border.width: 10; border.color: "white";
- x: 100-37; y: 100-25
- Behavior on x { NumberAnimation { duration: 300 } }
- Behavior on y { NumberAnimation { duration: 300 } }
+ color: "firebrick"
+ x: 62.5; y: 75; width: 75; height: 50
+ radius: 6; border.width: 4; border.color: "white"
+
+ // Setting an 'elastic' behavior on the focusRect's x property.
+ Behavior on x {
+ NumberAnimation { easing.type: "OutElastic"; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 }
+ }
+
+ // Setting an 'elastic' behavior on the focusRect's y property.
+ Behavior on y {
+ NumberAnimation { easing.type: "OutElastic"; easing.amplitude: 3.0; easing.period: 2.0; duration: 300 }
+ }
+
Text {
id: focusText
- text: focusRect.text;
+ text: focusRect.text
+ anchors.centerIn: parent
+ color: "white"; font.pixelSize: 16; font.bold: true
+
+ // Setting a behavior on the focusText's x property:
+ // Set the opacity to 0, set the new text value, then set the opacity back to 1.
Behavior on text {
SequentialAnimation {
NumberAnimation { target: focusText; property: "opacity"; to: 0; duration: 150 }
- PropertyAction {}
+ PropertyAction { }
NumberAnimation { target: focusText; property: "opacity"; to: 1; duration: 150 }
}
}
- anchors.centerIn: parent;
- color: "white";
- font.pixelSize: 16
- font.bold: true
}
}
}
diff --git a/examples/declarative/clocks/clocks.qml b/examples/declarative/clocks/clocks.qml
index 624748a..c5aa1dc 100644
--- a/examples/declarative/clocks/clocks.qml
+++ b/examples/declarative/clocks/clocks.qml
@@ -2,12 +2,11 @@ import Qt 4.6
import "content"
Rectangle {
- width: childrenRect.width
- height: childrenRect.height
+ width: 640; height: 240
color: "#646464"
- Grid {
- columns: 3
+ Row {
+ anchors.centerIn: parent
Clock { city: "New York"; shift: -4 }
Clock { city: "Mumbai"; shift: 5.5 }
Clock { city: "Tokyo"; shift: 9 }
diff --git a/examples/declarative/clocks/content/Clock.qml b/examples/declarative/clocks/content/Clock.qml
index 75a1cf5..90c6be8 100644
--- a/examples/declarative/clocks/content/Clock.qml
+++ b/examples/declarative/clocks/content/Clock.qml
@@ -74,7 +74,7 @@ Item {
}
Text {
- id: cityLabel; font.bold: true; font.pixelSize: 14; y:200; color: "white"
- anchors.horizontalCenter: parent.horizontalCenter
+ id: cityLabel; font.bold: true; font.pixelSize: 14; y: 200; color: "white"
+ anchors.horizontalCenter: parent.horizontalCenter; style: Text.Raised; styleColor: "black"
}
}
diff --git a/examples/declarative/colorbrowser/colorbrowser.qml b/examples/declarative/colorbrowser/colorbrowser.qml
deleted file mode 100644
index d4c21e7..0000000
--- a/examples/declarative/colorbrowser/colorbrowser.qml
+++ /dev/null
@@ -1,101 +0,0 @@
-import Qt 4.6
-import 'qml'
-
-Rectangle {
- id: mainWindow
- width: 800; height: 480; color: '#454545'
-
- VisualDataModel { id: colorsVisualModel; delegate: colorsDelegate; model: ColorsModel }
-
- Component {
- id: colorsDelegate
- Package {
-
- Item {
- Package.name: 'grid'
- GridView {
- id: gridView; model: visualModel.parts.grid; width: mainWindow.width; height: mainWindow.height
- cellWidth: 160; cellHeight: 160; interactive: false
- onCurrentIndexChanged: listView.positionViewAtIndex(currentIndex, ListView.Contain)
- }
- }
-
- Item {
- Package.name: 'fullscreen'
- ListView {
- id: listView; model: visualModel.parts.list; orientation: Qt.Horizontal
- width: mainWindow.width; height: mainWindow.height; interactive: false
- onCurrentIndexChanged: gridView.positionViewAtIndex(currentIndex, GridView.Contain)
- highlightRangeMode: ListView.StrictlyEnforceRange; snapMode: ListView.SnapOneItem
- }
- }
-
- Item {
- Package.name: 'stack'
- id: wrapper
- width: 260; height: 240
-
- VisualDataModel { id: visualModel; model: colors; delegate: ColorDelegate {} }
-
- PathView {
- id: pathView; model: visualModel.parts.stack; anchors.centerIn: parent
- pathItemCount: 3
- path: Path {
- PathAttribute { name: 'z'; value: 9999.0 }
- PathLine { x: 1; y: 1 }
- PathAttribute { name: 'z'; value: 0.0 }
- }
- }
-
- Item {
- anchors.horizontalCenter: parent.horizontalCenter; anchors.bottom: parent.bottom; anchors.bottomMargin: 20
- width: albumTitle.width + 20 ; height: albumTitle.height + 4
- Text { id: albumTitle; text: name; color: 'white'; font.bold: true; anchors.centerIn: parent }
- }
-
- MouseArea { anchors.fill: parent; onClicked: wrapper.state = 'inGrid' }
-
- states: [
- State {
- name: 'inGrid'
- PropertyChanges { target: gridView; interactive: true }
- PropertyChanges { target: shade; opacity: 1 }
- },
- State {
- name: 'fullscreen'; extend: 'inGrid'
- PropertyChanges { target: gridView; interactive: false }
- PropertyChanges { target: listView; interactive: true }
- PropertyChanges { target: infobox; opacity: 1 }
- }
- ]
-
- transitions: [
- Transition {
- from: ''; to: 'inGrid'; reversible: true
- NumberAnimation { target: shade; properties: 'opacity'; duration: 300 }
- },
- Transition {
- from: 'inGrid'; to: 'fullscreen'; reversible: true
- SequentialAnimation {
- PauseAnimation { duration: 300 }
- NumberAnimation { target: infobox; properties: 'opacity'; duration: 300 }
- }
- }
- ]
- }
- }
- }
-
- GridView { width: parent.width; height: parent.height; cellWidth: 260; cellHeight: 240; model: colorsVisualModel.parts.stack }
- Rectangle { id: shade; color: '#454545'; width: parent.width; height: parent.height; opacity: 0 }
- ListView { anchors.fill: parent; model: colorsVisualModel.parts.grid; interactive: false }
- ListView { anchors.fill: parent; model: colorsVisualModel.parts.fullscreen; interactive: false }
- Item { id: foreground; anchors.fill: parent }
-
- Column {
- id: infobox; opacity: 0
- anchors { left: parent.left; leftMargin: 20; bottom: parent.bottom; bottomMargin: 20 }
- Text { id: infoColorName; color: '#eeeeee'; style: Text.Outline; styleColor: '#222222'; font.pointSize: 18 }
- Text { id: infoColorHex; color: '#eeeeee'; style: Text.Outline; styleColor: '#222222'; font.pointSize: 14 }
- }
-}
diff --git a/examples/declarative/colorbrowser/dummydata/ColorsModel.qml b/examples/declarative/colorbrowser/dummydata/ColorsModel.qml
deleted file mode 100644
index eefbcfe..0000000
--- a/examples/declarative/colorbrowser/dummydata/ColorsModel.qml
+++ /dev/null
@@ -1,96 +0,0 @@
-import Qt 4.6
-
-ListModel {
- id: colorsModel
-
- ListElement {
- name: "Reds"
- colors: [
- ListElement { name: "Fire Brick"; hex: "#B22222" },
- ListElement { name: "Fire Brick 1"; hex: "#FF3030" },
- ListElement { name: "Fire Brick 2"; hex: "#EE2C2C" },
- ListElement { name: "Fire Brick 3"; hex: "#CD2626" },
- ListElement { name: "Fire Brick 4"; hex: "#8B1A1A" },
- ListElement { name: "Red"; hex: "#FF0000" },
- ListElement { name: "Red 2"; hex: "#EE0000" },
- ListElement { name: "Red 3"; hex: "#CD0000" },
- ListElement { name: "Red 4"; hex: "#8B0000" },
- ListElement { name: "Tomato"; hex: "#FF6347" },
- ListElement { name: "Tomato 2"; hex: "#EE5C42" },
- ListElement { name: "Tomato 3"; hex: "#CD4F39" },
- ListElement { name: "Tomato 4"; hex: "#8B3626" },
- ListElement { name: "Orange Red"; hex: "#FF4500" },
- ListElement { name: "Orange Red 2"; hex: "#EE4000" },
- ListElement { name: "Orange Red 3"; hex: "#CD3700" },
- ListElement { name: "Orange Red 4"; hex: "#8B2500" },
- ListElement { name: "Indian Red 2"; hex: "#EE6363" },
- ListElement { name: "Indian Red 3"; hex: "#CD5555" },
- ListElement { name: "Indian Red 4"; hex: "#8B3A3A" },
- ListElement { name: "Brown"; hex: "#A52A2A" },
- ListElement { name: "Brown 1"; hex: "#FF4040" },
- ListElement { name: "Brown 2"; hex: "#EE3B3B" },
- ListElement { name: "Brown 3"; hex: "#CD3333" },
- ListElement { name: "Brown 4"; hex: "#8B2323" }
- ]
- }
- ListElement {
- name: "Greens"
- colors: [
- ListElement { name: "Green"; hex: "#008000" },
- ListElement { name: "Green 2"; hex: "#00EE00" },
- ListElement { name: "Green 3"; hex: "#00CD00" },
- ListElement { name: "Green 4"; hex: "#008B00" },
- ListElement { name: "Dark Green"; hex: "#006400" },
- ListElement { name: "Sap Green"; hex: "#308014" },
- ListElement { name: "Medium Spring Green"; hex: "#00FA9A" },
- ListElement { name: "Spring Green"; hex: "#00FF7F" },
- ListElement { name: "Spring Green 1"; hex: "#00EE76" },
- ListElement { name: "Spring Green 2"; hex: "#00CD66" },
- ListElement { name: "Spring Green 3"; hex: "#008B45" },
- ListElement { name: "Medium Sea Green"; hex: "#3CB371" },
- ListElement { name: "Sea Green 1"; hex: "#54FF9F" },
- ListElement { name: "Sea Green 2"; hex: "#4EEE94" },
- ListElement { name: "Sea Green 3"; hex: "#43CD80" },
- ListElement { name: "Sea Green 4"; hex: "#2E8B57" },
- ListElement { name: "Emerald Green"; hex: "#00C957" },
- ListElement { name: "Mint"; hex: "#BDFCC9" },
- ListElement { name: "Cobalt Green"; hex: "#3D9140" },
- ListElement { name: "Dark Sea Green"; hex: "#8FBC8F" },
- ListElement { name: "Dark Sea Green 1"; hex: "#C1FFC1" },
- ListElement { name: "Dark Sea Green 2"; hex: "#B4EEB4" },
- ListElement { name: "Dark Sea Green 3"; hex: "#9BCD9B" },
- ListElement { name: "Dark Sea Green 4"; hex: "#698B69" },
- ListElement { name: "Lime Green"; hex: "#00FF00" }
- ]
- }
- ListElement {
- name: "Blues"
- colors: [
- ListElement { name: "Dark Slate Blue"; hex: "#483D8B" },
- ListElement { name: "Light Slate Blue"; hex: "#8470FF" },
- ListElement { name: "Medium Slate Blue"; hex: "#7B68EE" },
- ListElement { name: "Slate Blue"; hex: "#6A5ACD" },
- ListElement { name: "Blue"; hex: "#0000FF" },
- ListElement { name: "Midnight Blue"; hex: "#191970" },
- ListElement { name: "Cobalt"; hex: "#3D59AB" },
- ListElement { name: "Royal Blue"; hex: "#4169E1" },
- ListElement { name: "Corn Flower Blue"; hex: "#6495ED" },
- ListElement { name: "Light Steel Blue"; hex: "#B0C4DE" },
- ListElement { name: "Light Steel Blue 1"; hex: "#CAE1FF" },
- ListElement { name: "Light Steel Blue 2"; hex: "#BCD2EE" },
- ListElement { name: "Light Steel Blue 3"; hex: "#A2B5CD" },
- ListElement { name: "Dodger Blue"; hex: "#1E90FF" },
- ListElement { name: "Dodger Blue 2"; hex: "#1C86EE" },
- ListElement { name: "Dodger Blue 3"; hex: "#1874CD" },
- ListElement { name: "Dodger Blue 4"; hex: "#104E8B" },
- ListElement { name: "Steel Blue"; hex: "#4682B4" },
- ListElement { name: "Light Sky Blue"; hex: "#87CEFA" },
- ListElement { name: "Sky Blue"; hex: "#87CEEB" },
- ListElement { name: "Peacock"; hex: "#33A1C9" },
- ListElement { name: "Light Blue"; hex: "#ADD8E6" },
- ListElement { name: "Powder Blue"; hex: "#B0E0E6" },
- ListElement { name: "Cadet Blue"; hex: "#5F9EA0" },
- ListElement { name: "Cyan"; hex: "#00FFFF" }
- ]
- }
-}
diff --git a/examples/declarative/colorbrowser/qml/ColorDelegate.qml b/examples/declarative/colorbrowser/qml/ColorDelegate.qml
deleted file mode 100644
index c123d12..0000000
--- a/examples/declarative/colorbrowser/qml/ColorDelegate.qml
+++ /dev/null
@@ -1,114 +0,0 @@
-import Qt 4.6
-
-Package {
- Item { id: stack; Package.name: 'stack'; width: 110; height: 110; z: stack.PathView.z }
- Item { id: list; Package.name: 'list'; width: mainWindow.width + 4; height: 110 }
- Item { id: grid; Package.name: 'grid'; width: 110; height: 110 }
-
- Item {
- id: delegate
-
- property double randomAngle: Math.random() * (2 * 8 + 1) - 8
- property bool open: false
-
- width: 110; height: 110; z: stack.PathView.z
-
- Image { x: -6; y: -5; source: 'box-shadow.png'; smooth: true; }
- Rectangle { color: hex; anchors.fill: parent; smooth: true }
- Image { id: box; source: 'box.png'; smooth: true; anchors.fill: parent }
-
- Binding {
- target: infoColorName; property: 'text'
- value: name; when: delegate.open && list.ListView.isCurrentItem
- }
-
- Binding {
- target: infoColorHex; property: 'text'
- value: hex; when: delegate.open && list.ListView.isCurrentItem
- }
-
- MouseArea {
- anchors.fill: parent
- acceptedButtons: Qt.RightButton | Qt.LeftButton
- onClicked: {
- if (wrapper.state == 'inGrid' && mouse.button == Qt.RightButton) {
- wrapper.state = ''
- } else if (wrapper.state == 'inGrid') {
- grid.GridView.view.currentIndex = index;
- wrapper.state = 'fullscreen'
- } else {
- grid.GridView.view.currentIndex = index;
- wrapper.state = 'inGrid'
- }
- }
- }
-
- states: [
- State {
- name: 'stacked'; when: wrapper.state == ''
- ParentChange { target: delegate; parent: stack; x: 0; y: 0; rotation: delegate.randomAngle }
- PropertyChanges { target: delegate; visible: stack.PathView.onPath ? 1.0 : 0.0 }
- },
- State {
- name: 'inGrid'; when: wrapper.state == 'inGrid'
- ParentChange { target: delegate; parent: grid; x: 24; y: 24 }
- PropertyChanges { target: delegate; open: true }
- },
- State {
- name: 'fullscreen'; when: wrapper.state == 'fullscreen'
- ParentChange { target: delegate; parent: list; x: 0; y: 0; width: mainWindow.width; height: mainWindow.height }
- PropertyChanges { target: box; opacity: 0 }
- PropertyChanges { target: delegate; open: true }
- }
- ]
-
- transitions: [
- Transition {
- from: 'stacked'; to: 'inGrid'
- SequentialAnimation {
- PauseAnimation { duration: 20 * index }
- ParentAnimation {
- target: delegate; via: foreground
- NumberAnimation { targets: delegate; properties: 'x,y,width,height,rotation'; duration: 600; easing.type: 'OutBack' }
- }
- }
- },
- Transition {
- from: 'inGrid'; to: 'stacked'
- ParentAnimation {
- target: delegate; via: foreground
- NumberAnimation { properties: 'x,y,width,height,rotation'; duration: 300; easing.type: 'InOutQuad' }
- }
- },
- Transition {
- from: 'inGrid'; to: 'fullscreen'
- SequentialAnimation {
- PauseAnimation { duration: grid.GridView.isCurrentItem ? 0 : 300 }
- ParentAnimation {
- target: delegate; via: foreground
- NumberAnimation {
- properties: 'x,y,width,height,opacity'
- duration: grid.GridView.isCurrentItem ? 300 : 1; easing.type: 'InOutQuad'
- }
- }
- }
- },
- Transition {
- from: 'fullscreen'; to: 'inGrid'
- SequentialAnimation {
- PauseAnimation { duration: grid.GridView.isCurrentItem ? 3 : 0 }
- ParallelAnimation {
- ParentAnimation {
- target: delegate; via: foreground
- NumberAnimation {
- properties: 'x,y,width,height'
- duration: grid.GridView.isCurrentItem ? 300 : 1; easing.type: 'InOutQuad'
- }
- }
- NumberAnimation { properties: 'opacity'; duration: grid.GridView.isCurrentItem ? 300 : 1; easing.type: 'InOutQuad' }
- }
- }
- }
- ]
- }
-}
diff --git a/examples/declarative/colorbrowser/qml/box-shadow.png b/examples/declarative/colorbrowser/qml/box-shadow.png
deleted file mode 100644
index 3281a37..0000000
--- a/examples/declarative/colorbrowser/qml/box-shadow.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/colorbrowser/qml/box.png b/examples/declarative/colorbrowser/qml/box.png
deleted file mode 100644
index 86538aa..0000000
--- a/examples/declarative/colorbrowser/qml/box.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/declarative.pro b/examples/declarative/declarative.pro
index b8c0200..98ea6c4 100644
--- a/examples/declarative/declarative.pro
+++ b/examples/declarative/declarative.pro
@@ -5,22 +5,25 @@ SUBDIRS = \
extending \
imageprovider \
objectlistmodel \
- plugins
+ plugins \
+ proxywidgets
+
+# plugins uses a 'Time' class that conflicts with symbian e32std.h also defining a class of the same name
+symbian:SUBDIRS -= plugins
# These examples contain no C++ and can simply be copied
sources.files = \
animations \
aspectratio \
- behaviours \
+ behaviors \
border-image \
clocks \
- colorbrowser \
connections \
dial \
dynamic \
effects \
fillmode \
- focusscope \
+ focus \
fonts \
gridview \
layouts \
diff --git a/examples/declarative/extending/attached/person.h b/examples/declarative/extending/attached/person.h
index 0f86d8b..08caebf 100644
--- a/examples/declarative/extending/attached/person.h
+++ b/examples/declarative/extending/attached/person.h
@@ -76,7 +76,7 @@ QML_DECLARE_TYPE(ShoeDescription);
class Person : public QObject {
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE setName)
-Q_PROPERTY(ShoeDescription *shoe READ shoe);
+Q_PROPERTY(ShoeDescription *shoe READ shoe)
public:
Person(QObject *parent = 0);
diff --git a/examples/declarative/extending/binding/person.h b/examples/declarative/extending/binding/person.h
index 1bec71c..2d4ec12 100644
--- a/examples/declarative/extending/binding/person.h
+++ b/examples/declarative/extending/binding/person.h
@@ -80,7 +80,7 @@ class Person : public QObject {
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
// ![0]
-Q_PROPERTY(ShoeDescription *shoe READ shoe CONSTANT);
+Q_PROPERTY(ShoeDescription *shoe READ shoe CONSTANT)
// ![0]
public:
Person(QObject *parent = 0);
diff --git a/examples/declarative/extending/extended/lineedit.h b/examples/declarative/extending/extended/lineedit.h
index ca96d05..9730b91 100644
--- a/examples/declarative/extending/extended/lineedit.h
+++ b/examples/declarative/extending/extended/lineedit.h
@@ -46,10 +46,10 @@
class LineEditExtension : public QObject
{
Q_OBJECT
-Q_PROPERTY(int leftMargin READ leftMargin WRITE setLeftMargin NOTIFY marginsChanged);
-Q_PROPERTY(int rightMargin READ rightMargin WRITE setRightMargin NOTIFY marginsChanged);
-Q_PROPERTY(int topMargin READ topMargin WRITE setTopMargin NOTIFY marginsChanged);
-Q_PROPERTY(int bottomMargin READ bottomMargin WRITE setBottomMargin NOTIFY marginsChanged);
+Q_PROPERTY(int leftMargin READ leftMargin WRITE setLeftMargin NOTIFY marginsChanged)
+Q_PROPERTY(int rightMargin READ rightMargin WRITE setRightMargin NOTIFY marginsChanged)
+Q_PROPERTY(int topMargin READ topMargin WRITE setTopMargin NOTIFY marginsChanged)
+Q_PROPERTY(int bottomMargin READ bottomMargin WRITE setBottomMargin NOTIFY marginsChanged)
public:
LineEditExtension(QObject *);
diff --git a/examples/declarative/extending/grouped/person.h b/examples/declarative/extending/grouped/person.h
index 5dab378..5ea2348 100644
--- a/examples/declarative/extending/grouped/person.h
+++ b/examples/declarative/extending/grouped/person.h
@@ -77,7 +77,7 @@ class Person : public QObject {
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE setName)
// ![1]
-Q_PROPERTY(ShoeDescription *shoe READ shoe);
+Q_PROPERTY(ShoeDescription *shoe READ shoe)
// ![1]
public:
Person(QObject *parent = 0);
diff --git a/examples/declarative/extending/signal/person.h b/examples/declarative/extending/signal/person.h
index 0f86d8b..08caebf 100644
--- a/examples/declarative/extending/signal/person.h
+++ b/examples/declarative/extending/signal/person.h
@@ -76,7 +76,7 @@ QML_DECLARE_TYPE(ShoeDescription);
class Person : public QObject {
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE setName)
-Q_PROPERTY(ShoeDescription *shoe READ shoe);
+Q_PROPERTY(ShoeDescription *shoe READ shoe)
public:
Person(QObject *parent = 0);
diff --git a/examples/declarative/extending/valuesource/person.h b/examples/declarative/extending/valuesource/person.h
index 0f86d8b..08caebf 100644
--- a/examples/declarative/extending/valuesource/person.h
+++ b/examples/declarative/extending/valuesource/person.h
@@ -76,7 +76,7 @@ QML_DECLARE_TYPE(ShoeDescription);
class Person : public QObject {
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE setName)
-Q_PROPERTY(ShoeDescription *shoe READ shoe);
+Q_PROPERTY(ShoeDescription *shoe READ shoe)
public:
Person(QObject *parent = 0);
diff --git a/examples/declarative/flipable/back.png b/examples/declarative/flipable/back.png
deleted file mode 100644
index 0b4cafc..0000000
--- a/examples/declarative/flipable/back.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/flipable/content/5_heart.png b/examples/declarative/flipable/content/5_heart.png
new file mode 100644
index 0000000..fb59d81
--- /dev/null
+++ b/examples/declarative/flipable/content/5_heart.png
Binary files differ
diff --git a/examples/declarative/flipable/content/9_club.png b/examples/declarative/flipable/content/9_club.png
new file mode 100644
index 0000000..2545001
--- /dev/null
+++ b/examples/declarative/flipable/content/9_club.png
Binary files differ
diff --git a/examples/declarative/flipable/content/Card.qml b/examples/declarative/flipable/content/Card.qml
new file mode 100644
index 0000000..6b8fa69
--- /dev/null
+++ b/examples/declarative/flipable/content/Card.qml
@@ -0,0 +1,38 @@
+import Qt 4.6
+
+Flipable {
+ id: container
+
+ property alias image: frontImage.source
+ property bool flipped: true
+ property int xAxis: 0
+ property int yAxis: 0
+ property int angle: 0
+
+ width: front.width; height: front.height; state: "back"
+
+ front: Image { id: frontImage; smooth: true }
+ back: Image { source: "back.png"; smooth: true }
+
+ MouseArea { anchors.fill: parent; onClicked: container.flipped = !container.flipped }
+
+ transform: Rotation {
+ id: rotation; origin.x: container.width / 2; origin.y: container.height / 2
+ axis.x: container.xAxis; axis.y: container.yAxis; axis.z: 0
+ }
+
+ states: State {
+ name: "back"; when: container.flipped
+ PropertyChanges { target: rotation; angle: container.angle }
+ }
+
+ transitions: Transition {
+ ParallelAnimation {
+ NumberAnimation { target: rotation; properties: "angle"; duration: 600 }
+ SequentialAnimation {
+ NumberAnimation { target: container; property: "scale"; to: 0.75; duration: 300 }
+ NumberAnimation { target: container; property: "scale"; to: 1.0; duration: 300 }
+ }
+ }
+ }
+}
diff --git a/examples/declarative/flipable/content/back.png b/examples/declarative/flipable/content/back.png
new file mode 100644
index 0000000..f715d74
--- /dev/null
+++ b/examples/declarative/flipable/content/back.png
Binary files differ
diff --git a/examples/declarative/flipable/flipable-example.qml b/examples/declarative/flipable/flipable-example.qml
index c837ebc..eebc721 100644
--- a/examples/declarative/flipable/flipable-example.qml
+++ b/examples/declarative/flipable/flipable-example.qml
@@ -1,37 +1,13 @@
-//! [0]
import Qt 4.6
+import "content"
-Flipable {
- id: flipable
- width: 240
- height: 240
+Rectangle {
+ id: window; width: 480; height: 320
+ color: "darkgreen"
- property int angle: 0
- property bool flipped: false
-
- front: Image { source: "front.png" }
- back: Image { source: "back.png" }
-
- transform: Rotation {
- origin.x: flipable.width/2; origin.y: flipable.height/2
- axis.x: 0; axis.y: 1; axis.z: 0 // rotate around y-axis
- angle: flipable.angle
- }
-
- states: State {
- name: "back"
- PropertyChanges { target: flipable; angle: 180 }
- when: flipable.flipped
- }
-
- transitions: Transition {
- NumberAnimation { properties: "angle"; duration: 1000 }
- }
-
- MouseArea {
- anchors.fill: parent
- onClicked: flipable.flipped = !flipable.flipped
+ Row {
+ anchors.centerIn: parent; spacing: 30
+ Card { image: "content/9_club.png"; angle: 180; yAxis: 1 }
+ Card { image: "content/5_heart.png"; angle: 540; xAxis: 1 }
}
}
-//! [0]
-
diff --git a/examples/declarative/flipable/front.png b/examples/declarative/flipable/front.png
deleted file mode 100644
index 796b605..0000000
--- a/examples/declarative/flipable/front.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/focus/Core/ContextMenu.qml b/examples/declarative/focus/Core/ContextMenu.qml
new file mode 100644
index 0000000..bd6d8a2
--- /dev/null
+++ b/examples/declarative/focus/Core/ContextMenu.qml
@@ -0,0 +1,15 @@
+import Qt 4.6
+
+FocusScope {
+ id: container
+ property bool open: false
+
+ Item {
+ anchors.fill: parent
+
+ Rectangle {
+ anchors.fill: parent; color: "#D1DBBD"; focus: true
+ Keys.onRightPressed: mainView.focus = true
+ }
+ }
+}
diff --git a/examples/declarative/focus/Core/GridMenu.qml b/examples/declarative/focus/Core/GridMenu.qml
new file mode 100644
index 0000000..03d837a
--- /dev/null
+++ b/examples/declarative/focus/Core/GridMenu.qml
@@ -0,0 +1,54 @@
+import Qt 4.6
+
+FocusScope {
+ property alias interactive: gridView.interactive
+
+ onWantsFocusChanged: if (wantsFocus) mainView.state = ""
+
+ Rectangle {
+ clip: true; anchors.fill: parent
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "#193441" }
+ GradientStop { position: 1.0; color: Qt.darker("#193441") }
+ }
+
+ GridView {
+ id: gridView; cellWidth: 152; cellHeight: 152; focus: true
+ x: 20; width: parent.width - 40; height: parent.height
+ model: 12
+ KeyNavigation.down: listViews
+ KeyNavigation.left: contextMenu
+
+ delegate: Item {
+ id: container; width: GridView.view.cellWidth; height: GridView.view.cellHeight
+
+ Rectangle {
+ id: content
+ color: "transparent"; smooth: true
+ anchors.centerIn: parent; width: container.width - 40; height: container.height - 40; radius: 10
+ Rectangle { color: "#91AA9D"; x: 3; y: 3; width: parent.width - 6; height: parent.height - 6; radius: 8 }
+ Image { source: "images/qt-logo.png"; anchors.centerIn: parent; smooth: true }
+ }
+
+ MouseArea {
+ id: mouseArea; anchors.fill: parent; hoverEnabled: true
+ onClicked: {
+ GridView.view.currentIndex = index
+ container.focus = true
+ gridMenu.focus = true
+ mainView.focus = true
+ }
+ }
+
+ states: State {
+ name: "active"; when: container.focus == true
+ PropertyChanges { target: content; color: "#FCFFF5"; scale: 1.1 }
+ }
+
+ transitions: Transition {
+ NumberAnimation { properties: "scale"; duration: 100 }
+ }
+ }
+ }
+ }
+}
diff --git a/examples/declarative/focus/Core/ListViewDelegate.qml b/examples/declarative/focus/Core/ListViewDelegate.qml
new file mode 100644
index 0000000..b7e067a
--- /dev/null
+++ b/examples/declarative/focus/Core/ListViewDelegate.qml
@@ -0,0 +1,39 @@
+import Qt 4.6
+
+Component {
+ Item {
+ id: container
+ x: 5; width: ListView.view.width - 10; height: 60
+
+ Rectangle {
+ id: content
+ color: "transparent"; smooth: true
+ anchors.centerIn: parent; width: container.width - 40; height: container.height - 10; radius: 10
+ Rectangle { color: "#91AA9D"; x: 3; y: 3; width: parent.width - 6; height: parent.height - 6; radius: 8 }
+ Text {
+ text: "List element " + (index + 1); color: "#193441"; font.bold: false; anchors.centerIn: parent
+ font.pixelSize: 14
+ }
+ }
+
+ MouseArea {
+ id: mouseArea; anchors.fill: parent; hoverEnabled: true
+ onClicked: {
+ ListView.view.currentIndex = index
+ container.focus = true
+ ListView.view.focus = true
+ listViews.focus = true
+ mainView.focus = true
+ }
+ }
+
+ states: State {
+ name: "active"; when: container.focus == true
+ PropertyChanges { target: content; color: "#FCFFF5"; scale: 1.1 }
+ }
+
+ transitions: Transition {
+ NumberAnimation { properties: "scale"; duration: 100 }
+ }
+ }
+}
diff --git a/examples/declarative/focus/Core/ListViews.qml b/examples/declarative/focus/Core/ListViews.qml
new file mode 100644
index 0000000..3cc4836
--- /dev/null
+++ b/examples/declarative/focus/Core/ListViews.qml
@@ -0,0 +1,47 @@
+import Qt 4.6
+
+FocusScope {
+ clip: true
+
+ onWantsFocusChanged: if (wantsFocus) mainView.state = "showListViews"
+
+ ListView {
+ id: list1
+ delegate: ListViewDelegate {}
+ y: wantsFocus ? 10 : 40; focus: true; width: parent.width / 3; height: parent.height - 20
+ model: 10; KeyNavigation.up: gridMenu; KeyNavigation.left: contextMenu; KeyNavigation.right: list2
+ Behavior on y { NumberAnimation { duration: 600; easing.type: "OutQuint" } }
+ }
+
+ ListView {
+ id: list2
+ delegate: ListViewDelegate {}
+ y: wantsFocus ? 10 : 40; x: parent.width / 3; width: parent.width / 3; height: parent.height - 20
+ model: 10; KeyNavigation.up: gridMenu; KeyNavigation.left: list1; KeyNavigation.right: list3
+ Behavior on y { NumberAnimation { duration: 600; easing.type: "OutQuint" } }
+ }
+
+ ListView {
+ id: list3
+ delegate: ListViewDelegate {}
+ y: wantsFocus ? 10 : 40; x: 2 * parent.width / 3; width: parent.width / 3; height: parent.height - 20
+ model: 10; KeyNavigation.up: gridMenu; KeyNavigation.left: list2
+ Behavior on y { NumberAnimation { duration: 600; easing.type: "OutQuint" } }
+ }
+
+ Rectangle { width: parent.width; height: 1; color: "#D1DBBD" }
+ Rectangle {
+ y: 1; width: parent.width; height: 10
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "#3E606F" }
+ GradientStop { position: 1.0; color: "transparent" }
+ }
+ }
+ Rectangle {
+ y: parent.height - 10; width: parent.width; height: 10
+ gradient: Gradient {
+ GradientStop { position: 1.0; color: "#3E606F" }
+ GradientStop { position: 0.0; color: "transparent" }
+ }
+ }
+}
diff --git a/examples/declarative/focus/Core/images/arrow.png b/examples/declarative/focus/Core/images/arrow.png
new file mode 100644
index 0000000..14978c2
--- /dev/null
+++ b/examples/declarative/focus/Core/images/arrow.png
Binary files differ
diff --git a/examples/declarative/focus/Core/images/qt-logo.png b/examples/declarative/focus/Core/images/qt-logo.png
new file mode 100644
index 0000000..14ddf2a
--- /dev/null
+++ b/examples/declarative/focus/Core/images/qt-logo.png
Binary files differ
diff --git a/examples/declarative/focus/Core/qmldir b/examples/declarative/focus/Core/qmldir
new file mode 100644
index 0000000..0460d9c
--- /dev/null
+++ b/examples/declarative/focus/Core/qmldir
@@ -0,0 +1,4 @@
+ContextMenu ContextMenu.qml
+GridMenu GridMenu.qml
+ListViews Listviews.qml
+ListViewDelegate ListViewDelegate.qml
diff --git a/examples/declarative/focus/focus.qml b/examples/declarative/focus/focus.qml
new file mode 100644
index 0000000..a8dc3c8
--- /dev/null
+++ b/examples/declarative/focus/focus.qml
@@ -0,0 +1,50 @@
+import Qt 4.6
+import "Core" 1.0
+
+Rectangle {
+ id: window; width: 800; height: 480; color: "#3E606F"
+
+ FocusScope {
+ id: mainView; focus: true; width: parent.width; height: parent.height
+
+ GridMenu {
+ id: gridMenu; focus: true
+ width: parent.width; height: 320; interactive: parent.wantsFocus
+ }
+
+ ListViews { id: listViews; y: 320; width: parent.width; height: 320 }
+
+ Rectangle { id: shade; color: "black"; opacity: 0; anchors.fill: parent }
+
+ states: State {
+ name: "showListViews"
+ PropertyChanges { target: gridMenu; y: -160 }
+ PropertyChanges { target: listViews; y: 160 }
+ }
+
+ transitions: Transition {
+ NumberAnimation { properties: "y"; duration: 600; easing.type: "OutQuint" }
+ }
+ }
+
+ Image {
+ source: "Core/images/arrow.png"; rotation: 90; anchors.verticalCenter: parent.verticalCenter
+ MouseArea {
+ anchors { fill: parent; leftMargin: -10; topMargin: -10; rightMargin: -10; bottomMargin: -10 }
+ onClicked: window.state = "contextMenuOpen"
+ }
+ }
+
+ ContextMenu { id: contextMenu; x: -265; width: 260; height: parent.height }
+
+ states: State {
+ name: "contextMenuOpen"; when: !mainView.wantsFocus
+ PropertyChanges { target: contextMenu; x: 0; open: true }
+ PropertyChanges { target: mainView; x: 130 }
+ PropertyChanges { target: shade; opacity: 0.25 }
+ }
+
+ transitions: Transition {
+ NumberAnimation { properties: "x,opacity"; duration: 600; easing.type: "OutQuint" }
+ }
+}
diff --git a/examples/declarative/gestures/experimental-gestures.qml b/examples/declarative/gestures/experimental-gestures.qml
new file mode 100644
index 0000000..914d403
--- /dev/null
+++ b/examples/declarative/gestures/experimental-gestures.qml
@@ -0,0 +1,27 @@
+import Qt 4.7
+import Qt.labs.gestures 1.0
+
+// Only works on platforms with Touch support.
+
+Rectangle {
+ id: rect
+
+ GestureArea {
+ anchors.fill: parent
+
+ // Only some of the many gesture properties are shown. See Gesture documentation.
+
+ onTap:
+ console.log("tap pos = (",gesture.position.x,",",gesture.position.y,")")
+ onTapAndHold:
+ console.log("tap and hold pos = (",gesture.position.x,",",gesture.position.y,")")
+ onPan:
+ console.log("pan delta = (",gesture.delta.x,",",gesture.delta.y,") acceleration = ",gesture.acceleration)
+ onPinch:
+ console.log("pinch center = (",gesture.centerPoint.x,",",gesture.centerPoint.y,") rotation =",gesture.rotationAngle," scale =",gesture.scaleFactor)
+ onSwipe:
+ console.log("swipe angle=",gesture.swipeAngle)
+ onGesture:
+ console.log("gesture hot spot = (",gesture.hotSpot.x,",",gesture.hotSpot.y,")")
+ }
+}
diff --git a/examples/declarative/imageprovider/imageprovider-example.qml b/examples/declarative/imageprovider/imageprovider-example.qml
index a1f2794..a895821 100644
--- a/examples/declarative/imageprovider/imageprovider-example.qml
+++ b/examples/declarative/imageprovider/imageprovider-example.qml
@@ -1,5 +1,5 @@
import Qt 4.6
-import ImageProviderCore 1.0
+import "ImageProviderCore"
//![0]
ListView {
width: 100
@@ -16,6 +16,7 @@ ListView {
}
Image {
source: modelData
+ sourceSize: "50x25"
}
}
}
diff --git a/examples/declarative/imageprovider/imageprovider.cpp b/examples/declarative/imageprovider/imageprovider.cpp
index 011a63b..4c4aa94 100644
--- a/examples/declarative/imageprovider/imageprovider.cpp
+++ b/examples/declarative/imageprovider/imageprovider.cpp
@@ -61,11 +61,21 @@ class ColorImageProvider : public QDeclarativeImageProvider
{
public:
// This is run in a low priority thread.
- QImage request(const QString &id) {
- QImage image(100, 50, QImage::Format_RGB32);
+ QImage request(const QString &id, QSize *size, const QSize &req_size)
+ {
+ if (size) *size = QSize(100,50);
+ QImage image(
+ req_size.width() > 0 ? req_size.width() : 100,
+ req_size.height() > 0 ? req_size.height() : 50,
+ QImage::Format_RGB32);
image.fill(QColor(id).rgba());
QPainter p(&image);
+ QFont f = p.font();
+ f.setPixelSize(30);
+ p.setFont(f);
p.setPen(Qt::black);
+ if (req_size.isValid())
+ p.scale(req_size.width()/100.0, req_size.height()/50.0);
p.drawText(QRectF(0,0,100,50),Qt::AlignCenter,id);
return image;
}
diff --git a/examples/declarative/imageprovider/imageprovider.pro b/examples/declarative/imageprovider/imageprovider.pro
index 86dbcca..945a301 100644
--- a/examples/declarative/imageprovider/imageprovider.pro
+++ b/examples/declarative/imageprovider/imageprovider.pro
@@ -18,4 +18,8 @@ ImageProviderCore_sources.files = \
ImageProviderCore/qmldir
ImageProviderCore_sources.path = $$[QT_INSTALL_EXAMPLES]/declarative/imageprovider/ImageProviderCore
+symbian:{
+ TARGET.EPOCALLOWDLLDATA=1
+}
+
INSTALLS = sources ImageProviderCore_sources target
diff --git a/examples/declarative/images/content/lemonade.jpg b/examples/declarative/images/content/lemonade.jpg
new file mode 100644
index 0000000..db445c9
--- /dev/null
+++ b/examples/declarative/images/content/lemonade.jpg
Binary files differ
diff --git a/examples/declarative/images/images.qml b/examples/declarative/images/images.qml
new file mode 100644
index 0000000..35ce1ab
--- /dev/null
+++ b/examples/declarative/images/images.qml
@@ -0,0 +1,69 @@
+import Qt 4.6
+
+Rectangle {
+ color: "white"
+ width: grid.width + 50
+ height: grid.height + 50
+
+ Grid {
+ x: 25; y: 25
+ id: grid
+ columns: 3
+
+ Image {
+ source: "content/lemonade.jpg"
+ }
+
+ Image {
+ sourceSize.width: 50
+ sourceSize.height: 50
+ source: "content/lemonade.jpg"
+ }
+
+ Image {
+ sourceSize.width: 50
+ sourceSize.height: 50
+ smooth: true
+ source: "content/lemonade.jpg"
+ }
+
+ Image {
+ scale: 1/3
+ source: "content/lemonade.jpg"
+ }
+
+ Image {
+ scale: 1/3
+ sourceSize.width: 50
+ sourceSize.height: 50
+ source: "content/lemonade.jpg"
+ }
+
+ Image {
+ scale: 1/3
+ sourceSize.width: 50
+ sourceSize.height: 50
+ smooth: true
+ source: "content/lemonade.jpg"
+ }
+
+ Image {
+ width: 50; height: 50; transform: Translate { x: 50 }
+ source: "content/lemonade.jpg"
+ }
+
+ Image {
+ width: 50; height: 50; transform: Translate { x: 50 }
+ sourceSize.width: 50
+ sourceSize.height: 50
+ source: "content/lemonade.jpg"
+ }
+
+ Image {
+ width: 50; height: 50; transform: Translate { x: 50 }
+ sourceSize: "50x50" // syntactic sugar
+ smooth: true
+ source: "content/lemonade.jpg"
+ }
+ }
+}
diff --git a/examples/declarative/plugins/plugin.cpp b/examples/declarative/plugins/plugin.cpp
index 741f68a..fb51b0c 100644
--- a/examples/declarative/plugins/plugin.cpp
+++ b/examples/declarative/plugins/plugin.cpp
@@ -46,7 +46,7 @@
#include <qbasictimer.h>
#include <qapplication.h>
-// Implements a "Time" class with hour and minute properties
+// Implements a "TimeModel" class with hour and minute properties
// that change on-the-minute yet efficiently sleep the rest
// of the time.
@@ -97,14 +97,14 @@ private:
QBasicTimer timer;
};
-class Time : public QObject
+class TimeModel : public QObject
{
Q_OBJECT
Q_PROPERTY(int hour READ hour NOTIFY timeChanged)
Q_PROPERTY(int minute READ minute NOTIFY timeChanged)
public:
- Time(QObject *parent=0) : QObject(parent)
+ TimeModel(QObject *parent=0) : QObject(parent)
{
if (++instances == 1) {
if (!timer)
@@ -114,7 +114,7 @@ public:
}
}
- ~Time()
+ ~TimeModel()
{
if (--instances == 0) {
timer->stop();
@@ -133,12 +133,8 @@ private:
static int instances;
};
-int Time::instances=0;
-MinuteTimer *Time::timer=0;
-
-
-QML_DECLARE_TYPE(Time);
-
+int TimeModel::instances=0;
+MinuteTimer *TimeModel::timer=0;
class QExampleQmlPlugin : public QDeclarativeExtensionPlugin
{
@@ -147,7 +143,7 @@ public:
void registerTypes(const char *uri)
{
Q_ASSERT(uri == QLatin1String("com.nokia.TimeExample"));
- qmlRegisterType<Time>(uri, 1, 0, "Time");
+ qmlRegisterType<TimeModel>(uri, 1, 0, "Time");
}
};
diff --git a/examples/declarative/plugins/plugins.pro b/examples/declarative/plugins/plugins.pro
index 877a5ce..c409d39 100644
--- a/examples/declarative/plugins/plugins.pro
+++ b/examples/declarative/plugins/plugins.pro
@@ -8,7 +8,7 @@ VERSION = 1.0.0
SOURCES += plugin.cpp
qdeclarativesources.files += \
- com/nokia/TimeExample/qdeclarativedir \
+ com/nokia/TimeExample/qmldir \
com/nokia/TimeExample/center.png \
com/nokia/TimeExample/clock.png \
com/nokia/TimeExample/Clock.qml \
@@ -22,6 +22,11 @@ sources.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins
target.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins/com/nokia/TimeExample
+symbian:{
+ TARGET.EPOCALLOWDLLDATA=1
+}
+
+
INSTALLS += qdeclarativesources sources target
symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
diff --git a/examples/declarative/progressbar/content/ProgressBar.qml b/examples/declarative/progressbar/content/ProgressBar.qml
index 65c80b2..aafb12e 100644
--- a/examples/declarative/progressbar/content/ProgressBar.qml
+++ b/examples/declarative/progressbar/content/ProgressBar.qml
@@ -21,7 +21,8 @@ Item {
id: highlight; radius: 1
anchors.left: parent.left; anchors.top: parent.top; anchors.bottom: parent.bottom
anchors.leftMargin: 3; anchors.topMargin: 3; anchors.bottomMargin: 3
- EaseFollow on width { source: highlight.widthDest; velocity: 1200 }
+ width: highlight.widthDest
+ Behavior on width { SmoothedAnimation { velocity: 1200 } }
gradient: Gradient {
GradientStop { id: g1; position: 0.0 }
GradientStop { id: g2; position: 1.0 }
diff --git a/examples/declarative/proxywidgets/ProxyWidgets/qmldir b/examples/declarative/proxywidgets/ProxyWidgets/qmldir
new file mode 100644
index 0000000..e55267c
--- /dev/null
+++ b/examples/declarative/proxywidgets/ProxyWidgets/qmldir
@@ -0,0 +1 @@
+plugin proxywidgetsplugin
diff --git a/examples/declarative/proxywidgets/README b/examples/declarative/proxywidgets/README
new file mode 100644
index 0000000..f50fa22
--- /dev/null
+++ b/examples/declarative/proxywidgets/README
@@ -0,0 +1,4 @@
+To run:
+
+ make install
+ qml proxywidgets.qml
diff --git a/examples/declarative/proxywidgets/proxywidgets.cpp b/examples/declarative/proxywidgets/proxywidgets.cpp
new file mode 100644
index 0000000..47d0cb9
--- /dev/null
+++ b/examples/declarative/proxywidgets/proxywidgets.cpp
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** 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 examples 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 <QtDeclarative/QDeclarativeExtensionPlugin>
+#include <QtDeclarative/qdeclarative.h>
+#include <QtGui/QGraphicsProxyWidget>
+#include <QtGui/QPushButton>
+#include <QDebug>
+
+class MyPushButton : public QGraphicsProxyWidget
+{
+ Q_OBJECT
+ Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
+
+public:
+ MyPushButton(QGraphicsItem* parent = 0)
+ : QGraphicsProxyWidget(parent)
+ {
+ widget = new QPushButton("MyPushButton");
+ widget->setAttribute(Qt::WA_NoSystemBackground);
+ setWidget(widget);
+
+ QObject::connect(widget, SIGNAL(clicked(bool)), this, SIGNAL(clicked(bool)));
+ }
+
+ QString text() const
+ {
+ return widget->text();
+ }
+
+ void setText(const QString& text)
+ {
+ if (text != widget->text()) {
+ widget->setText(text);
+ emit textChanged();
+ }
+ }
+
+Q_SIGNALS:
+ void clicked(bool);
+ void textChanged();
+
+private:
+ QPushButton *widget;
+};
+
+class ProxyWidgetsPlugin : public QDeclarativeExtensionPlugin
+{
+ Q_OBJECT
+public:
+ void registerTypes(const char *uri)
+ {
+ qmlRegisterType<MyPushButton>(uri, 1, 0, "MyPushButton");
+ }
+};
+
+#include "proxywidgets.moc"
+
+QML_DECLARE_TYPE(MyPushButton)
+
+Q_EXPORT_PLUGIN2(proxywidgetsplugin, ProxyWidgetsPlugin);
diff --git a/examples/declarative/proxywidgets/proxywidgets.pro b/examples/declarative/proxywidgets/proxywidgets.pro
new file mode 100644
index 0000000..eb85191
--- /dev/null
+++ b/examples/declarative/proxywidgets/proxywidgets.pro
@@ -0,0 +1,22 @@
+TEMPLATE = lib
+DESTDIR = ProxyWidgets
+TARGET = proxywidgetsplugin
+CONFIG += qt plugin
+QT += declarative
+VERSION = 1.0.0
+
+SOURCES += proxywidgets.cpp
+
+sources.files += proxywidgets.pro proxywidgets.cpp proxywidgets.qml
+
+sources.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins
+
+target.path += $$[QT_INSTALL_EXAMPLES]/declarative/plugins
+
+INSTALLS += sources target
+
+symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
+
+symbian:{
+ TARGET.EPOCALLOWDLLDATA = 1
+} \ No newline at end of file
diff --git a/examples/declarative/proxywidgets/proxywidgets.qml b/examples/declarative/proxywidgets/proxywidgets.qml
new file mode 100644
index 0000000..023de71
--- /dev/null
+++ b/examples/declarative/proxywidgets/proxywidgets.qml
@@ -0,0 +1,53 @@
+import Qt 4.6
+import "ProxyWidgets" 1.0
+
+Rectangle {
+ id: window
+ width: 640; height: 480; color: palette.window
+
+ property int margin: 30
+
+ SystemPalette { id: palette }
+
+ MyPushButton {
+ id: button1; x: margin; y: margin; text: "Right"; onClicked: window.state = "right"
+ transformOriginPoint: Qt.point(width / 2, height / 2)
+ }
+
+ MyPushButton {
+ id: button2; x: margin; y: margin + 30; text: "Bottom"; onClicked: window.state = "bottom"
+ transformOriginPoint: Qt.point(width / 2, height / 2)
+ }
+
+ MyPushButton {
+ id: button3; x: margin; y: margin + 60; text: "Quit"; onClicked: Qt.quit()
+ transformOriginPoint: Qt.point(width / 2, height / 2)
+ }
+
+ states: [
+ State {
+ name: "right"
+ PropertyChanges { target: button1; x: window.width - width - margin; text: "Left"; onClicked: window.state = "" }
+ PropertyChanges { target: button2; x: window.width - width - margin }
+ PropertyChanges { target: button3; x: window.width - width - margin }
+ PropertyChanges { target: window; color: Qt.darker(palette.window) }
+ },
+ State {
+ name: "bottom"
+ PropertyChanges { target: button1; y: window.height - height - margin; rotation: 180 }
+ PropertyChanges {
+ target: button2; x: button1.x + button1.width + 10; y: window.height - height - margin; rotation: 180
+ text: "Top"; onClicked: window.state = ""
+ }
+ PropertyChanges { target: button3; x: button2.x + button2.width + 10; y: window.height - height - margin; rotation: 180 }
+ PropertyChanges { target: window; color: Qt.lighter(palette.window) }
+ }
+ ]
+
+ transitions: Transition {
+ ParallelAnimation {
+ NumberAnimation { properties: "x,y,rotation"; duration: 600; easing.type: "OutQuad" }
+ ColorAnimation { target: window; duration: 600 }
+ }
+ }
+}
diff --git a/examples/declarative/tutorials/helloworld/Cell.qml b/examples/declarative/tutorials/helloworld/Cell.qml
index de4f3bb..9249ffe 100644
--- a/examples/declarative/tutorials/helloworld/Cell.qml
+++ b/examples/declarative/tutorials/helloworld/Cell.qml
@@ -5,10 +5,10 @@ import Qt 4.6
Item {
id: container
//![4]
- property alias color: rectangle.color
+ property alias cellColor: rectangle.color
//![4]
//![5]
- signal clicked(color color)
+ signal clicked(color cellColor)
//![5]
width: 40; height: 25
@@ -25,7 +25,7 @@ Item {
//![3]
MouseArea {
anchors.fill: parent
- onClicked: container.clicked(container.color)
+ onClicked: container.clicked(container.cellColor)
}
//![3]
}
diff --git a/examples/declarative/tutorials/helloworld/tutorial2.qml b/examples/declarative/tutorials/helloworld/tutorial2.qml
index 99889d7..38447e2 100644
--- a/examples/declarative/tutorials/helloworld/tutorial2.qml
+++ b/examples/declarative/tutorials/helloworld/tutorial2.qml
@@ -15,17 +15,17 @@ Rectangle {
Grid {
id: colorPicker
- anchors.bottom: page.bottom
+ x: 4; anchors.bottom: page.bottom; anchors.bottomMargin: 4
rows: 2; columns: 3; spacing: 3
//![1]
- Cell { color: "red"; onClicked: helloText.color = color }
+ Cell { cellColor: "red"; onClicked: helloText.color = cellColor }
//![1]
- Cell { color: "green"; onClicked: helloText.color = color }
- Cell { color: "blue"; onClicked: helloText.color = color }
- Cell { color: "yellow"; onClicked: helloText.color = color }
- Cell { color: "steelblue"; onClicked: helloText.color = color }
- Cell { color: "black"; onClicked: helloText.color = color }
+ Cell { cellColor: "green"; onClicked: helloText.color = cellColor }
+ Cell { cellColor: "blue"; onClicked: helloText.color = cellColor }
+ Cell { cellColor: "yellow"; onClicked: helloText.color = cellColor }
+ Cell { cellColor: "steelblue"; onClicked: helloText.color = cellColor }
+ Cell { cellColor: "black"; onClicked: helloText.color = cellColor }
}
}
//![0]
diff --git a/examples/declarative/tutorials/helloworld/tutorial3.qml b/examples/declarative/tutorials/helloworld/tutorial3.qml
index b8a4f77..d851c49 100644
--- a/examples/declarative/tutorials/helloworld/tutorial3.qml
+++ b/examples/declarative/tutorials/helloworld/tutorial3.qml
@@ -11,15 +11,14 @@ Rectangle {
text: "Hello world!"
font.pointSize: 24; font.bold: true
y: 30; anchors.horizontalCenter: page.horizontalCenter
- transformOrigin: Item.Center
//![1]
- MouseArea { id: mouseRegion; anchors.fill: parent }
+ MouseArea { id: mouseArea; anchors.fill: parent }
//![1]
//![2]
states: State {
- name: "down"; when: mouseRegion.pressed == true
+ name: "down"; when: mouseArea.pressed == true
PropertyChanges { target: helloText; y: 160; rotation: 180; color: "red" }
}
//![2]
@@ -37,15 +36,15 @@ Rectangle {
Grid {
id: colorPicker
- anchors.bottom: page.bottom
+ x: 4; anchors.bottom: page.bottom; anchors.bottomMargin: 4
rows: 2; columns: 3; spacing: 3
- Cell { color: "red"; onClicked: helloText.color = color }
- Cell { color: "green"; onClicked: helloText.color = color }
- Cell { color: "blue"; onClicked: helloText.color = color }
- Cell { color: "yellow"; onClicked: helloText.color = color }
- Cell { color: "steelblue"; onClicked: helloText.color = color }
- Cell { color: "black"; onClicked: helloText.color = color }
+ Cell { cellColor: "red"; onClicked: helloText.color = cellColor }
+ Cell { cellColor: "green"; onClicked: helloText.color = cellColor }
+ Cell { cellColor: "blue"; onClicked: helloText.color = cellColor }
+ Cell { cellColor: "yellow"; onClicked: helloText.color = cellColor }
+ Cell { cellColor: "steelblue"; onClicked: helloText.color = cellColor }
+ Cell { cellColor: "black"; onClicked: helloText.color = cellColor }
}
}
//![0]
diff --git a/examples/declarative/tutorials/samegame/samegame1/Button.qml b/examples/declarative/tutorials/samegame/samegame1/Button.qml
index 2e31ff8..5e28da7 100644
--- a/examples/declarative/tutorials/samegame/samegame1/Button.qml
+++ b/examples/declarative/tutorials/samegame/samegame1/Button.qml
@@ -14,11 +14,11 @@ Rectangle {
gradient: Gradient {
GradientStop {
id: topGrad; position: 0.0
- color: if (mr.pressed) { activePalette.dark } else { activePalette.light } }
+ color: if (mouseArea.pressed) { activePalette.dark } else { activePalette.light } }
GradientStop { position: 1.0; color: activePalette.button }
}
- MouseArea { id: mr; anchors.fill: parent; onClicked: container.clicked() }
+ MouseArea { id: mouseArea; anchors.fill: parent; onClicked: container.clicked() }
Text {
id: txtItem; text: container.text; anchors.centerIn: container; color: activePalette.buttonText
diff --git a/examples/declarative/tutorials/samegame/samegame1/samegame.qml b/examples/declarative/tutorials/samegame/samegame1/samegame.qml
index 5ed30c9..006b926 100644
--- a/examples/declarative/tutorials/samegame/samegame1/samegame.qml
+++ b/examples/declarative/tutorials/samegame/samegame1/samegame.qml
@@ -24,7 +24,7 @@ Rectangle {
anchors.bottom: screen.bottom
Button {
- id: btnA; text: "New Game"; onClicked: console.log("Implement me!");
+ id: btnA; text: "New Game"; onClicked: console.log("Starting a new game...");
anchors.left: parent.left; anchors.leftMargin: 3
anchors.verticalCenter: parent.verticalCenter
}
diff --git a/examples/declarative/tutorials/samegame/samegame2/Button.qml b/examples/declarative/tutorials/samegame/samegame2/Button.qml
index 6629302..a7853d4 100644
--- a/examples/declarative/tutorials/samegame/samegame2/Button.qml
+++ b/examples/declarative/tutorials/samegame/samegame2/Button.qml
@@ -13,11 +13,11 @@ Rectangle {
gradient: Gradient {
GradientStop {
id: topGrad; position: 0.0
- color: if (mr.pressed) { activePalette.dark } else { activePalette.light } }
+ color: if (mouseArea.pressed) { activePalette.dark } else { activePalette.light } }
GradientStop { position: 1.0; color: activePalette.button }
}
- MouseArea { id: mr; anchors.fill: parent; onClicked: container.clicked() }
+ MouseArea { id: mouseArea; anchors.fill: parent; onClicked: container.clicked() }
Text {
id: txtItem; text: container.text; anchors.centerIn: container; color: activePalette.buttonText
diff --git a/examples/declarative/tutorials/samegame/samegame2/samegame.js b/examples/declarative/tutorials/samegame/samegame2/samegame.js
index 2c02c61..0ec3a8b 100644
--- a/examples/declarative/tutorials/samegame/samegame2/samegame.js
+++ b/examples/declarative/tutorials/samegame/samegame2/samegame.js
@@ -15,6 +15,12 @@ function index(xIdx,yIdx) {
function initBoard()
{
+ //Delete old blocks
+ for(var i = 0; i<maxIndex; i++){
+ if(board[i] != null)
+ board[i].destroy();
+ }
+
//Calculate board size
maxX = Math.floor(background.width/tileSize);
maxY = Math.floor(background.height/tileSize);
diff --git a/examples/declarative/tutorials/samegame/samegame2/samegame.qml b/examples/declarative/tutorials/samegame/samegame2/samegame.qml
index 7e0bc0c..89d8035 100644
--- a/examples/declarative/tutorials/samegame/samegame2/samegame.qml
+++ b/examples/declarative/tutorials/samegame/samegame2/samegame.qml
@@ -1,13 +1,13 @@
import Qt 4.6
+//![2]
+import "samegame.js" as SameGame
+//![2]
Rectangle {
id: screen
width: 490; height: 720
SystemPalette { id: activePalette }
-//![2]
- Script { source: "samegame.js" }
-//![2]
Item {
width: parent.width; anchors.top: parent.top; anchors.bottom: toolbar.top
@@ -27,7 +27,7 @@ Rectangle {
//![1]
Button {
- id: btnA; text: "New Game"; onClicked: initBoard();
+ id: btnA; text: "New Game"; onClicked: SameGame.initBoard();
anchors.left: parent.left; anchors.leftMargin: 3
anchors.verticalCenter: parent.verticalCenter
}
diff --git a/examples/declarative/tutorials/samegame/samegame3/Button.qml b/examples/declarative/tutorials/samegame/samegame3/Button.qml
index 6629302..a7853d4 100644
--- a/examples/declarative/tutorials/samegame/samegame3/Button.qml
+++ b/examples/declarative/tutorials/samegame/samegame3/Button.qml
@@ -13,11 +13,11 @@ Rectangle {
gradient: Gradient {
GradientStop {
id: topGrad; position: 0.0
- color: if (mr.pressed) { activePalette.dark } else { activePalette.light } }
+ color: if (mouseArea.pressed) { activePalette.dark } else { activePalette.light } }
GradientStop { position: 1.0; color: activePalette.button }
}
- MouseArea { id: mr; anchors.fill: parent; onClicked: container.clicked() }
+ MouseArea { id: mouseArea; anchors.fill: parent; onClicked: container.clicked() }
Text {
id: txtItem; text: container.text; anchors.centerIn: container; color: activePalette.buttonText
diff --git a/examples/declarative/tutorials/samegame/samegame3/Dialog.qml b/examples/declarative/tutorials/samegame/samegame3/Dialog.qml
index 36178ec..966f85a 100644
--- a/examples/declarative/tutorials/samegame/samegame3/Dialog.qml
+++ b/examples/declarative/tutorials/samegame/samegame3/Dialog.qml
@@ -18,6 +18,6 @@ Rectangle {
NumberAnimation { duration: 1000 }
}
Text { id: myText; anchors.centerIn: parent; text: "Hello World!" }
- MouseArea { id: mr; anchors.fill: parent; onClicked: forceClose(); }
+ MouseArea { id: mouseArea; anchors.fill: parent; onClicked: forceClose(); }
}
//![0]
diff --git a/examples/declarative/tutorials/samegame/samegame3/samegame.js b/examples/declarative/tutorials/samegame/samegame3/samegame.js
index 38efb3b..33449fa 100644
--- a/examples/declarative/tutorials/samegame/samegame3/samegame.js
+++ b/examples/declarative/tutorials/samegame/samegame3/samegame.js
@@ -14,12 +14,6 @@ function index(xIdx,yIdx) {
function initBoard()
{
- for(var i = 0; i<maxIndex; i++){
- //Delete old blocks
- if(board[i] != null)
- board[i].destroy();
- }
-
//Calculate board size
maxX = Math.floor(gameCanvas.width/gameCanvas.tileSize);
maxY = Math.floor(gameCanvas.height/gameCanvas.tileSize);
diff --git a/examples/declarative/tutorials/samegame/samegame3/samegame.qml b/examples/declarative/tutorials/samegame/samegame3/samegame.qml
index 168bf9b..db25e24 100644
--- a/examples/declarative/tutorials/samegame/samegame3/samegame.qml
+++ b/examples/declarative/tutorials/samegame/samegame3/samegame.qml
@@ -1,12 +1,12 @@
//![0]
import Qt 4.6
+import "samegame.js" as SameGame
Rectangle {
id: screen
width: 490; height: 720
SystemPalette { id: activePalette }
- Script { source: "samegame.js" }
Item {
width: parent.width; anchors.top: parent.top; anchors.bottom: toolbar.top
@@ -28,8 +28,7 @@ Rectangle {
height: parent.height - (parent.height % tileSize);
MouseArea {
- id: gameMR
- anchors.fill: parent; onClicked: handleClick(mouse.x,mouse.y);
+ anchors.fill: parent; onClicked: SameGame.handleClick(mouse.x,mouse.y);
}
}
//![1]
@@ -46,7 +45,7 @@ Rectangle {
anchors.bottom: screen.bottom
Button {
- id: btnA; text: "New Game"; onClicked: initBoard();
+ id: btnA; text: "New Game"; onClicked: SameGame.initBoard();
anchors.left: parent.left; anchors.leftMargin: 3
anchors.verticalCenter: parent.verticalCenter
}
diff --git a/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml b/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml
index a6ef62c..e50aae0 100644
--- a/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml
+++ b/examples/declarative/tutorials/samegame/samegame4/content/BoomBlock.qml
@@ -9,7 +9,7 @@ Item { id:block
property int targetX: 0
property int targetY: 0
- SpringFollow on x { enabled: spawned; source: targetX; spring: 2; damping: 0.2 }
+ SpringFollow on x { source: targetX; spring: 2; damping: 0.2; enabled: spawned }
SpringFollow on y { source: targetY; spring: 2; damping: 0.2 }
//![1]
diff --git a/examples/declarative/tutorials/samegame/samegame4/content/Button.qml b/examples/declarative/tutorials/samegame/samegame4/content/Button.qml
index 6629302..a7853d4 100644
--- a/examples/declarative/tutorials/samegame/samegame4/content/Button.qml
+++ b/examples/declarative/tutorials/samegame/samegame4/content/Button.qml
@@ -13,11 +13,11 @@ Rectangle {
gradient: Gradient {
GradientStop {
id: topGrad; position: 0.0
- color: if (mr.pressed) { activePalette.dark } else { activePalette.light } }
+ color: if (mouseArea.pressed) { activePalette.dark } else { activePalette.light } }
GradientStop { position: 1.0; color: activePalette.button }
}
- MouseArea { id: mr; anchors.fill: parent; onClicked: container.clicked() }
+ MouseArea { id: mouseArea; anchors.fill: parent; onClicked: container.clicked() }
Text {
id: txtItem; text: container.text; anchors.centerIn: container; color: activePalette.buttonText
diff --git a/examples/declarative/tutorials/samegame/samegame4/content/Dialog.qml b/examples/declarative/tutorials/samegame/samegame4/content/Dialog.qml
index 831c03b..fc83e39 100644
--- a/examples/declarative/tutorials/samegame/samegame4/content/Dialog.qml
+++ b/examples/declarative/tutorials/samegame/samegame4/content/Dialog.qml
@@ -17,5 +17,5 @@ Rectangle {
NumberAnimation { duration: 1000 }
}
Text { id: myText; anchors.centerIn: parent; text: "Hello World!" }
- MouseArea { id: mr; anchors.fill: parent; onClicked: forceClose(); }
+ MouseArea { id: mouseArea; anchors.fill: parent; onClicked: forceClose(); }
}
diff --git a/examples/declarative/tutorials/samegame/samegame4/samegame.qml b/examples/declarative/tutorials/samegame/samegame4/samegame.qml
index c2e8018..090496d 100644
--- a/examples/declarative/tutorials/samegame/samegame4/samegame.qml
+++ b/examples/declarative/tutorials/samegame/samegame4/samegame.qml
@@ -1,5 +1,6 @@
import Qt 4.6
import "content"
+import "content/samegame.js" as SameGame
Rectangle {
id: screen
@@ -21,20 +22,19 @@ Rectangle {
property int score: 0
property int tileSize: 40
- Script { source: "content/samegame.js" }
-
z: 20; anchors.centerIn: parent
width: parent.width - (parent.width % getTileSize());
height: parent.height - (parent.height % getTileSize());
MouseArea {
- id: gameMR
- anchors.fill: parent; onClicked: handleClick(mouse.x,mouse.y);
+ anchors.fill: parent; onClicked: SameGame.handleClick(mouse.x,mouse.y);
}
}
}
Dialog { id: dialog; anchors.centerIn: parent; z: 21 }
+
+ //![0]
Dialog {
id: scoreName; anchors.centerIn: parent; z: 22;
Text {
@@ -54,6 +54,7 @@ Rectangle {
anchors.left: spacer.right
}
}
+ //![0]
Rectangle {
id: toolBar
@@ -62,7 +63,7 @@ Rectangle {
anchors.bottom: screen.bottom
Button {
- id: btnA; text: "New Game"; onClicked: {initBoard();}
+ id: btnA; text: "New Game"; onClicked: {SameGame.initBoard();}
anchors.left: parent.left; anchors.leftMargin: 3
anchors.verticalCenter: parent.verticalCenter
}
diff --git a/examples/declarative/webview/alerts.html b/examples/declarative/webview/alerts.html
new file mode 100644
index 0000000..82caddf
--- /dev/null
+++ b/examples/declarative/webview/alerts.html
@@ -0,0 +1,5 @@
+<html>
+<body onclick="alert('This is an alert')">
+<p>This is a web page. It fires an alert when clicked.
+</body>
+</html>
diff --git a/examples/declarative/webview/alerts.qml b/examples/declarative/webview/alerts.qml
new file mode 100644
index 0000000..ab2e860
--- /dev/null
+++ b/examples/declarative/webview/alerts.qml
@@ -0,0 +1,58 @@
+import Qt 4.6
+import org.webkit 1.0
+
+WebView {
+ id: webView
+ onAlert: popup.show(message)
+ width: 120
+ height: 150
+ url: "alerts.html"
+
+ Rectangle {
+ id: popup
+
+ color: "red"
+ border.color: "black"
+ border.width: 2
+ radius: 4
+
+ y: parent.height // off "screen"
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: label.width+5
+ height: label.height+5
+
+ opacity: 0
+
+ function show(t) {
+ label.text = t
+ popup.state = "visible"
+ timer.start()
+ }
+ states: State {
+ name: "visible"
+ PropertyChanges { target: popup; opacity: 1 }
+ PropertyChanges { target: popup; y: (webView.height-popup.height)/2 }
+ }
+
+ transitions: [
+ Transition { from: ""; PropertyAnimation { properties: "opacity,y"; duration: 65 } },
+ Transition { from: "visible"; PropertyAnimation { properties: "opacity,y"; duration: 500 } }
+ ]
+
+ Timer {
+ id: timer
+ interval: 1000
+ onTriggered: popup.state = ""
+ }
+
+ Text {
+ id: label
+ anchors.centerIn: parent
+ color: "white"
+ font.pixelSize: 20
+ width: webView.width*0.75
+ wrap: true
+ horizontalAlignment: "AlignHCenter"
+ }
+ }
+}
diff --git a/examples/examples.pro b/examples/examples.pro
index ec5cc5f9..b046167 100644
--- a/examples/examples.pro
+++ b/examples/examples.pro
@@ -57,6 +57,7 @@ embedded:SUBDIRS += qws
contains(QT_CONFIG, opengl): SUBDIRS += opengl
contains(QT_CONFIG, openvg): SUBDIRS += openvg
contains(QT_CONFIG, dbus): SUBDIRS += dbus
+contains(QT_CONFIG, declarative): SUBDIRS += declarative
win32: SUBDIRS += activeqt
contains(QT_CONFIG, xmlpatterns): SUBDIRS += xmlpatterns
contains(DEFINES, QT_NO_CURSOR): SUBDIRS -= mainwindows
diff --git a/examples/multimedia/audioinput/audioinput.pro b/examples/multimedia/audioinput/audioinput.pro
index a54d452..6a1c79d 100644
--- a/examples/multimedia/audioinput/audioinput.pro
+++ b/examples/multimedia/audioinput/audioinput.pro
@@ -12,5 +12,6 @@ INSTALLS += target sources
symbian {
TARGET.UID3 = 0xA000D7BF
+ TARGET.CAPABILITY += UserEnvironment
include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
}
diff --git a/examples/qtconcurrent/map/main.cpp b/examples/qtconcurrent/map/main.cpp
index 6068d30..6afefca 100644
--- a/examples/qtconcurrent/map/main.cpp
+++ b/examples/qtconcurrent/map/main.cpp
@@ -67,7 +67,7 @@ int main(int argc, char *argv[])
// Use QtConcurrentBlocking::mapped to apply the scale function to all the
// images in the list.
- QList<QImage> thumbnails = QtConcurrent::blockingMapped(images, scale);
+ QList<QImage> thumbnails = QtConcurrent::blockingMapped<QList<QImage> >(images, scale);
return 0;
}
diff --git a/examples/symbianpkgrules.pri b/examples/symbianpkgrules.pri
index 35edbfb..a1b6634 100644
--- a/examples/symbianpkgrules.pri
+++ b/examples/symbianpkgrules.pri
@@ -10,6 +10,7 @@ vendorinfo = \
":\"Nokia, Qt\"" \
" "
-default_deployment.pkg_prerules += vendorinfo
+examples_deployment.pkg_prerules += vendorinfo
+DEPLOYMENT += examples_deployment
isEmpty(ICON):ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg
diff --git a/imports/.gitignore b/imports/.gitignore
new file mode 100644
index 0000000..3b18f12
--- /dev/null
+++ b/imports/.gitignore
@@ -0,0 +1,5 @@
+*.dll
+*.dso
+*.so
+*.so.debug
+qmldir
diff --git a/imports/Qt/.gitignore b/imports/Qt/.gitignore
deleted file mode 100644
index bc54bd5..0000000
--- a/imports/Qt/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*.dll
-*.dso
diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf
index 2f92ea2..bd5768b 100644
--- a/mkspecs/common/symbian/symbian.conf
+++ b/mkspecs/common/symbian/symbian.conf
@@ -26,6 +26,8 @@ QMAKE_CFLAGS_RELEASE =
QMAKE_CFLAGS_DEBUG =
QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+
+VERSION_FLAGS.ARMCC = ARMCC_4_0
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
# Symbian build system applies -cwd source on the MWCC command line.
# this causes problems with include paths, -cwd include uses the same
@@ -33,7 +35,8 @@ QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
# This should really be fixed in raptor, as using CXXFLAGS means we pass
# both on the command line and rely on the compiler using the last specified
QMAKE_CXXFLAGS.CW = -cwd include
-QMAKE_CXXFLAGS.ARMCC = --visibility_inlines_hidden
+QMAKE_CXXFLAGS.ARMCC = --visibility_inlines_hidden
+QMAKE_CXXFLAGS.ARMCC_4_0 = --import_all_vtbl
QMAKE_CXXFLAGS.GCCE = -fvisibility-inlines-hidden
QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
@@ -107,6 +110,5 @@ QMAKE_TAR = tar -cf
QMAKE_GZIP = gzip -9f
QT_ARCH = symbian
-
load(qt_config)
load(symbian/platform_paths)
diff --git a/mkspecs/features/symbian/data_caging_paths.prf b/mkspecs/features/symbian/data_caging_paths.prf
index 6f40bb5..ae9bc09 100644
--- a/mkspecs/features/symbian/data_caging_paths.prf
+++ b/mkspecs/features/symbian/data_caging_paths.prf
@@ -75,6 +75,7 @@ exists($${EPOCROOT}epoc32/include/data_caging_paths.prf) {
}
isEmpty(QT_PLUGINS_BASE_DIR): QT_PLUGINS_BASE_DIR = /$$RESOURCE_FILES_DIR/qt$${QT_LIBINFIX}/plugins
+isEmpty(QT_IMPORTS_BASE_DIR): QT_IMPORTS_BASE_DIR = /$$RESOURCE_FILES_DIR/qt/imports
isEmpty(HW_ZDIR): HW_ZDIR = epoc32/data/z
isEmpty(REG_RESOURCE_DIR): REG_RESOURCE_DIR = /private/10003a3f/apps
isEmpty(REG_RESOURCE_IMPORT_DIR): REG_RESOURCE_IMPORT_DIR = /private/10003a3f/import/apps \ No newline at end of file
diff --git a/mkspecs/features/symbian/qt.prf b/mkspecs/features/symbian/qt.prf
index 0d2e6eb..9fc9814 100644
--- a/mkspecs/features/symbian/qt.prf
+++ b/mkspecs/features/symbian/qt.prf
@@ -22,19 +22,23 @@ load(qt)
INCLUDEPATH = $$PREPEND_INCLUDEPATH $$INCLUDEPATH
# Add dependency to Qt package to all other projects besides Qt libs.
-# Note: Qt libs with full capabilities has UID3 of 0x2001E61C,
+# Note: Qt libs package with full capabilities has UID3 of 0x2001E61C,
# while self-signed version typically has temporary UID3 of 0xE001E61C.
contains(CONFIG, qt):!contains(TARGET.UID3, 0x2001E61C):!contains(TARGET.UID3, 0xE001E61C):isEmpty(QT_LIBINFIX) {
- default_deployment.pkg_prerules += \
+ pkg_depends_qt += \
"; Default dependency to Qt libraries" \
"(0x2001E61C), $${QT_MAJOR_VERSION}, $${QT_MINOR_VERSION}, $${QT_PATCH_VERSION}, {\"Qt\"}"
# Projects linking to webkit need dependency to webkit
contains(QT, webkit): {
- default_deployment.pkg_prerules += \
+ pkg_depends_webkit += \
"; Dependency to Qt Webkit" \
"(0x200267C2), $${QT_MAJOR_VERSION}, $${QT_MINOR_VERSION}, $${QT_PATCH_VERSION}, {\"QtWebKit\"}"
+ } else {
+ default_deployment.pkg_prerules -= pkg_depends_webkit
}
+} else {
+ default_deployment.pkg_prerules -= pkg_depends_webkit pkg_depends_qt
}
isEmpty(TARGET.EPOCSTACKSIZE):TARGET.EPOCSTACKSIZE = 0x14000
@@ -43,5 +47,5 @@ isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x020000 0x800000
# Workaround for the fact that Gnupoc and Symbian chose different approaches to
# the letter casing of headers.
contains(CONFIG, is_using_gnupoc) {
- INCLUDEPATH += $$QMAKESPEC/../../common/symbian/header-wrappers
+ INCLUDEPATH += $${PWD}/../../common/symbian/header-wrappers
}
diff --git a/mkspecs/features/symbian/symbian_building.prf b/mkspecs/features/symbian/symbian_building.prf
index 9ccfd2f..ef03b0a 100644
--- a/mkspecs/features/symbian/symbian_building.prf
+++ b/mkspecs/features/symbian/symbian_building.prf
@@ -1,7 +1,7 @@
# we have some module specific options (defined in qt.prf) lets add them
-eval(TMPVAR = \$\$QMAKE_$${TARGET}_CXXFLAGS)
+!contains(TARGET, ".*[ -].*"):eval(TMPVAR = \$\$QMAKE_$${TARGET}_CXXFLAGS)
!isEmpty(TMPVAR):QMAKE_CXXFLAGS += $$TMPVAR
-eval(TMPVAR = \$\$QMAKE_$${TARGET}_LFLAGS)
+!contains(TARGET, ".*[ -].*"):eval(TMPVAR = \$\$QMAKE_$${TARGET}_LFLAGS)
!isEmpty(TMPVAR) {
QMAKE_LFLAGS += $$TMPVAR
} else :linux-gcce { # lets provide a simple default. Without elf2e32 complains
diff --git a/qmake/generators/symbian/symbian_makefile.h b/qmake/generators/symbian/symbian_makefile.h
index f9d3c24..061866a 100644
--- a/qmake/generators/symbian/symbian_makefile.h
+++ b/qmake/generators/symbian/symbian_makefile.h
@@ -66,13 +66,13 @@ public:
// Generate pkg files if there are any actual files to deploy
bool generatePkg = false;
- DeploymentList depList;
if (targetType == TypeExe) {
generatePkg = true;
} else {
- foreach(QString item, this->project->values("DEPLOYMENT")) {
- if (!this->project->values(item + ".sources").isEmpty()) {
+ const QStringList deployments = this->project->values("DEPLOYMENT");
+ for (int i = 0; i < deployments.count(); ++i) {
+ if (!this->project->values(deployments.at(i) + ".sources").isEmpty()) {
generatePkg = true;
break;
}
@@ -80,7 +80,7 @@ public:
}
if (generatePkg) {
- generatePkgFile(iconFile, depList, false);
+ generatePkgFile(iconFile, false);
}
// Get the application translations and convert to symbian OS lang code, i.e. decical number
diff --git a/qmake/generators/symbian/symbiancommon.cpp b/qmake/generators/symbian/symbiancommon.cpp
index 1de4b65..10889c4 100644
--- a/qmake/generators/symbian/symbiancommon.cpp
+++ b/qmake/generators/symbian/symbiancommon.cpp
@@ -142,7 +142,7 @@ void SymbianCommonGenerator::removeEpocSpecialCharacters(QString& str)
removeSpecialCharacters(str);
}
-void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, DeploymentList &depList, bool epocBuild)
+void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocBuild)
{
QMakeProject *project = generator->project;
QString pkgTarget = project->first("QMAKE_ORIG_TARGET");
@@ -180,17 +180,36 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, Deployment
tw << headerComment.arg(wrapperPkgFilename).arg(dateStr);
// Construct QStringList from pkg_prerules since we need search it before printed to file
+ // Note: Though there can't be more than one language or header line, use stringlists
+ // in case user wants comments to go with the rules.
QStringList rawPkgPreRules;
+ QStringList languageRules;
+ QStringList headerRules;
foreach(QString deploymentItem, project->values("DEPLOYMENT")) {
foreach(QString pkgrulesItem, project->values(deploymentItem + ".pkg_prerules")) {
QStringList pkgrulesValue = project->values(pkgrulesItem);
// If there is no stringlist defined for a rule, use rule name directly
// This is convenience for defining single line mmp statements
if (pkgrulesValue.isEmpty()) {
- rawPkgPreRules << pkgrulesItem;
+ if (pkgrulesItem.startsWith("&"))
+ languageRules << pkgrulesItem;
+ else if (pkgrulesItem.startsWith("#"))
+ headerRules << pkgrulesItem;
+ else
+ rawPkgPreRules << pkgrulesItem;
} else {
- foreach(QString pkgrule, pkgrulesValue) {
- rawPkgPreRules << pkgrule;
+ if (containsStartWithItem('&', pkgrulesValue)) {
+ foreach(QString pkgrule, pkgrulesValue) {
+ languageRules << pkgrule;
+ }
+ } else if (containsStartWithItem('#', pkgrulesValue)) {
+ foreach(QString pkgrule, pkgrulesValue) {
+ headerRules << pkgrule;
+ }
+ } else {
+ foreach(QString pkgrule, pkgrulesValue) {
+ rawPkgPreRules << pkgrule;
+ }
}
}
}
@@ -198,17 +217,17 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, Deployment
// Apply some defaults if specific data does not exist in PKG pre-rules
- if (!containsStartWithItem('&', rawPkgPreRules)) {
+ if (languageRules.isEmpty()) {
// language, (*** hardcoded to english atm, should be parsed from TRANSLATIONS)
- QString languageCode = "; Language\n&EN\n\n";
- t << languageCode;
- tw << languageCode;
- } else {
+ languageRules << "; Language\n&EN\n\n";
+ } else if (headerRules.isEmpty()) {
// In case user defines langs, he must take care also about SIS header
- if (!containsStartWithItem('#', rawPkgPreRules))
- fprintf(stderr, "Warning: If language is defined with DEPLOYMENT pkg_prerules, also the SIS header must be defined\n");
+ fprintf(stderr, "Warning: If language is defined with DEPLOYMENT pkg_prerules, also the SIS header must be defined\n");
}
+ t << languageRules.join("\n") << endl;
+ tw << languageRules.join("\n") << endl;
+
// name of application, UID and version
QString applicationVersion = project->first("VERSION").isEmpty() ? "1,0,0" : project->first("VERSION").replace('.', ',');
QString sisHeader = "; SIS header: name, uid, version\n#{\"%1\"},(%2),%3\n\n";
@@ -222,9 +241,11 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, Deployment
} else {
tw << installerSisHeader << endl;
}
- if (!containsStartWithItem('#', rawPkgPreRules)) {
+
+ if (headerRules.isEmpty())
t << sisHeader.arg(visualTarget).arg(uid3).arg(applicationVersion);
- }
+ else
+ t << headerRules.join("\n") << endl;
// Localized vendor name
QString vendorName;
@@ -340,6 +361,7 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, Deployment
QString remoteTestPath;
remoteTestPath = QString("!:\\private\\%1").arg(privateDirUid);
+ DeploymentList depList;
initProjectDeploySymbian(project, depList, remoteTestPath, true, epocBuild, "$(PLATFORM)", "$(TARGET)", generatedDirs, generatedFiles);
if (depList.size())
t << "; DEPLOYMENT" << endl;
diff --git a/qmake/generators/symbian/symbiancommon.h b/qmake/generators/symbian/symbiancommon.h
index e2b1173..3efe5a4 100644
--- a/qmake/generators/symbian/symbiancommon.h
+++ b/qmake/generators/symbian/symbiancommon.h
@@ -68,7 +68,7 @@ protected:
QString removePathSeparators(QString &file);
void removeSpecialCharacters(QString& str);
void removeEpocSpecialCharacters(QString& str);
- void generatePkgFile(const QString &iconFile, DeploymentList &depList, bool epocBuild);
+ void generatePkgFile(const QString &iconFile, bool epocBuild);
bool containsStartWithItem(const QChar &c, const QStringList& src);
void writeRegRssFile(QMap<QString, QStringList> &useritems);
diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp
index af85a2a..e05ced2 100644
--- a/qmake/generators/symbian/symmake.cpp
+++ b/qmake/generators/symbian/symmake.cpp
@@ -187,7 +187,6 @@ bool SymbianMakefileGenerator::writeMakefile(QTextStream &t)
// Generate pkg files if there are any actual files to deploy
bool generatePkg = false;
- DeploymentList depList;
if (targetType == TypeExe) {
generatePkg = true;
@@ -201,10 +200,10 @@ bool SymbianMakefileGenerator::writeMakefile(QTextStream &t)
}
if (generatePkg) {
- generatePkgFile(iconFile, depList, true);
+ generatePkgFile(iconFile, true);
}
- writeBldInfContent(t, generatePkg, iconFile, depList);
+ writeBldInfContent(t, generatePkg, iconFile);
// Generate empty wrapper makefile here, because wrapper makefile must exist before writeMkFile,
// but all required data is not yet available.
@@ -873,6 +872,16 @@ void SymbianMakefileGenerator::writeMmpFileCompilerOptionPart(QTextStream& t)
t << MMP_OPTION_CW " " << cw << endl;
if (!armcc.isEmpty())
t << MMP_OPTION_ARMCC " " << armcc << endl;
+
+ foreach(QString armccVersion, project->values("VERSION_FLAGS.ARMCC")) {
+ QStringList currentValues = project->values("QMAKE_CXXFLAGS." + armccVersion);
+ if (currentValues.size()) {
+ t << "#if defined(" << armccVersion << ")" << endl;
+ t << MMP_OPTION_ARMCC " " << currentValues.join(" ") << endl;
+ t << "#endif" << endl;
+ }
+ }
+
if (!gcce.isEmpty())
t << MMP_OPTION_GCCE " " << gcce << endl;
@@ -938,7 +947,7 @@ void SymbianMakefileGenerator::writeMmpFileRulesPart(QTextStream& t)
}
}
-void SymbianMakefileGenerator::writeBldInfContent(QTextStream &t, bool addDeploymentExtension, const QString &iconFile, DeploymentList &depList)
+void SymbianMakefileGenerator::writeBldInfContent(QTextStream &t, bool addDeploymentExtension, const QString &iconFile)
{
// Read user defined bld inf rules
diff --git a/qmake/generators/symbian/symmake.h b/qmake/generators/symbian/symmake.h
index d9ca390..b06ff5b 100644
--- a/qmake/generators/symbian/symmake.h
+++ b/qmake/generators/symbian/symmake.h
@@ -90,8 +90,7 @@ protected:
void writeHeader(QTextStream &t);
void writeBldInfContent(QTextStream& t,
bool addDeploymentExtension,
- const QString &iconFile,
- DeploymentList &depList);
+ const QString &iconFile);
static bool removeDuplicatedStrings(QStringList& stringList);
diff --git a/qmake/project.cpp b/qmake/project.cpp
index 01a3843..56707cf 100644
--- a/qmake/project.cpp
+++ b/qmake/project.cpp
@@ -3148,6 +3148,21 @@ QStringList &QMakeProject::values(const QString &_var, QMap<QString, QStringList
if (place[var].isEmpty())
place[var] = QStringList(epocRoot());
}
+#if defined(Q_OS_WIN32) && defined(Q_CC_MSVC)
+ else if(var.startsWith(QLatin1String("QMAKE_TARGET."))) {
+ QString ret, type = var.mid(13);
+ if(type == "arch") {
+ QString paths = qgetenv("PATH");
+ QString vcBin64 = qgetenv("VCINSTALLDIR").append("\\bin\\amd64");
+ QString vcBinX86_64 = qgetenv("VCINSTALLDIR").append("\\bin\\x86_amd64");
+ if(paths.contains(vcBin64,Qt::CaseInsensitive) || paths.contains(vcBinX86_64,Qt::CaseInsensitive))
+ ret = "x86_64";
+ else
+ ret = "x86";
+ }
+ place[var] = QStringList(ret);
+ }
+#endif
//qDebug("REPLACE [%s]->[%s]", qPrintable(var), qPrintable(place[var].join("::")));
return place[var];
}
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/StructureTransitionTable.h b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/StructureTransitionTable.h
index 35fb7e4..2ecf0d3 100644
--- a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/StructureTransitionTable.h
+++ b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/StructureTransitionTable.h
@@ -143,14 +143,14 @@ namespace JSC {
if (!specificValue) {
TransitionTable::iterator find = table()->find(key);
if (find == table()->end())
- table()->add(key, Transition(structure, 0));
+ table()->add(key, Transition(structure, (Structure*)0));
else
find->second.first = structure;
} else {
// If we're adding a transition to a specific value, then there cannot be
// an existing transition
ASSERT(!table()->contains(key));
- table()->add(key, Transition(0, structure));
+ table()->add(key, Transition((Structure*)0, structure));
}
}
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h
index 5b655e8..85c8743 100644
--- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h
+++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h
@@ -239,7 +239,7 @@ inline int atomicDecrement(int volatile* addend) { return OSAtomicDecrement32Bar
inline int atomicIncrement(int volatile* addend) { return android_atomic_inc(addend); }
inline int atomicDecrement(int volatile* addend) { return android_atomic_dec(addend); }
-#elif COMPILER(GCC) && !PLATFORM(SPARC64) && !defined(__SYMBIAN32__) // sizeof(_Atomic_word) != sizeof(int) on sparc64 gcc
+#elif COMPILER(GCC) && !CPU(SPARC64) && !defined(__SYMBIAN32__) // sizeof(_Atomic_word) != sizeof(int) on sparc64 gcc
#define WTF_USE_LOCKFREE_THREADSAFESHARED 1
inline int atomicIncrement(int volatile* addend) { return __gnu_cxx::__exchange_and_add(addend, 1) + 1; }
diff --git a/src/3rdparty/phonon/CMakeLists.txt b/src/3rdparty/phonon/CMakeLists.txt
index a25ec5d..ef7d6f5 100644
--- a/src/3rdparty/phonon/CMakeLists.txt
+++ b/src/3rdparty/phonon/CMakeLists.txt
@@ -70,6 +70,10 @@ if (CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-DQT_NO_DEBUG)
endif (MINGW)
+ if (QT_USE_FRAMEWORKS)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -F${QT_LIBRARY_DIR}")
+ endif (QT_USE_FRAMEWORKS)
+
check_cxx_compiler_flag(-fPIE HAVE_FPIE_SUPPORT)
if(KDE4_ENABLE_FPIE)
if(HAVE_FPIE_SUPPORT)
@@ -149,7 +153,7 @@ set(CMAKE_COLOR_MAKEFILE ON)
set(PHONON_LIB_MAJOR_VERSION "4")
set(PHONON_LIB_MINOR_VERSION "3")
-set(PHONON_LIB_PATCH_VERSION "50")
+set(PHONON_LIB_PATCH_VERSION "80")
set(PHONON_LIB_VERSION "${PHONON_LIB_MAJOR_VERSION}.4.0")
set(PHONON_LIB_SOVERSION ${PHONON_LIB_MAJOR_VERSION})
diff --git a/src/3rdparty/phonon/ds9/iodevicereader.cpp b/src/3rdparty/phonon/ds9/iodevicereader.cpp
index d706c82..ba4ae5c 100644
--- a/src/3rdparty/phonon/ds9/iodevicereader.cpp
+++ b/src/3rdparty/phonon/ds9/iodevicereader.cpp
@@ -107,6 +107,9 @@ namespace Phonon
HRESULT read(LONGLONG pos, LONG length, BYTE *buffer, LONG *actual)
{
Q_ASSERT(!m_mutex.tryLock());
+ if (m_mediaGraph->isStopping()) {
+ return VFW_E_WRONG_STATE;
+ }
if(m_size != 1 && pos + length > m_size) {
//it tries to read outside of the boundaries
diff --git a/src/3rdparty/phonon/gstreamer/CMakeLists.txt b/src/3rdparty/phonon/gstreamer/CMakeLists.txt
index 08f892a..2249ac3 100644
--- a/src/3rdparty/phonon/gstreamer/CMakeLists.txt
+++ b/src/3rdparty/phonon/gstreamer/CMakeLists.txt
@@ -19,7 +19,7 @@ include(ConfigureChecks.cmake)
if (BUILD_PHONON_GSTREAMER)
include_directories(
${CMAKE_CURRENT_BINARY_DIR}
- ${GSTREAMER_INCLUDE_DIR}
+ ${GSTREAMER_INCLUDE_DIR}
${GLIB2_INCLUDE_DIR}
${LIBXML2_INCLUDE_DIR}
${X11_X11_INCLUDE_PATH})
@@ -34,7 +34,6 @@ if (BUILD_PHONON_GSTREAMER)
set(phonon_gstreamer_SRCS
audiooutput.cpp
- artssink.cpp
backend.cpp
devicemanager.cpp
effectmanager.cpp
@@ -50,14 +49,20 @@ if (BUILD_PHONON_GSTREAMER)
message.cpp
audioeffect.cpp
abstractrenderer.cpp
- x11renderer.cpp
widgetrenderer.cpp
glrenderer.cpp
volumefadereffect.cpp
+ audiodataoutput.cpp
)
- find_package(Alsa)
- macro_ensure_version("0.10.22" ${GSTREAMER_VERSION} GSTREAMER_HAS_NONBLOCKING_ALSASINK)
+ if(NOT WIN32)
+ set(phonon_gstreamer_SRCS
+ ${phonon_gstreamer_SRCS}
+ artssink.cpp
+ x11renderer.cpp)
+ macro_optional_find_package(Alsa)
+ macro_ensure_version("0.10.22" ${GSTREAMER_VERSION} GSTREAMER_HAS_NONBLOCKING_ALSASINK)
+ endif(NOT WIN32)
if(ALSA_FOUND AND NOT GSTREAMER_HAS_NONBLOCKING_ALSASINK)
add_definitions(-DUSE_ALSASINK2)
include_directories(${ALSA_INCLUDES})
@@ -78,6 +83,9 @@ if (BUILD_PHONON_GSTREAMER)
if(ALSA_FOUND)
target_link_libraries(phonon_gstreamer ${ASOUND_LIBRARY})
endif(ALSA_FOUND)
+ if(USE_INSTALL_PLUGIN)
+ target_link_libraries(phonon_gstreamer ${GSTREAMER_PLUGIN_PBUTILS_LIBRARIES})
+ endif(USE_INSTALL_PLUGIN)
install(TARGETS phonon_gstreamer DESTINATION ${PLUGIN_INSTALL_DIR}/plugins/phonon_backend)
install(FILES gstreamer.desktop DESTINATION ${SERVICES_INSTALL_DIR}/phononbackends)
diff --git a/src/3rdparty/phonon/gstreamer/ConfigureChecks.cmake b/src/3rdparty/phonon/gstreamer/ConfigureChecks.cmake
index f2922e1..eaf5b99 100644
--- a/src/3rdparty/phonon/gstreamer/ConfigureChecks.cmake
+++ b/src/3rdparty/phonon/gstreamer/ConfigureChecks.cmake
@@ -17,6 +17,7 @@ macro_log_feature(GSTREAMER_FOUND "GStreamer" "gstreamer 0.10 is required for th
macro_optional_find_package(GStreamerPlugins)
macro_log_feature(GSTREAMER_PLUGIN_VIDEO_LIBRARIES "GStreamer video plugin" "The gstreamer video plugin (part of gstreamer-plugins-base 0.10) is required for the multimedia gstreamer backend" "http://gstreamer.freedesktop.org/modules/" FALSE "0.10")
+macro_log_feature(GSTREAMER_PLUGIN_AUDIO_LIBRARIES "GStreamer audio plugin" "The gstreamer audio plugin (part of gstreamer-plugins-base 0.10) is required for the multimedia gstreamer backend" "http://gstreamer.freedesktop.org/modules/" FALSE "0.10")
macro_optional_find_package(GLIB2)
macro_log_feature(GLIB2_FOUND "GLib2" "GLib 2 is required to compile the gstreamer backend for Phonon" "http://www.gtk.org/download/" FALSE)
@@ -30,8 +31,8 @@ macro_log_feature(LIBXML2_FOUND "LibXml2" "LibXml2 is required to compile the gs
macro_optional_find_package(OpenGL)
macro_log_feature(OPENGL_FOUND "OpenGL" "OpenGL support is required to compile the gstreamer backend for Phonon" "" FALSE)
-if (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND)
+if (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GSTREAMER_PLUGIN_AUDIO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND)
set(BUILD_PHONON_GSTREAMER TRUE)
-else (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND)
+else (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GSTREAMER_PLUGIN_AUDIO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND)
set(BUILD_PHONON_GSTREAMER FALSE)
-endif (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND)
+endif (GSTREAMER_FOUND AND GSTREAMER_PLUGIN_VIDEO_LIBRARIES AND GSTREAMER_PLUGIN_AUDIO_LIBRARIES AND GLIB2_FOUND AND GOBJECT_FOUND AND LIBXML2_FOUND AND OPENGL_FOUND)
diff --git a/src/3rdparty/phonon/gstreamer/audiodataoutput.cpp b/src/3rdparty/phonon/gstreamer/audiodataoutput.cpp
new file mode 100644
index 0000000..802cb18
--- /dev/null
+++ b/src/3rdparty/phonon/gstreamer/audiodataoutput.cpp
@@ -0,0 +1,149 @@
+/* This file is part of the KDE project
+ Copyright (C) 2006 Matthias Kretz <kretz@kde.org>
+ Copyright (C) 2009 Martin Sandsmark <sandsmark@samfundet.no>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), Nokia Corporation
+ (or its successors, if any) and the KDE Free Qt Foundation, which shall
+ act as a proxy defined in Section 6 of version 3 of the license.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "audiodataoutput.h"
+#include "gsthelper.h"
+#include "medianode.h"
+#include "mediaobject.h"
+#include <QtCore/QVector>
+#include <QtCore/QMap>
+#include <phonon/audiooutput.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+namespace Phonon
+{
+namespace Gstreamer
+{
+AudioDataOutput::AudioDataOutput(Backend *backend, QObject *parent)
+ : QObject(parent),
+ MediaNode(backend, AudioSink | AudioSource)
+{
+ static int count = 0;
+ m_name = "AudioDataOutput" + QString::number(count++);
+
+ m_queue = gst_element_factory_make ("identity", NULL);
+ gst_object_ref(m_queue);
+ m_isValid = true;
+}
+
+AudioDataOutput::~AudioDataOutput()
+{
+ gst_element_set_state(m_queue, GST_STATE_NULL);
+ gst_object_unref(m_queue);
+}
+
+int AudioDataOutput::dataSize() const
+{
+ return m_dataSize;
+}
+
+int AudioDataOutput::sampleRate() const
+{
+ return 44100;
+}
+
+void AudioDataOutput::setDataSize(int size)
+{
+ m_dataSize = size;
+}
+
+typedef QMap<Phonon::AudioDataOutput::Channel, QVector<float> > FloatMap;
+typedef QMap<Phonon::AudioDataOutput::Channel, QVector<qint16> > IntMap;
+
+inline void AudioDataOutput::convertAndEmit(const QVector<qint16> &leftBuffer, const QVector<qint16> &rightBuffer)
+{
+ //TODO: Floats
+ IntMap map;
+ map.insert(Phonon::AudioDataOutput::LeftChannel, leftBuffer);
+ map.insert(Phonon::AudioDataOutput::RightChannel, rightBuffer);
+ emit dataReady(map);
+}
+
+void AudioDataOutput::processBuffer(GstPad*, GstBuffer* buffer, gpointer gThat)
+{
+ // TODO emit endOfMedia
+ AudioDataOutput *that = reinterpret_cast<AudioDataOutput*>(gThat);
+
+ // determine the number of channels
+ GstStructure* structure = gst_caps_get_structure (GST_BUFFER_CAPS(buffer), 0);
+ gst_structure_get_int (structure, "channels", &that->m_channels);
+
+ if (that->m_channels > 2 || that->m_channels < 0) {
+ qWarning() << Q_FUNC_INFO << ": Number of channels not supported: " << that->m_channels;
+ return;
+ }
+
+ gint16 *data = reinterpret_cast<gint16*>(GST_BUFFER_DATA(buffer));
+ guint size = GST_BUFFER_SIZE(buffer) / sizeof(gint16);
+
+ that->m_pendingData.reserve(that->m_pendingData.size() + size);
+
+ for (uint i=0; i<size; i++) {
+ // 8 bit? interleaved? yay for lacking documentation!
+ that->m_pendingData.append(data[i]);
+ }
+
+ while (that->m_pendingData.size() > that->m_dataSize * that->m_channels) {
+ if (that->m_channels == 1) {
+ QVector<qint16> intBuffer(that->m_dataSize);
+ memcpy(intBuffer.data(), that->m_pendingData.constData(), that->m_dataSize * sizeof(qint16));
+
+ that->convertAndEmit(intBuffer, intBuffer);
+ int newSize = that->m_pendingData.size() - that->m_dataSize;
+ memmove(that->m_pendingData.data(), that->m_pendingData.constData() + that->m_dataSize, newSize * sizeof(qint16));
+ that->m_pendingData.resize(newSize);
+ } else {
+ QVector<qint16> left(that->m_dataSize), right(that->m_dataSize);
+ for (int i=0; i<that->m_dataSize; i++) {
+ left[i] = that->m_pendingData[i*2];
+ right[i] = that->m_pendingData[i*2+1];
+ }
+ that->m_pendingData.resize(that->m_pendingData.size() - that->m_dataSize*2);
+ that->convertAndEmit(left, right);
+ }
+ }
+}
+
+void AudioDataOutput::mediaNodeEvent(const MediaNodeEvent *event)
+{
+ if (event->type() == MediaNodeEvent::MediaObjectConnected && root()) {
+ g_object_set(G_OBJECT(audioElement()), "sync", true, (const char*)NULL);
+ GstPad *audiopad = gst_element_get_pad (audioElement(), "src");
+ gst_pad_add_buffer_probe (audiopad, G_CALLBACK(processBuffer), this);
+ gst_object_unref (audiopad);
+ return;
+ }
+
+ MediaNode::mediaNodeEvent(event);
+}
+
+}} //namespace Phonon::Gstreamer
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#include "moc_audiodataoutput.cpp"
+// vim: sw=4 ts=4
+
diff --git a/src/3rdparty/phonon/gstreamer/audiodataoutput.h b/src/3rdparty/phonon/gstreamer/audiodataoutput.h
new file mode 100644
index 0000000..cd5ef49
--- /dev/null
+++ b/src/3rdparty/phonon/gstreamer/audiodataoutput.h
@@ -0,0 +1,90 @@
+/* This file is part of the KDE project
+ Copyright (C) 2006 Matthias Kretz <kretz@kde.org>
+ Copyright (C) 2009 Martin Sandsmark <sandsmark@samfundet.no>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), Nokia Corporation
+ (or its successors, if any) and the KDE Free Qt Foundation, which shall
+ act as a proxy defined in Section 6 of version 3 of the license.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef Phonon_GSTREAMER_AUDIODATAOUTPUT_H
+#define Phonon_GSTREAMER_AUDIODATAOUTPUT_H
+
+#include "abstractaudiooutput.h"
+#include "backend.h"
+#include "medianode.h"
+#include <phonon/audiodataoutput.h>
+#include <phonon/audiodataoutputinterface.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+namespace Phonon
+{
+namespace Gstreamer
+{
+ /**
+ * \author Martin Sandsmark <sandsmark@samfundet.no>
+ */
+ class AudioDataOutput : public QObject,
+ public AudioDataOutputInterface,
+ public MediaNode
+ {
+ Q_OBJECT
+ Q_INTERFACES(Phonon::AudioDataOutputInterface Phonon::Gstreamer::MediaNode)
+
+ public:
+ AudioDataOutput(Backend *, QObject *);
+ ~AudioDataOutput();
+
+ public Q_SLOTS:
+ int dataSize() const;
+ int sampleRate() const;
+ void setDataSize(int size);
+
+ public:
+ /// callback function for handling new audio data
+ static void processBuffer(GstPad*, GstBuffer*, gpointer);
+
+ Phonon::AudioDataOutput* frontendObject() const { return m_frontend; }
+ void setFrontendObject(Phonon::AudioDataOutput *frontend) { m_frontend = frontend; }
+
+ GstElement *audioElement() { return m_queue; }
+
+ void mediaNodeEvent(const MediaNodeEvent *event);
+
+
+ signals:
+ void dataReady(const QMap<Phonon::AudioDataOutput::Channel, QVector<qint16> > &data);
+ void dataReady(const QMap<Phonon::AudioDataOutput::Channel, QVector<float> > &data);
+ void endOfMedia(int remainingSamples);
+
+ private:
+ void convertAndEmit(const QVector<qint16>&, const QVector<qint16>&);
+
+ GstElement *m_queue;
+ int m_dataSize;
+ QVector<qint16> m_pendingData;
+ Phonon::AudioDataOutput *m_frontend;
+ int m_channels;
+ };
+}} //namespace Phonon::Gstreamer
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+// vim: sw=4 ts=4 tw=80
+#endif // Phonon_FAKE_AUDIODATAOUTPUT_H
diff --git a/src/3rdparty/phonon/gstreamer/audiooutput.cpp b/src/3rdparty/phonon/gstreamer/audiooutput.cpp
index 641ff6b..f3137b2 100644
--- a/src/3rdparty/phonon/gstreamer/audiooutput.cpp
+++ b/src/3rdparty/phonon/gstreamer/audiooutput.cpp
@@ -125,6 +125,7 @@ void AudioOutput::setVolume(qreal newVolume)
bool AudioOutput::setOutputDevice(int newDevice)
{
m_backend->logMessage(Q_FUNC_INFO + QString::number(newDevice), Backend::Info, this);
+
if (newDevice == m_device)
return true;
@@ -135,20 +136,11 @@ bool AudioOutput::setOutputDevice(int newDevice)
}
bool success = false;
- const QList<AudioDevice> deviceList = m_backend->deviceManager()->audioOutputDevices();
- int deviceIdx = -1;
- for (int i=0; i<deviceList.size(); i++) {
- if (deviceList.at(i).id == newDevice) {
- deviceIdx = i;
- break;
- }
- }
-
- if (m_audioSink && deviceIdx >= 0) {
+ if (m_audioSink && newDevice >= 0) {
// Save previous state
GstState oldState = GST_STATE(m_audioSink);
const QByteArray oldDeviceValue = GstHelper::property(m_audioSink, "device");
- const QByteArray deviceId = deviceList.at(deviceIdx).gstId;
+ const QByteArray deviceId = m_backend->deviceManager()->gstId(newDevice);
m_device = newDevice;
// We test if the device can be opened by checking if it can go from NULL to READY state
@@ -170,7 +162,7 @@ bool AudioOutput::setOutputDevice(int newDevice)
deviceId, Backend::Info, this);
}
- // Note the stopped state should not really be neccessary, but seems to be required to
+ // Note the stopped state should not really be necessary, but seems to be required to
// properly reset after changing the audio state
if (root()) {
QMetaObject::invokeMethod(root(), "setState", Qt::QueuedConnection, Q_ARG(State, StoppedState));
diff --git a/src/3rdparty/phonon/gstreamer/backend.cpp b/src/3rdparty/phonon/gstreamer/backend.cpp
index dab6f35..729a1d3 100644
--- a/src/3rdparty/phonon/gstreamer/backend.cpp
+++ b/src/3rdparty/phonon/gstreamer/backend.cpp
@@ -18,6 +18,7 @@
#include "common.h"
#include "backend.h"
#include "audiooutput.h"
+#include "audiodataoutput.h"
#include "audioeffect.h"
#include "mediaobject.h"
#include "videowidget.h"
@@ -26,6 +27,7 @@
#include "message.h"
#include "volumefadereffect.h"
#include <gst/interfaces/propertyprobe.h>
+#include <phonon/pulsesupport.h>
#include <QtCore/QSet>
#include <QtCore/QVariant>
@@ -49,13 +51,17 @@ Backend::Backend(QObject *parent, const QVariantList &)
, m_debugLevel(Warning)
, m_isValid(false)
{
+ // Initialise PulseAudio support
+ PulseSupport *pulse = PulseSupport::getInstance();
+ pulse->enable();
+ connect(pulse, SIGNAL(objectDescriptionChanged(ObjectDescriptionType)), SIGNAL(objectDescriptionChanged(ObjectDescriptionType)));
+
// In order to support reloading, we only set the app name once...
static bool first = true;
if (first) {
first = false;
g_set_application_name(qApp->applicationName().toUtf8());
}
-
GError *err = 0;
bool wasInit = gst_init_check(0, 0, &err); //init gstreamer: must be called before any gst-related functions
if (err)
@@ -92,6 +98,9 @@ Backend::Backend(QObject *parent, const QVariantList &)
Backend::~Backend()
{
+ delete m_effectManager;
+ delete m_deviceManager;
+ PulseSupport::shutdown();
}
gboolean Backend::busCall(GstBus *bus, GstMessage *msg, gpointer data)
@@ -119,18 +128,15 @@ QObject *Backend::createObject(BackendInterface::Class c, QObject *parent, const
case MediaObjectClass:
return new MediaObject(this, parent);
- case AudioOutputClass: {
- AudioOutput *ao = new AudioOutput(this, parent);
- m_audioOutputs.append(ao);
- return ao;
- }
+ case AudioOutputClass:
+ return new AudioOutput(this, parent);
+
#ifndef QT_NO_PHONON_EFFECT
case EffectClass:
return new AudioEffect(this, args[0].toInt(), parent);
#endif //QT_NO_PHONON_EFFECT
case AudioDataOutputClass:
- logMessage("createObject() : AudioDataOutput not implemented");
- break;
+ return new AudioDataOutput(this, parent);
#ifndef QT_NO_PHONON_VIDEO
case VideoDataOutputClass:
@@ -214,14 +220,14 @@ QStringList Backend::availableMimeTypes() const
GstPluginFeature *feature = GST_PLUGIN_FEATURE(iter->data);
QString klass = gst_element_factory_get_klass(GST_ELEMENT_FACTORY(feature));
- if (klass == QLatin1String("Codec/Decoder") ||
- klass == QLatin1String("Codec/Decoder/Audio") ||
- klass == QLatin1String("Codec/Decoder/Video") ||
- klass == QLatin1String("Codec/Demuxer") ||
- klass == QLatin1String("Codec/Demuxer/Audio") ||
- klass == QLatin1String("Codec/Demuxer/Video") ||
- klass == QLatin1String("Codec/Parser") ||
- klass == QLatin1String("Codec/Parser/Audio") ||
+ if (klass == QLatin1String("Codec/Decoder") ||
+ klass == QLatin1String("Codec/Decoder/Audio") ||
+ klass == QLatin1String("Codec/Decoder/Video") ||
+ klass == QLatin1String("Codec/Demuxer") ||
+ klass == QLatin1String("Codec/Demuxer/Audio") ||
+ klass == QLatin1String("Codec/Demuxer/Video") ||
+ klass == QLatin1String("Codec/Parser") ||
+ klass == QLatin1String("Codec/Parser/Audio") ||
klass == QLatin1String("Codec/Parser/Video")) {
const GList *static_templates;
@@ -234,16 +240,28 @@ QStringList Backend::availableMimeTypes() const
GstCaps *caps = gst_static_pad_template_get_caps (padTemplate);
if (caps) {
- const GstStructure* capsStruct = gst_caps_get_structure (caps, 0);
- QString mime = QString::fromUtf8(gst_structure_get_name (capsStruct));
- if (!availableMimeTypes.contains(mime))
- availableMimeTypes.append(mime);
+ for (unsigned int struct_idx = 0; struct_idx < gst_caps_get_size (caps); struct_idx++) {
+
+ const GstStructure* capsStruct = gst_caps_get_structure (caps, struct_idx);
+ QString mime = QString::fromUtf8(gst_structure_get_name (capsStruct));
+ if (!availableMimeTypes.contains(mime))
+ availableMimeTypes.append(mime);
+ }
}
}
}
}
}
g_list_free(factoryList);
+ if (availableMimeTypes.contains("audio/x-vorbis")
+ && availableMimeTypes.contains("application/x-ogm-audio")) {
+ if (!availableMimeTypes.contains("audio/x-vorbis+ogg"))
+ availableMimeTypes.append("audio/x-vorbis+ogg");
+ if (!availableMimeTypes.contains("application/ogg")) /* *.ogg */
+ availableMimeTypes.append("application/ogg");
+ if (!availableMimeTypes.contains("audio/ogg")) /* *.oga */
+ availableMimeTypes.append("audio/ogg");
+ }
availableMimeTypes.sort();
return availableMimeTypes;
}
@@ -293,14 +311,11 @@ QHash<QByteArray, QVariant> Backend::objectDescriptionProperties(ObjectDescripti
switch (type) {
case Phonon::AudioOutputDeviceType: {
- QList<AudioDevice> audioDevices = deviceManager()->audioOutputDevices();
- foreach(const AudioDevice &device, audioDevices) {
- if (device.id == index) {
- ret.insert("name", device.gstId);
- ret.insert("description", device.description);
- ret.insert("icon", QLatin1String("audio-card"));
- break;
- }
+ AudioDevice* ad;
+ if ((ad = deviceManager()->audioDevice(index))) {
+ ret.insert("name", ad->gstId);
+ ret.insert("description", ad->description);
+ ret.insert("icon", ad->icon);
}
}
break;
@@ -429,7 +444,7 @@ EffectManager* Backend::effectManager() const
/**
* Returns a debuglevel that is determined by the
- * PHONON_GSTREAMER_DEBUG environment variable.
+ * PHONON_GST_DEBUG environment variable.
*
* Warning - important warnings
* Info - general info
diff --git a/src/3rdparty/phonon/gstreamer/backend.h b/src/3rdparty/phonon/gstreamer/backend.h
index 2aab6fa..d157f11 100644
--- a/src/3rdparty/phonon/gstreamer/backend.h
+++ b/src/3rdparty/phonon/gstreamer/backend.h
@@ -86,7 +86,6 @@ private Q_SLOTS:
private:
static gboolean busCall(GstBus *bus, GstMessage *msg, gpointer data);
- QList<QPointer<AudioOutput> > m_audioOutputs;
DeviceManager *m_deviceManager;
EffectManager *m_effectManager;
diff --git a/src/3rdparty/phonon/gstreamer/devicemanager.cpp b/src/3rdparty/phonon/gstreamer/devicemanager.cpp
index 60e860f..c3826eb 100644
--- a/src/3rdparty/phonon/gstreamer/devicemanager.cpp
+++ b/src/3rdparty/phonon/gstreamer/devicemanager.cpp
@@ -24,6 +24,7 @@
#include "widgetrenderer.h"
#include "x11renderer.h"
#include "artssink.h"
+#include "pulsesupport.h"
#ifdef USE_ALSASINK2
#include "alsasink2.h"
@@ -44,9 +45,12 @@ namespace Gstreamer
AudioDevice::AudioDevice(DeviceManager *manager, const QByteArray &gstId)
: gstId(gstId)
{
- //get an id
- static int counter = 0;
- id = counter++;
+ // This should never be called when PulseAudio is active.
+ Q_ASSERT(!PulseSupport::getInstance()->isActive());
+
+ id = manager->allocateDeviceId();
+ icon = "audio-card";
+
//get name from device
if (gstId == "default") {
description = "Default audio device";
@@ -71,22 +75,25 @@ AudioDevice::AudioDevice(DeviceManager *manager, const QByteArray &gstId)
DeviceManager::DeviceManager(Backend *backend)
: QObject(backend)
, m_backend(backend)
+ , m_audioDeviceCounter(0)
{
- m_audioSink = qgetenv("PHONON_GST_AUDIOSINK");
- m_videoSinkWidget = qgetenv("PHONON_GST_VIDEOMODE");
-
-#ifndef QT_NO_SETTINGS
QSettings settings(QLatin1String("Trolltech"));
settings.beginGroup(QLatin1String("Qt"));
+ PulseSupport *pulse = PulseSupport::getInstance();
+ m_audioSink = qgetenv("PHONON_GST_AUDIOSINK");
if (m_audioSink.isEmpty()) {
m_audioSink = settings.value(QLatin1String("audiosink"), "Auto").toByteArray().toLower();
+ if (m_audioSink == "auto" && pulse->isActive())
+ m_audioSink = "pulsesink";
}
+ if ("pulsesink" != m_audioSink)
+ pulse->enable(false);
+ m_videoSinkWidget = qgetenv("PHONON_GST_VIDEOMODE");
if (m_videoSinkWidget.isEmpty()) {
m_videoSinkWidget = settings.value(QLatin1String("videomode"), "Auto").toByteArray().toLower();
}
-#endif //QT_NO_SETTINGS
if (m_backend->isValid())
updateDeviceList();
@@ -271,9 +278,17 @@ AbstractRenderer *DeviceManager::createVideoRenderer(VideoWidget *parent)
}
#endif //QT_NO_PHONON_VIDEO
-/*
- * Returns a positive device id or -1 if device
- * does not exist
+/**
+ * Allocate a device id for a new audio device
+ */
+int DeviceManager::allocateDeviceId()
+{
+ return m_audioDeviceCounter++;
+}
+
+
+/**
+ * Returns a positive device id or -1 if device does not exist
*
* The gstId is typically in the format hw:1,0
*/
@@ -288,16 +303,30 @@ int DeviceManager::deviceId(const QByteArray &gstId) const
}
/**
- * Get a human-readable description from a device id
+ * Returns a gstId or "default" if device does not exist
+ *
+ * The gstId is typically in the format hw:1,0
*/
-QByteArray DeviceManager::deviceDescription(int id) const
+const QByteArray DeviceManager::gstId(int deviceId)
+{
+ if (!PulseSupport::getInstance()->isActive()) {
+ AudioDevice *ad = audioDevice(deviceId);
+ if (ad)
+ return QByteArray(ad->gstId);
+ }
+ return QByteArray("default");
+}
+
+/**
+* Get the AudioDevice for a given device id
+*/
+AudioDevice* DeviceManager::audioDevice(int id)
{
for (int i = 0 ; i < m_audioDeviceList.size() ; ++i) {
- if (m_audioDeviceList[i].id == id) {
- return m_audioDeviceList[i].description;
- }
+ if (m_audioDeviceList[i].id == id)
+ return &m_audioDeviceList[i];
}
- return QByteArray();
+ return NULL;
}
/**
@@ -311,8 +340,11 @@ void DeviceManager::updateDeviceList()
QList<QByteArray> list;
if (audioSink) {
- list = GstHelper::extractProperties(audioSink, "device");
- list.prepend("default");
+ if (!PulseSupport::getInstance()->isActive()) {
+ // If we're using pulse, the PulseSupport class takes care of things for us.
+ list = GstHelper::extractProperties(audioSink, "device");
+ list.prepend("default");
+ }
for (int i = 0 ; i < list.size() ; ++i) {
QByteArray gstId = list.at(i);
diff --git a/src/3rdparty/phonon/gstreamer/devicemanager.h b/src/3rdparty/phonon/gstreamer/devicemanager.h
index a5e8289..9c6aa8d 100644
--- a/src/3rdparty/phonon/gstreamer/devicemanager.h
+++ b/src/3rdparty/phonon/gstreamer/devicemanager.h
@@ -42,6 +42,7 @@ public :
int id;
QByteArray gstId;
QByteArray description;
+ QString icon;
};
class DeviceManager : public QObject {
@@ -51,8 +52,10 @@ public:
virtual ~DeviceManager();
const QList<AudioDevice> audioOutputDevices() const;
GstPad *requestPad(int device) const;
+ int allocateDeviceId();
int deviceId(const QByteArray &gstId) const;
- QByteArray deviceDescription(int id) const;
+ const QByteArray gstId(int id);
+ AudioDevice* audioDevice(int id);
GstElement *createGNOMEAudioSink(Category category);
GstElement *createAudioSink(Category category = NoCategory);
AbstractRenderer *createVideoRenderer(VideoWidget *parent);
@@ -68,6 +71,7 @@ private:
bool canOpenDevice(GstElement *element) const;
Backend *m_backend;
QList <AudioDevice> m_audioDeviceList;
+ int m_audioDeviceCounter;
QTimer m_devicePollTimer;
QByteArray m_audioSink;
QByteArray m_videoSinkWidget;
diff --git a/src/3rdparty/phonon/gstreamer/effectmanager.cpp b/src/3rdparty/phonon/gstreamer/effectmanager.cpp
index 563e6fc..6c88148 100644
--- a/src/3rdparty/phonon/gstreamer/effectmanager.cpp
+++ b/src/3rdparty/phonon/gstreamer/effectmanager.cpp
@@ -54,7 +54,7 @@ EffectManager::EffectManager(Backend *backend)
// "volume" not needed
// "equalizer-nbands" not really useful at the moment
- // These plugins simply dont work or have major stability issues:
+ // These plugins simply don't work or have major stability issues:
// "iir" Does not seem to do much at the moment
// "audioinvert" Only works for some streams, should be invesigated
// "lpwsinc" Crashes for large values of filter kernel
diff --git a/src/3rdparty/phonon/gstreamer/glrenderer.cpp b/src/3rdparty/phonon/gstreamer/glrenderer.cpp
index 0203028..106884f 100644
--- a/src/3rdparty/phonon/gstreamer/glrenderer.cpp
+++ b/src/3rdparty/phonon/gstreamer/glrenderer.cpp
@@ -266,7 +266,7 @@ GLRenderWidgetImplementation::GLRenderWidgetImplementation(VideoWidget*videoWidg
palette.setColor(QPalette::Background, Qt::black);
setPalette(palette);
setAutoFillBackground(true);
- // Videowidget allways have this property to allow hiding the mouse cursor
+ // Videowidget always have this property to allow hiding the mouse cursor
setMouseTracking(true);
}
diff --git a/src/3rdparty/phonon/gstreamer/gsthelper.cpp b/src/3rdparty/phonon/gstreamer/gsthelper.cpp
index 34d99fa..69bb75c 100644
--- a/src/3rdparty/phonon/gstreamer/gsthelper.cpp
+++ b/src/3rdparty/phonon/gstreamer/gsthelper.cpp
@@ -121,7 +121,7 @@ GstElement* GstHelper::createPluggablePlaybin()
{
GstElement *playbin = 0;
//init playbin and add to our pipeline
- playbin = gst_element_factory_make("playbin", NULL);
+ playbin = gst_element_factory_make("playbin2", NULL);
//Create an identity element to redirect sound
GstElement *audioSinkBin = gst_bin_new (NULL);
diff --git a/src/3rdparty/phonon/gstreamer/gstreamer.desktop b/src/3rdparty/phonon/gstreamer/gstreamer.desktop
index b62472b..0861762 100644
--- a/src/3rdparty/phonon/gstreamer/gstreamer.desktop
+++ b/src/3rdparty/phonon/gstreamer/gstreamer.desktop
@@ -10,28 +10,81 @@ Icon=phonon-gstreamer
InitialPreference=10
Name=GStreamer
+Name[bg]=GStreamer
+Name[ca]=GStreamer
+Name[ca@valencia]=GStreamer
+Name[cs]=GStreamer
+Name[da]=GStreamer
+Name[de]=GStreamer
+Name[el]=GStreamer
+Name[en_GB]=GStreamer
+Name[es]=GStreamer
+Name[et]=GStreamer
+Name[eu]=GStreamer
+Name[fi]=GStreamer
+Name[fr]=GStreamer
+Name[ga]=GStreamer
+Name[gl]=GStreamer
+Name[hsb]=GStreamer
+Name[hu]=GStreamer
+Name[id]=GStreamer
+Name[is]=GStreamer
+Name[it]=GStreamer
+Name[ja]=GStreamer
+Name[ko]=GStreamer
+Name[ku]=GStreamer
+Name[lt]=GStreamer
+Name[lv]=GStreamer
+Name[nb]=GStreamer
+Name[nds]=GStreamer
+Name[nl]=GStreamer
+Name[nn]=GStreamer
Name[pa]=ਜੀਸਟੀਰਮਰ
+Name[pl]=GStreamer
+Name[pt]=GStreamer
+Name[pt_BR]=GStreamer
+Name[ru]=GStreamer
+Name[se]=GStreamer
+Name[sk]=GStreamer
+Name[sl]=GStreamer
Name[sr]=ГÑтример
+Name[sr@ijekavian]=ГÑтример
+Name[sr@ijekavianlatin]=GStreamer
+Name[sr@latin]=GStreamer
Name[sv]=Gstreamer
+Name[tr]=GStreamer
+Name[uk]=GStreamer
Name[x-test]=xxGStreamerxx
+Name[zh_CN]=GStreamer
+Name[zh_TW]=GStreamer
Comment=Phonon GStreamer backend
Comment[bg]=Phonon GStreamer
Comment[ca]=Dorsal GStreamer del Phonon
+Comment[ca@valencia]=Dorsal GStreamer del Phonon
+Comment[cs]=Phonon GStreamer backend
Comment[da]=GStreamer-backend til Phonon
Comment[de]=Phonon-Treiber für GStreamer
Comment[el]=ΣÏστημα υποστήÏιξης GStreamer του Phonon
+Comment[en_GB]=Phonon GStreamer backend
Comment[es]=Motor GStreamer para Phonon
Comment[et]=Phononi GStreameri taustaprogramm
+Comment[eu]=Phonon GStreamer backend
+Comment[fi]=Phonon GStreamer-taustaohjelma
Comment[fr]=Système de gestion GStreamer pour Phonon
Comment[ga]=Inneall GStreamer le haghaidh Phonon
Comment[gl]=Infraestrutura de GStreamer para Phonon
+Comment[hsb]=Phonon GStreamer backend
+Comment[hu]=Phonon GStreamer modul
+Comment[id]=Phonon GStreamer backend
Comment[is]=Phonon GStreamer bakendi
Comment[it]=Motore Gstreamer di Phonon
Comment[ja]=Phonon GStreamer ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰
Comment[ko]=Phonon GStreamer 백엔드
Comment[ku]=Binesaza Phonon GStreamer
+Comment[lt]=Phonon GStreamer galinÄ— sÄ…saja
Comment[lv]=Phonon GStreamer aizmugure
+Comment[nb]=Phonon-motor for GStreamer
Comment[nds]=Phonon-Hülpprogramm GStreamer
Comment[nl]=GStreamer-backend (Phonon)
Comment[nn]=Phonon-motor for GStreamer
@@ -39,9 +92,13 @@ Comment[pa]=ਫੋਨੋਨ ਜਸਟੀਰਮਰ ਬੈਕà¨à¨‚ਡ
Comment[pl]=Obsługa GStreamera przez Phonon
Comment[pt]=Infra-estrutura do GStreamer para o Phonon
Comment[pt_BR]=Infraestrutura Phonon GStreamer
+Comment[ru]=Механизм GStreamer Ð´Ð»Ñ Phonon
+Comment[se]=Phonon GStreamer duogášmohtor
Comment[sk]=GStreamer podsystém
Comment[sl]=Phononova hrbtenica GStreamer
Comment[sr]=ГÑтример као позадина Фонона
+Comment[sr@ijekavian]=ГÑтример као позадина Фонона
+Comment[sr@ijekavianlatin]=GStreamer kao pozadina Phonona
Comment[sr@latin]=GStreamer kao pozadina Phonona
Comment[sv]=Phonon Gstreamer-gränssnitt
Comment[tr]=Phonon GStreamer arka ucu
diff --git a/src/3rdparty/phonon/gstreamer/medianode.cpp b/src/3rdparty/phonon/gstreamer/medianode.cpp
index 7257972..1a84592 100644
--- a/src/3rdparty/phonon/gstreamer/medianode.cpp
+++ b/src/3rdparty/phonon/gstreamer/medianode.cpp
@@ -198,9 +198,9 @@ bool MediaNode::disconnectNode(QObject *obj)
// Disconnecting elements while playing or paused seems to cause
// potential deadlock. Hence we force the pipeline into ready state
// before any nodes are disconnected.
- gst_element_set_state(root()->pipeline(), GST_STATE_READY);
+ gst_element_set_state(root()->pipeline(), GST_STATE_READY);
- Q_ASSERT(sink->root()); //sink has to have a root since it is onnected
+ Q_ASSERT(sink->root()); //sink has to have a root since it is connected
if (sink->description() & (AudioSink)) {
GstPad *sinkPad = gst_element_get_pad(sink->audioElement(), "sink");
diff --git a/src/3rdparty/phonon/gstreamer/mediaobject.cpp b/src/3rdparty/phonon/gstreamer/mediaobject.cpp
index b6d23ec..3e0addc 100644
--- a/src/3rdparty/phonon/gstreamer/mediaobject.cpp
+++ b/src/3rdparty/phonon/gstreamer/mediaobject.cpp
@@ -16,6 +16,7 @@
*/
#include <cmath>
#include <gst/interfaces/propertyprobe.h>
+#include <gst/pbutils/install-plugins.h>
#include "common.h"
#include "mediaobject.h"
#include "videowidget.h"
@@ -53,6 +54,7 @@ MediaObject::MediaObject(Backend *backend, QObject *parent)
, m_tickTimer(new QTimer(this))
, m_prefinishMark(0)
, m_transitionTime(0)
+ , m_isStream(false)
, m_posAtSeek(-1)
, m_prefinishMarkReachedNotEmitted(true)
, m_aboutToFinishEmitted(false)
@@ -79,6 +81,7 @@ MediaObject::MediaObject(Backend *backend, QObject *parent)
, m_autoplayTitles(true)
, m_availableTitles(0)
, m_currentTitle(1)
+ , m_pendingTitle(1)
{
qRegisterMetaType<GstCaps*>("GstCaps*");
qRegisterMetaType<State>("State");
@@ -95,8 +98,8 @@ MediaObject::MediaObject(Backend *backend, QObject *parent)
m_backend->addBusWatcher(this);
connect(m_tickTimer, SIGNAL(timeout()), SLOT(emitTick()));
}
- connect(this, SIGNAL(stateChanged(Phonon::State,Phonon::State)),
- this, SLOT(notifyStateChange(Phonon::State,Phonon::State)));
+ connect(this, SIGNAL(stateChanged(Phonon::State, Phonon::State)),
+ this, SLOT(notifyStateChange(Phonon::State, Phonon::State)));
}
@@ -136,6 +139,14 @@ QString stateString(const Phonon::State &state)
return QString();
}
+void
+pluginInstallationDone( GstInstallPluginsReturn res, gpointer userData )
+{
+ // Nothing inside yet
+ Q_UNUSED(res);
+ Q_UNUSED(userData);
+}
+
void MediaObject::saveState()
{
//Only first resumeState is respected
@@ -195,13 +206,35 @@ void MediaObject::noMorePadsAvailable ()
if (m_missingCodecs.size() > 0) {
bool canPlay = (m_hasAudio || m_videoStreamFound);
Phonon::ErrorType error = canPlay ? Phonon::NormalError : Phonon::FatalError;
+#ifdef PLUGIN_INSTALL_API
+ GstInstallPluginsContext *ctx = gst_install_plugins_context_new ();
+ gchar *details[2];
+ details[0] = m_missingCodecs[0].toLocal8Bit().data();
+ details[1] = NULL;
+ GstInstallPluginsReturn status;
+
+ status = gst_install_plugins_async( details, ctx, pluginInstallationDone, NULL );
+ gst_install_plugins_context_free ( ctx );
+
+ if ( status != GST_INSTALL_PLUGINS_STARTED_OK )
+ {
+ if( status == GST_INSTALL_PLUGINS_HELPER_MISSING )
+ setError(QString(tr("Missing codec helper script assistant.")), Phonon::FatalError );
+ else
+ setError(QString(tr("Plugin codec installation failed for codec: %0"))
+ .arg(m_missingCodecs[0].split("|")[3]), error);
+ }
+ m_missingCodecs.clear();
+#else
+ QString codecs = m_missingCodecs.join(", ");
+
if (error == Phonon::NormalError && m_hasVideo && !m_videoStreamFound) {
m_hasVideo = false;
emit hasVideoChanged(false);
}
- QString codecs = m_missingCodecs.join(", ");
setError(QString(tr("A required codec is missing. You need to install the following codec(s) to play this content: %0")).arg(codecs), error);
m_missingCodecs.clear();
+#endif
}
}
@@ -248,7 +281,16 @@ void MediaObject::cb_unknown_type (GstElement *decodebin, GstPad *pad, GstCaps *
value = QString::fromUtf8(gst_structure_get_name (str));
}
- media->addMissingCodecName(value);
+
+#ifdef PLUGIN_INSTALL_API
+ QString plugins = QString("gstreamer|0.10|%0|%1|decoder-%2")
+ .arg( qApp->applicationName() )
+ .arg( value )
+ .arg( QString::fromUtf8(gst_caps_to_string (caps) ) );
+ media->addMissingCodecName( plugins );
+#else
+ media->addMissingCodecName( value );
+#endif
}
static void notifyVideoCaps(GObject *obj, GParamSpec *, gpointer data)
@@ -309,7 +351,7 @@ void MediaObject::connectVideo(GstPad *pad)
m_backend->logMessage("Video track connected", Backend::Info, this);
// Note that the notify::caps _must_ be installed after linking to work with Dapper
m_capsHandler = g_signal_connect(pad, "notify::caps", G_CALLBACK(notifyVideoCaps), this);
-
+
if (!m_loading && !m_hasVideo) {
m_hasVideo = m_videoStreamFound;
emit hasVideoChanged(m_hasVideo);
@@ -368,7 +410,10 @@ bool MediaObject::createPipefromURL(const QUrl &url)
}
// Create a new datasource based on the input URL
- QByteArray encoded_cstr_url = url.toEncoded();
+ // add the 'file' scheme if it's missing; the double '/' is needed!
+ QByteArray encoded_cstr_url = (url.scheme() == QLatin1String("") ?
+ "file://" + url.toEncoded() :
+ url.toEncoded());
m_datasource = gst_element_make_from_uri(GST_URI_SRC, encoded_cstr_url.constData(), (const char*)NULL);
if (!m_datasource)
return false;
@@ -388,6 +433,14 @@ bool MediaObject::createPipefromURL(const QUrl &url)
g_object_set (G_OBJECT (m_datasource), "read-speed", 2, (const char*)NULL);
m_backend->logMessage(QString("new device speed : 2X"), Backend::Info, this);
}
+ }
+
+ /* make HTTP sources send extra headers so we get icecast
+ * metadata in case the stream is an icecast stream */
+ if (encoded_cstr_url.startsWith("http://")
+ && g_object_class_find_property (G_OBJECT_GET_CLASS (m_datasource), "iradio-mode")) {
+ g_object_set (m_datasource, "iradio-mode", TRUE, NULL);
+ m_isStream = true;
}
// Link data source into pipeline
@@ -442,7 +495,7 @@ void MediaObject::createPipeline()
gst_object_ref (GST_OBJECT (m_pipeline));
gst_object_sink (GST_OBJECT (m_pipeline));
- m_decodebin = gst_element_factory_make ("decodebin", NULL);
+ m_decodebin = gst_element_factory_make ("decodebin2", NULL);
g_signal_connect (m_decodebin, "new-decoded-pad", G_CALLBACK (&cb_newpad), this);
g_signal_connect (m_decodebin, "unknown-type", G_CALLBACK (&cb_unknown_type), this);
g_signal_connect (m_decodebin, "no-more-pads", G_CALLBACK (&cb_no_more_pads), this);
@@ -646,7 +699,7 @@ void MediaObject::setState(State newstate)
m_backend->logMessage("EOS already reached", Backend::Info, this);
} else if (currentState == GST_STATE_PLAYING) {
changeState(Phonon::PlayingState);
- } else if (!m_atEndOfStream && gst_element_set_state(m_pipeline, GST_STATE_PLAYING) != GST_STATE_CHANGE_FAILURE) {
+ } else if (gst_element_set_state(m_pipeline, GST_STATE_PLAYING) != GST_STATE_CHANGE_FAILURE) {
m_pendingState = Phonon::PlayingState;
} else {
m_backend->logMessage("phonon state request failed", Backend::Info, this);
@@ -676,7 +729,7 @@ void MediaObject::changeState(State newstate)
return;
Phonon::State oldState = m_state;
- m_state = newstate; // m_state must be set before emitting, since
+ m_state = newstate; // m_state must be set before emitting, since
// Error state requires that state() will return the new value
m_pendingState = newstate;
emit stateChanged(newstate, oldState);
@@ -696,6 +749,8 @@ void MediaObject::changeState(State newstate)
case Phonon::StoppedState:
m_backend->logMessage("phonon state changed: Stopped", Backend::Info, this);
+ // We must reset the pipeline when playing again
+ m_resetNeeded = true;
m_tickTimer->stop();
break;
@@ -861,7 +916,7 @@ void MediaObject::setSource(const MediaSource &source)
// such as failing duration queries etc
GstState state;
gst_element_set_state(m_pipeline, GST_STATE_NULL);
- gst_element_get_state (m_pipeline, &state, NULL, 2000);
+ gst_element_get_state(m_pipeline, &state, NULL, 2000);
m_source = source;
emit currentSourceChanged(m_source);
@@ -871,7 +926,9 @@ void MediaObject::setSource(const MediaSource &source)
// Go into to loading state
changeState(Phonon::LoadingState);
m_loading = true;
- m_resetNeeded = false;
+ // IMPORTANT: Honor the m_resetNeeded flag as it currently stands.
+ // See https://qa.mandriva.com/show_bug.cgi?id=56807
+ //m_resetNeeded = false;
m_resumeState = false;
m_pendingState = Phonon::StoppedState;
@@ -884,8 +941,8 @@ void MediaObject::setSource(const MediaSource &source)
// Clear any existing errors
m_aboutToFinishEmitted = false;
m_error = NoError;
- m_errorString = QString();
-
+ m_errorString.clear();
+
m_bufferPercent = 0;
m_prefinishMarkReachedNotEmitted = true;
m_aboutToFinishEmitted = false;
@@ -894,22 +951,23 @@ void MediaObject::setSource(const MediaSource &source)
setTotalTime(-1);
m_atEndOfStream = false;
- // Clear exising meta tags
+ m_availableTitles = 0;
+ m_pendingTitle = 1;
+ m_currentTitle = 1;
+
+ // Clear existing meta tags
m_metaData.clear();
+ m_isStream = false;
switch (source.type()) {
- case MediaSource::Url: {
- if (createPipefromURL(source.url()))
- m_loading = true;
- else
+ case MediaSource::Url: {
+ if (!createPipefromURL(source.url()))
setError(tr("Could not open media source."));
}
break;
case MediaSource::LocalFile: {
- if (createPipefromURL(QUrl::fromLocalFile(source.fileName())))
- m_loading = true;
- else
+ if (!createPipefromURL(QUrl::fromLocalFile(source.fileName())))
setError(tr("Could not open media source."));
}
break;
@@ -922,17 +980,15 @@ void MediaObject::setSource(const MediaSource &source)
break;
case MediaSource::Stream:
- if (createPipefromStream(source))
- m_loading = true;
- else
+ if (!createPipefromStream(source))
setError(tr("Could not open media source."));
break;
case MediaSource::Disc:
{
- QString mediaUrl;
- switch (source.discType()) {
- case Phonon::NoDisc:
+ QString mediaUrl;
+ switch (source.discType()) {
+ case Phonon::NoDisc:
qWarning() << "I should never get to see a MediaSource that is a disc but doesn't specify which one";
return;
case Phonon::Cd: // CD tracks can be specified by setting the url in the following way uri=cdda:4
@@ -948,9 +1004,7 @@ void MediaObject::setSource(const MediaSource &source)
qWarning() << "media " << source.discType() << " not implemented";
return;
}
- if (!mediaUrl.isEmpty() && createPipefromURL(QUrl(mediaUrl)))
- m_loading = true;
- else
+ if (mediaUrl.isEmpty() || !createPipefromURL(QUrl(mediaUrl)))
setError(tr("Could not open media source."));
}
break;
@@ -966,8 +1020,7 @@ void MediaObject::setSource(const MediaSource &source)
// We need to link this node to ensure that fake sinks are connected
// before loading, otherwise the stream will be blocked
- if (m_loading)
- link();
+ link();
beginLoad();
}
@@ -1004,22 +1057,22 @@ void MediaObject::getStreamInfo()
emit hasVideoChanged(m_hasVideo);
}
- m_availableTitles = 1;
- gint64 titleCount;
- GstFormat format = gst_format_get_by_nick("track");
- if (gst_element_query_duration (m_pipeline, &format, &titleCount)) {
+ if (m_source.discType() == Phonon::Cd) {
+ gint64 titleCount;
+ GstFormat format = gst_format_get_by_nick("track");
+ if (gst_element_query_duration (m_pipeline, &format, &titleCount)) {
//check if returned format is still "track",
//gstreamer sometimes returns the total time, if tracks information is not available.
- if (qstrcmp(gst_format_get_name(format), "track") == 0) {
- int oldAvailableTitles = m_availableTitles;
- m_availableTitles = (int)titleCount;
- if (m_availableTitles != oldAvailableTitles) {
- emit availableTitlesChanged(m_availableTitles);
- m_backend->logMessage(QString("Available titles changed: %0").arg(m_availableTitles), Backend::Info, this);
+ if (qstrcmp(gst_format_get_name(format), "track") == 0) {
+ int oldAvailableTitles = m_availableTitles;
+ m_availableTitles = (int)titleCount;
+ if (m_availableTitles != oldAvailableTitles) {
+ emit availableTitlesChanged(m_availableTitles);
+ m_backend->logMessage(QString("Available titles changed: %0").arg(m_availableTitles), Backend::Info, this);
+ }
}
}
}
-
}
void MediaObject::setPrefinishMark(qint32 newPrefinishMark)
@@ -1077,7 +1130,7 @@ void MediaObject::seek(qint64 time)
}
quint64 current = currentTime();
- quint64 total = totalTime();
+ quint64 total = totalTime();
if (current < total - m_prefinishMark)
m_prefinishMarkReachedNotEmitted = true;
@@ -1098,7 +1151,7 @@ void MediaObject::emitTick()
if (m_tickInterval > 0 && currentTime != m_previousTickTime) {
emit tick(currentTime);
- m_previousTickTime = currentTime;
+ m_previousTickTime = currentTime;
}
if (m_state == Phonon::PlayingState) {
if (currentTime >= totalTime - m_prefinishMark) {
@@ -1109,7 +1162,12 @@ void MediaObject::emitTick()
}
// Prepare load of next source
if (currentTime >= totalTime - ABOUT_TO_FINNISH_TIME) {
- if (!m_aboutToFinishEmitted) {
+ if (m_source.type() == MediaSource::Disc &&
+ m_autoplayTitles &&
+ m_availableTitles > 1 &&
+ m_currentTitle < m_availableTitles) {
+ m_aboutToFinishEmitted = false;
+ } else if (!m_aboutToFinishEmitted) {
m_aboutToFinishEmitted = true; // track is about to finish
emit aboutToFinish();
}
@@ -1213,8 +1271,8 @@ void MediaObject::handleBusMessage(const Message &message)
switch (GST_MESSAGE_TYPE (gstMessage)) {
- case GST_MESSAGE_EOS:
- m_backend->logMessage("EOS recieved", Backend::Info, this);
+ case GST_MESSAGE_EOS:
+ m_backend->logMessage("EOS received", Backend::Info, this);
handleEndOfStream();
break;
@@ -1222,14 +1280,98 @@ void MediaObject::handleBusMessage(const Message &message)
GstTagList* tag_list = 0;
gst_message_parse_tag(gstMessage, &tag_list);
if (tag_list) {
+ TagMap newTags;
+ gst_tag_list_foreach (tag_list, &foreach_tag_function, &newTags);
+ gst_tag_list_free(tag_list);
+
+ // Determine if we should no fake the album/artist tags.
+ // This is a little confusing as we want to fake it on initial
+ // connection where title, album and artist are all missing.
+ // There are however times when we get just other information,
+ // e.g. codec, and so we want to only do clever stuff if we
+ // have a commonly available tag (ORGANIZATION) or we have a
+ // change in title
+ bool fake_it =
+ (m_isStream
+ && ((!newTags.contains("TITLE")
+ && newTags.contains("ORGANIZATION"))
+ || (newTags.contains("TITLE")
+ && m_metaData.value("TITLE") != newTags.value("TITLE")))
+ && !newTags.contains("ALBUM")
+ && !newTags.contains("ARTIST"));
+
TagMap oldMap = m_metaData; // Keep a copy of the old one for reference
- // Append any new meta tags to the existing tag list
- gst_tag_list_foreach (tag_list, &foreach_tag_function, &m_metaData);
+
+ // Now we've checked the new data, append any new meta tags to the existing tag list
+ // We cannot use TagMap::iterator as this is a multimap and when streaming data
+ // could in theory be lost.
+ QList<QString> keys = newTags.keys();
+ for (QList<QString>::iterator i = keys.begin(); i != keys.end(); ++i) {
+ QString key = *i;
+ if (m_isStream) {
+ // If we're streaming, we need to remove data in m_metaData
+ // in order to stop it filling up indefinitely (as it's a multimap)
+ m_metaData.remove(key);
+ }
+ QList<QString> values = newTags.values(key);
+ for (QList<QString>::iterator j = values.begin(); j != values.end(); ++j) {
+ QString value = *j;
+ QString currVal = m_metaData.value(key);
+ if (!m_metaData.contains(key) || currVal != value) {
+ m_metaData.insert(key, value);
+ }
+ }
+ }
+
m_backend->logMessage("Meta tags found", Backend::Info, this);
- if (oldMap != m_metaData && !m_loading)
- emit metaDataChanged(m_metaData);
- gst_tag_list_free(tag_list);
- }
+ if (oldMap != m_metaData) {
+ // This is a bit of a hack to ensure that stream metadata is
+ // returned. We get as much as we can from the Shoutcast server's
+ // StreamTitle= header. If further info is decoded from the stream
+ // itself later, then it will overwrite this info.
+ if (m_isStream && fake_it) {
+ m_metaData.remove("ALBUM");
+ m_metaData.remove("ARTIST");
+
+ // Detect whether we want to "fill in the blanks"
+ QString str;
+ if (m_metaData.contains("TITLE"))
+ {
+ str = m_metaData.value("TITLE");
+ int splitpoint;
+ // Check to see if our title matches "%s - %s"
+ // Where neither %s are empty...
+ if ((splitpoint = str.indexOf(" - ")) > 0
+ && str.size() > (splitpoint+3)) {
+ m_metaData.insert("ARTIST", str.left(splitpoint));
+ m_metaData.replace("TITLE", str.mid(splitpoint+3));
+ }
+ } else {
+ str = m_metaData.value("GENRE");
+ if (!str.isEmpty())
+ m_metaData.insert("TITLE", str);
+ else
+ m_metaData.insert("TITLE", "Streaming Data");
+ }
+ if (!m_metaData.contains("ARTIST")) {
+ str = m_metaData.value("LOCATION");
+ if (!str.isEmpty())
+ m_metaData.insert("ARTIST", str);
+ else
+ m_metaData.insert("ARTIST", "Streaming Data");
+ }
+ str = m_metaData.value("ORGANIZATION");
+ if (!str.isEmpty())
+ m_metaData.insert("ALBUM", str);
+ else
+ m_metaData.insert("ALBUM", "Streaming Data");
+ }
+ // As we manipulate the title, we need to recompare
+ // oldMap and m_metaData here...
+ if (oldMap != m_metaData && !m_loading)
+ emit metaDataChanged(m_metaData);
+ }
+ }
}
break;
@@ -1255,6 +1397,9 @@ void MediaObject::handleBusMessage(const Message &message)
m_backend->logMessage("gstreamer: pipeline state set to playing", Backend::Info, this);
m_tickTimer->start();
changeState(Phonon::PlayingState);
+ if ((m_source.type() == MediaSource::Disc) && (m_currentTitle != m_pendingTitle)) {
+ setTrack(m_pendingTitle);
+ }
if (m_resumeState && m_oldState == Phonon::PlayingState) {
seek(m_oldPos);
m_resumeState = false;
@@ -1290,6 +1435,9 @@ void MediaObject::handleBusMessage(const Message &message)
changeState(Phonon::StoppedState);
m_backend->logMessage("gstreamer: pipeline state set to ready", Backend::Debug, this);
m_tickTimer->stop();
+ if ((m_source.type() == MediaSource::Disc) && (m_currentTitle != m_pendingTitle)) {
+ setTrack(m_pendingTitle);
+ }
break;
case GST_STATE_VOID_PENDING :
@@ -1328,7 +1476,7 @@ void MediaObject::handleBusMessage(const Message &message)
setError(err->message, Phonon::FatalError);
gst_caps_unref (caps);
gst_object_unref (sinkPad);
- }
+ }
} else {
setError(QString(err->message), Phonon::FatalError);
}
@@ -1400,8 +1548,8 @@ void MediaObject::handleBusMessage(const Message &message)
//case GST_MESSAGE_STEP_DONE:
//case GST_MESSAGE_LATENCY: only from 0.10.12
//case GST_MESSAGE_ASYNC_DONE: only from 0.10.13
- default:
- break;
+ default:
+ break;
}
}
@@ -1417,7 +1565,8 @@ void MediaObject::handleEndOfStream()
if (!m_seekable)
m_atEndOfStream = true;
- if (m_autoplayTitles &&
+ if (m_source.type() == MediaSource::Disc &&
+ m_autoplayTitles &&
m_availableTitles > 1 &&
m_currentTitle < m_availableTitles) {
_iface_setCurrentTitle(m_currentTitle + 1);
@@ -1444,6 +1593,14 @@ void MediaObject::handleEndOfStream()
}
}
+void MediaObject::invalidateGraph()
+{
+ m_resetNeeded = true;
+ if (m_state == Phonon::PlayingState || m_state == Phonon::PausedState) {
+ changeState(Phonon::StoppedState);
+ }
+}
+
// Notifes the pipeline about state changes in the media object
void MediaObject::notifyStateChange(Phonon::State newstate, Phonon::State oldstate)
{
@@ -1502,15 +1659,30 @@ int MediaObject::_iface_currentTitle() const
void MediaObject::_iface_setCurrentTitle(int title)
{
- GstFormat trackFormat = gst_format_get_by_nick("track");
m_backend->logMessage(QString("setCurrentTitle %0").arg(title), Backend::Info, this);
- if ((title == m_currentTitle) || (title < 1) || (title > m_availableTitles))
+ if ((title == m_currentTitle) || (title == m_pendingTitle))
+ return;
+
+ m_pendingTitle = title;
+
+ if (m_state == Phonon::PlayingState || m_state == Phonon::StoppedState) {
+ setTrack(m_pendingTitle);
+ } else {
+ setState(Phonon::StoppedState);
+ }
+}
+
+void MediaObject::setTrack(int title)
+{
+ if (((m_state != Phonon::PlayingState) && (m_state != Phonon::StoppedState)) || (title < 1) || (title > m_availableTitles))
return;
- m_currentTitle = title;
//let's seek to the beginning of the song
- if (gst_element_seek_simple(m_pipeline, trackFormat, GST_SEEK_FLAG_FLUSH, m_currentTitle - 1)) {
+ GstFormat trackFormat = gst_format_get_by_nick("track");
+ m_backend->logMessage(QString("setTrack %0").arg(title), Backend::Info, this);
+ if (gst_element_seek_simple(m_pipeline, trackFormat, GST_SEEK_FLAG_FLUSH, title - 1)) {
+ m_currentTitle = title;
updateTotalTime();
m_atEndOfStream = false;
emit titleChanged(title);
diff --git a/src/3rdparty/phonon/gstreamer/mediaobject.h b/src/3rdparty/phonon/gstreamer/mediaobject.h
index 64b3510..d588ffc 100644
--- a/src/3rdparty/phonon/gstreamer/mediaobject.h
+++ b/src/3rdparty/phonon/gstreamer/mediaobject.h
@@ -55,6 +55,7 @@ class MediaObject : public QObject, public MediaObjectInterface
, public MediaNode
{
friend class Stream;
+ friend class AudioDataOutput;
Q_OBJECT
Q_INTERFACES(Phonon::MediaObjectInterface
#ifndef QT_NO_PHONON_MEDIACONTROLLER
@@ -144,12 +145,8 @@ public:
void handleBusMessage(const Message &msg);
void handleEndOfStream();
void addMissingCodecName(const QString &codec) { m_missingCodecs.append(codec); }
- void invalidateGraph() {
- m_resetNeeded = true;
- if (m_state == Phonon::PlayingState || m_state == Phonon::PausedState) {
- changeState(Phonon::StoppedState);
- }
- }
+ void invalidateGraph();
+
static void cb_newpad (GstElement *decodebin, GstPad *pad, gboolean last, gpointer data);
static void cb_pad_added (GstElement *decodebin, GstPad *pad, gpointer data);
static void cb_unknown_type (GstElement *decodebin, GstPad *pad, GstCaps *caps, gpointer data);
@@ -236,6 +233,7 @@ private:
int _iface_availableTitles() const;
int _iface_currentTitle() const;
void _iface_setCurrentTitle(int title);
+ void setTrack(int title);
bool m_resumeState;
State m_oldState;
@@ -250,6 +248,7 @@ private:
MediaSource m_nextSource;
qint32 m_prefinishMark;
qint32 m_transitionTime;
+ bool m_isStream;
qint64 m_posAtSeek;
@@ -285,6 +284,7 @@ private:
bool m_autoplayTitles;
int m_availableTitles;
int m_currentTitle;
+ int m_pendingTitle;
};
}
} //namespace Phonon::Gstreamer
diff --git a/src/3rdparty/phonon/gstreamer/qwidgetvideosink.h b/src/3rdparty/phonon/gstreamer/qwidgetvideosink.h
index 73a494a..f83dba5 100644
--- a/src/3rdparty/phonon/gstreamer/qwidgetvideosink.h
+++ b/src/3rdparty/phonon/gstreamer/qwidgetvideosink.h
@@ -19,6 +19,7 @@
#define Phonon_GSTREAMER_VIDEOSINK_H
#include "common.h"
+#include "qwidgetvideosink.h"
#include <QtCore/QByteArray>
#include <QtCore/QEvent>
diff --git a/src/3rdparty/phonon/gstreamer/videowidget.h b/src/3rdparty/phonon/gstreamer/videowidget.h
index dc0754d..8603f6a 100644
--- a/src/3rdparty/phonon/gstreamer/videowidget.h
+++ b/src/3rdparty/phonon/gstreamer/videowidget.h
@@ -25,6 +25,7 @@
#include "common.h"
#include "medianode.h"
#include "abstractrenderer.h"
+#include "videowidget.h"
#include <gst/gst.h>
diff --git a/src/3rdparty/phonon/gstreamer/x11renderer.cpp b/src/3rdparty/phonon/gstreamer/x11renderer.cpp
index 73877a8..968f3a8 100644
--- a/src/3rdparty/phonon/gstreamer/x11renderer.cpp
+++ b/src/3rdparty/phonon/gstreamer/x11renderer.cpp
@@ -90,7 +90,7 @@ GstElement* X11Renderer::createVideoSink()
gst_object_unref(GST_OBJECT(videoSink));
videoSink = 0;
} else {
- // Note that this should not really be neccessary as these are
+ // Note that this should not really be necessary as these are
// default values, though under certain conditions values are retained
// even between application instances. (reproducible on 0.10.16/Gutsy)
g_object_set(G_OBJECT(videoSink), "brightness", 0, (const char*)NULL);
@@ -138,6 +138,7 @@ void X11Renderer::scaleModeChanged(Phonon::VideoWidget::ScaleMode)
void X11Renderer::movieSizeChanged(const QSize &movieSize)
{
Q_UNUSED(movieSize);
+
if (m_renderWidget) {
m_renderWidget->setGeometry(m_videoWidget->calculateDrawFrameRect());
}
diff --git a/src/3rdparty/phonon/mmf/abstractvideooutput.cpp b/src/3rdparty/phonon/mmf/abstractvideooutput.cpp
index 3fe66fc..a8aabfd 100644
--- a/src/3rdparty/phonon/mmf/abstractvideooutput.cpp
+++ b/src/3rdparty/phonon/mmf/abstractvideooutput.cpp
@@ -28,6 +28,8 @@ along with this library. If not, see <http://www.gnu.org/licenses/>.
#include <QMoveEvent>
#include <QResizeEvent>
+#include <QApplication> // for QApplication::activeWindow
+
#include <coecntrl.h>
QT_BEGIN_NAMESPACE
@@ -162,6 +164,12 @@ void MMF::AbstractVideoOutput::dump() const
QScopedPointer<ObjectDump::QVisitor> visitor(new ObjectDump::QVisitor);
visitor->setPrefix("Phonon::MMF"); // to aid searchability of logs
ObjectDump::addDefaultAnnotators(*visitor);
+
+ if (QWidget *window = QApplication::activeWindow()) {
+ TRACE("Dumping from root window 0x%08x:", window);
+ ObjectDump::dumpTreeFromLeaf(*window, *visitor);
+ }
+
TRACE("Dumping tree from leaf 0x%08x:", this);
ObjectDump::dumpTreeFromLeaf(*this, *visitor);
diff --git a/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp b/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp
index 8cb9db5..c2bcce0 100644
--- a/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp
+++ b/src/3rdparty/phonon/mmf/abstractvideoplayer.cpp
@@ -193,11 +193,14 @@ qint64 MMF::AbstractVideoPlayer::totalTime() const
void MMF::AbstractVideoPlayer::videoWindowChanged()
{
- TRACE_CONTEXT(AbstractVideoPlayer::videoOutputRegionChanged, EVideoInternal);
+ TRACE_CONTEXT(AbstractVideoPlayer::videoWindowChanged, EVideoInternal);
TRACE_ENTRY("state %d", state());
m_window = m_videoOutput ? m_videoOutput->videoWindow() : 0;
+ if (m_videoOutput)
+ m_videoOutput->dump();
+
handleVideoWindowChanged();
TRACE_EXIT_0();
@@ -253,6 +256,9 @@ void MMF::AbstractVideoPlayer::MvpuoPrepareComplete(TInt aError)
TRAPD(err, getVideoClipParametersL(aError));
if (KErrNone == err) {
+ if (m_videoOutput)
+ m_videoOutput->dump();
+
maxVolumeChanged(m_player->MaxVolume());
if (m_videoOutput)
diff --git a/src/3rdparty/phonon/mmf/videooutput_dsa.cpp b/src/3rdparty/phonon/mmf/videooutput_dsa.cpp
index a5e2ac8..4f9ad7f 100644
--- a/src/3rdparty/phonon/mmf/videooutput_dsa.cpp
+++ b/src/3rdparty/phonon/mmf/videooutput_dsa.cpp
@@ -101,11 +101,17 @@ void MMF::DsaVideoOutput::ancestorMoved()
void MMF::DsaVideoOutput::beginNativePaintEvent(const QRect & /*controlRect*/)
{
+ TRACE_CONTEXT(DsaVideoOutput::beginNativePaintEvent, EVideoInternal);
+ TRACE_ENTRY_0();
+
emit beginVideoWindowNativePaint();
}
void MMF::DsaVideoOutput::endNativePaintEvent(const QRect & /*controlRect*/)
{
+ TRACE_CONTEXT(DsaVideoOutput::endNativePaintEvent, EVideoInternal);
+ TRACE_ENTRY_0();
+
// Ensure that draw ops are executed into the WSERV output framebuffer
CCoeEnv::Static()->WsSession().Flush();
diff --git a/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp b/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp
index 21cdb16..226d079 100644
--- a/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp
+++ b/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp
@@ -162,7 +162,10 @@ void MMF::DsaVideoPlayer::prepareCompleted()
void MMF::DsaVideoPlayer::handleVideoWindowChanged()
{
if (!m_window) {
- m_window = QApplication::activeWindow()->effectiveWinId()->DrawableWindow();
+ if (QWidget *window = QApplication::activeWindow())
+ m_window = window->effectiveWinId()->DrawableWindow();
+ else
+ m_window = 0;
m_videoScreenRect = TRect();
}
@@ -187,6 +190,9 @@ public:
void getDsaRegion(RWsSession &session, const RWindowBase &window)
{
+ // Dump complete window tree
+ session.LogCommand(RWsSession::ELoggingStatusDump);
+
RDirectScreenAccess dsa(session);
TInt err = dsa.Construct();
CDummyAO ao;
@@ -211,7 +217,10 @@ void getDsaRegion(RWsSession &session, const RWindowBase &window)
void MMF::DsaVideoPlayer::handleParametersChanged(VideoParameters parameters)
{
TRACE_CONTEXT(DsaVideoPlayer::handleParametersChanged, EVideoInternal);
- TRACE_ENTRY_0();
+ TRACE_ENTRY("parameters 0x%x", parameters);
+
+ if (!m_window)
+ return;
#ifndef QT_NO_DEBUG
getDsaRegion(m_wsSession, *m_window);
@@ -259,17 +268,32 @@ void MMF::DsaVideoPlayer::handleParametersChanged(VideoParameters parameters)
void MMF::DsaVideoPlayer::startDirectScreenAccess()
{
+ TRACE_CONTEXT(DsaVideoPlayer::startDirectScreenAccess, EVideoInternal);
+ TRACE_ENTRY("dsaActive %d", m_dsaActive);
+
+ int err = KErrNone;
+
if (!m_dsaActive) {
- TRAPD(err, m_player->StartDirectScreenAccessL());
+ TRAP(err, m_player->StartDirectScreenAccessL());
if (KErrNone == err)
m_dsaActive = true;
else
setError(tr("Video display error"), err);
}
+
+ if (m_videoOutput)
+ m_videoOutput->dump();
+
+ TRACE_EXIT("error %d", err);
}
bool MMF::DsaVideoPlayer::stopDirectScreenAccess()
{
+ TRACE_CONTEXT(DsaVideoPlayer::stopDirectScreenAccess, EVideoInternal);
+ TRACE_ENTRY("dsaActive %d", m_dsaActive);
+
+ int err = KErrNone;
+
const bool dsaWasActive = m_dsaActive;
if (m_dsaActive) {
TRAPD(err, m_player->StopDirectScreenAccessL());
@@ -278,6 +302,9 @@ bool MMF::DsaVideoPlayer::stopDirectScreenAccess()
else
setError(tr("Video display error"), err);
}
+
+ TRACE_EXIT("error %d", err);
+
return dsaWasActive;
}
diff --git a/src/3rdparty/phonon/phonon/CMakeLists.txt b/src/3rdparty/phonon/phonon/CMakeLists.txt
index 11d7913..ace934a 100644
--- a/src/3rdparty/phonon/phonon/CMakeLists.txt
+++ b/src/3rdparty/phonon/phonon/CMakeLists.txt
@@ -8,6 +8,30 @@ endif (PHONON_BUILD_EXAMPLES)
add_subdirectory(experimental)
+set(PULSEAUDIO_MINIMUM_VERSION "0.9.15")
+macro_optional_find_package(PulseAudio)
+if (PULSEAUDIO_FOUND)
+ # PULSEAUDIO_DEVICE_MANAGER feature check could be moved to FindPulseAudio.cmake, hint hint. -- Rex
+ macro_ensure_version("0.9.21" "${PULSEAUDIO_VERSION}" PULSEAUDIO_DEVICE_MANAGER)
+endif (PULSEAUDIO_FOUND)
+macro_log_feature(PULSEAUDIO_FOUND "PulseAudio" "A cross-platform, networked sound server." "http://www.pulseaudio.org" FALSE "" "Allows audio playback via the PulseAudio soundserver when it is running")
+macro_optional_find_package(GLIB2)
+macro_log_feature(GLIB2_FOUND "GLib2" "GLib 2 is required to compile the pulseaudio for Phonon" "http://www.gtk.org/download/" FALSE)
+
+
+if (GLIB2_FOUND AND PULSEAUDIO_FOUND)
+ add_definitions(-DHAVE_PULSEAUDIO)
+ include_directories(${GLIB2_INCLUDE_DIR} ${PULSEAUDIO_INCLUDE_DIR})
+ if (PULSEAUDIO_DEVICE_MANAGER)
+ add_definitions(-DHAVE_PULSEAUDIO_DEVICE_MANAGER)
+ endif(PULSEAUDIO_DEVICE_MANAGER)
+else(GLIB2_FOUND AND PULSEAUDIO_FOUND)
+ set(PULSEAUDIO_INCLUDE_DIR "")
+ set(PULSEAUDIO_LIBRARY "")
+ set(PULSEAUDIO_MAINLOOP_LIBRARY "")
+endif(GLIB2_FOUND AND PULSEAUDIO_FOUND)
+
+
set(phonon_LIB_SRCS
objectdescription.cpp
objectdescriptionmodel.cpp
@@ -35,9 +59,12 @@ set(phonon_LIB_SRCS
videowidget.cpp
videoplayer.cpp
seekslider.cpp
+ swiftslider.cpp
volumeslider.cpp
effectwidget.cpp
iodevicestream.cpp
+ audiodataoutput.cpp
+ pulsesupport.cpp
)
if (QT_QTDBUS_FOUND)
@@ -50,6 +77,10 @@ endif (QT_QTDBUS_FOUND)
add_definitions(-DPHONON_LIBRARY_PATH="${PLUGIN_INSTALL_DIR}/plugins")
automoc4_add_library(phonon SHARED ${phonon_LIB_SRCS})
target_link_libraries(phonon ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY})
+if (GLIB2_FOUND AND PULSEAUDIO_FOUND)
+target_link_libraries(phonon ${GLIB2_LIBRARIES} ${GOBJECT_LIBRARIES} ${PULSEAUDIO_LIBRARY} ${PULSEAUDIO_MAINLOOP_LIBRARY})
+endif (GLIB2_FOUND AND PULSEAUDIO_FOUND)
+
if (QT_QTDBUS_FOUND)
target_link_libraries(phonon ${QT_QTDBUS_LIBRARY})
endif (QT_QTDBUS_FOUND)
@@ -99,6 +130,10 @@ install(FILES
volumeslider.h
effectwidget.h
platformplugin.h
+ audiodataoutput.h
+ audiodataoutputinterface.h
+ globalconfig.h
+ pulsesupport.h
DESTINATION ${INCLUDE_INSTALL_DIR}/phonon COMPONENT Devel)
install(FILES org.kde.Phonon.AudioOutput.xml DESTINATION ${DBUS_INTERFACES_INSTALL_DIR})
diff --git a/src/3rdparty/phonon/phonon/audiodataoutput.cpp b/src/3rdparty/phonon/phonon/audiodataoutput.cpp
new file mode 100644
index 0000000..fa8ec0d
--- /dev/null
+++ b/src/3rdparty/phonon/phonon/audiodataoutput.cpp
@@ -0,0 +1,72 @@
+/* This file is part of the KDE project
+ Copyright (C) 2005 Matthias Kretz <kretz@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), Nokia Corporation
+ (or its successors, if any) and the KDE Free Qt Foundation, which shall
+ act as a proxy defined in Section 6 of version 3 of the license.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "audiodataoutput.h"
+#include "audiodataoutput_p.h"
+#include "factory_p.h"
+
+#define PHONON_CLASSNAME AudioDataOutput
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+namespace Phonon
+{
+
+PHONON_HEIR_IMPL(AbstractAudioOutput)
+
+PHONON_GETTER(int, dataSize, d->dataSize)
+PHONON_GETTER(int, sampleRate, -1)
+PHONON_SETTER(setDataSize, dataSize, int)
+
+bool AudioDataOutputPrivate::aboutToDeleteBackendObject()
+{
+ Q_ASSERT(m_backendObject);
+ pBACKEND_GET(int, dataSize, "dataSize");
+
+ return AbstractAudioOutputPrivate::aboutToDeleteBackendObject();
+}
+
+void AudioDataOutputPrivate::setupBackendObject()
+{
+ Q_Q(AudioDataOutput);
+ Q_ASSERT(m_backendObject);
+ AbstractAudioOutputPrivate::setupBackendObject();
+
+ // set up attributes
+ pBACKEND_CALL1("setDataSize", int, dataSize);
+
+ qRegisterMetaType<QMap<Phonon::AudioDataOutput::Channel, QVector<qint16> > >("QMap<Phonon::AudioDataOutput::Channel, QVector<qint16> >");
+
+ QObject::connect(m_backendObject,
+ SIGNAL(dataReady(const QMap<Phonon::AudioDataOutput::Channel, QVector<qint16> > &)),
+ q, SIGNAL(dataReady(const QMap<Phonon::AudioDataOutput::Channel, QVector<qint16> > &)));
+ QObject::connect(m_backendObject, SIGNAL(endOfMedia(int)), q, SIGNAL(endOfMedia(int)));
+}
+
+} // namespace Phonon
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#undef PHONON_CLASSNAME
+// vim: sw=4 ts=4 tw=80
diff --git a/src/3rdparty/phonon/phonon/audiodataoutput.h b/src/3rdparty/phonon/phonon/audiodataoutput.h
new file mode 100644
index 0000000..7a559b3
--- /dev/null
+++ b/src/3rdparty/phonon/phonon/audiodataoutput.h
@@ -0,0 +1,135 @@
+/* This file is part of the KDE project
+ Copyright (C) 2005-2006 Matthias Kretz <kretz@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), Nokia Corporation
+ (or its successors, if any) and the KDE Free Qt Foundation, which shall
+ act as a proxy defined in Section 6 of version 3 of the license.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+#ifndef Phonon_AUDIODATAOUTPUT_H
+#define Phonon_AUDIODATAOUTPUT_H
+
+#include "phonon_export.h"
+#include "abstractaudiooutput.h"
+#include "phonondefs.h"
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+template<typename T> class QVector;
+template<typename Key, typename T> class QMap;
+#endif
+
+namespace Phonon
+{
+ class AudioDataOutputPrivate;
+
+ /**
+ * \short This class gives you the audio data (for visualizations).
+ *
+ * This class implements a special AbstractAudioOutput that gives your
+ * application the audio data. Don't expect realtime performance. But
+ * the latencies should be low enough to use the audio data for
+ * visualizations. You can also use the audio data for further processing
+ * (e.g. encoding and saving to a file).
+ *
+ * \author Matthias Kretz <kretz@kde.org>
+ */
+ class PHONON_EXPORT AudioDataOutput : public AbstractAudioOutput
+ {
+ Q_OBJECT
+ K_DECLARE_PRIVATE(AudioDataOutput)
+ Q_ENUMS(Channel)
+ Q_PROPERTY(int dataSize READ dataSize WRITE setDataSize)
+ PHONON_HEIR(AudioDataOutput)
+ public:
+ /**
+ * Specifies the channel the audio data belongs to.
+ */
+ enum Channel
+ {
+ LeftChannel,
+ RightChannel,
+ CenterChannel,
+ LeftSurroundChannel,
+ RightSurroundChannel,
+ SubwooferChannel
+ };
+
+ /**
+ * Returns the currently used number of samples passed through
+ * the signal.
+ *
+ * \see setDataSize
+ */
+ int dataSize() const;
+
+ /**
+ * Returns the sample rate in Hz. Common sample rates are 44100 Hz
+ * and 48000 Hz. AudioDataOutput will not do any sample rate
+ * conversion for you. If you need to convert the sample rate you
+ * might want to take a look at libsamplerate. For visualizations it
+ * is often enough to do simple interpolation or even drop/duplicate
+ * samples.
+ *
+ * \return The sample rate as reported by the backend. If the
+ * backend is unavailable -1 is returned.
+ */
+ int sampleRate() const;
+
+ public Q_SLOTS:
+ /**
+ * Sets the number of samples to be passed in one signal emission.
+ *
+ * Defaults to 512 samples per emitted signal.
+ *
+ * \param size the number of samples
+ */
+ void setDataSize(int size);
+
+ Q_SIGNALS:
+ /**
+ * Emitted whenever another dataSize number of samples are ready.
+ *
+ * \param data A mapping of Channel to a vector holding the audio data.
+ */
+ void dataReady(const QMap<Phonon::AudioDataOutput::Channel, QVector<qint16> > &data);
+
+
+ /**
+ * This signal is emitted before the last dataReady signal of a
+ * media is emitted.
+ *
+ * If, for example, the playback of a media file has finished and the
+ * last audio data of that file is going to be passed with the next
+ * dataReady signal, and only the 28 first samples of the data
+ * vector are from that media file endOfMedia will be emitted right
+ * before dataReady with \p remainingSamples = 28.
+ *
+ * \param remainingSamples The number of samples in the next
+ * dataReady vector that belong to the media that was playing to
+ * this point.
+ */
+ void endOfMedia(int remainingSamples);
+ };
+} // namespace Phonon
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+// vim: sw=4 ts=4 tw=80
+#endif // Phonon_AUDIODATAOUTPUT_H
diff --git a/src/3rdparty/phonon/phonon/audiodataoutput_p.h b/src/3rdparty/phonon/phonon/audiodataoutput_p.h
new file mode 100644
index 0000000..5fd4f80
--- /dev/null
+++ b/src/3rdparty/phonon/phonon/audiodataoutput_p.h
@@ -0,0 +1,54 @@
+/* This file is part of the KDE project
+ Copyright (C) 2006 Matthias Kretz <kretz@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), Nokia Corporation
+ (or its successors, if any) and the KDE Free Qt Foundation, which shall
+ act as a proxy defined in Section 6 of version 3 of the license.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#ifndef AUDIODATAOUTPUT_P_H
+#define AUDIODATAOUTPUT_P_H
+
+#include "audiodataoutput.h"
+#include "abstractaudiooutput_p.h"
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+namespace Phonon
+{
+
+class AudioDataOutputPrivate : public AbstractAudioOutputPrivate
+{
+ Q_DECLARE_PUBLIC(AudioDataOutput)
+ PHONON_PRIVATECLASS
+ protected:
+ AudioDataOutputPrivate()
+ : dataSize(512)
+ {
+ }
+
+ int dataSize;
+};
+
+} // namespace Phonon
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // AUDIODATAOUTPUT_P_H
+// vim: sw=4 ts=4 tw=80
diff --git a/src/3rdparty/phonon/phonon/audiodataoutputinterface.h b/src/3rdparty/phonon/phonon/audiodataoutputinterface.h
new file mode 100644
index 0000000..08bc7fc
--- /dev/null
+++ b/src/3rdparty/phonon/phonon/audiodataoutputinterface.h
@@ -0,0 +1,50 @@
+/* This file is part of the KDE project
+ Copyright (C) 2008 Matthias Kretz <kretz@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), Nokia Corporation
+ (or its successors, if any) and the KDE Free Qt Foundation, which shall
+ act as a proxy defined in Section 6 of version 3 of the license.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#ifndef PHONON_AUDIODATAOUTPUTINTERFACE_H
+#define PHONON_AUDIODATAOUTPUTINTERFACE_H
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+namespace Phonon
+{
+
+class AudioDataOutput;
+
+class AudioDataOutputInterface
+{
+ public:
+ virtual ~AudioDataOutputInterface() {}
+
+ virtual AudioDataOutput *frontendObject() const = 0;
+ virtual void setFrontendObject(AudioDataOutput *) = 0;
+};
+
+} // namespace Phonon
+
+Q_DECLARE_INTERFACE(Phonon::AudioDataOutputInterface, "0AudioDataOutputInterface.phonon.kde.org")
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // PHONON_AUDIODATAOUTPUTINTERFACE_H
diff --git a/src/3rdparty/phonon/phonon/audiooutput.cpp b/src/3rdparty/phonon/phonon/audiooutput.cpp
index 0f6a49b..e94caad 100644
--- a/src/3rdparty/phonon/phonon/audiooutput.cpp
+++ b/src/3rdparty/phonon/phonon/audiooutput.cpp
@@ -24,12 +24,14 @@
#include "factory_p.h"
#include "objectdescription.h"
#include "audiooutputadaptor_p.h"
-#include "globalconfig_p.h"
+#include "globalconfig.h"
#include "audiooutputinterface.h"
#include "phononnamespace_p.h"
#include "platform_p.h"
+#include "pulsesupport.h"
#include <QtCore/qmath.h>
+#include <QtCore/quuid.h>
#define PHONON_CLASSNAME AudioOutput
#define IFACES2 AudioOutputInterface42
@@ -42,8 +44,12 @@ QT_BEGIN_NAMESPACE
namespace Phonon
{
-static inline bool callSetOutputDevice(MediaNodePrivate *const d, int index)
+static inline bool callSetOutputDevice(AudioOutputPrivate *const d, int index)
{
+ PulseSupport *pulse = PulseSupport::getInstance();
+ if (pulse->isActive())
+ return pulse->setOutputDevice(d->getStreamUuid(), index);
+
Iface<IFACES2> iface(d);
if (iface) {
return iface->setOutputDevice(AudioOutputDevice::fromIndex(index));
@@ -51,8 +57,12 @@ static inline bool callSetOutputDevice(MediaNodePrivate *const d, int index)
return Iface<IFACES0>::cast(d)->setOutputDevice(index);
}
-static inline bool callSetOutputDevice(MediaNodePrivate *const d, const AudioOutputDevice &dev)
+static inline bool callSetOutputDevice(AudioOutputPrivate *const d, const AudioOutputDevice &dev)
{
+ PulseSupport *pulse = PulseSupport::getInstance();
+ if (pulse->isActive())
+ return pulse->setOutputDevice(d->getStreamUuid(), dev.index());
+
Iface<IFACES2> iface(d);
if (iface) {
return iface->setOutputDevice(dev);
@@ -89,16 +99,20 @@ void AudioOutputPrivate::init(Phonon::Category c)
#endif
category = c;
-
- // select hardware device according to the category
- device = AudioOutputDevice::fromIndex(GlobalConfig().audioOutputDeviceFor(category, GlobalConfig::AdvancedDevicesFromSettings | GlobalConfig::HideUnavailableDevices));
+ streamUuid = QUuid::createUuid().toString();
+ PulseSupport *pulse = PulseSupport::getInstance();
+ pulse->setStreamPropList(category, streamUuid);
+ q->connect(pulse, SIGNAL(usingDevice(QString,int)), SLOT(_k_deviceChanged(QString,int)));
createBackendObject();
q->connect(Factory::sender(), SIGNAL(availableAudioOutputDevicesChanged()), SLOT(_k_deviceListChanged()));
}
-
+QString AudioOutputPrivate::getStreamUuid()
+{
+ return streamUuid;
+}
void AudioOutputPrivate::createBackendObject()
{
@@ -106,6 +120,7 @@ void AudioOutputPrivate::createBackendObject()
return;
Q_Q(AudioOutput);
m_backendObject = Factory::createAudioOutput(q);
+ device = AudioOutputDevice::fromIndex(GlobalConfig().audioOutputDeviceFor(category, GlobalConfig::AdvancedDevicesFromSettings | GlobalConfig::HideUnavailableDevices));
if (m_backendObject) {
setupBackendObject();
}
@@ -220,21 +235,21 @@ bool AudioOutput::setOutputDevice(const AudioOutputDevice &newAudioOutputDevice)
{
K_D(AudioOutput);
if (!newAudioOutputDevice.isValid()) {
- d->outputDeviceOverridden = false;
+ d->outputDeviceOverridden = d->forceMove = false;
const int newIndex = GlobalConfig().audioOutputDeviceFor(d->category);
if (newIndex == d->device.index()) {
return true;
}
d->device = AudioOutputDevice::fromIndex(newIndex);
} else {
- d->outputDeviceOverridden = true;
+ d->outputDeviceOverridden = d->forceMove = true;
if (d->device == newAudioOutputDevice) {
return true;
}
d->device = newAudioOutputDevice;
}
if (k_ptr->backendObject()) {
- return callSetOutputDevice(k_ptr, d->device.index());
+ return callSetOutputDevice(d, d->device.index());
}
return true;
}
@@ -261,7 +276,10 @@ void AudioOutputPrivate::setupBackendObject()
#ifndef QT_NO_PHONON_SETTINGSGROUP
// if the output device is not available and the device was not explicitly set
- if (!callSetOutputDevice(this, device) && !outputDeviceOverridden) {
+ // There is no need to set the output device initially if PA is used as
+ // we know it will not work (stream doesn't exist yet) and that this will be
+ // handled by _k_deviceChanged()
+ if (!PulseSupport::getInstance()->isActive() && !callSetOutputDevice(this, device) && !outputDeviceOverridden) {
// fall back in the preference list of output devices
QList<int> deviceList = GlobalConfig().audioOutputDeviceListFor(category, GlobalConfig::AdvancedDevicesFromSettings | GlobalConfig::HideUnavailableDevices);
if (deviceList.isEmpty()) {
@@ -306,10 +324,14 @@ void AudioOutputPrivate::_k_revertFallback()
void AudioOutputPrivate::_k_audioDeviceFailed()
{
+ if (PulseSupport::getInstance()->isActive())
+ return;
+
+#ifndef QT_NO_PHONON_SETTINGSGROUP
+
pDebug() << Q_FUNC_INFO;
// outputDeviceIndex identifies a failing device
// fall back in the preference list of output devices
-#ifndef QT_NO_PHONON_SETTINGSGROUP
const QList<int> deviceList = GlobalConfig().audioOutputDeviceListFor(category, GlobalConfig::AdvancedDevicesFromSettings | GlobalConfig::HideUnavailableDevices);
for (int i = 0; i < deviceList.count(); ++i) {
const int devIndex = deviceList.at(i);
@@ -331,8 +353,15 @@ void AudioOutputPrivate::_k_audioDeviceFailed()
void AudioOutputPrivate::_k_deviceListChanged()
{
- pDebug() << Q_FUNC_INFO;
+ if (PulseSupport::getInstance()->isActive())
+ return;
+
#ifndef QT_NO_PHONON_SETTINGSGROUP
+ pDebug() << Q_FUNC_INFO;
+ // Check to see if we have an override and do not change to a higher priority device if the overridden device is still present.
+ if (outputDeviceOverridden && device.property("available").toBool()) {
+ return;
+ }
// let's see if there's a usable device higher in the preference list
const QList<int> deviceList = GlobalConfig().audioOutputDeviceListFor(category, GlobalConfig::AdvancedDevicesFromSettings);
DeviceChangeType changeType = HigherPreferenceChange;
@@ -361,6 +390,36 @@ void AudioOutputPrivate::_k_deviceListChanged()
#endif //QT_NO_PHONON_SETTINGSGROUP
}
+void AudioOutputPrivate::_k_deviceChanged(QString inStreamUuid, int deviceIndex)
+{
+ // Note that this method is only used by PulseAudio at present.
+ if (inStreamUuid == streamUuid) {
+ // 1. Check to see if we are overridden. If we are, and devices do not match,
+ // then try and apply our own device as the output device.
+ // We only do this the first time
+ if (outputDeviceOverridden && forceMove) {
+ forceMove = false;
+ const AudioOutputDevice &currentDevice = AudioOutputDevice::fromIndex(deviceIndex);
+ if (currentDevice != device) {
+ if (!callSetOutputDevice(this, device)) {
+ // What to do if we are overridden and cannot change to our preferred device?
+ }
+ }
+ }
+ // 2. If we are not overridden, then we need to update our perception of what
+ // device we are using. If the devices do not match, something lower in the
+ // stack is overriding our preferences (e.g. a per-application stream preference,
+ // specific application move, priority list changed etc. etc.)
+ else if (!outputDeviceOverridden) {
+ const AudioOutputDevice &currentDevice = AudioOutputDevice::fromIndex(deviceIndex);
+ if (currentDevice != device) {
+ // The device is not what we think it is, so lets say what is happening.
+ handleAutomaticDeviceChange(currentDevice, SoundSystemChange);
+ }
+ }
+ }
+}
+
static struct
{
int first;
@@ -405,11 +464,33 @@ void AudioOutputPrivate::handleAutomaticDeviceChange(const AudioOutputDevice &de
g_lastFallback.second = 0;
}
break;
+ case SoundSystemChange:
+ {
+#ifndef QT_NO_PHONON_PLATFORMPLUGIN
+ if (device1.property("available").toBool()) {
+ const QString text = AudioOutput::tr("<html>Switching to the audio playback device <b>%1</b><br/>"
+ "which has higher preference or is specifically configured for this stream.</html>").arg(device2.name());
+ Platform::notification("AudioDeviceFallback", text,
+ QStringList(AudioOutput::tr("Revert back to device '%1'").arg(device1.name())),
+ q, SLOT(_k_revertFallback()));
+ } else {
+ const QString &text =
+ AudioOutput::tr("<html>The audio playback device <b>%1</b> does not work.<br/>"
+ "Falling back to <b>%2</b>.</html>").arg(device1.name()).arg(device2.name());
+ Platform::notification("AudioDeviceFallback", text);
+ }
+#endif //QT_NO_PHONON_PLATFORMPLUGIN
+ //outputDeviceOverridden = true;
+ g_lastFallback.first = 0;
+ g_lastFallback.second = 0;
+ }
+ break;
}
}
AudioOutputPrivate::~AudioOutputPrivate()
{
+ PulseSupport::getInstance()->clearStreamCache(streamUuid);
#ifndef QT_NO_DBUS
if (adaptor) {
emit adaptor->outputDestroyed();
diff --git a/src/3rdparty/phonon/phonon/audiooutput.h b/src/3rdparty/phonon/phonon/audiooutput.h
index 4edf135..513a863 100644
--- a/src/3rdparty/phonon/phonon/audiooutput.h
+++ b/src/3rdparty/phonon/phonon/audiooutput.h
@@ -169,6 +169,7 @@ namespace Phonon
Q_PRIVATE_SLOT(k_func(), void _k_revertFallback())
Q_PRIVATE_SLOT(k_func(), void _k_audioDeviceFailed())
Q_PRIVATE_SLOT(k_func(), void _k_deviceListChanged())
+ Q_PRIVATE_SLOT(k_func(), void _k_deviceChanged(QString streamUuid, int device))
};
} //namespace Phonon
diff --git a/src/3rdparty/phonon/phonon/audiooutput_p.h b/src/3rdparty/phonon/phonon/audiooutput_p.h
index fdee299..01dc48f 100644
--- a/src/3rdparty/phonon/phonon/audiooutput_p.h
+++ b/src/3rdparty/phonon/phonon/audiooutput_p.h
@@ -46,6 +46,7 @@ class AudioOutputPrivate : public AbstractAudioOutputPrivate
return 0;
}
void init(Phonon::Category c);
+ QString getStreamUuid();
protected:
@@ -58,6 +59,7 @@ class AudioOutputPrivate : public AbstractAudioOutputPrivate
#endif
deviceBeforeFallback(-1),
outputDeviceOverridden(false),
+ forceMove(false),
muted(false)
{
}
@@ -66,7 +68,8 @@ class AudioOutputPrivate : public AbstractAudioOutputPrivate
enum DeviceChangeType {
FallbackChange,
- HigherPreferenceChange
+ HigherPreferenceChange,
+ SoundSystemChange
};
void handleAutomaticDeviceChange(const AudioOutputDevice &newDev, DeviceChangeType type);
@@ -74,17 +77,20 @@ class AudioOutputPrivate : public AbstractAudioOutputPrivate
void _k_revertFallback();
void _k_audioDeviceFailed();
void _k_deviceListChanged();
+ void _k_deviceChanged(QString streamUuid, int deviceIndex);
private:
QString name;
Phonon::AudioOutputDevice device;
qreal volume;
+ QString streamUuid;
#ifndef QT_NO_DBUS
Phonon::AudioOutputAdaptor *adaptor;
#endif
Category category;
int deviceBeforeFallback;
bool outputDeviceOverridden;
+ bool forceMove;
bool muted;
};
} //namespace Phonon
diff --git a/src/3rdparty/phonon/phonon/audiooutputinterface.h b/src/3rdparty/phonon/phonon/audiooutputinterface.h
index 80ba11c..cce12b2 100644
--- a/src/3rdparty/phonon/phonon/audiooutputinterface.h
+++ b/src/3rdparty/phonon/phonon/audiooutputinterface.h
@@ -64,7 +64,7 @@ class AudioOutputInterface40
* A value of 0.0 means muted, 1.0 means unchanged, 2.0 means double voltage (i.e. all
* samples are multiplied by 2).
*
- * Everytime the volume in the backend changes it should emit volumeChanged(qreal), also
+ * Every time the volume in the backend changes it should emit volumeChanged(qreal), also
* inside this function.
*/
virtual void setVolume(qreal) = 0;
diff --git a/src/3rdparty/phonon/phonon/backendcapabilities.cpp b/src/3rdparty/phonon/phonon/backendcapabilities.cpp
index fbeb020..8dad589 100644
--- a/src/3rdparty/phonon/phonon/backendcapabilities.cpp
+++ b/src/3rdparty/phonon/phonon/backendcapabilities.cpp
@@ -26,7 +26,7 @@
#include "phonondefs_p.h"
#include "backendinterface.h"
#include "factory_p.h"
-#include "globalconfig_p.h"
+#include "globalconfig.h"
#include "globalstatic_p.h"
#include "objectdescription.h"
diff --git a/src/3rdparty/phonon/phonon/factory.cpp b/src/3rdparty/phonon/phonon/factory.cpp
index 9967c971..2785dff 100644
--- a/src/3rdparty/phonon/phonon/factory.cpp
+++ b/src/3rdparty/phonon/phonon/factory.cpp
@@ -134,30 +134,24 @@ bool FactoryPrivate::createBackend()
continue;
}
- QStringList plugins(dir.entryList(QDir::Files));
+ QStringList plugins(dir.entryList(QDir::Files));
#ifdef Q_OS_SYMBIAN
/* On Symbian OS we might have two plugins, one which uses Symbian
- * MMF framework("phonon_mmf"), and one which uses Real Networks's
+ * MMF framework("mmf"), and one which uses Real Networks's
* Helix("hxphonon"). We prefer the latter because it's more
* sophisticated, so we make sure the Helix backend is attempted
* to be loaded first, and the MMF backend is used for backup. */
{
-
- const int hxphonon = plugins.indexOf(QLatin1String("hxphonon"));
- if (hxphonon != -1)
- plugins.move(hxphonon, 0);
-
- // Code for debugging the MMF backend.
- if(hxphonon != -1) {
- qDebug() << "Found hxphonon backend and removed it from the lookup list.";
- plugins.removeAll(QLatin1String("hxphonon"));
- }
+ const int helix = plugins.indexOf(QLatin1String("hxphonon"));
+ if (helix != -1)
+ plugins.move(helix, 0);
}
#endif
- for (int i = 0; i < plugins.count(); ++i) {
- QPluginLoader pluginLoader(libPath + plugins.at(i));
+ const QStringList files = dir.entryList(QDir::Files);
+ for (int i = 0; i < files.count(); ++i) {
+ QPluginLoader pluginLoader(libPath + files.at(i));
if (!pluginLoader.load()) {
pDebug() << Q_FUNC_INFO << " load failed:"
<< pluginLoader.errorString();
@@ -350,6 +344,7 @@ FACTORY_IMPL(AudioOutput)
#ifndef QT_NO_PHONON_VIDEO
FACTORY_IMPL(VideoWidget)
#endif //QT_NO_PHONON_VIDEO
+FACTORY_IMPL(AudioDataOutput)
#undef FACTORY_IMPL
@@ -469,7 +464,7 @@ GET_STRING_PROPERTY(backendWebsite)
QObject *Factory::registerQObject(QObject *o)
{
if (o) {
- QObject::connect(o, SIGNAL(destroyed(QObject*)), globalFactory, SLOT(objectDestroyed(QObject*)), Qt::DirectConnection);
+ QObject::connect(o, SIGNAL(destroyed(QObject *)), globalFactory, SLOT(objectDestroyed(QObject *)), Qt::DirectConnection);
globalFactory->objects.append(o);
}
return o;
diff --git a/src/3rdparty/phonon/phonon/factory_p.h b/src/3rdparty/phonon/phonon/factory_p.h
index dee2b56..41b8c5b 100644
--- a/src/3rdparty/phonon/phonon/factory_p.h
+++ b/src/3rdparty/phonon/phonon/factory_p.h
@@ -122,6 +122,13 @@ namespace Factory
#endif //QT_NO_PHONON_VIDEO
/**
+ * Create a new backend object for a AudioDataOutput.
+ *
+ * \return a pointer to the AudioDataOutput the backend provides.
+ */
+ PHONON_EXPORT QObject *createAudioDataOutput(QObject *parent = 0);
+
+ /**
* \return a pointer to the backend interface.
*/
PHONON_EXPORT QObject *backend(bool createWhenNull = true);
diff --git a/src/3rdparty/phonon/phonon/globalconfig.cpp b/src/3rdparty/phonon/phonon/globalconfig.cpp
index 3b77a18..be751ce 100644
--- a/src/3rdparty/phonon/phonon/globalconfig.cpp
+++ b/src/3rdparty/phonon/phonon/globalconfig.cpp
@@ -20,6 +20,7 @@
*/
+#include "globalconfig.h"
#include "globalconfig_p.h"
#include "factory_p.h"
@@ -29,6 +30,7 @@
#include "backendinterface.h"
#include "qsettingsgroup_p.h"
#include "phononnamespace_p.h"
+#include "pulsesupport.h"
#include <QtCore/QList>
#include <QtCore/QVariant>
@@ -38,15 +40,18 @@ QT_BEGIN_NAMESPACE
namespace Phonon
{
+GlobalConfigPrivate::GlobalConfigPrivate() : config(QLatin1String("kde.org"), QLatin1String("libphonon"))
+{
+}
+
GlobalConfig::GlobalConfig()
-#ifndef QT_NO_SETTINGS
- : m_config(QLatin1String("kde.org"), QLatin1String("libphonon"))
-#endif //QT_NO_SETTINGS
+ : k_ptr(new GlobalConfigPrivate)
{
}
GlobalConfig::~GlobalConfig()
{
+ delete k_ptr;
}
enum WhatToFilter {
@@ -59,7 +64,11 @@ static void filter(ObjectDescriptionType type, BackendInterface *backendIface, Q
{
QMutableListIterator<int> it(*list);
while (it.hasNext()) {
- const QHash<QByteArray, QVariant> properties = backendIface->objectDescriptionProperties(type, it.next());
+ QHash<QByteArray, QVariant> properties;
+ if (backendIface)
+ properties = backendIface->objectDescriptionProperties(type, it.next());
+ else
+ properties = PulseSupport::getInstance()->objectDescriptionProperties(type, it.next());
QVariant var;
if (whatToFilter & FilterAdvancedDevices) {
var = properties.value("isAdvanced");
@@ -73,6 +82,7 @@ static void filter(ObjectDescriptionType type, BackendInterface *backendIface, Q
if (var.isValid() && var.toBool()) {
it.remove();
continue;
+#ifndef QT_NO_PHONON_SETTINGSGROUP
}
}
if (whatToFilter & FilterUnavailableDevices) {
@@ -85,9 +95,12 @@ static void filter(ObjectDescriptionType type, BackendInterface *backendIface, Q
}
}
-#ifndef QT_NO_PHONON_SETTINGSGROUP
-static QList<int> listSortedByConfig(const QSettingsGroup &backendConfig, Phonon::Category category, QList<int> &defaultList)
+static QList<int> sortDevicesByCategoryPriority(const GlobalConfig *config, const QSettingsGroup *backendConfig, ObjectDescriptionType type, Phonon::Category category, QList<int> &defaultList)
{
+ Q_ASSERT(config);
+ Q_ASSERT(backendConfig);
+ Q_ASSERT(type == AudioOutputDeviceType || type == AudioCaptureDeviceType);
+
if (defaultList.size() <= 1) {
// nothing to sort
return defaultList;
@@ -104,20 +117,26 @@ static QList<int> listSortedByConfig(const QSettingsGroup &backendConfig, Phonon
}
}
- QString categoryKey = QLatin1String("Category_") + QString::number(static_cast<int>(category));
- if (!backendConfig.hasKey(categoryKey)) {
- // no list in config for the given category
- categoryKey = QLatin1String("Category_") + QString::number(static_cast<int>(Phonon::NoCategory));
- if (!backendConfig.hasKey(categoryKey)) {
- // no list in config for NoCategory
- return defaultList;
+ QList<int> deviceList;
+ PulseSupport *pulse = PulseSupport::getInstance();
+ if (pulse->isActive()) {
+ deviceList = pulse->objectIndexesByCategory(type, category);
+ } else {
+ QString categoryKey = QLatin1String("Category_") + QString::number(static_cast<int>(category));
+ if (!backendConfig->hasKey(categoryKey)) {
+ // no list in config for the given category
+ categoryKey = QLatin1String("Category_") + QString::number(static_cast<int>(Phonon::NoCategory));
+ if (!backendConfig->hasKey(categoryKey)) {
+ // no list in config for NoCategory
+ return defaultList;
+ }
}
- }
- //Now the list from m_config
- QList<int> deviceList = backendConfig.value(categoryKey, QList<int>());
+ //Now the list from d->config
+ deviceList = backendConfig->value(categoryKey, QList<int>());
+ }
- //if there are devices in m_config that the backend doesn't report, remove them from the list
+ //if there are devices in d->config that the backend doesn't report, remove them from the list
QMutableListIterator<int> i(deviceList);
while (i.hasNext()) {
if (0 == defaultList.removeAll(i.next())) {
@@ -125,58 +144,198 @@ static QList<int> listSortedByConfig(const QSettingsGroup &backendConfig, Phonon
}
}
- //if the backend reports more devices that are not in m_config append them to the list
+ //if the backend reports more devices that are not in d->config append them to the list
deviceList += defaultList;
return deviceList;
}
+
+bool GlobalConfig::hideAdvancedDevices() const
+{
+ K_D(const GlobalConfig);
+ //The devices need to be stored independently for every backend
+ const QSettingsGroup generalGroup(&d->config, QLatin1String("General"));
+ return generalGroup.value(QLatin1String("HideAdvancedDevices"), true);
+}
+
+void GlobalConfig::setHideAdvancedDevices(bool hide)
+{
+ K_D(GlobalConfig);
+ QSettingsGroup generalGroup(&d->config, QLatin1String("General"));
+ generalGroup.setValue(QLatin1String("HideAdvancedDevices"), hide);
+}
+
+static bool isHiddenAudioOutputDevice(const GlobalConfig *config, int i)
+{
+ Q_ASSERT(config);
+
+ if (!config->hideAdvancedDevices())
+ return false;
+
+ AudioOutputDevice ad = AudioOutputDevice::fromIndex(i);
+ const QVariant var = ad.property("isAdvanced");
+ return (var.isValid() && var.toBool());
+}
+
+#ifndef QT_NO_PHONON_AUDIOCAPTURE
+static bool isHiddenAudioCaptureDevice(const GlobalConfig *config, int i)
+{
+ Q_ASSERT(config);
+
+ if (!config->hideAdvancedDevices())
+ return false;
+
+ AudioCaptureDevice ad = AudioCaptureDevice::fromIndex(i);
+ const QVariant var = ad.property("isAdvanced");
+ return (var.isValid() && var.toBool());
+}
+#endif
+
+static QList<int> reindexList(const GlobalConfig *config, Phonon::Category category, QList<int>newOrder, bool output)
+{
+ Q_ASSERT(config);
+#ifdef QT_NO_PHONON_AUDIOCAPTURE
+ Q_ASSERT(output);
+#endif
+
+ /*QString sb;
+ sb = QString("(Size %1)").arg(currentList.size());
+ foreach (int i, currentList)
+ sb += QString("%1, ").arg(i);
+ fprintf(stderr, "=== Reindex Current: %s\n", sb.toUtf8().constData());
+ sb = QString("(Size %1)").arg(newOrder.size());
+ foreach (int i, newOrder)
+ sb += QString("%1, ").arg(i);
+ fprintf(stderr, "=== Reindex Before : %s\n", sb.toUtf8().constData());*/
+
+ QList<int> currentList;
+ if (output)
+ currentList = config->audioOutputDeviceListFor(category, GlobalConfig::ShowUnavailableDevices|GlobalConfig::ShowAdvancedDevices);
+#ifndef QT_NO_PHONON_AUDIOCAPTURE
+ else
+ currentList = config->audioCaptureDeviceListFor(category, GlobalConfig::ShowUnavailableDevices|GlobalConfig::ShowAdvancedDevices);
+#endif
+
+ QList<int> newList;
+
+ foreach (int i, newOrder) {
+ int found = currentList.indexOf(i);
+ if (found < 0) {
+ // It's not in the list, so something is odd (e.g. client error). Ignore it.
+ continue;
+ }
+
+ // Iterate through the list from this point onward. If there are hidden devices
+ // immediately following, take them too.
+ newList.append(currentList.takeAt(found));
+ while (found < currentList.size()) {
+ bool hidden = true;
+ if (output)
+ hidden = isHiddenAudioOutputDevice(config, currentList.at(found));
+#ifndef QT_NO_PHONON_AUDIOCAPTURE
+ else
+ hidden = isHiddenAudioCaptureDevice(config, currentList.at(found));
+#endif
+
+ if (!hidden)
+ break;
+ newList.append(currentList.takeAt(found));
+ }
+ }
+
+ // If there are any devices left in.. just tack them on the end.
+ if (currentList.size() > 0)
+ newList += currentList;
+
+ /*sb = QString("(Size %1)").arg(newList.size());
+ foreach (int i, newList)
+ sb += QString("%1, ").arg(i);
+ fprintf(stderr, "=== Reindex After : %s\n", sb.toUtf8().constData());*/
+ return newList;
+}
+
+
+void GlobalConfig::setAudioOutputDeviceListFor(Phonon::Category category, QList<int> order)
+{
+ PulseSupport *pulse = PulseSupport::getInstance();
+ if (pulse->isActive()) {
+ pulse->setOutputDevicePriorityForCategory(category, order);
+ return;
+ }
+
+ K_D(GlobalConfig);
+ QSettingsGroup backendConfig(&d->config, QLatin1String("AudioOutputDevice")); // + Factory::identifier());
+
+ order = reindexList(this, category, order, true);
+
+ const QList<int> noCategoryOrder = audioOutputDeviceListFor(Phonon::NoCategory, ShowUnavailableDevices|ShowAdvancedDevices);
+ if (category != Phonon::NoCategory && order == noCategoryOrder) {
+ backendConfig.removeEntry(QLatin1String("Category_") + QString::number(category));
+ } else {
+ backendConfig.setValue(QLatin1String("Category_") + QString::number(category), order);
+ }
+}
#endif //QT_NO_PHONON_SETTINGSGROUP
#ifndef QT_NO_PHONON_SETTINGSGROUP
QList<int> GlobalConfig::audioOutputDeviceListFor(Phonon::Category category, int override) const
{
- //The devices need to be stored independently for every backend
- const QSettingsGroup backendConfig(&m_config, QLatin1String("AudioOutputDevice")); // + Factory::identifier());
- const QSettingsGroup generalGroup(&m_config, QLatin1String("General"));
- const bool hideAdvancedDevices = ((override & AdvancedDevicesFromSettings)
- ? generalGroup.value(QLatin1String("HideAdvancedDevices"), true)
+ K_D(const GlobalConfig);
+
+ const bool hide = ((override & AdvancedDevicesFromSettings)
+ ? hideAdvancedDevices()
: static_cast<bool>(override & HideAdvancedDevices));
QList<int> defaultList;
+
+ PulseSupport *pulse = PulseSupport::getInstance();
+ if (pulse->isActive()) {
+ defaultList = pulse->objectDescriptionIndexes(Phonon::AudioOutputDeviceType);
+ if (hide || (override & HideUnavailableDevices)) {
+ filter(AudioOutputDeviceType, NULL, &defaultList,
+ (hide ? FilterAdvancedDevices : 0)
+ | ((override & HideUnavailableDevices) ? FilterUnavailableDevices : 0)
+ );
+ }
+ } else {
+ BackendInterface *backendIface = qobject_cast<BackendInterface *>(Factory::backend());
+
#ifndef QT_NO_PHONON_PLATFORMPLUGIN
- if (PlatformPlugin *platformPlugin = Factory::platformPlugin()) {
- // the platform plugin lists the audio devices for the platform
- // this list already is in default order (as defined by the platform plugin)
- defaultList = platformPlugin->objectDescriptionIndexes(Phonon::AudioOutputDeviceType);
- if (hideAdvancedDevices) {
- QMutableListIterator<int> it(defaultList);
- while (it.hasNext()) {
- AudioOutputDevice objDesc = AudioOutputDevice::fromIndex(it.next());
- const QVariant var = objDesc.property("isAdvanced");
- if (var.isValid() && var.toBool()) {
- it.remove();
+ if (PlatformPlugin *platformPlugin = Factory::platformPlugin()) {
+ // the platform plugin lists the audio devices for the platform
+ // this list already is in default order (as defined by the platform plugin)
+ defaultList = platformPlugin->objectDescriptionIndexes(Phonon::AudioOutputDeviceType);
+ if (hide) {
+ QMutableListIterator<int> it(defaultList);
+ while (it.hasNext()) {
+ AudioOutputDevice objDesc = AudioOutputDevice::fromIndex(it.next());
+ const QVariant var = objDesc.property("isAdvanced");
+ if (var.isValid() && var.toBool()) {
+ it.remove();
+ }
}
}
}
- }
#endif //QT_NO_PHONON_PLATFORMPLUGIN
- // lookup the available devices directly from the backend (mostly for virtual devices)
- if (BackendInterface *backendIface = qobject_cast<BackendInterface *>(Factory::backend())) {
- // this list already is in default order (as defined by the backend)
- QList<int> list = backendIface->objectDescriptionIndexes(Phonon::AudioOutputDeviceType);
- if (hideAdvancedDevices || !defaultList.isEmpty() || (override & HideUnavailableDevices)) {
- filter(AudioOutputDeviceType, backendIface, &list,
- (hideAdvancedDevices ? FilterAdvancedDevices : 0)
- // the platform plugin already provided the hardware devices
- | (defaultList.isEmpty() ? 0 : FilterHardwareDevices)
- | ((override & HideUnavailableDevices) ? FilterUnavailableDevices : 0)
- );
+ // lookup the available devices directly from the backend
+ if (backendIface) {
+ // this list already is in default order (as defined by the backend)
+ QList<int> list = backendIface->objectDescriptionIndexes(Phonon::AudioOutputDeviceType);
+ if (hide || !defaultList.isEmpty() || (override & HideUnavailableDevices)) {
+ filter(AudioOutputDeviceType, backendIface, &list,
+ (hide ? FilterAdvancedDevices : 0)
+ // the platform plugin maybe already provided the hardware devices?
+ | (defaultList.isEmpty() ? 0 : FilterHardwareDevices)
+ | ((override & HideUnavailableDevices) ? FilterUnavailableDevices : 0)
+ );
+ }
+ defaultList += list;
}
- defaultList += list;
}
- return listSortedByConfig(backendConfig, category, defaultList);
+ const QSettingsGroup backendConfig(&d->config, QLatin1String("AudioOutputDevice")); // + Factory::identifier());
+ return sortDevicesByCategoryPriority(this, &backendConfig, AudioOutputDeviceType, category, defaultList);
}
#endif //QT_NO_PHONON_SETTINGSGROUP
int GlobalConfig::audioOutputDeviceFor(Phonon::Category category, int override) const
@@ -190,54 +349,89 @@ int GlobalConfig::audioOutputDeviceFor(Phonon::Category category, int override)
}
#ifndef QT_NO_PHONON_AUDIOCAPTURE
-QList<int> GlobalConfig::audioCaptureDeviceListFor(Phonon::Category category, int override) const
+void GlobalConfig::setAudioCaptureDeviceListFor(Phonon::Category category, QList<int> order)
{
#ifndef QT_NO_PHONON_SETTINGSGROUP
- //The devices need to be stored independently for every backend
- const QSettingsGroup backendConfig(&m_config, QLatin1String("AudioCaptureDevice")); // + Factory::identifier());
- const QSettingsGroup generalGroup(&m_config, QLatin1String("General"));
- const bool hideAdvancedDevices = ((override & AdvancedDevicesFromSettings)
- ? generalGroup.value(QLatin1String("HideAdvancedDevices"), true)
+ PulseSupport *pulse = PulseSupport::getInstance();
+ if (pulse->isActive()) {
+ pulse->setCaptureDevicePriorityForCategory(category, order);
+ return;
+ }
+
+ K_D(GlobalConfig);
+ QSettingsGroup backendConfig(&d->config, QLatin1String("AudioCaptureDevice")); // + Factory::identifier());
+
+ order = reindexList(this, category, order, false);
+
+ const QList<int> noCategoryOrder = audioCaptureDeviceListFor(Phonon::NoCategory, ShowUnavailableDevices|ShowAdvancedDevices);
+ if (category != Phonon::NoCategory && order == noCategoryOrder) {
+ backendConfig.removeEntry(QLatin1String("Category_") + QString::number(category));
+ } else {
+ backendConfig.setValue(QLatin1String("Category_") + QString::number(category), order);
+ }
+}
+
+QList<int> GlobalConfig::audioCaptureDeviceListFor(Phonon::Category category, int override) const
+{
+ K_D(const GlobalConfig);
+
+ const bool hide = ((override & AdvancedDevicesFromSettings)
+ ? hideAdvancedDevices()
: static_cast<bool>(override & HideAdvancedDevices));
QList<int> defaultList;
+
+ PulseSupport *pulse = PulseSupport::getInstance();
+ if (pulse->isActive()) {
+ defaultList = pulse->objectDescriptionIndexes(Phonon::AudioCaptureDeviceType);
+ if (hide || (override & HideUnavailableDevices)) {
+ filter(AudioCaptureDeviceType, NULL, &defaultList,
+ (hide ? FilterAdvancedDevices : 0)
+ | ((override & HideUnavailableDevices) ? FilterUnavailableDevices : 0)
+ );
+ }
+ } else {
+ BackendInterface *backendIface = qobject_cast<BackendInterface *>(Factory::backend());
+
#ifndef QT_NO_PHONON_PLATFORMPLUGIN
- if (PlatformPlugin *platformPlugin = Factory::platformPlugin()) {
- // the platform plugin lists the audio devices for the platform
- // this list already is in default order (as defined by the platform plugin)
- defaultList = platformPlugin->objectDescriptionIndexes(Phonon::AudioCaptureDeviceType);
- if (hideAdvancedDevices) {
- QMutableListIterator<int> it(defaultList);
- while (it.hasNext()) {
- AudioCaptureDevice objDesc = AudioCaptureDevice::fromIndex(it.next());
- const QVariant var = objDesc.property("isAdvanced");
- if (var.isValid() && var.toBool()) {
- it.remove();
+#else //QT_NO_SETTINGSGROUP
+ return QList<int>();
+#endif //QT_NO_SETTINGSGROUP
+ if (PlatformPlugin *platformPlugin = Factory::platformPlugin()) {
+ // the platform plugin lists the audio devices for the platform
+ // this list already is in default order (as defined by the platform plugin)
+ defaultList = platformPlugin->objectDescriptionIndexes(Phonon::AudioCaptureDeviceType);
+ if (hide) {
+ QMutableListIterator<int> it(defaultList);
+ while (it.hasNext()) {
+ AudioCaptureDevice objDesc = AudioCaptureDevice::fromIndex(it.next());
+ const QVariant var = objDesc.property("isAdvanced");
+ if (var.isValid() && var.toBool()) {
+ it.remove();
+ }
}
}
}
- }
#endif //QT_NO_PHONON_PLATFORMPLUGIN
- // lookup the available devices directly from the backend (mostly for virtual devices)
- if (BackendInterface *backendIface = qobject_cast<BackendInterface *>(Factory::backend())) {
- // this list already is in default order (as defined by the backend)
- QList<int> list = backendIface->objectDescriptionIndexes(Phonon::AudioCaptureDeviceType);
- if (hideAdvancedDevices || !defaultList.isEmpty() || (override & HideUnavailableDevices)) {
- filter(AudioCaptureDeviceType, backendIface, &list,
- (hideAdvancedDevices ? FilterAdvancedDevices : 0)
- // the platform plugin already provided the hardware devices
- | (defaultList.isEmpty() ? 0 : FilterHardwareDevices)
- | ((override & HideUnavailableDevices) ? FilterUnavailableDevices : 0)
- );
+ // lookup the available devices directly from the backend
+ if (backendIface) {
+ // this list already is in default order (as defined by the backend)
+ QList<int> list = backendIface->objectDescriptionIndexes(Phonon::AudioCaptureDeviceType);
+ if (hide || !defaultList.isEmpty() || (override & HideUnavailableDevices)) {
+ filter(AudioCaptureDeviceType, backendIface, &list,
+ (hide ? FilterAdvancedDevices : 0)
+ // the platform plugin maybe already provided the hardware devices?
+ | (defaultList.isEmpty() ? 0 : FilterHardwareDevices)
+ | ((override & HideUnavailableDevices) ? FilterUnavailableDevices : 0)
+ );
+ }
+ defaultList += list;
}
- defaultList += list;
}
- return listSortedByConfig(backendConfig, category, defaultList);
-#else //QT_NO_SETTINGSGROUP
- return QList<int>();
-#endif //QT_NO_SETTINGSGROUP
+ const QSettingsGroup backendConfig(&d->config, QLatin1String("AudioCaptureDevice")); // + Factory::identifier());
+ return sortDevicesByCategoryPriority(this, &backendConfig, AudioCaptureDeviceType, category, defaultList);
}
int GlobalConfig::audioCaptureDeviceFor(Phonon::Category category, int override) const
diff --git a/src/3rdparty/phonon/phonon/globalconfig.h b/src/3rdparty/phonon/phonon/globalconfig.h
new file mode 100644
index 0000000..5233c7b
--- /dev/null
+++ b/src/3rdparty/phonon/phonon/globalconfig.h
@@ -0,0 +1,71 @@
+/* This file is part of the KDE project
+Copyright (C) 2006-2008 Matthias Kretz <kretz@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), Nokia Corporation
+ (or its successors, if any) and the KDE Free Qt Foundation, which shall
+ act as a proxy defined in Section 6 of version 3 of the license.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#ifndef PHONON_GLOBALCONFIG_H
+#define PHONON_GLOBALCONFIG_H
+
+#include "phonon_export.h"
+#include "phononnamespace.h"
+#include "phonondefs.h"
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+namespace Phonon
+{
+ class GlobalConfigPrivate;
+
+ class PHONON_EXPORT GlobalConfig
+ {
+ K_DECLARE_PRIVATE(GlobalConfig)
+ public:
+ GlobalConfig();
+ virtual ~GlobalConfig();
+
+ enum DevicesToHideFlag {
+ ShowUnavailableDevices = 0,
+ ShowAdvancedDevices = 0,
+ HideAdvancedDevices = 1,
+ AdvancedDevicesFromSettings = 2,
+ HideUnavailableDevices = 4
+ };
+ bool hideAdvancedDevices() const;
+ void setHideAdvancedDevices(bool hide = true);
+ void setAudioOutputDeviceListFor(Phonon::Category category, QList<int> order);
+ QList<int> audioOutputDeviceListFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const;
+ int audioOutputDeviceFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const;
+
+#ifndef QT_NO_PHONON_AUDIOCAPTURE
+ void setAudioCaptureDeviceListFor(Phonon::Category category, QList<int> order);
+ QList<int> audioCaptureDeviceListFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const;
+ int audioCaptureDeviceFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const;
+#endif //QT_NO_PHONON_AUDIOCAPTURE
+
+ protected:
+ GlobalConfigPrivate *const k_ptr;
+ };
+} // namespace Phonon
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // PHONON_GLOBALCONFIG_H
diff --git a/src/3rdparty/phonon/phonon/globalconfig_p.h b/src/3rdparty/phonon/phonon/globalconfig_p.h
index ec70b6f..090ca6b 100644
--- a/src/3rdparty/phonon/phonon/globalconfig_p.h
+++ b/src/3rdparty/phonon/phonon/globalconfig_p.h
@@ -26,40 +26,19 @@ Copyright (C) 2006-2008 Matthias Kretz <kretz@kde.org>
#include <QtCore/QSettings>
#include "phonon_export.h"
-#include "phononnamespace.h"
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
namespace Phonon
{
- class PHONON_EXPORT GlobalConfig
+ class GlobalConfigPrivate
{
- public:
- GlobalConfig();
- virtual ~GlobalConfig();
+ public:
+ GlobalConfigPrivate();
+ virtual ~GlobalConfigPrivate() {}
- enum DevicesToHideFlag {
- ShowUnavailableDevices = 0,
- ShowAdvancedDevices = 0,
- HideAdvancedDevices = 1,
- AdvancedDevicesFromSettings = 2,
- HideUnavailableDevices = 4
- };
-#ifndef QT_NO_PHONON_SETTINGSGROUP
- QList<int> audioOutputDeviceListFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const;
-#endif //QT_NO_PHONON_SETTINGSGROUP
- int audioOutputDeviceFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const;
-
-#ifndef QT_NO_PHONON_AUDIOCAPTURE
- QList<int> audioCaptureDeviceListFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const;
- int audioCaptureDeviceFor(Phonon::Category category, int override = AdvancedDevicesFromSettings) const;
-#endif //QT_NO_PHONON_AUDIOCAPTURE
-
- protected:
-#ifndef QT_NO_SETTINGS
- QSettings m_config;
-#endif //QT_NO_SETTINGS
+ QSettings config;
};
} // namespace Phonon
diff --git a/src/3rdparty/phonon/phonon/mediaobject.cpp b/src/3rdparty/phonon/phonon/mediaobject.cpp
index 41e8dc2..13d303c 100644
--- a/src/3rdparty/phonon/phonon/mediaobject.cpp
+++ b/src/3rdparty/phonon/phonon/mediaobject.cpp
@@ -453,9 +453,9 @@ void MediaObjectPrivate::setupBackendObject()
//pDebug() << Q_FUNC_INFO;
#ifndef QT_NO_PHONON_ABSTRACTMEDIASTREAM
- QObject::connect(m_backendObject, SIGNAL(stateChanged(Phonon::State,Phonon::State)), q, SLOT(_k_stateChanged(Phonon::State,Phonon::State)));
+ QObject::connect(m_backendObject, SIGNAL(stateChanged(Phonon::State, Phonon::State)), q, SLOT(_k_stateChanged(Phonon::State, Phonon::State)));
#else
- QObject::connect(m_backendObject, SIGNAL(stateChanged(Phonon::State,Phonon::State)), q, SIGNAL(stateChanged(Phonon::State,Phonon::State)));
+ QObject::connect(m_backendObject, SIGNAL(stateChanged(Phonon::State, Phonon::State)), q, SIGNAL(stateChanged(Phonon::State, Phonon::State)));
#endif // QT_NO_PHONON_ABSTRACTMEDIASTREAM
QObject::connect(m_backendObject, SIGNAL(tick(qint64)), q, SIGNAL(tick(qint64)));
QObject::connect(m_backendObject, SIGNAL(seekableChanged(bool)), q, SIGNAL(seekableChanged(bool)));
@@ -467,10 +467,10 @@ void MediaObjectPrivate::setupBackendObject()
QObject::connect(m_backendObject, SIGNAL(aboutToFinish()), q, SLOT(_k_aboutToFinish()));
QObject::connect(m_backendObject, SIGNAL(prefinishMarkReached(qint32)), q, SIGNAL(prefinishMarkReached(qint32)));
QObject::connect(m_backendObject, SIGNAL(totalTimeChanged(qint64)), q, SIGNAL(totalTimeChanged(qint64)));
- QObject::connect(m_backendObject, SIGNAL(metaDataChanged(QMultiMap<QString,QString>)),
- q, SLOT(_k_metaDataChanged(QMultiMap<QString,QString>)));
- QObject::connect(m_backendObject, SIGNAL(currentSourceChanged(MediaSource)),
- q, SLOT(_k_currentSourceChanged(MediaSource)));
+ QObject::connect(m_backendObject, SIGNAL(metaDataChanged(const QMultiMap<QString, QString> &)),
+ q, SLOT(_k_metaDataChanged(const QMultiMap<QString, QString> &)));
+ QObject::connect(m_backendObject, SIGNAL(currentSourceChanged(const MediaSource&)),
+ q, SLOT(_k_currentSourceChanged(const MediaSource&)));
// set up attributes
pINTERFACE_CALL(setTickInterval(tickInterval));
diff --git a/src/3rdparty/phonon/phonon/objectdescription.cpp b/src/3rdparty/phonon/phonon/objectdescription.cpp
index e058b89..55e74b5 100644
--- a/src/3rdparty/phonon/phonon/objectdescription.cpp
+++ b/src/3rdparty/phonon/phonon/objectdescription.cpp
@@ -29,6 +29,7 @@
#include <QtCore/QStringList>
#include "backendinterface.h"
#include "platformplugin.h"
+#include "pulsesupport.h"
QT_BEGIN_NAMESPACE
@@ -108,27 +109,38 @@ bool ObjectDescriptionData::isValid() const
ObjectDescriptionData *ObjectDescriptionData::fromIndex(ObjectDescriptionType type, int index)
{
- // prefer to get the ObjectDescriptionData from the platform plugin for audio devices
+ bool is_audio_device = (AudioOutputDeviceType == type || AudioCaptureDeviceType == type);
+
+ PulseSupport *pulse = PulseSupport::getInstance();
+ if (is_audio_device && pulse->isActive()) {
+ QList<int> indexes = pulse->objectDescriptionIndexes(type);
+ if (indexes.contains(index)) {
+ QHash<QByteArray, QVariant> properties = pulse->objectDescriptionProperties(type, index);
+ return new ObjectDescriptionData(index, properties);
+ }
+ } else {
+ BackendInterface *iface = qobject_cast<BackendInterface *>(Factory::backend());
+
+ // prefer to get the ObjectDescriptionData from the platform plugin for audio devices
#ifndef QT_NO_PHONON_PLATFORMPLUGIN
- if (type == AudioOutputDeviceType || type == AudioCaptureDeviceType) {
- PlatformPlugin *platformPlugin = Factory::platformPlugin();
- if (platformPlugin) {
- QList<int> indexes = platformPlugin->objectDescriptionIndexes(type);
- if (indexes.contains(index)) {
- QHash<QByteArray, QVariant> properties = platformPlugin->objectDescriptionProperties(type, index);
- return new ObjectDescriptionData(index, properties);
+ if (is_audio_device) {
+ PlatformPlugin *platformPlugin = Factory::platformPlugin();
+ if (platformPlugin) {
+ QList<int> indexes = platformPlugin->objectDescriptionIndexes(type);
+ if (indexes.contains(index)) {
+ QHash<QByteArray, QVariant> properties = platformPlugin->objectDescriptionProperties(type, index);
+ return new ObjectDescriptionData(index, properties);
+ }
}
}
- }
#endif //QT_NO_PHONON_PLATFORMPLUGIN
- QObject *b = Factory::backend();
- BackendInterface *iface = qobject_cast<BackendInterface *>(b);
- if (iface) {
- QList<int> indexes = iface->objectDescriptionIndexes(type);
- if (indexes.contains(index)) {
- QHash<QByteArray, QVariant> properties = iface->objectDescriptionProperties(type, index);
- return new ObjectDescriptionData(index, properties);
+ if (iface) {
+ QList<int> indexes = iface->objectDescriptionIndexes(type);
+ if (indexes.contains(index)) {
+ QHash<QByteArray, QVariant> properties = iface->objectDescriptionProperties(type, index);
+ return new ObjectDescriptionData(index, properties);
+ }
}
}
return new ObjectDescriptionData(0); // invalid
diff --git a/src/3rdparty/phonon/phonon/objectdescriptionmodel.cpp b/src/3rdparty/phonon/phonon/objectdescriptionmodel.cpp
index bf5be6d..741a74c 100644
--- a/src/3rdparty/phonon/phonon/objectdescriptionmodel.cpp
+++ b/src/3rdparty/phonon/phonon/objectdescriptionmodel.cpp
@@ -362,6 +362,7 @@ QStringList ObjectDescriptionModelData::mimeTypes(ObjectDescriptionType type) co
return QStringList(QLatin1String("application/x-phonon-objectdescription") + QString::number(static_cast<int>(type)));
}
+#if !defined(Q_CC_MSVC) || _MSC_VER > 1300 || defined(Q_CC_INTEL) || defined(Q_CC_MINGW)
#define INSTANTIATE_META_FUNCTIONS(type) \
template const QMetaObject *ObjectDescriptionModel<type>::metaObject() const; \
template void *ObjectDescriptionModel<type>::qt_metacast(const char *)
@@ -371,6 +372,7 @@ INSTANTIATE_META_FUNCTIONS(AudioCaptureDeviceType);
INSTANTIATE_META_FUNCTIONS(EffectType);
INSTANTIATE_META_FUNCTIONS(AudioChannelType);
INSTANTIATE_META_FUNCTIONS(SubtitleType);
+#endif
/*INSTANTIATE_META_FUNCTIONS(VideoOutputDeviceType);
INSTANTIATE_META_FUNCTIONS(VideoCaptureDeviceType);
INSTANTIATE_META_FUNCTIONS(AudioCodecType);
diff --git a/src/3rdparty/phonon/phonon/path.cpp b/src/3rdparty/phonon/phonon/path.cpp
index 51c33b2..1c25b89 100644
--- a/src/3rdparty/phonon/phonon/path.cpp
+++ b/src/3rdparty/phonon/phonon/path.cpp
@@ -310,8 +310,8 @@ bool PathPrivate::executeTransaction( const QList<QObjectPair> &disconnections,
if (!transaction)
return false;
- QList<QObjectPair>::const_iterator it = disconnections.constBegin();
- for(;it != disconnections.constEnd();++it) {
+ QList<QObjectPair>::const_iterator it = disconnections.begin();
+ for(;it != disconnections.end();++it) {
const QObjectPair &pair = *it;
if (!backend->disconnectNodes(pair.first, pair.second)) {
@@ -327,8 +327,8 @@ bool PathPrivate::executeTransaction( const QList<QObjectPair> &disconnections,
}
}
- for(it = connections.constBegin(); it != connections.constEnd(); ++it) {
- const QObjectPair pair = *it;
+ for(it = connections.begin(); it != connections.end();++it) {
+ const QObjectPair &pair = *it;
if (!backend->connectNodes(pair.first, pair.second)) {
//Error: a connection failed
QList<QObjectPair>::const_iterator it2 = connections.begin();
diff --git a/src/3rdparty/phonon/phonon/phonondefs.h b/src/3rdparty/phonon/phonon/phonondefs.h
index 15a1815..765eb1c 100644
--- a/src/3rdparty/phonon/phonon/phonondefs.h
+++ b/src/3rdparty/phonon/phonon/phonondefs.h
@@ -29,6 +29,11 @@
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
+#ifdef PHONON_BACKEND_VERSION_4_4
+# ifndef PHONON_BACKEND_VERSION_4_3
+# define PHONON_BACKEND_VERSION_4_3
+# endif
+#endif
#ifdef PHONON_BACKEND_VERSION_4_3
# ifndef PHONON_BACKEND_VERSION_4_2
# define PHONON_BACKEND_VERSION_4_2
diff --git a/src/3rdparty/phonon/phonon/pulsesupport.cpp b/src/3rdparty/phonon/phonon/pulsesupport.cpp
new file mode 100644
index 0000000..642843f
--- /dev/null
+++ b/src/3rdparty/phonon/phonon/pulsesupport.cpp
@@ -0,0 +1,1040 @@
+/* This file is part of the KDE project
+ Copyright (C) 2009 Colin Guthrie <cguthrie@mandriva.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), Nokia Corporation
+ (or its successors, if any) and the KDE Free Qt Foundation, which shall
+ act as a proxy defined in Section 6 of version 3 of the license.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include <QtCore/QAbstractEventDispatcher>
+#include <QtCore/QEventLoop>
+#include <QtCore/QDebug>
+#include <QtCore/QStringList>
+
+#ifdef HAVE_PULSEAUDIO
+#include <glib.h>
+#include <pulse/pulseaudio.h>
+#include <pulse/xmalloc.h>
+#include <pulse/glib-mainloop.h>
+#ifdef HAVE_PULSEAUDIO_DEVICE_MANAGER
+# include <pulse/ext-device-manager.h>
+#endif
+#endif // HAVE_PULSEAUDIO
+
+#include "pulsesupport.h"
+
+QT_BEGIN_NAMESPACE
+
+namespace Phonon
+{
+
+static PulseSupport* s_instance = NULL;
+
+#ifdef HAVE_PULSEAUDIO
+/***
+* Prints a conditional debug message based on the current debug level
+* If obj is provided, classname and objectname will be printed as well
+*
+* see debugLevel()
+*/
+
+static int debugLevel() {
+ static int level = -1;
+ if (level < 1) {
+ level = 0;
+ QString pulseenv = qgetenv("PHONON_PULSEAUDIO_DEBUG");
+ int l = pulseenv.toInt();
+ if (l > 0)
+ level = (l > 2 ? 2 : l);
+ }
+ return level;
+}
+
+static void logMessage(const QString &message, int priority = 2, QObject *obj=0);
+static void logMessage(const QString &message, int priority, QObject *obj)
+{
+ if (debugLevel() > 0) {
+ QString output;
+ if (obj) {
+ // Strip away namespace from className
+ QString className(obj->metaObject()->className());
+ int nameLength = className.length() - className.lastIndexOf(':') - 1;
+ className = className.right(nameLength);
+ output.sprintf("%s %s (%s %p)", message.toLatin1().constData(),
+ obj->objectName().toLatin1().constData(),
+ className.toLatin1().constData(), obj);
+ }
+ else {
+ output = message;
+ }
+ if (priority <= debugLevel()) {
+ qDebug() << QString("PulseSupport(%1): %2").arg(priority).arg(output);
+ }
+ }
+}
+
+
+class AudioDevice
+{
+ public:
+ inline
+ AudioDevice(QString name, QString desc, QString icon, uint32_t index)
+ : pulseName(name), pulseIndex(index)
+ {
+ properties["name"] = desc;
+ properties["description"] = ""; // We don't have descriptions (well we do, but we use them as the name!)
+ properties["icon"] = icon;
+ properties["available"] = (index != PA_INVALID_INDEX);
+ properties["isAdvanced"] = false; // Nothing is advanced!
+ }
+
+ // Needed for QMap
+ inline AudioDevice() {}
+
+ QString pulseName;
+ uint32_t pulseIndex;
+ QHash<QByteArray, QVariant> properties;
+};
+bool operator!=(const AudioDevice &a, const AudioDevice &b)
+{
+ return !(a.pulseName == b.pulseName && a.properties == b.properties);
+}
+
+class PulseUserData
+{
+ public:
+ inline
+ PulseUserData()
+ {
+ }
+
+ QMap<QString, AudioDevice> newOutputDevices;
+ QMap<Phonon::Category, QMap<int, int> > newOutputDevicePriorities; // prio, device
+
+ QMap<QString, AudioDevice> newCaptureDevices;
+ QMap<Phonon::Category, QMap<int, int> > newCaptureDevicePriorities; // prio, device
+};
+
+static QMap<QString, Phonon::Category> s_roleCategoryMap;
+
+static bool s_pulseActive = false;
+
+static pa_glib_mainloop *s_mainloop = NULL;
+static pa_context *s_context = NULL;
+
+
+
+static int s_deviceIndexCounter = 0;
+
+static QMap<QString, int> s_outputDeviceIndexes;
+static QMap<int, AudioDevice> s_outputDevices;
+static QMap<Phonon::Category, QMap<int, int> > s_outputDevicePriorities; // prio, device
+static QMap<QString, uint32_t> s_outputStreamIndexMap;
+
+static QMap<QString, int> s_captureDeviceIndexes;
+static QMap<int, AudioDevice> s_captureDevices;
+static QMap<Phonon::Category, QMap<int, int> > s_captureDevicePriorities; // prio, device
+static QMap<QString, uint32_t> s_captureStreamIndexMap;
+
+static void createGenericDevices()
+{
+ // OK so we don't have the device manager extension, but we can show a single device and fake it.
+ int index;
+ s_outputDeviceIndexes.clear();
+ s_outputDevices.clear();
+ s_outputDevicePriorities.clear();
+ index = s_deviceIndexCounter++;
+ s_outputDeviceIndexes.insert("sink:default", index);
+ s_outputDevices.insert(index, AudioDevice("sink:default", QObject::tr("PulseAudio Sound Server").toUtf8(), "audio-backend-pulseaudio", 0));
+ for (int i = Phonon::NoCategory; i <= Phonon::LastCategory; ++i) {
+ Phonon::Category cat = static_cast<Phonon::Category>(i);
+ s_outputDevicePriorities[cat].insert(0, index);
+ }
+
+ s_captureDeviceIndexes.clear();
+ s_captureDevices.clear();
+ s_captureDevicePriorities.clear();
+ index = s_deviceIndexCounter++;
+ s_captureDeviceIndexes.insert("source:default", index);
+ s_captureDevices.insert(index, AudioDevice("source:default", QObject::tr("PulseAudio Sound Server").toUtf8(), "audio-backend-pulseaudio", 0));
+ for (int i = Phonon::NoCategory; i <= Phonon::LastCategory; ++i) {
+ Phonon::Category cat = static_cast<Phonon::Category>(i);
+ s_captureDevicePriorities[cat].insert(0, index);
+ }
+}
+
+#ifdef HAVE_PULSEAUDIO_DEVICE_MANAGER
+static void ext_device_manager_read_cb(pa_context *c, const pa_ext_device_manager_info *info, int eol, void *userdata) {
+ Q_ASSERT(c);
+ Q_ASSERT(userdata);
+
+ PulseUserData *u = reinterpret_cast<PulseUserData*>(userdata);
+
+ if (eol < 0) {
+ logMessage(QString("Failed to initialize device manager extension: %1").arg(pa_strerror(pa_context_errno(c))));
+ logMessage("Falling back to single device mode");
+ createGenericDevices();
+ delete u;
+
+ // If this is our probe phase, exit now
+ if (s_context != c)
+ pa_context_disconnect(c);
+
+ return;
+ }
+
+ if (eol) {
+ // We're done reading the data, so order it by priority and copy it into the
+ // static variables where it can then be accessed by those classes that need it.
+
+ QMap<QString, AudioDevice>::iterator newdev_it;
+
+ // Check for new output devices or things changing about known output devices.
+ bool output_changed = false;
+ for (newdev_it = u->newOutputDevices.begin(); newdev_it != u->newOutputDevices.end(); ++newdev_it) {
+ QString name = newdev_it.key();
+
+ // The name + index map is always written when a new device is added.
+ Q_ASSERT(s_outputDeviceIndexes.contains(name));
+
+ int index = s_outputDeviceIndexes[name];
+ if (!s_outputDevices.contains(index)) {
+ // This is a totally new device
+ output_changed = true;
+ logMessage(QString("Brand New Output Device Found."));
+ s_outputDevices.insert(index, *newdev_it);
+ } else if (s_outputDevices[index] != *newdev_it) {
+ // We have this device already, but is it different?
+ output_changed = true;
+ logMessage(QString("Change to Existing Output Device (may be Added/Removed or something else)"));
+ s_outputDevices.remove(index);
+ s_outputDevices.insert(index, *newdev_it);
+ }
+ }
+ // Go through the output devices we know about and see if any are no longer mentioned in the list.
+ QMutableMapIterator<QString, int> output_existing_it(s_outputDeviceIndexes);
+ while (output_existing_it.hasNext()) {
+ output_existing_it.next();
+ if (!u->newOutputDevices.contains(output_existing_it.key())) {
+ output_changed = true;
+ logMessage(QString("Output Device Completely Removed"));
+ s_outputDevices.remove(output_existing_it.value());
+ output_existing_it.remove();
+ }
+ }
+
+ // Check for new capture devices or things changing about known capture devices.
+ bool capture_changed = false;
+ for (newdev_it = u->newCaptureDevices.begin(); newdev_it != u->newCaptureDevices.end(); ++newdev_it) {
+ QString name = newdev_it.key();
+
+ // The name + index map is always written when a new device is added.
+ Q_ASSERT(s_captureDeviceIndexes.contains(name));
+
+ int index = s_captureDeviceIndexes[name];
+ if (!s_captureDevices.contains(index)) {
+ // This is a totally new device
+ capture_changed = true;
+ logMessage(QString("Brand New Capture Device Found."));
+ s_captureDevices.insert(index, *newdev_it);
+ } else if (s_captureDevices[index] != *newdev_it) {
+ // We have this device already, but is it different?
+ capture_changed = true;
+ logMessage(QString("Change to Existing Capture Device (may be Added/Removed or something else)"));
+ s_captureDevices.remove(index);
+ s_captureDevices.insert(index, *newdev_it);
+ }
+ }
+ // Go through the capture devices we know about and see if any are no longer mentioned in the list.
+ QMutableMapIterator<QString, int> capture_existing_it(s_captureDeviceIndexes);
+ while (capture_existing_it.hasNext()) {
+ capture_existing_it.next();
+ if (!u->newCaptureDevices.contains(capture_existing_it.key())) {
+ capture_changed = true;
+ logMessage(QString("Capture Device Completely Removed"));
+ s_captureDevices.remove(capture_existing_it.value());
+ capture_existing_it.remove();
+ }
+ }
+
+ // Just copy accross the new priority lists as we know they are valid
+ if (s_outputDevicePriorities != u->newOutputDevicePriorities) {
+ output_changed = true;
+ s_outputDevicePriorities = u->newOutputDevicePriorities;
+ }
+ if (s_captureDevicePriorities != u->newCaptureDevicePriorities) {
+ capture_changed = true;
+ s_captureDevicePriorities = u->newCaptureDevicePriorities;
+ }
+
+ if (s_instance) {
+ // This wont be emitted durring the connection probe phase
+ // which is intensional
+ if (output_changed)
+ s_instance->emitObjectDescriptionChanged(AudioOutputDeviceType);
+ if (capture_changed)
+ s_instance->emitObjectDescriptionChanged(AudioCaptureDeviceType);
+ }
+
+ // We can free the user data as we will not be called again.
+ delete u;
+
+ // Some debug
+ logMessage(QString("Output Device Priority List:"));
+ for (int i = Phonon::NoCategory; i <= Phonon::LastCategory; ++i) {
+ Phonon::Category cat = static_cast<Phonon::Category>(i);
+ if (s_outputDevicePriorities.contains(cat)) {
+ logMessage(QString(" Phonon Category %1").arg(cat));
+ int count = 0;
+ foreach (int j, s_outputDevicePriorities[cat]) {
+ QHash<QByteArray, QVariant> &props = s_outputDevices[j].properties;
+ logMessage(QString(" %1. %2 (Available: %3)").arg(++count).arg(props["name"].toString()).arg(props["available"].toBool()));
+ }
+ }
+ }
+ logMessage(QString("Capture Device Priority List:"));
+ for (int i = Phonon::NoCategory; i <= Phonon::LastCategory; ++i) {
+ Phonon::Category cat = static_cast<Phonon::Category>(i);
+ if (s_captureDevicePriorities.contains(cat)) {
+ logMessage(QString(" Phonon Category %1").arg(cat));
+ int count = 0;
+ foreach (int j, s_captureDevicePriorities[cat]) {
+ QHash<QByteArray, QVariant> &props = s_captureDevices[j].properties;
+ logMessage(QString(" %1. %2 (Available: %3)").arg(++count).arg(props["name"].toString()).arg(props["available"].toBool()));
+ }
+ }
+ }
+
+ // If this is our probe phase, exit now as we're finished reading
+ // our device info and can exit and reconnect
+ if (s_context != c)
+ pa_context_disconnect(c);
+ }
+
+ if (!info)
+ return;
+
+ Q_ASSERT(info->name);
+ Q_ASSERT(info->description);
+ Q_ASSERT(info->icon);
+
+ // QString wrapper
+ QString name(info->name);
+ int index;
+ QMap<Phonon::Category, QMap<int, int> > *new_prio_map_cats; // prio, device
+ QMap<QString, AudioDevice> *new_devices;
+
+ if (name.startsWith("sink:")) {
+ new_devices = &u->newOutputDevices;
+ new_prio_map_cats = &u->newOutputDevicePriorities;
+
+ if (s_outputDeviceIndexes.contains(name))
+ index = s_outputDeviceIndexes[name];
+ else
+ index = s_outputDeviceIndexes[name] = s_deviceIndexCounter++;
+ } else if (name.startsWith("source:")) {
+ new_devices = &u->newCaptureDevices;
+ new_prio_map_cats = &u->newCaptureDevicePriorities;
+
+ if (s_captureDeviceIndexes.contains(name))
+ index = s_captureDeviceIndexes[name];
+ else
+ index = s_captureDeviceIndexes[name] = s_deviceIndexCounter++;
+ } else {
+ // This indicates a bug in pulseaudio.
+ return;
+ }
+
+ // Add the new device itself.
+ new_devices->insert(name, AudioDevice(name, info->description, info->icon, info->index));
+
+ // For each role in the priority, map it to a phonon category and store the order.
+ for (uint32_t i = 0; i < info->n_role_priorities; ++i) {
+ pa_ext_device_manager_role_priority_info* role_prio = &info->role_priorities[i];
+ Q_ASSERT(role_prio->role);
+
+ if (s_roleCategoryMap.contains(role_prio->role)) {
+ Phonon::Category cat = s_roleCategoryMap[role_prio->role];
+
+ (*new_prio_map_cats)[cat].insert(role_prio->priority, index);
+ }
+ }
+}
+
+static void ext_device_manager_subscribe_cb(pa_context *c, void *) {
+ Q_ASSERT(c);
+
+ pa_operation *o;
+ PulseUserData *u = new PulseUserData;
+ if (!(o = pa_ext_device_manager_read(c, ext_device_manager_read_cb, u))) {
+ logMessage(QString("pa_ext_device_manager_read() failed."));
+ delete u;
+ return;
+ }
+ pa_operation_unref(o);
+}
+#endif
+
+void sink_input_cb(pa_context *c, const pa_sink_input_info *i, int eol, void *userdata) {
+ Q_UNUSED(userdata);
+ Q_ASSERT(c);
+
+ if (eol < 0) {
+ if (pa_context_errno(c) == PA_ERR_NOENTITY)
+ return;
+
+ logMessage(QString("Sink input callback failure"));
+ return;
+ }
+
+ if (eol > 0)
+ return;
+
+ Q_ASSERT(i);
+
+ // loop through (*i) and extract phonon->streamindex...
+ const char *t;
+ if ((t = pa_proplist_gets(i->proplist, "phonon.streamid"))) {
+ logMessage(QString("Found PulseAudio stream index %1 for Phonon Output Stream %2").arg(i->index).arg(t));
+ s_outputStreamIndexMap[QString(t)] = i->index;
+
+ // Find the sink's phonon index and notify whoever cares...
+ if (PA_INVALID_INDEX != i->sink) {
+ bool found = false;
+ int device;
+ QMap<int, AudioDevice>::iterator it;
+ for (it = s_outputDevices.begin(); it != s_outputDevices.end(); ++it) {
+ if ((*it).pulseIndex == i->sink) {
+ found = true;
+ device = it.key();
+ break;
+ }
+ }
+ if (found) {
+ // OK so we just emit our signal
+ logMessage(QString("Letting the rest of phonon know about this"));
+ s_instance->emitUsingDevice(QString(t), device);
+ }
+ }
+ }
+}
+
+void source_output_cb(pa_context *c, const pa_source_output_info *i, int eol, void *userdata) {
+ Q_UNUSED(userdata);
+ Q_ASSERT(c);
+
+ if (eol < 0) {
+ if (pa_context_errno(c) == PA_ERR_NOENTITY)
+ return;
+
+ logMessage(QString("Source output callback failure"));
+ return;
+ }
+
+ if (eol > 0)
+ return;
+
+ Q_ASSERT(i);
+
+ // loop through (*i) and extract phonon->streamindex...
+ const char *t;
+ if ((t = pa_proplist_gets(i->proplist, "phonon.streamid"))) {
+ logMessage(QString("Found PulseAudio stream index %1 for Phonon Capture Stream %2").arg(i->index).arg(t));
+ s_captureStreamIndexMap[QString(t)] = i->index;
+
+ // Find the source's phonon index and notify whoever cares...
+ if (PA_INVALID_INDEX != i->source) {
+ bool found = false;
+ int device;
+ QMap<int, AudioDevice>::iterator it;
+ for (it = s_captureDevices.begin(); it != s_captureDevices.end(); ++it) {
+ if ((*it).pulseIndex == i->source) {
+ found = true;
+ device = it.key();
+ break;
+ }
+ }
+ if (found) {
+ // OK so we just emit our signal
+ logMessage(QString("Letting the rest of phonon know about this"));
+ s_instance->emitUsingDevice(QString(t), device);
+ }
+ }
+ }
+}
+
+static void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, uint32_t index, void *userdata) {
+ Q_UNUSED(userdata);
+
+ switch (t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) {
+ case PA_SUBSCRIPTION_EVENT_SINK_INPUT:
+ if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) {
+ QString phononid = s_outputStreamIndexMap.key(index);
+ if (!phononid.isEmpty()) {
+ if (s_outputStreamIndexMap.contains(phononid)) {
+ logMessage(QString("Phonon Output Stream %1 is gone at the PA end. Marking it as invalid in our cache as we may reuse it.").arg(phononid));
+ s_outputStreamIndexMap[phononid] = PA_INVALID_INDEX;
+ } else {
+ logMessage(QString("Removing Phonon Output Stream %1 (it's gone!)").arg(phononid));
+ s_outputStreamIndexMap.remove(phononid);
+ }
+ }
+ } else {
+ pa_operation *o;
+ if (!(o = pa_context_get_sink_input_info(c, index, sink_input_cb, NULL))) {
+ logMessage(QString("pa_context_get_sink_input_info() failed"));
+ return;
+ }
+ pa_operation_unref(o);
+ }
+ break;
+
+ case PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT:
+ if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) {
+ QString phononid = s_captureStreamIndexMap.key(index);
+ if (!phononid.isEmpty()) {
+ if (s_captureStreamIndexMap.contains(phononid)) {
+ logMessage(QString("Phonon Capture Stream %1 is gone at the PA end. Marking it as invalid in our cache as we may reuse it.").arg(phononid));
+ s_captureStreamIndexMap[phononid] = PA_INVALID_INDEX;
+ } else {
+ logMessage(QString("Removing Phonon Capture Stream %1 (it's gone!)").arg(phononid));
+ s_captureStreamIndexMap.remove(phononid);
+ }
+ }
+ } else {
+ pa_operation *o;
+ if (!(o = pa_context_get_source_output_info(c, index, source_output_cb, NULL))) {
+ logMessage(QString("pa_context_get_sink_input_info() failed"));
+ return;
+ }
+ pa_operation_unref(o);
+ }
+ break;
+ }
+}
+
+
+static const char* statename(pa_context_state_t state)
+{
+ switch (state)
+ {
+ case PA_CONTEXT_UNCONNECTED: return "Unconnected";
+ case PA_CONTEXT_CONNECTING: return "Connecting";
+ case PA_CONTEXT_AUTHORIZING: return "Authorizing";
+ case PA_CONTEXT_SETTING_NAME: return "Setting Name";
+ case PA_CONTEXT_READY: return "Ready";
+ case PA_CONTEXT_FAILED: return "Failed";
+ case PA_CONTEXT_TERMINATED: return "Terminated";
+ }
+
+ static QString unknown;
+ unknown = QString("Unknown state: %0").arg(state);
+ return unknown.toAscii().constData();
+}
+
+static void context_state_callback(pa_context *c, void *)
+{
+ Q_ASSERT(c);
+
+ logMessage(QString("context_state_callback %1").arg(statename(pa_context_get_state(c))));
+ pa_context_state_t state = pa_context_get_state(c);
+ if (state == PA_CONTEXT_READY) {
+ // We've connected to PA, so it is active
+ s_pulseActive = true;
+
+ // Attempt to load things up
+ pa_operation *o;
+
+ // 1. Register for the stream changes (except during probe)
+ if (s_context == c) {
+ pa_context_set_subscribe_callback(c, subscribe_cb, NULL);
+
+ if (!(o = pa_context_subscribe(c, (pa_subscription_mask_t)
+ (PA_SUBSCRIPTION_MASK_SINK_INPUT|
+ PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT), NULL, NULL))) {
+ logMessage(QString("pa_context_subscribe() failed"));
+ return;
+ }
+ pa_operation_unref(o);
+ }
+
+#ifdef HAVE_PULSEAUDIO_DEVICE_MANAGER
+ // 2a. Attempt to initialise Device Manager info (except during probe)
+ if (s_context == c) {
+ pa_ext_device_manager_set_subscribe_cb(c, ext_device_manager_subscribe_cb, NULL);
+ if (!(o = pa_ext_device_manager_subscribe(c, 1, NULL, NULL))) {
+ logMessage(QString("pa_ext_device_manager_subscribe() failed"));
+ return;
+ }
+ pa_operation_unref(o);
+ }
+
+ // 3. Attempt to read info from Device Manager
+ PulseUserData *u = new PulseUserData;
+ if (!(o = pa_ext_device_manager_read(c, ext_device_manager_read_cb, u))) {
+ logMessage(QString("pa_ext_device_manager_read() failed. Attempting to continue without device manager support"));
+ createGenericDevices();
+ delete u;
+
+ // If this is our probe phase, exit immediately
+ if (s_context != c)
+ pa_context_disconnect(c);
+
+ return;
+ }
+ pa_operation_unref(o);
+
+#else
+ // If we know do not have Device Manager support, we just create our dummy devices now
+ createGenericDevices();
+
+ // If this is our probe phase, exit immediately
+ if (s_context != c)
+ pa_context_disconnect(c);
+#endif
+ } else if (!PA_CONTEXT_IS_GOOD(state)) {
+ /// @todo Deal with reconnection...
+ //logMessage("Connection to PulseAudio lost");
+
+ // If this is our probe phase, exit our context immediately
+ if (s_context != c)
+ pa_context_disconnect(c);
+ }
+}
+#endif // HAVE_PULSEAUDIO
+
+
+PulseSupport* PulseSupport::getInstance()
+{
+ if (NULL == s_instance) {
+ s_instance = new PulseSupport();
+ }
+ return s_instance;
+}
+
+void PulseSupport::shutdown()
+{
+ if (NULL != s_instance) {
+ delete s_instance;
+ s_instance = NULL;
+ }
+}
+
+PulseSupport::PulseSupport()
+ : QObject(), mEnabled(false)
+{
+#ifdef HAVE_PULSEAUDIO
+ // Initialise our map (is there a better way to do this?)
+ s_roleCategoryMap["none"] = Phonon::NoCategory;
+ s_roleCategoryMap["video"] = Phonon::VideoCategory;
+ s_roleCategoryMap["music"] = Phonon::MusicCategory;
+ s_roleCategoryMap["game"] = Phonon::GameCategory;
+ s_roleCategoryMap["event"] = Phonon::NotificationCategory;
+ s_roleCategoryMap["phone"] = Phonon::CommunicationCategory;
+ //s_roleCategoryMap["animation"]; // No Mapping
+ //s_roleCategoryMap["production"]; // No Mapping
+ s_roleCategoryMap["a11y"] = Phonon::AccessibilityCategory;
+
+ // To allow for easy debugging, give an easy way to disable this pulseaudio check
+ QString pulseenv = qgetenv("PHONON_PULSEAUDIO_DISABLE");
+ if (pulseenv.toInt()) {
+ logMessage("PulseAudio support disabled: PHONON_PULSEAUDIO_DISABLE is set");
+ return;
+ }
+
+ // We require a glib event loop
+ if (QLatin1String(QAbstractEventDispatcher::instance()->metaObject()->className())
+ != "QGuiEventDispatcherGlib") {
+ logMessage("Disabling PulseAudio integration for lack of GLib event loop.");
+ return;
+ }
+
+ // First of all conenct to PA via simple/blocking means and if that succeeds,
+ // use a fully async integrated mainloop method to connect and get proper support.
+ pa_mainloop *p_test_mainloop;
+ if (!(p_test_mainloop = pa_mainloop_new())) {
+ logMessage("PulseAudio support disabled: Unable to create mainloop");
+ return;
+ }
+
+ pa_context *p_test_context;
+ if (!(p_test_context = pa_context_new(pa_mainloop_get_api(p_test_mainloop), "libphonon-probe"))) {
+ logMessage("PulseAudio support disabled: Unable to create context");
+ pa_mainloop_free(p_test_mainloop);
+ return;
+ }
+
+ logMessage("Probing for PulseAudio...");
+ // (cg) Convert to PA_CONTEXT_NOFLAGS when PulseAudio 0.9.19 is required
+ if (pa_context_connect(p_test_context, NULL, static_cast<pa_context_flags_t>(0), NULL) < 0) {
+ logMessage(QString("PulseAudio support disabled: %1").arg(pa_strerror(pa_context_errno(p_test_context))));
+ pa_context_disconnect(p_test_context);
+ pa_context_unref(p_test_context);
+ pa_mainloop_free(p_test_mainloop);
+ return;
+ }
+
+ pa_context_set_state_callback(p_test_context, &context_state_callback, NULL);
+ for (;;) {
+ pa_mainloop_iterate(p_test_mainloop, 1, NULL);
+
+ if (!PA_CONTEXT_IS_GOOD(pa_context_get_state(p_test_context))) {
+ logMessage("PulseAudio probe complete.");
+ break;
+ }
+ }
+ pa_context_disconnect(p_test_context);
+ pa_context_unref(p_test_context);
+ pa_mainloop_free(p_test_mainloop);
+
+ if (!s_pulseActive) {
+ logMessage("PulseAudio support is not available.");
+ return;
+ }
+
+ // If we're still here, PA is available.
+ logMessage("PulseAudio support enabled");
+
+ // Now we connect for real using a proper main loop that we can forget
+ // all about processing.
+ s_mainloop = pa_glib_mainloop_new(NULL);
+ Q_ASSERT(s_mainloop);
+ pa_mainloop_api *api = pa_glib_mainloop_get_api(s_mainloop);
+
+ s_context = pa_context_new(api, "libphonon");
+ // (cg) Convert to PA_CONTEXT_NOFLAGS when PulseAudio 0.9.19 is required
+ if (pa_context_connect(s_context, NULL, static_cast<pa_context_flags_t>(0), 0) >= 0)
+ pa_context_set_state_callback(s_context, &context_state_callback, NULL);
+#endif
+}
+
+PulseSupport::~PulseSupport()
+{
+#ifdef HAVE_PULSEAUDIO
+ if (s_context) {
+ pa_context_disconnect(s_context);
+ s_context = NULL;
+ }
+
+ if (s_mainloop) {
+ pa_glib_mainloop_free(s_mainloop);
+ s_mainloop = NULL;
+ }
+#endif
+}
+
+bool PulseSupport::isActive()
+{
+#ifdef HAVE_PULSEAUDIO
+ return mEnabled && s_pulseActive;
+#else
+ return false;
+#endif
+}
+
+void PulseSupport::enable(bool enabled)
+{
+ mEnabled = enabled;
+}
+
+QList<int> PulseSupport::objectDescriptionIndexes(ObjectDescriptionType type) const
+{
+ QList<int> list;
+
+ if (type != AudioOutputDeviceType && type != AudioCaptureDeviceType)
+ return list;
+
+#ifdef HAVE_PULSEAUDIO
+ if (s_pulseActive) {
+ switch (type) {
+
+ case AudioOutputDeviceType: {
+ QMap<QString, int>::iterator it;
+ for (it = s_outputDeviceIndexes.begin(); it != s_outputDeviceIndexes.end(); ++it) {
+ list.append(*it);
+ }
+ break;
+ }
+ case AudioCaptureDeviceType: {
+ QMap<QString, int>::iterator it;
+ for (it = s_captureDeviceIndexes.begin(); it != s_captureDeviceIndexes.end(); ++it) {
+ list.append(*it);
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ }
+#endif
+
+ return list;
+}
+
+QHash<QByteArray, QVariant> PulseSupport::objectDescriptionProperties(ObjectDescriptionType type, int index) const
+{
+ QHash<QByteArray, QVariant> ret;
+
+ if (type != AudioOutputDeviceType && type != AudioCaptureDeviceType)
+ return ret;
+
+#ifndef HAVE_PULSEAUDIO
+ Q_UNUSED(index);
+#else
+ if (s_pulseActive) {
+ switch (type) {
+
+ case AudioOutputDeviceType:
+ Q_ASSERT(s_outputDevices.contains(index));
+ ret = s_outputDevices[index].properties;
+ break;
+
+ case AudioCaptureDeviceType:
+ Q_ASSERT(s_captureDevices.contains(index));
+ ret = s_captureDevices[index].properties;
+ break;
+
+ default:
+ break;
+ }
+ }
+#endif
+
+ return ret;
+}
+
+QList<int> PulseSupport::objectIndexesByCategory(ObjectDescriptionType type, Category category) const
+{
+ QList<int> ret;
+
+ if (type != AudioOutputDeviceType && type != AudioCaptureDeviceType)
+ return ret;
+
+#ifndef HAVE_PULSEAUDIO
+ Q_UNUSED(category);
+#else
+ if (s_pulseActive) {
+ switch (type) {
+
+ case AudioOutputDeviceType:
+ if (s_outputDevicePriorities.contains(category))
+ ret = s_outputDevicePriorities[category].values();
+ break;
+
+ case AudioCaptureDeviceType:
+ if (s_captureDevicePriorities.contains(category))
+ ret = s_captureDevicePriorities[category].values();
+ break;
+
+ default:
+ break;
+ }
+ }
+#endif
+
+ return ret;
+}
+
+#ifdef HAVE_PULSEAUDIO
+static void setDevicePriority(Category category, QStringList list)
+{
+ QString role = s_roleCategoryMap.key(category);
+ if (role.isEmpty())
+ return;
+
+ logMessage(QString("Reindexing %1: %2").arg(role).arg(list.join(", ")));
+
+ char **devices;
+ devices = pa_xnew(char *, list.size()+1);
+ int i = 0;
+ foreach (QString str, list) {
+ devices[i++] = pa_xstrdup(str.toUtf8().constData());
+ }
+ devices[list.size()] = NULL;
+
+#ifdef HAVE_PULSEAUDIO_DEVICE_MANAGER
+ pa_operation *o;
+ if (!(o = pa_ext_device_manager_reorder_devices_for_role(s_context, role.toUtf8().constData(), (const char**)devices, NULL, NULL)))
+ logMessage(QString("pa_ext_device_manager_reorder_devices_for_role() failed"));
+ else
+ pa_operation_unref(o);
+#endif
+
+ for (i = 0; i < list.size(); ++i)
+ pa_xfree(devices[i]);
+ pa_xfree(devices);
+}
+#endif
+
+void PulseSupport::setOutputDevicePriorityForCategory(Category category, QList<int> order)
+{
+#ifndef HAVE_PULSEAUDIO
+ Q_UNUSED(category);
+ Q_UNUSED(order);
+#else
+ QStringList list;
+ QList<int>::iterator it;
+
+ for (it = order.begin(); it != order.end(); ++it) {
+ if (s_outputDevices.contains(*it)) {
+ list << s_outputDeviceIndexes.key(*it);
+ }
+ }
+ setDevicePriority(category, list);
+#endif
+}
+
+void PulseSupport::setCaptureDevicePriorityForCategory(Category category, QList<int> order)
+{
+#ifndef HAVE_PULSEAUDIO
+ Q_UNUSED(category);
+ Q_UNUSED(order);
+#else
+ QStringList list;
+ QList<int>::iterator it;
+
+ for (it = order.begin(); it != order.end(); ++it) {
+ if (s_captureDevices.contains(*it)) {
+ list << s_captureDeviceIndexes.key(*it);
+ }
+ }
+ setDevicePriority(category, list);
+#endif
+}
+
+void PulseSupport::setStreamPropList(Category category, QString streamUuid)
+{
+#ifndef HAVE_PULSEAUDIO
+ Q_UNUSED(category);
+ Q_UNUSED(streamUuid);
+#else
+ QString role = s_roleCategoryMap.key(category);
+ if (role.isEmpty())
+ return;
+
+ logMessage(QString("Setting role to %1 for streamindex %2").arg(role).arg(streamUuid));
+ setenv("PULSE_PROP_media.role", role.toLatin1().constData(), 1);
+ setenv("PULSE_PROP_phonon.streamid", streamUuid.toLatin1().constData(), 1);
+#endif
+}
+
+void PulseSupport::emitObjectDescriptionChanged(ObjectDescriptionType type)
+{
+ emit objectDescriptionChanged(type);
+}
+
+void PulseSupport::emitUsingDevice(QString streamUuid, int device)
+{
+ emit usingDevice(streamUuid, device);
+}
+
+bool PulseSupport::setOutputDevice(QString streamUuid, int device) {
+#ifndef HAVE_PULSEAUDIO
+ Q_UNUSED(streamUuid);
+ Q_UNUSED(device);
+ return false;
+#else
+ if (s_outputDevices.size() < 2)
+ return true;
+
+ if (!s_outputDevices.contains(device)) {
+ logMessage(QString("Attempting to set Output Device for invalid device id %1.").arg(device));
+ return false;
+ }
+ const QVariant var = s_outputDevices[device].properties["name"];
+ logMessage(QString("Attempting to set Output Device to '%1' for Output Stream %2").arg(var.toString()).arg(streamUuid));
+
+ // Attempt to look up the pulse stream index.
+ if (s_outputStreamIndexMap.contains(streamUuid) && s_outputStreamIndexMap[streamUuid] != PA_INVALID_INDEX) {
+ logMessage(QString("... Found in map. Moving now"));
+
+ uint32_t pulse_device_index = s_outputDevices[device].pulseIndex;
+ uint32_t pulse_stream_index = s_outputStreamIndexMap[streamUuid];
+
+ logMessage(QString("Moving Pulse Sink Input %1 to '%2' (Pulse Sink %3)").arg(pulse_stream_index).arg(var.toString()).arg(pulse_device_index));
+
+ /// @todo Find a way to move the stream without saving it... We don't want to pollute the stream restore db.
+ pa_operation* o;
+ if (!(o = pa_context_move_sink_input_by_index(s_context, pulse_stream_index, pulse_device_index, NULL, NULL))) {
+ logMessage(QString("pa_context_move_sink_input_by_index() failed"));
+ return false;
+ }
+ pa_operation_unref(o);
+ } else {
+ logMessage(QString("... Not found in map. We will be notified of the device when the stream appears and we can process any moves needed then"));
+ }
+ return true;
+#endif
+}
+
+bool PulseSupport::setCaptureDevice(QString streamUuid, int device) {
+#ifndef HAVE_PULSEAUDIO
+ Q_UNUSED(streamUuid);
+ Q_UNUSED(device);
+ return false;
+#else
+ if (s_captureDevices.size() < 2)
+ return true;
+
+ if (!s_captureDevices.contains(device)) {
+ logMessage(QString("Attempting to set Capture Device for invalid device id %1.").arg(device));
+ return false;
+ }
+ const QVariant var = s_captureDevices[device].properties["name"];
+ logMessage(QString("Attempting to set Capture Device to '%1' for Capture Stream %2").arg(var.toString()).arg(streamUuid));
+
+ // Attempt to look up the pulse stream index.
+ if (s_captureStreamIndexMap.contains(streamUuid) && s_captureStreamIndexMap[streamUuid] == PA_INVALID_INDEX) {
+ logMessage(QString("... Found in map. Moving now"));
+
+ uint32_t pulse_device_index = s_captureDevices[device].pulseIndex;
+ uint32_t pulse_stream_index = s_captureStreamIndexMap[streamUuid];
+
+ logMessage(QString("Moving Pulse Source Output %1 to '%2' (Pulse Sink %3)").arg(pulse_stream_index).arg(var.toString()).arg(pulse_device_index));
+
+ /// @todo Find a way to move the stream without saving it... We don't want to pollute the stream restore db.
+ pa_operation* o;
+ if (!(o = pa_context_move_source_output_by_index(s_context, pulse_stream_index, pulse_device_index, NULL, NULL))) {
+ logMessage(QString("pa_context_move_source_output_by_index() failed"));
+ return false;
+ }
+ pa_operation_unref(o);
+ } else {
+ logMessage(QString("... Not found in map. We will be notified of the device when the stream appears and we can process any moves needed then"));
+ }
+ return true;
+#endif
+}
+
+void PulseSupport::clearStreamCache(QString streamUuid) {
+#ifndef HAVE_PULSEAUDIO
+ Q_UNUSED(streamUuid);
+ return;
+#else
+ logMessage(QString("Clearing stream cache for stream %1").arg(streamUuid));
+ s_outputStreamIndexMap.remove(streamUuid);
+ s_captureStreamIndexMap.remove(streamUuid);
+#endif
+}
+
+} // namespace Phonon
+
+QT_END_NAMESPACE
+
+#include "moc_pulsesupport.cpp"
+
+// vim: sw=4 ts=4
diff --git a/src/3rdparty/phonon/phonon/pulsesupport.h b/src/3rdparty/phonon/phonon/pulsesupport.h
new file mode 100644
index 0000000..c38bece
--- /dev/null
+++ b/src/3rdparty/phonon/phonon/pulsesupport.h
@@ -0,0 +1,78 @@
+/* This file is part of the KDE project
+ Copyright (C) 2009 Colin Guthrie <cguthrie@mandriva.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), Nokia Corporation
+ (or its successors, if any) and the KDE Free Qt Foundation, which shall
+ act as a proxy defined in Section 6 of version 3 of the license.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#ifndef PHONON_PULSESUPPORT_H
+#define PHONON_PULSESUPPORT_H
+
+#include "phonon_export.h"
+#include "phononnamespace.h"
+#include "objectdescription.h"
+
+#include <QtCore/QtGlobal>
+#include <QtCore/QSet>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+namespace Phonon
+{
+ class PHONON_EXPORT PulseSupport : public QObject
+ {
+ Q_OBJECT
+ public:
+ static PulseSupport* getInstance();
+ static void shutdown();
+
+ bool isActive();
+ void enable(bool enabled = true);
+
+ QList<int> objectDescriptionIndexes(ObjectDescriptionType type) const;
+ QHash<QByteArray, QVariant> objectDescriptionProperties(ObjectDescriptionType type, int index) const;
+ QList<int> objectIndexesByCategory(ObjectDescriptionType type, Category category) const;
+
+ void setOutputDevicePriorityForCategory(Category category, QList<int> order);
+ void setCaptureDevicePriorityForCategory(Category category, QList<int> order);
+
+ void setStreamPropList(Category category, QString streamUuid);
+ void emitObjectDescriptionChanged(ObjectDescriptionType);
+ void emitUsingDevice(QString streamUuid, int device);
+
+ bool setOutputDevice(QString streamUuid, int device);
+ bool setCaptureDevice(QString streamUuid, int device);
+ void clearStreamCache(QString streamUuid);
+
+ signals:
+ void objectDescriptionChanged(ObjectDescriptionType);
+ void usingDevice(QString streamUuid, int device);
+
+ private:
+ PulseSupport();
+ ~PulseSupport();
+
+ bool mEnabled;
+ };
+} // namespace Phonon
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // PHONON_PULSESUPPORT_H
diff --git a/src/3rdparty/phonon/phonon/seekslider.cpp b/src/3rdparty/phonon/phonon/seekslider.cpp
index 41baf2d..b5b25f0 100644
--- a/src/3rdparty/phonon/phonon/seekslider.cpp
+++ b/src/3rdparty/phonon/phonon/seekslider.cpp
@@ -72,12 +72,12 @@ void SeekSlider::setMediaObject(MediaObject *media)
d->media = media;
if (media) {
- connect(media, SIGNAL(stateChanged(Phonon::State,Phonon::State)),
+ connect(media, SIGNAL(stateChanged(Phonon::State, Phonon::State)),
SLOT(_k_stateChanged(Phonon::State)));
connect(media, SIGNAL(totalTimeChanged(qint64)), SLOT(_k_length(qint64)));
connect(media, SIGNAL(tick(qint64)), SLOT(_k_tick(qint64)));
connect(media, SIGNAL(seekableChanged(bool)), SLOT(_k_seekableChanged(bool)));
- connect(media, SIGNAL(currentSourceChanged(Phonon::MediaSource)), SLOT(_k_currentSourceChanged()));
+ connect(media, SIGNAL(currentSourceChanged(const Phonon::MediaSource&)), SLOT(_k_currentSourceChanged()));
d->_k_stateChanged(media->state());
d->_k_seekableChanged(media->isSeekable());
d->_k_length(media->totalTime());
diff --git a/src/3rdparty/phonon/phonon/seekslider_p.h b/src/3rdparty/phonon/phonon/seekslider_p.h
index c87a4b0..911ab25 100644
--- a/src/3rdparty/phonon/phonon/seekslider_p.h
+++ b/src/3rdparty/phonon/phonon/seekslider_p.h
@@ -24,8 +24,8 @@
#define SEEKSLIDER_P_H
#include "seekslider.h"
+#include "swiftslider_p.h"
#include <QtGui/QBoxLayout>
-#include <QtGui/QSlider>
#include <QtGui/QLabel>
#include <QtGui/QPixmap>
#include <QtGui/QIcon>
@@ -84,7 +84,7 @@ class SeekSliderPrivate
void _k_currentSourceChanged();
QBoxLayout layout;
- QSlider slider;
+ SwiftSlider slider;
QLabel iconLabel;
QPointer<MediaObject> media;
bool ticking;
diff --git a/src/3rdparty/phonon/phonon/swiftslider.cpp b/src/3rdparty/phonon/phonon/swiftslider.cpp
new file mode 100644
index 0000000..1e274aa
--- /dev/null
+++ b/src/3rdparty/phonon/phonon/swiftslider.cpp
@@ -0,0 +1,103 @@
+/* This file is part of the KDE project
+ Copyright (C) 2006-2008 Ricardo Villalba <rvm@escomposlinux.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), Nokia Corporation
+ (or its successors, if any) and the KDE Free Qt Foundation, which shall
+ act as a proxy defined in Section 6 of version 3 of the license.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "swiftslider_p.h"
+
+#include <QtGui/QMouseEvent>
+#include <QtGui/QStyle>
+#include <QtGui/QStyleOption>
+
+QT_BEGIN_NAMESPACE
+
+#if !defined(QT_NO_PHONON_SEEKSLIDER) && !defined(QT_NO_PHONON_VOLUMESLIDER)
+
+namespace Phonon
+{
+
+SwiftSlider::SwiftSlider(Qt::Orientation orientation, QWidget * parent)
+ : QSlider(orientation, parent)
+{
+}
+
+SwiftSlider::~SwiftSlider()
+{
+}
+
+// Function copied from qslider.cpp
+inline int SwiftSlider::pick(const QPoint &pt) const
+{
+ return orientation() == Qt::Horizontal ? pt.x() : pt.y();
+}
+
+// Function copied from qslider.cpp and modified to make it compile
+int SwiftSlider::pixelPosToRangeValue(int pos) const
+{
+ QStyleOptionSlider opt;
+ initStyleOption(&opt);
+ QRect gr = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderGroove, this);
+ QRect sr = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this);
+ int sliderMin, sliderMax, sliderLength;
+
+ if (orientation() == Qt::Horizontal) {
+ sliderLength = sr.width();
+ sliderMin = gr.x();
+ sliderMax = gr.right() - sliderLength + 1;
+ } else {
+ sliderLength = sr.height();
+ sliderMin = gr.y();
+ sliderMax = gr.bottom() - sliderLength + 1;
+ }
+ return QStyle::sliderValueFromPosition(minimum(), maximum(), pos - sliderMin,
+ sliderMax - sliderMin, opt.upsideDown);
+}
+
+// Based on code from qslider.cpp
+void SwiftSlider::mousePressEvent(QMouseEvent *event)
+{
+ if (event->button() == Qt::LeftButton) {
+ QStyleOptionSlider opt;
+ initStyleOption(&opt);
+ const QRect sliderRect = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this);
+ const QPoint center = sliderRect.center() - sliderRect.topLeft();
+ // to take half of the slider off for the setSliderPosition call we use the center - topLeft
+
+ if (!sliderRect.contains(event->pos())) {
+ event->accept();
+
+ setSliderPosition(pixelPosToRangeValue(pick(event->pos() - center)));
+ triggerAction(SliderMove);
+ setRepeatAction(SliderNoAction);
+ } else {
+ QSlider::mousePressEvent(event);
+ }
+ } else {
+ QSlider::mousePressEvent(event);
+ }
+}
+
+} // namespace Phonon
+
+#endif //QT_NO_PHONON_VOLUMESLIDER && QT_NO_PHONON_VOLUMESLIDER
+
+QT_END_NAMESPACE
+
+#include "moc_swiftslider_p.cpp"
diff --git a/src/3rdparty/phonon/phonon/swiftslider_p.h b/src/3rdparty/phonon/phonon/swiftslider_p.h
new file mode 100644
index 0000000..b063b47
--- /dev/null
+++ b/src/3rdparty/phonon/phonon/swiftslider_p.h
@@ -0,0 +1,68 @@
+/* This file is part of the KDE project
+ Copyright (C) 2006-2008 Ricardo Villalba <rvm@escomposlinux.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) version 3, or any
+ later version accepted by the membership of KDE e.V. (or its
+ successor approved by the membership of KDE e.V.), Nokia Corporation
+ (or its successors, if any) and the KDE Free Qt Foundation, which shall
+ act as a proxy defined in Section 6 of version 3 of the license.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#ifndef SWIFTSLIDER_H
+#define SWIFTSLIDER_H
+
+#include <QtGui/QSlider>
+
+QT_BEGIN_NAMESPACE
+
+#if !defined(QT_NO_PHONON_SEEKSLIDER) && !defined(QT_NO_PHONON_VOLUMESLIDER)
+
+namespace Phonon
+{
+
+/** \class SwiftSlider swiftslider_p.h phonon/SwiftSlider
+ * \short Modified QSlider that allows sudden/quick moves instead of stepped moves ("Click'n'Go" QSlider)
+ *
+ * This is an internal class used by SeekSlider and VolumeSlider.
+ *
+ * Ricardo Villalba, the original author of MySlider.cpp (from the SMPlayer project)
+ * gave his permission for the inclusion of this code inside Phonon by
+ * switching MySlider.cpp to the LGPLv2.1+ license.
+ * See http://smplayer.svn.sourceforge.net/viewvc/smplayer/smplayer/trunk/src/myslider.cpp?revision=2406&view=markup
+ *
+ * The original discussion about a "Click'n'Go QSlider": http://lists.trolltech.com/qt-interest/2006-11/msg00363.html
+ *
+ * \ingroup PhononWidgets
+ */
+class SwiftSlider : public QSlider
+{
+ Q_OBJECT
+public:
+ SwiftSlider(Qt::Orientation orientation, QWidget * parent);
+ ~SwiftSlider();
+
+private:
+ void mousePressEvent(QMouseEvent *event);
+ inline int pick(const QPoint &pt) const;
+ int pixelPosToRangeValue(int pos) const;
+};
+
+} // namespace Phonon
+
+#endif //QT_NO_PHONON_VOLUMESLIDER && QT_NO_PHONON_VOLUMESLIDER
+
+QT_END_NAMESPACE
+
+#endif //SWIFTSLIDER_H
diff --git a/src/3rdparty/phonon/phonon/videowidget.cpp b/src/3rdparty/phonon/phonon/videowidget.cpp
index a9e83a6..4575dfd 100644
--- a/src/3rdparty/phonon/phonon/videowidget.cpp
+++ b/src/3rdparty/phonon/phonon/videowidget.cpp
@@ -28,8 +28,9 @@
#include "phononnamespace_p.h"
#include <QtGui/QAction>
-
-#define PHONON_INTERFACENAME VideoWidgetInterface
+#define IFACES4 VideoWidgetInterface44
+#define IFACES0 VideoWidgetInterface, IFACES4
+#define PHONON_INTERFACENAME IFACES0
QT_BEGIN_NAMESPACE
@@ -48,6 +49,8 @@ VideoWidget::VideoWidget(QWidget *parent)
setMouseTracking(true);
}
+
+
VideoWidget::VideoWidget(VideoWidgetPrivate &dd, QWidget *parent)
: QWidget(parent),
Phonon::AbstractVideoOutput(dd)
@@ -98,6 +101,15 @@ PHONON_INTERFACE_SETTER(setHue, hue, qreal)
PHONON_INTERFACE_GETTER(qreal, saturation, d->saturation)
PHONON_INTERFACE_SETTER(setSaturation, saturation, qreal)
+
+QImage VideoWidget::snapshot() const {
+ K_D(const VideoWidget);
+ ConstIface<IFACES4> iface(d);
+ if(iface) return iface->snapshot();
+ return QImage(); // TODO not implemented in VideoInterface
+}
+
+
void VideoWidget::setFullScreen(bool newFullScreen)
{
pDebug() << Q_FUNC_INFO << newFullScreen;
diff --git a/src/3rdparty/phonon/phonon/videowidget.h b/src/3rdparty/phonon/phonon/videowidget.h
index 1d95490..804e61a 100644
--- a/src/3rdparty/phonon/phonon/videowidget.h
+++ b/src/3rdparty/phonon/phonon/videowidget.h
@@ -172,6 +172,7 @@ class AbstractVideoOutput;
qreal contrast() const;
qreal hue() const;
qreal saturation() const;
+ QImage snapshot() const;
//TODO: bar colors property
public Q_SLOTS:
diff --git a/src/3rdparty/phonon/phonon/videowidgetinterface.h b/src/3rdparty/phonon/phonon/videowidgetinterface.h
index 3e6fd22..0c33956 100644
--- a/src/3rdparty/phonon/phonon/videowidgetinterface.h
+++ b/src/3rdparty/phonon/phonon/videowidgetinterface.h
@@ -53,8 +53,21 @@ class VideoWidgetInterface
//X virtual int overlayCapabilities() const = 0;
//X virtual bool createOverlay(QWidget *widget, int type) = 0;
};
+
+class VideoWidgetInterface44 : public VideoWidgetInterface
+{
+ public:
+ virtual QImage snapshot() const = 0;
+};
}
+#ifdef PHONON_BACKEND_VERSION_4_4
+namespace Phonon { typedef VideoWidgetInterface44 VideoWidgetInterfaceLatest; }
+#else
+namespace Phonon { typedef VideoWidgetInterface VideoWidgetInterfaceLatest; }
+#endif
+
+Q_DECLARE_INTERFACE(Phonon::VideoWidgetInterface44, "VideoWidgetInterface44.phonon.kde.org")
Q_DECLARE_INTERFACE(Phonon::VideoWidgetInterface, "VideoWidgetInterface3.phonon.kde.org")
#endif //QT_NO_PHONON_VIDEO
diff --git a/src/3rdparty/phonon/phonon/volumeslider_p.h b/src/3rdparty/phonon/phonon/volumeslider_p.h
index 3827659..623275f 100644
--- a/src/3rdparty/phonon/phonon/volumeslider_p.h
+++ b/src/3rdparty/phonon/phonon/volumeslider_p.h
@@ -24,8 +24,8 @@
#define VOLUMESLIDER_P_H
#include "volumeslider.h"
+#include "swiftslider_p.h"
#include <QtGui/QBoxLayout>
-#include <QtGui/QSlider>
#include <QtGui/QLabel>
#include <QtGui/QPixmap>
#include <QtGui/QToolButton>
@@ -83,7 +83,7 @@ class VolumeSliderPrivate
private:
QBoxLayout layout;
- QSlider slider;
+ SwiftSlider slider;
QToolButton muteButton;
QIcon volumeIcon;
QIcon mutedIcon;
diff --git a/src/3rdparty/phonon/qt7/audionode.h b/src/3rdparty/phonon/qt7/audionode.h
index 2498e49..dfec817f 100644
--- a/src/3rdparty/phonon/qt7/audionode.h
+++ b/src/3rdparty/phonon/qt7/audionode.h
@@ -72,7 +72,7 @@ namespace QT7
AudioUnit m_audioUnit;
// Only the following methods needs to
- // be overidden by only_one-audio-unit nodes:
+ // be overridden by only_one-audio-unit nodes:
virtual ComponentDescription getAudioNodeDescription() const;
virtual void initializeAudioUnit();
diff --git a/src/3rdparty/phonon/qt7/audionode.mm b/src/3rdparty/phonon/qt7/audionode.mm
index 961230c..77cd627 100644
--- a/src/3rdparty/phonon/qt7/audionode.mm
+++ b/src/3rdparty/phonon/qt7/audionode.mm
@@ -77,6 +77,7 @@ void AudioNode::createAndConnectAUNodes()
// AudioComponentDescription only exists on 10.6+. More fun than we need to
// deal with at the moment, so we'll take the "deprecated" warning instead.
err = AUGraphNewNode(m_audioGraph->audioGraphRef(), &description, 0, 0, &m_auNode);
+
BACKEND_ASSERT2(err != kAUGraphErr_OutputNodeErr, "A MediaObject can only be connected to one audio output device.", FATAL_ERROR)
BACKEND_ASSERT2(err == noErr, "Could not create new AUNode.", FATAL_ERROR)
}
diff --git a/src/3rdparty/phonon/qt7/backendinfo.mm b/src/3rdparty/phonon/qt7/backendinfo.mm
index 0d51db0..d84e014 100644
--- a/src/3rdparty/phonon/qt7/backendinfo.mm
+++ b/src/3rdparty/phonon/qt7/backendinfo.mm
@@ -15,6 +15,12 @@
along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
+#import <QTKit/QTMovie.h>
+#ifdef QUICKTIME_C_API_AVAILABLE
+ #include <QuickTime/QuickTime.h>
+ #undef check // avoid name clash;
+#endif
+
#include "backendinfo.h"
#include "backendheader.h"
@@ -22,13 +28,6 @@
#include <AudioUnit/AudioUnit.h>
#include <CoreServices/CoreServices.h>
-#include <QtGui/qmacdefines_mac.h>
-#import <QTKit/QTMovie.h>
-
-#ifdef QUICKTIME_C_API_AVAILABLE
- #include <QuickTime/QuickTime.h>
- #undef check // avoid name clash;
-#endif
QT_BEGIN_NAMESPACE
diff --git a/src/3rdparty/phonon/qt7/mediaobject.h b/src/3rdparty/phonon/qt7/mediaobject.h
index c93eddc..27949ec 100644
--- a/src/3rdparty/phonon/qt7/mediaobject.h
+++ b/src/3rdparty/phonon/qt7/mediaobject.h
@@ -25,10 +25,6 @@
#include "medianode.h"
-#if QT_ALLOW_QUICKTIME
- #include <QuickTime/QuickTime.h>
-#endif
-
QT_BEGIN_NAMESPACE
namespace Phonon
@@ -42,10 +38,7 @@ namespace QT7
class MediaObjectAudioNode;
class MediaObject : public MediaNode,
- public Phonon::MediaObjectInterface
-#ifndef QT_NO_PHONON_MEDIACONTROLLER
- , public Phonon::AddonInterface
-#endif
+ public Phonon::MediaObjectInterface, public Phonon::AddonInterface
{
Q_OBJECT
Q_INTERFACES(Phonon::MediaObjectInterface Phonon::AddonInterface)
@@ -99,10 +92,6 @@ namespace QT7
int videoOutputCount();
-#if QT_ALLOW_QUICKTIME
- void displayLinkEvent();
-#endif
-
signals:
void stateChanged(Phonon::State,Phonon::State);
void tick(qint64);
@@ -116,16 +105,6 @@ namespace QT7
void metaDataChanged(QMultiMap<QString,QString>);
void currentSourceChanged(const MediaSource &newSource);
- // Add-on interface:
- void availableSubtitlesChanged();
- void availableAudioChannelsChanged();
- void titleChanged(int);
- void availableTitlesChanged(int);
- void chapterChanged(int);
- void availableChaptersChanged(int);
- void angleChanged(int);
- void availableAnglesChanged(int);
-
protected:
void mediaNodeEvent(const MediaNodeEvent *event);
bool event(QEvent *event);
@@ -139,14 +118,7 @@ namespace QT7
QuickTimeVideoPlayer *m_nextVideoPlayer;
QuickTimeAudioPlayer *m_nextAudioPlayer;
MediaObjectAudioNode *m_mediaObjectAudioNode;
-
-#if QT_ALLOW_QUICKTIME
- CVDisplayLinkRef m_displayLink;
- QMutex m_displayLinkMutex;
- bool m_pendingDisplayLinkEvent;
- void startDisplayLink();
- void stopDisplayLink();
-#endif
+ QuickTimeMetaData *m_metaData;
qint32 m_tickInterval;
qint32 m_transitionTime;
@@ -155,14 +127,12 @@ namespace QT7
float m_percentageLoaded;
int m_tickTimer;
- int m_videoTimer;
- int m_audioTimer;
+ int m_bufferTimer;
int m_rapidTimer;
bool m_waitNextSwap;
int m_swapTimeLeft;
QTime m_swapTime;
- bool m_autoplayTitles;
void synchAudioVideo();
void updateCurrentTime();
@@ -171,7 +141,8 @@ namespace QT7
void pause_internal();
void play_internal();
void setupAudioSystem();
- void restartAudioVideoTimers();
+ void updateTimer(int &timer, int interval);
+ void bufferAudioVideo();
void updateRapidly();
void updateCrossFade();
void updateAudioBuffers();
@@ -183,7 +154,6 @@ namespace QT7
void inspectVideoGraphRecursive(MediaNode *node, int &effectCount, int &outputCount);
void inspectGraph();
bool isCrossFading();
- void setCurrentTrack(int track);
QString m_errorString;
Phonon::ErrorType m_errorType;
diff --git a/src/3rdparty/phonon/qt7/mediaobject.mm b/src/3rdparty/phonon/qt7/mediaobject.mm
index 677640c..002c337 100644
--- a/src/3rdparty/phonon/qt7/mediaobject.mm
+++ b/src/3rdparty/phonon/qt7/mediaobject.mm
@@ -46,6 +46,7 @@ MediaObject::MediaObject(QObject *parent) : MediaNode(AudioSource | VideoSource,
m_mediaObjectAudioNode = new MediaObjectAudioNode(m_audioPlayer, m_nextAudioPlayer);
setAudioNode(m_mediaObjectAudioNode);
+ m_metaData = new QuickTimeMetaData();
m_audioGraph = new AudioGraph(this);
m_tickInterval = 0;
@@ -54,7 +55,6 @@ MediaObject::MediaObject(QObject *parent) : MediaNode(AudioSource | VideoSource,
m_transitionTime = 0;
m_percentageLoaded = 0;
m_waitNextSwap = false;
- m_autoplayTitles = true;
m_audioEffectCount = 0;
m_audioOutputCount = 0;
m_videoEffectCount = 0;
@@ -63,28 +63,20 @@ MediaObject::MediaObject(QObject *parent) : MediaNode(AudioSource | VideoSource,
m_errorType = Phonon::NoError;
m_tickTimer = 0;
- m_videoTimer = 0;
- m_audioTimer = 0;
+ m_bufferTimer = 0;
m_rapidTimer = 0;
-#if QT_ALLOW_QUICKTIME
- m_displayLink = 0;
- m_pendingDisplayLinkEvent = false;
-#endif
-
checkForError();
}
MediaObject::~MediaObject()
-{
- // m_mediaObjectAudioNode is owned by super class.
-#if QT_ALLOW_QUICKTIME
- stopDisplayLink();
-#endif
+{
+ // m_mediaObjectAudioNode is owned by super class.
m_audioPlayer->unsetVideoPlayer();
m_nextAudioPlayer->unsetVideoPlayer();
delete m_videoPlayer;
delete m_nextVideoPlayer;
+ delete m_metaData;
checkForError();
}
@@ -96,7 +88,7 @@ bool MediaObject::setState(Phonon::State state)
emit stateChanged(m_state, prevState);
if (m_state != state){
// End-application did something
- // upon receiving the signal.
+ // upon receiving the signal.
return false;
}
}
@@ -130,7 +122,7 @@ void MediaObject::inspectGraph()
// Inspect the graph to check wether there are any
// effects or outputs connected. This will have
// influence on the audio system and video system that ends up beeing used:
- int prevVideoOutputCount = m_videoOutputCount;
+ int prevVideoOutputCount = m_videoOutputCount;
m_audioEffectCount = 0;
m_audioOutputCount = 0;
m_videoEffectCount = 0;
@@ -142,7 +134,7 @@ void MediaObject::inspectGraph()
if (m_videoOutputCount != prevVideoOutputCount){
MediaNodeEvent e1(MediaNodeEvent::VideoOutputCountChanged, &m_videoOutputCount);
notify(&e1);
- }
+ }
}
void MediaObject::setupAudioSystem()
@@ -175,14 +167,14 @@ void MediaObject::setupAudioSystem()
if (newAudioSystem == m_audioSystem)
return;
-
+
// Enable selected audio system:
- m_audioSystem = newAudioSystem;
+ m_audioSystem = newAudioSystem;
switch (newAudioSystem){
case AS_Silent:
m_audioGraph->stop();
m_videoPlayer->enableAudio(false);
- m_nextVideoPlayer->enableAudio(false);
+ m_nextVideoPlayer->enableAudio(false);
m_audioPlayer->enableAudio(false);
m_nextAudioPlayer->enableAudio(false);
break;
@@ -222,28 +214,28 @@ void MediaObject::setSource(const MediaSource &source)
IMPLEMENTED;
PhononAutoReleasePool pool;
setState(Phonon::LoadingState);
-
+
// Save current state for event/signal handling below:
bool prevHasVideo = m_videoPlayer->hasVideo();
qint64 prevTotalTime = totalTime();
- int prevTrackCount = m_videoPlayer->trackCount();
m_waitNextSwap = false;
-
+
// Cancel cross-fade if any:
m_nextVideoPlayer->pause();
m_nextAudioPlayer->pause();
m_mediaObjectAudioNode->cancelCrossFade();
-
+
// Set new source:
m_audioPlayer->unsetVideoPlayer();
m_videoPlayer->setMediaSource(source);
m_audioPlayer->setVideoPlayer(m_videoPlayer);
+ m_metaData->setVideo(m_videoPlayer);
- m_audioGraph->updateStreamSpecifications();
+ m_audioGraph->updateStreamSpecifications();
m_nextAudioPlayer->unsetVideoPlayer();
- m_nextVideoPlayer->unsetCurrentMediaSource();
+ m_nextVideoPlayer->unsetVideo();
m_currentTime = 0;
-
+
// Emit/notify information about the new source:
QRect videoRect = m_videoPlayer->videoRect();
MediaNodeEvent e1(MediaNodeEvent::VideoFrameSizeChanged, &videoRect);
@@ -254,14 +246,12 @@ void MediaObject::setSource(const MediaSource &source)
updateVideo(emptyFrame);
emit currentSourceChanged(source);
- emit metaDataChanged(m_videoPlayer->metaData());
+ emit metaDataChanged(m_metaData->metaData());
if (prevHasVideo != m_videoPlayer->hasVideo())
- emit hasVideoChanged(m_videoPlayer->hasVideo());
+ emit hasVideoChanged(m_videoPlayer->hasVideo());
if (prevTotalTime != totalTime())
- emit totalTimeChanged(totalTime());
- if (prevTrackCount != m_videoPlayer->trackCount())
- emit availableTitlesChanged(m_videoPlayer->trackCount());
+ emit totalTimeChanged(totalTime());
if (checkForError())
return;
if (!m_videoPlayer->isDrmAuthorized())
@@ -270,7 +260,7 @@ void MediaObject::setSource(const MediaSource &source)
return;
if (!m_videoPlayer->canPlayMedia())
SET_ERROR("Cannot play media.", FATAL_ERROR)
-
+
// The state might have changed from LoadingState
// as a response to an error state change. So we
// need to check it before stopping:
@@ -297,30 +287,28 @@ void MediaObject::swapCurrentWithNext(qint32 transitionTime)
// Save current state for event/signal handling below:
bool prevHasVideo = m_videoPlayer->hasVideo();
qint64 prevTotalTime = totalTime();
- int prevTrackCount = m_videoPlayer->trackCount();
qSwap(m_audioPlayer, m_nextAudioPlayer);
qSwap(m_videoPlayer, m_nextVideoPlayer);
m_mediaObjectAudioNode->startCrossFade(transitionTime);
m_audioGraph->updateStreamSpecifications();
+ m_metaData->setVideo(m_videoPlayer);
m_waitNextSwap = false;
m_currentTime = 0;
-
+
// Emit/notify information about the new source:
QRect videoRect = m_videoPlayer->videoRect();
MediaNodeEvent e1(MediaNodeEvent::VideoFrameSizeChanged, &videoRect);
notify(&e1);
emit currentSourceChanged(m_videoPlayer->mediaSource());
- emit metaDataChanged(m_videoPlayer->metaData());
+ emit metaDataChanged(m_metaData->metaData());
if (prevHasVideo != m_videoPlayer->hasVideo())
- emit hasVideoChanged(m_videoPlayer->hasVideo());
+ emit hasVideoChanged(m_videoPlayer->hasVideo());
if (prevTotalTime != totalTime())
emit totalTimeChanged(totalTime());
- if (prevTrackCount != m_videoPlayer->trackCount())
- emit availableTitlesChanged(m_videoPlayer->trackCount());
if (checkForError())
return;
if (!m_videoPlayer->isDrmAuthorized())
@@ -339,107 +327,28 @@ void MediaObject::swapCurrentWithNext(qint32 transitionTime)
}
}
-#if QT_ALLOW_QUICKTIME
-static CVReturn displayLinkCallback(CVDisplayLinkRef /*displayLink*/,
- const CVTimeStamp */*inNow*/,
- const CVTimeStamp */*inOutputTime*/,
- CVOptionFlags /*flagsIn*/,
- CVOptionFlags */*flagsOut*/,
- void *userData)
-{
- MediaObject *mediaObject = static_cast<MediaObject *>(userData);
- mediaObject->displayLinkEvent();
- return kCVReturnSuccess;
-}
-
-void MediaObject::displayLinkEvent()
-{
- // This function is called from a
- // thread != gui thread. So we post the event.
- // But we need to make sure that we don't post faster
- // than the event loop can eat:
- m_displayLinkMutex.lock();
- bool pending = m_pendingDisplayLinkEvent;
- m_pendingDisplayLinkEvent = true;
- m_displayLinkMutex.unlock();
-
- if (!pending)
- qApp->postEvent(this, new QEvent(QEvent::User), Qt::HighEventPriority);
-}
-
-void MediaObject::startDisplayLink()
+void MediaObject::updateTimer(int &timer, int interval)
{
- if (m_displayLink)
- return;
- OSStatus err = CVDisplayLinkCreateWithCGDisplay(kCGDirectMainDisplay, &m_displayLink);
- if (err != noErr)
- goto fail;
- err = CVDisplayLinkSetCurrentCGDisplay(m_displayLink, kCGDirectMainDisplay);
- if (err != noErr)
- goto fail;
- err = CVDisplayLinkSetOutputCallback(m_displayLink, displayLinkCallback, this);
- if (err != noErr)
- goto fail;
- err = CVDisplayLinkStart(m_displayLink);
- if (err != noErr)
- goto fail;
- return;
-fail:
- stopDisplayLink();
-}
-
-void MediaObject::stopDisplayLink()
-{
- if (!m_displayLink)
- return;
- CVDisplayLinkStop(m_displayLink);
- CFRelease(m_displayLink);
- m_displayLink = 0;
-}
-#endif
-
-void MediaObject::restartAudioVideoTimers()
-{
- if (m_videoTimer)
- killTimer(m_videoTimer);
- if (m_audioTimer)
- killTimer(m_audioTimer);
-
-#if QT_ALLOW_QUICKTIME
- // We prefer to use a display link as timer if available, since
- // it is more steady, and results in better and smoother frame drawing:
- startDisplayLink();
- if (!m_displayLink){
- float fps = m_videoPlayer->staticFps();
- long videoUpdateFrequency = fps ? long(1000.0f / fps) : 0.001;
- m_videoTimer = startTimer(videoUpdateFrequency);
- }
-#else
- float fps = m_videoPlayer->staticFps();
- long videoUpdateFrequency = fps ? long(1000.0f / fps) : 0.001;
- m_videoTimer = startTimer(videoUpdateFrequency);
-#endif
-
- long audioUpdateFrequency = m_audioPlayer->regularTaskFrequency();
- m_audioTimer = startTimer(audioUpdateFrequency);
- updateVideoFrames();
- updateAudioBuffers();
+ if (timer)
+ killTimer(timer);
+ timer = 0;
+ if (interval >= 0)
+ timer = startTimer(interval);
}
void MediaObject::play_internal()
{
// Play main audio/video:
m_videoPlayer->play();
- m_audioPlayer->play();
+ m_audioPlayer->play();
updateLipSynch(0);
// Play old audio/video to finish cross-fade:
if (m_nextVideoPlayer->currentTime() > 0){
m_nextVideoPlayer->play();
m_nextAudioPlayer->play();
}
- restartAudioVideoTimers();
- if (!m_rapidTimer)
- m_rapidTimer = startTimer(100);
+ bufferAudioVideo();
+ updateTimer(m_rapidTimer, 100);
}
void MediaObject::pause_internal()
@@ -449,15 +358,9 @@ void MediaObject::pause_internal()
m_nextAudioPlayer->pause();
m_videoPlayer->pause();
m_nextVideoPlayer->pause();
- killTimer(m_rapidTimer);
- killTimer(m_videoTimer);
- killTimer(m_audioTimer);
- m_rapidTimer = 0;
- m_videoTimer = 0;
- m_audioTimer = 0;
-#if QT_ALLOW_QUICKTIME
- stopDisplayLink();
-#endif
+ updateTimer(m_rapidTimer, -1);
+ updateTimer(m_bufferTimer, -1);
+
if (m_waitNextSwap)
m_swapTimeLeft = m_swapTime.msecsTo(QTime::currentTime());
}
@@ -479,7 +382,7 @@ void MediaObject::play()
if (!m_videoPlayer->canPlayMedia())
return;
if (!setState(Phonon::PlayingState))
- return;
+ return;
if (m_audioSystem == AS_Graph){
m_audioGraph->start();
m_mediaObjectAudioNode->setMute(true);
@@ -520,7 +423,7 @@ void MediaObject::stop()
if (!setState(Phonon::StoppedState))
return;
m_waitNextSwap = false;
- m_nextVideoPlayer->unsetCurrentMediaSource();
+ m_nextVideoPlayer->unsetVideo();
m_nextAudioPlayer->unsetVideoPlayer();
pause_internal();
seek(0);
@@ -532,9 +435,9 @@ void MediaObject::seek(qint64 milliseconds)
IMPLEMENTED;
if (m_state == Phonon::ErrorState)
return;
-
+
// Stop cross-fade if any:
- m_nextVideoPlayer->unsetCurrentMediaSource();
+ m_nextVideoPlayer->unsetVideo();
m_nextAudioPlayer->unsetVideoPlayer();
m_mediaObjectAudioNode->cancelCrossFade();
@@ -543,7 +446,7 @@ void MediaObject::seek(qint64 milliseconds)
m_videoPlayer->seek(milliseconds);
m_audioPlayer->seek(m_videoPlayer->currentTime());
m_mediaObjectAudioNode->setMute(false);
-
+
// Update time and cancel pending swap:
if (m_currentTime < m_videoPlayer->duration())
m_waitNextSwap = false;
@@ -654,7 +557,7 @@ bool MediaObject::isSeekable() const
qint64 MediaObject::currentTime() const
{
IMPLEMENTED_SILENT;
- const_cast<MediaObject *>(this)->updateCurrentTime();
+ const_cast<MediaObject *>(this)->updateCurrentTime();
return m_currentTime;
}
@@ -664,24 +567,19 @@ void MediaObject::updateCurrentTime()
m_currentTime = (m_audioSystem == AS_Graph) ? m_audioPlayer->currentTime() : m_videoPlayer->currentTime();
quint64 total = m_videoPlayer->duration();
- if (m_videoPlayer->currentTrack() < m_videoPlayer->trackCount() - 1){
- // There are still more tracks to play after the current track.
- if (m_autoplayTitles) {
- if (lastUpdateTime < m_currentTime && m_currentTime == total)
- setCurrentTrack(m_videoPlayer->currentTrack() + 1);
- }
- } else if (m_nextVideoPlayer->state() == QuickTimeVideoPlayer::NoMedia){
- // There is no more sources or tracks to play after the current source.
- // Check if it's time to emit aboutToFinish:
- quint32 mark = qMax(quint64(0), qMin(total, total + m_transitionTime - 2000));
- if (lastUpdateTime < mark && mark <= m_currentTime)
- emit aboutToFinish();
-
- // Check if it's time to emit prefinishMarkReached:
- mark = qMax(quint64(0), total - m_prefinishMark);
- if (lastUpdateTime < mark && mark <= m_currentTime)
- emit prefinishMarkReached(total - m_currentTime);
+ // Check if it's time to emit aboutToFinish:
+ quint32 mark = qMax(quint64(0), qMin(total, total + m_transitionTime - 2000));
+ if (lastUpdateTime < mark && mark <= m_currentTime)
+ emit aboutToFinish();
+ // Check if it's time to emit prefinishMarkReached:
+ mark = qMax(quint64(0), total - m_prefinishMark);
+ if (lastUpdateTime < mark && mark <= m_currentTime)
+ emit prefinishMarkReached(total - m_currentTime);
+
+ if (m_nextVideoPlayer->state() == QuickTimeVideoPlayer::NoMedia){
+ // There is no next source in que.
+ // Check if it's time to emit finished:
if (lastUpdateTime < m_currentTime && m_currentTime == total){
emit finished();
m_currentTime = (m_audioSystem == AS_Graph) ? m_audioPlayer->currentTime() : m_videoPlayer->currentTime();
@@ -691,7 +589,7 @@ void MediaObject::updateCurrentTime()
} else {
// We have a next source.
// Check if it's time to swap to next source:
- quint32 mark = qMax(quint64(0), total + m_transitionTime);
+ mark = qMax(quint64(0), total + m_transitionTime);
if (m_waitNextSwap && m_state == Phonon::PlayingState &&
m_transitionTime < m_swapTime.msecsTo(QTime::currentTime())){
swapCurrentWithNext(0);
@@ -794,14 +692,14 @@ bool MediaObject::setAudioDeviceOnMovie(int id)
void MediaObject::updateCrossFade()
{
- m_mediaObjectAudioNode->updateCrossFade(m_currentTime);
+ m_mediaObjectAudioNode->updateCrossFade(m_currentTime);
// Clean-up previous movie if done fading:
if (m_mediaObjectAudioNode->m_fadeDuration == 0){
if (m_nextVideoPlayer->isPlaying() || m_nextAudioPlayer->isPlaying()){
- m_nextVideoPlayer->unsetCurrentMediaSource();
+ m_nextVideoPlayer->unsetVideo();
m_nextAudioPlayer->unsetVideoPlayer();
}
- }
+ }
}
void MediaObject::updateBufferStatus()
@@ -830,7 +728,7 @@ void MediaObject::updateVideoFrames()
// Draw next frame if awailable:
if (m_videoPlayer->videoFrameChanged()){
updateLipSynch(50);
- VideoFrame frame(m_videoPlayer);
+ VideoFrame frame(m_videoPlayer);
if (m_nextVideoPlayer->isPlaying()
&& m_nextVideoPlayer->hasVideo()
&& isCrossFading()){
@@ -838,9 +736,9 @@ void MediaObject::updateVideoFrames()
frame.setBackgroundFrame(bgFrame);
frame.setBaseOpacity(m_mediaObjectAudioNode->m_volume1);
}
-
+
// Send the frame through the graph:
- updateVideo(frame);
+ updateVideo(frame);
checkForError();
}
}
@@ -851,7 +749,7 @@ void MediaObject::updateLipSynch(int allowedOffset)
return;
if (m_videoSinkList.isEmpty() || m_audioSinkList.isEmpty())
return;
-
+
if (m_videoPlayer->hasVideo()){
qint64 diff = m_audioPlayer->currentTime() - m_videoPlayer->currentTime();
if (-allowedOffset > diff || diff > allowedOffset)
@@ -865,6 +763,16 @@ void MediaObject::updateLipSynch(int allowedOffset)
}
}
+void MediaObject::bufferAudioVideo()
+{
+ long nextVideoUpdate = m_videoPlayer->hasVideo() ? 30 : INT_MAX;
+ long nextAudioUpdate = m_audioPlayer->regularTaskFrequency();
+ updateAudioBuffers();
+ updateVideoFrames();
+ if (m_state == Phonon::PlayingState)
+ updateTimer(m_bufferTimer, qMin(nextVideoUpdate, nextAudioUpdate));
+}
+
void MediaObject::updateRapidly()
{
updateCurrentTime();
@@ -889,8 +797,8 @@ void MediaObject::mediaNodeEvent(const MediaNodeEvent *event)
synchAudioVideo();
checkForError();
m_mediaObjectAudioNode->setMute(false);
- if (m_state == Phonon::PlayingState)
- restartAudioVideoTimers();
+ if (m_state == Phonon::PlayingState)
+ bufferAudioVideo();
break;
case MediaNodeEvent::AudioGraphCannotPlay:
case MediaNodeEvent::AudioGraphInitialized:
@@ -901,7 +809,7 @@ void MediaObject::mediaNodeEvent(const MediaNodeEvent *event)
checkForError();
m_mediaObjectAudioNode->setMute(false);
}
- break;
+ break;
default:
break;
}
@@ -910,67 +818,29 @@ void MediaObject::mediaNodeEvent(const MediaNodeEvent *event)
bool MediaObject::event(QEvent *event)
{
switch (event->type()){
-#if QT_ALLOW_QUICKTIME
- case QEvent::User:{
- m_displayLinkMutex.lock();
- m_pendingDisplayLinkEvent = false;
- m_displayLinkMutex.unlock();
- updateVideoFrames();
- break; }
-#endif
- case QEvent::Timer:{
- int timerId = static_cast<QTimerEvent *>(event)->timerId();
- if (timerId == m_rapidTimer)
+ case QEvent::Timer: {
+ QTimerEvent *timerEvent = static_cast<QTimerEvent *>(event);
+ if (timerEvent->timerId() == m_rapidTimer)
updateRapidly();
- else if (timerId == m_tickTimer)
+ else if (timerEvent->timerId() == m_tickTimer)
emit tick(currentTime());
- else if (timerId == m_videoTimer)
- updateVideoFrames();
- else if (timerId == m_audioTimer)
- updateAudioBuffers();
- break; }
+ else if (timerEvent->timerId() == m_bufferTimer)
+ bufferAudioVideo();
+ }
+ break;
default:
break;
}
return QObject::event(event);
}
-void MediaObject::setCurrentTrack(int track)
+bool MediaObject::hasInterface(Interface /*interface*/) const
{
- if (track == m_videoPlayer->currentTrack() || track < 0 || track >= m_videoPlayer->trackCount())
- return;
-
- m_videoPlayer->setCurrentTrack(track);
- emit titleChanged(track);
- emit metaDataChanged(m_videoPlayer->metaData());
+ return false;
}
-bool MediaObject::hasInterface(Interface iface) const
+QVariant MediaObject::interfaceCall(Interface /*interface*/, int /*command*/, const QList<QVariant> &/*arguments*/)
{
- return iface == AddonInterface::TitleInterface;
-}
-
-QVariant MediaObject::interfaceCall(Interface iface, int command, const QList<QVariant> &params)
-{
- switch (iface) {
- case TitleInterface:
- switch (command) {
- case availableTitles:
- return m_videoPlayer->trackCount();
- case title:
- return m_videoPlayer->currentTrack();
- case setTitle:
- setCurrentTrack(params.first().toInt());
- break;
- case autoplayTitles:
- return m_autoplayTitles;
- case setAutoplayTitles:
- m_autoplayTitles = params.first().toBool();
- break;
- }
- default:
- break;
- }
return QVariant();
}
diff --git a/src/3rdparty/phonon/qt7/mediaobjectaudionode.mm b/src/3rdparty/phonon/qt7/mediaobjectaudionode.mm
index 66d6041..39b0d4e 100644
--- a/src/3rdparty/phonon/qt7/mediaobjectaudionode.mm
+++ b/src/3rdparty/phonon/qt7/mediaobjectaudionode.mm
@@ -15,6 +15,8 @@
along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
+#import <QTKit/QTMovie.h>
+
#include "mediaobjectaudionode.h"
#include "quicktimeaudioplayer.h"
#include "quicktimevideoplayer.h"
diff --git a/src/3rdparty/phonon/qt7/quicktimeaudioplayer.mm b/src/3rdparty/phonon/qt7/quicktimeaudioplayer.mm
index 61c97cc..aefec02 100644
--- a/src/3rdparty/phonon/qt7/quicktimeaudioplayer.mm
+++ b/src/3rdparty/phonon/qt7/quicktimeaudioplayer.mm
@@ -15,6 +15,8 @@
along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
+#import <QTKit/QTMovie.h>
+
#include "quicktimeaudioplayer.h"
#include "quicktimevideoplayer.h"
#include "audiograph.h"
diff --git a/src/3rdparty/phonon/qt7/quicktimemetadata.h b/src/3rdparty/phonon/qt7/quicktimemetadata.h
index c589535..d524183 100644
--- a/src/3rdparty/phonon/qt7/quicktimemetadata.h
+++ b/src/3rdparty/phonon/qt7/quicktimemetadata.h
@@ -38,8 +38,10 @@ namespace QT7
class QuickTimeMetaData
{
public:
- QuickTimeMetaData(QuickTimeVideoPlayer *videoPlayer);
- void update();
+ QuickTimeMetaData();
+ virtual ~QuickTimeMetaData();
+
+ void setVideo(QuickTimeVideoPlayer *videoPlayer);
QMultiMap<QString, QString> metaData();
private:
@@ -47,8 +49,6 @@ namespace QT7
bool m_movieChanged;
QuickTimeVideoPlayer *m_videoPlayer;
void readMetaData();
- void guessMetaDataForCD();
- void readMetaDataFromMovie();
#ifdef QUICKTIME_C_API_AVAILABLE
QString stripCopyRightSymbol(const QString &key);
diff --git a/src/3rdparty/phonon/qt7/quicktimemetadata.mm b/src/3rdparty/phonon/qt7/quicktimemetadata.mm
index 2dcc152..4ae3e2c 100644
--- a/src/3rdparty/phonon/qt7/quicktimemetadata.mm
+++ b/src/3rdparty/phonon/qt7/quicktimemetadata.mm
@@ -15,7 +15,8 @@
along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <QtCore/QFileInfo>
+#import <QTKit/QTMovie.h>
+
#include "quicktimemetadata.h"
#include "quicktimevideoplayer.h"
@@ -26,14 +27,19 @@ namespace Phonon
namespace QT7
{
-QuickTimeMetaData::QuickTimeMetaData(QuickTimeVideoPlayer *videoPlayer)
+QuickTimeMetaData::QuickTimeMetaData()
{
- m_videoPlayer = videoPlayer;
+ m_videoPlayer = 0;
m_movieChanged = false;
}
-void QuickTimeMetaData::update()
+QuickTimeMetaData::~QuickTimeMetaData()
+{
+}
+
+void QuickTimeMetaData::setVideo(QuickTimeVideoPlayer *videoPlayer)
{
+ m_videoPlayer = videoPlayer;
m_movieChanged = true;
m_metaData.clear();
}
@@ -141,22 +147,14 @@ void QuickTimeMetaData::readFormattedData(QTMetaDataRef metaDataRef, OSType form
#endif // QUICKTIME_C_API_AVAILABLE
-void QuickTimeMetaData::guessMetaDataForCD()
-{
- QString album = QFileInfo(m_videoPlayer->movieCompactDiscPath()).fileName();
- QString title = QFileInfo(m_videoPlayer->currentTrackPath()).fileName();
- title = title.left(title.lastIndexOf('.'));
- m_metaData.insert(QLatin1String("ALBUM"), album);
- m_metaData.insert(QLatin1String("TITLE"), title);
- m_metaData.insert(QLatin1String("TRACKNUMBER"), QString::number(m_videoPlayer->currentTrack()));
-}
-
-void QuickTimeMetaData::readMetaDataFromMovie()
+void QuickTimeMetaData::readMetaData()
{
+ if (!m_videoPlayer)
+ return;
QMultiMap<QString, QString> metaMap;
-
+
#ifdef QUICKTIME_C_API_AVAILABLE
- QTMetaDataRef metaDataRef;
+ QTMetaDataRef metaDataRef;
OSStatus err = QTCopyMovieMetaData([m_videoPlayer->qtMovie() quickTimeMovie], &metaDataRef);
BACKEND_ASSERT2(err == noErr, "Could not read QuickTime meta data", NORMAL_ERROR)
@@ -177,17 +175,6 @@ void QuickTimeMetaData::readMetaDataFromMovie()
m_metaData.insert(QLatin1String("DESCRIPTION"), metaMap.value(QLatin1String("des")));
}
-void QuickTimeMetaData::readMetaData()
-{
- if (!m_videoPlayer)
- return;
-
- if (m_videoPlayer->mediaSource().type() == Phonon::MediaSource::Disc)
- guessMetaDataForCD();
- else
- readMetaDataFromMovie();
-}
-
QMultiMap<QString, QString> QuickTimeMetaData::metaData()
{
if (m_videoPlayer && m_videoPlayer->hasMovie() && m_movieChanged)
diff --git a/src/3rdparty/phonon/qt7/quicktimevideoplayer.h b/src/3rdparty/phonon/qt7/quicktimevideoplayer.h
index 98eacb5..0b3aec2 100644
--- a/src/3rdparty/phonon/qt7/quicktimevideoplayer.h
+++ b/src/3rdparty/phonon/qt7/quicktimevideoplayer.h
@@ -20,7 +20,6 @@
#include "backendheader.h"
-#include <QtGui/qmacdefines_mac.h>
#import <QTKit/QTDataReference.h>
#import <QTKit/QTMovie.h>
@@ -39,7 +38,6 @@ namespace Phonon
namespace QT7
{
class QuickTimeStreamReader;
- class QuickTimeMetaData;
class VideoRenderWidgetQTMovieView;
class QuickTimeVideoPlayer : QObject
@@ -57,7 +55,7 @@ namespace QT7
void setMediaSource(const MediaSource &source);
MediaSource mediaSource() const;
- void unsetCurrentMediaSource();
+ void unsetVideo();
void play();
void pause();
@@ -68,13 +66,11 @@ namespace QT7
GLuint currentFrameAsGLTexture();
void *currentFrameAsCIImage();
QImage currentFrameAsQImage();
- void releaseImageCache();
QRect videoRect() const;
quint64 duration() const;
quint64 currentTime() const;
long timeScale() const;
- float staticFps();
QString currentTimeString();
void setColors(qreal brightness = 0, qreal contrast = 1, qreal hue = 0, qreal saturation = 1);
@@ -87,7 +83,6 @@ namespace QT7
bool setAudioDevice(int id);
void setPlaybackRate(float rate);
QTMovie *qtMovie() const;
- QMultiMap<QString, QString> metaData();
float playbackRate() const;
float prefferedPlaybackRate() const;
@@ -107,12 +102,6 @@ namespace QT7
float percentageLoaded();
quint64 timeLoaded();
- int trackCount() const;
- int currentTrack() const;
- void setCurrentTrack(int track);
- QString movieCompactDiscPath() const;
- QString currentTrackPath() const;
-
static QString timeToString(quint64 ms);
// Help functions when drawing to more that one widget in cocoa 64:
@@ -126,10 +115,6 @@ namespace QT7
QTMovie *m_QTMovie;
State m_state;
QGLPixelBuffer *m_QImagePixelBuffer;
- QuickTimeMetaData *m_metaData;
-
- CVOpenGLTextureRef m_cachedCVTextureRef;
- QImage m_cachedQImage;
bool m_playbackRateSat;
bool m_isDrmProtected;
@@ -140,18 +125,13 @@ namespace QT7
float m_masterVolume;
float m_relativeVolume;
float m_playbackRate;
- float m_staticFps;
quint64 m_currentTime;
MediaSource m_mediaSource;
-
void *m_primaryRenderingCIImage;
qreal m_brightness;
qreal m_contrast;
qreal m_hue;
qreal m_saturation;
- NSArray *m_folderTracks;
- int m_currentTrack;
- QString m_movieCompactDiscPath;
#ifdef QUICKTIME_C_API_AVAILABLE
QTVisualContextRef m_visualContext;
@@ -159,26 +139,20 @@ namespace QT7
VideoFrame m_currentFrame;
QuickTimeStreamReader *m_streamReader;
- void prepareCurrentMovieForPlayback();
void createVisualContext();
void openMovieFromCurrentMediaSource();
void openMovieFromDataRef(QTDataReference *dataRef);
void openMovieFromFile();
void openMovieFromUrl();
void openMovieFromStream();
- void openMovieFromCompactDisc();
void openMovieFromData(QByteArray *data, char *fileType);
void openMovieFromDataGuessType(QByteArray *data);
QString mediaSourcePath();
bool codecExistsAccordingToSuffix(const QString &fileName);
- NSString* pathToCompactDisc();
- bool isCompactDisc(NSString *path);
- NSArray* scanFolder(NSString *path);
void setError(NSError *error);
bool errorOccured();
void readProtection();
- void calculateStaticFps();
void checkIfVideoAwailable();
bool movieNotLoaded();
void waitStatePlayable();
diff --git a/src/3rdparty/phonon/qt7/quicktimevideoplayer.mm b/src/3rdparty/phonon/qt7/quicktimevideoplayer.mm
index 23c76e3..3f76132 100644
--- a/src/3rdparty/phonon/qt7/quicktimevideoplayer.mm
+++ b/src/3rdparty/phonon/qt7/quicktimevideoplayer.mm
@@ -20,7 +20,6 @@
#include "videowidget.h"
#include "audiodevice.h"
#include "quicktimestreamreader.h"
-#include "quicktimemetadata.h"
#include <QtCore/QCoreApplication>
#include <QtCore/QEventLoop>
@@ -53,7 +52,6 @@ QuickTimeVideoPlayer::QuickTimeVideoPlayer() : QObject(0)
{
m_state = NoMedia;
m_mediaSource = MediaSource();
- m_metaData = new QuickTimeMetaData(this);
m_QTMovie = 0;
m_streamReader = 0;
m_playbackRate = 1.0f;
@@ -63,16 +61,12 @@ QuickTimeVideoPlayer::QuickTimeVideoPlayer() : QObject(0)
m_mute = false;
m_audioEnabled = false;
m_hasVideo = false;
- m_staticFps = 0;
m_playbackRateSat = false;
m_isDrmProtected = false;
m_isDrmAuthorized = true;
m_primaryRenderingTarget = 0;
m_primaryRenderingCIImage = 0;
m_QImagePixelBuffer = 0;
- m_cachedCVTextureRef = 0;
- m_folderTracks = 0;
- m_currentTrack = 0;
#ifdef QUICKTIME_C_API_AVAILABLE
OSStatus err = EnterMovies();
@@ -83,9 +77,7 @@ QuickTimeVideoPlayer::QuickTimeVideoPlayer() : QObject(0)
QuickTimeVideoPlayer::~QuickTimeVideoPlayer()
{
- PhononAutoReleasePool pool;
- unsetCurrentMediaSource();
- delete m_metaData;
+ unsetVideo();
[(NSObject*)m_primaryRenderingTarget release];
m_primaryRenderingTarget = 0;
#ifdef QUICKTIME_C_API_AVAILABLE
@@ -94,15 +86,6 @@ QuickTimeVideoPlayer::~QuickTimeVideoPlayer()
#endif
}
-void QuickTimeVideoPlayer::releaseImageCache()
-{
- if (m_cachedCVTextureRef){
- CVOpenGLTextureRelease(m_cachedCVTextureRef);
- m_cachedCVTextureRef = 0;
- }
- m_cachedQImage = QImage();
-}
-
void QuickTimeVideoPlayer::createVisualContext()
{
#ifdef QUICKTIME_C_API_AVAILABLE
@@ -142,10 +125,7 @@ bool QuickTimeVideoPlayer::videoFrameChanged()
return false;
QTVisualContextTask(m_visualContext);
- bool changed = QTVisualContextIsNewImageAvailable(m_visualContext, 0);
- if (changed)
- releaseImageCache();
- return changed;
+ return QTVisualContextIsNewImageAvailable(m_visualContext, 0);
#elif defined(QT_MAC_USE_COCOA)
return true;
@@ -160,11 +140,10 @@ CVOpenGLTextureRef QuickTimeVideoPlayer::currentFrameAsCVTexture()
#ifdef QUICKTIME_C_API_AVAILABLE
if (!m_visualContext)
return 0;
- if (!m_cachedCVTextureRef){
- OSStatus err = QTVisualContextCopyImageForTime(m_visualContext, 0, 0, &m_cachedCVTextureRef);
- BACKEND_ASSERT3(err == noErr, "Could not copy image for time in QuickTime player", FATAL_ERROR, 0)
- }
- return m_cachedCVTextureRef;
+ CVOpenGLTextureRef texture = 0;
+ OSStatus err = QTVisualContextCopyImageForTime(m_visualContext, 0, 0, &texture);
+ BACKEND_ASSERT3(err == noErr, "Could not copy image for time in QuickTime player", FATAL_ERROR, 0)
+ return texture;
#else
return 0;
@@ -173,9 +152,6 @@ CVOpenGLTextureRef QuickTimeVideoPlayer::currentFrameAsCVTexture()
QImage QuickTimeVideoPlayer::currentFrameAsQImage()
{
- if (!m_cachedQImage.isNull())
- return m_cachedQImage;
-
#ifdef QUICKTIME_C_API_AVAILABLE
QGLContext *prevContext = const_cast<QGLContext *>(QGLContext::currentContext());
CVOpenGLTextureRef texture = currentFrameAsCVTexture();
@@ -205,11 +181,12 @@ QImage QuickTimeVideoPlayer::currentFrameAsQImage()
glVertex2i(-1, -1);
glEnd();
- m_cachedQImage = m_QImagePixelBuffer->toImage();
+ QImage image = m_QImagePixelBuffer->toImage();
+ CVOpenGLTextureRelease(texture);
// Because of QuickTime, m_QImagePixelBuffer->doneCurrent() will fail.
// So we store, and restore, the context our selves:
prevContext->makeCurrent();
- return m_cachedQImage;
+ return image;
#else
CIImage *img = (CIImage *)currentFrameAsCIImage();
if (!img)
@@ -218,10 +195,10 @@ QImage QuickTimeVideoPlayer::currentFrameAsQImage()
NSBitmapImageRep* bitmap = [[NSBitmapImageRep alloc] initWithCIImage:img];
CGRect bounds = [img extent];
QImage qImg([bitmap bitmapData], bounds.size.width, bounds.size.height, QImage::Format_ARGB32);
- m_cachedQImage = qImg.rgbSwapped();
+ QImage swapped = qImg.rgbSwapped();
[bitmap release];
[img release];
- return m_cachedQImage;
+ return swapped;
#endif
}
@@ -273,7 +250,8 @@ void *QuickTimeVideoPlayer::currentFrameAsCIImage()
#ifdef QUICKTIME_C_API_AVAILABLE
CVOpenGLTextureRef cvImg = currentFrameAsCVTexture();
CIImage *img = [[CIImage alloc] initWithCVImageBuffer:cvImg];
- return img;
+ CVOpenGLTextureRelease(cvImg);
+ return img;
#else
return 0;
#endif
@@ -295,7 +273,7 @@ GLuint QuickTimeVideoPlayer::currentFrameAsGLTexture()
int samplesPerPixel = [bitmap samplesPerPixel];
if (![bitmap isPlanar] && (samplesPerPixel == 3 || samplesPerPixel == 4)){
- glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0,
+ glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0,
samplesPerPixel == 4 ? GL_RGBA8 : GL_RGB8,
[bitmap pixelsWide], [bitmap pixelsHigh],
0, samplesPerPixel == 4 ? GL_RGBA : GL_RGB,
@@ -324,7 +302,7 @@ void QuickTimeVideoPlayer::setVolume(float masterVolume, float relativeVolume)
m_masterVolume = masterVolume;
m_relativeVolume = relativeVolume;
if (!m_QTMovie || !m_audioEnabled || m_mute)
- return;
+ return;
[m_QTMovie setVolume:(m_masterVolume * m_relativeVolume)];
}
@@ -335,7 +313,7 @@ void QuickTimeVideoPlayer::setMute(bool mute)
return;
// Work-around bug that happends if you set/unset mute
- // before movie is playing, and audio is not played
+ // before movie is playing, and audio is not played
// through graph. Then audio is delayed.
[m_QTMovie setMuted:mute];
[m_QTMovie setVolume:(mute ? 0 : m_masterVolume * m_relativeVolume)];
@@ -348,7 +326,7 @@ void QuickTimeVideoPlayer::enableAudio(bool enable)
return;
// Work-around bug that happends if you set/unset mute
- // before movie is playing, and audio is not played
+ // before movie is playing, and audio is not played
// through graph. Then audio is delayed.
[m_QTMovie setMuted:(!enable || m_mute)];
[m_QTMovie setVolume:((!enable || m_mute) ? 0 : m_masterVolume * m_relativeVolume)];
@@ -367,7 +345,7 @@ bool QuickTimeVideoPlayer::setAudioDevice(int id)
#ifdef QUICKTIME_C_API_AVAILABLE
// The following code will not work for some media codecs that
// typically mingle audio/video frames (e.g mpeg).
- CFStringRef idString = PhononCFString::toCFStringRef(AudioDevice::deviceUID(id));
+ CFStringRef idString = PhononCFString::toCFStringRef(AudioDevice::deviceUID(id));
QTAudioContextRef context;
QTAudioContextCreateForAudioDevice(kCFAllocatorDefault, idString, 0, &context);
OSStatus err = SetMovieAudioContext([m_QTMovie quickTimeMovie], context);
@@ -391,16 +369,11 @@ void QuickTimeVideoPlayer::setColors(qreal brightness, qreal contrast, qreal hue
contrast += 1;
saturation += 1;
- if (m_brightness == brightness
- && m_contrast == contrast
- && m_hue == hue
- && m_saturation == saturation)
- return;
-
m_brightness = brightness;
m_contrast = contrast;
m_hue = hue;
m_saturation = saturation;
+
#ifdef QUICKTIME_C_API_AVAILABLE
Float32 value;
value = brightness;
@@ -412,7 +385,6 @@ void QuickTimeVideoPlayer::setColors(qreal brightness, qreal contrast, qreal hue
value = saturation;
SetMovieVisualSaturation([m_QTMovie quickTimeMovie], value, 0);
#endif
- releaseImageCache();
}
QRect QuickTimeVideoPlayer::videoRect() const
@@ -425,7 +397,7 @@ QRect QuickTimeVideoPlayer::videoRect() const
return QRect(0, 0, size.width, size.height);
}
-void QuickTimeVideoPlayer::unsetCurrentMediaSource()
+void QuickTimeVideoPlayer::unsetVideo()
{
if (!m_QTMovie)
return;
@@ -438,17 +410,11 @@ void QuickTimeVideoPlayer::unsetCurrentMediaSource()
m_state = NoMedia;
m_isDrmProtected = false;
m_isDrmAuthorized = true;
- m_hasVideo = false;
- m_staticFps = 0;
m_mediaSource = MediaSource();
- m_movieCompactDiscPath.clear();
[(CIImage *)m_primaryRenderingCIImage release];
m_primaryRenderingCIImage = 0;
delete m_QImagePixelBuffer;
m_QImagePixelBuffer = 0;
- releaseImageCache();
- [m_folderTracks release];
- m_folderTracks = 0;
}
QuickTimeVideoPlayer::State QuickTimeVideoPlayer::state() const
@@ -558,25 +524,18 @@ bool QuickTimeVideoPlayer::codecExistsAccordingToSuffix(const QString &fileName)
void QuickTimeVideoPlayer::setMediaSource(const MediaSource &mediaSource)
{
PhononAutoReleasePool pool;
- unsetCurrentMediaSource();
-
+ unsetVideo();
m_mediaSource = mediaSource;
if (mediaSource.type() == MediaSource::Empty || mediaSource.type() == MediaSource::Invalid){
m_state = NoMedia;
return;
}
-
openMovieFromCurrentMediaSource();
if (errorOccured()){
- unsetCurrentMediaSource();
+ unsetVideo();
return;
}
- prepareCurrentMovieForPlayback();
-}
-
-void QuickTimeVideoPlayer::prepareCurrentMovieForPlayback()
-{
#ifdef QUICKTIME_C_API_AVAILABLE
if (m_visualContext)
SetMovieVisualContext([m_QTMovie quickTimeMovie], m_visualContext);
@@ -584,25 +543,23 @@ void QuickTimeVideoPlayer::prepareCurrentMovieForPlayback()
waitStatePlayable();
if (errorOccured()){
- unsetCurrentMediaSource();
+ unsetVideo();
return;
}
readProtection();
preRollMovie();
if (errorOccured()){
- unsetCurrentMediaSource();
+ unsetVideo();
return;
}
if (!m_playbackRateSat)
m_playbackRate = prefferedPlaybackRate();
checkIfVideoAwailable();
- calculateStaticFps();
enableAudio(m_audioEnabled);
setMute(m_mute);
setVolume(m_masterVolume, m_relativeVolume);
- m_metaData->update();
pause();
}
@@ -616,7 +573,7 @@ void QuickTimeVideoPlayer::openMovieFromCurrentMediaSource()
openMovieFromUrl();
break;
case MediaSource::Disc:
- openMovieFromCompactDisc();
+ CASE_UNSUPPORTED("Could not open media source.", FATAL_ERROR)
break;
case MediaSource::Stream:
openMovieFromStream();
@@ -678,7 +635,7 @@ void QuickTimeVideoPlayer::openMovieFromDataGuessType(QByteArray *data)
// than using e.g [QTMovie movieFileTypes:QTIncludeCommonTypes]. Some
// codecs *think* they can decode the stream, and crash...
#define TryOpenMovieWithCodec(type) gClearError(); \
- openMovieFromData(data, (char *)"."type); \
+ openMovieFromData(data, "."type); \
if (m_QTMovie) return;
TryOpenMovieWithCodec("avi");
@@ -718,50 +675,6 @@ void QuickTimeVideoPlayer::openMovieFromStream()
openMovieFromDataGuessType(m_streamReader->pointerToData());
}
-typedef void (*qt_sighandler_t)(int);
-static void sigtest(int) {
- qApp->exit(0);
-}
-
-void QuickTimeVideoPlayer::openMovieFromCompactDisc()
-{
- // Interrupting the application while the device is open
- // causes the application to hang. So we need to handle
- // this in a more graceful way:
- qt_sighandler_t hndl = signal(SIGINT, sigtest);
- if (hndl)
- signal(SIGINT, hndl);
-
- PhononAutoReleasePool pool;
- NSString *cd = 0;
- QString devName = m_mediaSource.deviceName();
- if (devName.isEmpty()) {
- cd = pathToCompactDisc();
- if (!cd) {
- SET_ERROR("Could not open media source.", NORMAL_ERROR)
- return;
- }
- m_movieCompactDiscPath = PhononCFString::toQString(reinterpret_cast<CFStringRef>(cd));
- } else {
- if (!QFileInfo(devName).isAbsolute())
- devName = QLatin1String("/Volumes/") + devName;
- cd = [reinterpret_cast<const NSString *>(PhononCFString::toCFStringRef(devName)) autorelease];
- if (!isCompactDisc(cd)) {
- SET_ERROR("Could not open media source.", NORMAL_ERROR)
- return;
- }
- m_movieCompactDiscPath = devName;
- }
-
- m_folderTracks = [scanFolder(cd) retain];
- setCurrentTrack(0);
-}
-
-QString QuickTimeVideoPlayer::movieCompactDiscPath() const
-{
- return m_movieCompactDiscPath;
-}
-
MediaSource QuickTimeVideoPlayer::mediaSource() const
{
return m_mediaSource;
@@ -807,44 +720,6 @@ long QuickTimeVideoPlayer::timeScale() const
return [[m_QTMovie attributeForKey:@"QTMovieTimeScaleAttribute"] longValue];
}
-float QuickTimeVideoPlayer::staticFps()
-{
- return m_staticFps;
-}
-
-void QuickTimeVideoPlayer::calculateStaticFps()
-{
- if (!m_hasVideo){
- m_staticFps = 0;
- return;
- }
-
-#ifdef QT_ALLOW_QUICKTIME
- Boolean isMpeg = false;
- Track videoTrack = GetMovieIndTrackType([m_QTMovie quickTimeMovie], 1,
- FOUR_CHAR_CODE('vfrr'), // 'vfrr' means: has frame rate
- movieTrackCharacteristic | movieTrackEnabledOnly);
- Media media = GetTrackMedia(videoTrack);
- MediaHandler mediaH = GetMediaHandler(media);
- MediaHasCharacteristic(mediaH, FOUR_CHAR_CODE('mpeg'), &isMpeg);
-
- if (isMpeg){
- MHInfoEncodedFrameRateRecord frameRate;
- Size frameRateSize = sizeof(frameRate);
- MediaGetPublicInfo(mediaH, kMHInfoEncodedFrameRate, &frameRate, &frameRateSize);
- m_staticFps = float(Fix2X(frameRate.encodedFrameRate));
- } else {
- Media media = GetTrackMedia(videoTrack);
- long sampleCount = GetMediaSampleCount(media);
- TimeValue64 duration = GetMediaDisplayDuration(media);
- TimeValue64 timeScale = GetMediaTimeScale(media);
- m_staticFps = float((double)sampleCount * (double)timeScale / (double)duration);
- }
-#else
- m_staticFps = 30.0f;
-#endif
-}
-
QString QuickTimeVideoPlayer::timeToString(quint64 ms)
{
int sec = ms/1000;
@@ -1075,94 +950,6 @@ void QuickTimeVideoPlayer::readProtection()
}
}
-QMultiMap<QString, QString> QuickTimeVideoPlayer::metaData()
-{
- return m_metaData->metaData();
-}
-
-int QuickTimeVideoPlayer::trackCount() const
-{
- if (!m_folderTracks)
- return 0;
- return [m_folderTracks count];
-}
-
-int QuickTimeVideoPlayer::currentTrack() const
-{
- return m_currentTrack;
-}
-
-QString QuickTimeVideoPlayer::currentTrackPath() const
-{
- if (!m_folderTracks)
- return QString();
-
- PhononAutoReleasePool pool;
- NSString *trackPath = [m_folderTracks objectAtIndex:m_currentTrack];
- return PhononCFString::toQString(reinterpret_cast<CFStringRef>(trackPath));
-}
-
-NSString* QuickTimeVideoPlayer::pathToCompactDisc()
-{
- PhononAutoReleasePool pool;
- NSArray *devices = [[NSWorkspace sharedWorkspace] mountedRemovableMedia];
- for (unsigned int i=0; i<[devices count]; ++i) {
- NSString *dev = [devices objectAtIndex:i];
- if (isCompactDisc(dev))
- return [dev retain];
- }
- return 0;
-}
-
-bool QuickTimeVideoPlayer::isCompactDisc(NSString *path)
-{
- PhononAutoReleasePool pool;
- NSString *type = [NSString string];
- [[NSWorkspace sharedWorkspace] getFileSystemInfoForPath:path
- isRemovable:0
- isWritable:0
- isUnmountable:0
- description:0
- type:&type];
- return [type hasPrefix:@"cdd"];
-}
-
-NSArray* QuickTimeVideoPlayer::scanFolder(NSString *path)
-{
- NSMutableArray *tracks = [NSMutableArray arrayWithCapacity:20];
- if (!path)
- return tracks;
-
- NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager] enumeratorAtPath:path];
- while (NSString *track = [enumerator nextObject]) {
- if (![track hasPrefix:@"."])
- [tracks addObject:[path stringByAppendingPathComponent:track]];
- }
- return tracks;
-}
-
-void QuickTimeVideoPlayer::setCurrentTrack(int track)
-{
- PhononAutoReleasePool pool;
- [m_QTMovie release];
- m_QTMovie = 0;
- m_currentTime = 0;
- m_currentTrack = track;
-
- if (!m_folderTracks)
- return;
- if (track < 0 || track >= (int)[m_folderTracks count])
- return;
-
- NSString *trackPath = [m_folderTracks objectAtIndex:track];
- QTDataReference *dataRef = [QTDataReference dataReferenceWithReferenceToFile:trackPath];
- State currentState = m_state;
- openMovieFromDataRef(dataRef);
- prepareCurrentMovieForPlayback();
- if (currentState == Playing)
- play();
-}
-
}}
QT_END_NAMESPACE
diff --git a/src/3rdparty/phonon/qt7/videoframe.mm b/src/3rdparty/phonon/qt7/videoframe.mm
index 7b67b5e..92a3cd5 100644
--- a/src/3rdparty/phonon/qt7/videoframe.mm
+++ b/src/3rdparty/phonon/qt7/videoframe.mm
@@ -20,8 +20,6 @@
#import <QuartzCore/CIFilter.h>
#import <QuartzCore/CIContext.h>
-//#define CACHE_CV_TEXTURE
-
QT_BEGIN_NAMESPACE
namespace Phonon
@@ -72,9 +70,7 @@ namespace QT7
void VideoFrame::copyMembers(const VideoFrame& frame)
{
-#ifdef CACHE_CV_TEXTURE
m_cachedCVTextureRef = frame.m_cachedCVTextureRef;
-#endif
m_cachedCIImage = frame.m_cachedCIImage;
m_cachedQImage = frame.m_cachedQImage;
m_cachedNSBitmap = frame.m_cachedNSBitmap;
@@ -109,20 +105,11 @@ namespace QT7
CVOpenGLTextureRef VideoFrame::cachedCVTexture() const
{
-#ifdef CACHE_CV_TEXTURE
if (!m_cachedCVTextureRef && m_videoPlayer){
m_videoPlayer->setColors(m_brightness, m_contrast, m_hue, m_saturation);
(const_cast<VideoFrame *>(this))->m_cachedCVTextureRef = m_videoPlayer->currentFrameAsCVTexture();
- CVOpenGLTextureRetain((const_cast<VideoFrame *>(this))->m_cachedCVTextureRef);
}
return m_cachedCVTextureRef;
-#else
- if (m_videoPlayer){
- m_videoPlayer->setColors(m_brightness, m_contrast, m_hue, m_saturation);
- return m_videoPlayer->currentFrameAsCVTexture();
- }
- return 0;
-#endif
}
void *VideoFrame::cachedCIImage() const
@@ -342,12 +329,10 @@ namespace QT7
void VideoFrame::invalidateImage() const
{
-#ifdef CACHE_CV_TEXTURE
if (m_cachedCVTextureRef){
CVOpenGLTextureRelease(m_cachedCVTextureRef);
(const_cast<VideoFrame *>(this))->m_cachedCVTextureRef = 0;
}
-#endif
if (m_cachedCIImage){
[(CIImage *) m_cachedCIImage release];
(const_cast<VideoFrame *>(this))->m_cachedCIImage = 0;
@@ -361,10 +346,8 @@ namespace QT7
void VideoFrame::retain() const
{
-#ifdef CACHE_CV_TEXTURE
if (m_cachedCVTextureRef)
CVOpenGLTextureRetain(m_cachedCVTextureRef);
-#endif
if (m_cachedCIImage)
[(CIImage *) m_cachedCIImage retain];
if (m_backgroundFrame)
@@ -375,12 +358,8 @@ namespace QT7
void VideoFrame::release() const
{
-#ifdef CACHE_CV_TEXTURE
- if (m_cachedCVTextureRef){
+ if (m_cachedCVTextureRef)
CVOpenGLTextureRelease(m_cachedCVTextureRef);
- (const_cast<VideoFrame *>(this))->m_cachedCVTextureRef = 0;
- }
-#endif
if (m_cachedCIImage)
[(CIImage *) m_cachedCIImage release];
if (m_backgroundFrame)
@@ -389,6 +368,7 @@ namespace QT7
[m_cachedNSBitmap release];
(const_cast<VideoFrame *>(this))->m_backgroundFrame = 0;
+ (const_cast<VideoFrame *>(this))->m_cachedCVTextureRef = 0;
(const_cast<VideoFrame *>(this))->m_cachedCIImage = 0;
(const_cast<VideoFrame *>(this))->m_cachedNSBitmap = 0;
}
diff --git a/src/3rdparty/webkit/.gitattributes b/src/3rdparty/webkit/.gitattributes
new file mode 100644
index 0000000..5b43bd0
--- /dev/null
+++ b/src/3rdparty/webkit/.gitattributes
@@ -0,0 +1,4 @@
+# To enable automatic merging of ChangeLog files, use the following command:
+# git config merge.changelog.driver "resolve-ChangeLogs --merge-driver %O %A %B"
+ChangeLog* merge=changelog
+
diff --git a/src/3rdparty/webkit/ChangeLog b/src/3rdparty/webkit/ChangeLog
index 1e89d1e..57cb0de 100644
--- a/src/3rdparty/webkit/ChangeLog
+++ b/src/3rdparty/webkit/ChangeLog
@@ -1,3 +1,11 @@
+2010-02-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
+
+ Reviewed by Eric Seidel.
+
+ Add .gitattributes file for custom ChangeLog merge-driver
+
+ * .gitattributes: Added.
+
2009-11-30 Jan-Arve Sæther <jan-arve.saether@nokia.com>
Reviewed by Simon Hausmann.
diff --git a/src/3rdparty/webkit/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/JavaScriptCore/ChangeLog
index 6446773..8932b3b 100644
--- a/src/3rdparty/webkit/JavaScriptCore/ChangeLog
+++ b/src/3rdparty/webkit/JavaScriptCore/ChangeLog
@@ -1,3 +1,31 @@
+2010-03-22 Siddharth Mathur <siddharth.mathur@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Symbian] More efficient aligned memory allocation for JSC Collector
+ https://bugs.webkit.org/show_bug.cgi?id=34350
+
+ * JavaScriptCore.pri: Added 2 new Symbian source files and HAL linkage
+
+ * runtime/Collector.cpp: Reduced port-specific code and added private data member
+ (JSC::Heap::Heap):
+ (JSC::Heap::~Heap):
+ (JSC::Heap::destroy):
+ (JSC::Heap::allocateBlock):
+ (JSC::Heap::freeBlockPtr):
+
+ * runtime/Collector.h: Added private data member
+
+ * wtf/symbian: Added.
+ * wtf/symbian/BlockAllocatorSymbian.cpp: Added.
+ (WTF::AlignedBlockAllocator::AlignedBlockAllocator): Helper class to allocate
+ aligned blocks more efficiently as required by Collector
+ (WTF::AlignedBlockAllocator::alloc):
+ (WTF::AlignedBlockAllocator::free):
+ (WTF::AlignedBlockAllocator::destroy):
+ (WTF::AlignedBlockAllocator::~AlignedBlockAllocator):
+ * wtf/symbian/BlockAllocatorSymbian.h: Added.
+
2010-02-09 Janne Koskinen <janne.p.koskinen@digia.com>
Reviewed by Laszlo Gombos.
diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri
index bb531e5..a0f9f8e 100644
--- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri
+++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri
@@ -9,6 +9,10 @@ CONFIG(debug, debug|release) {
OBJECTS_DIR = obj/release
}
+symbian {
+ LIBS += -lhal
+}
+
INCLUDEPATH = \
$$PWD \
$$PWD/.. \
@@ -23,6 +27,7 @@ INCLUDEPATH = \
$$PWD/runtime \
$$PWD/wrec \
$$PWD/wtf \
+ $$PWD/wtf/symbian \
$$PWD/wtf/unicode \
$$PWD/yarr \
$$PWD/API \
@@ -243,6 +248,7 @@ SOURCES += \
profiler/TreeProfile.cpp \
wtf/DateMath.cpp \
wtf/FastMalloc.cpp \
+ wtf/symbian/BlockAllocatorSymbian.cpp \
wtf/Threading.cpp \
wtf/qt/MainThreadQt.cpp
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp
index 8b647a0..6626182 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp
@@ -52,11 +52,6 @@
#include <mach/thread_act.h>
#include <mach/vm_map.h>
-#elif PLATFORM(SYMBIAN)
-#include <e32std.h>
-#include <e32cmn.h>
-#include <unistd.h>
-
#elif PLATFORM(WIN_OS)
#include <windows.h>
@@ -124,11 +119,6 @@ const size_t ALLOCATIONS_PER_COLLECTION = 4000;
// a PIC branch in Mach-O binaries, see <rdar://problem/5971391>.
#define MIN_ARRAY_SIZE (static_cast<size_t>(14))
-#if PLATFORM(SYMBIAN)
-const size_t MAX_NUM_BLOCKS = 256; // Max size of collector heap set to 16 MB
-static RHeap* userChunk = 0;
-#endif
-
#if ENABLE(JSC_MULTIPLE_THREADS)
#if PLATFORM(DARWIN)
@@ -165,29 +155,11 @@ Heap::Heap(JSGlobalData* globalData)
, m_currentThreadRegistrar(0)
#endif
, m_globalData(globalData)
+#if PLATFORM(SYMBIAN)
+ , m_blockallocator(JSCCOLLECTOR_VIRTUALMEM_RESERVATION, BLOCK_SIZE)
+#endif
{
ASSERT(globalData);
-
-#if PLATFORM(SYMBIAN)
- // Symbian OpenC supports mmap but currently not the MAP_ANON flag.
- // Using fastMalloc() does not properly align blocks on 64k boundaries
- // and previous implementation was flawed/incomplete.
- // UserHeap::ChunkHeap allows allocation of continuous memory and specification
- // of alignment value for (symbian) cells within that heap.
- //
- // Clarification and mapping of terminology:
- // RHeap (created by UserHeap::ChunkHeap below) is continuos memory chunk,
- // which can dynamically grow up to 8 MB,
- // that holds all CollectorBlocks of this session (static).
- // Each symbian cell within RHeap maps to a 64kb aligned CollectorBlock.
- // JSCell objects are maintained as usual within CollectorBlocks.
- if (!userChunk) {
- userChunk = UserHeap::ChunkHeap(0, 0, MAX_NUM_BLOCKS * BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE);
- if (!userChunk)
- CRASH();
- }
-#endif // PLATFORM(SYMBIAN)
-
memset(&primaryHeap, 0, sizeof(CollectorHeap));
memset(&numberHeap, 0, sizeof(CollectorHeap));
}
@@ -233,7 +205,9 @@ void Heap::destroy()
t = next;
}
#endif
-
+#if PLATFORM(SYMBIAN)
+ m_blockallocator.destroy();
+#endif
m_globalData = 0;
}
@@ -247,12 +221,9 @@ NEVER_INLINE CollectorBlock* Heap::allocateBlock()
// FIXME: tag the region as a JavaScriptCore heap when we get a registered VM tag: <rdar://problem/6054788>.
vm_map(current_task(), &address, BLOCK_SIZE, BLOCK_OFFSET_MASK, VM_FLAGS_ANYWHERE | VM_TAG_FOR_COLLECTOR_MEMORY, MEMORY_OBJECT_NULL, 0, FALSE, VM_PROT_DEFAULT, VM_PROT_DEFAULT, VM_INHERIT_DEFAULT);
#elif PLATFORM(SYMBIAN)
- // Allocate a 64 kb aligned CollectorBlock
- unsigned char* mask = reinterpret_cast<unsigned char*>(userChunk->Alloc(BLOCK_SIZE));
- if (!mask)
+ void* address = m_blockallocator.alloc();
+ if (!address)
CRASH();
- uintptr_t address = reinterpret_cast<uintptr_t>(mask);
-
memset(reinterpret_cast<void*>(address), 0, BLOCK_SIZE);
#elif PLATFORM(WINCE)
void* address = VirtualAlloc(NULL, BLOCK_SIZE, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
@@ -339,7 +310,7 @@ NEVER_INLINE void Heap::freeBlock(CollectorBlock* block)
#if PLATFORM(DARWIN) && !PLATFORM(QT)
vm_deallocate(current_task(), reinterpret_cast<vm_address_t>(block), BLOCK_SIZE);
#elif PLATFORM(SYMBIAN)
- userChunk->Free(reinterpret_cast<TAny*>(block));
+ m_blockallocator.free(reinterpret_cast<void*>(block));
#elif PLATFORM(WINCE)
VirtualFree(block, 0, MEM_RELEASE);
#elif PLATFORM(WIN_OS)
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h
index 9ca9d18..086e519 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h
@@ -35,6 +35,10 @@
#include <pthread.h>
#endif
+#if PLATFORM(SYMBIAN)
+#include <wtf/symbian/BlockAllocatorSymbian.h>
+#endif
+
#define ASSERT_CLASS_FITS_IN_CELL(class) COMPILE_ASSERT(sizeof(class) <= CELL_SIZE, class_fits_in_cell)
namespace JSC {
@@ -157,6 +161,11 @@ namespace JSC {
pthread_key_t m_currentThreadRegistrar;
#endif
+#if PLATFORM(SYMBIAN)
+ // Allocates collector blocks with correct alignment
+ WTF::AlignedBlockAllocator m_blockallocator;
+#endif
+
JSGlobalData* m_globalData;
};
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/StructureTransitionTable.h b/src/3rdparty/webkit/JavaScriptCore/runtime/StructureTransitionTable.h
index 0fa7b73..f39560a 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/StructureTransitionTable.h
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/StructureTransitionTable.h
@@ -143,14 +143,14 @@ namespace JSC {
if (!specificValue) {
TransitionTable::iterator find = table()->find(key);
if (find == table()->end())
- table()->add(key, Transition(structure, 0));
+ table()->add(key, Transition(structure, (Structure*)0));
else
find->second.first = structure;
} else {
// If we're adding a transition to a specific value, then there cannot be
// an existing transition
ASSERT(!table()->contains(key));
- table()->add(key, Transition(0, structure));
+ table()->add(key, Transition((Structure*)0, structure));
}
}
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.cpp b/src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.cpp
new file mode 100644
index 0000000..cc8fd15
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.cpp
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#if PLATFORM(SYMBIAN)
+
+#include "BlockAllocatorSymbian.h"
+
+
+namespace WTF {
+
+/** Efficiently allocates blocks of size blockSize with blockSize alignment.
+ * Primarly designed for JSC Collector's needs.
+ * Not thread-safe.
+ */
+AlignedBlockAllocator::AlignedBlockAllocator(TUint32 reservationSize, TUint32 blockSize )
+ : m_reservation(reservationSize),
+ m_blockSize(blockSize)
+{
+
+ // Get system's page size value.
+ SYMBIAN_PAGESIZE(m_pageSize);
+
+ // We only accept multiples of system page size for both initial reservation and the alignment/block size
+ m_reservation = SYMBIAN_ROUNDUPTOMULTIPLE(m_reservation, m_pageSize);
+ __ASSERT_ALWAYS(SYMBIAN_ROUNDUPTOMULTIPLE(m_blockSize, m_pageSize), User::Panic(_L("AlignedBlockAllocator1"), KErrArgument));
+
+ // Calculate max. bit flags we need to carve a reservationSize range into blockSize-sized blocks
+ m_map.numBits = m_reservation / m_blockSize;
+ const TUint32 bitsPerWord = 8*sizeof(TUint32);
+ const TUint32 numWords = (m_map.numBits + bitsPerWord -1) / bitsPerWord;
+
+ m_map.bits = new TUint32[numWords];
+ __ASSERT_ALWAYS(m_map.bits, User::Panic(_L("AlignedBlockAllocator2"), KErrNoMemory));
+ m_map.clearAll();
+
+ // Open a Symbian RChunk, and reserve requested virtual address range
+ // Any thread in this process can operate this rchunk due to EOwnerProcess access rights.
+ TInt ret = m_chunk.CreateDisconnectedLocal(0 , 0, (TInt)m_reservation , EOwnerProcess);
+ if (ret != KErrNone)
+ User::Panic(_L("AlignedBlockAllocator3"), ret);
+
+ // This is the offset to m_chunk.Base() required to make it m_blockSize-aligned
+ m_offset = SYMBIAN_ROUNDUPTOMULTIPLE(TUint32(m_chunk.Base()), m_blockSize) - TUint(m_chunk.Base());
+
+}
+
+void* AlignedBlockAllocator::alloc()
+{
+
+ TInt freeRam = 0;
+ void* address = 0;
+
+ // Look up first free slot in bit map
+ const TInt freeIdx = m_map.findFree();
+
+ // Pseudo OOM: We ate up the address space we reserved..
+ // ..even though the device may have free RAM left
+ if (freeIdx < 0)
+ return 0;
+
+ TInt ret = m_chunk.Commit(m_offset + (m_blockSize * freeIdx), m_blockSize);
+ if (ret != KErrNone)
+ return 0; // True OOM: Device didn't have physical RAM to spare
+
+ // Updated bit to mark region as in use.
+ m_map.set(freeIdx);
+
+ // Calculate address of committed region (block)
+ address = (void*)( (m_chunk.Base() + m_offset) + (TUint)(m_blockSize * freeIdx) );
+
+ return address;
+}
+
+void AlignedBlockAllocator::free(void* block)
+{
+ // Calculate index of block to be freed
+ TInt idx = TUint(static_cast<TUint8*>(block) - m_chunk.Base() - m_offset) / m_blockSize;
+
+ __ASSERT_DEBUG(idx >= 0 && idx < m_map.numBits, User::Panic(_L("AlignedBlockAllocator4"), KErrCorrupt)); // valid index check
+ __ASSERT_DEBUG(m_map.get(idx), User::Panic(_L("AlignedBlockAllocator5"), KErrCorrupt)); // in-use flag check
+
+ // Return committed region to system RAM pool (the physical RAM becomes usable by others)
+ TInt ret = m_chunk.Decommit(m_offset + m_blockSize * idx, m_blockSize);
+
+ // mark this available again
+ m_map.clear(idx);
+}
+
+void AlignedBlockAllocator::destroy()
+{
+ // release everything!
+ m_chunk.Decommit(0, m_chunk.MaxSize());
+ m_map.clearAll();
+}
+
+AlignedBlockAllocator::~AlignedBlockAllocator()
+{
+ destroy();
+ m_chunk.Close();
+ delete [] m_map.bits;
+}
+
+} // end of namespace
+
+#endif // SYMBIAN
diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.h b/src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.h
new file mode 100644
index 0000000..21422f6
--- /dev/null
+++ b/src/3rdparty/webkit/JavaScriptCore/wtf/symbian/BlockAllocatorSymbian.h
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef BlockAllocatorSymbian_h
+#define BlockAllocatorSymbian_h
+
+#include <e32cmn.h>
+#include <e32std.h>
+#include <hal.h>
+
+
+#define SYMBIAN_PAGESIZE(x) (HAL::Get(HALData::EMemoryPageSize, x));
+#define SYMBIAN_FREERAM(x) (HAL::Get(HALData::EMemoryRAMFree, x));
+#define SYMBIAN_ROUNDUPTOMULTIPLE(x, multipleof) ( (x + multipleof - 1) & ~(multipleof - 1) )
+
+// Set sane defaults if -D<flagname=value> wasn't provided via compiler args
+#ifndef JSCCOLLECTOR_VIRTUALMEM_RESERVATION
+#if defined(__WINS__)
+ // Emulator has limited virtual address space
+ #define JSCCOLLECTOR_VIRTUALMEM_RESERVATION (4*1024*1024)
+#else
+ // HW has plenty of virtual addresses
+ #define JSCCOLLECTOR_VIRTUALMEM_RESERVATION (128*1024*1024)
+#endif
+#endif
+
+namespace WTF {
+
+/**
+ * Allocates contiguous region of size blockSize with blockSize-aligned address.
+ * blockSize must be a multiple of system page size (typically 4K on Symbian/ARM)
+ *
+ * @param reservationSize Virtual address range to be reserved upon creation of chunk (bytes).
+ * @param blockSize Size of a single allocation. Returned address will also be blockSize-aligned.
+ */
+class AlignedBlockAllocator {
+ public:
+ AlignedBlockAllocator(TUint32 reservationSize, TUint32 blockSize);
+ ~AlignedBlockAllocator();
+ void destroy();
+ void* alloc();
+ void free(void* data);
+
+ private:
+ RChunk m_chunk; // Symbian chunk that lets us reserve/commit/decommit
+ TUint m_offset; // offset of first committed region from base
+ TInt m_pageSize; // cached value of system page size, typically 4K on Symbian
+ TUint32 m_reservation;
+ TUint32 m_blockSize;
+
+ // Tracks comitted/decommitted state of a blockSize region
+ struct {
+
+ TUint32 *bits; // array of bit flags
+ TUint32 numBits; // number of regions to keep track of
+
+ bool get(TUint32 n) const
+ {
+ return !!(bits[n >> 5] & (1 << (n & 0x1F)));
+ }
+
+ void set(TUint32 n)
+ {
+ bits[n >> 5] |= (1 << (n & 0x1F));
+ }
+
+ void clear(TUint32 n)
+ {
+ bits[n >> 5] &= ~(1 << (n & 0x1F));
+ }
+
+ void clearAll()
+ {
+ for (TUint32 i = 0; i < numBits; i++)
+ clear(i);
+ }
+
+ TInt findFree() const
+ {
+ for (TUint32 i = 0; i < numBits; i++) {
+ if (!get(i))
+ return i;
+ }
+ return -1;
+ }
+
+ } m_map;
+
+};
+
+}
+
+#endif // end of BlockAllocatorSymbian_h
+
+
diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index a2d5f37..4de7ad8 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -8,4 +8,4 @@ The commit imported was from the
and has the sha1 checksum
- 266a6c4f1938dd9edf4a8125faf91c62495e3ce2
+ ecfa4583e573ce4dff1f0df12f6bdba3022376e5
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index a3f70d3..2bd506b 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -1,3 +1,274 @@
+2010-03-25 yael aharon <yael.aharon@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ [Qt] Windowed netscape plugins don't work with QGraphicsWebView on Symbian
+ https://bugs.webkit.org/show_bug.cgi?id=35112
+
+ Add a proxy widget when loading a QWidget based plugin in a QGraphicsWebView.
+
+ * plugins/symbian/PluginContainerSymbian.cpp:
+ (PluginContainerSymbian::PluginContainerSymbian):
+ (PluginContainerSymbian::focusInEvent):
+ * plugins/symbian/PluginContainerSymbian.h:
+ (WebCore::PluginContainerSymbian::proxy):
+ * plugins/symbian/PluginViewSymbian.cpp:
+ (WebCore::PluginView::updatePluginWidget):
+ (WebCore::PluginView::platformStart):
+ (WebCore::PluginView::platformDestroy):
+
+2010-03-29 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed for the Qt 4.6 branch by Simon Hausmann.
+
+ Accept XHTML-MP content type as XHTML content
+ https://bugs.webkit.org/show_bug.cgi?id=34262
+
+ Enable processing XHTML-MP mime type as an XHTML document
+ even if XHTML-MP support is not enabled.
+
+ * platform/MIMETypeRegistry.cpp:
+ (WebCore::initializeSupportedNonImageMimeTypes):
+
+2010-03-22 Jakub Wieczorek <jwieczorek@webkit.org>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Don't construct a QLineEdit every time when painting a text field
+ https://bugs.webkit.org/show_bug.cgi?id=36373
+
+ Instead, keep one instance per RenderTheme around.
+
+ * platform/qt/RenderThemeQt.cpp:
+ (WebCore::findFrameLineWidth):
+
+2010-03-26 Janne Koskinen <janne.p.koskinen@digia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ Don't undefine SKIP_STATIC_CONSTRUCTORS_ON_GCC for Symbian HW targets.
+ https://bugs.webkit.org/show_bug.cgi?id=34081
+
+ Defining StringImpl instances as globals will cause a crash on process exit as
+ StringImpl::Remove expects TLS which was already deleted at time of exiting main and ends up
+ constructing one exiting thread.
+
+ * config.h:
+
+2010-02-02 Alexey Proskuryakov <ap@apple.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=34076
+ <rdar://problem/7594601> Crash in mangleme in WebCore::Element::getAttribute
+
+ Test: fast/forms/misplaced-img-form-registration.html
+
+ * html/HTMLFormElement.cpp:
+ (WebCore::HTMLFormElement::registerImgElement): Assert that the same image isn't added
+ to vector again.
+ (WebCore::HTMLFormElement::removeImgElement): Similarly, assert that we're removing something
+ that's actually registered.
+
+ * html/HTMLImageElement.cpp: (WebCore::HTMLImageElement::~HTMLImageElement): If parser fails
+ to insert the image element, then there will be no removed from tree notification either,
+ need to unregister right away.
+
+2010-01-25 Alexey Proskuryakov <ap@apple.com>
+
+ Rubber-stamped by Geoffrey Garen.
+
+ https://bugs.webkit.org/show_bug.cgi?id=34076
+ An image remains accessible via form.property syntax after being removed from document.
+
+ Fix crashing regression tests (tables/mozilla/bugs/bug4527.html et al.)
+
+ * html/HTMLImageElement.cpp: (WebCore::HTMLImageElement::insertedIntoTree): Remove incorrect
+ assertions added in the previous patch - it's mot true that m_for is always a parent; table
+ parsing can reparent the image element, but m_form still needs to be set.
+
+2010-01-25 Alexey Proskuryakov <ap@apple.com>
+
+ Reviewed by Geoffrey Garen.
+
+ https://bugs.webkit.org/show_bug.cgi?id=34076
+ An image remains accessible via form.property syntax after being removed from document.
+
+ Tests: fast/forms/removed-image-as-property.html
+ fast/forms/reparented-image-as-property.html
+
+ * html/HTMLImageElement.cpp:
+ (WebCore::HTMLImageElement::~HTMLImageElement): This is called during GC - not a good time
+ to make observable changes to DOM.
+ (WebCore::HTMLImageElement::insertedIntoTree): This is the right place to do any work that
+ depends on connectedness to some ancestor. We still allow for m_form to be set via constructor,
+ which happens during parsing.
+ (WebCore::HTMLImageElement::removedFromTree): Ditto.
+
+ * html/HTMLImageElement.h: Added removedFromTree/insertedIntoTree, moved removedFromDocument
+ and insertedIntoDocument to private section, as they shouldn't be called directly.
+
+2009-12-08 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Navigating to a cached page can result in accessing a destroyed HTMLInputElement.
+ <rdar://problem/6856662> and https://webkit.org/b/32293
+
+ Test: fast/loader/input-element-page-cache-crash.html
+
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::parseMappedAttribute): Make sure to unregister for the activation
+ callback after the new m_autocomplete setting has been stored so the unregistration actually
+ takes place.
+
+2009-12-13 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ <rdar://problem/7341364> Crash at HTMLParser::popOneBlockCommon() after
+ handling misnested residual style tags
+
+ Test: fast/parser/residual-style-close-ref-clone.html
+
+ * html/HTMLParser.cpp:
+ (WebCore::HTMLParser::handleResidualStyleCloseTagAcrossBlocks): Gave the
+ block stack a strong reference to the cloned residual style element.
+
+2009-12-23 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/7487164> First line of text cannot be selected
+ https://bugs.webkit.org/show_bug.cgi?id=32749
+
+ Test: fast/text/remove-zero-length-run.html
+
+ * rendering/RenderText.cpp:
+ (WebCore::RenderText::positionLineBox): Changed code that assumed that if a box was being
+ removed, it was the only box in the RenderText. Instead, correctly preserve the list of
+ text boxes.
+ (WebCore::RenderText::checkConsistency): Updated for earlier rename.
+
+2009-12-10 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Crash in XMLTokenizer::popCurrentNode if window.close() is called during parsing
+ https://bugs.webkit.org/show_bug.cgi?id=31576
+
+ Add a RefCounted wrapper object around xmlParserCtxtPtr so we can
+ maintain it's lifetime more effectively.
+
+ Test: fast/parser/xhtml-close-while-parsing.xhtml
+
+ * dom/XMLTokenizer.cpp:
+ (WebCore::XMLTokenizer::popCurrentNode):
+ * dom/XMLTokenizer.h:
+ (WebCore::XMLParserContext::context):
+ (WebCore::XMLParserContext::XMLParserContext):
+ (WebCore::XMLTokenizer::context):
+ * dom/XMLTokenizerLibxml2.cpp:
+ (WebCore::XMLParserContext::createStringParser):
+ (WebCore::XMLParserContext::createMemoryParser):
+ (WebCore::XMLParserContext::~XMLParserContext):
+ (WebCore::XMLTokenizer::~XMLTokenizer):
+ (WebCore::XMLTokenizer::doWrite):
+ (WebCore::XMLTokenizer::initializeParserContext):
+ (WebCore::XMLTokenizer::doEnd):
+ (WebCore::XMLTokenizer::lineNumber):
+ (WebCore::XMLTokenizer::columnNumber):
+ (WebCore::XMLTokenizer::stopParsing):
+ (WebCore::parseXMLDocumentFragment):
+ (WebCore::parseAttributes):
+
+2009-11-09 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Darin Adler and Dan Bernstein.
+
+ <rdar://problem/7328395>
+ https://bugs.webkit.org/show_bug.cgi?id=31277
+
+ When an object tag's style changes (for example when child nodes are added/removed),
+ reuse its Frame (if it has one) instead of creating multiple Frames.
+
+ Test: fast/dom/HTMLObjectElement/children-changed.html
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::requestObject):
+
+2009-12-05 Adam Langley <agl@google.com>
+
+ Reviewed by Adam Barth.
+
+ Check that a CSS format() argument is of a valid type.
+
+ https://bugs.webkit.org/show_bug.cgi?id=31815
+ http://code.google.com/p/chromium/issues/detail?id=28582
+
+ Test: fast/css/url-format-non-string.html
+
+ * css/CSSParser.cpp:
+ (WebCore::CSSParser::parseFontFaceSrc):
+
+2010-03-19 Miikka Heikkinen <miikka.heikkinen@digia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Support for QT_LIBINFIX in Symbian builds
+
+ Configuring Qt with -qtlibinfix parameter will enable installing
+ an alternate version of Qt on devices that already have it on ROM.
+ This patch provides support for infixed builds of Webkit.
+
+ * WebCore.pro:
+
+2010-01-31 Benjamin Poulain <benjamin.poulain@nokia.com>
+
+ Reviewed by Eric Seidel.
+
+ [Qt] Enable FAST_MOBILE_SCROLLING on Qt embedded platforms
+ https://bugs.webkit.org/show_bug.cgi?id=34168
+
+ Enable FAST_MOBILE_SCROLLING for Qt on Maemo 5, Linux embedded
+ and Symbian
+
+ * WebCore.pro:
+
+2010-01-19 Daniel Bates <dbates@rim.com>
+
+ Reviewed by Adam Treat.
+
+ https://bugs.webkit.org/show_bug.cgi?id=33408
+
+ Implements an optimization to ignore fixed background images
+ (i.e. background-attachment: fixed) when a page does not contain
+ any fixed position elements so as to allow fast repaints (via bit
+ blit) when scrolling a page.
+
+ Currently, if a page has elements that specify either a fixed
+ background or a fixed position then we perform a slow repaint
+ (i.e disable blitting) so as to avoid rendering artifacts.
+ However, on low-powered/mobile devices slow repaints can cause
+ noticeable delays when scrolling a page with a fixed background
+ image. By sacrificing support for fixed background images when
+ there are no fixed elements on the page and with come care, we
+ don't need to force slow repaints and can avoid rendering artifacts.
+ Hence, on such devices we can improve the responsiveness of
+ scrolling a page with a fixed background image.
+
+ Note, this optimization is only enabled if the WebKit is built
+ with FAST_MOBILE_SCROLLING enabled.
+
+ Tests: fast/fast-mobile-scrolling/fixed-position-element.html
+ fast/fast-mobile-scrolling/no-fixed-position-elements.html
+
+ * rendering/RenderBoxModelObject.cpp:
+ (WebCore::RenderBoxModelObject::calculateBackgroundImageGeometry):
+ Disable fixed background attachment if we can blit on scroll.
+ * rendering/RenderObject.cpp:
+ (WebCore::RenderObject::styleWillChange):
+
2010-03-11 Simon Hausmann <simon.hausmann@nokia.com>
Reviewed by Tor Arne Vestbø.
diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro
index 2f85100..5fe9703 100644
--- a/src/3rdparty/webkit/WebCore/WebCore.pro
+++ b/src/3rdparty/webkit/WebCore/WebCore.pro
@@ -6,9 +6,12 @@ symbian: {
TARGET.EPOCALLOWDLLDATA=1
TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 // Min 128kB, Max 32MB
TARGET.CAPABILITY = All -Tcb
- TARGET.UID3 = 0x200267C2
-
- webkitlibs.sources = $$QMAKE_LIBDIR_QT/QtWebKit.dll
+ isEmpty(QT_LIBINFIX) {
+ TARGET.UID3 = 0x200267C2
+ } else {
+ TARGET.UID3 = 0xE00267C2
+ }
+ webkitlibs.sources = $$QMAKE_LIBDIR_QT/QtWebKit$${QT_LIBINFIX}.dll
webkitlibs.path = /sys/bin
vendorinfo = \
"; Localised Vendor name" \
@@ -165,6 +168,10 @@ contains(DEFINES, ENABLE_SINGLE_THREADED=1) {
DEFINES += ENABLE_SVG_FONTS=0 ENABLE_SVG_FOREIGN_OBJECT=0 ENABLE_SVG_ANIMATION=0 ENABLE_SVG_AS_IMAGE=0 ENABLE_SVG_USE=0
}
+mameo5|symbian|embedded {
+ DEFINES += ENABLE_FAST_MOBILE_SCROLLING=1
+}
+
# HTML5 ruby support
!contains(DEFINES, ENABLE_RUBY=.): DEFINES += ENABLE_RUBY=1
diff --git a/src/3rdparty/webkit/WebCore/config.h b/src/3rdparty/webkit/WebCore/config.h
index 62a7f60a..003acbe 100644
--- a/src/3rdparty/webkit/WebCore/config.h
+++ b/src/3rdparty/webkit/WebCore/config.h
@@ -144,7 +144,9 @@
#if PLATFORM(SYMBIAN)
#undef WIN32
#undef _WIN32
+#if COMPILER(WINSCW)
#undef SKIP_STATIC_CONSTRUCTORS_ON_GCC
+#endif
#define USE_SYSTEM_MALLOC 1
#define U_HAVE_INT8_T 0
#define U_HAVE_INT16_T 0
diff --git a/src/3rdparty/webkit/WebCore/css/CSSParser.cpp b/src/3rdparty/webkit/WebCore/css/CSSParser.cpp
index 6024a5b..7750a80 100644
--- a/src/3rdparty/webkit/WebCore/css/CSSParser.cpp
+++ b/src/3rdparty/webkit/WebCore/css/CSSParser.cpp
@@ -3328,6 +3328,12 @@ bool CSSParser::parseFontWeight(bool important)
return false;
}
+static bool isValidFormatFunction(CSSParserValue* val)
+{
+ CSSParserValueList* args = val->function->args;
+ return equalIgnoringCase(val->function->name, "format(") && (args->current()->unit == CSSPrimitiveValue::CSS_STRING || args->current()->unit == CSSPrimitiveValue::CSS_IDENT);
+}
+
bool CSSParser::parseFontFaceSrc()
{
RefPtr<CSSValueList> values(CSSValueList::createCommaSeparated());
@@ -3355,7 +3361,7 @@ bool CSSParser::parseFontFaceSrc()
CSSParserValue* a = args->current();
uriValue.clear();
parsedValue = CSSFontFaceSrcValue::createLocal(a->string);
- } else if (equalIgnoringCase(val->function->name, "format(") && allowFormat && uriValue) {
+ } else if (allowFormat && uriValue && isValidFormatFunction(val)) {
expectComma = true;
allowFormat = false;
uriValue->setFormat(args->current()->string);
diff --git a/src/3rdparty/webkit/WebCore/dom/XMLTokenizer.cpp b/src/3rdparty/webkit/WebCore/dom/XMLTokenizer.cpp
index 30d39e0..56f8ff4 100644
--- a/src/3rdparty/webkit/WebCore/dom/XMLTokenizer.cpp
+++ b/src/3rdparty/webkit/WebCore/dom/XMLTokenizer.cpp
@@ -91,7 +91,8 @@ void XMLTokenizer::pushCurrentNode(Node* n)
void XMLTokenizer::popCurrentNode()
{
- ASSERT(m_currentNode);
+ if (!m_currentNode)
+ return;
ASSERT(m_currentNodeStack.size());
if (m_currentNode != m_doc)
diff --git a/src/3rdparty/webkit/WebCore/dom/XMLTokenizer.h b/src/3rdparty/webkit/WebCore/dom/XMLTokenizer.h
index a83e73a..3bd15c8 100644
--- a/src/3rdparty/webkit/WebCore/dom/XMLTokenizer.h
+++ b/src/3rdparty/webkit/WebCore/dom/XMLTokenizer.h
@@ -52,6 +52,23 @@ namespace WebCore {
class PendingCallbacks;
class ScriptElement;
+#if !USE(QXMLSTREAM)
+ class XMLParserContext : public RefCounted<XMLParserContext> {
+ public:
+ static PassRefPtr<XMLParserContext> createMemoryParser(xmlSAXHandlerPtr, void*, const char*);
+ static PassRefPtr<XMLParserContext> createStringParser(xmlSAXHandlerPtr, void*);
+ ~XMLParserContext();
+ xmlParserCtxtPtr context() const { return m_context; }
+
+ private:
+ XMLParserContext(xmlParserCtxtPtr context)
+ : m_context(context)
+ {
+ }
+ xmlParserCtxtPtr m_context;
+ };
+#endif
+
class XMLTokenizer : public Tokenizer, public CachedResourceClient {
public:
XMLTokenizer(Document*, FrameView* = 0);
@@ -146,7 +163,8 @@ public:
QXmlStreamReader m_stream;
bool m_wroteText;
#else
- xmlParserCtxtPtr m_context;
+ xmlParserCtxtPtr context() const { return m_context ? m_context->context() : 0; };
+ RefPtr<XMLParserContext> m_context;
OwnPtr<PendingCallbacks> m_pendingCallbacks;
Vector<xmlChar> m_bufferedText;
#endif
diff --git a/src/3rdparty/webkit/WebCore/dom/XMLTokenizerLibxml2.cpp b/src/3rdparty/webkit/WebCore/dom/XMLTokenizerLibxml2.cpp
index 9aa0961..42c8b9b 100644
--- a/src/3rdparty/webkit/WebCore/dom/XMLTokenizerLibxml2.cpp
+++ b/src/3rdparty/webkit/WebCore/dom/XMLTokenizerLibxml2.cpp
@@ -465,7 +465,7 @@ static void errorFunc(void*, const char*, ...)
static bool didInit = false;
-static xmlParserCtxtPtr createStringParser(xmlSAXHandlerPtr handlers, void* userData)
+PassRefPtr<XMLParserContext> XMLParserContext::createStringParser(xmlSAXHandlerPtr handlers, void* userData)
{
if (!didInit) {
xmlInitParser();
@@ -482,12 +482,12 @@ static xmlParserCtxtPtr createStringParser(xmlSAXHandlerPtr handlers, void* user
const unsigned char BOMHighByte = *reinterpret_cast<const unsigned char*>(&BOM);
xmlSwitchEncoding(parser, BOMHighByte == 0xFF ? XML_CHAR_ENCODING_UTF16LE : XML_CHAR_ENCODING_UTF16BE);
- return parser;
+ return adoptRef(new XMLParserContext(parser));
}
// Chunk should be encoded in UTF-8
-static xmlParserCtxtPtr createMemoryParser(xmlSAXHandlerPtr handlers, void* userData, const char* chunk)
+PassRefPtr<XMLParserContext> XMLParserContext::createMemoryParser(xmlSAXHandlerPtr handlers, void* userData, const char* chunk)
{
if (!didInit) {
xmlInitParser();
@@ -518,8 +518,8 @@ static xmlParserCtxtPtr createMemoryParser(xmlSAXHandlerPtr handlers, void* user
parser->str_xmlns = xmlDictLookup(parser->dict, BAD_CAST "xmlns", 5);
parser->str_xml_ns = xmlDictLookup(parser->dict, XML_XML_NAMESPACE, 36);
parser->_private = userData;
-
- return parser;
+
+ return adoptRef(new XMLParserContext(parser));
}
// --------------------------------
@@ -609,6 +609,13 @@ XMLTokenizer::XMLTokenizer(DocumentFragment* fragment, Element* parentElement)
m_defaultNamespaceURI = parentElement->namespaceURI();
}
+XMLParserContext::~XMLParserContext()
+{
+ if (m_context->myDoc)
+ xmlFreeDoc(m_context->myDoc);
+ xmlFreeParserCtxt(m_context);
+}
+
XMLTokenizer::~XMLTokenizer()
{
clearCurrentNodeStack();
@@ -616,15 +623,16 @@ XMLTokenizer::~XMLTokenizer()
m_doc->deref();
if (m_pendingScript)
m_pendingScript->removeClient(this);
- if (m_context)
- xmlFreeParserCtxt(m_context);
}
void XMLTokenizer::doWrite(const String& parseString)
{
if (!m_context)
initializeParserContext();
-
+
+ // Protect the libxml context from deletion during a callback
+ RefPtr<XMLParserContext> context = m_context;
+
// libXML throws an error if you try to switch the encoding for an empty string.
if (parseString.length()) {
// Hack around libxml2's lack of encoding overide support by manually
@@ -633,15 +641,15 @@ void XMLTokenizer::doWrite(const String& parseString)
// and switch encodings, causing the parse to fail.
const UChar BOM = 0xFEFF;
const unsigned char BOMHighByte = *reinterpret_cast<const unsigned char*>(&BOM);
- xmlSwitchEncoding(m_context, BOMHighByte == 0xFF ? XML_CHAR_ENCODING_UTF16LE : XML_CHAR_ENCODING_UTF16BE);
+ xmlSwitchEncoding(context->context(), BOMHighByte == 0xFF ? XML_CHAR_ENCODING_UTF16LE : XML_CHAR_ENCODING_UTF16BE);
XMLTokenizerScope scope(m_doc->docLoader());
- xmlParseChunk(m_context, reinterpret_cast<const char*>(parseString.characters()), sizeof(UChar) * parseString.length(), 0);
+ xmlParseChunk(context->context(), reinterpret_cast<const char*>(parseString.characters()), sizeof(UChar) * parseString.length(), 0);
}
if (m_doc->decoder() && m_doc->decoder()->sawError()) {
// If the decoder saw an error, report it as fatal (stops parsing)
- handleError(fatal, "Encoding error", lineNumber(), columnNumber());
+ handleError(fatal, "Encoding error", context->context()->input->line, context->context()->input->col);
}
return;
@@ -1277,9 +1285,9 @@ void XMLTokenizer::initializeParserContext(const char* chunk)
XMLTokenizerScope scope(m_doc->docLoader());
if (m_parsingFragment)
- m_context = createMemoryParser(&sax, this, chunk);
+ m_context = XMLParserContext::createMemoryParser(&sax, this, chunk);
else
- m_context = createStringParser(&sax, this);
+ m_context = XMLParserContext::createStringParser(&sax, this);
}
void XMLTokenizer::doEnd()
@@ -1300,12 +1308,9 @@ void XMLTokenizer::doEnd()
// Tell libxml we're done.
{
XMLTokenizerScope scope(m_doc->docLoader());
- xmlParseChunk(m_context, 0, 0, 1);
+ xmlParseChunk(context(), 0, 0, 1);
}
- if (m_context->myDoc)
- xmlFreeDoc(m_context->myDoc);
- xmlFreeParserCtxt(m_context);
m_context = 0;
}
}
@@ -1334,18 +1339,19 @@ void* xmlDocPtrForString(DocLoader* docLoader, const String& source, const Strin
int XMLTokenizer::lineNumber() const
{
- return m_context ? m_context->input->line : 1;
+ return context() ? context()->input->line : 1;
}
int XMLTokenizer::columnNumber() const
{
- return m_context ? m_context->input->col : 1;
+ return context() ? context()->input->col : 1;
}
void XMLTokenizer::stopParsing()
{
Tokenizer::stopParsing();
- xmlStopParser(m_context);
+ if (context())
+ xmlStopParser(context());
}
void XMLTokenizer::resumeParsing()
@@ -1384,17 +1390,17 @@ bool parseXMLDocumentFragment(const String& chunk, DocumentFragment* fragment, E
CString chunkAsUtf8 = chunk.utf8();
tokenizer.initializeParserContext(chunkAsUtf8.data());
- xmlParseContent(tokenizer.m_context);
+ xmlParseContent(tokenizer.context());
tokenizer.endDocument();
// Check if all the chunk has been processed.
- long bytesProcessed = xmlByteConsumed(tokenizer.m_context);
+ long bytesProcessed = xmlByteConsumed(tokenizer.context());
if (bytesProcessed == -1 || ((unsigned long)bytesProcessed) != chunkAsUtf8.length())
return false;
// No error if the chunk is well formed or it is not but we have no error.
- return tokenizer.m_context->wellFormed || xmlCtxtGetLastError(tokenizer.m_context) == 0;
+ return tokenizer.context()->wellFormed || xmlCtxtGetLastError(tokenizer.context()) == 0;
}
// --------------------------------
@@ -1437,12 +1443,9 @@ HashMap<String, String> parseAttributes(const String& string, bool& attrsOK)
memset(&sax, 0, sizeof(sax));
sax.startElementNs = attributesStartElementNsHandler;
sax.initialized = XML_SAX2_MAGIC;
- xmlParserCtxtPtr parser = createStringParser(&sax, &state);
+ RefPtr<XMLParserContext> parser = XMLParserContext::createStringParser(&sax, &state);
String parseString = "<?xml version=\"1.0\"?><attrs " + string + " />";
- xmlParseChunk(parser, reinterpret_cast<const char*>(parseString.characters()), parseString.length() * sizeof(UChar), 1);
- if (parser->myDoc)
- xmlFreeDoc(parser->myDoc);
- xmlFreeParserCtxt(parser);
+ xmlParseChunk(parser->context(), reinterpret_cast<const char*>(parseString.characters()), parseString.length() * sizeof(UChar), 1);
attrsOK = state.gotAttributes;
return state.attributes;
}
diff --git a/src/3rdparty/webkit/WebCore/html/HTMLFormElement.cpp b/src/3rdparty/webkit/WebCore/html/HTMLFormElement.cpp
index ace0f2f..a74ff83 100644
--- a/src/3rdparty/webkit/WebCore/html/HTMLFormElement.cpp
+++ b/src/3rdparty/webkit/WebCore/html/HTMLFormElement.cpp
@@ -515,11 +515,13 @@ bool HTMLFormElement::isURLAttribute(Attribute* attr) const
void HTMLFormElement::registerImgElement(HTMLImageElement* e)
{
+ ASSERT(imgElements.find(e) == notFound);
imgElements.append(e);
}
void HTMLFormElement::removeImgElement(HTMLImageElement* e)
{
+ ASSERT(imgElements.find(e) != notFound);
removeFromVector(imgElements, e);
}
diff --git a/src/3rdparty/webkit/WebCore/html/HTMLImageElement.cpp b/src/3rdparty/webkit/WebCore/html/HTMLImageElement.cpp
index d353073..3db6811 100644
--- a/src/3rdparty/webkit/WebCore/html/HTMLImageElement.cpp
+++ b/src/3rdparty/webkit/WebCore/html/HTMLImageElement.cpp
@@ -209,6 +209,30 @@ void HTMLImageElement::removedFromDocument()
HTMLElement::removedFromDocument();
}
+void HTMLImageElement::insertedIntoTree(bool deep)
+{
+ if (!m_form) {
+ // m_form can be non-null if it was set in constructor.
+ for (Node* ancestor = parentNode(); ancestor; ancestor = ancestor->parentNode()) {
+ if (ancestor->hasTagName(formTag)) {
+ m_form = static_cast<HTMLFormElement*>(ancestor);
+ m_form->registerImgElement(this);
+ break;
+ }
+ }
+ }
+
+ HTMLElement::insertedIntoTree(deep);
+}
+
+void HTMLImageElement::removedFromTree(bool deep)
+{
+ if (m_form)
+ m_form->removeImgElement(this);
+ m_form = 0;
+ HTMLElement::removedFromTree(deep);
+}
+
int HTMLImageElement::width(bool ignorePendingStylesheets) const
{
if (!renderer()) {
diff --git a/src/3rdparty/webkit/WebCore/html/HTMLImageElement.h b/src/3rdparty/webkit/WebCore/html/HTMLImageElement.h
index f58574d..14e5fa3 100644
--- a/src/3rdparty/webkit/WebCore/html/HTMLImageElement.h
+++ b/src/3rdparty/webkit/WebCore/html/HTMLImageElement.h
@@ -45,8 +45,6 @@ public:
virtual void attach();
virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
- virtual void insertedIntoDocument();
- virtual void removedFromDocument();
virtual bool canStartSelection() const { return false; }
@@ -105,6 +103,11 @@ public:
virtual void addSubresourceAttributeURLs(ListHashSet<KURL>&) const;
private:
+ virtual void insertedIntoDocument();
+ virtual void removedFromDocument();
+ virtual void insertedIntoTree(bool deep);
+ virtual void removedFromTree(bool deep);
+
HTMLImageLoader m_imageLoader;
String usemap;
bool ismap;
diff --git a/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp b/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp
index f25c908..652bc40 100644
--- a/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp
+++ b/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp
@@ -701,12 +701,15 @@ void HTMLInputElement::parseMappedAttribute(MappedAttribute *attr)
m_autocomplete = Off;
registerForActivationCallbackIfNeeded();
} else {
- if (m_autocomplete == Off)
- unregisterForActivationCallbackIfNeeded();
+ bool needsToUnregister = m_autocomplete == Off;
+
if (attr->isEmpty())
m_autocomplete = Uninitialized;
else
m_autocomplete = On;
+
+ if (needsToUnregister)
+ unregisterForActivationCallbackIfNeeded();
}
} else if (attr->name() == typeAttr) {
setInputType(attr->value());
diff --git a/src/3rdparty/webkit/WebCore/html/HTMLParser.cpp b/src/3rdparty/webkit/WebCore/html/HTMLParser.cpp
index 1cb47ae..99c66de 100644
--- a/src/3rdparty/webkit/WebCore/html/HTMLParser.cpp
+++ b/src/3rdparty/webkit/WebCore/html/HTMLParser.cpp
@@ -1275,7 +1275,8 @@ void HTMLParser::handleResidualStyleCloseTagAcrossBlocks(HTMLStackElem* elem)
prevMaxElem->next = elem;
ASSERT(newNodePtr);
prevMaxElem->node = newNodePtr;
- prevMaxElem->didRefNode = false;
+ newNodePtr->ref();
+ prevMaxElem->didRefNode = true;
} else
delete elem;
}
diff --git a/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp b/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp
index a85dcf5..7d857d4 100644
--- a/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp
+++ b/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp
@@ -1260,9 +1260,11 @@ bool FrameLoader::requestObject(RenderPart* renderer, const String& url, const A
ASSERT(renderer->node()->hasTagName(objectTag) || renderer->node()->hasTagName(embedTag));
HTMLPlugInElement* element = static_cast<HTMLPlugInElement*>(renderer->node());
-
- // FIXME: OK to always make a new frame? When does the old frame get removed?
- return loadSubframe(element, completedURL, frameName, m_outgoingReferrer);
+
+ // If the plug-in element already contains a subframe, requestFrame will re-use it. Otherwise,
+ // it will create a new frame and set it as the RenderPart's widget, causing what was previously
+ // in the widget to be torn down.
+ return requestFrame(element, completedURL, frameName);
}
bool FrameLoader::shouldUsePlugin(const KURL& url, const String& mimeType, bool hasFallback, bool& useFallback)
diff --git a/src/3rdparty/webkit/WebCore/page/FrameView.cpp b/src/3rdparty/webkit/WebCore/page/FrameView.cpp
index bc4e4f2..4c3a0ab 100644
--- a/src/3rdparty/webkit/WebCore/page/FrameView.cpp
+++ b/src/3rdparty/webkit/WebCore/page/FrameView.cpp
@@ -106,6 +106,7 @@ struct ScheduledEvent {
FrameView::FrameView(Frame* frame)
: m_frame(frame)
, m_slowRepaintObjectCount(0)
+ , m_fixedObjectCount(0)
, m_layoutTimer(this, &FrameView::layoutTimerFired)
, m_layoutRoot(0)
, m_postLayoutTasksTimer(this, &FrameView::postLayoutTimerFired)
@@ -735,7 +736,7 @@ String FrameView::mediaType() const
bool FrameView::useSlowRepaints() const
{
- return m_useSlowRepaints || m_slowRepaintObjectCount > 0 || m_isOverlapped || !m_contentIsOpaque;
+ return m_useSlowRepaints || m_slowRepaintObjectCount > 0 || (platformWidget() && m_fixedObjectCount > 0) || m_isOverlapped || !m_contentIsOpaque;
}
void FrameView::setUseSlowRepaints()
@@ -759,6 +760,78 @@ void FrameView::removeSlowRepaintObject()
setCanBlitOnScroll(!useSlowRepaints());
}
+void FrameView::addFixedObject()
+{
+ if (!m_fixedObjectCount && platformWidget())
+ setCanBlitOnScroll(false);
+ ++m_fixedObjectCount;
+}
+
+void FrameView::removeFixedObject()
+{
+ ASSERT(m_fixedObjectCount > 0);
+ m_fixedObjectCount--;
+ if (!m_fixedObjectCount)
+ setCanBlitOnScroll(!useSlowRepaints());
+}
+
+void FrameView::scrollContentsFastPath(const IntSize& scrollDelta, const IntRect& rectToScroll, const IntRect& clipRect)
+{
+ const size_t fixedObjectThreshold = 5;
+
+ ListHashSet<RenderBox*>* positionedObjects = 0;
+ if (RenderView* root = m_frame->contentRenderer())
+ positionedObjects = root->positionedObjects();
+
+ if (!positionedObjects || positionedObjects->isEmpty()) {
+ hostWindow()->scroll(scrollDelta, rectToScroll, clipRect);
+ return;
+ }
+
+ // Get the rects of the fixed objects visible in the rectToScroll
+ Vector<IntRect, fixedObjectThreshold> subRectToUpdate;
+ bool updateInvalidatedSubRect = true;
+ ListHashSet<RenderBox*>::const_iterator end = positionedObjects->end();
+ for (ListHashSet<RenderBox*>::const_iterator it = positionedObjects->begin(); it != end; ++it) {
+ RenderBox* renderBox = *it;
+ if (renderBox->style()->position() != FixedPosition)
+ continue;
+ IntRect topLevelRect;
+ IntRect updateRect = renderBox->paintingRootRect(topLevelRect);
+ updateRect.move(-scrollX(), -scrollY());
+ updateRect.intersect(rectToScroll);
+ if (!updateRect.isEmpty()) {
+ if (subRectToUpdate.size() >= fixedObjectThreshold) {
+ updateInvalidatedSubRect = false;
+ break;
+ }
+ subRectToUpdate.append(updateRect);
+ }
+ }
+
+ // Scroll the view
+ if (updateInvalidatedSubRect) {
+ // 1) scroll
+ hostWindow()->scroll(scrollDelta, rectToScroll, clipRect);
+
+ // 2) update the area of fixed objets that has been invalidated
+ size_t fixObjectsCount = subRectToUpdate.size();
+ for (size_t i = 0; i < fixObjectsCount; ++i) {
+ IntRect updateRect = subRectToUpdate[i];
+ IntRect scrolledRect = updateRect;
+ scrolledRect.move(scrollDelta);
+ updateRect.unite(scrolledRect);
+ updateRect.intersect(rectToScroll);
+ hostWindow()->repaint(updateRect, true, false, true);
+ }
+ } else {
+ // the number of fixed objects exceed the threshold, so we repaint everything.
+ IntRect updateRect = clipRect;
+ updateRect.intersect(rectToScroll);
+ hostWindow()->repaint(updateRect, true, false, true);
+ }
+}
+
void FrameView::setIsOverlapped(bool isOverlapped)
{
if (isOverlapped == m_isOverlapped)
diff --git a/src/3rdparty/webkit/WebCore/page/FrameView.h b/src/3rdparty/webkit/WebCore/page/FrameView.h
index 3d17d2c..5243c02 100644
--- a/src/3rdparty/webkit/WebCore/page/FrameView.h
+++ b/src/3rdparty/webkit/WebCore/page/FrameView.h
@@ -143,6 +143,9 @@ public:
void addSlowRepaintObject();
void removeSlowRepaintObject();
+ void addFixedObject();
+ void removeFixedObject();
+
void beginDeferredRepaints();
void endDeferredRepaints();
void checkStopDelayingDeferredRepaints();
@@ -196,6 +199,9 @@ public:
bool isFrameViewScrollCorner(RenderScrollbarPart* scrollCorner) const { return m_scrollCorner == scrollCorner; }
void invalidateScrollCorner();
+protected:
+ virtual void scrollContentsFastPath(const IntSize& scrollDelta, const IntRect& rectToScroll, const IntRect& clipRect);
+
private:
FrameView(Frame*);
@@ -261,6 +267,7 @@ private:
bool m_isOverlapped;
bool m_contentIsOpaque;
unsigned m_slowRepaintObjectCount;
+ unsigned m_fixedObjectCount;
int m_borderX, m_borderY;
diff --git a/src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.cpp b/src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.cpp
index 609a1b0..758863c 100644
--- a/src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.cpp
@@ -200,9 +200,7 @@ static void initializeSupportedNonImageMimeTypes()
"text/",
"application/xml",
"application/xhtml+xml",
-#if ENABLE(XHTMLMP)
"application/vnd.wap.xhtml+xml",
-#endif
"application/rss+xml",
"application/atom+xml",
#if ENABLE(SVG)
diff --git a/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp b/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp
index e67daf9..9e15c43 100644
--- a/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp
@@ -509,7 +509,7 @@ void ScrollView::scrollContents(const IntSize& scrollDelta)
if (canBlitOnScroll()) { // The main frame can just blit the WebView window
// FIXME: Find a way to blit subframes without blitting overlapping content
- hostWindow()->scroll(-scrollDelta, scrollViewRect, clipRect);
+ scrollContentsFastPath(-scrollDelta, scrollViewRect, clipRect);
} else {
// We need to go ahead and repaint the entire backing store. Do it now before moving the
// windowed plugins.
@@ -524,6 +524,11 @@ void ScrollView::scrollContents(const IntSize& scrollDelta)
hostWindow()->paint();
}
+void ScrollView::scrollContentsFastPath(const IntSize& scrollDelta, const IntRect& rectToScroll, const IntRect& clipRect)
+{
+ hostWindow()->scroll(scrollDelta, rectToScroll, clipRect);
+}
+
IntPoint ScrollView::windowToContents(const IntPoint& windowPoint) const
{
IntPoint viewPoint = convertFromContainingWindow(windowPoint);
diff --git a/src/3rdparty/webkit/WebCore/platform/ScrollView.h b/src/3rdparty/webkit/WebCore/platform/ScrollView.h
index 5dacff5..7060d07 100644
--- a/src/3rdparty/webkit/WebCore/platform/ScrollView.h
+++ b/src/3rdparty/webkit/WebCore/platform/ScrollView.h
@@ -244,6 +244,9 @@ protected:
IntRect scrollCornerRect() const;
virtual void updateScrollCorner();
virtual void paintScrollCorner(GraphicsContext*, const IntRect& cornerRect);
+
+ // Scroll the content by blitting the pixels
+ virtual void scrollContentsFastPath(const IntSize& scrollDelta, const IntRect& rectToScroll, const IntRect& clipRect);
private:
RefPtr<Scrollbar> m_horizontalScrollbar;
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
index 37a6408..298d840 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
@@ -126,6 +126,7 @@ PassRefPtr<RenderTheme> RenderTheme::themeForPage(Page* page)
RenderThemeQt::RenderThemeQt(Page* page)
: RenderTheme()
, m_page(page)
+ , m_lineEdit(0)
{
QPushButton button;
button.setAttribute(Qt::WA_MacSmallSize);
@@ -142,6 +143,7 @@ RenderThemeQt::RenderThemeQt(Page* page)
RenderThemeQt::~RenderThemeQt()
{
delete m_fallbackStyle;
+ delete m_lineEdit;
}
// for some widget painting, we need to fallback to Windows style
@@ -207,11 +209,13 @@ bool RenderThemeQt::supportsControlTints() const
return true;
}
-static int findFrameLineWidth(QStyle* style)
+int RenderThemeQt::findFrameLineWidth(QStyle* style) const
{
- QLineEdit lineEdit;
+ if (!m_lineEdit)
+ m_lineEdit = new QLineEdit();
+
QStyleOptionFrameV2 opt;
- return style->pixelMetric(QStyle::PM_DefaultFrameWidth, &opt, &lineEdit);
+ return style->pixelMetric(QStyle::PM_DefaultFrameWidth, &opt, m_lineEdit);
}
static QRect inflateButtonRect(const QRect& originalRect, QStyle* style)
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h
index 13fb42f..64921b1 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h
+++ b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h
@@ -27,6 +27,7 @@
#include <QStyle>
QT_BEGIN_NAMESPACE
+class QLineEdit;
class QPainter;
class QWidget;
QT_END_NAMESPACE
@@ -140,6 +141,8 @@ private:
void setButtonPadding(RenderStyle*) const;
void setPopupPadding(RenderStyle*) const;
+ int findFrameLineWidth(QStyle* style) const;
+
QStyle* fallbackStyle() const;
Page* m_page;
@@ -150,6 +153,7 @@ private:
QString m_buttonFontFamily;
QStyle* m_fallbackStyle;
+ mutable QLineEdit* m_lineEdit;
};
class StylePainter {
diff --git a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.cpp b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.cpp
index aece0e4..b839870 100644
--- a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.cpp
+++ b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.cpp
@@ -32,12 +32,12 @@
using namespace WebCore;
-PluginContainerSymbian::PluginContainerSymbian(PluginView* view, QWidget* parent)
- : m_parent(parent)
+PluginContainerSymbian::PluginContainerSymbian(PluginView* view, QWidget* parent, QGraphicsProxyWidget* proxy)
+ : QWidget(parent)
, m_pluginView(view)
+ , m_proxy(proxy)
, m_hasPendingGeometryChange(false)
{
- setParent(m_parent);
}
PluginContainerSymbian::~PluginContainerSymbian()
@@ -62,7 +62,7 @@ void PluginContainerSymbian::adjustGeometry()
}
}
-void PluginContainerSymbian::focusInEvent(QFocusEvent* event)
+void PluginContainerSymbian::focusInEvent(QFocusEvent*)
{
if (Page* page = m_pluginView->parentFrame()->page())
page->focusController()->setActive(true);
diff --git a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.h b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.h
index fce4a71..fead872 100644
--- a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.h
+++ b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.h
@@ -22,6 +22,8 @@
#include <QWidget>
+class QGraphicsProxyWidget;
+
namespace WebCore {
class PluginView;
@@ -29,18 +31,19 @@ namespace WebCore {
class PluginContainerSymbian : public QWidget {
Q_OBJECT
public:
- PluginContainerSymbian(PluginView*, QWidget* parent);
+ PluginContainerSymbian(PluginView*, QWidget* parent, QGraphicsProxyWidget* proxy = 0);
~PluginContainerSymbian();
void requestGeometry(const QRect&, const QRegion& clip = QRegion());
void adjustGeometry();
+ QGraphicsProxyWidget* proxy() { return m_proxy; }
protected:
virtual void focusInEvent(QFocusEvent*);
virtual void focusOutEvent(QFocusEvent*);
private:
PluginView* m_pluginView;
- QWidget* m_parent;
+ QGraphicsProxyWidget* m_proxy;
QRect m_windowRect;
QRegion m_clipRegion;
bool m_hasPendingGeometryChange;
diff --git a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp
index fd604a0..9e107cd 100644
--- a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp
+++ b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp
@@ -52,6 +52,8 @@
#include "runtime.h"
#include "runtime_root.h"
#include "QWebPageClient.h"
+#include "qgraphicswebview.h"
+#include <QGraphicsProxyWidget>
#include <QKeyEvent>
#include <QPixmap>
#include <QRegion>
@@ -84,6 +86,7 @@ void PluginView::updatePluginWidget()
IntRect oldClipRect = m_clipRect;
m_windowRect = IntRect(frameView->contentsToWindow(frameRect().location()), frameRect().size());
+
m_clipRect = windowClipRect();
m_clipRect.move(-m_windowRect.x(), -m_windowRect.y());
if (m_windowRect == oldWindowRect && m_clipRect == oldClipRect)
@@ -425,12 +428,15 @@ bool PluginView::platformStart()
if (m_isWindowed) {
QWebPageClient* client = m_parentFrame->view()->hostWindow()->platformPageClient();
- // FIXME this will not work for QGraphicsView.
- // But we cannot use winId because it will create a window and on S60,
- // QWidgets should not create a window.
- Q_ASSERT(qobject_cast<QWidget*>(client->pluginParent()));
- setPlatformWidget(new PluginContainerSymbian(this,
- qobject_cast<QWidget*>(client->pluginParent())));
+ QGraphicsProxyWidget* proxy = 0;
+ if (QGraphicsWebView *webView = qobject_cast<QGraphicsWebView*>(client->pluginParent()))
+ proxy = new QGraphicsProxyWidget(webView);
+
+ PluginContainerSymbian* container = new PluginContainerSymbian(this, proxy ? 0 : client->ownerWidget(), proxy);
+ setPlatformWidget(container);
+ if (proxy)
+ proxy->setWidget(container);
+
m_npWindow.type = NPWindowTypeWindow;
m_npWindow.window = (void*)platformPluginWidget();
@@ -446,7 +452,11 @@ bool PluginView::platformStart()
void PluginView::platformDestroy()
{
- delete platformPluginWidget();
+ QWebPageClient* client = m_parentFrame->view()->hostWindow()->platformPageClient();
+ if (QGraphicsWebView *webView = qobject_cast<QGraphicsWebView*>(client->pluginParent()))
+ delete static_cast<PluginContainerSymbian*>(platformPluginWidget())->proxy();
+ else
+ delete platformPluginWidget();
}
void PluginView::halt()
diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderBlock.h b/src/3rdparty/webkit/WebCore/rendering/RenderBlock.h
index 7ba5fce..3300d01 100644
--- a/src/3rdparty/webkit/WebCore/rendering/RenderBlock.h
+++ b/src/3rdparty/webkit/WebCore/rendering/RenderBlock.h
@@ -75,6 +75,7 @@ public:
void insertPositionedObject(RenderBox*);
void removePositionedObject(RenderBox*);
void removePositionedObjects(RenderBlock*);
+ ListHashSet<RenderBox*>* positionedObjects() const { return m_positionedObjects; }
void addPercentHeightDescendant(RenderBox*);
static void removePercentHeightDescendant(RenderBox*);
diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp
index 1df82a4..7ca2ff8 100644
--- a/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp
+++ b/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp
@@ -145,6 +145,16 @@ void RenderBox::styleWillChange(StyleDifference diff, const RenderStyle* newStyl
removeFloatingOrPositionedChildFromBlockLists();
}
}
+ if (FrameView *frameView = view()->frameView()) {
+ bool newStyleIsFixed = newStyle && newStyle->position() == FixedPosition;
+ bool oldStyleIsFixed = style() && style()->position() == FixedPosition;
+ if (newStyleIsFixed != oldStyleIsFixed) {
+ if (newStyleIsFixed)
+ frameView->addFixedObject();
+ else
+ frameView->removeFixedObject();
+ }
+ }
RenderBoxModelObject::styleWillChange(diff, newStyle);
}
diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.cpp
index 23dad2d..9d0f1ed 100644
--- a/src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.cpp
+++ b/src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.cpp
@@ -557,6 +557,17 @@ void RenderBoxModelObject::calculateBackgroundImageGeometry(const FillLayer* fil
// Determine the background positioning area and set destRect to the background painting area.
// destRect will be adjusted later if the background is non-repeating.
bool fixedAttachment = fillLayer->attachment() == FixedBackgroundAttachment;
+
+#if ENABLE(FAST_MOBILE_SCROLLING)
+ if (view()->frameView() && view()->frameView()->canBlitOnScroll()) {
+ // As a side effect of an optimization to blit on scroll, we do not honor the CSS
+ // property "background-attachment: fixed" because it may result in rendering
+ // artifacts. Note, these artifacts only appear if we are blitting on scroll of
+ // a page that has fixed background images.
+ fixedAttachment = false;
+ }
+#endif
+
if (!fixedAttachment) {
destRect = IntRect(tx, ty, w, h);
diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderObject.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderObject.cpp
index a10ffd9..199de4a 100644
--- a/src/3rdparty/webkit/WebCore/rendering/RenderObject.cpp
+++ b/src/3rdparty/webkit/WebCore/rendering/RenderObject.cpp
@@ -1591,10 +1591,17 @@ void RenderObject::styleWillChange(StyleDifference diff, const RenderStyle* newS
s_affectsParentBlock = false;
if (view()->frameView()) {
- // FIXME: A better solution would be to only invalidate the fixed regions when scrolling. It's overkill to
- // prevent the entire view from blitting on a scroll.
- bool newStyleSlowScroll = newStyle && (newStyle->position() == FixedPosition || newStyle->hasFixedBackgroundImage());
- bool oldStyleSlowScroll = m_style && (m_style->position() == FixedPosition || m_style->hasFixedBackgroundImage());
+ bool shouldBlitOnFixedBackgroundImage = false;
+#if ENABLE(FAST_MOBILE_SCROLLING)
+ // On low-powered/mobile devices, preventing blitting on a scroll can cause noticeable delays
+ // when scrolling a page with a fixed background image. As an optimization, assuming there are
+ // no fixed positoned elements on the page, we can acclerate scrolling (via blitting) if we
+ // ignore the CSS property "background-attachment: fixed".
+ shouldBlitOnFixedBackgroundImage = true;
+#endif
+
+ bool newStyleSlowScroll = newStyle && !shouldBlitOnFixedBackgroundImage && newStyle->hasFixedBackgroundImage();
+ bool oldStyleSlowScroll = m_style && !shouldBlitOnFixedBackgroundImage && m_style->hasFixedBackgroundImage();
if (oldStyleSlowScroll != newStyleSlowScroll) {
if (oldStyleSlowScroll)
view()->frameView()->removeSlowRepaintObject();
diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderText.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderText.cpp
index 40c3d75..88a05e5 100644
--- a/src/3rdparty/webkit/WebCore/rendering/RenderText.cpp
+++ b/src/3rdparty/webkit/WebCore/rendering/RenderText.cpp
@@ -1047,8 +1047,15 @@ void RenderText::positionLineBox(InlineBox* box)
if (!s->len()) {
// We want the box to be destroyed.
s->remove();
+ if (m_firstTextBox == s)
+ m_firstTextBox = s->nextTextBox();
+ else
+ s->prevTextBox()->setNextLineBox(s->nextTextBox());
+ if (m_lastTextBox == s)
+ m_lastTextBox = s->prevTextBox();
+ else
+ s->nextTextBox()->setPreviousLineBox(s->prevTextBox());
s->destroy(renderArena());
- m_firstTextBox = m_lastTextBox = 0;
return;
}
@@ -1349,7 +1356,7 @@ void RenderText::checkConsistency() const
#ifdef CHECK_CONSISTENCY
const InlineTextBox* prev = 0;
for (const InlineTextBox* child = m_firstTextBox; child != 0; child = child->nextTextBox()) {
- ASSERT(child->object() == this);
+ ASSERT(child->renderer() == this);
ASSERT(child->prevTextBox() == prev);
prev = child;
}
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
index a80c5d3..490ada1 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp
@@ -65,6 +65,7 @@ public:
void _q_doLoadFinished(bool success);
void _q_updateMicroFocus();
+ void _q_pageDestroyed();
QGraphicsWebView* q;
QWebPage* page;
@@ -97,6 +98,12 @@ void QGraphicsWebViewPrivate::_q_updateMicroFocus()
#endif
}
+void QGraphicsWebViewPrivate::_q_pageDestroyed()
+{
+ page = 0;
+ q->setPage(0);
+}
+
void QGraphicsWebViewPrivate::scroll(int dx, int dy, const QRect& rectToScroll)
{
q->scroll(qreal(dx), qreal(dy), QRectF(rectToScroll));
@@ -454,6 +461,8 @@ void QGraphicsWebView::setPage(QWebPage* page)
this, SIGNAL(linkClicked(QUrl)));
connect(d->page, SIGNAL(microFocusChanged()),
this, SLOT(_q_updateMicroFocus()));
+ connect(d->page, SIGNAL(destroyed()),
+ this, SLOT(_q_pageDestroyed()));
}
/*!
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h
index 68379a2..1b02f35 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h
@@ -134,10 +134,11 @@ protected:
private:
Q_PRIVATE_SLOT(d, void _q_doLoadFinished(bool success))
+ Q_PRIVATE_SLOT(d, void _q_updateMicroFocus())
+ Q_PRIVATE_SLOT(d, void _q_pageDestroyed())
QGraphicsWebViewPrivate* const d;
friend class QGraphicsWebViewPrivate;
};
#endif // QGraphicsWebView_h
- Q_PRIVATE_SLOT(d, void _q_updateMicroFocus())
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
index e4c2afc..710e11b 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
@@ -324,15 +324,12 @@ void QWebFramePrivate::renderPrivate(QPainter *painter, QWebFrame::RenderLayer l
}
}
-static bool webframe_scrollOverflow(WebCore::Frame* frame, int dx, int dy)
+static bool webframe_scrollOverflow(WebCore::Frame* frame, int dx, int dy, const QPoint& pos)
{
if (!frame || !frame->document() || !frame->eventHandler())
return false;
- Node* node = frame->document()->focusedNode();
- if (!node)
- node = frame->document()->elementFromPoint(frame->eventHandler()->currentMousePosition().x(),
- frame->eventHandler()->currentMousePosition().y());
+ Node* node = frame->document()->elementFromPoint(pos.x(), pos.y());
if (!node)
return false;
@@ -363,6 +360,10 @@ static bool webframe_scrollOverflow(WebCore::Frame* frame, int dx, int dy)
return (scrolledHorizontal || scrolledVertical);
}
+
+
+
+
/*!
\class QWebFrame
\since 4.4
@@ -1047,27 +1048,24 @@ void QWebFrame::scroll(int dx, int dy)
}
/*!
- \since 4.7
\internal
Scrolls nested frames starting at this frame, \a dx pixels to the right
and \a dy pixels downward. Both \a dx and \a dy may be negative. First attempts
- to scroll elements with CSS overflow followed by this frame. If this
+ to scroll elements with CSS overflow at position pos, followed by this frame. If this
frame doesn't scroll, attempts to scroll the parent
-
- \sa QWebFrame::scroll
*/
-bool QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int dx, int dy)
+void QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int dx, int dy, const QPoint& pos)
{
Frame* frame = QWebFramePrivate::core(qFrame);
- bool scrolledHorizontal = false;
- bool scrolledVertical = false;
- bool scrolledOverflow = webframe_scrollOverflow(frame, dx, dy);
-
- if (!scrolledOverflow) {
- if (!frame || !frame->view())
- return false;
+ if (!frame || !frame->view())
+ return;
+
+ if (!webframe_scrollOverflow(frame, dx, dy, pos)) {
do {
+ bool scrolledHorizontal = false;
+ bool scrolledVertical = false;
+
IntSize scrollOffset = frame->view()->scrollOffset();
IntPoint maxScrollOffset = frame->view()->maximumScrollPosition();
@@ -1083,12 +1081,12 @@ bool QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int d
if (scrolledHorizontal || scrolledVertical) {
frame->view()->scrollBy(IntSize(dx, dy));
- return true;
+ return;
}
+
frame = frame->tree()->parent();
} while (frame && frame->view());
}
- return (scrolledHorizontal || scrolledVertical || scrolledOverflow);
}
/*!
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
index a289ec0..97a4e4e 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
@@ -1248,8 +1248,8 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev)
#if QT_VERSION >= 0x040600
case QInputMethodEvent::Selection: {
if (renderTextControl) {
- renderTextControl->setSelectionStart(a.start);
- renderTextControl->setSelectionEnd(a.start + a.length);
+ renderTextControl->setSelectionStart(qMin(a.start, (a.start + a.length)));
+ renderTextControl->setSelectionEnd(qMax(a.start, (a.start + a.length)));
}
break;
}
diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog
index a5441cd..64726c2 100644
--- a/src/3rdparty/webkit/WebKit/qt/ChangeLog
+++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog
@@ -1,3 +1,87 @@
+2010-03-22 Jakub Wieczorek <jwieczorek@webkit.org>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] Don't construct a QLineEdit every time when painting a text field
+ https://bugs.webkit.org/show_bug.cgi?id=36373
+
+ Add a simple benchmark covering this area.
+
+ * tests/benchmarks/painting/tst_painting.cpp:
+ (tst_Painting::textAreas):
+
+2010-03-22 Yi Shen <shenyi2006@gmail.com>
+
+ Reviewed by Simon Hausmann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=35933
+ [Qt] [Symbian] Can not backward select (highlight) text using virtual keyboard
+ Make sure the selection start index is smaller than the selection end index.
+
+ * Api/qwebpage.cpp:
+ (QWebPagePrivate::inputMethodEvent):
+ * tests/qwebpage/tst_qwebpage.cpp:
+ (tst_QWebPage::inputMethods):
+
+2010-03-25 Yael Aharon <yael.aharon@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] QtLauncher crashes on Mac OS and Linux when exiting with QGraphicsView mode enabled
+ https://bugs.webkit.org/show_bug.cgi?id=35251
+
+ Followed the way QWebView registers for the signal QWebPage::destroyed(), to prevent
+ QGraphicsWebView from referencing QWebPage after it was deleted.
+
+ * Api/qgraphicswebview.cpp:
+ (QGraphicsWebViewPrivate::_q_pageDestroyed):
+ (QGraphicsWebView::setPage):
+ * Api/qgraphicswebview.h:
+
+2010-03-23 David Leong <david.leong@nokia.com>
+
+ Reviewed by Laszlo Gombos.
+
+ Build fix for Symbian Def file.
+
+ * symbian/eabi/QtWebKitu.def:
+
+2010-03-18 Joe Ligman <joseph.ligman@nokia.com>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] New API scrollRecursively has several problems.
+ https://bugs.webkit.org/show_bug.cgi?id=35873
+
+ Remove scrollRecursively from the Qt 4.7 API
+ Update the internal API to accept a hit test position
+ for nested scrolling
+
+ * Api/qwebframe.cpp:
+ (webframe_scrollOverflow):
+ (qtwebkit_webframe_scrollRecursively):
+ * Api/qwebframe.h:
+ * Api/qwebframe_p.h:
+ * tests/qwebframe/tst_qwebframe.cpp:
+
+2009-12-18 Joe Ligman <joseph.ligman@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Qt] Add new API to QWebFrame to scrollRecursively starting with any css overflow
+ then checking current frame and then ancestors
+ https://bugs.webkit.org/show_bug.cgi?id=32668
+
+ * Api/qwebframe.cpp:
+ (QWebFramePrivate::scrollOverflow):
+ (QWebFrame::scrollRecursively):
+ * Api/qwebframe.h:
+ * Api/qwebframe_p.h:
+ * tests/qwebframe/qwebframe.qrc:
+ * tests/qwebframe/testiframe.html: Added.
+ * tests/qwebframe/testiframe2.html: Added.
+ * tests/qwebframe/tst_qwebframe.cpp:
+
2010-03-21 Kristian Amlie <kristian.amlie@nokia.com>
Reviewed by Simon Hausmann.
diff --git a/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def b/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def
index 5dd2e20..cfa8f7f 100644
--- a/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def
+++ b/src/3rdparty/webkit/WebKit/qt/symbian/eabi/QtWebKitu.def
@@ -693,5 +693,5 @@ EXPORTS
_Z23qt_networkAccessAllowedb @ 692 NONAME
_Z25qt_resumeActiveDOMObjectsP9QWebFrame @ 693 NONAME
_Z26qt_suspendActiveDOMObjectsP9QWebFrame @ 694 NONAME
- _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameii @ 695 NONAME
-
+ _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameii @ 695 NONAME ABSENT
+ _Z35qtwebkit_webframe_scrollRecursivelyP9QWebFrameiiRK6QPoint @ 715 NONAME
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/tst_painting.cpp b/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/tst_painting.cpp
index f4531fd..fc5b8e3 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/tst_painting.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/tst_painting.cpp
@@ -19,6 +19,7 @@
#include <QtTest/QtTest>
+#include <qwebelement.h>
#include <qwebframe.h>
#include <qwebview.h>
#include <qpainter.h>
@@ -59,6 +60,7 @@ public Q_SLOTS:
private Q_SLOTS:
void paint_data();
void paint();
+ void textAreas();
private:
QWebView* m_view;
@@ -105,5 +107,30 @@ void tst_Painting::paint()
}
}
+void tst_Painting::textAreas()
+{
+ m_view->load(QUrl("data:text/html;<html><body></body></html>"));
+ ::waitForSignal(m_view, SIGNAL(loadFinished(bool)));
+
+ QWebElement bodyElement = m_page->mainFrame()->findFirstElement("body");
+
+ int count = 100;
+ while (count--) {
+ QString markup("<textarea cols='1' rows='1'></textarea>");
+ bodyElement.appendInside(markup);
+ }
+
+ /* force a layout */
+ QWebFrame* mainFrame = m_page->mainFrame();
+ mainFrame->toPlainText();
+
+ QPixmap pixmap(mainFrame->contentsSize());
+ QBENCHMARK {
+ QPainter painter(&pixmap);
+ mainFrame->render(&painter, QRect(QPoint(0, 0), mainFrame->contentsSize()));
+ painter.end();
+ }
+}
+
QTEST_MAIN(tst_Painting)
#include "tst_painting.moc"
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
index 609f8b4..8cc7953 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp
@@ -606,7 +606,6 @@ private slots:
void scrollPosition();
void evaluateWillCauseRepaint();
void qObjectWrapperWithSameIdentity();
- void scrollRecursively();
private:
QString evalJS(const QString&s) {
@@ -2825,71 +2824,5 @@ void tst_QWebFrame::qObjectWrapperWithSameIdentity()
QCOMPARE(mainFrame->toPlainText(), QString("test2"));
}
-bool QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int dx, int dy);
-
-void tst_QWebFrame::scrollRecursively()
-{
- // The test content is
- // a nested frame set
- // The main frame scrolls
- // and has two children
- // an iframe and a div overflow
- // both scroll
- QWebView webView;
- QWebPage* webPage = webView.page();
- QSignalSpy loadSpy(webPage, SIGNAL(loadFinished(bool)));
- QUrl url = QUrl("qrc:///testiframe.html");
- webPage->mainFrame()->load(url);
- QTRY_COMPARE(loadSpy.count(), 1);
-
- QList<QWebFrame*> children = webPage->mainFrame()->childFrames();
- QVERIFY(children.count() == 1);
-
- // 1st test
- // call scrollRecursively over mainframe
- // verify scrolled
- // verify scroll postion changed
- QPoint scrollPosition(webPage->mainFrame()->scrollPosition());
- QVERIFY(qtwebkit_webframe_scrollRecursively(webPage->mainFrame(), 10, 10));
- QVERIFY(scrollPosition != webPage->mainFrame()->scrollPosition());
-
- // 2nd test
- // call scrollRecursively over child iframe
- // verify scrolled
- // verify child scroll position changed
- // verify parent's scroll position did not change
- scrollPosition = webPage->mainFrame()->scrollPosition();
- QPoint childScrollPosition = children.at(0)->scrollPosition();
- QVERIFY(qtwebkit_webframe_scrollRecursively(children.at(0), 10, 10));
- QVERIFY(scrollPosition == webPage->mainFrame()->scrollPosition());
- QVERIFY(childScrollPosition != children.at(0)->scrollPosition());
-
- // 3rd test
- // call scrollRecursively over div overflow
- // verify scrolled == true
- // verify parent and child frame's scroll postion did not change
- QWebElement div = webPage->mainFrame()->documentElement().findFirst("#content1");
- QMouseEvent evpres(QEvent::MouseMove, div.geometry().center(), Qt::NoButton, Qt::NoButton, Qt::NoModifier);
- webPage->event(&evpres);
- scrollPosition = webPage->mainFrame()->scrollPosition();
- childScrollPosition = children.at(0)->scrollPosition();
- QVERIFY(qtwebkit_webframe_scrollRecursively(webPage->mainFrame(), 5, 5));
- QVERIFY(childScrollPosition == children.at(0)->scrollPosition());
- QVERIFY(scrollPosition == webPage->mainFrame()->scrollPosition());
-
- // 4th test
- // call scrollRecursively twice over childs iframe
- // verify scrolled == true first time
- // verify parent's scroll == true second time
- // verify parent and childs scroll position changed
- childScrollPosition = children.at(0)->scrollPosition();
- QVERIFY(qtwebkit_webframe_scrollRecursively(children.at(0), -10, -10));
- QVERIFY(childScrollPosition != children.at(0)->scrollPosition());
- scrollPosition = webPage->mainFrame()->scrollPosition();
- QVERIFY(qtwebkit_webframe_scrollRecursively(children.at(0), -10, -10));
- QVERIFY(scrollPosition != webPage->mainFrame()->scrollPosition());
-
-}
-
QTEST_MAIN(tst_QWebFrame)
#include "tst_qwebframe.moc"
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
index 0e04acc..55ee42a 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
@@ -1451,6 +1451,26 @@ void tst_QWebPage::inputMethods()
variant = page->inputMethodQuery(Qt::ImCurrentSelection);
QString selectionValue = variant.value<QString>();
QCOMPARE(selectionValue, QString("eb"));
+
+ //Set selection with negative length
+ inputAttributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, 6, -5, QVariant());
+ QInputMethodEvent eventSelection2("",inputAttributes);
+ page->event(&eventSelection2);
+
+ //ImAnchorPosition
+ variant = page->inputMethodQuery(Qt::ImAnchorPosition);
+ anchorPosition = variant.toInt();
+ QCOMPARE(anchorPosition, 1);
+
+ //ImCursorPosition
+ variant = page->inputMethodQuery(Qt::ImCursorPosition);
+ cursorPosition = variant.toInt();
+ QCOMPARE(cursorPosition, 6);
+
+ //ImCurrentSelection
+ variant = page->inputMethodQuery(Qt::ImCurrentSelection);
+ selectionValue = variant.value<QString>();
+ QCOMPARE(selectionValue, QString("tWebK"));
#endif
//ImSurroundingText
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index 500cde6..83fa044 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -38,7 +38,6 @@ symbian: {
# Partial upgrade SIS file
vendorinfo = \
- "&EN" \
"; Localised Vendor name" \
"%{\"Nokia, Qt\"}" \
" " \
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp
index 1b60936..e54d95e 100644
--- a/src/corelib/io/qdir.cpp
+++ b/src/corelib/io/qdir.cpp
@@ -2125,7 +2125,7 @@ QString QDir::cleanPath(const QString &path)
QString ret = (used == len ? name : QString(out, used));
// Strip away last slash except for root directories
if (ret.length() > 1 && ret.endsWith(QLatin1Char('/'))) {
-#ifdef Q_OS_WIN
+#if defined (Q_OS_WIN) || defined (Q_OS_SYMBIAN)
if (!(ret.length() == 3 && ret.at(1) == QLatin1Char(':')))
#endif
ret.chop(1);
diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp
index aa1c7d9..50e9a8f 100644
--- a/src/corelib/io/qfile.cpp
+++ b/src/corelib/io/qfile.cpp
@@ -90,7 +90,8 @@ QFile::DecoderFn QFilePrivate::decoder = locale_decode;
QFilePrivate::QFilePrivate()
: fileEngine(0), lastWasWrite(false),
- writeBuffer(QFILE_WRITEBUFFER_SIZE), error(QFile::NoError)
+ writeBuffer(QFILE_WRITEBUFFER_SIZE), error(QFile::NoError),
+ cachedSize(0)
{
}
@@ -1257,8 +1258,10 @@ QFile::resize(qint64 sz)
seek(sz);
if(d->fileEngine->setSize(sz)) {
unsetError();
+ d->cachedSize = sz;
return true;
}
+ d->cachedSize = 0;
d->setError(QFile::ResizeError, d->fileEngine->errorString());
return false;
}
@@ -1420,7 +1423,8 @@ qint64 QFile::size() const
Q_D(const QFile);
if (!d->ensureFlushed())
return 0;
- return fileEngine()->size();
+ d->cachedSize = fileEngine()->size();
+ return d->cachedSize;
}
/*!
@@ -1446,16 +1450,16 @@ bool QFile::atEnd() const
{
Q_D(const QFile);
+ // If there's buffered data left, we're not at the end.
+ if (!d->buffer.isEmpty())
+ return false;
+
if (!isOpen())
return true;
if (!d->ensureFlushed())
return false;
- // If there's buffered data left, we're not at the end.
- if (!d->buffer.isEmpty())
- return false;
-
// If the file engine knows best, say what it says.
if (d->fileEngine->supportsExtension(QAbstractFileEngine::AtEndExtension)) {
// Check if the file engine supports AtEndExtension, and if it does,
@@ -1463,6 +1467,11 @@ bool QFile::atEnd() const
return d->fileEngine->atEnd();
}
+ // if it looks like we are at the end, or if size is not cached,
+ // fall through to bytesAvailable() to make sure.
+ if (pos() < d->cachedSize)
+ return false;
+
// Fall back to checking how much is available (will stat files).
return bytesAvailable() == 0;
}
@@ -1502,12 +1511,21 @@ qint64 QFile::readLineData(char *data, qint64 maxlen)
if (!d->ensureFlushed())
return -1;
- if (d->fileEngine->supportsExtension(QAbstractFileEngine::FastReadLineExtension))
- return d->fileEngine->readLine(data, maxlen);
+ qint64 read;
+ if (d->fileEngine->supportsExtension(QAbstractFileEngine::FastReadLineExtension)) {
+ read = d->fileEngine->readLine(data, maxlen);
+ } else {
+ // Fall back to QIODevice's readLine implementation if the engine
+ // cannot do it faster.
+ read = QIODevice::readLineData(data, maxlen);
+ }
+
+ if (read < maxlen) {
+ // failed to read all requested, may be at the end of file, stop caching size so that it's rechecked
+ d->cachedSize = 0;
+ }
- // Fall back to QIODevice's readLine implementation if the engine
- // cannot do it faster.
- return QIODevice::readLineData(data, maxlen);
+ return read;
}
/*!
@@ -1528,6 +1546,12 @@ qint64 QFile::readData(char *data, qint64 len)
err = QFile::ReadError;
d->setError(err, d->fileEngine->errorString());
}
+
+ if (read < len) {
+ // failed to read all requested, may be at the end of file, stop caching size so that it's rechecked
+ d->cachedSize = 0;
+ }
+
return read;
}
diff --git a/src/corelib/io/qfile_p.h b/src/corelib/io/qfile_p.h
index f8f5f5c..cf76c09 100644
--- a/src/corelib/io/qfile_p.h
+++ b/src/corelib/io/qfile_p.h
@@ -84,6 +84,8 @@ protected:
void setError(QFile::FileError err, const QString &errorString);
void setError(QFile::FileError err, int errNum);
+ mutable qint64 cachedSize;
+
private:
static QFile::EncoderFn encoder;
static QFile::DecoderFn decoder;
diff --git a/src/corelib/io/qfsfileengine_p.h b/src/corelib/io/qfsfileengine_p.h
index 55c779e..e9e55f3 100644
--- a/src/corelib/io/qfsfileengine_p.h
+++ b/src/corelib/io/qfsfileengine_p.h
@@ -155,6 +155,10 @@ public:
static bool uncListSharesOnServer(const QString &server, QStringList *list);
#endif
+#ifdef Q_OS_SYMBIAN
+ void setSymbianError(int symbianError, QFile::FileError defaultError, QString defaultString);
+#endif
+
protected:
QFSFileEnginePrivate();
diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp
index 3dcc1ad..1415e44 100644
--- a/src/corelib/io/qfsfileengine_unix.cpp
+++ b/src/corelib/io/qfsfileengine_unix.cpp
@@ -81,6 +81,40 @@ static bool isRelativePathSymbian(const QString& fileName)
&& ((fileName.at(0).isLetter() && fileName.at(1) == QLatin1Char(':'))
|| (fileName.at(0) == QLatin1Char('/') && fileName.at(1) == QLatin1Char('/')))));
}
+
+/*!
+ \internal
+ convert symbian error code to the one suitable for setError.
+ example usage: setSymbianError(err, QFile::CopyError, QLatin1String("copy error"))
+*/
+void QFSFileEnginePrivate::setSymbianError(int symbianError, QFile::FileError defaultError, QString defaultString)
+{
+ Q_Q(QFSFileEngine);
+ switch (symbianError) {
+ case KErrNone:
+ q->setError(QFile::NoError, QLatin1String(""));
+ break;
+ case KErrAccessDenied:
+ q->setError(QFile::PermissionsError, QLatin1String("access denied"));
+ break;
+ case KErrPermissionDenied:
+ q->setError(QFile::PermissionsError, QLatin1String("permission denied"));
+ break;
+ case KErrAbort:
+ q->setError(QFile::AbortError, QLatin1String("aborted"));
+ break;
+ case KErrCancel:
+ q->setError(QFile::AbortError, QLatin1String("cancelled"));
+ break;
+ case KErrTimedOut:
+ q->setError(QFile::TimeOutError, QLatin1String("timed out"));
+ break;
+ default:
+ q->setError(defaultError, defaultString);
+ break;
+ }
+}
+
#endif
/*!
@@ -427,8 +461,10 @@ bool QFSFileEngine::copy(const QString &newName)
}
) // End TRAP
delete fm;
- // ### Add error reporting on failure
- return (err == KErrNone);
+ if (err == KErrNone)
+ return true;
+ d->setSymbianError(err, QFile::CopyError, QLatin1String("copy error"));
+ return false;
#else
Q_UNUSED(newName);
// ### Add copy code for Unix here
diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp
index c93f0c3..f83c142 100644
--- a/src/corelib/io/qiodevice.cpp
+++ b/src/corelib/io/qiodevice.cpp
@@ -84,10 +84,6 @@ void debugBinaryString(const char *data, qint64 maxlen)
}
#endif
-#ifndef QIODEVICE_BUFFERSIZE
-#define QIODEVICE_BUFFERSIZE Q_INT64_C(16384)
-#endif
-
#define Q_VOID
#define CHECK_MAXLEN(function, returnType) \
@@ -123,7 +119,9 @@ void debugBinaryString(const char *data, qint64 maxlen)
QIODevicePrivate::QIODevicePrivate()
: openMode(QIODevice::NotOpen), buffer(QIODEVICE_BUFFERSIZE),
pos(0), devicePos(0)
+ , pPos(&pos), pDevicePos(&devicePos)
, baseReadLineDataCalled(false)
+ , firstRead(true)
, accessMode(Unset)
#ifdef QT_NO_QOBJECT
, q_ptr(0)
@@ -449,11 +447,15 @@ QIODevice::OpenMode QIODevice::openMode() const
*/
void QIODevice::setOpenMode(OpenMode openMode)
{
+ Q_D(QIODevice);
#if defined QIODEVICE_DEBUG
printf("%p QIODevice::setOpenMode(0x%x)\n", this, int(openMode));
#endif
- d_func()->openMode = openMode;
- d_func()->accessMode = QIODevicePrivate::Unset;
+ d->openMode = openMode;
+ d->accessMode = QIODevicePrivate::Unset;
+ d->firstRead = true;
+ if (!isReadable())
+ d->buffer.clear();
}
/*!
@@ -537,6 +539,7 @@ bool QIODevice::open(OpenMode mode)
d->pos = (mode & Append) ? size() : qint64(0);
d->buffer.clear();
d->accessMode = QIODevicePrivate::Unset;
+ d->firstRead = true;
#if defined QIODEVICE_DEBUG
printf("%p QIODevice::open(0x%x)\n", this, quint32(mode));
#endif
@@ -566,6 +569,7 @@ void QIODevice::close()
d->errorString.clear();
d->pos = 0;
d->buffer.clear();
+ d->firstRead = true;
}
/*!
@@ -729,6 +733,12 @@ qint64 QIODevice::bytesToWrite() const
return qint64(0);
}
+#ifdef Q_CC_RVCT
+// arm mode makes the 64-bit integer operations much faster in RVCT 2.2
+#pragma push
+#pragma arm
+#endif
+
/*!
Reads at most \a maxSize bytes from the device into \a data, and
returns the number of bytes read. If an error occurs, such as when
@@ -745,21 +755,17 @@ qint64 QIODevice::bytesToWrite() const
qint64 QIODevice::read(char *data, qint64 maxSize)
{
Q_D(QIODevice);
- CHECK_READABLE(read, qint64(-1));
- CHECK_MAXLEN(read, qint64(-1));
#if defined QIODEVICE_DEBUG
printf("%p QIODevice::read(%p, %d), d->pos = %d, d->buffer.size() = %d\n",
this, data, int(maxSize), int(d->pos), int(d->buffer.size()));
#endif
- const bool sequential = d->isSequential();
// Short circuit for getChar()
if (maxSize == 1) {
int chint;
while ((chint = d->buffer.getChar()) != -1) {
- if (!sequential)
- ++d->pos;
+ ++(*d->pPos);
char c = char(uchar(chint));
if (c == '\r' && (d->openMode & Text))
@@ -773,61 +779,77 @@ qint64 QIODevice::read(char *data, qint64 maxSize)
}
}
+ CHECK_MAXLEN(read, qint64(-1));
qint64 readSoFar = 0;
bool moreToRead = true;
do {
- int lastReadChunkSize = 0;
-
// Try reading from the buffer.
- if (!d->buffer.isEmpty()) {
- lastReadChunkSize = d->buffer.read(data + readSoFar, maxSize - readSoFar);
- readSoFar += lastReadChunkSize;
- if (!sequential)
- d->pos += lastReadChunkSize;
+ int lastReadChunkSize = d->buffer.read(data, maxSize);
+ *d->pPos += lastReadChunkSize;
+ readSoFar += lastReadChunkSize;
+ // fast exit when satisfied by buffer
+ if (lastReadChunkSize == maxSize && !(d->openMode & Text))
+ return readSoFar;
+
+ if (lastReadChunkSize > 0) {
+ data += lastReadChunkSize;
+ maxSize -= lastReadChunkSize;
#if defined QIODEVICE_DEBUG
printf("%p \treading %d bytes from buffer into position %d\n", this, lastReadChunkSize,
int(readSoFar) - lastReadChunkSize);
#endif
- } else if ((d->openMode & Unbuffered) == 0 && maxSize < QIODEVICE_BUFFERSIZE) {
- // In buffered mode, we try to fill up the QIODevice buffer before
- // we do anything else.
- int bytesToBuffer = qMax(maxSize - readSoFar, QIODEVICE_BUFFERSIZE);
- char *writePointer = d->buffer.reserve(bytesToBuffer);
-
- // Make sure the device is positioned correctly.
- if (d->pos != d->devicePos && !sequential && !seek(d->pos))
- return qint64(-1);
- qint64 readFromDevice = readData(writePointer, bytesToBuffer);
- d->buffer.chop(bytesToBuffer - (readFromDevice < 0 ? 0 : int(readFromDevice)));
+ } else {
+ if (d->firstRead) {
+ // this is the first time the file has been read, check it's valid and set up pos pointers
+ // for fast pos updates.
+ CHECK_READABLE(read, qint64(-1));
+ d->firstRead = false;
+ if (d->isSequential()) {
+ d->pPos = &d->seqDumpPos;
+ d->pDevicePos = &d->seqDumpPos;
+ }
+ }
- if (readFromDevice > 0) {
- if (!sequential)
- d->devicePos += readFromDevice;
+ if ((d->openMode & Unbuffered) == 0 && maxSize < QIODEVICE_BUFFERSIZE) {
+ // In buffered mode, we try to fill up the QIODevice buffer before
+ // we do anything else.
+ // buffer is empty at this point, try to fill it
+ int bytesToBuffer = QIODEVICE_BUFFERSIZE;
+ char *writePointer = d->buffer.reserve(bytesToBuffer);
+
+ // Make sure the device is positioned correctly.
+ if (d->pos != d->devicePos && !d->isSequential() && !seek(d->pos))
+ return readSoFar ? readSoFar : qint64(-1);
+ qint64 readFromDevice = readData(writePointer, bytesToBuffer);
+ d->buffer.chop(bytesToBuffer - (readFromDevice < 0 ? 0 : int(readFromDevice)));
+
+ if (readFromDevice > 0) {
+ *d->pDevicePos += readFromDevice;
#if defined QIODEVICE_DEBUG
- printf("%p \treading %d from device into buffer\n", this, int(readFromDevice));
+ printf("%p \treading %d from device into buffer\n", this, int(readFromDevice));
#endif
- if (readFromDevice < bytesToBuffer)
- d->buffer.truncate(int(readFromDevice));
- if (!d->buffer.isEmpty()) {
- lastReadChunkSize = d->buffer.read(data + readSoFar, maxSize - readSoFar);
- readSoFar += lastReadChunkSize;
- if (!sequential)
- d->pos += lastReadChunkSize;
+ if (!d->buffer.isEmpty()) {
+ lastReadChunkSize = d->buffer.read(data, maxSize);
+ readSoFar += lastReadChunkSize;
+ data += lastReadChunkSize;
+ maxSize -= lastReadChunkSize;
+ *d->pPos += lastReadChunkSize;
#if defined QIODEVICE_DEBUG
- printf("%p \treading %d bytes from buffer at position %d\n", this,
- lastReadChunkSize, int(readSoFar));
+ printf("%p \treading %d bytes from buffer at position %d\n", this,
+ lastReadChunkSize, int(readSoFar));
#endif
+ }
}
}
}
// If we need more, try reading from the device.
- if (readSoFar < maxSize) {
+ if (maxSize > 0) {
// Make sure the device is positioned correctly.
- if (d->pos != d->devicePos && !sequential && !seek(d->pos))
- return qint64(-1);
- qint64 readFromDevice = readData(data + readSoFar, maxSize - readSoFar);
+ if (d->pos != d->devicePos && !d->isSequential() && !seek(d->pos))
+ return readSoFar ? readSoFar : qint64(-1);
+ qint64 readFromDevice = readData(data, maxSize);
#if defined QIODEVICE_DEBUG
printf("%p \treading %d bytes from device (total %d)\n", this, int(readFromDevice), int(readSoFar));
#endif
@@ -835,27 +857,21 @@ qint64 QIODevice::read(char *data, qint64 maxSize)
// error and we haven't read anything: return immediately
return -1;
}
- if (readFromDevice <= 0) {
- moreToRead = false;
- } else {
- // see if we read as much data as we asked for
- if (readFromDevice < maxSize - readSoFar)
- moreToRead = false;
-
+ if (readFromDevice > 0) {
lastReadChunkSize += int(readFromDevice);
readSoFar += readFromDevice;
- if (!sequential) {
- d->pos += readFromDevice;
- d->devicePos += readFromDevice;
- }
+ data += readFromDevice;
+ maxSize -= readFromDevice;
+ *d->pPos += readFromDevice;
+ *d->pDevicePos += readFromDevice;
}
- } else {
- moreToRead = false;
}
+ // Best attempt has been made to read data, don't try again except for text mode adjustment below
+ moreToRead = false;
if (readSoFar && d->openMode & Text) {
- char *readPtr = data + readSoFar - lastReadChunkSize;
- const char *endPtr = data + readSoFar;
+ char *readPtr = data - lastReadChunkSize;
+ const char *endPtr = data;
if (readPtr < endPtr) {
// optimization to avoid initial self-assignment
@@ -870,8 +886,11 @@ qint64 QIODevice::read(char *data, qint64 maxSize)
char ch = *readPtr++;
if (ch != '\r')
*writePtr++ = ch;
- else
+ else {
--readSoFar;
+ --data;
+ ++maxSize;
+ }
}
// Make sure we get more data if there is room for more. This
@@ -885,11 +904,15 @@ qint64 QIODevice::read(char *data, qint64 maxSize)
#if defined QIODEVICE_DEBUG
printf("%p \treturning %d, d->pos == %d, d->buffer.size() == %d\n", this,
int(readSoFar), int(d->pos), d->buffer.size());
- debugBinaryString(data, readSoFar);
+ debugBinaryString(data - readSoFar, readSoFar);
#endif
return readSoFar;
}
+#ifdef Q_CC_RVCT
+#pragma pop
+#endif
+
/*!
\overload
@@ -997,6 +1020,12 @@ QByteArray QIODevice::readAll()
return result;
}
+#ifdef Q_CC_RVCT
+// arm mode makes the 64-bit integer operations much faster in RVCT 2.2
+#pragma push
+#pragma arm
+#endif
+
/*!
This function reads a line of ASCII characters from the device, up
to a maximum of \a maxSize - 1 bytes, stores the characters in \a
@@ -1229,6 +1258,10 @@ qint64 QIODevice::readLineData(char *data, qint64 maxSize)
return readSoFar;
}
+#ifdef Q_CC_RVCT
+#pragma pop
+#endif
+
/*!
Returns true if a complete line of data can be read from the device;
otherwise returns false.
@@ -1416,9 +1449,7 @@ bool QIODevicePrivate::putCharHelper(char c)
*/
bool QIODevice::getChar(char *c)
{
- Q_D(QIODevice);
- CHECK_READABLE(getChar, false);
-
+ // readability checked in read()
char ch;
return (1 == read(c ? c : &ch, 1));
}
diff --git a/src/corelib/io/qiodevice_p.h b/src/corelib/io/qiodevice_p.h
index cc4a237..94dadca 100644
--- a/src/corelib/io/qiodevice_p.h
+++ b/src/corelib/io/qiodevice_p.h
@@ -64,6 +64,126 @@
QT_BEGIN_NAMESPACE
+#ifndef QIODEVICE_BUFFERSIZE
+#define QIODEVICE_BUFFERSIZE Q_INT64_C(16384)
+#endif
+
+// This is QIODevice's read buffer, optimised for read(), isEmpty() and getChar()
+class QIODevicePrivateLinearBuffer
+{
+public:
+ QIODevicePrivateLinearBuffer(int) : len(0), first(0), buf(0), capacity(0) {
+ }
+ ~QIODevicePrivateLinearBuffer() {
+ delete [] buf;
+ }
+ void clear() {
+ first = buf;
+ len = 0;
+ }
+ int size() const {
+ return len;
+ }
+ bool isEmpty() const {
+ return len == 0;
+ }
+ void skip(int n) {
+ if (n >= len) {
+ clear();
+ } else {
+ len -= n;
+ first += n;
+ }
+ }
+ int getChar() {
+ if (len == 0)
+ return -1;
+ int ch = uchar(*first);
+ len--;
+ first++;
+ return ch;
+ }
+ int read(char* target, int size) {
+ int r = qMin(size, len);
+ memcpy(target, first, r);
+ len -= r;
+ first += r;
+ return r;
+ }
+ char* reserve(int size) {
+ makeSpace(size + len, freeSpaceAtEnd);
+ char* writePtr = first + len;
+ len += size;
+ return writePtr;
+ }
+ void chop(int size) {
+ if (size >= len) {
+ clear();
+ } else {
+ len -= size;
+ }
+ }
+ QByteArray readAll() {
+ char* f = first;
+ int l = len;
+ clear();
+ return QByteArray(f, l);
+ }
+ int readLine(char* target, int size) {
+ int r = qMin(size, len);
+ char* eol = static_cast<char*>(memchr(first, '\n', r));
+ if (eol)
+ r = 1+(eol-first);
+ memcpy(target, first, r);
+ len -= r;
+ first += r;
+ return int(r);
+ }
+ bool canReadLine() const {
+ return memchr(first, '\n', len);
+ }
+ void ungetChar(char c) {
+ if (first == buf) {
+ // underflow, the existing valid data needs to move to the end of the (potentially bigger) buffer
+ makeSpace(len+1, freeSpaceAtStart);
+ }
+ first--;
+ len++;
+ *first = c;
+ }
+
+private:
+ enum FreeSpacePos {freeSpaceAtStart, freeSpaceAtEnd};
+ void makeSpace(size_t required, FreeSpacePos where) {
+ size_t newCapacity = qMax(capacity, size_t(QIODEVICE_BUFFERSIZE));
+ while (newCapacity < required)
+ newCapacity *= 2;
+ int moveOffset = (where == freeSpaceAtEnd) ? 0 : newCapacity - len;
+ if (newCapacity > capacity) {
+ // allocate more space
+ char* newBuf = new char[newCapacity];
+ memmove(newBuf + moveOffset, first, len);
+ delete [] buf;
+ buf = newBuf;
+ capacity = newCapacity;
+ } else {
+ // shift any existing data to make space
+ memmove(buf + moveOffset, first, len);
+ }
+ first = buf + moveOffset;
+ }
+
+private:
+ // length of the unread data
+ int len;
+ // start of the unread data
+ char* first;
+ // the allocated buffer
+ char* buf;
+ // allocated buffer size
+ size_t capacity;
+};
+
class Q_CORE_EXPORT QIODevicePrivate
#ifndef QT_NO_QOBJECT
: public QObjectPrivate
@@ -78,10 +198,15 @@ public:
QIODevice::OpenMode openMode;
QString errorString;
- QRingBuffer buffer;
+ QIODevicePrivateLinearBuffer buffer;
qint64 pos;
qint64 devicePos;
+ // these three are for fast position updates during read, avoiding isSequential test
+ qint64 seqDumpPos;
+ qint64 *pPos;
+ qint64 *pDevicePos;
bool baseReadLineDataCalled;
+ bool firstRead;
virtual bool putCharHelper(char c);
diff --git a/src/corelib/io/qwindowspipewriter.cpp b/src/corelib/io/qwindowspipewriter.cpp
index eb42c20..417439f 100644
--- a/src/corelib/io/qwindowspipewriter.cpp
+++ b/src/corelib/io/qwindowspipewriter.cpp
@@ -40,6 +40,7 @@
****************************************************************************/
#include "qwindowspipewriter_p.h"
+#include <string.h>
QT_BEGIN_NAMESPACE
@@ -100,7 +101,8 @@ qint64 QWindowsPipeWriter::write(const char *ptr, qint64 maxlen)
void QWindowsPipeWriter::run()
{
- OVERLAPPED overl = {0, 0, {{ 0 }}, 0};
+ OVERLAPPED overl;
+ memset(&overl, 0, sizeof overl);
overl.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
forever {
lock.lock();
diff --git a/src/corelib/kernel/kernel.pri b/src/corelib/kernel/kernel.pri
index d0dad49..1851e04 100644
--- a/src/corelib/kernel/kernel.pri
+++ b/src/corelib/kernel/kernel.pri
@@ -33,7 +33,6 @@ HEADERS += \
kernel/qsystemsemaphore.h \
kernel/qsystemsemaphore_p.h \
kernel/qfunctions_p.h \
- kernel/qguard_p.h \
kernel/qmath.h
SOURCES += \
diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp
index 191be6c..ca44264 100644
--- a/src/corelib/kernel/qeventdispatcher_symbian.cpp
+++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp
@@ -50,6 +50,13 @@
QT_BEGIN_NAMESPACE
+#ifdef SYMBIAN_GRAPHICS_WSERV_QT_EFFECTS
+// when the system UI is Qt based, priority drop is not needed as CPU starved processes will not be killed.
+#undef QT_SYMBIAN_PRIORITY_DROP
+#else
+#define QT_SYMBIAN_PRIORITY_DROP
+#endif
+
#define WAKE_UP_PRIORITY CActive::EPriorityStandard
#define TIMER_PRIORITY CActive::EPriorityHigh
#define NULLTIMER_PRIORITY CActive::EPriorityLow
@@ -697,6 +704,7 @@ bool QEventDispatcherSymbian::processEvents ( QEventLoop::ProcessEventsFlags fla
bool handledSymbianEvent = false;
m_interrupt = false;
+#ifdef QT_SYMBIAN_PRIORITY_DROP
/*
* This QTime variable is used to measure the time it takes to finish
* the event loop. If we take too long in the loop, other processes
@@ -714,6 +722,7 @@ bool QEventDispatcherSymbian::processEvents ( QEventLoop::ProcessEventsFlags fla
} timeState = FirstRun;
TProcessPriority priority;
+#endif
while (1) {
if (block) {
@@ -727,10 +736,12 @@ bool QEventDispatcherSymbian::processEvents ( QEventLoop::ProcessEventsFlags fla
CActiveScheduler::Current()->WaitForAnyRequest();
}
+#ifdef QT_SYMBIAN_PRIORITY_DROP
if (timeState == SubsequentRun) {
time.start();
timeState = TimeStarted;
}
+#endif
TInt error;
handledSymbianEvent = CActiveScheduler::RunIfReady(error, KMinTInt);
@@ -747,6 +758,7 @@ bool QEventDispatcherSymbian::processEvents ( QEventLoop::ProcessEventsFlags fla
break;
}
block = false;
+#ifdef QT_SYMBIAN_PRIORITY_DROP
if (timeState == TimeStarted && time.elapsed() > 100) {
priority = m_processHandle.Priority();
m_processHandle.SetPriority(EPriorityBackground);
@@ -759,6 +771,7 @@ bool QEventDispatcherSymbian::processEvents ( QEventLoop::ProcessEventsFlags fla
}
if (timeState == FirstRun)
timeState = SubsequentRun;
+#endif
};
emit awake();
diff --git a/src/corelib/kernel/qguard_p.h b/src/corelib/kernel/qguard_p.h
deleted file mode 100644
index 0f7fd94..0000000
--- a/src/corelib/kernel/qguard_p.h
+++ /dev/null
@@ -1,157 +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 QtCore module 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 QGUARD_P_H
-#define QGUARD_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header
-// file may change from version to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "QtCore/qglobal.h"
-
-QT_BEGIN_NAMESPACE
-
-class QObject;
-template<class T>
-class QGuard
-{
- QObject *o;
- QGuard<QObject> *next;
- QGuard<QObject> **prev;
- friend void q_guard_addGuard(QGuard<QObject> *);
- friend void q_guard_removeGuard(QGuard<QObject> *);
- friend class QObjectPrivate;
-public:
- inline QGuard();
- inline QGuard(T *);
- inline QGuard(const QGuard<T> &);
- inline virtual ~QGuard();
-
- inline QGuard<T> &operator=(const QGuard<T> &o);
- inline QGuard<T> &operator=(T *);
-
- inline bool isNull() const
- { return !o; }
-
- inline T* operator->() const
- { return static_cast<T*>(const_cast<QObject*>(o)); }
- inline T& operator*() const
- { return *static_cast<T*>(const_cast<QObject*>(o)); }
- inline operator T*() const
- { return static_cast<T*>(const_cast<QObject*>(o)); }
- inline T* data() const
- { return static_cast<T*>(const_cast<QObject*>(o)); }
-
-protected:
- virtual void objectDestroyed(T *) {}
-};
-
-QT_END_NAMESPACE
-
-#include "private/qobject_p.h"
-
-QT_BEGIN_NAMESPACE
-
-inline void q_guard_addGuard(QGuard<QObject> *);
-inline void q_guard_removeGuard(QGuard<QObject> *);
-
-template<class T>
-QGuard<T>::QGuard()
-: o(0), next(0), prev(0)
-{
-}
-
-template<class T>
-QGuard<T>::QGuard(T *g)
-: o(g), next(0), prev(0)
-{
- if (o) q_guard_addGuard(reinterpret_cast<QGuard<QObject> *>(this));
-}
-
-template<class T>
-QGuard<T>::QGuard(const QGuard<T> &g)
-: o(g.o), next(0), prev(0)
-{
- if (o) q_guard_addGuard(reinterpret_cast<QGuard<QObject> *>(this));
-}
-
-template<class T>
-QGuard<T>::~QGuard()
-{
- if (prev) q_guard_removeGuard(reinterpret_cast<QGuard<QObject> *>(this));
- o = 0;
-}
-
-template<class T>
-QGuard<T> &QGuard<T>::operator=(const QGuard<T> &g)
-{
- if (g.o != o) {
- if (prev)
- q_guard_removeGuard(reinterpret_cast<QGuard<QObject> *>(this));
- o = g.o;
- if (o) q_guard_addGuard(reinterpret_cast<QGuard<QObject> *>(this));
- }
- return *this;
-}
-
-template<class T>
-inline QGuard<T> &QGuard<T>::operator=(T *g)
-{
- if (g != o) {
- if (prev)
- q_guard_removeGuard(reinterpret_cast<QGuard<QObject> *>(this));
- o = g;
- if (o) q_guard_addGuard(reinterpret_cast<QGuard<QObject> *>(this));
- }
- return *this;
-}
-
-QT_END_NAMESPACE
-
-#endif // QGUARD_P_H
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index 53c5b3b..330de20 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -496,15 +496,6 @@ void QMetaObject::changeGuard(QObject **ptr, QObject *o)
void QObjectPrivate::clearGuards(QObject *object)
{
QObjectPrivate *priv = QObjectPrivate::get(object);
- QGuard<QObject> *guard = priv->extraData ? priv->extraData->objectGuards : 0;
- while (guard) {
- QGuard<QObject> *g = guard;
- guard = guard->next;
- g->o = 0;
- g->prev = 0;
- g->next = 0;
- g->objectDestroyed(object);
- }
if (!priv->hasGuards)
return;
diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h
index 20e3da1..3b59abb 100644
--- a/src/corelib/kernel/qobject_p.h
+++ b/src/corelib/kernel/qobject_p.h
@@ -60,7 +60,6 @@
#include "QtCore/qvector.h"
#include "QtCore/qreadwritelock.h"
#include "QtCore/qvariant.h"
-#include "private/qguard_p.h"
QT_BEGIN_NAMESPACE
@@ -100,13 +99,12 @@ class Q_CORE_EXPORT QObjectPrivate : public QObjectData
public:
struct ExtraData
{
- ExtraData() : objectGuards(0) {}
+ ExtraData() {}
#ifndef QT_NO_USERDATA
QVector<QObjectUserData *> userData;
#endif
QList<QByteArray> propertyNames;
QList<QVariant> propertyValues;
- QGuard<QObject> *objectGuards; //linked list handle of QGuards
};
struct Connection
@@ -224,33 +222,6 @@ inline bool QObjectPrivate::isSignalConnected(uint signal_index) const
}
-inline void q_guard_addGuard(QGuard<QObject> *g)
-{
- QObjectPrivate *p = QObjectPrivate::get(g->o);
- if (p->wasDeleted) {
- qWarning("QGuard: cannot add guard to deleted object");
- g->o = 0;
- return;
- }
-
- if (!p->extraData)
- p->extraData = new QObjectPrivate::ExtraData;
-
- g->next = p->extraData->objectGuards;
- p->extraData->objectGuards = g;
- g->prev = &p->extraData->objectGuards;
- if (g->next)
- g->next->prev = &g->next;
-}
-
-inline void q_guard_removeGuard(QGuard<QObject> *g)
-{
- if (g->next) g->next->prev = g->prev;
- *g->prev = g->next;
- g->next = 0;
- g->prev = 0;
-}
-
Q_DECLARE_TYPEINFO(QObjectPrivate::Connection, Q_MOVABLE_TYPE);
Q_DECLARE_TYPEINFO(QObjectPrivate::Sender, Q_MOVABLE_TYPE);
diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp
index a2c575a..0f99948 100644
--- a/src/corelib/plugin/qlibrary.cpp
+++ b/src/corelib/plugin/qlibrary.cpp
@@ -620,6 +620,20 @@ bool QLibraryPrivate::isPlugin(QSettings *settings)
QByteArray key;
bool success = false;
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
+ if (fileName.endsWith(QLatin1String(".debug"))) {
+ // refuse to load a file that ends in .debug
+ // these are the debug symbols from the libraries
+ // the problem is that they are valid shared library files
+ // and dlopen is known to crash while opening them
+
+ // pretend we didn't see the file
+ errorString = QLibrary::tr("The shared library was not found.");
+ pluginState = IsNotAPlugin;
+ return false;
+ }
+#endif
+
QFileInfo fileinfo(fileName);
#ifndef QT_NO_DATESTRING
diff --git a/src/corelib/plugin/qplugin.h b/src/corelib/plugin/qplugin.h
index b798437..7f541f1 100644
--- a/src/corelib/plugin/qplugin.h
+++ b/src/corelib/plugin/qplugin.h
@@ -110,7 +110,7 @@ void Q_CORE_EXPORT qRegisterStaticPluginInstanceFunction(QtPluginInstanceFunctio
# define QPLUGIN_DEBUG_STR "true"
# endif
# define Q_PLUGIN_VERIFICATION_DATA \
- static const char *qt_plugin_verification_data = \
+ static const char qt_plugin_verification_data[] = \
"pattern=""QT_PLUGIN_VERIFICATION_DATA""\n" \
"version="QT_VERSION_STR"\n" \
"debug="QPLUGIN_DEBUG_STR"\n" \
diff --git a/src/corelib/statemachine/qstatemachine.cpp b/src/corelib/statemachine/qstatemachine.cpp
index bd7e626..9d5c49f 100644
--- a/src/corelib/statemachine/qstatemachine.cpp
+++ b/src/corelib/statemachine/qstatemachine.cpp
@@ -1175,6 +1175,16 @@ void QStateMachinePrivate::removeStartState()
_startState = 0;
}
+void QStateMachinePrivate::clearHistory()
+{
+ Q_Q(QStateMachine);
+ QList<QHistoryState*> historyStates = qFindChildren<QHistoryState*>(q);
+ for (int i = 0; i < historyStates.size(); ++i) {
+ QHistoryState *h = historyStates.at(i);
+ QHistoryStatePrivate::get(h)->configuration.clear();
+ }
+}
+
void QStateMachinePrivate::_q_start()
{
Q_Q(QStateMachine);
@@ -1186,6 +1196,7 @@ void QStateMachinePrivate::_q_start()
internalEventQueue.clear();
qDeleteAll(externalEventQueue);
externalEventQueue.clear();
+ clearHistory();
#ifdef QSTATEMACHINE_DEBUG
qDebug() << q << ": starting";
diff --git a/src/corelib/statemachine/qstatemachine_p.h b/src/corelib/statemachine/qstatemachine_p.h
index 0fead5d..5e1015f 100644
--- a/src/corelib/statemachine/qstatemachine_p.h
+++ b/src/corelib/statemachine/qstatemachine_p.h
@@ -126,6 +126,8 @@ public:
QState *startState();
void removeStartState();
+ void clearHistory();
+
void microstep(QEvent *event, const QList<QAbstractTransition*> &transitionList);
bool isPreempted(const QAbstractState *s, const QSet<QAbstractTransition*> &transitions) const;
QSet<QAbstractTransition*> selectTransitions(QEvent *event) const;
diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp
index 2bc5347..67ea00d 100644
--- a/src/corelib/tools/qchar.cpp
+++ b/src/corelib/tools/qchar.cpp
@@ -380,8 +380,12 @@ QT_BEGIN_NAMESPACE
\value Null A QChar with this value isNull().
\value Nbsp Non-breaking space.
- \value ReplacementCharacter
- \value ObjectReplacementCharacter The character shown when a font has no glyph for a certain codepoint. The square character is normally used.
+ \value ReplacementCharacter The character shown when a font has no glyph
+ for a certain codepoint. A special question mark character is often
+ used. Codecs use this codepoint when input data cannot be
+ represented in Unicode.
+ \value ObjectReplacementCharacter Used to represent an object such as an
+ image when such objects cannot be presented.
\value ByteOrderMark
\value ByteOrderSwapped
\value ParagraphSeparator
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index 54a4205..459d76a 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -1336,7 +1336,10 @@ bool QDate::isValid(int year, int month, int day)
bool QDate::isLeapYear(int y)
{
if (y < 1582) {
- return qAbs(y) % 4 == 0;
+ if ( y < 1) { // No year 0 in Julian calendar, so -1, -5, -9 etc are leap years
+ ++y;
+ }
+ return y % 4 == 0;
} else {
return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;
}
@@ -2315,17 +2318,35 @@ void QDateTime::setTimeSpec(Qt::TimeSpec spec)
}
}
-static uint toTime_tHelper(const QDate &utcDate, const QTime &utcTime)
+qint64 toMSecsSinceEpoch_helper(qint64 jd, int msecs)
{
- int days = QDate(1970, 1, 1).daysTo(utcDate);
- int secs = QTime().secsTo(utcTime);
- if (days < 0 || (days == 0 && secs < 0))
- return uint(-1);
+ int days = jd - julianDayFromGregorianDate(1970, 1, 1);
+ qint64 retval = (qlonglong(days) * MSECS_PER_DAY) + msecs;
+ return retval;
+}
- qlonglong retval = (qlonglong(days) * SECS_PER_DAY) + secs;
- if (retval >= Q_INT64_C(0xFFFFFFFF))
- return uint(-1);
- return uint(retval);
+/*!
+ \since 4.7
+
+ Returns the datetime as the number of milliseconds that have passed
+ since 1970-01-01T00:00:00.000, Coordinated Universal Time (Qt::UTC).
+
+ On systems that do not support time zones, this function will
+ behave as if local time were Qt::UTC.
+
+ The behavior for this function is undefined if the datetime stored in
+ this object is not valid. However, for all valid dates, this function
+ returns a unique value.
+
+ \sa toTime_t(), setMSecsSinceEpoch()
+*/
+qint64 QDateTime::toMSecsSinceEpoch() const
+{
+ QDate utcDate;
+ QTime utcTime;
+ d->getUTC(utcDate, utcTime);
+
+ return toMSecsSinceEpoch_helper(utcDate.jd, utcTime.ds());
}
/*!
@@ -2335,16 +2356,63 @@ static uint toTime_tHelper(const QDate &utcDate, const QTime &utcTime)
On systems that do not support time zones, this function will
behave as if local time were Qt::UTC.
- \sa setTime_t()
+ \note This function returns a 32-bit unsigned integer, so it does not
+ support dates before 1970, but it does support dates after
+ 2038-01-19T03:14:06, which may not be valid time_t values. Be careful
+ when passing those time_t values to system functions, which could
+ interpret them as negative dates.
+
+ If the date is outside the range 1970-01-01T00:00:00 to
+ 2106-02-07T06:28:14, this function returns -1 cast to an unsigned integer
+ (i.e., 0xFFFFFFFF).
+
+ To get an extended range, use toMSecsSinceEpoch().
+
+ \sa toMSecsSinceEpoch(), setTime_t()
*/
uint QDateTime::toTime_t() const
{
- QDate utcDate;
- QTime utcTime;
- d->getUTC(utcDate, utcTime);
+ qint64 retval = toMSecsSinceEpoch() / 1000;
+ if (quint64(retval) >= Q_UINT64_C(0xFFFFFFFF))
+ return uint(-1);
+ return uint(retval);
+}
+
+/*!
+ \since 4.7
- return toTime_tHelper(utcDate, utcTime);
+ Sets the date and time given the number of \a mulliseconds that have
+ passed since 1970-01-01T00:00:00.000, Coordinated Universal Time
+ (Qt::UTC). On systems that do not support time zones this function
+ will behave as if local time were Qt::UTC.
+
+ Note that there are possible values for \a msecs that lie outside the
+ valid range of QDateTime, both negative and positive. The behavior of
+ this function is undefined for those values.
+
+ \sa toMSecsSinceEpoch(), setTime_t()
+*/
+void QDateTime::setMSecsSinceEpoch(qint64 msecs)
+{
+ detach();
+
+ QDateTimePrivate::Spec oldSpec = d->spec;
+
+ int ddays = msecs / MSECS_PER_DAY;
+ msecs %= MSECS_PER_DAY;
+ if (msecs < 0) {
+ // negative
+ --ddays;
+ msecs += MSECS_PER_DAY;
+ }
+
+ d->date = QDate(1970, 1, 1).addDays(ddays);
+ d->time = QTime().addMSecs(msecs);
+ d->spec = QDateTimePrivate::UTC;
+
+ if (oldSpec != QDateTimePrivate::UTC)
+ d->spec = d->getLocal(d->date, d->time);
}
/*!
@@ -2813,7 +2881,7 @@ bool QDateTime::operator<(const QDateTime &other) const
*/
/*!
- \fn qint64 QDateTime::currentMsecsSinceEpoch()
+ \fn qint64 QDateTime::currentMSecsSinceEpoch()
\since 4.7
Returns the number of milliseconds since 1970-01-01T00:00:00 Universal
@@ -2876,7 +2944,7 @@ QDateTime QDateTime::currentDateTimeUtc()
return QDateTime(d, t, Qt::UTC);
}
-qint64 QDateTime::currentMsecsSinceEpoch()
+qint64 QDateTime::currentMSecsSinceEpoch()
{
QDate d;
QTime t;
@@ -2940,7 +3008,7 @@ QDateTime QDateTime::currentDateTimeUtc()
return QDateTime(d, ct, Qt::UTC);
}
-qint64 QDateTime::currentMsecsSinceEpoch()
+qint64 QDateTime::currentMSecsSinceEpoch()
{
QDate d;
QTime ct;
@@ -3057,7 +3125,7 @@ QDateTime QDateTime::currentDateTimeUtc()
return dt;
}
-qint64 QDateTime::currentMsecsSinceEpoch()
+qint64 QDateTime::currentMSecsSinceEpoch()
{
// posix compliant system
// we have milliseconds
@@ -3088,6 +3156,27 @@ QDateTime QDateTime::fromTime_t(uint seconds)
}
/*!
+ \since 4.7
+
+ Returns a datetime whose date and time are the number of milliseconds \a msec
+ that have passed since 1970-01-01T00:00:00.000, Coordinated Universal
+ Time (Qt::UTC). On systems that do not support time zones, the time
+ will be set as if local time were Qt::UTC.
+
+ Note that there are possible values for \a msecs that lie outside the valid
+ range of QDateTime, both negative and positive. The behavior of this
+ function is undefined for those values.
+
+ \sa toTime_t(), setTime_t()
+*/
+QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs)
+{
+ QDateTime d;
+ d.setMSecsSinceEpoch(msecs);
+ return d;
+}
+
+/*!
\since 4.4
\internal
@@ -3841,7 +3930,8 @@ static QDateTimePrivate::Spec utcToLocal(QDate &date, QTime &time)
{
QDate fakeDate = adjustDate(date);
- time_t secsSince1Jan1970UTC = toTime_tHelper(fakeDate, time);
+ // won't overflow because of fakeDate
+ time_t secsSince1Jan1970UTC = toMSecsSinceEpoch_helper(fakeDate.toJulianDay(), QTime().msecsTo(time)) / 1000;
tm *brokenDown = 0;
#if defined(Q_OS_WINCE)
@@ -3926,7 +4016,7 @@ static void localToUtc(QDate &date, QTime &time, int isdst)
localTM.tm_year = fakeDate.year() - 1900;
localTM.tm_isdst = (int)isdst;
#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
- time_t secsSince1Jan1970UTC = toTime_tHelper(fakeDate, time);
+ time_t secsSince1Jan1970UTC = toMSecsSinceEpoch_helper(fakeDate.toJulianDay(), QTime().msecsTo(time));
#else
#if defined(Q_OS_WIN)
_tzset();
diff --git a/src/corelib/tools/qdatetime.h b/src/corelib/tools/qdatetime.h
index ef5968e..f445f1c 100644
--- a/src/corelib/tools/qdatetime.h
+++ b/src/corelib/tools/qdatetime.h
@@ -230,10 +230,12 @@ public:
QDate date() const;
QTime time() const;
Qt::TimeSpec timeSpec() const;
+ qint64 toMSecsSinceEpoch() const;
uint toTime_t() const;
void setDate(const QDate &date);
void setTime(const QTime &time);
void setTimeSpec(Qt::TimeSpec spec);
+ void setMSecsSinceEpoch(qint64 msecs);
void setTime_t(uint secsSince1Jan1970UTC);
#ifndef QT_NO_DATESTRING
QString toString(Qt::DateFormat f = Qt::TextDate) const;
@@ -267,7 +269,8 @@ public:
static QDateTime fromString(const QString &s, const QString &format);
#endif
static QDateTime fromTime_t(uint secsSince1Jan1970UTC);
- static qint64 currentMsecsSinceEpoch();
+ static QDateTime fromMSecsSinceEpoch(qint64 msecs);
+ static qint64 currentMSecsSinceEpoch();
#ifdef QT3_SUPPORT
inline QT3_SUPPORT void setTime_t(uint secsSince1Jan1970UTC, Qt::TimeSpec spec) {
diff --git a/src/corelib/tools/qelapsedtimer_generic.cpp b/src/corelib/tools/qelapsedtimer_generic.cpp
index 9b589c1..85986e6 100644
--- a/src/corelib/tools/qelapsedtimer_generic.cpp
+++ b/src/corelib/tools/qelapsedtimer_generic.cpp
@@ -98,7 +98,7 @@ void QElapsedTimer::start()
qint64 QElapsedTimer::restart()
{
qint64 old = t1;
- t1 = QDateTime::currentMsecsSinceEpoch();
+ t1 = QDateTime::currentMSecsSinceEpoch();
t2 = 0;
return t1 - old;
}
@@ -112,7 +112,7 @@ qint64 QElapsedTimer::restart()
*/
qint64 QElapsedTimer::elapsed() const
{
- return QDateTime::currentMsecsSinceEpoch() - t1;
+ return QDateTime::currentMSecsSinceEpoch() - t1;
}
/*!
diff --git a/src/corelib/tools/qelapsedtimer_unix.cpp b/src/corelib/tools/qelapsedtimer_unix.cpp
index 85d7fa8..2c4ea58 100644
--- a/src/corelib/tools/qelapsedtimer_unix.cpp
+++ b/src/corelib/tools/qelapsedtimer_unix.cpp
@@ -74,7 +74,7 @@ bool QElapsedTimer::isMonotonic()
static int returnValue = 0;
if (returnValue == 0) {
-# if (_POSIX_MONOTONIC_CLOCK-0 < 0)
+# if (_POSIX_MONOTONIC_CLOCK-0 < 0) || !defined(_SC_MONOTONIC_CLOCK)
returnValue = -1;
# elif (_POSIX_MONOTONIC_CLOCK == 0)
// detect if the system support monotonic timers
@@ -97,19 +97,19 @@ static inline QPair<long, long> do_gettime()
#if (_POSIX_MONOTONIC_CLOCK-0 > 0)
timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
- return qMakePair(ts.tv_sec, ts.tv_nsec);
+ return qMakePair<long,long>(ts.tv_sec, ts.tv_nsec);
#else
# if !defined(QT_NO_CLOCK_MONOTONIC) && !defined(QT_BOOTSTRAPPED)
if (QElapsedTimer::isMonotonic()) {
timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
- return qMakePair(ts.tv_sec, ts.tv_nsec);
+ return qMakePair<long,long>(ts.tv_sec, ts.tv_nsec);
}
# endif
// use gettimeofday
timeval tv;
::gettimeofday(&tv, 0);
- return qMakePair(tv.tv_sec, tv.tv_usec);
+ return qMakePair<long,long>(tv.tv_sec, tv.tv_usec);
#endif
}
diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h
index aecb66e..9773d4b 100644
--- a/src/corelib/tools/qvarlengtharray.h
+++ b/src/corelib/tools/qvarlengtharray.h
@@ -107,6 +107,10 @@ public:
Q_ASSERT(idx >= 0 && idx < s);
return ptr[idx];
}
+ inline const T &at(int idx) const { return operator[](idx); }
+
+ T value(int i) const;
+ T value(int i, const T &defaultValue) const;
inline void append(const T &t) {
if (s == a) // i.e. s != 0
@@ -248,6 +252,21 @@ Q_OUTOFLINE_TEMPLATE void QVarLengthArray<T, Prealloc>::realloc(int asize, int a
}
}
+template <class T, int Prealloc>
+Q_OUTOFLINE_TEMPLATE T QVarLengthArray<T, Prealloc>::value(int i) const
+{
+ if (i < 0 || i >= size()) {
+ return T();
+ }
+ return at(i);
+}
+template <class T, int Prealloc>
+Q_OUTOFLINE_TEMPLATE T QVarLengthArray<T, Prealloc>::value(int i, const T &defaultValue) const
+{
+ return (i < 0 || i >= size()) ? defaultValue : at(i);
+}
+
+
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/corelib/tools/qvarlengtharray.qdoc b/src/corelib/tools/qvarlengtharray.qdoc
index bb7a3de..38901e5 100644
--- a/src/corelib/tools/qvarlengtharray.qdoc
+++ b/src/corelib/tools/qvarlengtharray.qdoc
@@ -197,7 +197,7 @@
\a i must be a valid index position in the array (i.e., 0 <= \a i
< size()).
- \sa data()
+ \sa data(), at()
*/
/*! \fn const T &QVarLengthArray::operator[](int i) const
@@ -272,3 +272,33 @@
Constructs a copy of \a other.
*/
+/*! \fn const T &QVarLengthArray::at(int i) const
+
+ Returns a reference to the item at index position \a i.
+
+ \a i must be a valid index position in the array (i.e., 0 <= \a i
+ < size()).
+
+ \sa value(), operator[]()
+*/
+
+/*! \fn T QVarLengthArray::value(int i) const
+
+ Returns the value at index position \a i.
+
+ If the index \a i is out of bounds, the function returns
+ a \l{default-constructed value}. If you are certain that
+ \a i is within bounds, you can use at() instead, which is slightly
+ faster.
+
+ \sa at(), operator[]()
+*/
+
+/*! \fn T QVarLengthArray::value(int i, const T &defaultValue) const
+
+ \overload
+
+ If the index \a i is out of bounds, the function returns
+ \a defaultValue.
+*/
+
diff --git a/src/dbus/dbus.pro b/src/dbus/dbus.pro
index 9ab3920..7c59808 100644
--- a/src/dbus/dbus.pro
+++ b/src/dbus/dbus.pro
@@ -20,7 +20,8 @@ unix {
QtXml
}
win32 {
- LIBS_PRIVATE += -lws2_32 \
+ wince*:LIBS_PRIVATE += -lws2
+ else:LIBS_PRIVATE += -lws2_32 \
-ladvapi32 \
-lnetapi32 \
-luser32
diff --git a/src/dbus/qdbusserver.cpp b/src/dbus/qdbusserver.cpp
index 8f9323a..13b18a6 100644
--- a/src/dbus/qdbusserver.cpp
+++ b/src/dbus/qdbusserver.cpp
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QDBusServer
\inmodule QtDBus
- \since 4.2
+ \internal
\brief The QDBusServer class provides peer-to-peer communication
between processes on the same computer.
diff --git a/src/declarative/3rdparty/qlistmodelinterface.cpp b/src/declarative/3rdparty/qlistmodelinterface.cpp
index 50714ce..98d6a5b 100644
--- a/src/declarative/3rdparty/qlistmodelinterface.cpp
+++ b/src/declarative/3rdparty/qlistmodelinterface.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qlistmodelinterface_p.h"
+#include "private/qlistmodelinterface_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/QmlChanges.txt b/src/declarative/QmlChanges.txt
index 2a35dda..c86bdc6 100644
--- a/src/declarative/QmlChanges.txt
+++ b/src/declarative/QmlChanges.txt
@@ -1,6 +1,7 @@
=============================================================================
The changes below are pre Qt 4.7.0 beta
+Removed Q-prefix from validators (IntValidator, DoubleValidator, and RegExpValidator)
PathView: offset property now uses range 0-1.0 rather than 0-100
ListView, GridView::positionViewAtIndex() gained a 'mode' parameter
Removed Qt.playSound (replaced by SoundEffect element)
@@ -13,6 +14,9 @@ AnchorAnimation must now be used to animate anchor changes (and not NumberAnimat
Removed ParentAction (use ParentAnimation instead)
ScriptAction: renamed stateChangeScriptName -> scriptName
Animation: replace repeat with loops (loops: Animation.Infinite gives the old repeat behavior)
+AnchorChanges: use natural form to specify anchors (anchors.left instead of left)
+AnchorChanges: removed reset property. (reset: "left" should now be anchors.left: undefined)
+PathView: snapPosition replaced by preferredHighlightBegin, preferredHighlightEnd
C++ API
-------
@@ -28,6 +32,39 @@ syntax has been introduced:
Item { Behavior on x {}; NumberAnimation on y {} }
Only the syntax has changed, the behavior is identical.
+
+EaseFollow changed to SmoothedAnimation
+---------------------------------------
+EaseFollow was renamed to SmoothedAnimation and now it inherits from
+NumberAnimaton and as a consequence SmoothedAnimation can be used inside
+Behaviors, as PropertySourceValues or in state transitions, like any other animation.
+
+The old EaseFollow properties changed to comply with the other declarative
+animations ('source' changed to 'to'), so now 'to' changes are not
+automatically 'followed' anymore.
+
+If you want to follow an hypothetical rect1, you should do now:
+
+     Rectangle {
+         color: "green"
+         width: 60; height: 60;
+         x: rect1.x - 5; y: rect1.y - 5;
+         Behavior on x { SmoothedAnimation { velocity: 200 } }
+         Behavior on y { SmoothedAnimation { velocity: 200 } }
+     }
+
+instead of the old automatic source changed tracking:
+
+     Rectangle {
+         color: "green"
+         width: 60; height: 60;
+         EaseFollow on x { source: rect1.x - 5; velocity: 200 }
+         EaseFollow on y { source: rect1.y - 5; velocity: 200 }
+    }
+
+This is a syntax and behavior change.
+
+
Script element removed
----------------------
Inline Script{} blocks have been deprecated, and will soon be removed entirely.
@@ -58,7 +95,7 @@ MouseArea {
becomes
-Import “foo.js†as Foo
+import “foo.js†as Foo
MouseArea {
onClicked: Foo.foo()
}
diff --git a/src/declarative/debugger/qdeclarativedebug.cpp b/src/declarative/debugger/qdeclarativedebug.cpp
index 677d05f..cd5340b 100644
--- a/src/declarative/debugger/qdeclarativedebug.cpp
+++ b/src/declarative/debugger/qdeclarativedebug.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativedebug_p.h"
+#include "private/qdeclarativedebug_p.h"
-#include "qdeclarativedebugclient_p.h"
+#include "private/qdeclarativedebugclient_p.h"
#include <qdeclarativeenginedebug_p.h>
diff --git a/src/declarative/debugger/qdeclarativedebugclient.cpp b/src/declarative/debugger/qdeclarativedebugclient.cpp
index c23e32f..2e52b40 100644
--- a/src/declarative/debugger/qdeclarativedebugclient.cpp
+++ b/src/declarative/debugger/qdeclarativedebugclient.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativedebugclient_p.h"
+#include "private/qdeclarativedebugclient_p.h"
-#include "qpacketprotocol_p.h"
+#include "private/qpacketprotocol_p.h"
#include <QtCore/qdebug.h>
#include <QtCore/qstringlist.h>
diff --git a/src/declarative/debugger/qdeclarativedebuggerstatus.cpp b/src/declarative/debugger/qdeclarativedebuggerstatus.cpp
index 5908628..476cca2 100644
--- a/src/declarative/debugger/qdeclarativedebuggerstatus.cpp
+++ b/src/declarative/debugger/qdeclarativedebuggerstatus.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativedebuggerstatus_p.h"
+#include "private/qdeclarativedebuggerstatus_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/debugger/qdeclarativedebugservice.cpp b/src/declarative/debugger/qdeclarativedebugservice.cpp
index d9bbdb5..9d9d1d0 100644
--- a/src/declarative/debugger/qdeclarativedebugservice.cpp
+++ b/src/declarative/debugger/qdeclarativedebugservice.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativedebugservice_p.h"
+#include "private/qdeclarativedebugservice_p.h"
-#include "qpacketprotocol_p.h"
+#include "private/qpacketprotocol_p.h"
#include <QtCore/qdebug.h>
#include <QtNetwork/qtcpserver.h>
diff --git a/src/declarative/debugger/qpacketprotocol.cpp b/src/declarative/debugger/qpacketprotocol.cpp
index 7440b87..6241922 100644
--- a/src/declarative/debugger/qpacketprotocol.cpp
+++ b/src/declarative/debugger/qpacketprotocol.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qpacketprotocol_p.h"
+#include "private/qpacketprotocol_p.h"
#include <QBuffer>
diff --git a/src/declarative/graphicsitems/graphicsitems.pri b/src/declarative/graphicsitems/graphicsitems.pri
index d30651b..af76a67 100644
--- a/src/declarative/graphicsitems/graphicsitems.pri
+++ b/src/declarative/graphicsitems/graphicsitems.pri
@@ -39,6 +39,7 @@ HEADERS += \
$$PWD/qdeclarativerepeater_p.h \
$$PWD/qdeclarativerepeater_p_p.h \
$$PWD/qdeclarativescalegrid_p_p.h \
+ $$PWD/qdeclarativetranslate_p.h \
$$PWD/qdeclarativetextinput_p.h \
$$PWD/qdeclarativetextinput_p_p.h \
$$PWD/qdeclarativetextedit_p.h \
@@ -75,6 +76,7 @@ SOURCES += \
$$PWD/qdeclarativerectangle.cpp \
$$PWD/qdeclarativerepeater.cpp \
$$PWD/qdeclarativescalegrid.cpp \
+ $$PWD/qdeclarativetranslate.cpp \
$$PWD/qdeclarativetextinput.cpp \
$$PWD/qdeclarativetext.cpp \
$$PWD/qdeclarativetextedit.cpp \
diff --git a/src/declarative/graphicsitems/qdeclarativeanchors.cpp b/src/declarative/graphicsitems/qdeclarativeanchors.cpp
index dc1f09d..7a7e5be 100644
--- a/src/declarative/graphicsitems/qdeclarativeanchors.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeanchors.cpp
@@ -39,10 +39,10 @@
**
****************************************************************************/
-#include "qdeclarativeanchors_p_p.h"
+#include "private/qdeclarativeanchors_p_p.h"
#include "qdeclarativeitem.h"
-#include "qdeclarativeitem_p.h"
+#include "private/qdeclarativeitem_p.h"
#include <qdeclarativeinfo.h>
@@ -1059,7 +1059,7 @@ bool QDeclarativeAnchorsPrivate::checkVAnchorValid(QDeclarativeAnchorLine anchor
return true;
}
-#include <moc_qdeclarativeanchors_p.cpp>
-
QT_END_NAMESPACE
+#include <moc_qdeclarativeanchors_p.cpp>
+
diff --git a/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h b/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h
index 5840868..ba6359a 100644
--- a/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeanchors_p_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include "qdeclarativeanchors_p.h"
-#include "qdeclarativeitemchangelistener_p.h"
+#include "private/qdeclarativeanchors_p.h"
+#include "private/qdeclarativeitemchangelistener_p.h"
#include <private/qobject_p.h>
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp b/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
index 2c2e034..f14f773 100644
--- a/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeanimatedimage.cpp
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#include "qdeclarativeanimatedimage_p.h"
-#include "qdeclarativeanimatedimage_p_p.h"
+#include "private/qdeclarativeanimatedimage_p.h"
+#include "private/qdeclarativeanimatedimage_p_p.h"
#include <qdeclarativeengine.h>
diff --git a/src/declarative/graphicsitems/qdeclarativeanimatedimage_p.h b/src/declarative/graphicsitems/qdeclarativeanimatedimage_p.h
index b2979fe..6ab66b3 100644
--- a/src/declarative/graphicsitems/qdeclarativeanimatedimage_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeanimatedimage_p.h
@@ -42,7 +42,7 @@
#ifndef QDECLARATIVEANIMATEDIMAGE_H
#define QDECLARATIVEANIMATEDIMAGE_H
-#include "qdeclarativeimage_p.h"
+#include "private/qdeclarativeimage_p.h"
QT_BEGIN_HEADER
diff --git a/src/declarative/graphicsitems/qdeclarativeanimatedimage_p_p.h b/src/declarative/graphicsitems/qdeclarativeanimatedimage_p_p.h
index 273c1d6..8ca9755 100644
--- a/src/declarative/graphicsitems/qdeclarativeanimatedimage_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeanimatedimage_p_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include "qdeclarativeimage_p_p.h"
+#include "private/qdeclarativeimage_p_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
index a7534b8..420ed90 100644
--- a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#include "qdeclarativeborderimage_p.h"
-#include "qdeclarativeborderimage_p_p.h"
+#include "private/qdeclarativeborderimage_p.h"
+#include "private/qdeclarativeborderimage_p_p.h"
#include <qdeclarativeengine.h>
@@ -217,7 +217,8 @@ void QDeclarativeBorderImage::load()
thisSciRequestFinished, Qt::DirectConnection);
}
} else {
- QDeclarativePixmapReply::Status status = QDeclarativePixmapCache::get(d->url, &d->pix, d->async);
+ QSize impsize;
+ QDeclarativePixmapReply::Status status = QDeclarativePixmapCache::get(d->url, &d->pix, &impsize, d->async);
if (status != QDeclarativePixmapReply::Ready && status != QDeclarativePixmapReply::Error) {
QDeclarativePixmapReply *reply = QDeclarativePixmapCache::request(qmlEngine(this), d->url);
d->pendingPixmapCache = true;
@@ -226,8 +227,8 @@ void QDeclarativeBorderImage::load()
this, SLOT(requestProgress(qint64,qint64)));
} else {
//### should be unified with requestFinished
- setImplicitWidth(d->pix.width());
- setImplicitHeight(d->pix.height());
+ setImplicitWidth(impsize.width());
+ setImplicitHeight(impsize.height());
if (d->pix.isNull())
d->status = Error;
@@ -336,7 +337,8 @@ void QDeclarativeBorderImage::setGridScaledImage(const QDeclarativeGridScaledIma
d->verticalTileMode = sci.verticalTileRule();
d->sciurl = d->url.resolved(QUrl(sci.pixmapUrl()));
- QDeclarativePixmapReply::Status status = QDeclarativePixmapCache::get(d->sciurl, &d->pix, d->async);
+ QSize impsize;
+ QDeclarativePixmapReply::Status status = QDeclarativePixmapCache::get(d->sciurl, &d->pix, &impsize, d->async);
if (status != QDeclarativePixmapReply::Ready && status != QDeclarativePixmapReply::Error) {
QDeclarativePixmapReply *reply = QDeclarativePixmapCache::request(qmlEngine(this), d->sciurl);
d->sciPendingPixmapCache = true;
@@ -362,8 +364,8 @@ void QDeclarativeBorderImage::setGridScaledImage(const QDeclarativeGridScaledIma
thisRequestProgress, Qt::DirectConnection);
} else {
//### should be unified with requestFinished
- setImplicitWidth(d->pix.width());
- setImplicitHeight(d->pix.height());
+ setImplicitWidth(impsize.width());
+ setImplicitHeight(impsize.height());
if (d->pix.isNull())
d->status = Error;
@@ -381,16 +383,17 @@ void QDeclarativeBorderImage::requestFinished()
{
Q_D(QDeclarativeBorderImage);
+ QSize impsize;
if (d->url.path().endsWith(QLatin1String(".sci"))) {
d->sciPendingPixmapCache = false;
- QDeclarativePixmapCache::get(d->sciurl, &d->pix, d->async);
+ QDeclarativePixmapCache::get(d->sciurl, &d->pix, &impsize, d->async);
} else {
d->pendingPixmapCache = false;
- if (QDeclarativePixmapCache::get(d->url, &d->pix, d->async) != QDeclarativePixmapReply::Ready)
+ if (QDeclarativePixmapCache::get(d->url, &d->pix, &impsize, d->async) != QDeclarativePixmapReply::Ready)
d->status = Error;
}
- setImplicitWidth(d->pix.width());
- setImplicitHeight(d->pix.height());
+ setImplicitWidth(impsize.width());
+ setImplicitHeight(impsize.height());
if (d->status == Loading)
d->status = Ready;
@@ -444,7 +447,7 @@ void QDeclarativeBorderImage::paint(QPainter *p, const QStyleOptionGraphicsItem
const QDeclarativeScaleGrid *border = d->getScaleGrid();
QMargins margins(border->left(), border->top(), border->right(), border->bottom());
QTileRules rules((Qt::TileRule)d->horizontalTileMode, (Qt::TileRule)d->verticalTileMode);
- qDrawBorderPixmap(p, QRect(0, 0, (int)d->width, (int)d->height), margins, d->pix, d->pix.rect(), margins, rules);
+ qDrawBorderPixmap(p, QRect(0, 0, (int)d->width(), (int)d->height()), margins, d->pix, d->pix.rect(), margins, rules);
if (d->smooth) {
p->setRenderHint(QPainter::Antialiasing, oldAA);
p->setRenderHint(QPainter::SmoothPixmapTransform, oldSmooth);
diff --git a/src/declarative/graphicsitems/qdeclarativeborderimage_p.h b/src/declarative/graphicsitems/qdeclarativeborderimage_p.h
index a759e67..5e725ca 100644
--- a/src/declarative/graphicsitems/qdeclarativeborderimage_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeborderimage_p.h
@@ -42,7 +42,7 @@
#ifndef QDECLARATIVEBORDERIMAGE_H
#define QDECLARATIVEBORDERIMAGE_H
-#include "qdeclarativeimagebase_p.h"
+#include "private/qdeclarativeimagebase_p.h"
#include <QtNetwork/qnetworkreply.h>
diff --git a/src/declarative/graphicsitems/qdeclarativeborderimage_p_p.h b/src/declarative/graphicsitems/qdeclarativeborderimage_p_p.h
index 82b9ebf..3535109 100644
--- a/src/declarative/graphicsitems/qdeclarativeborderimage_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeborderimage_p_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include "qdeclarativeimagebase_p_p.h"
-#include "qdeclarativescalegrid_p_p.h"
+#include "private/qdeclarativeimagebase_p_p.h"
+#include "private/qdeclarativescalegrid_p_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativeevents.cpp b/src/declarative/graphicsitems/qdeclarativeevents.cpp
index 8be2f40..6118ea8 100644
--- a/src/declarative/graphicsitems/qdeclarativeevents.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeevents.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativeevents_p_p.h"
+#include "private/qdeclarativeevents_p_p.h"
QT_BEGIN_NAMESPACE
/*!
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
index 9ccb3b6..fc7a87b 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#include "qdeclarativeflickable_p.h"
-#include "qdeclarativeflickable_p_p.h"
+#include "private/qdeclarativeflickable_p.h"
+#include "private/qdeclarativeflickable_p_p.h"
#include <QGraphicsSceneMouseEvent>
#include <QPointer>
@@ -137,7 +137,8 @@ QDeclarativeFlickablePrivate::QDeclarativeFlickablePrivate()
void QDeclarativeFlickablePrivate::init()
{
Q_Q(QDeclarativeFlickable);
- viewport->setParent(q);
+ QDeclarative_setParent_noEvent(viewport, q);
+ viewport->setParentItem(q);
static int timelineUpdatedIdx = -1;
static int timelineCompletedIdx = -1;
static int flickableTickedIdx = -1;
@@ -402,8 +403,10 @@ void QDeclarativeFlickablePrivate::updateBeginningEnd()
These properties describe the position and size of the currently viewed area.
The size is defined as the percentage of the full view currently visible,
- scaled to 0.0 - 1.0. The page position is in the range 0.0 (beginning) to
- size ratio (end), i.e. yPosition is in the range 0.0 - heightRatio.
+ scaled to 0.0 - 1.0. The page position is usually in the range 0.0 (beginning) to
+ 1.0 minus size ratio (end), i.e. yPosition is in the range 0.0 to 1.0-heightRatio.
+ However, it is possible for the contents to be dragged outside of the normal
+ range, resulting in the page positions also being outside the normal range.
These properties are typically used to draw a scrollbar, for example:
\code
@@ -990,10 +993,10 @@ QDeclarativeListProperty<QObject> QDeclarativeFlickable::flickableData()
return QDeclarativeListProperty<QObject>(this, (void *)d, QDeclarativeFlickablePrivate::data_append);
}
-QDeclarativeListProperty<QDeclarativeItem> QDeclarativeFlickable::flickableChildren()
+QDeclarativeListProperty<QGraphicsObject> QDeclarativeFlickable::flickableChildren()
{
Q_D(QDeclarativeFlickable);
- return d->viewport->fxChildren();
+ return QGraphicsItemPrivate::get(d->viewport)->childrenList();
}
/*!
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p.h
index 7dcab98..1fa2c74 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeflickable_p.h
@@ -82,7 +82,7 @@ class Q_DECLARATIVE_EXPORT QDeclarativeFlickable : public QDeclarativeItem
Q_PROPERTY(QDeclarativeFlickableVisibleArea *visibleArea READ visibleArea CONSTANT)
Q_PROPERTY(QDeclarativeListProperty<QObject> flickableData READ flickableData)
- Q_PROPERTY(QDeclarativeListProperty<QDeclarativeItem> flickableChildren READ flickableChildren)
+ Q_PROPERTY(QDeclarativeListProperty<QGraphicsObject> flickableChildren READ flickableChildren)
Q_CLASSINFO("DefaultProperty", "flickableData")
Q_ENUMS(FlickDirection)
@@ -92,7 +92,7 @@ public:
~QDeclarativeFlickable();
QDeclarativeListProperty<QObject> flickableData();
- QDeclarativeListProperty<QDeclarativeItem> flickableChildren();
+ QDeclarativeListProperty<QGraphicsObject> flickableChildren();
bool overShoot() const;
void setOverShoot(bool);
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
index c963c2b..1a04091 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
@@ -53,10 +53,10 @@
// We mean it.
//
-#include "qdeclarativeflickable_p.h"
+#include "private/qdeclarativeflickable_p.h"
-#include "qdeclarativeitem_p.h"
-#include "qdeclarativeitemchangelistener_p.h"
+#include "private/qdeclarativeitem_p.h"
+#include "private/qdeclarativeitemchangelistener_p.h"
#include <qdeclarative.h>
#include <qdeclarativetimeline_p_p.h>
diff --git a/src/declarative/graphicsitems/qdeclarativeflipable.cpp b/src/declarative/graphicsitems/qdeclarativeflipable.cpp
index 1fa08bb..98e34a9 100644
--- a/src/declarative/graphicsitems/qdeclarativeflipable.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeflipable.cpp
@@ -39,10 +39,10 @@
**
****************************************************************************/
-#include "qdeclarativeflipable_p.h"
+#include "private/qdeclarativeflipable_p.h"
-#include "qdeclarativeitem_p.h"
-#include "qdeclarativeguard_p.h"
+#include "private/qdeclarativeitem_p.h"
+#include "private/qdeclarativeguard_p.h"
#include <qdeclarativeinfo.h>
@@ -59,8 +59,8 @@ public:
void updateSceneTransformFromParent();
QDeclarativeFlipable::Side current;
- QDeclarativeGuard<QDeclarativeItem> front;
- QDeclarativeGuard<QDeclarativeItem> back;
+ QDeclarativeGuard<QGraphicsObject> front;
+ QDeclarativeGuard<QGraphicsObject> back;
};
/*!
@@ -75,7 +75,7 @@ public:
Here is a Flipable that flips whenever it is clicked:
- \snippet examples/declarative/flipable/flipable-example.qml 0
+ \snippet doc/src/snippets/declarative/flipable.qml 0
\image flipable.gif
@@ -112,13 +112,13 @@ QDeclarativeFlipable::~QDeclarativeFlipable()
The front and back sides of the flipable.
*/
-QDeclarativeItem *QDeclarativeFlipable::front()
+QGraphicsObject *QDeclarativeFlipable::front()
{
Q_D(const QDeclarativeFlipable);
return d->front;
}
-void QDeclarativeFlipable::setFront(QDeclarativeItem *front)
+void QDeclarativeFlipable::setFront(QGraphicsObject *front)
{
Q_D(QDeclarativeFlipable);
if (d->front) {
@@ -131,13 +131,13 @@ void QDeclarativeFlipable::setFront(QDeclarativeItem *front)
d->front->setOpacity(0.);
}
-QDeclarativeItem *QDeclarativeFlipable::back()
+QGraphicsObject *QDeclarativeFlipable::back()
{
Q_D(const QDeclarativeFlipable);
return d->back;
}
-void QDeclarativeFlipable::setBack(QDeclarativeItem *back)
+void QDeclarativeFlipable::setBack(QGraphicsObject *back)
{
Q_D(QDeclarativeFlipable);
if (d->back) {
@@ -195,12 +195,13 @@ void QDeclarativeFlipablePrivate::updateSceneTransformFromParent()
current = newSide;
if (current == QDeclarativeFlipable::Back && back) {
QTransform mat;
- mat.translate(back->width()/2,back->height()/2);
- if (back->width() && p1.x() >= p2.x())
+ QGraphicsItemPrivate *dBack = QGraphicsItemPrivate::get(back);
+ mat.translate(dBack->width()/2,dBack->height()/2);
+ if (dBack->width() && p1.x() >= p2.x())
mat.rotate(180, Qt::YAxis);
- if (back->height() && p2.y() >= p3.y())
+ if (dBack->height() && p2.y() >= p3.y())
mat.rotate(180, Qt::XAxis);
- mat.translate(-back->width()/2,-back->height()/2);
+ mat.translate(-dBack->width()/2,-dBack->height()/2);
back->setTransform(mat);
}
if (front)
diff --git a/src/declarative/graphicsitems/qdeclarativeflipable_p.h b/src/declarative/graphicsitems/qdeclarativeflipable_p.h
index 8b9c24c..302f083 100644
--- a/src/declarative/graphicsitems/qdeclarativeflipable_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeflipable_p.h
@@ -60,8 +60,8 @@ class Q_DECLARATIVE_EXPORT QDeclarativeFlipable : public QDeclarativeItem
Q_OBJECT
Q_ENUMS(Side)
- Q_PROPERTY(QDeclarativeItem *front READ front WRITE setFront)
- Q_PROPERTY(QDeclarativeItem *back READ back WRITE setBack)
+ Q_PROPERTY(QGraphicsObject *front READ front WRITE setFront)
+ Q_PROPERTY(QGraphicsObject *back READ back WRITE setBack)
Q_PROPERTY(Side side READ side NOTIFY sideChanged)
//### flipAxis
//### flipRotation
@@ -69,11 +69,11 @@ public:
QDeclarativeFlipable(QDeclarativeItem *parent=0);
~QDeclarativeFlipable();
- QDeclarativeItem *front();
- void setFront(QDeclarativeItem *);
+ QGraphicsObject *front();
+ void setFront(QGraphicsObject *);
- QDeclarativeItem *back();
- void setBack(QDeclarativeItem *);
+ QGraphicsObject *back();
+ void setBack(QGraphicsObject *);
enum Side { Front, Back };
Side side() const;
diff --git a/src/declarative/graphicsitems/qdeclarativefocuspanel.cpp b/src/declarative/graphicsitems/qdeclarativefocuspanel.cpp
index 20524b6..bd60e25 100644
--- a/src/declarative/graphicsitems/qdeclarativefocuspanel.cpp
+++ b/src/declarative/graphicsitems/qdeclarativefocuspanel.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativefocuspanel_p.h"
+#include "private/qdeclarativefocuspanel_p.h"
-#include "qdeclarativeitem_p.h"
+#include "private/qdeclarativeitem_p.h"
#include <QtGui/qgraphicsscene.h>
#include <QEvent>
diff --git a/src/declarative/graphicsitems/qdeclarativefocusscope.cpp b/src/declarative/graphicsitems/qdeclarativefocusscope.cpp
index 484df13..4bd2a86 100644
--- a/src/declarative/graphicsitems/qdeclarativefocusscope.cpp
+++ b/src/declarative/graphicsitems/qdeclarativefocusscope.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativefocusscope_p.h"
+#include "private/qdeclarativefocusscope_p.h"
-#include "qdeclarativeitem_p.h"
+#include "private/qdeclarativeitem_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativegraphicsobjectcontainer.cpp b/src/declarative/graphicsitems/qdeclarativegraphicsobjectcontainer.cpp
index eb5b6ce..c846431 100644
--- a/src/declarative/graphicsitems/qdeclarativegraphicsobjectcontainer.cpp
+++ b/src/declarative/graphicsitems/qdeclarativegraphicsobjectcontainer.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativegraphicsobjectcontainer_p.h"
+#include "private/qdeclarativegraphicsobjectcontainer_p.h"
-#include "qdeclarativeitem_p.h"
+#include "private/qdeclarativeitem_p.h"
#include <QGraphicsObject>
#include <QGraphicsWidget>
@@ -65,12 +65,12 @@ public:
if (graphicsObject && graphicsObject->isWidget()) {
if (!on) {
graphicsObject->removeEventFilter(q);
- QObject::disconnect(q, SIGNAL(widthChanged(qreal)), q, SLOT(_q_updateSize()));
- QObject::disconnect(q, SIGNAL(heightChanged(qreal)), q, SLOT(_q_updateSize()));
+ QObject::disconnect(q, SIGNAL(widthChanged()), q, SLOT(_q_updateSize()));
+ QObject::disconnect(q, SIGNAL(heightChanged()), q, SLOT(_q_updateSize()));
} else {
graphicsObject->installEventFilter(q);
- QObject::connect(q, SIGNAL(widthChanged(qreal)), q, SLOT(_q_updateSize()));
- QObject::connect(q, SIGNAL(heightChanged(qreal)), q, SLOT(_q_updateSize()));
+ QObject::connect(q, SIGNAL(widthChanged()), q, SLOT(_q_updateSize()));
+ QObject::connect(q, SIGNAL(heightChanged()), q, SLOT(_q_updateSize()));
}
}
}
@@ -251,7 +251,7 @@ void QDeclarativeGraphicsObjectContainerPrivate::_q_updateSize()
return;
QGraphicsWidget *gw = static_cast<QGraphicsWidget*>(graphicsObject);
- const QSizeF newSize(width, height);
+ const QSizeF newSize(width(), height());
gw->resize(newSize);
//### will respecting the widgets min/max ever get us in trouble? (all other items always
diff --git a/src/declarative/graphicsitems/qdeclarativegraphicsobjectcontainer_p.h b/src/declarative/graphicsitems/qdeclarativegraphicsobjectcontainer_p.h
index 95d7a4b..20c5bcf 100644
--- a/src/declarative/graphicsitems/qdeclarativegraphicsobjectcontainer_p.h
+++ b/src/declarative/graphicsitems/qdeclarativegraphicsobjectcontainer_p.h
@@ -82,7 +82,6 @@ private:
QT_END_NAMESPACE
-QML_DECLARE_TYPE(QGraphicsObject)
QML_DECLARE_TYPE(QDeclarativeGraphicsObjectContainer)
QT_END_HEADER
diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp
index de0cb04..8247f17 100644
--- a/src/declarative/graphicsitems/qdeclarativegridview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp
@@ -39,12 +39,12 @@
**
****************************************************************************/
-#include "qdeclarativegridview_p.h"
+#include "private/qdeclarativegridview_p.h"
-#include "qdeclarativevisualitemmodel_p.h"
-#include "qdeclarativeflickable_p_p.h"
+#include "private/qdeclarativevisualitemmodel_p.h"
+#include "private/qdeclarativeflickable_p_p.h"
-#include <qdeclarativeeasefollow_p.h>
+#include "private/qdeclarativesmoothedanimation_p_p.h"
#include <qdeclarativeguard_p.h>
#include <qlistmodelinterface_p.h>
@@ -324,8 +324,8 @@ public:
enum MovementReason { Other, SetIndex, Mouse };
MovementReason moveReason;
int buffer;
- QDeclarativeEaseFollow *highlightXAnimator;
- QDeclarativeEaseFollow *highlightYAnimator;
+ QSmoothedAnimation *highlightXAnimator;
+ QSmoothedAnimation *highlightYAnimator;
enum BufferMode { NoBuffer = 0x00, BufferBefore = 0x01, BufferAfter = 0x02 };
BufferMode bufferMode;
QDeclarativeGridView::SnapMode snapMode;
@@ -372,7 +372,7 @@ FxGridItem *QDeclarativeGridViewPrivate::createItem(int modelIndex)
listItem->item->setZValue(1);
// complete
model->completeItem();
- listItem->item->setParent(q->viewport());
+ listItem->item->setParentItem(q->viewport());
unrequestedItems.remove(listItem->item);
}
requestedIndex = -1;
@@ -644,7 +644,7 @@ void QDeclarativeGridViewPrivate::createHighlight()
QDeclarativeContext *highlightContext = new QDeclarativeContext(qmlContext(q));
QObject *nobj = highlightComponent->create(highlightContext);
if (nobj) {
- highlightContext->setParent(nobj);
+ QDeclarative_setParent_noEvent(highlightContext, nobj);
item = qobject_cast<QDeclarativeItem *>(nobj);
if (!item)
delete nobj;
@@ -653,19 +653,21 @@ void QDeclarativeGridViewPrivate::createHighlight()
}
} else {
item = new QDeclarativeItem;
- item->setParent(q->viewport());
+ QDeclarative_setParent_noEvent(item, q->viewport());
+ item->setParentItem(q->viewport());
}
if (item) {
- item->setParent(q->viewport());
+ QDeclarative_setParent_noEvent(item, q->viewport());
+ item->setParentItem(q->viewport());
highlight = new FxGridItem(item, q);
- highlightXAnimator = new QDeclarativeEaseFollow(q);
- highlightXAnimator->setTarget(QDeclarativeProperty(highlight->item, QLatin1String("x")));
- highlightXAnimator->setDuration(150);
- highlightXAnimator->setEnabled(autoHighlight);
- highlightYAnimator = new QDeclarativeEaseFollow(q);
- highlightYAnimator->setTarget(QDeclarativeProperty(highlight->item, QLatin1String("y")));
- highlightYAnimator->setDuration(150);
- highlightYAnimator->setEnabled(autoHighlight);
+ highlightXAnimator = new QSmoothedAnimation(q);
+ highlightXAnimator->target = QDeclarativeProperty(highlight->item, QLatin1String("x"));
+ highlightXAnimator->userDuration = 150;
+ highlightYAnimator = new QSmoothedAnimation(q);
+ highlightYAnimator->target = QDeclarativeProperty(highlight->item, QLatin1String("y"));
+ highlightYAnimator->userDuration = 150;
+ highlightXAnimator->restart();
+ highlightYAnimator->restart();
changed = true;
}
}
@@ -679,10 +681,12 @@ void QDeclarativeGridViewPrivate::updateHighlight()
createHighlight();
if (currentItem && autoHighlight && highlight && !moving) {
// auto-update highlight
- highlightXAnimator->setSourceValue(currentItem->item->x());
- highlightYAnimator->setSourceValue(currentItem->item->y());
+ highlightXAnimator->to = currentItem->item->x();
+ highlightYAnimator->to = currentItem->item->y();
highlight->item->setWidth(currentItem->item->width());
highlight->item->setHeight(currentItem->item->height());
+ highlightXAnimator->restart();
+ highlightYAnimator->restart();
}
updateTrackedItem();
}
@@ -811,7 +815,7 @@ void QDeclarativeGridViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
if (snapMode != QDeclarativeGridView::SnapToRow && highlightRange != QDeclarativeGridView::StrictlyEnforceRange)
data.flickTarget = maxExtent;
}
- if ((maxDistance > 0 || overShoot) && (snapMode != QDeclarativeGridView::NoSnap || highlightRange == QDeclarativeGridView::StrictlyEnforceRange)) {
+ if (maxDistance > 0 || overShoot) {
// This mode requires the grid to stop exactly on a row boundary.
qreal v = velocity;
if (maxVelocity != -1 && maxVelocity < qAbs(v)) {
@@ -1188,10 +1192,6 @@ void QDeclarativeGridView::setHighlightFollowsCurrentItem(bool autoHighlight)
Q_D(QDeclarativeGridView);
if (d->autoHighlight != autoHighlight) {
d->autoHighlight = autoHighlight;
- if (d->highlightXAnimator) {
- d->highlightXAnimator->setEnabled(d->autoHighlight);
- d->highlightYAnimator->setEnabled(d->autoHighlight);
- }
d->updateHighlight();
}
}
@@ -1482,9 +1482,9 @@ void QDeclarativeGridView::viewportMoved()
d->updateCurrent(idx);
if (d->currentItem && d->currentItem->colPos() != d->highlight->colPos() && d->autoHighlight) {
if (d->flow == LeftToRight)
- d->highlightXAnimator->setSourceValue(d->currentItem->item->x());
+ d->highlightXAnimator->to = d->currentItem->item->x();
else
- d->highlightYAnimator->setSourceValue(d->currentItem->item->y());
+ d->highlightYAnimator->to = d->currentItem->item->y();
}
}
}
@@ -1552,9 +1552,6 @@ qreal QDeclarativeGridView::maxXExtent() const
void QDeclarativeGridView::keyPressEvent(QKeyEvent *event)
{
Q_D(QDeclarativeGridView);
- QDeclarativeFlickable::keyPressEvent(event);
- if (event->isAccepted())
- return;
if (d->model && d->model->count() && d->interactive) {
d->moveReason = QDeclarativeGridViewPrivate::SetIndex;
int oldCurrent = currentIndex();
@@ -1580,6 +1577,9 @@ void QDeclarativeGridView::keyPressEvent(QKeyEvent *event)
}
}
d->moveReason = QDeclarativeGridViewPrivate::Other;
+ QDeclarativeFlickable::keyPressEvent(event);
+ if (event->isAccepted())
+ return;
event->ignore();
}
@@ -1856,6 +1856,8 @@ void QDeclarativeGridView::itemsInserted(int modelIndex, int count)
if (d->currentItem)
d->currentItem->index = d->currentIndex;
emit currentIndexChanged();
+ } else if (d->currentIndex < 0) {
+ d->updateCurrent(0);
}
emit countChanged();
return;
@@ -2180,7 +2182,6 @@ void QDeclarativeGridView::modelReset()
void QDeclarativeGridView::createdItem(int index, QDeclarativeItem *item)
{
Q_D(QDeclarativeGridView);
- item->setParentItem(this);
if (d->requestedIndex != index) {
item->setParentItem(this);
d->unrequestedItems.insert(item, index);
diff --git a/src/declarative/graphicsitems/qdeclarativegridview_p.h b/src/declarative/graphicsitems/qdeclarativegridview_p.h
index 90f13d2..f73f632 100644
--- a/src/declarative/graphicsitems/qdeclarativegridview_p.h
+++ b/src/declarative/graphicsitems/qdeclarativegridview_p.h
@@ -42,7 +42,7 @@
#ifndef QDECLARATIVEGRIDVIEW_H
#define QDECLARATIVEGRIDVIEW_H
-#include "qdeclarativeflickable_p.h"
+#include "private/qdeclarativeflickable_p.h"
QT_BEGIN_HEADER
diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp
index 425976f..e4f3464 100644
--- a/src/declarative/graphicsitems/qdeclarativeimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#include "qdeclarativeimage_p.h"
-#include "qdeclarativeimage_p_p.h"
+#include "private/qdeclarativeimage_p.h"
+#include "private/qdeclarativeimage_p_p.h"
#include <QKeyEvent>
#include <QPainter>
@@ -266,6 +266,35 @@ qreal QDeclarativeImage::paintedHeight() const
filtering at the beginning of the animation and reenable it at the conclusion.
*/
+/*!
+ \qmlproperty QSize Image::sourceSize
+
+ This properties is the size of the loaded image, in pixels.
+
+ If you set this property explicitly, you can to control the storage
+ used by a loaded image. The image will be scaled down if its intrinsic size
+ is greater than this value.
+
+ If only one dimension of the size is set (and the other left at 0), the
+ unset dimension will be set in proportion to the set dimension to preserve
+ the source image aspect ratio. The fillMode is independent of this.
+
+ Unlike setting the width and height properties, which merely scale the painting
+ of the image, this property affects the number of pixels stored.
+
+ \e{Changing this property dynamically will lead to the image source being reloaded,
+ potentially even from the network if it is not in the disk cache.}
+
+ If the source is an instrinsically scalable image (eg. SVG), this property
+ determines the size of the loaded image regardless of intrinsic size. You should
+ avoid changing this property dynamically - rendering an SVG is \e slow compared
+ to an image.
+
+ If the source is a non-scalable image (eg. JPEG), the loaded image will
+ be no greater than this property specifies. For some formats (currently only JPEG),
+ the whole image will never actually be loaded into memory.
+*/
+
void QDeclarativeImage::updatePaintedGeometry()
{
Q_D(QDeclarativeImage);
diff --git a/src/declarative/graphicsitems/qdeclarativeimage_p.h b/src/declarative/graphicsitems/qdeclarativeimage_p.h
index da6cbd5..5ea700d 100644
--- a/src/declarative/graphicsitems/qdeclarativeimage_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeimage_p.h
@@ -42,7 +42,7 @@
#ifndef QDECLARATIVEIMAGE_H
#define QDECLARATIVEIMAGE_H
-#include "qdeclarativeimagebase_p.h"
+#include "private/qdeclarativeimagebase_p.h"
#include <QtNetwork/qnetworkreply.h>
diff --git a/src/declarative/graphicsitems/qdeclarativeimage_p_p.h b/src/declarative/graphicsitems/qdeclarativeimage_p_p.h
index 8102237..dd12a00 100644
--- a/src/declarative/graphicsitems/qdeclarativeimage_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeimage_p_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include "qdeclarativeitem_p.h"
-#include "qdeclarativeimagebase_p_p.h"
+#include "private/qdeclarativeitem_p.h"
+#include "private/qdeclarativeimagebase_p_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativeimagebase.cpp b/src/declarative/graphicsitems/qdeclarativeimagebase.cpp
index e65c9d1..3acafe8 100644
--- a/src/declarative/graphicsitems/qdeclarativeimagebase.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeimagebase.cpp
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#include "qdeclarativeimagebase_p.h"
-#include "qdeclarativeimagebase_p_p.h"
+#include "private/qdeclarativeimagebase_p.h"
+#include "private/qdeclarativeimagebase_p_p.h"
#include <qdeclarativeengine.h>
#include <qdeclarativepixmapcache_p.h>
@@ -116,6 +116,23 @@ void QDeclarativeImageBase::setSource(const QUrl &url)
load();
}
+void QDeclarativeImageBase::setSourceSize(const QSize& size)
+{
+ Q_D(QDeclarativeImageBase);
+ if (d->sourcesize == size)
+ return;
+ d->sourcesize = size;
+ emit sourceSizeChanged();
+ if (isComponentComplete())
+ load();
+}
+
+QSize QDeclarativeImageBase::sourceSize() const
+{
+ Q_D(const QDeclarativeImageBase);
+ return d->sourcesize.isValid() ? d->sourcesize : QSize(implicitWidth(),implicitHeight());
+}
+
void QDeclarativeImageBase::load()
{
Q_D(QDeclarativeImageBase);
@@ -134,9 +151,12 @@ void QDeclarativeImageBase::load()
update();
} else {
d->status = Loading;
- QDeclarativePixmapReply::Status status = QDeclarativePixmapCache::get(d->url, &d->pix, d->async);
+ int reqwidth = d->sourcesize.width();
+ int reqheight = d->sourcesize.height();
+ QSize impsize;
+ QDeclarativePixmapReply::Status status = QDeclarativePixmapCache::get(d->url, &d->pix, &impsize, d->async, reqwidth, reqheight);
if (status != QDeclarativePixmapReply::Ready && status != QDeclarativePixmapReply::Error) {
- QDeclarativePixmapReply *reply = QDeclarativePixmapCache::request(qmlEngine(this), d->url);
+ QDeclarativePixmapReply *reply = QDeclarativePixmapCache::request(qmlEngine(this), d->url, reqwidth, reqheight);
d->pendingPixmapCache = true;
static int replyDownloadProgress = -1;
@@ -161,11 +181,14 @@ void QDeclarativeImageBase::load()
} else {
//### should be unified with requestFinished
if (status == QDeclarativePixmapReply::Ready) {
- setImplicitWidth(d->pix.width());
- setImplicitHeight(d->pix.height());
+ setImplicitWidth(impsize.width());
+ setImplicitHeight(impsize.height());
if (d->status == Loading)
d->status = Ready;
+
+ if (!d->sourcesize.isValid())
+ emit sourceSizeChanged();
} else {
d->status = Error;
}
@@ -186,16 +209,19 @@ void QDeclarativeImageBase::requestFinished()
d->pendingPixmapCache = false;
- if (QDeclarativePixmapCache::get(d->url, &d->pix, d->async) != QDeclarativePixmapReply::Ready)
+ QSize impsize;
+ if (QDeclarativePixmapCache::get(d->url, &d->pix, &impsize, d->async, d->sourcesize.width(), d->sourcesize.height()) != QDeclarativePixmapReply::Ready)
d->status = Error;
- setImplicitWidth(d->pix.width());
- setImplicitHeight(d->pix.height());
+ setImplicitWidth(impsize.width());
+ setImplicitHeight(impsize.height());
if (d->status == Loading)
d->status = Ready;
d->progress = 1.0;
emit statusChanged(d->status);
emit progressChanged(1.0);
+ if (!d->sourcesize.isValid())
+ emit sourceSizeChanged();
pixmapChange();
update();
}
diff --git a/src/declarative/graphicsitems/qdeclarativeimagebase_p.h b/src/declarative/graphicsitems/qdeclarativeimagebase_p.h
index b215193..6c84456 100644
--- a/src/declarative/graphicsitems/qdeclarativeimagebase_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeimagebase_p.h
@@ -59,6 +59,8 @@ class Q_DECLARATIVE_EXPORT QDeclarativeImageBase : public QDeclarativeItem
Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged)
Q_PROPERTY(bool asynchronous READ asynchronous WRITE setAsynchronous NOTIFY asynchronousChanged)
+ Q_PROPERTY(QSize sourceSize READ sourceSize WRITE setSourceSize NOTIFY sourceSizeChanged)
+
public:
~QDeclarativeImageBase();
enum Status { Null, Ready, Loading, Error };
@@ -71,8 +73,12 @@ public:
bool asynchronous() const;
void setAsynchronous(bool);
+ void setSourceSize(const QSize&);
+ QSize sourceSize() const;
+
Q_SIGNALS:
void sourceChanged(const QUrl &);
+ void sourceSizeChanged();
void statusChanged(Status);
void progressChanged(qreal progress);
void asynchronousChanged();
diff --git a/src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h b/src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h
index c4a61f3..392c1db 100644
--- a/src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeimagebase_p_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include "qdeclarativeitem_p.h"
+#include "private/qdeclarativeitem_p.h"
#include <QtCore/QPointer>
@@ -78,6 +78,7 @@ public:
QDeclarativeImageBase::Status status;
QUrl url;
qreal progress;
+ QSize sourcesize;
bool pendingPixmapCache : 1;
bool async : 1;
};
diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp
index ccad8f1..55a81f4 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp
@@ -39,10 +39,10 @@
**
****************************************************************************/
-#include "qdeclarativeitem_p.h"
+#include "private/qdeclarativeitem_p.h"
#include "qdeclarativeitem.h"
-#include "qdeclarativeevents_p_p.h"
+#include "private/qdeclarativeevents_p_p.h"
#include <private/qdeclarativeengine_p.h>
#include <qdeclarativeengine.h>
@@ -77,13 +77,57 @@ QT_BEGIN_NAMESPACE
\since 4.7
\brief The Transform elements provide a way of building advanced transformations on Items.
+ The Transform element is a base type which cannot be instantiated directly.
+ The following concrete Transform types are available:
+
+ \list
+ \o \l Rotation
+ \o \l Scale
+ \o \l Translate
+ \endlist
+
The Transform elements let you create and control advanced transformations that can be configured
independently using specialized properties.
You can assign any number of Transform elements to an Item. Each Transform is applied in order,
one at a time, to the Item it's assigned to.
+*/
+
+/*!
+ \qmlclass Translate QGraphicsTranslate
+ \since 4.7
+ \brief The Translate object provides a way to move an Item without changing its x or y properties.
+
+ The Translate object provides independent control over position in addition to the Item's x and y properties.
+
+ The following example moves the Y axis of the Rectangles while still allowing the Row element
+ to lay the items out as if they had not been transformed:
+ \qml
+ Row {
+ Rectangle {
+ width: 100; height: 100
+ color: "blue"
+ transform: Translate { y: 20 }
+ }
+ Rectangle {
+ width: 100; height: 100
+ color: "red"
+ transform: Translate { y: -20 }
+ }
+ }
+ \endqml
+*/
- \sa Rotation, Scale
+/*!
+ \qmlproperty real Translate::x
+
+ The translation along the X axis.
+*/
+
+/*!
+ \qmlproperty real Translate::y
+
+ The translation along the Y axis.
*/
/*!
@@ -312,9 +356,9 @@ void QDeclarativeContents::setItem(QDeclarativeItem *item)
QDeclarativeItem *child = qobject_cast<QDeclarativeItem *>(children.at(i));
if(!child)//### Should this be ignoring non-QDeclarativeItem graphicsobjects?
continue;
- connect(child, SIGNAL(heightChanged(qreal)), this, SLOT(calcHeight()));
+ connect(child, SIGNAL(heightChanged()), this, SLOT(calcHeight()));
connect(child, SIGNAL(yChanged()), this, SLOT(calcHeight()));
- connect(child, SIGNAL(widthChanged(qreal)), this, SLOT(calcWidth()));
+ connect(child, SIGNAL(widthChanged()), this, SLOT(calcWidth()));
connect(child, SIGNAL(xChanged()), this, SLOT(calcWidth()));
connect(this, SIGNAL(rectChanged(QRectF)), m_item, SIGNAL(childrenRectChanged(QRectF)));
}
@@ -1273,16 +1317,6 @@ QDeclarativeKeysAttached *QDeclarativeKeysAttached::qmlAttachedProperties(QObjec
*/
/*!
- \fn void QDeclarativeItem::widthChanged(qreal)
- \internal
-*/
-
-/*!
- \fn void QDeclarativeItem::heightChanged(qreal)
- \internal
-*/
-
-/*!
\fn void QDeclarativeItem::stateChanged(const QString &state)
\internal
*/
@@ -1411,22 +1445,10 @@ QDeclarativeItem::~QDeclarativeItem()
*/
void QDeclarativeItem::setParentItem(QDeclarativeItem *parent)
{
- QDeclarativeItem *oldParent = parentItem();
- if (parent == oldParent || !parent) return;
-
- QObject::setParent(parent);
QGraphicsObject::setParentItem(parent);
}
/*!
- \fn void QDeclarativeItem::setParent(QDeclarativeItem *parent)
- \overload
- Sets both the parent object and parent item to \a parent. This
- function avoids the programming error of calling setParent()
- when you mean setParentItem().
-*/
-
-/*!
Returns the QDeclarativeItem parent of this item.
*/
QDeclarativeItem *QDeclarativeItem::parentItem() const
@@ -1462,11 +1484,6 @@ QDeclarativeItem *QDeclarativeItem::parentItem() const
*/
/*!
- \property QDeclarativeItem::children
- \internal
-*/
-
-/*!
\property QDeclarativeItem::resources
\internal
*/
@@ -1500,11 +1517,20 @@ QDeclarativeAnchors *QDeclarativeItem::anchors()
void QDeclarativeItemPrivate::data_append(QDeclarativeListProperty<QObject> *prop, QObject *o)
{
- QDeclarativeItem *i = qobject_cast<QDeclarativeItem *>(o);
- if (i)
- i->setParentItem(static_cast<QDeclarativeItem *>(prop->object));
- else
- o->setParent(static_cast<QDeclarativeItem *>(prop->object));
+ if (!o)
+ return;
+
+ QDeclarativeItem *that = static_cast<QDeclarativeItem *>(prop->object);
+
+ // This test is measurably (albeit only slightly) faster than qobject_cast<>()
+ const QMetaObject *mo = o->metaObject();
+ while (mo && mo != &QGraphicsObject::staticMetaObject) mo = mo->d.superdata;
+
+ if (mo) {
+ QGraphicsItemPrivate::get(static_cast<QGraphicsObject *>(o))->setParentItemHelper(that, 0, 0);
+ } else {
+ o->setParent(that);
+ }
}
QObject *QDeclarativeItemPrivate::resources_at(QDeclarativeListProperty<QObject> *prop, int index)
@@ -1526,27 +1552,6 @@ int QDeclarativeItemPrivate::resources_count(QDeclarativeListProperty<QObject> *
return prop->object->children().count();
}
-QDeclarativeItem *QDeclarativeItemPrivate::children_at(QDeclarativeListProperty<QDeclarativeItem> *prop, int index)
-{
- QList<QGraphicsItem *> children = static_cast<QDeclarativeItem*>(prop->object)->childItems();
-
- if (index < children.count())
- return qobject_cast<QDeclarativeItem *>(children.at(index));
- else
- return 0;
-}
-
-void QDeclarativeItemPrivate::children_append(QDeclarativeListProperty<QDeclarativeItem> *prop, QDeclarativeItem *i)
-{
- if (i)
- i->setParentItem(static_cast<QDeclarativeItem*>(prop->object));
-}
-
-int QDeclarativeItemPrivate::children_count(QDeclarativeListProperty<QDeclarativeItem> *prop)
-{
- return static_cast<QDeclarativeItem*>(prop->object)->childItems().count();
-}
-
int QDeclarativeItemPrivate::transform_count(QDeclarativeListProperty<QGraphicsTransform> *list)
{
QGraphicsObject *object = qobject_cast<QGraphicsObject *>(list->object);
@@ -1561,8 +1566,8 @@ int QDeclarativeItemPrivate::transform_count(QDeclarativeListProperty<QGraphicsT
void QDeclarativeItemPrivate::transform_append(QDeclarativeListProperty<QGraphicsTransform> *list, QGraphicsTransform *item)
{
QGraphicsObject *object = qobject_cast<QGraphicsObject *>(list->object);
- if (object)
- QGraphicsItemPrivate::get(object)->appendGraphicsTransform(item);
+ if (object) // QGraphicsItem applies the list in the wrong order, so we prepend.
+ QGraphicsItemPrivate::get(object)->prependGraphicsTransform(item);
}
QGraphicsTransform *QDeclarativeItemPrivate::transform_at(QDeclarativeListProperty<QGraphicsTransform> *list, int idx)
@@ -1589,6 +1594,14 @@ void QDeclarativeItemPrivate::transform_clear(QDeclarativeListProperty<QGraphics
}
}
+void QDeclarativeItemPrivate::parentProperty(QObject *o, void *rv, QDeclarativeNotifierEndpoint *e)
+{
+ QDeclarativeItem *item = static_cast<QDeclarativeItem*>(o);
+ if (e)
+ e->connect(&item->d_func()->parentNotifier);
+ *((QDeclarativeItem **)rv) = item->parentItem();
+}
+
/*!
\qmlproperty list<Object> Item::data
\default
@@ -1602,7 +1615,7 @@ void QDeclarativeItemPrivate::transform_clear(QDeclarativeListProperty<QGraphics
Item {
Text {}
Rectangle {}
- Script {}
+ Timer {}
}
\endqml
@@ -1614,7 +1627,7 @@ void QDeclarativeItemPrivate::transform_clear(QDeclarativeListProperty<QGraphics
Rectangle {}
]
resources: [
- Script {}
+ Timer {}
]
}
\endqml
@@ -1645,7 +1658,7 @@ QRectF QDeclarativeItem::childrenRect()
Q_D(QDeclarativeItem);
if (!d->_contents) {
d->_contents = new QDeclarativeContents;
- d->_contents->setParent(this);
+ QDeclarative_setParent_noEvent(d->_contents, this);
d->_contents->setItem(this);
}
return d->_contents->rectF();
@@ -1678,18 +1691,6 @@ void QDeclarativeItem::setClip(bool c)
*/
/*!
- \property QDeclarativeItem::width
-
- Defines the item's width relative to its parent.
- */
-
-/*!
- \property QDeclarativeItem::height
-
- Defines the item's height relative to its parent.
- */
-
-/*!
\qmlproperty real Item::z
Sets the stacking order of the item. By default the stacking order is 0.
@@ -1801,11 +1802,11 @@ void QDeclarativeItem::geometryChanged(const QRectF &newGeometry,
if (newGeometry.x() != oldGeometry.x())
emit xChanged();
if (newGeometry.width() != oldGeometry.width())
- emit widthChanged(newGeometry.width());
+ emit widthChanged();
if (newGeometry.y() != oldGeometry.y())
emit yChanged();
if (newGeometry.height() != oldGeometry.height())
- emit heightChanged(newGeometry.height());
+ emit heightChanged();
for(int ii = 0; ii < d->changeListeners.count(); ++ii) {
const QDeclarativeItemPrivate::ChangeListener &change = d->changeListeners.at(ii);
@@ -2281,14 +2282,6 @@ void QDeclarativeItemPrivate::focusChanged(bool flag)
}
/*! \internal */
-QDeclarativeListProperty<QDeclarativeItem> QDeclarativeItem::fxChildren()
-{
- return QDeclarativeListProperty<QDeclarativeItem>(this, 0, QDeclarativeItemPrivate::children_append,
- QDeclarativeItemPrivate::children_count,
- QDeclarativeItemPrivate::children_at);
-}
-
-/*! \internal */
QDeclarativeListProperty<QObject> QDeclarativeItem::resources()
{
return QDeclarativeListProperty<QObject>(this, 0, QDeclarativeItemPrivate::resources_append,
@@ -2403,13 +2396,11 @@ QDeclarativeListProperty<QDeclarativeTransition> QDeclarativeItem::transitions()
example:
\qml
- Script {
- function toggle() {
- if (button.state == 'On')
- button.state = 'Off';
- else
- button.state = 'On';
- }
+ function toggle() {
+ if (button.state == 'On')
+ button.state = 'Off';
+ else
+ button.state = 'On';
}
\endqml
@@ -2594,14 +2585,11 @@ bool QDeclarativeItem::sceneEvent(QEvent *event)
QVariant QDeclarativeItem::itemChange(GraphicsItemChange change,
const QVariant &value)
{
- Q_D(const QDeclarativeItem);
+ Q_D(QDeclarativeItem);
switch (change) {
case ItemParentHasChanged:
emit parentChanged(parentItem());
- break;
- case ItemChildAddedChange:
- case ItemChildRemovedChange:
- emit childrenChanged();
+ d->parentNotifier.notify();
break;
case ItemVisibleHasChanged: {
for(int ii = 0; ii < d->changeListeners.count(); ++ii) {
@@ -2632,7 +2620,7 @@ QVariant QDeclarativeItem::itemChange(GraphicsItemChange change,
QRectF QDeclarativeItem::boundingRect() const
{
Q_D(const QDeclarativeItem);
- return QRectF(0, 0, d->width, d->height);
+ return QRectF(0, 0, d->mWidth, d->mHeight);
}
/*!
@@ -2717,33 +2705,50 @@ void QDeclarativeItem::setSmooth(bool smooth)
qreal QDeclarativeItem::width() const
{
Q_D(const QDeclarativeItem);
- return d->width;
+ return d->width();
}
void QDeclarativeItem::setWidth(qreal w)
{
Q_D(QDeclarativeItem);
+ d->setWidth(w);
+}
+
+void QDeclarativeItem::resetWidth()
+{
+ Q_D(QDeclarativeItem);
+ d->resetWidth();
+}
+
+qreal QDeclarativeItemPrivate::width() const
+{
+ return mWidth;
+}
+
+void QDeclarativeItemPrivate::setWidth(qreal w)
+{
+ Q_Q(QDeclarativeItem);
if (qIsNaN(w))
return;
- d->widthValid = true;
- if (d->width == w)
+ widthValid = true;
+ if (mWidth == w)
return;
- qreal oldWidth = d->width;
+ qreal oldWidth = mWidth;
- prepareGeometryChange();
- d->width = w;
+ q->prepareGeometryChange();
+ mWidth = w;
- geometryChanged(QRectF(x(), y(), width(), height()),
- QRectF(x(), y(), oldWidth, height()));
+ q->geometryChanged(QRectF(q->x(), q->y(), width(), height()),
+ QRectF(q->x(), q->y(), oldWidth, height()));
}
-void QDeclarativeItem::resetWidth()
+void QDeclarativeItemPrivate ::resetWidth()
{
- Q_D(QDeclarativeItem);
- d->widthValid = false;
- setImplicitWidth(implicitWidth());
+ Q_Q(QDeclarativeItem);
+ widthValid = false;
+ q->setImplicitWidth(q->implicitWidth());
}
/*!
@@ -2763,13 +2768,13 @@ void QDeclarativeItem::setImplicitWidth(qreal w)
{
Q_D(QDeclarativeItem);
d->implicitWidth = w;
- if (d->width == w || widthValid())
+ if (d->mWidth == w || widthValid())
return;
- qreal oldWidth = d->width;
+ qreal oldWidth = d->mWidth;
prepareGeometryChange();
- d->width = w;
+ d->mWidth = w;
geometryChanged(QRectF(x(), y(), width(), height()),
QRectF(x(), y(), oldWidth, height()));
@@ -2787,33 +2792,50 @@ bool QDeclarativeItem::widthValid() const
qreal QDeclarativeItem::height() const
{
Q_D(const QDeclarativeItem);
- return d->height;
+ return d->height();
}
void QDeclarativeItem::setHeight(qreal h)
{
Q_D(QDeclarativeItem);
+ d->setHeight(h);
+}
+
+void QDeclarativeItem::resetHeight()
+{
+ Q_D(QDeclarativeItem);
+ d->resetHeight();
+}
+
+qreal QDeclarativeItemPrivate::height() const
+{
+ return mHeight;
+}
+
+void QDeclarativeItemPrivate::setHeight(qreal h)
+{
+ Q_Q(QDeclarativeItem);
if (qIsNaN(h))
return;
- d->heightValid = true;
- if (d->height == h)
+ heightValid = true;
+ if (mHeight == h)
return;
- qreal oldHeight = d->height;
+ qreal oldHeight = mHeight;
- prepareGeometryChange();
- d->height = h;
+ q->prepareGeometryChange();
+ mHeight = h;
- geometryChanged(QRectF(x(), y(), width(), height()),
- QRectF(x(), y(), width(), oldHeight));
+ q->geometryChanged(QRectF(q->x(), q->y(), width(), height()),
+ QRectF(q->x(), q->y(), width(), oldHeight));
}
-void QDeclarativeItem::resetHeight()
+void QDeclarativeItemPrivate::resetHeight()
{
- Q_D(QDeclarativeItem);
- d->heightValid = false;
- setImplicitHeight(implicitHeight());
+ Q_Q(QDeclarativeItem);
+ heightValid = false;
+ q->setImplicitHeight(q->implicitHeight());
}
/*!
@@ -2833,13 +2855,13 @@ void QDeclarativeItem::setImplicitHeight(qreal h)
{
Q_D(QDeclarativeItem);
d->implicitHeight = h;
- if (d->height == h || heightValid())
+ if (d->mHeight == h || heightValid())
return;
- qreal oldHeight = d->height;
+ qreal oldHeight = d->mHeight;
prepareGeometryChange();
- d->height = h;
+ d->mHeight = h;
geometryChanged(QRectF(x(), y(), width(), height()),
QRectF(x(), y(), width(), oldHeight));
@@ -2861,15 +2883,15 @@ void QDeclarativeItem::setSize(const QSizeF &size)
d->heightValid = true;
d->widthValid = true;
- if (d->height == size.height() && d->width == size.width())
+ if (d->height() == size.height() && d->width() == size.width())
return;
- qreal oldHeight = d->height;
- qreal oldWidth = d->width;
+ qreal oldHeight = d->height();
+ qreal oldWidth = d->width();
prepareGeometryChange();
- d->height = size.height();
- d->width = size.width();
+ d->setHeight(size.height());
+ d->setWidth(size.width());
geometryChanged(QRectF(x(), y(), width(), height()),
QRectF(x(), y(), oldWidth, oldHeight));
diff --git a/src/declarative/graphicsitems/qdeclarativeitem.h b/src/declarative/graphicsitems/qdeclarativeitem.h
index c88b1db..917e480 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.h
+++ b/src/declarative/graphicsitems/qdeclarativeitem.h
@@ -71,13 +71,10 @@ class Q_DECLARATIVE_EXPORT QDeclarativeItem : public QGraphicsObject, public QDe
Q_PROPERTY(QDeclarativeItem * parent READ parentItem WRITE setParentItem NOTIFY parentChanged DESIGNABLE false FINAL)
Q_PROPERTY(QDeclarativeListProperty<QObject> data READ data DESIGNABLE false)
- Q_PROPERTY(QDeclarativeListProperty<QDeclarativeItem> children READ fxChildren DESIGNABLE false NOTIFY childrenChanged)
Q_PROPERTY(QDeclarativeListProperty<QObject> resources READ resources DESIGNABLE false)
Q_PROPERTY(QDeclarativeListProperty<QDeclarativeState> states READ states DESIGNABLE false)
Q_PROPERTY(QDeclarativeListProperty<QDeclarativeTransition> transitions READ transitions DESIGNABLE false)
Q_PROPERTY(QString state READ state WRITE setState NOTIFY stateChanged)
- Q_PROPERTY(qreal width READ width WRITE setWidth NOTIFY widthChanged RESET resetWidth FINAL)
- Q_PROPERTY(qreal height READ height WRITE setHeight NOTIFY heightChanged RESET resetHeight FINAL)
Q_PROPERTY(QRectF childrenRect READ childrenRect NOTIFY childrenRectChanged DESIGNABLE false FINAL)
Q_PROPERTY(QDeclarativeAnchors * anchors READ anchors DESIGNABLE false CONSTANT FINAL)
Q_PROPERTY(QDeclarativeAnchorLine left READ left CONSTANT FINAL)
@@ -110,10 +107,8 @@ public:
QDeclarativeItem *parentItem() const;
void setParentItem(QDeclarativeItem *parent);
- void setParent(QDeclarativeItem *parent) { setParentItem(parent); }
QDeclarativeListProperty<QObject> data();
- QDeclarativeListProperty<QDeclarativeItem> fxChildren();
QDeclarativeListProperty<QObject> resources();
QDeclarativeAnchors *anchors();
@@ -173,8 +168,6 @@ public:
QDeclarativeAnchorLine baseline() const;
Q_SIGNALS:
- void widthChanged(qreal);
- void heightChanged(qreal);
void childrenChanged();
void childrenRectChanged(const QRectF &);
void baselineOffsetChanged(qreal);
@@ -235,9 +228,11 @@ QDebug Q_DECLARATIVE_EXPORT operator<<(QDebug debug, QDeclarativeItem *item);
QT_END_NAMESPACE
QML_DECLARE_TYPE(QDeclarativeItem)
+QML_DECLARE_TYPE(QGraphicsObject)
QML_DECLARE_TYPE(QGraphicsTransform)
QML_DECLARE_TYPE(QGraphicsScale)
QML_DECLARE_TYPE(QGraphicsRotation)
+QML_DECLARE_TYPE(QGraphicsWidget)
QML_DECLARE_TYPE(QAction)
QT_END_HEADER
diff --git a/src/declarative/graphicsitems/qdeclarativeitem_p.h b/src/declarative/graphicsitems/qdeclarativeitem_p.h
index cb068da..2607137 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeitem_p.h
@@ -62,6 +62,9 @@
#include <private/qdeclarativestate_p.h>
#include <private/qdeclarativenullablevalue_p_p.h>
+#include <private/qdeclarativenotifier_p.h>
+#include <private/qdeclarativeglobal_p.h>
+
#include <qdeclarative.h>
#include <qdeclarativecontext.h>
@@ -114,7 +117,7 @@ public:
widthValid(false), heightValid(false),
_componentComplete(true), _keepMouse(false),
smooth(false), keyHandler(0),
- width(0), height(0), implicitWidth(0), implicitHeight(0)
+ mWidth(0), mHeight(0), implicitWidth(0), implicitHeight(0)
{
QGraphicsItemPrivate::acceptedMouseButtons = 0;
QGraphicsItemPrivate::flags = QGraphicsItem::GraphicsItemFlags(
@@ -127,15 +130,26 @@ public:
void init(QDeclarativeItem *parent)
{
Q_Q(QDeclarativeItem);
-
- if (parent)
+ if (parent) {
+ QDeclarative_setParent_noEvent(q, parent);
q->setParentItem(parent);
+ }
_baselineOffset.invalidate();
mouseSetsFocus = false;
}
QString _id;
+ // Private Properties
+ qreal width() const;
+ void setWidth(qreal);
+ void resetWidth();
+
+ qreal height() const;
+ void setHeight(qreal);
+ void resetHeight();
+
+
// data property
static void data_append(QDeclarativeListProperty<QObject> *, QObject *);
@@ -144,17 +158,16 @@ public:
static void resources_append(QDeclarativeListProperty<QObject> *, QObject *);
static int resources_count(QDeclarativeListProperty<QObject> *);
- // children property
- static QDeclarativeItem *children_at(QDeclarativeListProperty<QDeclarativeItem> *, int);
- static void children_append(QDeclarativeListProperty<QDeclarativeItem> *, QDeclarativeItem *);
- static int children_count(QDeclarativeListProperty<QDeclarativeItem> *);
-
// transform property
static int transform_count(QDeclarativeListProperty<QGraphicsTransform> *list);
static void transform_append(QDeclarativeListProperty<QGraphicsTransform> *list, QGraphicsTransform *);
static QGraphicsTransform *transform_at(QDeclarativeListProperty<QGraphicsTransform> *list, int);
static void transform_clear(QDeclarativeListProperty<QGraphicsTransform> *list);
+ // Accelerated property accessors
+ QDeclarativeNotifier parentNotifier;
+ static void parentProperty(QObject *o, void *rv, QDeclarativeNotifierEndpoint *e);
+
QDeclarativeAnchors *anchors() {
if (!_anchors) {
Q_Q(QDeclarativeItem);
@@ -222,8 +235,8 @@ public:
QDeclarativeItemKeyFilter *keyHandler;
- qreal width;
- qreal height;
+ qreal mWidth;
+ qreal mHeight;
qreal implicitWidth;
qreal implicitHeight;
@@ -232,9 +245,9 @@ public:
virtual void setPosHelper(const QPointF &pos)
{
Q_Q(QDeclarativeItem);
- QRectF oldGeometry(this->pos.x(), this->pos.y(), width, height);
+ QRectF oldGeometry(this->pos.x(), this->pos.y(), mWidth, mHeight);
QGraphicsItemPrivate::setPosHelper(pos);
- q->geometryChanged(QRectF(this->pos.x(), this->pos.y(), width, height), oldGeometry);
+ q->geometryChanged(QRectF(this->pos.x(), this->pos.y(), mWidth, mHeight), oldGeometry);
}
// Reimplemented from QGraphicsItemPrivate
diff --git a/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp b/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp
index 1a48cbd..7989a27 100644
--- a/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitemsmodule.cpp
@@ -39,45 +39,46 @@
**
****************************************************************************/
-#include "qdeclarativeitemsmodule_p.h"
+#include "private/qdeclarativeitemsmodule_p.h"
#include <QtGui/qaction.h>
#include <QtGui/qvalidator.h>
#include <QtGui/qgraphicseffect.h>
-#include "qdeclarativeevents_p_p.h"
-#include "qdeclarativeeffects_p.h"
-#include "qdeclarativescalegrid_p_p.h"
-#include "qdeclarativeanimatedimage_p.h"
-#include "qdeclarativeborderimage_p.h"
-#include "qdeclarativepositioners_p.h"
-#include "qdeclarativemousearea_p.h"
-#include "qdeclarativeflickable_p.h"
-#include "qdeclarativeflickable_p_p.h"
-#include "qdeclarativeflipable_p.h"
-#include "qdeclarativefocuspanel_p.h"
-#include "qdeclarativefocusscope_p.h"
-#include "qdeclarativegraphicsobjectcontainer_p.h"
-#include "qdeclarativegridview_p.h"
-#include "qdeclarativeimage_p.h"
-#include "qdeclarativeitem_p.h"
-#include "qdeclarativelayoutitem_p.h"
-#include "qdeclarativelistview_p.h"
-#include "qdeclarativeloader_p.h"
-#include "qdeclarativemousearea_p.h"
-#include "qdeclarativepath_p.h"
-#include "qdeclarativepathview_p.h"
-#include "qdeclarativerectangle_p.h"
-#include "qdeclarativerepeater_p.h"
-#include "qdeclarativetext_p.h"
-#include "qdeclarativetextedit_p.h"
-#include "qdeclarativetextinput_p.h"
-#include "qdeclarativevisualitemmodel_p.h"
+#include "private/qdeclarativeevents_p_p.h"
+#include "private/qdeclarativeeffects_p.h"
+#include "private/qdeclarativescalegrid_p_p.h"
+#include "private/qdeclarativeanimatedimage_p.h"
+#include "private/qdeclarativeborderimage_p.h"
+#include "private/qdeclarativepositioners_p.h"
+#include "private/qdeclarativemousearea_p.h"
+#include "private/qdeclarativeflickable_p.h"
+#include "private/qdeclarativeflickable_p_p.h"
+#include "private/qdeclarativeflipable_p.h"
+#include "private/qdeclarativefocuspanel_p.h"
+#include "private/qdeclarativefocusscope_p.h"
+#include "private/qdeclarativegraphicsobjectcontainer_p.h"
+#include "private/qdeclarativegridview_p.h"
+#include "private/qdeclarativeimage_p.h"
+#include "private/qdeclarativeitem_p.h"
+#include "private/qdeclarativelayoutitem_p.h"
+#include "private/qdeclarativelistview_p.h"
+#include "private/qdeclarativeloader_p.h"
+#include "private/qdeclarativemousearea_p.h"
+#include "private/qdeclarativepath_p.h"
+#include "private/qdeclarativepathview_p.h"
+#include "private/qdeclarativerectangle_p.h"
+#include "private/qdeclarativerepeater_p.h"
+#include "private/qdeclarativetranslate_p.h"
+#include "private/qdeclarativetext_p.h"
+#include "private/qdeclarativetextedit_p.h"
+#include "private/qdeclarativetextinput_p.h"
+#include "private/qdeclarativevisualitemmodel_p.h"
#ifdef QT_WEBKIT_LIB
-#include "qdeclarativewebview_p.h"
-#include "qdeclarativewebview_p_p.h"
+#include "private/qdeclarativewebview_p.h"
+#include "private/qdeclarativewebview_p_p.h"
#endif
-#include "qdeclarativeanchors_p.h"
+#include "private/qdeclarativeanchors_p.h"
void QDeclarativeItemModule::defineModule()
{
@@ -114,22 +115,21 @@ void QDeclarativeItemModule::defineModule()
qmlRegisterType<QDeclarativePathPercent>("Qt",4,6,"PathPercent");
qmlRegisterType<QDeclarativePathQuad>("Qt",4,6,"PathQuad");
qmlRegisterType<QDeclarativePathView>("Qt",4,6,"PathView");
- qmlRegisterType<QDeclarativePen>("Qt",4,6,"Pen");
- qmlRegisterType<QIntValidator>("Qt",4,6,"QIntValidator");
+ qmlRegisterType<QIntValidator>("Qt",4,6,"IntValidator");
#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0))
- qmlRegisterType<QDoubleValidator>("Qt",4,7,"QDoubleValidator");
- qmlRegisterType<QRegExpValidator>("Qt",4,7,"QRegExpValidator");
+ qmlRegisterType<QDoubleValidator>("Qt",4,7,"DoubleValidator");
+ qmlRegisterType<QRegExpValidator>("Qt",4,7,"RegExpValidator");
#endif
qmlRegisterType<QDeclarativeRectangle>("Qt",4,6,"Rectangle");
qmlRegisterType<QDeclarativeRepeater>("Qt",4,6,"Repeater");
qmlRegisterType<QGraphicsRotation>("Qt",4,6,"Rotation");
qmlRegisterType<QDeclarativeRow>("Qt",4,6,"Row");
+ qmlRegisterType<QDeclarativeTranslate>("Qt",4,6,"Translate");
qmlRegisterType<QGraphicsScale>("Qt",4,6,"Scale");
qmlRegisterType<QDeclarativeText>("Qt",4,6,"Text");
qmlRegisterType<QDeclarativeTextEdit>("Qt",4,6,"TextEdit");
qmlRegisterType<QDeclarativeTextInput>("Qt",4,6,"TextInput");
qmlRegisterType<QDeclarativeViewSection>("Qt",4,6,"ViewSection");
- qmlRegisterType<QDeclarativeFlickableVisibleArea>("Qt",4,6,"VisibleArea");
qmlRegisterType<QDeclarativeVisualDataModel>("Qt",4,6,"VisualDataModel");
qmlRegisterType<QDeclarativeVisualItemModel>("Qt",4,6,"VisualItemModel");
@@ -146,6 +146,8 @@ void QDeclarativeItemModule::defineModule()
qmlRegisterType<QValidator>();
qmlRegisterType<QDeclarativeVisualModel>();
qmlRegisterType<QAction>();
+ qmlRegisterType<QDeclarativePen>();
+ qmlRegisterType<QDeclarativeFlickableVisibleArea>();
#ifdef QT_WEBKIT_LIB
qmlRegisterType<QDeclarativeWebSettings>();
#endif
diff --git a/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp b/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp
index a23ea65..1bbdd97 100644
--- a/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelayoutitem.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativelayoutitem_p.h"
+#include "private/qdeclarativelayoutitem_p.h"
#include <QDebug>
diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp
index 320a2f0..e85d60f 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp
@@ -39,12 +39,12 @@
**
****************************************************************************/
-#include "qdeclarativelistview_p.h"
+#include "private/qdeclarativelistview_p.h"
-#include "qdeclarativeflickable_p_p.h"
-#include "qdeclarativevisualitemmodel_p.h"
+#include "private/qdeclarativeflickable_p_p.h"
+#include "private/qdeclarativevisualitemmodel_p.h"
-#include <qdeclarativeeasefollow_p.h>
+#include "private/qdeclarativesmoothedanimation_p_p.h"
#include <qdeclarativeexpression.h>
#include <qdeclarativeengine.h>
#include <qdeclarativeguard_p.h>
@@ -305,7 +305,7 @@ public:
if (item->index == -1)
continue;
qreal itemTop = item->position();
- if (item->index == model->count()-1 || (itemTop+item->size()/2 >= pos))
+ if (itemTop+item->size()/2 >= pos && itemTop <= pos)
return item->position();
}
if (visibleItems.count()) {
@@ -455,8 +455,8 @@ public:
enum MovementReason { Other, SetIndex, Mouse };
MovementReason moveReason;
int buffer;
- QDeclarativeEaseFollow *highlightPosAnimator;
- QDeclarativeEaseFollow *highlightSizeAnimator;
+ QSmoothedAnimation *highlightPosAnimator;
+ QSmoothedAnimation *highlightSizeAnimator;
QDeclarativeViewSection *sectionCriteria;
QString currentSection;
static const int sectionCacheSize = 3;
@@ -541,7 +541,7 @@ FxListItem *QDeclarativeListViewPrivate::createItem(int modelIndex)
listItem->item->setZValue(1);
// complete
model->completeItem();
- listItem->item->setParent(q->viewport());
+ listItem->item->setParentItem(q->viewport());
QDeclarativeItemPrivate *itemPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(item));
itemPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry);
if (sectionCriteria && sectionCriteria->delegate()) {
@@ -562,7 +562,7 @@ void QDeclarativeListViewPrivate::releaseItem(FxListItem *item)
return;
if (trackedItem == item) {
const char *notifier1 = orient == QDeclarativeListView::Vertical ? SIGNAL(yChanged()) : SIGNAL(xChanged());
- const char *notifier2 = orient == QDeclarativeListView::Vertical ? SIGNAL(heightChanged(qreal)) : SIGNAL(widthChanged(qreal));
+ const char *notifier2 = orient == QDeclarativeListView::Vertical ? SIGNAL(heightChanged()) : SIGNAL(widthChanged());
QObject::disconnect(trackedItem->item, notifier1, q, SLOT(trackedPositionChanged()));
QObject::disconnect(trackedItem->item, notifier2, q, SLOT(trackedPositionChanged()));
trackedItem = 0;
@@ -763,7 +763,7 @@ void QDeclarativeListViewPrivate::updateTrackedItem()
FxListItem *oldTracked = trackedItem;
const char *notifier1 = orient == QDeclarativeListView::Vertical ? SIGNAL(yChanged()) : SIGNAL(xChanged());
- const char *notifier2 = orient == QDeclarativeListView::Vertical ? SIGNAL(heightChanged(qreal)) : SIGNAL(widthChanged(qreal));
+ const char *notifier2 = orient == QDeclarativeListView::Vertical ? SIGNAL(heightChanged()) : SIGNAL(widthChanged());
if (trackedItem && item != trackedItem) {
QObject::disconnect(trackedItem->item, notifier1, q, SLOT(trackedPositionChanged()));
@@ -803,7 +803,7 @@ void QDeclarativeListViewPrivate::createHighlight()
QDeclarativeContext *highlightContext = new QDeclarativeContext(qmlContext(q));
QObject *nobj = highlightComponent->create(highlightContext);
if (nobj) {
- highlightContext->setParent(nobj);
+ QDeclarative_setParent_noEvent(highlightContext, nobj);
item = qobject_cast<QDeclarativeItem *>(nobj);
if (!item)
delete nobj;
@@ -814,7 +814,8 @@ void QDeclarativeListViewPrivate::createHighlight()
item = new QDeclarativeItem;
}
if (item) {
- item->setParent(q->viewport());
+ QDeclarative_setParent_noEvent(item, q->viewport());
+ item->setParentItem(q->viewport());
highlight = new FxListItem(item, q);
if (currentItem && autoHighlight) {
if (orient == QDeclarativeListView::Vertical) {
@@ -824,15 +825,15 @@ void QDeclarativeListViewPrivate::createHighlight()
}
}
const QLatin1String posProp(orient == QDeclarativeListView::Vertical ? "y" : "x");
- highlightPosAnimator = new QDeclarativeEaseFollow(q);
- highlightPosAnimator->setTarget(QDeclarativeProperty(highlight->item, posProp));
- highlightPosAnimator->setVelocity(highlightMoveSpeed);
- highlightPosAnimator->setEnabled(autoHighlight);
+ highlightPosAnimator = new QSmoothedAnimation(q);
+ highlightPosAnimator->target = QDeclarativeProperty(highlight->item, posProp);
+ highlightPosAnimator->velocity = highlightMoveSpeed;
+ highlightPosAnimator->restart();
const QLatin1String sizeProp(orient == QDeclarativeListView::Vertical ? "height" : "width");
- highlightSizeAnimator = new QDeclarativeEaseFollow(q);
- highlightSizeAnimator->setVelocity(highlightResizeSpeed);
- highlightSizeAnimator->setTarget(QDeclarativeProperty(highlight->item, sizeProp));
- highlightSizeAnimator->setEnabled(autoHighlight);
+ highlightSizeAnimator = new QSmoothedAnimation(q);
+ highlightSizeAnimator->velocity = highlightResizeSpeed;
+ highlightSizeAnimator->target = QDeclarativeProperty(highlight->item, sizeProp);
+ highlightSizeAnimator->restart();
changed = true;
}
}
@@ -846,8 +847,8 @@ void QDeclarativeListViewPrivate::updateHighlight()
createHighlight();
if (currentItem && autoHighlight && highlight && !moving) {
// auto-update highlight
- highlightPosAnimator->setSourceValue(currentItem->position());
- highlightSizeAnimator->setSourceValue(currentItem->size());
+ highlightPosAnimator->to = currentItem->position();
+ highlightSizeAnimator->to = currentItem->size();
if (orient == QDeclarativeListView::Vertical) {
if (highlight->item->width() == 0)
highlight->item->setWidth(currentItem->item->width());
@@ -855,6 +856,8 @@ void QDeclarativeListViewPrivate::updateHighlight()
if (highlight->item->height() == 0)
highlight->item->setHeight(currentItem->item->height());
}
+ highlightPosAnimator->restart();
+ highlightSizeAnimator->restart();
}
updateTrackedItem();
}
@@ -880,13 +883,14 @@ void QDeclarativeListViewPrivate::createSection(FxListItem *listItem)
context->setContextProperty(QLatin1String("section"), listItem->attached->m_section);
QObject *nobj = sectionCriteria->delegate()->create(context);
if (nobj) {
- context->setParent(nobj);
+ QDeclarative_setParent_noEvent(context, nobj);
listItem->section = qobject_cast<QDeclarativeItem *>(nobj);
if (!listItem->section) {
delete nobj;
} else {
listItem->section->setZValue(1);
- listItem->section->setParent(q->viewport());
+ QDeclarative_setParent_noEvent(listItem->section, q->viewport());
+ listItem->section->setParentItem(q->viewport());
}
} else {
delete context;
@@ -1002,7 +1006,7 @@ void QDeclarativeListViewPrivate::updateFooter()
QDeclarativeContext *context = new QDeclarativeContext(qmlContext(q));
QObject *nobj = footerComponent->create(context);
if (nobj) {
- context->setParent(nobj);
+ QDeclarative_setParent_noEvent(context, nobj);
item = qobject_cast<QDeclarativeItem *>(nobj);
if (!item)
delete nobj;
@@ -1010,7 +1014,8 @@ void QDeclarativeListViewPrivate::updateFooter()
delete context;
}
if (item) {
- item->setParent(q->viewport());
+ QDeclarative_setParent_noEvent(item, q->viewport());
+ item->setParentItem(q->viewport());
item->setZValue(1);
footer = new FxListItem(item, q);
}
@@ -1039,7 +1044,7 @@ void QDeclarativeListViewPrivate::updateHeader()
QDeclarativeContext *context = new QDeclarativeContext(qmlContext(q));
QObject *nobj = headerComponent->create(context);
if (nobj) {
- context->setParent(nobj);
+ QDeclarative_setParent_noEvent(context, nobj);
item = qobject_cast<QDeclarativeItem *>(nobj);
if (!item)
delete nobj;
@@ -1047,7 +1052,8 @@ void QDeclarativeListViewPrivate::updateHeader()
delete context;
}
if (item) {
- item->setParent(q->viewport());
+ QDeclarative_setParent_noEvent(item, q->viewport());
+ item->setParentItem(q->viewport());
item->setZValue(1);
header = new FxListItem(item, q);
if (visibleItems.isEmpty())
@@ -1147,7 +1153,7 @@ void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
maxDistance = qAbs(minExtent - data.move.value());
}
}
- if (snapMode != QDeclarativeListView::SnapToItem && highlightRange != QDeclarativeListView::StrictlyEnforceRange)
+ if (snapMode == QDeclarativeListView::NoSnap && highlightRange != QDeclarativeListView::StrictlyEnforceRange)
data.flickTarget = minExtent;
} else {
if (data.move.value() > maxExtent) {
@@ -1158,10 +1164,10 @@ void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
maxDistance = qAbs(maxExtent - data.move.value());
}
}
- if (snapMode != QDeclarativeListView::SnapToItem && highlightRange != QDeclarativeListView::StrictlyEnforceRange)
+ if (snapMode == QDeclarativeListView::NoSnap && highlightRange != QDeclarativeListView::StrictlyEnforceRange)
data.flickTarget = maxExtent;
}
- if ((maxDistance > 0 || overShoot) && (snapMode != QDeclarativeListView::NoSnap || highlightRange == QDeclarativeListView::StrictlyEnforceRange)) {
+ if (maxDistance > 0 || overShoot) {
// These modes require the list to stop exactly on an item boundary.
// The initial flick will estimate the boundary to stop on.
// Since list items can have variable sizes, the boundary will be
@@ -1177,18 +1183,35 @@ void QDeclarativeListViewPrivate::flick(AxisData &data, qreal minExtent, qreal m
// the initial flick - estimate boundary
qreal accel = deceleration;
qreal v2 = v * v;
- if (maxDistance > 0.0 && v2 / (2.0f * maxDistance) < accel) {
- // + averageSize/4 to encourage moving at least one item in the flick direction
- qreal dist = v2 / (accel * 2.0) + averageSize/4;
- if (v > 0)
- dist = -dist;
+ overshootDist = 0.0;
+ // + averageSize/4 to encourage moving at least one item in the flick direction
+ qreal dist = v2 / (accel * 2.0) + averageSize/4;
+ if (maxDistance > 0)
+ dist = qMin(dist, maxDistance);
+ if (v > 0)
+ dist = -dist;
+ if ((maxDistance > 0.0 && v2 / (2.0f * maxDistance) < accel) || snapMode == QDeclarativeListView::SnapOneItem) {
data.flickTarget = -snapPosAt(-(data.move.value() - highlightRangeStart) + dist) + highlightRangeStart;
+ if (overShoot) {
+ if (data.flickTarget >= minExtent) {
+ overshootDist = overShootDistance(v, vSize);
+ data.flickTarget += overshootDist;
+ } else if (data.flickTarget <= maxExtent) {
+ overshootDist = overShootDistance(v, vSize);
+ data.flickTarget -= overshootDist;
+ }
+ }
dist = -data.flickTarget + data.move.value();
accel = v2 / (2.0f * qAbs(dist));
- overshootDist = 0.0;
- } else {
- data.flickTarget = velocity > 0 ? minExtent : maxExtent;
- overshootDist = overShoot ? overShootDistance(v, vSize) : 0;
+ } else if (overShoot) {
+ data.flickTarget = data.move.value() - dist;
+ if (data.flickTarget >= minExtent) {
+ overshootDist = overShootDistance(v, vSize);
+ data.flickTarget += overshootDist;
+ } else if (data.flickTarget <= maxExtent) {
+ overshootDist = overShootDistance(v, vSize);
+ data.flickTarget -= overshootDist;
+ }
}
timeline.reset(data.move);
timeline.accel(data.move, v, accel, maxDistance + overshootDist);
@@ -1600,10 +1623,6 @@ void QDeclarativeListView::setHighlightFollowsCurrentItem(bool autoHighlight)
Q_D(QDeclarativeListView);
if (d->autoHighlight != autoHighlight) {
d->autoHighlight = autoHighlight;
- if (d->highlightPosAnimator) {
- d->highlightPosAnimator->setEnabled(d->autoHighlight);
- d->highlightSizeAnimator->setEnabled(d->autoHighlight);
- }
d->updateHighlight();
emit highlightFollowsCurrentItemChanged();
}
@@ -1863,7 +1882,7 @@ void QDeclarativeListView::setHighlightMoveSpeed(qreal speed)
if (d->highlightMoveSpeed != speed) {
d->highlightMoveSpeed = speed;
if (d->highlightPosAnimator)
- d->highlightPosAnimator->setVelocity(d->highlightMoveSpeed);
+ d->highlightPosAnimator->velocity = d->highlightMoveSpeed;
emit highlightMoveSpeedChanged();
}
}
@@ -1880,7 +1899,7 @@ void QDeclarativeListView::setHighlightResizeSpeed(qreal speed)
if (d->highlightResizeSpeed != speed) {
d->highlightResizeSpeed = speed;
if (d->highlightSizeAnimator)
- d->highlightSizeAnimator->setVelocity(d->highlightResizeSpeed);
+ d->highlightSizeAnimator->velocity = d->highlightResizeSpeed;
emit highlightResizeSpeedChanged();
}
}
@@ -2124,9 +2143,6 @@ qreal QDeclarativeListView::maxXExtent() const
void QDeclarativeListView::keyPressEvent(QKeyEvent *event)
{
Q_D(QDeclarativeListView);
- QDeclarativeFlickable::keyPressEvent(event);
- if (event->isAccepted())
- return;
if (d->model && d->model->count() && d->interactive) {
if ((d->orient == QDeclarativeListView::Horizontal && event->key() == Qt::Key_Left)
@@ -2151,6 +2167,9 @@ void QDeclarativeListView::keyPressEvent(QKeyEvent *event)
}
}
}
+ QDeclarativeFlickable::keyPressEvent(event);
+ if (event->isAccepted())
+ return;
event->ignore();
}
@@ -2379,6 +2398,8 @@ void QDeclarativeListView::itemsInserted(int modelIndex, int count)
if (d->currentItem)
d->currentItem->index = d->currentIndex;
emit currentIndexChanged();
+ } else if (d->currentIndex < 0) {
+ d->updateCurrent(0);
}
emit countChanged();
return;
@@ -2741,7 +2762,6 @@ void QDeclarativeListView::destroyingItem(QDeclarativeItem *item)
void QDeclarativeListView::animStopped()
{
Q_D(QDeclarativeListView);
- d->moveReason = QDeclarativeListViewPrivate::Other;
d->bufferMode = QDeclarativeListViewPrivate::NoBuffer;
}
diff --git a/src/declarative/graphicsitems/qdeclarativelistview_p.h b/src/declarative/graphicsitems/qdeclarativelistview_p.h
index 3635b39..5810979 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview_p.h
+++ b/src/declarative/graphicsitems/qdeclarativelistview_p.h
@@ -42,7 +42,7 @@
#ifndef QDECLARATIVELISTVIEW_H
#define QDECLARATIVELISTVIEW_H
-#include "qdeclarativeflickable_p.h"
+#include "private/qdeclarativeflickable_p.h"
QT_BEGIN_HEADER
diff --git a/src/declarative/graphicsitems/qdeclarativeloader.cpp b/src/declarative/graphicsitems/qdeclarativeloader.cpp
index 0d62afa..2aab36f 100644
--- a/src/declarative/graphicsitems/qdeclarativeloader.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeloader.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativeloader_p_p.h"
+#include "private/qdeclarativeloader_p_p.h"
#include <qdeclarativeinfo.h>
#include <qdeclarativeengine_p.h>
@@ -301,12 +301,8 @@ void QDeclarativeLoaderPrivate::_q_sourceLoaded()
item = qobject_cast<QGraphicsObject *>(obj);
if (item) {
QDeclarative_setParent_noEvent(ctxt, obj);
- if (QDeclarativeItem* qmlItem = qobject_cast<QDeclarativeItem *>(item)) {
- qmlItem->setParentItem(q);
- } else {
- item->setParentItem(q);
- item->setParent(q);
- }
+ QDeclarative_setParent_noEvent(item, q);
+ item->setParentItem(q);
// item->setFocus(true);
initResize();
} else {
diff --git a/src/declarative/graphicsitems/qdeclarativeloader_p_p.h b/src/declarative/graphicsitems/qdeclarativeloader_p_p.h
index fc5e665..49069f9 100644
--- a/src/declarative/graphicsitems/qdeclarativeloader_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeloader_p_p.h
@@ -53,10 +53,10 @@
// We mean it.
//
-#include "qdeclarativeloader_p.h"
+#include "private/qdeclarativeloader_p.h"
-#include "qdeclarativeitem_p.h"
-#include "qdeclarativeitemchangelistener_p.h"
+#include "private/qdeclarativeitem_p.h"
+#include "private/qdeclarativeitemchangelistener_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativemousearea.cpp b/src/declarative/graphicsitems/qdeclarativemousearea.cpp
index 26242bc..816aa78 100644
--- a/src/declarative/graphicsitems/qdeclarativemousearea.cpp
+++ b/src/declarative/graphicsitems/qdeclarativemousearea.cpp
@@ -39,10 +39,10 @@
**
****************************************************************************/
-#include "qdeclarativemousearea_p.h"
-#include "qdeclarativemousearea_p_p.h"
+#include "private/qdeclarativemousearea_p.h"
+#include "private/qdeclarativemousearea_p_p.h"
-#include "qdeclarativeevents_p_p.h"
+#include "private/qdeclarativeevents_p_p.h"
#include <QGraphicsSceneMouseEvent>
@@ -639,8 +639,8 @@ bool QDeclarativeMouseArea::setPressed(bool p)
d->pressed = p;
QDeclarativeMouseEvent me(d->lastPos.x(), d->lastPos.y(), d->lastButton, d->lastButtons, d->lastModifiers, isclick, d->longPress);
if (d->pressed) {
- emit positionChanged(&me);
emit pressed(&me);
+ emit positionChanged(&me);
} else {
emit released(&me);
if (isclick)
diff --git a/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h b/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h
index 88206cd..9068c7c 100644
--- a/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include "qdeclarativeitem_p.h"
+#include "private/qdeclarativeitem_p.h"
#include <qdatetime.h>
#include <qbasictimer.h>
diff --git a/src/declarative/graphicsitems/qdeclarativepainteditem.cpp b/src/declarative/graphicsitems/qdeclarativepainteditem.cpp
index 28a93d2..f52636f 100644
--- a/src/declarative/graphicsitems/qdeclarativepainteditem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepainteditem.cpp
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#include "qdeclarativepainteditem_p.h"
-#include "qdeclarativepainteditem_p_p.h"
+#include "private/qdeclarativepainteditem_p.h"
+#include "private/qdeclarativepainteditem_p_p.h"
#include <QDebug>
#include <QPen>
@@ -211,8 +211,8 @@ QDeclarativePaintedItem::~QDeclarativePaintedItem()
*/
void QDeclarativePaintedItem::init()
{
- connect(this,SIGNAL(widthChanged(qreal)),this,SLOT(clearCache()));
- connect(this,SIGNAL(heightChanged(qreal)),this,SLOT(clearCache()));
+ connect(this,SIGNAL(widthChanged()),this,SLOT(clearCache()));
+ connect(this,SIGNAL(heightChanged()),this,SLOT(clearCache()));
connect(this,SIGNAL(visibleChanged()),this,SLOT(clearCache()));
}
diff --git a/src/declarative/graphicsitems/qdeclarativepainteditem_p_p.h b/src/declarative/graphicsitems/qdeclarativepainteditem_p_p.h
index a15febb..6b23086 100644
--- a/src/declarative/graphicsitems/qdeclarativepainteditem_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepainteditem_p_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include "qdeclarativeitem_p.h"
+#include "private/qdeclarativeitem_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativepath.cpp b/src/declarative/graphicsitems/qdeclarativepath.cpp
index 8cd990fc..e2042fc 100644
--- a/src/declarative/graphicsitems/qdeclarativepath.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepath.cpp
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#include "qdeclarativepath_p.h"
-#include "qdeclarativepath_p_p.h"
+#include "private/qdeclarativepath_p.h"
+#include "private/qdeclarativepath_p_p.h"
#include <QSet>
#include <QTime>
diff --git a/src/declarative/graphicsitems/qdeclarativepath_p_p.h b/src/declarative/graphicsitems/qdeclarativepath_p_p.h
index fb63867..e82bcf5 100644
--- a/src/declarative/graphicsitems/qdeclarativepath_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepath_p_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include "qdeclarativepath_p.h"
+#include "private/qdeclarativepath_p.h"
#include <qdeclarative.h>
diff --git a/src/declarative/graphicsitems/qdeclarativepathview.cpp b/src/declarative/graphicsitems/qdeclarativepathview.cpp
index b9c8971..813b525 100644
--- a/src/declarative/graphicsitems/qdeclarativepathview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepathview.cpp
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#include "qdeclarativepathview_p.h"
-#include "qdeclarativepathview_p_p.h"
+#include "private/qdeclarativepathview_p.h"
+#include "private/qdeclarativepathview_p_p.h"
#include <qdeclarativestate_p.h>
#include <qdeclarativeopenmetaobject_p.h>
@@ -138,6 +138,167 @@ void QDeclarativePathViewPrivate::clear()
items.clear();
}
+void QDeclarativePathViewPrivate::updateMappedRange()
+{
+ if (model && pathItems != -1 && pathItems < model->count())
+ mappedRange = qreal(pathItems)/model->count();
+ else
+ mappedRange = 1.0;
+}
+
+qreal QDeclarativePathViewPrivate::positionOfIndex(qreal index) const
+{
+ qreal pos = -1.0;
+
+ if (model && index >= 0 && index < model->count()) {
+ qreal start = 0.0;
+ if (haveHighlightRange && highlightRangeMode != QDeclarativePathView::NoHighlightRange)
+ start = highlightRangeStart;
+ qreal globalPos = index + offset;
+ globalPos = qmlMod(globalPos, qreal(model->count())) / model->count();
+ if (pathItems != -1 && pathItems < model->count()) {
+ globalPos += start * mappedRange;
+ globalPos = qmlMod(globalPos, 1.0);
+ if (globalPos < mappedRange)
+ pos = globalPos / mappedRange;
+ } else {
+ pos = qmlMod(globalPos + start, 1.0);
+ }
+ }
+
+ return pos;
+}
+
+void QDeclarativePathViewPrivate::createHighlight()
+{
+ Q_Q(QDeclarativePathView);
+ if (!q->isComponentComplete())
+ return;
+
+ bool changed = false;
+ if (highlightItem) {
+ delete highlightItem;
+ highlightItem = 0;
+ changed = true;
+ }
+
+ QDeclarativeItem *item = 0;
+ if (highlightComponent) {
+ QDeclarativeContext *highlightContext = new QDeclarativeContext(qmlContext(q));
+ QObject *nobj = highlightComponent->create(highlightContext);
+ if (nobj) {
+ QDeclarative_setParent_noEvent(highlightContext, nobj);
+ item = qobject_cast<QDeclarativeItem *>(nobj);
+ if (!item)
+ delete nobj;
+ } else {
+ delete highlightContext;
+ }
+ } else {
+ item = new QDeclarativeItem;
+ }
+ if (item) {
+ QDeclarative_setParent_noEvent(item, q);
+ item->setParentItem(q);
+ highlightItem = item;
+ changed = true;
+ }
+ if (changed)
+ emit q->highlightItemChanged();
+}
+
+void QDeclarativePathViewPrivate::updateHighlight()
+{
+ Q_Q(QDeclarativePathView);
+ if (!q->isComponentComplete() || !isValid())
+ return;
+ if (highlightItem) {
+ if (haveHighlightRange && highlightRangeMode == QDeclarativePathView::StrictlyEnforceRange) {
+ updateItem(highlightItem, highlightRangeStart);
+ } else {
+ qreal target = currentIndex;
+
+ tl.reset(moveHighlight);
+ moveHighlight.setValue(highlightPosition);
+
+ const int duration = 300;
+
+ if (target - highlightPosition > model->count()/2) {
+ highlightUp = false;
+ qreal distance = model->count() - target + highlightPosition;
+ tl.move(moveHighlight, 0.0, QEasingCurve(QEasingCurve::InQuad), int(duration * highlightPosition / distance));
+ tl.set(moveHighlight, model->count()-0.01);
+ tl.move(moveHighlight, target, QEasingCurve(QEasingCurve::OutQuad), int(duration * (model->count()-target) / distance));
+ } else if (target - highlightPosition <= -model->count()/2) {
+ highlightUp = true;
+ qreal distance = model->count() - highlightPosition + target;
+ tl.move(moveHighlight, model->count()-0.01, QEasingCurve(QEasingCurve::InQuad), int(duration * (model->count()-highlightPosition) / distance));
+ tl.set(moveHighlight, 0.0);
+ tl.move(moveHighlight, target, QEasingCurve(QEasingCurve::OutQuad), int(duration * target / distance));
+ } else {
+ highlightUp = highlightPosition - target < 0;
+ tl.move(moveHighlight, target, QEasingCurve(QEasingCurve::InOutQuad), duration);
+ }
+ }
+ }
+}
+
+void QDeclarativePathViewPrivate::setHighlightPosition(qreal pos)
+{
+ if (pos != highlightPosition) {
+ qreal start = 0.0;
+ qreal end = 1.0;
+ if (haveHighlightRange && highlightRangeMode != QDeclarativePathView::NoHighlightRange) {
+ start = highlightRangeStart;
+ end = highlightRangeEnd;
+ }
+
+ qreal range = qreal(model->count());
+ // calc normalized position of highlight relative to offset
+ qreal relativeHighlight = qmlMod(pos + offset, range) / range;
+
+ if (!highlightUp && relativeHighlight > end * mappedRange) {
+ qreal diff = 1.0 - relativeHighlight;
+ setOffset(offset + diff * range);
+ } else if (highlightUp && relativeHighlight >= (end - start) * mappedRange) {
+ qreal diff = relativeHighlight - (end - start) * mappedRange;
+ setOffset(offset - diff * range - 0.00001);
+ }
+
+ highlightPosition = pos;
+ qreal pathPos = positionOfIndex(pos);
+ updateItem(highlightItem, pathPos);
+ if (QDeclarativePathViewAttached *att = attached(highlightItem))
+ att->setOnPath(pathPos != -1.0);
+ }
+}
+
+void QDeclarativePathViewPrivate::updateItem(QDeclarativeItem *item, qreal percent)
+{
+ if (QDeclarativePathViewAttached *att = attached(item)) {
+ foreach(const QString &attr, path->attributes())
+ att->setValue(attr.toUtf8(), path->attributeAt(attr, percent));
+ }
+ QPointF pf = path->pointAt(percent);
+ item->setX(pf.x() - item->width()*item->scale()/2);
+ item->setY(pf.y() - item->height()*item->scale()/2);
+}
+
+void QDeclarativePathViewPrivate::regenerate()
+{
+ Q_Q(QDeclarativePathView);
+ if (!q->isComponentComplete())
+ return;
+
+ clear();
+
+ if (!isValid())
+ return;
+
+ firstIndex = -1;
+ updateMappedRange();
+ q->refill();
+}
/*!
\qmlclass PathView QDeclarativePathView
@@ -232,6 +393,7 @@ void QDeclarativePathView::setModel(const QVariant &model)
if (d->model) {
disconnect(d->model, SIGNAL(itemsInserted(int,int)), this, SLOT(itemsInserted(int,int)));
disconnect(d->model, SIGNAL(itemsRemoved(int,int)), this, SLOT(itemsRemoved(int,int)));
+ disconnect(d->model, SIGNAL(itemsMoved(int,int,int)), this, SLOT(itemsMoved(int,int,int)));
disconnect(d->model, SIGNAL(modelReset()), this, SLOT(modelReset()));
disconnect(d->model, SIGNAL(createdItem(int, QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
for (int i=0; i<d->items.count(); i++){
@@ -261,13 +423,16 @@ void QDeclarativePathView::setModel(const QVariant &model)
if (d->model) {
connect(d->model, SIGNAL(itemsInserted(int,int)), this, SLOT(itemsInserted(int,int)));
connect(d->model, SIGNAL(itemsRemoved(int,int)), this, SLOT(itemsRemoved(int,int)));
+ connect(d->model, SIGNAL(itemsMoved(int,int,int)), this, SLOT(itemsMoved(int,int,int)));
connect(d->model, SIGNAL(modelReset()), this, SLOT(modelReset()));
connect(d->model, SIGNAL(createdItem(int, QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
}
- d->firstIndex = 0;
- d->pathOffset = 0;
+ d->offset = qmlMod(d->offset, qreal(d->model->count()));
+ if (d->offset < 0)
+ d->offset = d->model->count() + d->offset;
d->regenerate();
d->fixOffset();
+ emit countChanged();
emit modelChanged();
}
@@ -330,22 +495,27 @@ void QDeclarativePathView::setCurrentIndex(int idx)
if (d->model->count()) {
int itemIndex = (d->currentIndex - d->firstIndex + d->model->count()) % d->model->count();
if (itemIndex < d->items.count()) {
- if (QDeclarativeItem *item = d->items.at(d->currentIndex)) {
+ if (QDeclarativeItem *item = d->items.at(itemIndex)) {
if (QDeclarativePathViewAttached *att = d->attached(item))
att->setIsCurrentItem(false);
}
}
}
+ d->currentItem = 0;
+ d->moveReason = QDeclarativePathViewPrivate::SetIndex;
d->currentIndex = idx;
if (d->model->count()) {
- d->snapToCurrent();
+ if (d->haveHighlightRange && d->highlightRangeMode == QDeclarativePathView::StrictlyEnforceRange)
+ d->snapToCurrent();
int itemIndex = (idx - d->firstIndex + d->model->count()) % d->model->count();
if (itemIndex < d->items.count()) {
- QDeclarativeItem *item = d->items.at(itemIndex);
- item->setFocus(true);
- if (QDeclarativePathViewAttached *att = d->attached(item))
+ d->currentItem = d->items.at(itemIndex);
+ d->currentItem->setFocus(true);
+ if (QDeclarativePathViewAttached *att = d->attached(d->currentItem))
att->setIsCurrentItem(true);
}
+ d->currentItemOffset = d->positionOfIndex(d->currentIndex);
+ d->updateHighlight();
}
emit currentIndexChanged();
}
@@ -354,12 +524,13 @@ void QDeclarativePathView::setCurrentIndex(int idx)
/*!
\qmlproperty real PathView::offset
- The offset specifies how far along the path (0.0-1.0) the items are from their initial positions.
+ The offset specifies how far along the path the items are from their initial positions.
+ This is a real number that ranges from 0.0 to the count of items in the model.
*/
qreal QDeclarativePathView::offset() const
{
Q_D(const QDeclarativePathView);
- return d->_offset;
+ return d->offset;
}
void QDeclarativePathView::setOffset(qreal offset)
@@ -372,34 +543,152 @@ void QDeclarativePathView::setOffset(qreal offset)
void QDeclarativePathViewPrivate::setOffset(qreal o)
{
Q_Q(QDeclarativePathView);
- if (_offset != o) {
- _offset = qmlMod(o, qreal(1.0));
- if (_offset < 0)
- _offset = 1.0 + _offset;
- q->refill();
+ if (offset != o) {
+ if (isValid() && q->isComponentComplete()) {
+ offset = qmlMod(o, qreal(model->count()));
+ if (offset < 0)
+ offset += qreal(model->count());
+ q->refill();
+ } else {
+ offset = o;
+ }
+ emit q->offsetChanged();
}
}
/*!
- \qmlproperty real PathView::snapPosition
+ \qmlproperty component PathView::highlight
+ This property holds the component to use as the highlight.
+
+ An instance of the highlight component will be created for each view.
+ The geometry of the resultant component instance will be managed by the view
+ so as to stay with the current item.
+
+ The below example demonstrates how to make a simple highlight. Note the use
+ of the PathView.onPath property to ensure that the highlight is hidden
+ when flicked off of the path.
- This property determines the position (0.0-1.0) the nearest item will snap to.
+ \code
+ Component {
+ Rectangle {
+ visible: PathView.onPath
+ ...
+ }
+ }
+ \endcode
+
+ \sa highlightItem, highlightRangeMode
*/
-qreal QDeclarativePathView::snapPosition() const
+
+QDeclarativeComponent *QDeclarativePathView::highlight() const
{
Q_D(const QDeclarativePathView);
- return d->snapPos;
+ return d->highlightComponent;
}
-void QDeclarativePathView::setSnapPosition(qreal pos)
+void QDeclarativePathView::setHighlight(QDeclarativeComponent *highlight)
{
Q_D(QDeclarativePathView);
- qreal normalizedPos = pos - int(pos);
- if (qFuzzyCompare(normalizedPos, d->snapPos))
+ if (highlight != d->highlightComponent) {
+ d->highlightComponent = highlight;
+ d->createHighlight();
+ d->updateHighlight();
+ emit highlightChanged();
+ }
+}
+
+/*!
+ \qmlproperty Item PathView::highlightItem
+
+ \c highlightItem holds the highlight item, which was created
+ from the \l highlight component.
+
+ \sa highlight
+*/
+QDeclarativeItem *QDeclarativePathView::highlightItem()
+{
+ Q_D(const QDeclarativePathView);
+ return d->highlightItem;
+}
+/*!
+ \qmlproperty real PathView::preferredHighlightBegin
+ \qmlproperty real PathView::preferredHighlightEnd
+ \qmlproperty enumeration PathView::highlightRangeMode
+
+ These properties set the preferred range of the highlight (current item)
+ within the view. The preferred values must be in the range 0.0-1.0.
+
+ If highlightRangeMode is set to \e ApplyRange the view will
+ attempt to maintain the highlight within the range, however
+ the highlight can move outside of the range at the ends of the path
+ or due to a mouse interaction.
+
+ If highlightRangeMode is set to \e StrictlyEnforceRange the highlight will never
+ move outside of the range. This means that the current item will change
+ if a keyboard or mouse action would cause the highlight to move
+ outside of the range.
+
+ Note that this is the correct way to influence where the
+ current item ends up when the view moves. For example, if you want the
+ currently selected item to be in the middle of the path, then set the
+ highlight range to be 0.5,0.5 and highlightRangeMode to StrictlyEnforceRange.
+ Then, when the path scrolls,
+ the currently selected item will be the item at that position. This also applies to
+ when the currently selected item changes - it will scroll to within the preferred
+ highlight range. Furthermore, the behaviour of the current item index will occur
+ whether or not a highlight exists.
+
+ The default value is \e StrictlyEnforceRange.
+
+ Note that a valid range requires preferredHighlightEnd to be greater
+ than or equal to preferredHighlightBegin.
+*/
+qreal QDeclarativePathView::preferredHighlightBegin() const
+{
+ Q_D(const QDeclarativePathView);
+ return d->highlightRangeStart;
+}
+
+void QDeclarativePathView::setPreferredHighlightBegin(qreal start)
+{
+ Q_D(QDeclarativePathView);
+ if (d->highlightRangeStart == start || start < 0 || start > 1.0)
return;
- d->snapPos = normalizedPos;
- d->fixOffset();
- emit snapPositionChanged();
+ d->highlightRangeStart = start;
+ d->haveHighlightRange = d->highlightRangeMode != NoHighlightRange && d->highlightRangeStart <= d->highlightRangeEnd;
+ emit preferredHighlightBeginChanged();
+}
+
+qreal QDeclarativePathView::preferredHighlightEnd() const
+{
+ Q_D(const QDeclarativePathView);
+ return d->highlightRangeEnd;
+}
+
+void QDeclarativePathView::setPreferredHighlightEnd(qreal end)
+{
+ Q_D(QDeclarativePathView);
+ if (d->highlightRangeEnd == end || end < 0 || end > 1.0)
+ return;
+ d->highlightRangeEnd = end;
+ d->haveHighlightRange = d->highlightRangeMode != NoHighlightRange && d->highlightRangeStart <= d->highlightRangeEnd;
+ emit preferredHighlightEndChanged();
+}
+
+QDeclarativePathView::HighlightRangeMode QDeclarativePathView::highlightRangeMode() const
+{
+ Q_D(const QDeclarativePathView);
+ return d->highlightRangeMode;
+}
+
+void QDeclarativePathView::setHighlightRangeMode(HighlightRangeMode mode)
+{
+ Q_D(QDeclarativePathView);
+ if (d->highlightRangeMode == mode)
+ return;
+ d->highlightRangeMode = mode;
+ d->haveHighlightRange = d->highlightRangeMode != NoHighlightRange && d->highlightRangeStart <= d->highlightRangeEnd;
+ emit highlightRangeModeChanged();
}
/*!
@@ -426,6 +715,52 @@ void QDeclarativePathView::setDragMargin(qreal dragMargin)
}
/*!
+ \qmlproperty real PathView::flickDeceleration
+ This property holds the rate at which a flick will decelerate.
+
+ The default is 100.
+*/
+qreal QDeclarativePathView::flickDeceleration() const
+{
+ Q_D(const QDeclarativePathView);
+ return d->deceleration;
+}
+
+void QDeclarativePathView::setFlickDeceleration(qreal dec)
+{
+ Q_D(QDeclarativePathView);
+ if (d->deceleration == dec)
+ return;
+ d->deceleration = dec;
+ emit flickDecelerationChanged();
+}
+
+/*!
+ \qmlproperty bool PathView::interactive
+
+ A user cannot drag or flick a PathView that is not interactive.
+
+ This property is useful for temporarily disabling flicking. This allows
+ special interaction with PathView's children.
+*/
+bool QDeclarativePathView::isInteractive() const
+{
+ Q_D(const QDeclarativePathView);
+ return d->interactive;
+}
+
+void QDeclarativePathView::setInteractive(bool interactive)
+{
+ Q_D(QDeclarativePathView);
+ if (interactive != d->interactive) {
+ d->interactive = interactive;
+ if (!interactive)
+ d->tl.clear();
+ emit interactiveChanged();
+ }
+}
+
+/*!
\qmlproperty component PathView::delegate
The delegate provides a template defining each item instantiated by the view.
@@ -467,7 +802,7 @@ void QDeclarativePathView::setDelegate(QDeclarativeComponent *delegate)
/*!
\qmlproperty int PathView::pathItemCount
- This property holds the number of items visible on the path at any one time
+ This property holds the number of items visible on the path at any one time.
*/
int QDeclarativePathView::pathItemCount() const
{
@@ -480,9 +815,13 @@ void QDeclarativePathView::setPathItemCount(int i)
Q_D(QDeclarativePathView);
if (i == d->pathItems)
return;
+ if (i < 1)
+ i = 1;
d->pathItems = i;
- d->regenerate();
- pathItemCountChanged();
+ if (d->isValid() && isComponentComplete()) {
+ d->regenerate();
+ }
+ emit pathItemCountChanged();
}
QPointF QDeclarativePathViewPrivate::pointNear(const QPointF &point, qreal *nearPercent) const
@@ -512,7 +851,7 @@ QPointF QDeclarativePathViewPrivate::pointNear(const QPointF &point, qreal *near
void QDeclarativePathView::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(QDeclarativePathView);
- if (!d->items.count())
+ if (!d->interactive || !d->items.count())
return;
QPointF scenePoint = mapToScene(event->pos());
int idx = 0;
@@ -542,7 +881,7 @@ void QDeclarativePathView::mousePressEvent(QGraphicsSceneMouseEvent *event)
void QDeclarativePathView::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(QDeclarativePathView);
- if (d->lastPosTime.isNull())
+ if (!d->interactive || d->lastPosTime.isNull())
return;
if (!d->stealMouse) {
@@ -555,14 +894,14 @@ void QDeclarativePathView::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
d->moveReason = QDeclarativePathViewPrivate::Mouse;
qreal newPc;
d->pointNear(event->pos(), &newPc);
- qreal diff = newPc - d->startPc;
+ qreal diff = (newPc - d->startPc)*d->model->count()*d->mappedRange;
if (diff) {
- setOffset(d->_offset + diff);
+ setOffset(d->offset + diff);
- if (diff > 0.5)
- diff -= 1.0;
- else if (diff < -0.5)
- diff += 1.0;
+ if (diff > d->model->count()/2)
+ diff -= d->model->count();
+ else if (diff < -d->model->count()/2)
+ diff += d->model->count();
d->lastElapsed = QDeclarativeItemPrivate::restart(d->lastPosTime);
d->lastDist = diff;
@@ -574,27 +913,39 @@ void QDeclarativePathView::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
void QDeclarativePathView::mouseReleaseEvent(QGraphicsSceneMouseEvent *)
{
Q_D(QDeclarativePathView);
- if (d->lastPosTime.isNull())
+ d->stealMouse = false;
+ setKeepMouseGrab(false);
+ if (!d->interactive || d->lastPosTime.isNull())
return;
qreal elapsed = qreal(d->lastElapsed + QDeclarativeItemPrivate::elapsed(d->lastPosTime)) / 1000.;
qreal velocity = elapsed > 0. ? d->lastDist / elapsed : 0;
- if (d->model && d->model->count() && qAbs(velocity) > 0.05) {
- if (velocity > 1.5)
- velocity = 1.5;
- else if (velocity < -1.5)
- velocity = -1.5;
- qreal inc = qmlMod(d->_offset - d->snapPos, qreal(1.0 / d->model->count()));
- qreal dist = qAbs(velocity/2 - qmlMod(velocity/2, qreal(1.0 / d->model->count()) - inc));
- d->moveOffset.setValue(d->_offset);
- d->tl.accel(d->moveOffset, velocity, 0.1, dist);
+ if (d->model && d->model->count() && qAbs(velocity) > 1.) {
+ qreal count = d->pathItems == -1 ? d->model->count() : d->pathItems;
+ if (qAbs(velocity) > count * 2) // limit velocity
+ velocity = (velocity > 0 ? count : -count) * 2;
+ // Calculate the distance to be travelled
+ qreal v2 = velocity*velocity;
+ qreal accel = d->deceleration/10;
+ // + 0.25 to encourage moving at least one item in the flick direction
+ qreal dist = qMin(qreal(d->model->count()-1), qreal(v2 / (accel * 2.0) + 0.25));
+ if (d->haveHighlightRange && d->highlightRangeMode == QDeclarativePathView::StrictlyEnforceRange) {
+ // round to nearest item.
+ if (velocity > 0.)
+ dist = qRound(dist + d->offset) - d->offset;
+ else
+ dist = qRound(dist - d->offset) + d->offset;
+ // Calculate accel required to stop on item boundary
+ accel = v2 / (2.0f * qAbs(dist));
+ }
+ d->moveOffset.setValue(d->offset);
+ d->tl.accel(d->moveOffset, velocity, accel, dist);
d->tl.callback(QDeclarativeTimeLineCallback(&d->moveOffset, d->fixOffsetCallback, d));
} else {
d->fixOffset();
}
d->lastPosTime = QTime();
- d->stealMouse = false;
ungrabMouse();
}
@@ -644,7 +995,8 @@ bool QDeclarativePathView::sendMouseEvent(QGraphicsSceneMouseEvent *event)
bool QDeclarativePathView::sceneEventFilter(QGraphicsItem *i, QEvent *e)
{
- if (!isVisible())
+ Q_D(QDeclarativePathView);
+ if (!isVisible() || !d->interactive)
return QDeclarativeItem::sceneEventFilter(i, e);
switch (e->type()) {
@@ -668,73 +1020,9 @@ void QDeclarativePathView::componentComplete()
{
Q_D(QDeclarativePathView);
QDeclarativeItem::componentComplete();
+ d->createHighlight();
d->regenerate();
-
- // move to correct offset
- if (d->items.count()) {
- int itemIndex = (d->currentIndex - d->firstIndex + d->model->count()) % d->model->count();
-
- itemIndex += d->pathOffset;
- itemIndex %= d->items.count();
- qreal targetOffset = qmlMod(1.0 + d->snapPos - qreal(itemIndex) / d->items.count(), qreal(1.0));
-
- if (targetOffset < 0)
- targetOffset = 1.0 + targetOffset;
- if (targetOffset != d->_offset) {
- d->moveOffset.setValue(targetOffset);
- }
- }
-}
-
-void QDeclarativePathViewPrivate::regenerate()
-{
- Q_Q(QDeclarativePathView);
- if (!q->isComponentComplete())
- return;
-
- clear();
-
- if (!isValid())
- return;
-
- if (firstIndex >= model->count())
- firstIndex = model->count()-1;
- if (pathOffset >= model->count())
- pathOffset = model->count()-1;
-
- int numItems = pathItems >= 0 ? pathItems : model->count();
- for (int i=0; i < numItems && i < model->count(); ++i){
- int index = (i + firstIndex) % model->count();
- QDeclarativeItem *item = getItem(index);
- if (!item) {
- qWarning() << "PathView: Cannot create item, index" << (i + firstIndex) % model->count();
- return;
- }
- items.append(item);
- item->setZValue(i);
- qreal percent = qreal(i) / numItems + _offset;
- percent = qAbs(qmlMod(percent, qreal(1.0)));
- updateItem(item, percent);
- model->completeItem();
- if (currentIndex == index) {
- item->setFocus(true);
- if (QDeclarativePathViewAttached *att = attached(item))
- att->setIsCurrentItem(true);
- }
- }
- if (pathItems != -1)
- q->refill();
-}
-
-void QDeclarativePathViewPrivate::updateItem(QDeclarativeItem *item, qreal percent)
-{
- if (QDeclarativePathViewAttached *att = attached(item)) {
- foreach(const QString &attr, path->attributes())
- att->setValue(attr.toUtf8(), path->attributeAt(attr, percent));
- }
- QPointF pf = path->pointAt(percent);
- item->setX(pf.x() - item->width()*item->scale()/2);
- item->setY(pf.y() - item->height()*item->scale()/2);
+ d->updateHighlight();
}
void QDeclarativePathView::refill()
@@ -743,81 +1031,110 @@ void QDeclarativePathView::refill()
if (!d->isValid() || !isComponentComplete())
return;
- QList<qreal> positions;
- for (int i=0; i<d->items.count(); i++){
- qreal percent = qreal(i) / d->items.count();
- percent = percent + d->_offset;
- percent = qmlMod(percent, qreal(1.0));
- positions << qAbs(percent);
- }
-
- if (d->pathItems==-1) {
- for (int i=0; i<positions.count(); i++)
- d->updateItem(d->items.at(i), positions[i]);
- return;
+ bool currentVisible = false;
+
+ // first move existing items and remove items off path
+ int idx = d->firstIndex;
+ QList<QDeclarativeItem*>::iterator it = d->items.begin();
+ while (it != d->items.end()) {
+ qreal pos = d->positionOfIndex(idx);
+ QDeclarativeItem *item = *it;
+ if (pos >= 0.0) {
+ d->updateItem(item, pos);
+ if (idx == d->currentIndex) {
+ currentVisible = true;
+ d->currentItemOffset = pos;
+ }
+ ++it;
+ } else {
+// qDebug() << "release";
+ d->updateItem(item, 1.0);
+ d->releaseItem(item);
+ if (it == d->items.begin()) {
+ if (++d->firstIndex >= d->model->count())
+ d->firstIndex = 0;
+ }
+ it = d->items.erase(it);
+ }
+ ++idx;
+ if (idx >= d->model->count())
+ idx = 0;
}
- QList<qreal> rotatedPositions;
- for (int i=0; i<d->items.count(); i++)
- rotatedPositions << positions[(i + d->pathOffset + d->items.count()) % d->items.count()];
-
- int wrapIndex= -1;
- for (int i=0; i<d->items.count()-1; i++) {
- if (rotatedPositions[i] > rotatedPositions[i+1]){
- wrapIndex = i;
- break;
+ // add items to beginning and end
+ int count = d->pathItems == -1 ? d->model->count() : qMin(d->pathItems, d->model->count());
+ if (d->items.count() < count) {
+ int idx = qRound(d->model->count() - d->offset) % d->model->count();
+ qreal startPos = 0.0;
+ if (d->haveHighlightRange && d->highlightRangeMode != QDeclarativePathView::NoHighlightRange)
+ startPos = d->highlightRangeStart;
+ if (d->firstIndex >= 0) {
+ startPos = d->positionOfIndex(d->firstIndex);
+ idx = (d->firstIndex + d->items.count()) % d->model->count();
}
- }
- if (wrapIndex != -1 ){
- //A wraparound has occured
- if (wrapIndex < d->items.count()/2){
- while(wrapIndex-- >= 0){
- QDeclarativeItem* p = d->items.takeFirst();
- d->updateItem(p, 0.0);
- d->releaseItem(p);
- d->firstIndex++;
- d->firstIndex %= d->model->count();
- int index = (d->firstIndex + d->items.count())%d->model->count();
- QDeclarativeItem *item = d->getItem(index);
- item->setZValue(wrapIndex);
- d->model->completeItem();
- if (d->currentIndex == index) {
- item->setFocus(true);
- if (QDeclarativePathViewAttached *att = d->attached(item))
- att->setIsCurrentItem(true);
- }
- d->items << item;
- d->pathOffset++;
- d->pathOffset=d->pathOffset % d->items.count();
+ qreal pos = d->positionOfIndex(idx);
+ while ((pos > startPos || !d->items.count()) && d->items.count() < count) {
+// qDebug() << "append" << idx;
+ QDeclarativeItem *item = d->getItem(idx);
+ item->setZValue(idx+1);
+ d->model->completeItem();
+ if (d->currentIndex == idx) {
+ item->setFocus(true);
+ if (QDeclarativePathViewAttached *att = d->attached(item))
+ att->setIsCurrentItem(true);
+ currentVisible = true;
+ d->currentItemOffset = pos;
+ d->currentItem = item;
}
- } else {
- while(wrapIndex++ < d->items.count()-1){
- QDeclarativeItem* p = d->items.takeLast();
- d->updateItem(p, 1.0);
- d->releaseItem(p);
- d->firstIndex--;
- if (d->firstIndex < 0)
- d->firstIndex = d->model->count() - 1;
- QDeclarativeItem *item = d->getItem(d->firstIndex);
- item->setZValue(d->firstIndex);
- d->model->completeItem();
- if (d->currentIndex == d->firstIndex) {
- item->setFocus(true);
- if (QDeclarativePathViewAttached *att = d->attached(item))
- att->setIsCurrentItem(true);
- }
- d->items.prepend(item);
- d->pathOffset--;
- if (d->pathOffset < 0)
- d->pathOffset = d->items.count() - 1;
+ if (d->items.count() == 0)
+ d->firstIndex = idx;
+ d->items.append(item);
+ d->updateItem(item, pos);
+ ++idx;
+ if (idx >= d->model->count())
+ idx = 0;
+ pos = d->positionOfIndex(idx);
+ }
+
+ idx = d->firstIndex - 1;
+ if (idx < 0)
+ idx = d->model->count() - 1;
+ pos = d->positionOfIndex(idx);
+ while (pos >= 0.0 && pos < startPos) {
+// qDebug() << "prepend" << idx;
+ QDeclarativeItem *item = d->getItem(idx);
+ item->setZValue(idx+1);
+ d->model->completeItem();
+ if (d->currentIndex == idx) {
+ item->setFocus(true);
+ if (QDeclarativePathViewAttached *att = d->attached(item))
+ att->setIsCurrentItem(true);
+ currentVisible = true;
+ d->currentItemOffset = pos;
+ d->currentItem = item;
}
+ d->items.prepend(item);
+ d->updateItem(item, pos);
+ d->firstIndex = idx;
+ idx = d->firstIndex - 1;
+ if (idx < 0)
+ idx = d->model->count() - 1;
+ pos = d->positionOfIndex(idx);
}
- for (int i=0; i<d->items.count(); i++)
- rotatedPositions[i] = positions[(i + d->pathOffset + d->items.count())
- % d->items.count()];
}
- for (int i=0; i<d->items.count(); i++)
- d->updateItem(d->items.at(i), rotatedPositions[i]);
+
+ if (!currentVisible)
+ d->currentItemOffset = 1.0;
+
+ if (d->highlightItem && d->haveHighlightRange && d->highlightRangeMode == QDeclarativePathView::StrictlyEnforceRange) {
+ d->updateItem(d->highlightItem, d->highlightRangeStart);
+ if (QDeclarativePathViewAttached *att = d->attached(d->highlightItem))
+ att->setOnPath(true);
+ } else if (d->moveReason != QDeclarativePathViewPrivate::SetIndex) {
+ d->updateItem(d->highlightItem, d->currentItemOffset);
+ if (QDeclarativePathViewAttached *att = d->attached(d->highlightItem))
+ att->setOnPath(currentVisible);
+ }
}
void QDeclarativePathView::itemsInserted(int modelIndex, int count)
@@ -826,29 +1143,18 @@ void QDeclarativePathView::itemsInserted(int modelIndex, int count)
Q_D(QDeclarativePathView);
if (!d->isValid() || !isComponentComplete())
return;
- if (d->pathItems == -1) {
- for (int i = 0; i < count; ++i) {
- QDeclarativeItem *item = d->getItem(modelIndex + i);
- item->setZValue(modelIndex + i);
- d->model->completeItem();
- d->items.insert(modelIndex + i, item);
- }
- refill();
- } else {
- //XXX This is pretty heavy handed until we reference count items.
- d->regenerate();
- }
-
- // make sure the current item is still at the snap position
- int itemIndex = (d->currentIndex - d->firstIndex + d->model->count())%d->model->count();
- itemIndex += d->pathOffset;
- itemIndex %= d->items.count();
- qreal targetOffset = qmlMod(1.0 + d->snapPos - qreal(itemIndex) / d->items.count(), qreal(1.0));
- if (targetOffset < 0)
- targetOffset = 1.0 + targetOffset;
- if (targetOffset != d->_offset)
- d->moveOffset.setValue(targetOffset);
+ QList<QDeclarativeItem *> removedItems = d->items;
+ d->items.clear();
+ if (modelIndex <= d->currentIndex) {
+ d->currentIndex += count;
+ emit currentIndexChanged();
+ }
+ d->regenerate();
+ while (removedItems.count())
+ d->releaseItem(removedItems.takeLast());
+ d->updateCurrent();
+ emit countChanged();
}
void QDeclarativePathView::itemsRemoved(int modelIndex, int count)
@@ -857,41 +1163,63 @@ void QDeclarativePathView::itemsRemoved(int modelIndex, int count)
Q_D(QDeclarativePathView);
if (!d->isValid() || !isComponentComplete())
return;
- if (d->pathItems == -1) {
- for (int i = 0; i < count && d->items.count() > modelIndex; ++i) {
- QDeclarativeItem* p = d->items.takeAt(modelIndex);
- d->model->release(p);
+
+ // fix current
+ bool currentChanged = false;
+ if (d->currentIndex >= modelIndex + count) {
+ d->currentIndex -= count;
+ currentChanged = true;
+ } else if (d->currentIndex >= modelIndex && d->currentIndex < modelIndex + count) {
+ // current item has been removed.
+ d->currentIndex = qMin(modelIndex, d->model->count()-1);
+ if (d->currentItem) {
+ if (QDeclarativePathViewAttached *att = d->attached(d->currentItem))
+ att->setIsCurrentItem(true);
}
- d->snapToCurrent();
- refill();
- } else {
- d->regenerate();
+ currentChanged = true;
}
- if (d->model->count() == 0) {
- d->currentIndex = -1;
- d->moveOffset.setValue(0);
- return;
- }
+ QList<QDeclarativeItem *> removedItems = d->items;
+ d->items.clear();
+ if (d->offset >= d->model->count())
+ d->offset = d->model->count() - 1;
+
+ d->regenerate();
+ while (removedItems.count())
+ d->releaseItem(removedItems.takeLast());
+ d->updateCurrent();
+ if (currentChanged)
+ emit currentIndexChanged();
+ emit countChanged();
+}
- // make sure the current item is still at the snap position
- if (d->currentIndex >= d->model->count())
- d->currentIndex = d->model->count() - 1;
- int itemIndex = (d->currentIndex - d->firstIndex + d->model->count())%d->model->count();
- itemIndex += d->pathOffset;
- itemIndex %= d->items.count();
- qreal targetOffset = qmlMod(1.0 + d->snapPos - qreal(itemIndex) / d->items.count(), qreal(1.0));
+void QDeclarativePathView::itemsMoved(int /*from*/, int /*to*/, int /*count*/)
+{
+ Q_D(QDeclarativePathView);
+ if (!d->isValid() || !isComponentComplete())
+ return;
- if (targetOffset < 0)
- targetOffset = 1.0 + targetOffset;
- if (targetOffset != d->_offset)
- d->moveOffset.setValue(targetOffset);
+ QList<QDeclarativeItem *> removedItems = d->items;
+ d->items.clear();
+ d->regenerate();
+ while (removedItems.count())
+ d->releaseItem(removedItems.takeLast());
+
+ // Fix current index
+ if (d->currentIndex >= 0 && d->currentItem) {
+ int oldCurrent = d->currentIndex;
+ d->currentIndex = d->model->indexOf(d->currentItem, this);
+ if (oldCurrent != d->currentIndex)
+ emit currentIndexChanged();
+ }
+ d->updateCurrent();
}
void QDeclarativePathView::modelReset()
{
Q_D(QDeclarativePathView);
d->regenerate();
+ emit countChanged();
}
void QDeclarativePathView::createdItem(int index, QDeclarativeItem *item)
@@ -919,36 +1247,10 @@ int QDeclarativePathViewPrivate::calcCurrentIndex()
{
int current = -1;
if (model && items.count()) {
- _offset = qmlMod(_offset, qreal(1.0));
- if (_offset < 0)
- _offset += 1.0;
-
- if (pathItems == -1) {
- qreal delta = qmlMod(_offset - snapPos, qreal(1.0));
- if (delta < 0)
- delta = 1.0 + delta;
- int ii = model->count() - qRound(delta * model->count());
- if (ii < 0)
- ii = 0;
- current = ii;
- } else {
- qreal bestDiff=1e9;
- int bestI=-1;
- for (int i=0; i<items.count(); i++){
- qreal percent = qreal(i) / items.count();
- percent = percent + _offset;
- percent = qmlMod(percent, qreal(1.0));
- qreal diff = qAbs(snapPos - percent);
- if (diff < bestDiff){
- bestDiff = diff;
- bestI = i;
- }
- }
- int modelIndex = (bestI - pathOffset + items.count())%items.count();
- modelIndex += firstIndex;
- current = modelIndex;
- }
- current = qAbs(current % model->count());
+ offset = qmlMod(offset, model->count());
+ if (offset < 0)
+ offset += model->count();
+ current = qRound(qAbs(qmlMod(model->count() - offset, model->count())));
}
return current;
@@ -959,6 +1261,9 @@ void QDeclarativePathViewPrivate::updateCurrent()
Q_Q(QDeclarativePathView);
if (moveReason != Mouse)
return;
+ if (!haveHighlightRange || highlightRangeMode != QDeclarativePathView::StrictlyEnforceRange)
+ return;
+
int idx = calcCurrentIndex();
if (model && idx != currentIndex) {
int itemIndex = (currentIndex - firstIndex + model->count()) % model->count();
@@ -969,11 +1274,12 @@ void QDeclarativePathViewPrivate::updateCurrent()
}
}
currentIndex = idx;
+ currentItem = 0;
itemIndex = (idx - firstIndex + model->count()) % model->count();
if (itemIndex < items.count()) {
- QDeclarativeItem *item = items.at(itemIndex);
- item->setFocus(true);
- if (QDeclarativePathViewAttached *att = attached(item))
+ currentItem = items.at(itemIndex);
+ currentItem->setFocus(true);
+ if (QDeclarativePathViewAttached *att = attached(currentItem))
att->setIsCurrentItem(true);
}
emit q->currentIndexChanged();
@@ -989,11 +1295,13 @@ void QDeclarativePathViewPrivate::fixOffset()
{
Q_Q(QDeclarativePathView);
if (model && items.count()) {
- int curr = calcCurrentIndex();
- if (curr != currentIndex)
- q->setCurrentIndex(curr);
- else
- snapToCurrent();
+ if (haveHighlightRange && highlightRangeMode == QDeclarativePathView::StrictlyEnforceRange) {
+ int curr = calcCurrentIndex();
+ if (curr != currentIndex)
+ q->setCurrentIndex(curr);
+ else
+ snapToCurrent();
+ }
}
}
@@ -1002,57 +1310,26 @@ void QDeclarativePathViewPrivate::snapToCurrent()
if (!model || model->count() <= 0)
return;
- int itemIndex = (currentIndex - firstIndex + model->count()) % model->count();
-
- //Rounds is the number of times round to make the current item visible
- int rounds = itemIndex / items.count();
- int otherWayRounds = (model->count() - (itemIndex)) / items.count();
- if (otherWayRounds < rounds)
- rounds = -otherWayRounds;
-
- itemIndex += pathOffset;
- if(model->count() % items.count() && itemIndex - model->count() + items.count() > 0){
- //When model.count() is not a multiple of pathItemCount we need to manually
- //fix the index so that going backwards one step works correctly.
- itemIndex = itemIndex - model->count() + items.count();
- }
- itemIndex %= items.count();
- qreal targetOffset = qmlMod(1.0 + snapPos - qreal(itemIndex) / items.count(), qreal(1.0));
-
- if (targetOffset < 0)
- targetOffset = 1.0 + targetOffset;
- if (targetOffset == _offset && rounds == 0)
- return;
+ qreal targetOffset = model->count() - currentIndex;
moveReason = Other;
- tl.clear();
- moveOffset.setValue(_offset);
-
- if (rounds!=0){
- //Compensate if the targetOffset would bring the target in from off the screen
- qreal distance = targetOffset - _offset;
- if (distance <= -0.5)
- rounds--;
- if (distance > 0.5)
- rounds++;
- tl.move(moveOffset, targetOffset -rounds, QEasingCurve(QEasingCurve::InOutQuad),
- int(items.count()*qMax((qreal)(2.0/items.count()),(qreal)qAbs(rounds))));
- tl.callback(QDeclarativeTimeLineCallback(&moveOffset, fixOffsetCallback, this));
- return;
- }
-
- if (targetOffset - _offset > 0.5) {
- qreal distance = 1 - targetOffset + _offset;
- tl.move(moveOffset, 0.0, QEasingCurve(QEasingCurve::OutQuad), int(200 * _offset / distance));
- tl.set(moveOffset, 1.0);
- tl.move(moveOffset, targetOffset, QEasingCurve(QEasingCurve::InQuad), int(200 * (1.0-targetOffset) / distance));
- } else if (targetOffset - _offset <= -0.5) {
- qreal distance = 1 - _offset + targetOffset;
- tl.move(moveOffset, 1.0, QEasingCurve(QEasingCurve::OutQuad), int(200 * (1.0-_offset) / distance));
+ tl.reset(moveOffset);
+ moveOffset.setValue(offset);
+
+ const int duration = 300;
+
+ if (targetOffset - offset > model->count()/2) {
+ qreal distance = model->count() - targetOffset + offset;
+ tl.move(moveOffset, 0.0, QEasingCurve(QEasingCurve::InQuad), int(duration * offset / distance));
+ tl.set(moveOffset, model->count());
+ tl.move(moveOffset, targetOffset, QEasingCurve(QEasingCurve::OutQuad), int(duration * (model->count()-targetOffset) / distance));
+ } else if (targetOffset - offset <= -model->count()/2) {
+ qreal distance = model->count() - offset + targetOffset;
+ tl.move(moveOffset, model->count(), QEasingCurve(QEasingCurve::InQuad), int(duration * (model->count()-offset) / distance));
tl.set(moveOffset, 0.0);
- tl.move(moveOffset, targetOffset, QEasingCurve(QEasingCurve::InQuad), int(200 * targetOffset / distance));
+ tl.move(moveOffset, targetOffset, QEasingCurve(QEasingCurve::OutQuad), int(duration * targetOffset / distance));
} else {
- tl.move(moveOffset, targetOffset, QEasingCurve(QEasingCurve::InOutQuad), 200);
+ tl.move(moveOffset, targetOffset, QEasingCurve(QEasingCurve::InOutQuad), duration);
}
}
diff --git a/src/declarative/graphicsitems/qdeclarativepathview_p.h b/src/declarative/graphicsitems/qdeclarativepathview_p.h
index 6dbd044..69770cd 100644
--- a/src/declarative/graphicsitems/qdeclarativepathview_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepathview_p.h
@@ -43,7 +43,7 @@
#define QDECLARATIVEPATHVIEW_H
#include "qdeclarativeitem.h"
-#include "qdeclarativepath_p.h"
+#include "private/qdeclarativepath_p.h"
QT_BEGIN_HEADER
@@ -61,12 +61,24 @@ class Q_DECLARATIVE_EXPORT QDeclarativePathView : public QDeclarativeItem
Q_PROPERTY(QDeclarativePath *path READ path WRITE setPath NOTIFY pathChanged)
Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged)
Q_PROPERTY(qreal offset READ offset WRITE setOffset NOTIFY offsetChanged)
- Q_PROPERTY(qreal snapPosition READ snapPosition WRITE setSnapPosition NOTIFY snapPositionChanged)
+
+ Q_PROPERTY(QDeclarativeComponent *highlight READ highlight WRITE setHighlight NOTIFY highlightChanged)
+ Q_PROPERTY(QDeclarativeItem *highlightItem READ highlightItem NOTIFY highlightItemChanged)
+
+ Q_PROPERTY(qreal preferredHighlightBegin READ preferredHighlightBegin WRITE setPreferredHighlightBegin NOTIFY preferredHighlightBeginChanged)
+ Q_PROPERTY(qreal preferredHighlightEnd READ preferredHighlightEnd WRITE setPreferredHighlightEnd NOTIFY preferredHighlightEndChanged)
+ Q_PROPERTY(HighlightRangeMode highlightRangeMode READ highlightRangeMode WRITE setHighlightRangeMode NOTIFY highlightRangeModeChanged)
+
Q_PROPERTY(qreal dragMargin READ dragMargin WRITE setDragMargin NOTIFY dragMarginChanged)
- Q_PROPERTY(int count READ count)
+ Q_PROPERTY(qreal flickDeceleration READ flickDeceleration WRITE setFlickDeceleration NOTIFY flickDecelerationChanged)
+ Q_PROPERTY(bool interactive READ isInteractive WRITE setInteractive NOTIFY interactiveChanged)
+
+ Q_PROPERTY(int count READ count NOTIFY countChanged)
Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged)
Q_PROPERTY(int pathItemCount READ pathItemCount WRITE setPathItemCount NOTIFY pathItemCountChanged)
+ Q_ENUMS(HighlightRangeMode)
+
public:
QDeclarativePathView(QDeclarativeItem *parent=0);
virtual ~QDeclarativePathView();
@@ -83,12 +95,29 @@ public:
qreal offset() const;
void setOffset(qreal offset);
- qreal snapPosition() const;
- void setSnapPosition(qreal pos);
+ QDeclarativeComponent *highlight() const;
+ void setHighlight(QDeclarativeComponent *highlight);
+ QDeclarativeItem *highlightItem();
+
+ enum HighlightRangeMode { NoHighlightRange, ApplyRange, StrictlyEnforceRange };
+ HighlightRangeMode highlightRangeMode() const;
+ void setHighlightRangeMode(HighlightRangeMode mode);
+
+ qreal preferredHighlightBegin() const;
+ void setPreferredHighlightBegin(qreal);
+
+ qreal preferredHighlightEnd() const;
+ void setPreferredHighlightEnd(qreal);
qreal dragMargin() const;
void setDragMargin(qreal margin);
+ qreal flickDeceleration() const;
+ void setFlickDeceleration(qreal dec);
+
+ bool isInteractive() const;
+ void setInteractive(bool);
+
int count() const;
QDeclarativeComponent *delegate() const;
@@ -103,11 +132,19 @@ Q_SIGNALS:
void currentIndexChanged();
void offsetChanged();
void modelChanged();
+ void countChanged();
void pathChanged();
+ void preferredHighlightBeginChanged();
+ void preferredHighlightEndChanged();
+ void highlightRangeModeChanged();
void dragMarginChanged();
void snapPositionChanged();
void delegateChanged();
void pathItemCountChanged();
+ void flickDecelerationChanged();
+ void interactiveChanged();
+ void highlightChanged();
+ void highlightItemChanged();
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event);
@@ -122,6 +159,7 @@ private Q_SLOTS:
void ticked();
void itemsInserted(int index, int count);
void itemsRemoved(int index, int count);
+ void itemsMoved(int,int,int);
void modelReset();
void createdItem(int index, QDeclarativeItem *item);
void destroyingItem(QDeclarativeItem *item);
diff --git a/src/declarative/graphicsitems/qdeclarativepathview_p_p.h b/src/declarative/graphicsitems/qdeclarativepathview_p_p.h
index 62f7d95..11712fd 100644
--- a/src/declarative/graphicsitems/qdeclarativepathview_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepathview_p_p.h
@@ -53,10 +53,10 @@
// We mean it.
//
-#include "qdeclarativepathview_p.h"
+#include "private/qdeclarativepathview_p.h"
-#include "qdeclarativeitem_p.h"
-#include "qdeclarativevisualitemmodel_p.h"
+#include "private/qdeclarativeitem_p.h"
+#include "private/qdeclarativevisualitemmodel_p.h"
#include <qdeclarative.h>
#include <qdeclarativeanimation_p_p.h>
@@ -74,18 +74,25 @@ class QDeclarativePathViewPrivate : public QDeclarativeItemPrivate
public:
QDeclarativePathViewPrivate()
- : path(0), currentIndex(0), startPc(0), lastDist(0)
- , lastElapsed(0), stealMouse(false), ownModel(false), activeItem(0)
- , snapPos(0), dragMargin(0), moveOffset(this, &QDeclarativePathViewPrivate::setOffset)
- , firstIndex(0), pathItems(-1), pathOffset(0), requestedIndex(-1)
- , moveReason(Other), attType(0)
+ : path(0), currentIndex(0), currentItemOffset(0.0), startPc(0), lastDist(0)
+ , lastElapsed(0), mappedRange(1.0)
+ , stealMouse(false), ownModel(false), interactive(true), haveHighlightRange(true)
+ , autoHighlight(true), highlightUp(false), dragMargin(0), deceleration(100)
+ , moveOffset(this, &QDeclarativePathViewPrivate::setOffset)
+ , firstIndex(-1), pathItems(-1), requestedIndex(-1)
+ , moveReason(Other), attType(0), highlightComponent(0), highlightItem(0)
+ , moveHighlight(this, &QDeclarativePathViewPrivate::setHighlightPosition)
+ , highlightPosition(0)
+ , highlightRangeStart(0), highlightRangeEnd(0)
+ , highlightRangeMode(QDeclarativePathView::StrictlyEnforceRange)
+ , highlightMoveSpeed(1.0)
{
}
void init()
{
Q_Q(QDeclarativePathView);
- _offset = 0;
+ offset = 0;
q->setAcceptedMouseButtons(Qt::LeftButton);
q->setFlag(QGraphicsItem::ItemIsFocusScope);
q->setFiltersChildEvents(true);
@@ -96,7 +103,11 @@ public:
void releaseItem(QDeclarativeItem *item);
QDeclarativePathViewAttached *attached(QDeclarativeItem *item);
void clear();
-
+ void updateMappedRange();
+ qreal positionOfIndex(qreal index) const;
+ void createHighlight();
+ void updateHighlight();
+ void setHighlightPosition(qreal pos);
bool isValid() const {
return model && model->count() > 0 && model->isValid() && path;
}
@@ -113,30 +124,43 @@ public:
QDeclarativePath *path;
int currentIndex;
+ QDeclarativeGuard<QDeclarativeItem> currentItem;
+ qreal currentItemOffset;
qreal startPc;
QPointF startPoint;
qreal lastDist;
int lastElapsed;
- qreal _offset;
+ qreal offset;
+ qreal mappedRange;
bool stealMouse : 1;
bool ownModel : 1;
+ bool interactive : 1;
+ bool haveHighlightRange : 1;
+ bool autoHighlight : 1;
+ bool highlightUp : 1;
QTime lastPosTime;
QPointF lastPos;
- QDeclarativeItem *activeItem;
- qreal snapPos;
qreal dragMargin;
+ qreal deceleration;
QDeclarativeTimeLine tl;
QDeclarativeTimeLineValueProxy<QDeclarativePathViewPrivate> moveOffset;
int firstIndex;
int pathItems;
- int pathOffset;
int requestedIndex;
QList<QDeclarativeItem *> items;
QDeclarativeGuard<QDeclarativeVisualModel> model;
QVariant modelVariant;
- enum MovementReason { Other, Key, Mouse };
+ enum MovementReason { Other, SetIndex, Mouse };
MovementReason moveReason;
QDeclarativeOpenMetaObjectType *attType;
+ QDeclarativeComponent *highlightComponent;
+ QDeclarativeItem *highlightItem;
+ QDeclarativeTimeLineValueProxy<QDeclarativePathViewPrivate> moveHighlight;
+ qreal highlightPosition;
+ qreal highlightRangeStart;
+ qreal highlightRangeEnd;
+ QDeclarativePathView::HighlightRangeMode highlightRangeMode;
+ qreal highlightMoveSpeed;
};
QT_END_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativepositioners.cpp b/src/declarative/graphicsitems/qdeclarativepositioners.cpp
index 7a0d33a..d33a8be 100644
--- a/src/declarative/graphicsitems/qdeclarativepositioners.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepositioners.cpp
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#include "qdeclarativepositioners_p.h"
-#include "qdeclarativepositioners_p_p.h"
+#include "private/qdeclarativepositioners_p.h"
+#include "private/qdeclarativepositioners_p_p.h"
#include <qdeclarative.h>
#include <qdeclarativestate_p.h>
@@ -237,21 +237,13 @@ void QDeclarativeBasePositioner::prePositioning()
positionedItems.append(*item);
}
}
- doPositioning();
+ QSizeF contentSize;
+ doPositioning(&contentSize);
if(d->addTransition || d->moveTransition)
finishApplyTransitions();
//Set implicit size to the size of its children
- qreal h = 0.0f;
- qreal w = 0.0f;
- for (int i = 0; i < positionedItems.count(); ++i) {
- const PositionedItem &posItem = positionedItems.at(i);
- if (posItem.isVisible) {
- h = qMax(h, posItem.item->y() + posItem.item->height());
- w = qMax(w, posItem.item->x() + posItem.item->width());
- }
- }
- setImplicitHeight(h);
- setImplicitWidth(w);
+ setImplicitHeight(contentSize.height());
+ setImplicitWidth(contentSize.width());
}
void QDeclarativeBasePositioner::positionX(int x, const PositionedItem &target)
@@ -423,7 +415,7 @@ static inline bool isInvisible(QDeclarativeItem *child)
return child->opacity() == 0.0 || !child->isVisible() || !child->width() || !child->height();
}
-void QDeclarativeColumn::doPositioning()
+void QDeclarativeColumn::doPositioning(QSizeF *contentSize)
{
int voffset = 0;
@@ -435,9 +427,13 @@ void QDeclarativeColumn::doPositioning()
if(child.item->y() != voffset)
positionY(voffset, child);
+ contentSize->setWidth(qMax(contentSize->width(), child.item->width()));
+
voffset += child.item->height();
voffset += spacing();
}
+
+ contentSize->setHeight(voffset - spacing());
}
/*!
@@ -534,7 +530,7 @@ QDeclarativeRow::QDeclarativeRow(QDeclarativeItem *parent)
{
}
-void QDeclarativeRow::doPositioning()
+void QDeclarativeRow::doPositioning(QSizeF *contentSize)
{
int hoffset = 0;
@@ -546,9 +542,13 @@ void QDeclarativeRow::doPositioning()
if(child.item->x() != hoffset)
positionX(hoffset, child);
+ contentSize->setHeight(qMax(contentSize->height(), child.item->height()));
+
hoffset += child.item->width();
hoffset += spacing();
}
+
+ contentSize->setWidth(hoffset - spacing());
}
@@ -602,7 +602,9 @@ Grid {
\qmlproperty Transition Grid::add
This property holds the transition to apply when adding an item to the positioner.
The transition is only applied to the added item(s).
- Positioner transitions will only affect the position (x,y) of items.
+ Positioner transitions will only affect the position (x,y) of items,
+ as that is all the positioners affect. To animate other property change
+ you will have to do so based on how you have changed those properties.
Added can mean that either the object has been created or
reparented, and thus is now a child or the positioner, or that the
@@ -696,7 +698,7 @@ void QDeclarativeGrid::setRows(const int rows)
emit rowsChanged();
}
-void QDeclarativeGrid::doPositioning()
+void QDeclarativeGrid::doPositioning(QSizeF *contentSize)
{
int c=_columns,r=_rows;//Actual number of rows/columns
int numVisible = positionedItems.count();
@@ -743,6 +745,10 @@ void QDeclarativeGrid::doPositioning()
positionX(xoffset, child);
positionY(yoffset, child);
}
+
+ contentSize->setWidth(qMax(contentSize->width(), xoffset + child.item->width()));
+ contentSize->setHeight(yoffset + maxRowHeight[curRow]);
+
xoffset+=maxColWidth[curCol]+spacing();
curCol++;
curCol%=c;
@@ -818,6 +824,9 @@ public:
QDeclarativeFlow::QDeclarativeFlow(QDeclarativeItem *parent)
: QDeclarativeBasePositioner(*(new QDeclarativeFlowPrivate), Both, parent)
{
+ Q_D(QDeclarativeFlow);
+ // Flow layout requires relayout if its own size changes too.
+ d->addItemChangeListener(d, QDeclarativeItemPrivate::Geometry);
}
/*!
@@ -849,7 +858,7 @@ void QDeclarativeFlow::setFlow(Flow flow)
}
}
-void QDeclarativeFlow::doPositioning()
+void QDeclarativeFlow::doPositioning(QSizeF *contentSize)
{
Q_D(QDeclarativeFlow);
@@ -881,6 +890,9 @@ void QDeclarativeFlow::doPositioning()
positionY(voffset, child);
}
+ contentSize->setWidth(qMax(contentSize->width(), hoffset + child.item->width()));
+ contentSize->setHeight(qMax(contentSize->height(), voffset + child.item->height()));
+
if (d->flow == LeftToRight) {
hoffset += child.item->width();
hoffset += spacing();
diff --git a/src/declarative/graphicsitems/qdeclarativepositioners_p.h b/src/declarative/graphicsitems/qdeclarativepositioners_p.h
index f38847c..c4414d1 100644
--- a/src/declarative/graphicsitems/qdeclarativepositioners_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepositioners_p.h
@@ -90,10 +90,10 @@ Q_SIGNALS:
void addChanged();
protected Q_SLOTS:
- virtual void doPositioning()=0;
void prePositioning();
protected:
+ virtual void doPositioning(QSizeF *contentSize)=0;
struct PositionedItem {
PositionedItem(QDeclarativeItem *i) : item(i), isNew(false), isVisible(true) {}
bool operator==(const PositionedItem &other) const { return other.item == item; }
@@ -116,8 +116,8 @@ class Q_DECLARATIVE_EXPORT QDeclarativeColumn : public QDeclarativeBasePositione
Q_OBJECT
public:
QDeclarativeColumn(QDeclarativeItem *parent=0);
-protected Q_SLOTS:
- virtual void doPositioning();
+protected:
+ virtual void doPositioning(QSizeF *contentSize);
private:
Q_DISABLE_COPY(QDeclarativeColumn)
};
@@ -127,8 +127,8 @@ class Q_DECLARATIVE_EXPORT QDeclarativeRow: public QDeclarativeBasePositioner
Q_OBJECT
public:
QDeclarativeRow(QDeclarativeItem *parent=0);
-protected Q_SLOTS:
- virtual void doPositioning();
+protected:
+ virtual void doPositioning(QSizeF *contentSize);
private:
Q_DISABLE_COPY(QDeclarativeRow)
};
@@ -151,8 +151,8 @@ Q_SIGNALS:
void rowsChanged();
void columnsChanged();
-protected Q_SLOTS:
- virtual void doPositioning();
+protected:
+ virtual void doPositioning(QSizeF *contentSize);
private:
int _rows;
@@ -176,8 +176,8 @@ public:
Q_SIGNALS:
void flowChanged();
-protected Q_SLOTS:
- virtual void doPositioning();
+protected:
+ virtual void doPositioning(QSizeF *contentSize);
protected:
QDeclarativeFlow(QDeclarativeFlowPrivate &dd, QDeclarativeItem *parent);
diff --git a/src/declarative/graphicsitems/qdeclarativepositioners_p_p.h b/src/declarative/graphicsitems/qdeclarativepositioners_p_p.h
index 3a1edee..576f35b 100644
--- a/src/declarative/graphicsitems/qdeclarativepositioners_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepositioners_p_p.h
@@ -53,9 +53,9 @@
// We mean it.
//
-#include "qdeclarativepositioners_p.h"
+#include "private/qdeclarativepositioners_p.h"
-#include "qdeclarativeitem_p.h"
+#include "private/qdeclarativeitem_p.h"
#include <qdeclarativestate_p.h>
#include <qdeclarativetransitionmanager_p_p.h>
@@ -73,8 +73,8 @@ class QDeclarativeBasePositionerPrivate : public QDeclarativeItemPrivate, public
public:
QDeclarativeBasePositionerPrivate()
- : spacing(0), type(QDeclarativeBasePositioner::None), moveTransition(0), addTransition(0),
- queuedPositioning(false)
+ : spacing(0), type(QDeclarativeBasePositioner::None)
+ , moveTransition(0), addTransition(0), queuedPositioning(false)
{
}
@@ -84,6 +84,7 @@ public:
}
int spacing;
+
QDeclarativeBasePositioner::PositionerType type;
QDeclarativeTransition *moveTransition;
QDeclarativeTransition *addTransition;
diff --git a/src/declarative/graphicsitems/qdeclarativerectangle.cpp b/src/declarative/graphicsitems/qdeclarativerectangle.cpp
index 207d05e..3f7548f 100644
--- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp
+++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#include "qdeclarativerectangle_p.h"
-#include "qdeclarativerectangle_p_p.h"
+#include "private/qdeclarativerectangle_p.h"
+#include "private/qdeclarativerectangle_p_p.h"
#include <QPainter>
#include <QtCore/qmath.h>
@@ -228,13 +228,12 @@ QDeclarativePen *QDeclarativeRectangle::border()
GradientStop { position: 1.0; color: "blue" }
}
}
- Rectangle { rotation: 90; x: 80; y: 200; width: 80; height: 80
+ Rectangle { rotation: 90; y: 200; width: 80; height: 80
gradient: Gradient {
GradientStop { position: 0.0; color: "lightsteelblue" }
GradientStop { position: 1.0; color: "blue" }
}
}
- // The x offset is needed because the rotation is from the top left corner
\endqml
\endtable
@@ -470,7 +469,7 @@ void QDeclarativeRectangle::drawRect(QPainter &p)
QRectF QDeclarativeRectangle::boundingRect() const
{
Q_D(const QDeclarativeRectangle);
- return QRectF(-d->paintmargin, -d->paintmargin, d->width+d->paintmargin*2, d->height+d->paintmargin*2);
+ return QRectF(-d->paintmargin, -d->paintmargin, d->width()+d->paintmargin*2, d->height()+d->paintmargin*2);
}
QT_END_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativerectangle_p_p.h b/src/declarative/graphicsitems/qdeclarativerectangle_p_p.h
index 6bae219..84418bc 100644
--- a/src/declarative/graphicsitems/qdeclarativerectangle_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativerectangle_p_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include "qdeclarativeitem_p.h"
+#include "private/qdeclarativeitem_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/graphicsitems/qdeclarativerepeater.cpp b/src/declarative/graphicsitems/qdeclarativerepeater.cpp
index e8f9b24..e836788 100644
--- a/src/declarative/graphicsitems/qdeclarativerepeater.cpp
+++ b/src/declarative/graphicsitems/qdeclarativerepeater.cpp
@@ -39,11 +39,11 @@
**
****************************************************************************/
-#include "qdeclarativerepeater_p.h"
-#include "qdeclarativerepeater_p_p.h"
-
-#include "qdeclarativevisualitemmodel_p.h"
+#include "private/qdeclarativerepeater_p.h"
+#include "private/qdeclarativerepeater_p_p.h"
+#include "private/qdeclarativevisualitemmodel_p.h"
+#include <private/qdeclarativeglobal_p.h>
#include <qdeclarativelistaccessor_p.h>
#include <qlistmodelinterface_p.h>
@@ -283,7 +283,6 @@ void QDeclarativeRepeater::clear()
Q_D(QDeclarativeRepeater);
if (d->model) {
foreach (QDeclarativeItem *item, d->deletables) {
- item->setParentItem(this);
d->model->release(item);
}
}
@@ -307,7 +306,8 @@ void QDeclarativeRepeater::regenerate()
for (int ii = 0; ii < count(); ++ii) {
QDeclarativeItem *item = d->model->item(ii);
if (item) {
- item->setParent(parentItem());
+ QDeclarative_setParent_noEvent(item, parentItem());
+ item->setParentItem(parentItem());
item->stackBefore(this);
d->deletables << item;
}
@@ -323,7 +323,8 @@ void QDeclarativeRepeater::itemsInserted(int index, int count)
int modelIndex = index + i;
QDeclarativeItem *item = d->model->item(modelIndex);
if (item) {
- item->setParent(parentItem());
+ QDeclarative_setParent_noEvent(item, parentItem());
+ item->setParentItem(parentItem());
if (modelIndex < d->deletables.count())
item->stackBefore(d->deletables.at(modelIndex));
else
@@ -341,7 +342,6 @@ void QDeclarativeRepeater::itemsRemoved(int index, int count)
while (count--) {
QDeclarativeItem *item = d->deletables.takeAt(index);
if (item) {
- item->setParentItem(this);
d->model->release(item);
}
}
diff --git a/src/declarative/graphicsitems/qdeclarativerepeater_p_p.h b/src/declarative/graphicsitems/qdeclarativerepeater_p_p.h
index 11773ff..5b75e50 100644
--- a/src/declarative/graphicsitems/qdeclarativerepeater_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativerepeater_p_p.h
@@ -53,9 +53,9 @@
// We mean it.
//
-#include "qdeclarativerepeater_p.h"
+#include "private/qdeclarativerepeater_p.h"
-#include "qdeclarativeitem_p.h"
+#include "private/qdeclarativeitem_p.h"
#include <QPointer>
diff --git a/src/declarative/graphicsitems/qdeclarativescalegrid.cpp b/src/declarative/graphicsitems/qdeclarativescalegrid.cpp
index dbc7568..e68f645 100644
--- a/src/declarative/graphicsitems/qdeclarativescalegrid.cpp
+++ b/src/declarative/graphicsitems/qdeclarativescalegrid.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativescalegrid_p_p.h"
+#include "private/qdeclarativescalegrid_p_p.h"
#include <qdeclarative.h>
diff --git a/src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h b/src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h
index fbf9040..42813dd 100644
--- a/src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h
@@ -42,7 +42,7 @@
#ifndef QDECLARATIVESCALEGRID_H
#define QDECLARATIVESCALEGRID_H
-#include "qdeclarativeborderimage_p.h"
+#include "private/qdeclarativeborderimage_p.h"
#include <private/qdeclarativepixmapcache_p.h>
#include <qdeclarative.h>
diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp
index b0b5f6d..a4f3068 100644
--- a/src/declarative/graphicsitems/qdeclarativetext.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetext.cpp
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#include "qdeclarativetext_p.h"
-#include "qdeclarativetext_p_p.h"
+#include "private/qdeclarativetext_p.h"
+#include "private/qdeclarativetext_p_p.h"
#include <qdeclarativestyledtext_p.h>
#include <QTextLayout>
diff --git a/src/declarative/graphicsitems/qdeclarativetext_p_p.h b/src/declarative/graphicsitems/qdeclarativetext_p_p.h
index 0d9a0a6..85a65ce 100644
--- a/src/declarative/graphicsitems/qdeclarativetext_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetext_p_p.h
@@ -54,7 +54,7 @@
//
#include "qdeclarativeitem.h"
-#include "qdeclarativeitem_p.h"
+#include "private/qdeclarativeitem_p.h"
#include <qdeclarative.h>
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
index 7dacfbb..7374bc8 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
@@ -39,10 +39,11 @@
**
****************************************************************************/
-#include "qdeclarativetextedit_p.h"
-#include "qdeclarativetextedit_p_p.h"
+#include "private/qdeclarativetextedit_p.h"
+#include "private/qdeclarativetextedit_p_p.h"
-#include "qdeclarativeevents_p_p.h"
+#include "private/qdeclarativeevents_p_p.h"
+#include <private/qdeclarativeglobal_p.h>
#include <QTextLayout>
#include <QTextLine>
@@ -485,6 +486,7 @@ void QDeclarativeTextEdit::loadCursorDelegate()
this, SLOT(moveCursorDelegate()));
d->control->setCursorWidth(0);
dirtyCache(cursorRect());
+ QDeclarative_setParent_noEvent(d->cursor, this);
d->cursor->setParentItem(this);
d->cursor->setHeight(QFontMetrics(d->font).height());
moveCursorDelegate();
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit_p.h b/src/declarative/graphicsitems/qdeclarativetextedit_p.h
index b1682c4..0e91e73 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextedit_p.h
@@ -42,8 +42,8 @@
#ifndef QDECLARATIVETEXTEDIT_H
#define QDECLARATIVETEXTEDIT_H
-#include "qdeclarativetext_p.h"
-#include "qdeclarativepainteditem_p.h"
+#include "private/qdeclarativetext_p.h"
+#include "private/qdeclarativepainteditem_p.h"
#include <QtGui/qtextdocument.h>
#include <QtGui/qtextoption.h>
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h b/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
index dd2a29d..310db48 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
@@ -54,7 +54,7 @@
//
#include "qdeclarativeitem.h"
-#include "qdeclarativepainteditem_p_p.h"
+#include "private/qdeclarativepainteditem_p_p.h"
#include <qdeclarative.h>
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
index b049728..29e43f9 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
@@ -39,9 +39,10 @@
**
****************************************************************************/
-#include "qdeclarativetextinput_p.h"
-#include "qdeclarativetextinput_p_p.h"
+#include "private/qdeclarativetextinput_p.h"
+#include "private/qdeclarativetextinput_p_p.h"
+#include <private/qdeclarativeglobal_p.h>
#include <qdeclarativeinfo.h>
#include <QValidator>
@@ -428,20 +429,21 @@ void QDeclarativeTextInput::setFocusOnPress(bool b)
}
/*!
- \qmlproperty QValidator* TextInput::validator
+ \qmlproperty Validator TextInput::validator
- Allows you to set a QValidator on the TextInput. When a validator is set
+ Allows you to set a validator on the TextInput. When a validator is set
the TextInput will only accept input which leaves the text property in
an acceptable or intermediate state. The accepted signal will only be sent
if the text is in an acceptable state when enter is pressed.
- Currently supported validators are QIntValidator, QDoubleValidator and
- QRegExpValidator. For details, refer to their C++ documentation and remember
+ Currently supported validators are IntValidator, DoubleValidator and
+ RegExpValidator. For details, refer to their C++ documentation (QIntValidator,
+ QDoubleValidator, and QRegExpValidator) and remember
that all Q_PROPERTIES are accessible from Qml. A brief usage guide follows:
- QIntValidator and QDoubleValidator both are controllable through two properties,
- top and bottom. The difference is that for QIntValidator the top and bottom properties
- should be integers, and for QDoubleValidator they should be doubles. QRegExpValidator
+ IntValidator and DoubleValidator both are controllable through two properties,
+ top and bottom. The difference is that for IntValidator the top and bottom properties
+ should be integers, and for DoubleValidator they should be doubles. RegExpValidator
has a single string property, regExp, which should be set to the regular expression to
be used for validation. An example of using validators is shown below, which allows
input of integers between 11 and 31 into the text input:
@@ -449,7 +451,7 @@ void QDeclarativeTextInput::setFocusOnPress(bool b)
\code
import Qt 4.6
TextInput{
- validator: QIntValidator{bottom: 11; top: 31;}
+ validator: IntValidator{bottom: 11; top: 31;}
focus: true
}
\endcode
@@ -618,6 +620,7 @@ void QDeclarativeTextInput::createCursor()
return;
}
+ QDeclarative_setParent_noEvent(d->cursorItem, this);
d->cursorItem->setParentItem(this);
d->cursorItem->setX(d->control->cursorToX());
d->cursorItem->setHeight(d->control->height());
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput_p.h b/src/declarative/graphicsitems/qdeclarativetextinput_p.h
index 6a61c2d..64aff7d 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextinput_p.h
@@ -42,8 +42,8 @@
#ifndef QDECLARATIVETEXTINPUT_H
#define QDECLARATIVETEXTINPUT_H
-#include "qdeclarativetext_p.h"
-#include "qdeclarativepainteditem_p.h"
+#include "private/qdeclarativetext_p.h"
+#include "private/qdeclarativepainteditem_p.h"
#include <QGraphicsSceneMouseEvent>
#include <QIntValidator>
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h b/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h
index 5d17a55..9e44b15 100644
--- a/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextinput_p_p.h
@@ -42,9 +42,9 @@
#ifndef QDECLARATIVETEXTINPUT_P_H
#define QDECLARATIVETEXTINPUT_P_H
-#include "qdeclarativetextinput_p.h"
+#include "private/qdeclarativetextinput_p.h"
-#include "qdeclarativepainteditem_p_p.h"
+#include "private/qdeclarativepainteditem_p_p.h"
#include <qdeclarative.h>
diff --git a/src/declarative/graphicsitems/qdeclarativetranslate.cpp b/src/declarative/graphicsitems/qdeclarativetranslate.cpp
new file mode 100644
index 0000000..17daac7
--- /dev/null
+++ b/src/declarative/graphicsitems/qdeclarativetranslate.cpp
@@ -0,0 +1,136 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 "private/qdeclarativetranslate_p.h"
+#include <private/qgraphicstransform_p.h>
+#include <QDebug>
+#include <QtCore/qmath.h>
+
+QT_BEGIN_NAMESPACE
+
+class QDeclarativeTranslatePrivate : public QGraphicsTransformPrivate
+{
+public:
+ QDeclarativeTranslatePrivate()
+ : x(0), y(0) {}
+ qreal x;
+ qreal y;
+};
+
+/*!
+ Constructs an empty QDeclarativeTranslate object with the given \a parent.
+*/
+QDeclarativeTranslate::QDeclarativeTranslate(QObject *parent)
+ : QGraphicsTransform(*new QDeclarativeTranslatePrivate, parent)
+{
+}
+
+/*!
+ Destroys the graphics scale.
+*/
+QDeclarativeTranslate::~QDeclarativeTranslate()
+{
+}
+
+/*!
+ \property QDeclarativeTranslate::x
+ \brief the horizontal translation.
+
+ The translation can be any real number; the default value is 0.0.
+
+ \sa y
+*/
+qreal QDeclarativeTranslate::x() const
+{
+ Q_D(const QDeclarativeTranslate);
+ return d->x;
+}
+void QDeclarativeTranslate::setX(qreal x)
+{
+ Q_D(QDeclarativeTranslate);
+ if (d->x == x)
+ return;
+ d->x = x;
+ update();
+ emit positionChanged();
+}
+
+/*!
+ \property QDeclarativeTranslate::y
+ \brief the vertical translation.
+
+ The translation can be any real number; the default value is 0.0.
+
+ \sa x
+*/
+qreal QDeclarativeTranslate::y() const
+{
+ Q_D(const QDeclarativeTranslate);
+ return d->y;
+}
+void QDeclarativeTranslate::setY(qreal y)
+{
+ Q_D(QDeclarativeTranslate);
+ if (d->y == y)
+ return;
+ d->y = y;
+ update();
+ emit positionChanged();
+}
+
+/*!
+ \reimp
+*/
+void QDeclarativeTranslate::applyTo(QMatrix4x4 *matrix) const
+{
+ Q_D(const QDeclarativeTranslate);
+ matrix->translate(d->x, d->y, 0);
+}
+
+/*!
+ \fn QDeclarativeTranslate::positionChanged()
+
+ QDeclarativeTranslate emits this signal when its position changes.
+
+ \sa QDeclarativeTranslate::x, QDeclarativeTranslate::y
+*/
+
+QT_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativescript.cpp b/src/declarative/graphicsitems/qdeclarativetranslate_p.h
index ac4b2c1..939692b 100644
--- a/src/declarative/qml/qdeclarativescript.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetranslate_p.h
@@ -39,50 +39,50 @@
**
****************************************************************************/
-// This is just a dummy file to include the documentation
-
-/*!
- \qmlclass Script QDeclarativeScript
- \since 4.7
- \brief The Script element provides a way to add JavaScript code snippets in QML.
- \ingroup group_utility
-
- The Script element is used to add convenient JavaScript "glue" methods to
- your Qt Declarative application or component.
-
- An example:
-
- \qml
- Script {
- function debugMyComponent() {
- console.log(text.text);
- console.log(otherinterestingitem.property);
- }
- }
- MouseArea { onClicked: debugMyComponent() }
- \endqml
-
- \note While it is possible to use any JavaScript code within a Script element,
- it is recommended that the code be limited to defining functions. The Script
- element executes JavaScript as soon as it is specified, so
- when defining a component, this may be done before the execution context is
- fully specified. As a result, some properties or items may not be
- accessible. You can avoid this problem by limiting your JavaScript to
- defining functions that are only executed later once the context is fully
- defined.
-
- \sa {JavaScript Blocks}
-*/
-
-/*!
- \qmlproperty string Script::script
- \default
- The JavaScript code to be executed.
-*/
-
-/*!
- \qmlproperty url Script::source
-
- Specifies a source file containing JavaScript code. This can be used instead
- of providing inline JavaScript code in the Script element.
-*/
+#ifndef QDECLARATIVETRANSLATE_H
+#define QDECLARATIVETRANSLATE_H
+
+#include "qdeclarativeitem.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Declarative)
+
+class QDeclarativeTranslatePrivate;
+
+class Q_DECLARATIVE_EXPORT QDeclarativeTranslate : public QGraphicsTransform
+{
+ Q_OBJECT
+
+ Q_PROPERTY(qreal x READ x WRITE setX NOTIFY positionChanged)
+ Q_PROPERTY(qreal y READ y WRITE setY NOTIFY positionChanged)
+
+public:
+ QDeclarativeTranslate(QObject *parent = 0);
+ ~QDeclarativeTranslate();
+
+ qreal x() const;
+ void setX(qreal);
+
+ qreal y() const;
+ void setY(qreal);
+
+ void applyTo(QMatrix4x4 *matrix) const;
+
+Q_SIGNALS:
+ void positionChanged();
+
+private:
+ Q_DECLARE_PRIVATE(QDeclarativeTranslate)
+ Q_DISABLE_COPY(QDeclarativeTranslate)
+};
+
+QT_END_NAMESPACE
+
+QML_DECLARE_TYPE(QDeclarativeTranslate)
+
+QT_END_HEADER
+
+#endif
diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
index b31bbd0..2938f51 100644
--- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
+++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativevisualitemmodel_p.h"
+#include "private/qdeclarativevisualitemmodel_p.h"
#include "qdeclarativeitem.h"
diff --git a/src/declarative/qml/parser/qdeclarativejs.g b/src/declarative/qml/parser/qdeclarativejs.g
index 0256c52..ba9338e 100644
--- a/src/declarative/qml/parser/qdeclarativejs.g
+++ b/src/declarative/qml/parser/qdeclarativejs.g
@@ -127,10 +127,10 @@
#include <string.h>
-#include "qdeclarativejsengine_p.h"
-#include "qdeclarativejslexer_p.h"
-#include "qdeclarativejsast_p.h"
-#include "qdeclarativejsnodepool_p.h"
+#include "private/qdeclarativejsengine_p.h"
+#include "private/qdeclarativejslexer_p.h"
+#include "private/qdeclarativejsast_p.h"
+#include "private/qdeclarativejsnodepool_p.h"
./
@@ -195,10 +195,10 @@
#ifndef QDECLARATIVEJSPARSER_P_H
#define QDECLARATIVEJSPARSER_P_H
-#include "qdeclarativejsglobal_p.h"
-#include "qdeclarativejsgrammar_p.h"
-#include "qdeclarativejsast_p.h"
-#include "qdeclarativejsengine_p.h"
+#include "private/qdeclarativejsglobal_p.h"
+#include "private/qdeclarativejsgrammar_p.h"
+#include "private/qdeclarativejsast_p.h"
+#include "private/qdeclarativejsengine_p.h"
#include <QtCore/QList>
#include <QtCore/QString>
@@ -375,7 +375,7 @@ protected:
/.
-#include "qdeclarativejsparser_p.h"
+#include "private/qdeclarativejsparser_p.h"
#include <QVarLengthArray>
//
@@ -654,11 +654,6 @@ case $rule_number: {
node = makeAstNode<AST::UiImport>(driver->nodePool(), importIdLiteral->value);
node->fileNameToken = loc(2);
} else if (AST::UiQualifiedId *qualifiedId = reparseAsQualifiedId(sym(2).Expression)) {
- QString text;
- for (AST::UiQualifiedId *q = qualifiedId; q; q = q->next) {
- text += q->name->asString();
- if (q->next) text += QLatin1String(".");
- }
node = makeAstNode<AST::UiImport>(driver->nodePool(), qualifiedId);
node->fileNameToken = loc(2);
}
@@ -976,6 +971,56 @@ case $rule_number: {
} break;
./
+UiObjectMember: T_PROPERTY T_IDENTIFIER T_LT UiPropertyType T_GT JsIdentifier T_COLON T_LBRACKET UiArrayMemberList T_RBRACKET ;
+/.
+case $rule_number: {
+ AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(4).sval, sym(6).sval);
+ node->typeModifier = sym(2).sval;
+ node->propertyToken = loc(1);
+ node->typeModifierToken = loc(2);
+ node->typeToken = loc(4);
+ node->identifierToken = loc(6);
+ node->semicolonToken = loc(7); // insert a fake ';' before ':'
+
+ AST::UiQualifiedId *propertyName = makeAstNode<AST::UiQualifiedId>(driver->nodePool(), sym(6).sval);
+ propertyName->identifierToken = loc(6);
+ propertyName->next = 0;
+
+ AST::UiArrayBinding *binding = makeAstNode<AST::UiArrayBinding> (driver->nodePool(),
+ propertyName, sym(9).UiArrayMemberList->finish());
+ binding->colonToken = loc(7);
+ binding->lbracketToken = loc(8);
+ binding->rbracketToken = loc(10);
+
+ node->binding = binding;
+
+ sym(1).Node = node;
+} break;
+./
+
+UiObjectMember: T_PROPERTY UiPropertyType JsIdentifier T_COLON UiQualifiedId UiObjectInitializer ;
+/.
+case $rule_number: {
+ AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval);
+ node->propertyToken = loc(1);
+ node->typeToken = loc(2);
+ node->identifierToken = loc(3);
+ node->semicolonToken = loc(4); // insert a fake ';' before ':'
+
+ AST::UiQualifiedId *propertyName = makeAstNode<AST::UiQualifiedId>(driver->nodePool(), sym(3).sval);
+ propertyName->identifierToken = loc(3);
+ propertyName->next = 0;
+
+ AST::UiObjectBinding *binding = makeAstNode<AST::UiObjectBinding> (driver->nodePool(),
+ propertyName, sym(5).UiQualifiedId, sym(6).UiObjectInitializer);
+ binding->colonToken = loc(4);
+
+ node->binding = binding;
+
+ sym(1).Node = node;
+} break;
+./
+
UiObjectMember: FunctionDeclaration ;
/.
case $rule_number: {
@@ -1109,6 +1154,9 @@ case $rule_number: {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage()));
return false; // ### remove me
}
+
+ loc(1).length = lexer->tokenLength();
+
AST::RegExpLiteral *node = makeAstNode<AST::RegExpLiteral> (driver->nodePool(), lexer->pattern, lexer->flags);
node->literalToken = loc(1);
sym(1).Node = node;
@@ -1126,6 +1174,9 @@ case $rule_number: {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage()));
return false;
}
+
+ loc(1).length = lexer->tokenLength();
+
AST::RegExpLiteral *node = makeAstNode<AST::RegExpLiteral> (driver->nodePool(), lexer->pattern, lexer->flags);
node->literalToken = loc(1);
sym(1).Node = node;
diff --git a/src/declarative/qml/parser/qdeclarativejsast.cpp b/src/declarative/qml/parser/qdeclarativejsast.cpp
index 3b569a7..000ef86 100644
--- a/src/declarative/qml/parser/qdeclarativejsast.cpp
+++ b/src/declarative/qml/parser/qdeclarativejsast.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativejsast_p.h"
+#include "private/qdeclarativejsast_p.h"
-#include "qdeclarativejsastvisitor_p.h"
+#include "private/qdeclarativejsastvisitor_p.h"
QT_QML_BEGIN_NAMESPACE
@@ -837,6 +837,7 @@ void UiPublicMember::accept0(Visitor *visitor)
{
if (visitor->visit(this)) {
accept(expression, visitor);
+ accept(binding, visitor);
}
visitor->endVisit(this);
diff --git a/src/declarative/qml/parser/qdeclarativejsast_p.h b/src/declarative/qml/parser/qdeclarativejsast_p.h
index c1945ce..0623a2a 100644
--- a/src/declarative/qml/parser/qdeclarativejsast_p.h
+++ b/src/declarative/qml/parser/qdeclarativejsast_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include "qdeclarativejsastvisitor_p.h"
-#include "qdeclarativejsglobal_p.h"
+#include "private/qdeclarativejsastvisitor_p.h"
+#include "private/qdeclarativejsglobal_p.h"
#include <QtCore/QString>
@@ -2485,13 +2485,13 @@ public:
UiPublicMember(NameId *memberType,
NameId *name)
- : type(Property), typeModifier(0), memberType(memberType), name(name), expression(0), isDefaultMember(false), isReadonlyMember(false), parameters(0)
+ : type(Property), typeModifier(0), memberType(memberType), name(name), expression(0), binding(0), isDefaultMember(false), isReadonlyMember(false), parameters(0)
{ kind = K; }
UiPublicMember(NameId *memberType,
NameId *name,
ExpressionNode *expression)
- : type(Property), typeModifier(0), memberType(memberType), name(name), expression(expression), isDefaultMember(false), isReadonlyMember(false), parameters(0)
+ : type(Property), typeModifier(0), memberType(memberType), name(name), expression(expression), binding(0), isDefaultMember(false), isReadonlyMember(false), parameters(0)
{ kind = K; }
virtual SourceLocation firstSourceLocation() const
@@ -2506,6 +2506,9 @@ public:
virtual SourceLocation lastSourceLocation() const
{
+ if (binding)
+ return binding->lastSourceLocation();
+
return semicolonToken;
}
@@ -2516,7 +2519,8 @@ public:
NameId *typeModifier;
NameId *memberType;
NameId *name;
- ExpressionNode *expression;
+ ExpressionNode *expression; // initialized with a JS expression
+ UiObjectMember *binding; // initialized with a QML object or array.
bool isDefaultMember;
bool isReadonlyMember;
UiParameterList *parameters;
diff --git a/src/declarative/qml/parser/qdeclarativejsastfwd_p.h b/src/declarative/qml/parser/qdeclarativejsastfwd_p.h
index 5a444b7..d04aba5 100644
--- a/src/declarative/qml/parser/qdeclarativejsastfwd_p.h
+++ b/src/declarative/qml/parser/qdeclarativejsastfwd_p.h
@@ -42,7 +42,7 @@
#ifndef QDECLARATIVEJSAST_FWD_P_H
#define QDECLARATIVEJSAST_FWD_P_H
-#include "qdeclarativejsglobal_p.h"
+#include "private/qdeclarativejsglobal_p.h"
#include <QtCore/qglobal.h>
diff --git a/src/declarative/qml/parser/qdeclarativejsastvisitor.cpp b/src/declarative/qml/parser/qdeclarativejsastvisitor.cpp
index d8002cf..d9a7be3 100644
--- a/src/declarative/qml/parser/qdeclarativejsastvisitor.cpp
+++ b/src/declarative/qml/parser/qdeclarativejsastvisitor.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativejsastvisitor_p.h"
+#include "private/qdeclarativejsastvisitor_p.h"
QT_QML_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/parser/qdeclarativejsastvisitor_p.h b/src/declarative/qml/parser/qdeclarativejsastvisitor_p.h
index 82abbcf..e1f45b4 100644
--- a/src/declarative/qml/parser/qdeclarativejsastvisitor_p.h
+++ b/src/declarative/qml/parser/qdeclarativejsastvisitor_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include "qdeclarativejsastfwd_p.h"
-#include "qdeclarativejsglobal_p.h"
+#include "private/qdeclarativejsastfwd_p.h"
+#include "private/qdeclarativejsglobal_p.h"
QT_QML_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/parser/qdeclarativejsengine_p.cpp b/src/declarative/qml/parser/qdeclarativejsengine_p.cpp
index 7d39134..0527b3c 100644
--- a/src/declarative/qml/parser/qdeclarativejsengine_p.cpp
+++ b/src/declarative/qml/parser/qdeclarativejsengine_p.cpp
@@ -39,10 +39,10 @@
**
****************************************************************************/
-#include "qdeclarativejsengine_p.h"
+#include "private/qdeclarativejsengine_p.h"
-#include "qdeclarativejsglobal_p.h"
-#include "qdeclarativejsnodepool_p.h"
+#include "private/qdeclarativejsglobal_p.h"
+#include "private/qdeclarativejsnodepool_p.h"
#include <qnumeric.h>
#include <QHash>
diff --git a/src/declarative/qml/parser/qdeclarativejsengine_p.h b/src/declarative/qml/parser/qdeclarativejsengine_p.h
index 61188f7..1389244 100644
--- a/src/declarative/qml/parser/qdeclarativejsengine_p.h
+++ b/src/declarative/qml/parser/qdeclarativejsengine_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include "qdeclarativejsglobal_p.h"
-#include "qdeclarativejsastfwd_p.h"
+#include "private/qdeclarativejsglobal_p.h"
+#include "private/qdeclarativejsastfwd_p.h"
#include <QString>
#include <QSet>
diff --git a/src/declarative/qml/parser/qdeclarativejsgrammar.cpp b/src/declarative/qml/parser/qdeclarativejsgrammar.cpp
index 89493ff..52e979a 100644
--- a/src/declarative/qml/parser/qdeclarativejsgrammar.cpp
+++ b/src/declarative/qml/parser/qdeclarativejsgrammar.cpp
@@ -40,7 +40,7 @@
****************************************************************************/
// This file was generated by qlalr - DO NOT EDIT!
-#include "qdeclarativejsgrammar_p.h"
+#include "private/qdeclarativejsgrammar_p.h"
QT_BEGIN_NAMESPACE
@@ -64,35 +64,35 @@ const short QDeclarativeJSGrammar::lhs [] = {
106, 106, 106, 106, 106, 106, 106, 106, 126, 126,
126, 127, 127, 128, 128, 106, 106, 106, 106, 106,
106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
- 106, 106, 106, 116, 116, 116, 116, 116, 131, 131,
+ 106, 106, 106, 106, 106, 116, 116, 116, 116, 116,
131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
- 131, 131, 131, 131, 131, 131, 121, 133, 133, 133,
- 133, 132, 132, 135, 135, 137, 137, 137, 137, 137,
- 137, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 131, 131, 131, 131, 131, 131, 131, 131, 121, 133,
+ 133, 133, 133, 132, 132, 135, 135, 137, 137, 137,
+ 137, 137, 137, 138, 138, 138, 138, 138, 138, 138,
138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
- 138, 138, 139, 139, 114, 114, 114, 114, 114, 142,
- 142, 143, 143, 143, 143, 141, 141, 144, 144, 145,
- 145, 146, 146, 146, 147, 147, 147, 147, 147, 147,
- 147, 147, 147, 147, 148, 148, 148, 148, 149, 149,
- 149, 150, 150, 150, 150, 151, 151, 151, 151, 151,
- 151, 151, 152, 152, 152, 152, 152, 152, 153, 153,
- 153, 153, 153, 154, 154, 154, 154, 154, 155, 155,
- 156, 156, 157, 157, 158, 158, 159, 159, 160, 160,
- 161, 161, 162, 162, 163, 163, 164, 164, 165, 165,
- 166, 166, 136, 136, 167, 167, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 104, 104,
- 169, 169, 170, 170, 171, 171, 103, 103, 103, 103,
+ 138, 138, 138, 138, 139, 139, 114, 114, 114, 114,
+ 114, 142, 142, 143, 143, 143, 143, 141, 141, 144,
+ 144, 145, 145, 146, 146, 146, 147, 147, 147, 147,
+ 147, 147, 147, 147, 147, 147, 148, 148, 148, 148,
+ 149, 149, 149, 150, 150, 150, 150, 151, 151, 151,
+ 151, 151, 151, 151, 152, 152, 152, 152, 152, 152,
+ 153, 153, 153, 153, 153, 154, 154, 154, 154, 154,
+ 155, 155, 156, 156, 157, 157, 158, 158, 159, 159,
+ 160, 160, 161, 161, 162, 162, 163, 163, 164, 164,
+ 165, 165, 166, 166, 136, 136, 167, 167, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 104, 104, 169, 169, 170, 170, 171, 171, 103, 103,
103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
- 103, 122, 183, 183, 182, 182, 130, 130, 184, 184,
- 185, 185, 187, 187, 186, 188, 191, 189, 189, 192,
- 190, 190, 123, 124, 124, 125, 125, 172, 172, 172,
- 172, 172, 172, 172, 173, 173, 173, 173, 174, 174,
- 174, 174, 175, 175, 176, 178, 193, 193, 196, 196,
- 194, 194, 197, 195, 177, 177, 177, 179, 179, 180,
- 180, 180, 198, 199, 181, 181, 129, 140, 203, 203,
- 200, 200, 201, 201, 204, 107, 205, 205, 105, 105,
- 202, 202, 134, 134, 206};
+ 103, 103, 103, 122, 183, 183, 182, 182, 130, 130,
+ 184, 184, 185, 185, 187, 187, 186, 188, 191, 189,
+ 189, 192, 190, 190, 123, 124, 124, 125, 125, 172,
+ 172, 172, 172, 172, 172, 172, 173, 173, 173, 173,
+ 174, 174, 174, 174, 175, 175, 176, 178, 193, 193,
+ 196, 196, 194, 194, 197, 195, 177, 177, 177, 179,
+ 179, 180, 180, 180, 198, 199, 181, 181, 129, 140,
+ 203, 203, 200, 200, 201, 201, 204, 107, 205, 205,
+ 105, 105, 202, 202, 134, 134, 206};
const short QDeclarativeJSGrammar::rhs [] = {
2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
@@ -101,106 +101,107 @@ const short QDeclarativeJSGrammar::rhs [] = {
1, 5, 4, 4, 3, 3, 3, 3, 1, 1,
1, 0, 1, 2, 4, 6, 6, 3, 3, 7,
7, 4, 4, 5, 5, 6, 6, 7, 7, 7,
- 7, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
- 3, 4, 5, 3, 4, 3, 1, 1, 2, 3,
- 4, 1, 2, 3, 5, 1, 1, 1, 1, 1,
+ 7, 10, 6, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 3, 3, 4, 5, 3, 4, 3, 1, 1,
+ 2, 3, 4, 1, 2, 3, 5, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 4, 3, 5, 1,
- 2, 4, 4, 4, 3, 0, 1, 1, 3, 1,
- 1, 1, 2, 2, 1, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 3, 3, 3, 1, 3,
- 3, 1, 3, 3, 3, 1, 3, 3, 3, 3,
- 3, 3, 1, 3, 3, 3, 3, 3, 1, 3,
- 3, 3, 3, 1, 3, 3, 3, 3, 1, 3,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 4, 3,
+ 5, 1, 2, 4, 4, 4, 3, 0, 1, 1,
+ 3, 1, 1, 1, 2, 2, 1, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 3, 3, 3,
+ 1, 3, 3, 1, 3, 3, 3, 1, 3, 3,
+ 3, 3, 3, 3, 1, 3, 3, 3, 3, 3,
+ 1, 3, 3, 3, 3, 1, 3, 3, 3, 3,
+ 1, 3, 1, 3, 1, 3, 1, 3, 1, 3,
1, 3, 1, 3, 1, 3, 1, 3, 1, 3,
- 1, 3, 1, 3, 1, 3, 1, 3, 1, 5,
- 1, 5, 1, 3, 1, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
- 0, 1, 1, 3, 0, 1, 1, 1, 1, 1,
+ 1, 5, 1, 5, 1, 3, 1, 3, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 3, 0, 1, 1, 3, 0, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 3, 1, 2, 0, 1, 3, 3, 1, 1,
- 1, 3, 1, 3, 2, 2, 2, 0, 1, 2,
- 0, 1, 1, 2, 2, 7, 5, 7, 7, 5,
- 9, 10, 7, 8, 2, 2, 3, 3, 2, 2,
- 3, 3, 3, 3, 5, 5, 3, 5, 1, 2,
- 0, 1, 4, 3, 3, 3, 3, 3, 3, 3,
- 3, 4, 5, 2, 2, 2, 8, 8, 1, 3,
- 0, 1, 0, 1, 1, 1, 1, 2, 1, 1,
- 0, 1, 0, 1, 2};
+ 1, 1, 1, 3, 1, 2, 0, 1, 3, 3,
+ 1, 1, 1, 3, 1, 3, 2, 2, 2, 0,
+ 1, 2, 0, 1, 1, 2, 2, 7, 5, 7,
+ 7, 5, 9, 10, 7, 8, 2, 2, 3, 3,
+ 2, 2, 3, 3, 3, 3, 5, 5, 3, 5,
+ 1, 2, 0, 1, 4, 3, 3, 3, 3, 3,
+ 3, 3, 3, 4, 5, 2, 2, 2, 8, 8,
+ 1, 3, 0, 1, 0, 1, 1, 1, 1, 2,
+ 1, 1, 0, 1, 0, 1, 2};
const short QDeclarativeJSGrammar::action_default [] = {
- 0, 0, 0, 0, 0, 0, 22, 0, 172, 239,
- 203, 211, 207, 151, 223, 199, 3, 136, 70, 152,
- 215, 219, 140, 169, 150, 155, 135, 189, 176, 0,
- 77, 78, 73, 341, 64, 343, 0, 0, 0, 0,
- 75, 0, 0, 71, 74, 68, 0, 0, 65, 67,
- 66, 76, 69, 0, 72, 0, 0, 165, 0, 0,
- 152, 171, 154, 153, 0, 0, 0, 167, 168, 166,
- 170, 0, 200, 0, 0, 0, 0, 190, 0, 0,
- 0, 0, 0, 0, 180, 0, 0, 0, 174, 175,
- 173, 178, 182, 181, 179, 177, 192, 191, 193, 0,
- 208, 0, 204, 0, 0, 146, 133, 145, 134, 102,
- 103, 104, 129, 105, 130, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 131, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 132,
- 0, 0, 144, 240, 147, 0, 148, 0, 149, 143,
- 0, 236, 229, 227, 234, 235, 233, 232, 238, 231,
- 230, 228, 237, 224, 0, 212, 0, 0, 216, 0,
- 0, 220, 0, 0, 146, 138, 0, 137, 0, 142,
- 156, 0, 342, 331, 332, 0, 329, 0, 330, 0,
- 333, 247, 254, 253, 261, 249, 0, 250, 334, 0,
- 340, 251, 252, 257, 255, 337, 335, 339, 258, 0,
- 269, 0, 0, 0, 0, 341, 64, 0, 343, 65,
- 241, 283, 66, 0, 0, 0, 270, 0, 0, 259,
- 260, 0, 248, 256, 284, 285, 328, 338, 0, 299,
- 300, 301, 302, 0, 295, 296, 297, 298, 325, 326,
- 0, 0, 0, 0, 0, 288, 289, 245, 243, 205,
- 213, 209, 225, 201, 246, 0, 152, 217, 221, 194,
- 183, 0, 0, 202, 0, 0, 0, 0, 195, 0,
- 0, 0, 0, 0, 187, 185, 188, 186, 184, 197,
- 196, 198, 0, 210, 0, 206, 0, 244, 152, 0,
- 226, 241, 242, 0, 241, 0, 0, 291, 0, 0,
- 0, 293, 0, 214, 0, 0, 218, 0, 0, 222,
- 281, 0, 273, 282, 276, 0, 280, 0, 241, 274,
- 0, 241, 0, 0, 292, 0, 0, 0, 294, 342,
- 331, 0, 0, 333, 0, 327, 0, 317, 0, 0,
- 0, 287, 0, 286, 0, 344, 0, 101, 263, 266,
- 0, 102, 269, 105, 130, 107, 108, 73, 112, 113,
- 64, 114, 117, 71, 74, 65, 241, 66, 76, 120,
- 69, 122, 72, 124, 125, 270, 127, 128, 132, 0,
- 94, 0, 0, 96, 100, 98, 85, 97, 99, 0,
- 95, 84, 264, 262, 140, 141, 146, 0, 139, 0,
- 316, 0, 303, 304, 0, 315, 0, 0, 0, 306,
- 311, 309, 312, 0, 0, 310, 311, 0, 307, 0,
- 308, 265, 314, 0, 265, 313, 0, 318, 319, 0,
- 265, 320, 321, 0, 0, 322, 0, 0, 0, 323,
- 324, 158, 157, 0, 0, 0, 290, 0, 0, 0,
- 305, 278, 271, 0, 279, 275, 0, 277, 267, 0,
- 268, 272, 88, 0, 0, 92, 79, 0, 81, 90,
- 0, 82, 91, 93, 83, 89, 80, 0, 86, 162,
- 160, 164, 161, 159, 163, 6, 336, 4, 2, 62,
- 87, 0, 0, 65, 67, 66, 31, 5, 0, 63,
+ 0, 0, 0, 0, 0, 0, 22, 0, 174, 241,
+ 205, 213, 209, 153, 225, 201, 3, 138, 72, 154,
+ 217, 221, 142, 171, 152, 157, 137, 191, 178, 0,
+ 79, 80, 75, 343, 66, 345, 0, 0, 0, 0,
+ 77, 0, 0, 73, 76, 70, 0, 0, 67, 69,
+ 68, 78, 71, 0, 74, 0, 0, 167, 0, 0,
+ 154, 173, 156, 155, 0, 0, 0, 169, 170, 168,
+ 172, 0, 202, 0, 0, 0, 0, 192, 0, 0,
+ 0, 0, 0, 0, 182, 0, 0, 0, 176, 177,
+ 175, 180, 184, 183, 181, 179, 194, 193, 195, 0,
+ 210, 0, 206, 0, 0, 148, 135, 147, 136, 104,
+ 105, 106, 131, 107, 132, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 133, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 134,
+ 0, 0, 146, 242, 149, 0, 150, 0, 151, 145,
+ 0, 238, 231, 229, 236, 237, 235, 234, 240, 233,
+ 232, 230, 239, 226, 0, 214, 0, 0, 218, 0,
+ 0, 222, 0, 0, 148, 140, 0, 139, 0, 144,
+ 158, 0, 344, 333, 334, 0, 331, 0, 332, 0,
+ 335, 249, 256, 255, 263, 251, 0, 252, 336, 0,
+ 342, 253, 254, 259, 257, 339, 337, 341, 260, 0,
+ 271, 0, 0, 0, 0, 343, 66, 0, 345, 67,
+ 243, 285, 68, 0, 0, 0, 272, 0, 0, 261,
+ 262, 0, 250, 258, 286, 287, 330, 340, 0, 301,
+ 302, 303, 304, 0, 297, 298, 299, 300, 327, 328,
+ 0, 0, 0, 0, 0, 290, 291, 247, 245, 207,
+ 215, 211, 227, 203, 248, 0, 154, 219, 223, 196,
+ 185, 0, 0, 204, 0, 0, 0, 0, 197, 0,
+ 0, 0, 0, 0, 189, 187, 190, 188, 186, 199,
+ 198, 200, 0, 212, 0, 208, 0, 246, 154, 0,
+ 228, 243, 244, 0, 243, 0, 0, 293, 0, 0,
+ 0, 295, 0, 216, 0, 0, 220, 0, 0, 224,
+ 283, 0, 275, 284, 278, 0, 282, 0, 243, 276,
+ 0, 243, 0, 0, 294, 0, 0, 0, 296, 344,
+ 333, 0, 0, 335, 0, 329, 0, 319, 0, 0,
+ 0, 289, 0, 288, 0, 346, 0, 103, 265, 268,
+ 0, 104, 271, 107, 132, 109, 110, 75, 114, 115,
+ 66, 116, 119, 73, 76, 67, 243, 68, 78, 122,
+ 71, 124, 74, 126, 127, 272, 129, 130, 134, 0,
+ 96, 0, 0, 98, 102, 100, 87, 99, 101, 0,
+ 97, 86, 266, 264, 142, 143, 148, 0, 141, 0,
+ 318, 0, 305, 306, 0, 317, 0, 0, 0, 308,
+ 313, 311, 314, 0, 0, 312, 313, 0, 309, 0,
+ 310, 267, 316, 0, 267, 315, 0, 320, 321, 0,
+ 267, 322, 323, 0, 0, 324, 0, 0, 0, 325,
+ 326, 160, 159, 0, 0, 0, 292, 0, 0, 0,
+ 307, 280, 273, 0, 281, 277, 0, 279, 269, 0,
+ 270, 274, 90, 0, 0, 94, 81, 0, 83, 92,
+ 0, 84, 93, 95, 85, 91, 82, 0, 88, 164,
+ 162, 166, 163, 161, 165, 6, 338, 4, 2, 64,
+ 89, 0, 0, 67, 69, 68, 31, 5, 0, 65,
0, 41, 40, 39, 0, 0, 54, 0, 55, 0,
60, 61, 0, 41, 0, 0, 0, 0, 0, 50,
- 51, 0, 52, 0, 53, 0, 56, 57, 0, 0,
- 0, 0, 0, 58, 59, 0, 48, 42, 49, 43,
- 0, 0, 0, 0, 45, 0, 46, 47, 44, 0,
- 0, 0, 30, 35, 36, 37, 38, 140, 265, 0,
- 0, 102, 269, 105, 130, 107, 108, 73, 112, 113,
- 64, 114, 117, 71, 74, 65, 241, 66, 76, 120,
- 69, 122, 72, 124, 125, 270, 127, 128, 132, 140,
- 0, 26, 0, 0, 32, 27, 33, 28, 24, 0,
- 29, 25, 0, 34, 8, 0, 10, 0, 9, 0,
- 1, 21, 12, 0, 13, 0, 14, 0, 19, 20,
- 0, 15, 16, 0, 17, 18, 11, 23, 7, 345};
+ 0, 51, 0, 0, 26, 0, 0, 62, 27, 0,
+ 30, 28, 24, 0, 29, 25, 0, 52, 0, 53,
+ 0, 142, 0, 56, 57, 63, 0, 0, 0, 0,
+ 0, 58, 59, 0, 48, 42, 49, 43, 0, 0,
+ 0, 0, 45, 0, 46, 47, 44, 0, 0, 35,
+ 36, 37, 38, 142, 267, 0, 0, 104, 271, 107,
+ 132, 109, 110, 75, 114, 115, 66, 116, 119, 73,
+ 76, 67, 243, 68, 78, 122, 71, 124, 74, 126,
+ 127, 272, 129, 130, 134, 0, 32, 33, 0, 34,
+ 8, 0, 10, 0, 9, 0, 1, 21, 12, 0,
+ 13, 0, 14, 0, 19, 20, 0, 15, 16, 0,
+ 17, 18, 11, 23, 7, 347};
const short QDeclarativeJSGrammar::goto_default [] = {
- 7, 620, 207, 196, 205, 507, 495, 619, 638, 614,
- 618, 616, 621, 22, 617, 18, 506, 609, 600, 562,
- 508, 191, 195, 197, 201, 524, 550, 549, 200, 232,
+ 7, 626, 207, 196, 205, 507, 495, 625, 644, 620,
+ 624, 622, 627, 22, 623, 18, 506, 543, 533, 540,
+ 535, 191, 195, 197, 201, 524, 568, 567, 200, 232,
26, 474, 473, 356, 355, 9, 354, 357, 107, 17,
145, 24, 13, 144, 19, 25, 57, 23, 8, 28,
27, 269, 15, 263, 10, 259, 12, 261, 11, 260,
@@ -211,775 +212,771 @@ const short QDeclarativeJSGrammar::goto_default [] = {
199, 181, 184, 198, 206, 0};
const short QDeclarativeJSGrammar::action_index [] = {
- 314, 1273, 2404, 2404, 2307, 1001, 58, 98, 78, -101,
- 95, 56, 4, 236, -101, 296, 86, -101, -101, 545,
- 97, 115, 162, 197, -101, -101, -101, 447, 192, 1273,
- -101, -101, -101, 369, -101, 2113, 1919, 1273, 1273, 1273,
- -101, 732, 1273, -101, -101, -101, 1273, 1273, -101, -101,
- -101, -101, -101, 1273, -101, 1273, 1273, -101, 1273, 1273,
- 81, 195, -101, -101, 1273, 1273, 1273, -101, -101, -101,
- 185, 1273, 283, 1273, 1273, 1273, 1273, 447, 1273, 1273,
- 1273, 1273, 1273, 1273, 297, 1273, 1273, 1273, 107, 85,
- 116, 297, 297, 297, 297, 191, 447, 447, 447, 1273,
- 74, 1273, 102, 2016, 1273, 1273, -101, -101, -101, -101,
+ 421, 1288, 2322, 2322, 2419, 1016, -52, 37, 140, -101,
+ 35, -13, -40, 190, -101, 272, 34, -101, -101, 658,
+ 42, 103, 194, 201, -101, -101, -101, 439, 256, 1288,
+ -101, -101, -101, 282, -101, 2128, 1751, 1288, 1288, 1288,
+ -101, 917, 1288, -101, -101, -101, 1288, 1288, -101, -101,
+ -101, -101, -101, 1288, -101, 1288, 1288, -101, 1288, 1288,
+ 109, 245, -101, -101, 1288, 1288, 1288, -101, -101, -101,
+ 185, 1288, 295, 1288, 1288, 1288, 1288, 461, 1288, 1288,
+ 1288, 1288, 1288, 1288, 256, 1288, 1288, 1288, 155, 119,
+ 114, 176, 256, 332, 202, 332, 560, 560, 471, 1288,
+ -23, 1288, 53, 2031, 1288, 1288, -101, -101, -101, -101,
-101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
-101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
-101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
- 112, 1273, -101, -101, 92, 61, -101, 1273, -101, -101,
- 1273, -101, -101, -101, -101, -101, -101, -101, -101, -101,
- -101, -101, -101, -101, 1273, 36, 1273, 1273, 65, 62,
- 1273, -101, 2016, 1273, 1273, -101, 127, -101, 42, -101,
- -101, 57, -101, 294, 60, 35, -101, 259, -101, 32,
- 2404, -101, -101, -101, -101, -101, 200, -101, -101, 33,
- -101, -101, -101, -101, -101, -101, 2404, -101, -101, 436,
- -101, 433, 100, 2307, 34, 369, 67, 45, 2598, 71,
- 1273, -101, 72, 51, 1273, 59, -101, 54, 55, -101,
- -101, 324, -101, -101, -101, -101, -101, -101, 88, -101,
- -101, -101, -101, 76, -101, -101, -101, -101, -101, -101,
- 5, 49, 1273, 104, 84, -101, -101, 1457, -101, 70,
- 41, 1, -101, 287, 68, 46, 643, 73, 77, 364,
- 297, 369, 1273, 238, 1273, 1273, 1273, 1273, 341, 1273,
- 1273, 1273, 1273, 1273, 297, 175, 167, 161, 176, 348,
- 315, 331, 1273, -13, 1273, 63, 1273, -101, 545, 1273,
- -101, 1273, 64, 40, 1273, 2, 2307, -101, 1273, 152,
- 2307, -101, 1273, 69, 1273, 1273, 75, 79, 1273, -101,
- 44, 149, 66, -101, -101, 1273, -101, 369, 1273, -101,
- 52, 1273, -54, 2307, -101, 1273, 151, 2307, -101, -29,
- 369, -41, -11, 2404, -46, -101, 2307, -101, 1273, 131,
- 2307, -5, 2307, -101, 8, 13, -55, -101, -101, 2307,
- -51, 360, -2, 352, 119, 1273, 2307, 39, -19, 366,
- 3, -24, 910, 6, 7, -101, 1367, -101, 11, -16,
- -4, 1273, -6, -31, 1273, 9, 1273, -12, 17, 1273,
- -101, 2210, 37, -101, -101, -101, -101, -101, -101, 1273,
- -101, -101, -101, -101, 258, -101, 1273, -15, -101, 2307,
- -101, 117, -101, -101, 2307, -101, 1273, 106, 16, -101,
- 38, -101, 135, 96, 1273, -101, 135, 43, -101, 18,
- -101, 2307, -101, 101, 2307, -101, 179, -101, -101, 99,
- 2307, 31, -101, -7, -8, -101, 369, -34, -1, -101,
- -101, -101, -101, 1273, 124, 2307, -101, 1273, 122, 2307,
- -101, 25, -101, 207, -101, -101, 1273, -101, -101, 290,
- -101, -101, -101, 114, 1733, -101, -101, 1826, -101, -101,
- 1550, -101, -101, -101, -101, -101, -101, 103, -101, -101,
- -101, -101, -101, -101, -101, -101, 2404, -101, -101, -101,
- 221, -43, 704, 164, -26, 12, -101, -101, 188, -101,
- 196, -101, -101, -101, 369, 183, -101, 1273, -101, 165,
- -101, -101, 170, 0, 369, 160, 10, 369, 113, -101,
- -101, 215, -101, 1273, -101, 225, -101, -101, 203, 369,
- 28, 1273, 229, -101, -101, 202, -101, 218, -101, 30,
- -21, 369, 199, 278, -101, 110, -101, -101, -101, 1640,
- 1092, 583, -101, -101, -101, -101, -101, 284, 2501, 1919,
- 14, 388, 29, 424, 93, 1273, 2307, 39, -9, 338,
- 21, -3, 821, 24, 23, -101, 1367, -101, 48, 20,
- 47, 1273, 50, 26, 1273, 53, 1273, 27, 22, 264,
- 120, -101, 15, 813, -101, -101, -101, -101, -101, 1183,
- -101, -101, 19, -101, -101, 498, -101, 249, -82, 902,
- -101, -101, 118, 369, -101, 204, -101, 80, -101, -101,
- 369, -101, -101, 82, -101, -101, -101, -101, -101, -101,
+ 100, 1288, -101, -101, 70, 59, -101, 1288, -101, -101,
+ 1288, -101, -101, -101, -101, -101, -101, -101, -101, -101,
+ -101, -101, -101, -101, 1288, 41, 1288, 1288, 98, 91,
+ 1288, -101, 2031, 1288, 1288, -101, 121, -101, 73, -101,
+ -101, 39, -101, 385, 180, 78, -101, 391, -101, 64,
+ 2322, -101, -101, -101, -101, -101, 208, -101, -101, 82,
+ -101, -101, -101, -101, -101, -101, 2322, -101, -101, 538,
+ -101, 495, 128, 2419, 54, 358, 62, 44, 2613, 67,
+ 1288, -101, 76, 63, 1288, 58, -101, 60, 46, -101,
+ -101, 309, -101, -101, -101, -101, -101, -101, 86, -101,
+ -101, -101, -101, 107, -101, -101, -101, -101, -101, -101,
+ 28, 52, 1288, 101, 102, -101, -101, 1472, -101, 83,
+ 75, 79, -101, 287, 84, 80, 585, 69, 89, 321,
+ 177, 482, 1288, 297, 1288, 1288, 1288, 1288, 331, 1288,
+ 1288, 1288, 1288, 1288, 332, 222, 332, 332, 332, 410,
+ 410, 410, 1288, 57, 1288, 72, 1288, -101, 658, 1288,
+ -101, 1288, 71, 45, 1288, 61, 2419, -101, 1288, 132,
+ 2419, -101, 1288, 47, 1288, 1288, 66, 65, 1288, -101,
+ 68, 112, 81, -101, -101, 1288, -101, 369, 1288, -101,
+ 85, 1288, 74, 2419, -101, 1288, 122, 2419, -101, 77,
+ 294, 16, -29, 2322, -53, -101, 2419, -101, 1288, 127,
+ 2419, -15, 2419, -101, 10, 11, -34, -101, -101, 2419,
+ -48, 504, 4, 476, 113, 1288, 2419, 2, -28, 420,
+ 6, -21, 719, 7, 87, -101, 1382, -101, -4, -16,
+ 5, 1288, 3, -27, 1288, 9, 1288, -18, -31, 1288,
+ -101, 2225, -7, -101, -101, -101, -101, -101, -101, 1288,
+ -101, -101, -101, -101, 246, -101, 1288, -38, -101, 2419,
+ -101, 88, -101, -101, 2419, -101, 1288, 106, 26, -101,
+ 55, -101, 50, 105, 1288, -101, 48, 38, -101, -8,
+ -101, 2419, -101, 94, 2419, -101, 238, -101, -101, 104,
+ 2419, 31, -101, 21, 19, -101, 305, 1, 30, -101,
+ -101, -101, -101, 1288, 136, 2419, -101, 1288, 134, 2419,
+ -101, 49, -101, 173, -101, -101, 1288, -101, -101, 363,
+ -101, -101, -101, 137, 1565, -101, -101, 1658, -101, -101,
+ 1844, -101, -101, -101, -101, -101, -101, 95, -101, -101,
+ -101, -101, -101, -101, -101, -101, 2322, -101, -101, -101,
+ 92, 15, 925, 169, 27, -6, -101, -101, 212, -101,
+ 191, -101, -101, -101, 323, 211, -101, 1288, -101, 214,
+ -101, -101, 216, 40, 317, 210, 43, 259, 236, -101,
+ 36, -101, 747, 96, -101, 29, 747, -101, -101, 1198,
+ -101, -101, -101, 1107, -101, -101, 231, -101, 1288, -101,
+ 217, 286, 32, -101, -101, -101, 188, 340, 51, 1288,
+ 175, -101, -101, 171, -101, 179, -101, 56, -11, 351,
+ 181, 336, -101, 110, -101, -101, -101, 1934, 647, -101,
+ -101, -101, -101, 253, 2516, 1751, -5, 460, 22, 468,
+ 138, 1288, 2419, 24, -2, 412, 23, -3, 836, 20,
+ 87, -101, 1382, -101, 17, -10, 18, 1288, 25, 8,
+ 1288, 33, 1288, 12, 14, 120, -101, -101, 13, -101,
+ -101, 747, -101, 248, -47, 828, -101, -101, 152, 482,
+ -101, 150, -101, 123, -101, -101, 398, -101, -101, 117,
+ -101, -101, -101, -101, -101, -101,
- -106, 17, -83, 19, 24, 228, -106, -106, -106, -106,
- -106, -106, -106, -106, -106, -106, -106, -106, -106, -49,
- -106, -106, -106, -106, -106, -106, -106, -106, -106, 101,
- -106, -106, -106, 2, -106, -106, -2, 29, 107, 166,
- -106, 204, 183, -106, -106, -106, 174, 169, -106, -106,
- -106, -106, -106, 145, -106, 141, 137, -106, 152, 161,
- -106, -106, -106, -106, 163, 158, 157, -106, -106, -106,
- -106, 132, -106, 142, 138, 187, 178, -106, 167, 181,
- 81, 82, 85, 83, -106, 93, 114, 96, -106, -106,
- -106, -106, -106, -106, -106, -106, -106, -106, -106, 170,
- -106, 74, -106, 109, 80, 51, -106, -106, -106, -106,
+ -106, 6, -92, 10, 5, 278, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, -42,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, 109,
+ -106, -106, -106, -10, -106, -106, -35, 24, 73, 90,
+ -106, 219, 181, -106, -106, -106, 171, 120, -106, -106,
+ -106, -106, -106, 174, -106, 170, 167, -106, 175, 163,
+ -106, -106, -106, -106, 184, 177, 180, -106, -106, -106,
+ -106, 125, -106, 132, 134, 162, 130, -106, 121, 124,
+ 123, 141, 142, 152, -106, 154, 161, 160, -106, -106,
+ -106, -106, -106, -106, -106, -106, -106, -106, -106, 139,
+ -106, 143, -106, 156, 91, 55, -106, -106, -106, -106,
-106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
-106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
-106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
- -106, 25, -106, -106, -106, -106, -106, 41, -106, -106,
- 50, -106, -106, -106, -106, -106, -106, -106, -106, -106,
- -106, -106, -106, -106, 98, -106, 104, 43, -106, -106,
- 42, -106, 221, 64, 117, -106, -106, -106, -106, -106,
- -106, -106, -106, 54, -106, -106, -106, 55, -106, -106,
+ -106, 32, -106, -106, -106, -106, -106, 33, -106, -106,
+ 26, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, 96, -106, 119, 52, -106, -106,
+ 66, -106, 220, 69, 71, -106, -106, -106, -106, -106,
+ -106, -106, -106, 25, -106, -106, -106, 64, -106, -106,
-106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
- -106, -106, -106, -106, -106, -106, 47, -106, -106, 38,
- -106, 33, -106, 92, -106, 73, -106, -106, 88, -106,
- 86, -106, -106, -106, 94, 23, -106, -106, -106, -106,
- -106, -11, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, 70, -106, -106, 61,
+ -106, 41, -106, 39, -106, 37, -106, -106, 42, -106,
+ 79, -106, -106, -106, 81, 72, -106, -106, -106, -106,
+ -106, -5, -106, -106, -106, -106, -106, -106, -106, -106,
-106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
- -106, -106, 22, -106, -106, -106, -106, 105, -106, -106,
+ -106, -106, 21, -106, -106, -106, -106, 112, -106, -106,
-106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
- -106, 7, 235, -106, 249, 219, 216, 222, -106, 124,
- 125, 123, 122, 116, -106, -106, -106, -106, -106, -106,
- -106, -106, 191, -106, 232, -106, 225, -106, -106, 231,
- -106, 156, -106, -106, 130, -106, 91, -106, 5, -106,
- 8, -106, 233, -106, 200, 189, -106, -106, 198, -106,
- -106, -106, -106, -106, -106, 245, -106, 108, 95, -106,
- -106, 298, -106, 195, -106, 89, -106, 71, -106, -106,
- 120, -106, -106, -5, -106, -106, 52, -106, 53, -106,
- 56, -106, 60, -106, -106, -106, -106, -106, -106, 39,
- -106, 37, -106, 49, -106, 133, 69, -106, -106, 59,
- -106, -106, 102, -106, -106, -106, 79, -106, -106, -106,
- -106, 62, -106, 45, 67, -106, 75, -106, -106, 44,
- -106, 1, -106, -106, -106, -106, -106, -106, -106, 46,
- -106, -106, -106, -106, -106, -106, 115, -106, -106, 66,
- -106, -106, -106, -106, 70, -106, 77, -106, -106, -106,
- -106, -106, -9, -106, 72, -106, -38, -106, -106, -106,
- -106, 97, -106, -106, 99, -106, -106, -106, -106, -106,
- 40, -51, -106, -106, 36, -106, 34, -106, 63, -106,
- -106, -106, -106, 35, -106, 48, -106, 58, -106, 57,
- -106, -106, -106, -106, -106, -106, 28, -106, -106, 90,
- -106, -106, -106, -106, 65, -106, -106, 159, -106, -106,
- 61, -106, -106, -106, -106, -106, -106, -106, -106, -106,
- -106, -106, -106, -106, -106, -106, 87, -106, -106, -106,
- -106, -106, -13, -106, -106, -106, -106, -106, -106, -106,
- -18, -106, -106, -106, -10, -106, -106, 0, -106, -106,
- -106, -106, -106, -106, -4, -12, -106, -6, -106, -106,
- -106, -106, -106, 3, -106, -106, -106, -106, -23, -14,
- -106, 11, -106, -106, -106, -106, -106, 15, -106, -106,
- -106, 16, 18, 14, -106, -106, -106, -106, -106, 292,
- 399, 180, -106, -106, -106, -106, -106, -106, 26, 286,
- 20, 21, -106, 30, -106, 177, 10, -106, -106, 31,
- -106, -106, 193, -106, -106, -106, 32, -106, -106, -106,
- -106, 27, -106, 13, 76, -106, 68, -106, -106, -106,
- -106, -106, -106, 230, -106, -106, -106, -106, -106, 290,
- -106, -106, -3, -106, -106, 6, -106, -106, 4, 270,
- -106, -106, -106, 9, -106, -106, -106, -106, -106, -106,
- 12, -106, -106, -106, -106, -106, -106, -106, -106, -106};
+ -106, 17, 237, -106, 192, 236, 224, 225, -106, 97,
+ 98, 101, 99, 113, -106, -106, -106, -106, -106, -106,
+ -106, -106, 204, -106, 223, -106, 235, -106, -106, 239,
+ -106, 197, -106, -106, 228, -106, 27, -106, 13, -106,
+ 2, -106, 233, -106, 190, 198, -106, -106, 196, -106,
+ -106, -106, -106, -106, -106, 200, -106, 107, 135, -106,
+ -106, 186, -106, 84, -106, 80, -106, 76, -106, -106,
+ 89, -106, -106, -49, -106, -106, 47, -106, 40, -106,
+ 44, -106, 68, -106, -106, -106, -106, -106, -106, 53,
+ -106, 35, -106, 49, -106, 87, 63, -106, -106, 30,
+ -106, -106, 103, -106, -106, -106, 51, -106, -106, -106,
+ -106, 86, -106, 67, 114, -106, 74, -106, -106, 65,
+ -106, 56, -106, -106, -106, -106, -106, -106, -106, 62,
+ -106, -106, -106, -106, -106, -106, 95, -106, -106, 78,
+ -106, -106, -106, -106, 75, -106, 88, -106, -106, -106,
+ -106, -106, -54, -106, 45, -106, -40, -106, -106, -106,
+ -106, 94, -106, -106, 100, -106, -106, -106, -106, -106,
+ 150, -41, -106, -106, 54, -106, 43, -106, 48, -106,
+ -106, -106, -106, 59, -106, 57, -106, 60, -106, 58,
+ -106, -106, -106, -106, -106, -106, 38, -106, -106, 144,
+ -106, -106, -106, -106, 31, -106, -106, 202, -106, -106,
+ 50, -106, -106, -106, -106, -106, -106, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106, 77, -106, -106, -106,
+ -106, -106, 82, -106, -106, -106, -106, -106, -106, -106,
+ -17, -106, -106, -106, -4, -106, -106, 12, -106, -106,
+ -106, -106, -106, -106, -14, 46, -106, -13, -106, -106,
+ -106, -106, 108, -106, -106, -106, 243, -106, -106, 295,
+ -106, -106, -106, 290, -106, -106, -106, -106, 346, -106,
+ -106, -106, 16, -106, -106, -106, 22, 23, -106, 34,
+ -106, -106, -106, -106, -106, 11, -106, -106, -106, 7,
+ 1, 8, -106, -106, -106, -106, -106, 307, 179, -106,
+ -106, -106, -106, -106, 18, 281, 9, 15, -106, 4,
+ -106, 83, 29, -106, -106, -2, -106, -106, 85, -106,
+ -106, -106, 3, -106, -106, -106, -106, 14, -106, 0,
+ 105, -106, 93, -106, -106, -106, -106, -106, -1, -106,
+ -106, 20, -106, -106, 28, 92, -106, -106, -106, 19,
+ -106, -106, -106, -106, -106, -106, -12, -106, -106, -106,
+ -106, -106, -106, -106, -106, -106};
const short QDeclarativeJSGrammar::action_info [] = {
- 401, -123, 440, -121, 403, -129, 333, 340, 615, 345,
- -96, 352, 348, -118, -100, 389, -126, 257, -99, 342,
- 416, 391, 343, 510, 453, 440, 448, 257, -96, 446,
- -100, -118, 440, 348, 527, 541, -129, 525, 552, 555,
- 538, 545, 466, 424, 399, 408, -110, 560, 560, 420,
- 431, 444, 560, 457, -121, -99, 416, -123, 457, 440,
- -126, 325, 306, 453, 272, 190, 294, 164, 187, 170,
- 257, 272, 141, 430, 346, 312, 296, 312, 409, 414,
- 294, 348, 251, 101, 99, 252, 318, 416, 236, 292,
- 453, 457, 440, 183, 141, 189, 71, 335, 639, 164,
- 147, 304, 179, 71, 99, 443, 427, 301, 434, 141,
- 0, 141, 141, 331, 141, 0, 0, 292, 58, 444,
- 141, 149, 477, 62, 0, 58, 0, 314, 603, 59,
- 141, 315, 141, 172, 63, 141, 59, 247, 246, 141,
- 424, 629, 628, 635, 634, 256, 255, 58, 615, 242,
- 241, 428, 173, 101, 249, 248, 58, 327, 59, 141,
- 141, 249, 248, 488, 254, 166, 418, 59, 142, 167,
- 478, 557, 556, 141, 530, 529, 604, 172, 413, 412,
- 249, 248, 459, 177, 455, 172, 85, 141, 86, 511,
- 517, 350, 85, 523, 86, 559, 173, 64, 174, 87,
- 85, 85, 86, 86, 173, 87, 406, 64, 141, 64,
- 328, 337, 310, 87, 87, 469, 85, 85, 86, 86,
- 0, 560, 533, 0, 0, 511, 521, 520, 511, 87,
- 87, 0, 511, 141, 0, 513, 172, 141, 547, 513,
- 438, 437, 65, 0, 518, 516, 512, 511, 66, 0,
- 512, 103, 65, 0, 65, 173, 274, 275, 66, 0,
- 66, 235, 234, 548, 546, 632, 631, 0, 470, 468,
- 104, 513, 105, 172, 513, 0, 534, 532, 513, 172,
- 561, 0, 512, 276, 277, 512, 537, 536, 34, 512,
- 544, 543, 173, 513, 406, 630, 625, -87, 173, 172,
- 174, 73, 74, 0, 512, 274, 275, 34, 0, 0,
- 626, 624, 0, 0, 73, 74, 0, -87, 173, 34,
- 174, 0, 85, 34, 86, 48, 50, 49, 75, 76,
- 0, 0, 276, 277, 0, 87, 0, 0, 279, 280,
- 623, 75, 76, 0, 48, 50, 49, 281, 0, 0,
- 282, 45, 283, 34, 279, 280, 48, 50, 49, 0,
- 48, 50, 49, 281, 279, 280, 282, 34, 283, 0,
- 45, 279, 280, 281, -341, 0, 282, 0, 283, 0,
- 281, 34, 45, 282, 0, 283, 45, 279, 280, 34,
- 48, 50, 49, 0, 0, 34, 281, 0, 34, 282,
- 0, 283, -341, 0, 48, 50, 49, 6, 5, 4,
- 1, 3, 2, 245, 244, 0, 45, 34, 48, 50,
- 49, 240, 239, 0, 0, 0, 48, 50, 49, 0,
- 45, 0, 48, 50, 49, 48, 50, 49, 0, 0,
- 0, 0, 0, 0, 45, 0, 0, 0, 0, 240,
- 239, 0, 45, 34, 48, 50, 49, 0, 45, 0,
- 0, 45, 34, 0, 0, 34, 0, 0, 0, 0,
- 78, 79, 0, 0, 0, 0, 0, 0, 80, 81,
- 45, 0, 82, 0, 83, 245, 244, 0, 0, 0,
- 48, 50, 49, 0, 245, 244, 0, 240, 239, 48,
- 50, 49, 48, 50, 49, 0, 0, 0, 0, 0,
- 30, 31, 0, 0, 0, 0, 45, 0, 0, 0,
- 33, 0, 0, 0, 0, 45, 0, 34, 45, 0,
+ 399, 352, 345, -101, 343, 457, 440, 403, 257, -112,
+ -125, -131, -123, -98, -120, 348, -128, 389, 453, 391,
+ 416, 401, 408, 563, -101, -123, 416, -120, 539, -131,
+ -98, -112, -125, 348, 257, 99, 71, 645, 621, 101,
+ -128, 440, 141, 621, 164, 431, 539, 430, 453, 573,
+ 457, 444, 440, 424, 71, 424, 101, 446, 559, 420,
+ 424, 448, 539, 440, 570, 539, 466, 527, 312, 346,
+ 532, 312, 318, 272, 409, 183, 342, 525, 147, 141,
+ 348, 510, 457, 414, 272, 325, 0, 0, 252, 99,
+ 257, 440, 296, 556, -102, 292, 453, 190, 170, 416,
+ 164, 434, 141, 141, 536, 251, 304, 172, 141, 141,
+ 443, 0, 335, 340, 141, 427, 0, 0, 0, 149,
+ 327, 306, 0, 292, 444, 0, 173, 0, 536, 141,
+ 141, 0, 0, 179, 333, 141, 294, 236, 189, 314,
+ 141, 301, 141, 315, 141, 477, 331, 242, 241, 413,
+ 412, 62, 537, 166, 58, 488, 142, 167, 294, 58,
+ 428, 254, 63, 256, 255, 59, 418, 172, 247, 246,
+ 59, 575, 574, 328, 249, 248, 616, 177, 641, 640,
+ 58, 469, 337, 141, 635, 634, 173, 350, 187, 249,
+ 248, 59, 310, 478, 459, 58, 455, 64, 523, 249,
+ 248, 85, 85, 86, 86, 103, 59, 565, 511, 172,
+ 511, 638, 637, 64, 87, 87, 141, 511, 517, 577,
+ 511, 0, 141, 0, 104, 141, 105, 85, 173, 86,
+ 174, 172, 566, 564, 470, 468, 562, 561, 548, 511,
+ 87, 636, 65, 530, 513, 539, 141, 85, 66, 86,
+ 173, 0, 406, 0, 513, 512, 513, 64, 65, 0,
+ 87, 172, 0, 513, 66, 512, 513, 512, 172, 235,
+ 234, 0, 518, 516, 512, 521, 520, 512, 554, 553,
+ 173, 85, 406, 86, 0, 513, -89, 173, 34, 174,
+ 73, 74, 549, 547, 87, 631, 512, 531, 529, 438,
+ 437, 172, 65, 0, 578, 274, 275, 0, 66, 632,
+ 630, 34, 0, 73, 74, 274, 275, 75, 76, -89,
+ 173, 0, 174, 34, 0, 48, 50, 49, 0, 0,
+ 0, 0, 276, 277, 34, 0, 0, 0, 34, 629,
+ 75, 76, 276, 277, 279, 280, 34, 0, 48, 50,
+ 49, 45, 34, 281, 279, 280, 282, 85, 283, 86,
+ 48, 50, 49, 281, 0, 34, 282, 0, 283, 34,
+ 87, 48, 50, 49, 45, 48, 50, 49, 0, 0,
+ 34, 0, 0, 48, 50, 49, 45, 34, 0, 48,
+ 50, 49, 34, 0, 0, 0, 0, 45, 34, 0,
+ 0, 45, 48, 50, 49, 0, 48, 50, 49, 45,
+ 0, 0, 0, 0, 34, 45, 0, 48, 50, 49,
+ 34, 0, 0, 0, 48, 50, 49, 34, 45, 48,
+ 50, 49, 45, 279, 280, 48, 50, 49, 0, 0,
+ 0, 34, 281, 45, 0, 282, 0, 283, -343, 34,
+ 45, 48, 50, 49, 0, 45, -343, 48, 50, 49,
+ 0, 45, 78, 79, 48, 50, 49, 0, 0, 0,
+ 80, 81, 0, 0, 82, 0, 83, 45, 48, 50,
+ 49, 0, 0, 45, 78, 79, 48, 50, 49, 34,
+ 45, 0, 80, 81, 78, 79, 82, 34, 83, 0,
+ 0, 0, 80, 81, 45, 34, 82, 0, 83, 0,
+ 0, 34, 45, 0, 6, 5, 4, 1, 3, 2,
+ 0, 240, 239, 0, 34, 0, 48, 50, 49, 245,
+ 244, 0, 0, 34, 48, 50, 49, 245, 244, 0,
+ 0, 0, 48, 50, 49, 0, 0, 0, 48, 50,
+ 49, 0, 45, 0, 0, 0, 245, 244, 0, 0,
+ 45, 48, 50, 49, 0, 240, 239, 34, 45, 0,
+ 48, 50, 49, 0, 45, 0, 0, 0, 0, 0,
+ 0, 0, 0, 78, 79, 0, 0, 45, 151, 0,
+ 0, 80, 81, 0, 0, 82, 45, 83, 152, 240,
+ 239, 0, 153, 0, 48, 50, 49, 0, 0, 0,
+ 0, 154, 0, 155, 0, 0, 308, 0, 0, 0,
+ 0, 0, 0, 0, 156, 0, 157, 62, 0, 0,
+ 45, 0, 0, 0, 158, 0, 0, 159, 63, 0,
+ 0, 0, 0, 160, 0, 0, 0, 0, 0, 161,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 30,
+ 31, 151, 0, 0, 0, 162, 0, 0, 0, 33,
+ 0, 152, 0, 0, 0, 153, 34, 0, 0, 0,
+ 35, 36, 0, 37, 154, 0, 155, 0, 0, 0,
+ 502, 0, 0, 0, 44, 0, 0, 156, 0, 157,
+ 62, 0, 0, 0, 0, 0, 0, 158, 0, 0,
+ 159, 63, 51, 48, 50, 49, 160, 52, 0, 0,
+ 0, 0, 161, 0, 0, 0, 0, 0, 43, 54,
+ 32, 30, 31, 0, 40, 0, 0, 0, 162, 45,
+ 0, 33, 0, 0, 0, 0, 0, 0, 34, 0,
+ 0, 0, 35, 36, 0, 37, 0, 0, 0, 30,
+ 31, 0, 41, 0, 0, 0, 44, 0, 0, 33,
+ 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
+ 35, 36, 0, 37, 51, 48, 50, 49, 0, 52,
+ 502, 0, 0, 0, 44, 0, 0, 0, 0, 0,
+ 43, 54, 32, 0, 0, 0, 40, 0, 0, 0,
+ 0, 45, 51, 48, 50, 49, 0, 52, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 43, 54,
+ 32, 0, 0, 0, 40, 0, 0, 0, 0, 45,
+ 30, 31, 0, 0, 0, 0, 0, 0, 30, 31,
+ 33, 0, 0, 0, 0, 0, 0, 34, 33, 0,
+ 0, 35, 36, 0, 37, 34, 0, 0, 0, 35,
+ 36, 502, 37, 0, 0, 44, 0, 0, 0, 41,
+ 0, 0, 0, 44, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 51, 48, 50, 49, 0, 52, 0,
+ 0, 51, 48, 50, 49, 0, 52, 0, 0, 43,
+ 54, 32, 0, 0, 0, 40, 0, 43, 54, 32,
+ 45, 0, 0, 40, 0, 0, 0, 0, 45, 30,
+ 31, 0, 0, 0, 0, 0, 0, 30, 31, 33,
+ 0, 0, 0, 0, 0, 0, 34, 33, 0, 0,
+ 35, 36, 0, 37, 34, 0, 0, 0, 35, 36,
+ 41, 37, 0, 0, 44, 0, 0, 0, 502, 0,
+ 0, 0, 44, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 51, 48, 50, 49, 0, 52, 0, 0,
+ 51, 48, 50, 49, 0, 52, 0, 0, 43, 54,
+ 32, 0, 0, 0, 40, 0, 43, 54, 32, 45,
+ 0, 0, 40, 0, 0, 0, 0, 45, 0, 0,
+ 0, 0, 0, 0, 0, 0, 501, 0, 30, 31,
+ 0, 0, 0, 0, 0, 0, 0, 0, 215, 0,
+ 0, 0, 0, 0, 0, 34, 0, 0, 0, 35,
+ 36, 0, 37, 0, 0, 0, 0, 0, 0, 502,
+ 0, 0, 0, 44, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 51, 503, 505, 504, 0, 52, 0, 0, 0,
+ 0, 226, 0, 0, 0, 0, 0, 43, 54, 32,
+ 210, 0, 0, 40, 0, 0, 0, 0, 45, 0,
+ 0, 0, 0, 0, 0, 0, 0, 501, 0, 30,
+ 31, 0, 0, 0, 0, 0, 0, 0, 0, 215,
+ 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
+ 35, 36, 0, 37, 0, 0, 0, 0, 0, 0,
+ 502, 0, 0, 0, 44, 0, 0, 0, 0, 0,
+ 0, 0, 544, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 51, 503, 505, 504, 0, 52, 0, 0,
+ 0, 0, 226, 0, 0, 0, 0, 0, 43, 54,
+ 32, 210, 0, 0, 40, 0, 0, 0, 0, 45,
+ 0, 0, 0, 0, 0, 0, 0, 0, 501, 0,
+ 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
+ 215, 0, 0, 0, 0, 0, 0, 34, 0, 0,
0, 35, 36, 0, 37, 0, 0, 0, 0, 0,
- 0, 502, 0, 0, 0, 44, 0, 0, 151, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 152, 0,
- 0, 0, 153, 51, 48, 50, 49, 0, 52, 0,
- 0, 154, 0, 155, 0, 0, 0, 0, 0, 43,
- 54, 32, 0, 0, 156, 40, 157, 62, 0, 0,
- 45, 0, 0, 0, 158, 30, 31, 159, 63, 0,
- 0, 0, 0, 160, 0, 33, 0, 0, 0, 161,
- 0, 0, 34, 0, 0, 0, 35, 36, 0, 37,
- 0, 0, 0, 0, 0, 162, 502, 0, 0, 0,
- 44, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 151, 0, 51, 48,
- 50, 49, 0, 52, 0, 0, 152, 0, 0, 0,
- 153, 0, 0, 0, 43, 54, 32, 0, 0, 154,
- 40, 155, 0, 0, 308, 45, 0, 0, 0, 0,
- 0, 0, 156, 0, 157, 62, 0, 0, 0, 0,
- 0, 0, 158, 0, 0, 159, 63, 0, 0, 0,
- 0, 160, 0, 0, 0, 0, 0, 161, 0, 0,
- 0, 0, 0, 0, 0, 0, 30, 31, 0, 0,
- 0, 0, 0, 162, 0, 0, 33, 0, 0, 0,
- 0, 0, 0, 34, 0, 0, 0, 35, 36, 0,
- 37, 0, 0, 0, 30, 31, 0, 502, 0, 0,
- 0, 44, 0, 0, 33, 0, 0, 0, 0, 0,
- 0, 34, 0, 0, 0, 35, 36, 0, 37, 51,
- 48, 50, 49, 0, 52, 41, 0, 0, 0, 44,
- 0, 0, 0, 0, 0, 43, 54, 32, 0, 0,
- 0, 40, 0, 0, 0, 0, 45, 51, 48, 50,
- 49, 0, 52, 0, 0, 0, 0, 0, 0, 0,
+ 0, 502, 0, 0, 0, 44, 0, 0, 0, 0,
+ 0, 0, 0, 541, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 51, 503, 505, 504, 0, 52, 0,
+ 0, 0, 0, 226, 0, 0, 0, 0, 0, 43,
+ 54, 32, 210, 0, 0, 40, 0, 0, 0, 0,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 29,
+ 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
+ 33, 0, 0, 0, 0, 0, 0, 34, 0, 0,
+ 0, 35, 36, 0, 37, 0, 0, 0, 38, 0,
+ 39, 41, 42, 0, 0, 44, 0, 0, 0, 46,
+ 0, 47, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 51, 48, 50, 49, 0, 52, 0,
+ 53, 0, 55, 0, 56, 0, 0, 0, 0, 43,
+ 54, 32, 0, 0, 0, 40, 0, 0, 0, 0,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, -121,
+ 0, 0, 0, 29, 30, 31, 0, 0, 0, 0,
+ 0, 0, 0, 0, 33, 0, 0, 0, 0, 0,
+ 0, 34, 0, 0, 0, 35, 36, 0, 37, 0,
+ 0, 0, 38, 0, 39, 41, 42, 0, 0, 44,
+ 0, 0, 0, 46, 0, 47, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 51, 48, 50,
+ 49, 0, 52, 0, 53, 0, 55, 0, 56, 0,
0, 0, 0, 43, 54, 32, 0, 0, 0, 40,
- 0, 0, 0, 0, 45, 30, 31, 0, 0, 0,
- 0, 0, 0, 30, 31, 33, 0, 0, 0, 0,
- 0, 0, 34, 33, 0, 0, 35, 36, 0, 37,
- 34, 0, 0, 0, 35, 36, 502, 37, 0, 0,
- 44, 0, 0, 0, 41, 0, 0, 0, 44, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 51, 48,
- 50, 49, 0, 52, 0, 0, 51, 48, 50, 49,
- 0, 52, 0, 0, 43, 54, 32, 0, 0, 0,
- 40, 0, 43, 54, 32, 45, 0, 0, 40, 0,
- 0, 0, 0, 45, 30, 31, 0, 0, 0, 0,
- 0, 0, 30, 31, 33, 0, 0, 0, 0, 0,
- 0, 34, 33, 0, 0, 35, 36, 0, 37, 34,
- 0, 0, 0, 35, 36, 502, 37, 0, 0, 44,
- 0, 0, 0, 41, 0, 0, 0, 44, 0, 0,
+ 0, 0, 0, 0, 45, 0, 0, 0, 0, 0,
+ 0, 0, 0, 29, 30, 31, 0, 0, 0, 0,
+ 0, 0, 0, 0, 33, 0, 0, 0, 0, 0,
+ 0, 34, 0, 0, 0, 35, 36, 0, 37, 0,
+ 0, 0, 38, 0, 39, 41, 42, 0, 0, 44,
+ 0, 0, 0, 46, 0, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 51, 48, 50,
- 49, 0, 52, 0, 0, 51, 48, 50, 49, 0,
- 52, 0, 0, 43, 54, 32, 0, 0, 0, 40,
- 0, 43, 54, 32, 45, 0, 0, 40, 0, 0,
- 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
- 0, 501, 0, 30, 31, 0, 0, 0, 0, 0,
- 0, 0, 0, 215, 0, 0, 0, 0, 0, 0,
+ 49, 0, 52, 0, 53, 0, 55, 271, 56, 0,
+ 0, 0, 0, 43, 54, 32, 0, 0, 0, 40,
+ 0, 0, 0, 0, 45, 0, 0, 0, 0, 0,
+ 0, 0, 0, 483, 0, 0, 29, 30, 31, 0,
+ 0, 0, 0, 0, 0, 0, 0, 33, 0, 0,
+ 0, 0, 0, 0, 34, 0, 0, 0, 35, 36,
+ 0, 37, 0, 0, 0, 38, 0, 39, 41, 42,
+ 0, 0, 44, 0, 0, 0, 46, 0, 47, 0,
+ 0, 486, 0, 0, 0, 0, 0, 0, 0, 0,
+ 51, 48, 50, 49, 0, 52, 0, 53, 0, 55,
+ 0, 56, 0, 0, 0, 0, 43, 54, 32, 0,
+ 0, 0, 40, 0, 0, 0, 0, 45, 0, 0,
+ 0, 0, 0, 0, 0, 0, 475, 0, 0, 29,
+ 30, 31, 0, 0, 0, 0, 0, 0, 0, 0,
+ 33, 0, 0, 0, 0, 0, 0, 34, 0, 0,
+ 0, 35, 36, 0, 37, 0, 0, 0, 38, 0,
+ 39, 41, 42, 0, 0, 44, 0, 0, 0, 46,
+ 0, 47, 0, 0, 481, 0, 0, 0, 0, 0,
+ 0, 0, 0, 51, 48, 50, 49, 0, 52, 0,
+ 53, 0, 55, 0, 56, 0, 0, 0, 0, 43,
+ 54, 32, 0, 0, 0, 40, 0, 0, 0, 0,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 475,
+ 0, 0, 29, 30, 31, 0, 0, 0, 0, 0,
+ 0, 0, 0, 33, 0, 0, 0, 0, 0, 0,
34, 0, 0, 0, 35, 36, 0, 37, 0, 0,
- 0, 0, 0, 0, 502, 0, 0, 0, 44, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 51, 503, 505, 504,
- 0, 52, 0, 0, 0, 0, 226, 0, 0, 0,
- 0, 0, 43, 54, 32, 210, 0, 0, 40, 0,
+ 0, 38, 0, 39, 41, 42, 0, 0, 44, 0,
+ 0, 0, 46, 0, 47, 0, 0, 476, 0, 0,
+ 0, 0, 0, 0, 0, 0, 51, 48, 50, 49,
+ 0, 52, 0, 53, 0, 55, 0, 56, 0, 0,
+ 0, 0, 43, 54, 32, 0, 0, 0, 40, 0,
0, 0, 0, 45, 0, 0, 0, 0, 0, 0,
- 0, 0, 501, 0, 30, 31, 0, 0, 0, 0,
- 0, 0, 0, 0, 215, 0, 0, 0, 0, 0,
- 0, 34, 0, 0, 0, 35, 36, 0, 37, 0,
- 0, 0, 0, 0, 0, 502, 0, 0, 0, 44,
- 0, 0, 0, 0, 0, 0, 0, 607, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 51, 503, 505,
- 504, 0, 52, 0, 0, 0, 0, 226, 0, 0,
- 0, 0, 0, 43, 54, 32, 210, 0, 0, 40,
- 0, 0, 0, 0, 45, 0, 0, 0, 0, 0,
- 0, 0, 0, 501, 0, 30, 31, 0, 0, 0,
- 0, 0, 0, 0, 0, 215, 0, 0, 0, 0,
- 0, 0, 34, 0, 0, 0, 35, 36, 0, 37,
- 0, 0, 0, 0, 0, 0, 502, 0, 0, 0,
- 44, 0, 0, 0, 0, 0, 0, 0, 610, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 51, 503,
- 505, 504, 0, 52, 0, 0, 0, 0, 226, 0,
- 0, 0, 0, 0, 43, 54, 32, 210, 0, 0,
- 40, 0, 0, 0, 0, 45, 0, 0, 0, 0,
- 0, 0, 0, 0, 29, 30, 31, 0, 0, 0,
- 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
- 0, 0, 34, 0, 0, 0, 35, 36, 0, 37,
- 0, 0, 0, 38, 0, 39, 41, 42, 0, 0,
- 44, 0, 0, 0, 46, 0, 47, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 51, 48,
- 50, 49, 0, 52, 0, 53, 0, 55, 0, 56,
- 0, 0, 0, 0, 43, 54, 32, 0, 0, 0,
- 40, 0, 0, 0, 0, 45, 0, 0, 0, 0,
- 0, 0, 0, 0, -119, 0, 0, 0, 29, 30,
- 31, 0, 0, 0, 0, 0, 0, 0, 0, 33,
- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
- 35, 36, 0, 37, 0, 0, 0, 38, 0, 39,
- 41, 42, 0, 0, 44, 0, 0, 0, 46, 0,
- 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 51, 48, 50, 49, 0, 52, 0, 53,
- 0, 55, 0, 56, 0, 0, 0, 0, 43, 54,
- 32, 0, 0, 0, 40, 0, 0, 0, 0, 45,
- 0, 0, 0, 0, 0, 0, 0, 0, 29, 30,
- 31, 0, 0, 0, 0, 0, 0, 0, 0, 33,
- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
- 35, 36, 0, 37, 0, 0, 0, 38, 0, 39,
- 41, 42, 0, 0, 44, 0, 0, 0, 46, 0,
- 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 51, 48, 50, 49, 0, 52, 0, 53,
- 0, 55, 271, 56, 0, 0, 0, 0, 43, 54,
- 32, 0, 0, 0, 40, 0, 0, 0, 0, 45,
- 0, 0, 0, 0, 0, 0, 0, 0, 483, 0,
- 0, 29, 30, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 33, 0, 0, 0, 0, 0, 0, 34,
- 0, 0, 0, 35, 36, 0, 37, 0, 0, 0,
- 38, 0, 39, 41, 42, 0, 0, 44, 0, 0,
- 0, 46, 0, 47, 0, 0, 484, 0, 0, 0,
- 0, 0, 0, 0, 0, 51, 48, 50, 49, 0,
- 52, 0, 53, 0, 55, 0, 56, 0, 0, 0,
- 0, 43, 54, 32, 0, 0, 0, 40, 0, 0,
- 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
- 0, 29, 30, 31, 0, 0, 0, 0, 0, 0,
- 0, 0, 33, 0, 0, 0, 0, 0, 0, 34,
- 217, 0, 0, 568, 569, 0, 37, 0, 0, 0,
- 38, 0, 39, 41, 42, 0, 0, 44, 0, 0,
- 0, 46, 0, 47, 0, 0, 0, 0, 0, 0,
- 0, 221, 0, 0, 0, 51, 48, 50, 49, 0,
- 52, 0, 53, 0, 55, 0, 56, 0, 0, 0,
- 0, 43, 54, 32, 0, 0, 0, 40, 0, 0,
- 0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
- 0, 483, 0, 0, 29, 30, 31, 0, 0, 0,
- 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
- 0, 0, 34, 0, 0, 0, 35, 36, 0, 37,
- 0, 0, 0, 38, 0, 39, 41, 42, 0, 0,
- 44, 0, 0, 0, 46, 0, 47, 0, 0, 486,
- 0, 0, 0, 0, 0, 0, 0, 0, 51, 48,
- 50, 49, 0, 52, 0, 53, 0, 55, 0, 56,
- 0, 0, 0, 0, 43, 54, 32, 0, 0, 0,
- 40, 0, 0, 0, 0, 45, 0, 0, 0, 0,
- 0, 0, 0, 0, 475, 0, 0, 29, 30, 31,
- 0, 0, 0, 0, 0, 0, 0, 0, 33, 0,
- 0, 0, 0, 0, 0, 34, 0, 0, 0, 35,
- 36, 0, 37, 0, 0, 0, 38, 0, 39, 41,
- 42, 0, 0, 44, 0, 0, 0, 46, 0, 47,
- 0, 0, 481, 0, 0, 0, 0, 0, 0, 0,
- 0, 51, 48, 50, 49, 0, 52, 0, 53, 0,
- 55, 0, 56, 0, 0, 0, 0, 43, 54, 32,
- 0, 0, 0, 40, 0, 0, 0, 0, 45, 0,
- 0, 0, 0, 0, 0, 0, 0, 475, 0, 0,
- 29, 30, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 33, 0, 0, 0, 0, 0, 0, 34, 0,
- 0, 0, 35, 36, 0, 37, 0, 0, 0, 38,
- 0, 39, 41, 42, 0, 0, 44, 0, 0, 0,
- 46, 0, 47, 0, 0, 476, 0, 0, 0, 0,
- 0, 0, 0, 0, 51, 48, 50, 49, 0, 52,
- 0, 53, 0, 55, 0, 56, 0, 0, 0, 0,
- 43, 54, 32, 0, 0, 0, 40, 0, 0, 0,
- 0, 45, 0, 0, 0, 0, 0, 0, 0, 0,
- 109, 110, 111, 0, 0, 113, 115, 116, 0, 0,
- 117, 0, 118, 0, 0, 0, 120, 121, 122, 0,
- 0, 0, 0, 0, 0, 34, 123, 124, 125, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 126,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 129, 0, 0, 0, 0,
- 0, 0, 48, 50, 49, 130, 131, 132, 0, 134,
- 135, 136, 137, 138, 139, 0, 0, 127, 133, 119,
- 112, 114, 128, 0, 0, 0, 0, 0, 45, 0,
- 0, 0, 0, 0, 0, 0, 0, 109, 110, 111,
- 0, 0, 113, 115, 116, 0, 0, 117, 0, 118,
- 0, 0, 0, 120, 121, 122, 0, 0, 0, 0,
- 0, 0, 393, 123, 124, 125, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 126, 0, 0, 0,
- 394, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 129, 0, 0, 0, 0, 0, 398, 395,
- 397, 0, 130, 131, 132, 0, 134, 135, 136, 137,
- 138, 139, 0, 0, 127, 133, 119, 112, 114, 128,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 109, 110, 111, 0, 0, 113,
- 115, 116, 0, 0, 117, 0, 118, 0, 0, 0,
- 120, 121, 122, 0, 0, 0, 0, 0, 0, 393,
- 123, 124, 125, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 126, 0, 0, 0, 394, 0, 0,
- 0, 0, 0, 0, 0, 396, 0, 0, 0, 129,
- 0, 0, 0, 0, 0, 398, 395, 397, 0, 130,
- 131, 132, 0, 134, 135, 136, 137, 138, 139, 0,
- 0, 127, 133, 119, 112, 114, 128, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 209, 0, 0, 0, 0, 211, 0, 29, 30,
- 31, 213, 0, 0, 0, 0, 0, 0, 214, 33,
- 0, 0, 0, 0, 0, 0, 216, 217, 0, 0,
- 218, 36, 0, 37, 0, 0, 0, 38, 0, 39,
- 41, 42, 0, 0, 44, 0, 0, 0, 46, 0,
- 47, 0, 0, 0, 0, 0, 220, 0, 221, 0,
- 0, 0, 51, 219, 222, 49, 223, 52, 224, 53,
- 225, 55, 226, 56, 227, 228, 0, 0, 43, 54,
- 32, 210, 212, 0, 40, 0, 0, 0, 0, 45,
- 0, 0, 0, 0, 0, 0, 0, 0, 209, 0,
- 0, 0, 0, 211, 0, 29, 30, 31, 213, 0,
- 0, 0, 0, 0, 0, 214, 215, 0, 0, 0,
- 0, 0, 0, 216, 217, 0, 0, 218, 36, 0,
+ 0, 0, 483, 0, 0, 29, 30, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 33, 0, 0, 0,
+ 0, 0, 0, 34, 0, 0, 0, 35, 36, 0,
+ 37, 0, 0, 0, 38, 0, 39, 41, 42, 0,
+ 0, 44, 0, 0, 0, 46, 0, 47, 0, 0,
+ 484, 0, 0, 0, 0, 0, 0, 0, 0, 51,
+ 48, 50, 49, 0, 52, 0, 53, 0, 55, 0,
+ 56, 0, 0, 0, 0, 43, 54, 32, 0, 0,
+ 0, 40, 0, 0, 0, 0, 45, 0, 0, 0,
+ 0, 0, 0, 0, 0, 29, 30, 31, 0, 0,
+ 0, 0, 0, 0, 0, 0, 33, 0, 0, 0,
+ 0, 0, 0, 34, 217, 0, 0, 584, 585, 0,
37, 0, 0, 0, 38, 0, 39, 41, 42, 0,
0, 44, 0, 0, 0, 46, 0, 47, 0, 0,
- 0, 0, 0, 220, 0, 221, 0, 0, 0, 51,
- 219, 222, 49, 223, 52, 224, 53, 225, 55, 226,
- 56, 227, 228, 0, 0, 43, 54, 32, 210, 212,
+ 0, 0, 0, 0, 0, 221, 0, 0, 0, 51,
+ 48, 50, 49, 0, 52, 0, 53, 0, 55, 0,
+ 56, 0, 0, 0, 0, 43, 54, 32, 0, 0,
0, 40, 0, 0, 0, 0, 45, 0, 0, 0,
- 0, 0, 0, 0, 0, 571, 110, 111, 0, 0,
- 573, 115, 575, 30, 31, 576, 0, 118, 0, 0,
- 0, 120, 578, 579, 0, 0, 0, 0, 0, 0,
- 580, 581, 124, 125, 218, 36, 0, 37, 0, 0,
- 0, 38, 0, 39, 582, 42, 0, 0, 584, 0,
- 0, 0, 46, 0, 47, 0, 0, 0, 0, 0,
- 586, 0, 221, 0, 0, 0, 588, 585, 587, 49,
- 589, 590, 591, 53, 593, 594, 595, 596, 597, 598,
- 0, 0, 583, 592, 577, 572, 574, 128, 40, 0,
+ 0, 0, 0, 0, 0, 109, 110, 111, 0, 0,
+ 113, 115, 116, 0, 0, 117, 0, 118, 0, 0,
+ 0, 120, 121, 122, 0, 0, 0, 0, 0, 0,
+ 34, 123, 124, 125, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 126, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 129, 0, 0, 0, 0, 0, 0, 48, 50, 49,
+ 130, 131, 132, 0, 134, 135, 136, 137, 138, 139,
+ 0, 0, 127, 133, 119, 112, 114, 128, 0, 0,
0, 0, 0, 45, 0, 0, 0, 0, 0, 0,
- 0, 0, 361, 110, 111, 0, 0, 363, 115, 365,
- 30, 31, 366, 0, 118, 0, 0, 0, 120, 368,
- 369, 0, 0, 0, 0, 0, 0, 370, 371, 124,
- 125, 218, 36, 0, 37, 0, 0, 0, 38, 0,
- 39, 372, 42, 0, 0, 374, 0, 0, 0, 46,
- 0, 47, 0, -265, 0, 0, 0, 376, 0, 221,
- 0, 0, 0, 378, 375, 377, 49, 379, 380, 381,
- 53, 383, 384, 385, 386, 387, 388, 0, 0, 373,
- 382, 367, 362, 364, 128, 40, 0, 0, 0, 0,
- 45, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 109, 110, 111, 0, 0, 113, 115, 116,
+ 0, 0, 117, 0, 118, 0, 0, 0, 120, 121,
+ 122, 0, 0, 0, 0, 0, 0, 393, 123, 124,
+ 125, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 126, 0, 0, 0, 394, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 129, 0, 0,
+ 0, 0, 0, 398, 395, 397, 0, 130, 131, 132,
+ 0, 134, 135, 136, 137, 138, 139, 0, 0, 127,
+ 133, 119, 112, 114, 128, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 109,
+ 110, 111, 0, 0, 113, 115, 116, 0, 0, 117,
+ 0, 118, 0, 0, 0, 120, 121, 122, 0, 0,
+ 0, 0, 0, 0, 393, 123, 124, 125, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 126, 0,
+ 0, 0, 394, 0, 0, 0, 0, 0, 0, 0,
+ 396, 0, 0, 0, 129, 0, 0, 0, 0, 0,
+ 398, 395, 397, 0, 130, 131, 132, 0, 134, 135,
+ 136, 137, 138, 139, 0, 0, 127, 133, 119, 112,
+ 114, 128, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 209, 0, 0, 0,
+ 0, 211, 0, 29, 30, 31, 213, 0, 0, 0,
+ 0, 0, 0, 214, 215, 0, 0, 0, 0, 0,
+ 0, 216, 217, 0, 0, 218, 36, 0, 37, 0,
+ 0, 0, 38, 0, 39, 41, 42, 0, 0, 44,
+ 0, 0, 0, 46, 0, 47, 0, 0, 0, 0,
+ 0, 220, 0, 221, 0, 0, 0, 51, 219, 222,
+ 49, 223, 52, 224, 53, 225, 55, 226, 56, 227,
+ 228, 0, 0, 43, 54, 32, 210, 212, 0, 40,
+ 0, 0, 0, 0, 45, 0, 0, 0, 0, 0,
+ 0, 0, 0, 209, 0, 0, 0, 0, 211, 0,
+ 29, 30, 31, 213, 0, 0, 0, 0, 0, 0,
+ 214, 33, 0, 0, 0, 0, 0, 0, 216, 217,
+ 0, 0, 218, 36, 0, 37, 0, 0, 0, 38,
+ 0, 39, 41, 42, 0, 0, 44, 0, 0, 0,
+ 46, 0, 47, 0, 0, 0, 0, 0, 220, 0,
+ 221, 0, 0, 0, 51, 219, 222, 49, 223, 52,
+ 224, 53, 225, 55, 226, 56, 227, 228, 0, 0,
+ 43, 54, 32, 210, 212, 0, 40, 0, 0, 0,
+ 0, 45, 0, 0, 0, 0, 0, 0, 0, 0,
+ 587, 110, 111, 0, 0, 589, 115, 591, 30, 31,
+ 592, 0, 118, 0, 0, 0, 120, 594, 595, 0,
+ 0, 0, 0, 0, 0, 596, 597, 124, 125, 218,
+ 36, 0, 37, 0, 0, 0, 38, 0, 39, 598,
+ 42, 0, 0, 600, 0, 0, 0, 46, 0, 47,
+ 0, 0, 0, 0, 0, 602, 0, 221, 0, 0,
+ 0, 604, 601, 603, 49, 605, 606, 607, 53, 609,
+ 610, 611, 612, 613, 614, 0, 0, 599, 608, 593,
+ 588, 590, 128, 40, 0, 0, 0, 0, 45, 0,
+ 0, 0, 0, 0, 0, 0, 0, 361, 110, 111,
+ 0, 0, 363, 115, 365, 30, 31, 366, 0, 118,
+ 0, 0, 0, 120, 368, 369, 0, 0, 0, 0,
+ 0, 0, 370, 371, 124, 125, 218, 36, 0, 37,
+ 0, 0, 0, 38, 0, 39, 372, 42, 0, 0,
+ 374, 0, 0, 0, 46, 0, 47, 0, -267, 0,
+ 0, 0, 376, 0, 221, 0, 0, 0, 378, 375,
+ 377, 49, 379, 380, 381, 53, 383, 384, 385, 386,
+ 387, 388, 0, 0, 373, 382, 367, 362, 364, 128,
+ 40, 0, 0, 0, 0, 45, 0, 0, 0, 0,
+ 0, 0, 0, 0,
- 522, 540, 539, 519, 461, 515, 535, 514, 309, 528,
- 311, 531, 250, 526, 542, 636, 613, 182, 150, 622,
- 16, 496, 320, 497, 627, 253, 498, 633, 358, 554,
- 436, 558, 487, 472, 439, 302, 238, 392, 454, 606,
- 551, 402, 358, 553, 439, 243, 182, 445, 243, 447,
- 456, 237, 238, 238, 347, 429, 349, 450, 351, 460,
- 143, 458, 353, 467, 243, 436, 439, 176, 410, 186,
- 188, 250, 415, 338, 182, 433, 148, 171, 169, 390,
- 417, 400, 302, 140, 449, 163, 146, 425, 339, 302,
- 358, 237, 336, 307, 250, 344, 482, 436, 302, 358,
- 485, 358, 0, 0, 0, 461, 0, 0, 0, 0,
- 0, 60, 60, 451, 452, 404, 0, 0, 60, 60,
- 60, 452, 451, 320, 106, 60, 60, 60, 102, 60,
- 92, 93, 95, 302, 94, 186, 0, 60, 0, 0,
- 60, 88, 60, 405, 90, 60, 108, 180, 60, 266,
- 146, 60, 146, 489, 270, 407, 165, 178, 60, 302,
- 60, 0, 89, 330, 168, 288, 60, 60, 60, 60,
- 0, 287, 286, 284, 285, 471, 60, 60, 432, 180,
- 435, 60, 60, 452, 72, 60, 60, 451, 96, 60,
- 480, 494, 77, 500, 479, 329, 60, 334, 305, 61,
- 612, 60, 60, 69, 68, 60, 404, 60, 70, 67,
- 60, 60, 490, 60, 60, 493, 84, 404, 60, 341,
- 492, 60, 60, 180, 303, 60, 100, 60, 98, 491,
- 91, 60, 0, 298, 405, 60, 106, 97, 270, 0,
- 270, 500, 298, 500, 60, 405, 605, 270, 293, 270,
- 602, 0, 0, 0, 0, 317, 499, 509, 108, 175,
- 60, 316, 0, 60, 319, 270, 60, 290, 270, 298,
- 289, 270, 0, 291, 270, 298, 60, 60, 0, 60,
- 270, 270, 270, 500, 270, 0, 637, 295, 273, 298,
- 602, 297, 313, 60, 270, 611, 0, 300, 270, 599,
- 278, 302, 601, 500, 0, 567, 602, 0, 0, 0,
- 0, 326, 570, 563, 564, 565, 566, 0, 499, 509,
- 0, 472, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 332, 0, 0, 0,
+ 472, 546, 528, 639, 311, 182, 302, 498, 514, 16,
+ 461, 515, 496, 182, 497, 519, 309, 436, 619, 243,
+ 358, 439, 576, 572, 253, 150, 571, 487, 617, 307,
+ 238, 250, 320, 628, 633, 555, 569, 560, 558, 642,
+ 186, 250, 425, 349, 358, 182, 351, 557, 433, 347,
+ 238, 344, 339, 429, 302, 402, 243, 445, 447, 456,
+ 460, 163, 454, 458, 243, 250, 485, 143, 148, 449,
+ 353, 526, 176, 467, 237, 450, 238, 415, 338, 188,
+ 410, 237, 302, 336, 436, 482, 334, 169, 439, 436,
+ 146, 417, 392, 439, 140, 522, 358, 400, 404, 0,
+ 390, 171, 358, 0, 186, 500, 146, 0, 643, 0,
+ 0, 178, 0, 0, 0, 0, 404, 60, 60, 489,
+ 452, 500, 320, 0, 534, 0, 405, 60, 0, 180,
+ 146, 60, 0, 180, 60, 407, 490, 60, 302, 452,
+ 60, 60, 60, 60, 405, 60, 284, 285, 287, 60,
+ 286, 451, 358, 60, 165, 180, 266, 60, 60, 461,
+ 451, 270, 288, 60, 60, 60, 493, 60, 60, 60,
+ 84, 106, 92, 91, 60, 432, 60, 72, 60, 168,
+ 98, 435, 77, 60, 96, 60, 60, 60, 341, 302,
+ 93, 94, 500, 108, 329, 100, 60, 102, 60, 618,
+ 302, 95, 88, 330, 60, 60, 60, 60, 90, 89,
+ 70, 60, 97, 452, 60, 60, 451, 492, 60, 60,
+ 494, 60, 61, 68, 60, 60, 69, 491, 60, 471,
+ 67, 302, 404, 480, 60, 106, 60, 479, 0, 270,
+ 298, 270, 298, 278, 298, 270, 0, 270, 60, 270,
+ 0, 316, 0, 270, 332, 0, 500, 108, 175, 538,
+ 405, 293, 319, 0, 317, 303, 326, 60, 60, 60,
+ 0, 0, 270, 270, 270, 290, 291, 60, 295, 298,
+ 60, 60, 270, 298, 270, 270, 270, 289, 270, 0,
+ 273, 500, 313, 0, 551, 545, 305, 534, 508, 615,
+ 542, 297, 0, 500, 0, 300, 499, 509, 500, 0,
+ 508, 0, 0, 0, 0, 508, 472, 0, 499, 509,
+ 583, 0, 0, 499, 509, 0, 0, 586, 579, 580,
+ 581, 582, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 550,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 551,
+ 0, 0, 0, 0, 0, 0, 552, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 608, 0, 0, 0, 0, 0,
- 0, 0, 500, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 499, 509, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0};
+ 0, 0};
const short QDeclarativeJSGrammar::action_check [] = {
- 55, 7, 33, 7, 55, 7, 60, 36, 90, 55,
- 7, 16, 36, 7, 7, 7, 7, 36, 7, 60,
- 36, 8, 33, 66, 36, 33, 60, 36, 7, 36,
- 7, 7, 33, 36, 24, 7, 7, 37, 8, 60,
- 66, 29, 17, 5, 7, 60, 7, 33, 33, 33,
- 7, 20, 33, 36, 7, 7, 36, 7, 36, 33,
- 7, 17, 60, 36, 1, 33, 79, 2, 8, 7,
- 36, 1, 8, 55, 7, 2, 8, 2, 7, 7,
- 79, 36, 77, 79, 48, 36, 7, 36, 55, 48,
- 36, 36, 33, 36, 8, 60, 1, 31, 0, 2,
- 8, 61, 60, 1, 48, 6, 10, 61, 7, 8,
- -1, 8, 8, 61, 8, -1, -1, 48, 40, 20,
- 8, 60, 8, 42, -1, 40, -1, 50, 8, 51,
- 8, 54, 8, 15, 53, 8, 51, 61, 62, 8,
- 5, 61, 62, 61, 62, 61, 62, 40, 90, 61,
- 62, 55, 34, 79, 61, 62, 40, 8, 51, 8,
- 8, 61, 62, 60, 60, 50, 60, 51, 56, 54,
- 56, 61, 62, 8, 61, 62, 56, 15, 61, 62,
- 61, 62, 60, 56, 60, 15, 25, 8, 27, 29,
- 7, 60, 25, 29, 27, 7, 34, 12, 36, 38,
- 25, 25, 27, 27, 34, 38, 36, 12, 8, 12,
- 61, 60, 60, 38, 38, 8, 25, 25, 27, 27,
- -1, 33, 7, -1, -1, 29, 61, 62, 29, 38,
- 38, -1, 29, 8, -1, 75, 15, 8, 36, 75,
- 61, 62, 57, -1, 61, 62, 86, 29, 63, -1,
- 86, 15, 57, -1, 57, 34, 18, 19, 63, -1,
- 63, 61, 62, 61, 62, 61, 62, -1, 61, 62,
- 34, 75, 36, 15, 75, -1, 61, 62, 75, 15,
- 92, -1, 86, 45, 46, 86, 61, 62, 29, 86,
- 61, 62, 34, 75, 36, 91, 47, 33, 34, 15,
- 36, 18, 19, -1, 86, 18, 19, 29, -1, -1,
- 61, 62, -1, -1, 18, 19, -1, 33, 34, 29,
- 36, -1, 25, 29, 27, 66, 67, 68, 45, 46,
- -1, -1, 45, 46, -1, 38, -1, -1, 23, 24,
- 91, 45, 46, -1, 66, 67, 68, 32, -1, -1,
- 35, 92, 37, 29, 23, 24, 66, 67, 68, -1,
- 66, 67, 68, 32, 23, 24, 35, 29, 37, -1,
- 92, 23, 24, 32, 36, -1, 35, -1, 37, -1,
- 32, 29, 92, 35, -1, 37, 92, 23, 24, 29,
- 66, 67, 68, -1, -1, 29, 32, -1, 29, 35,
- -1, 37, 36, -1, 66, 67, 68, 93, 94, 95,
- 96, 97, 98, 61, 62, -1, 92, 29, 66, 67,
- 68, 61, 62, -1, -1, -1, 66, 67, 68, -1,
- 92, -1, 66, 67, 68, 66, 67, 68, -1, -1,
- -1, -1, -1, -1, 92, -1, -1, -1, -1, 61,
- 62, -1, 92, 29, 66, 67, 68, -1, 92, -1,
- -1, 92, 29, -1, -1, 29, -1, -1, -1, -1,
- 23, 24, -1, -1, -1, -1, -1, -1, 31, 32,
- 92, -1, 35, -1, 37, 61, 62, -1, -1, -1,
- 66, 67, 68, -1, 61, 62, -1, 61, 62, 66,
- 67, 68, 66, 67, 68, -1, -1, -1, -1, -1,
- 12, 13, -1, -1, -1, -1, 92, -1, -1, -1,
- 22, -1, -1, -1, -1, 92, -1, 29, 92, -1,
+ 7, 16, 55, 7, 33, 36, 33, 55, 36, 7,
+ 7, 7, 7, 7, 7, 36, 7, 7, 36, 8,
+ 36, 55, 60, 29, 7, 7, 36, 7, 33, 7,
+ 7, 7, 7, 36, 36, 48, 1, 0, 90, 79,
+ 7, 33, 8, 90, 2, 7, 33, 55, 36, 60,
+ 36, 20, 33, 5, 1, 5, 79, 36, 7, 33,
+ 5, 60, 33, 33, 8, 33, 17, 24, 2, 7,
+ 34, 2, 7, 1, 7, 36, 60, 37, 8, 8,
+ 36, 66, 36, 7, 1, 17, -1, -1, 36, 48,
+ 36, 33, 8, 66, 7, 48, 36, 33, 7, 36,
+ 2, 7, 8, 8, 8, 77, 61, 15, 8, 8,
+ 6, -1, 31, 36, 8, 10, -1, -1, -1, 60,
+ 8, 60, -1, 48, 20, -1, 34, -1, 8, 8,
+ 8, -1, -1, 60, 60, 8, 79, 55, 60, 50,
+ 8, 61, 8, 54, 8, 8, 61, 61, 62, 61,
+ 62, 42, 56, 50, 40, 60, 56, 54, 79, 40,
+ 55, 60, 53, 61, 62, 51, 60, 15, 61, 62,
+ 51, 61, 62, 61, 61, 62, 56, 56, 61, 62,
+ 40, 8, 60, 8, 61, 62, 34, 60, 8, 61,
+ 62, 51, 60, 56, 60, 40, 60, 12, 29, 61,
+ 62, 25, 25, 27, 27, 15, 51, 36, 29, 15,
+ 29, 61, 62, 12, 38, 38, 8, 29, 7, 7,
+ 29, -1, 8, -1, 34, 8, 36, 25, 34, 27,
+ 36, 15, 61, 62, 61, 62, 61, 62, 7, 29,
+ 38, 91, 57, 7, 75, 33, 8, 25, 63, 27,
+ 34, -1, 36, -1, 75, 86, 75, 12, 57, -1,
+ 38, 15, -1, 75, 63, 86, 75, 86, 15, 61,
+ 62, -1, 61, 62, 86, 61, 62, 86, 61, 62,
+ 34, 25, 36, 27, -1, 75, 33, 34, 29, 36,
+ 18, 19, 61, 62, 38, 47, 86, 61, 62, 61,
+ 62, 15, 57, -1, 92, 18, 19, -1, 63, 61,
+ 62, 29, -1, 18, 19, 18, 19, 45, 46, 33,
+ 34, -1, 36, 29, -1, 66, 67, 68, -1, -1,
+ -1, -1, 45, 46, 29, -1, -1, -1, 29, 91,
+ 45, 46, 45, 46, 23, 24, 29, -1, 66, 67,
+ 68, 92, 29, 32, 23, 24, 35, 25, 37, 27,
+ 66, 67, 68, 32, -1, 29, 35, -1, 37, 29,
+ 38, 66, 67, 68, 92, 66, 67, 68, -1, -1,
+ 29, -1, -1, 66, 67, 68, 92, 29, -1, 66,
+ 67, 68, 29, -1, -1, -1, -1, 92, 29, -1,
+ -1, 92, 66, 67, 68, -1, 66, 67, 68, 92,
+ -1, -1, -1, -1, 29, 92, -1, 66, 67, 68,
+ 29, -1, -1, -1, 66, 67, 68, 29, 92, 66,
+ 67, 68, 92, 23, 24, 66, 67, 68, -1, -1,
+ -1, 29, 32, 92, -1, 35, -1, 37, 36, 29,
+ 92, 66, 67, 68, -1, 92, 36, 66, 67, 68,
+ -1, 92, 23, 24, 66, 67, 68, -1, -1, -1,
+ 31, 32, -1, -1, 35, -1, 37, 92, 66, 67,
+ 68, -1, -1, 92, 23, 24, 66, 67, 68, 29,
+ 92, -1, 31, 32, 23, 24, 35, 29, 37, -1,
+ -1, -1, 31, 32, 92, 29, 35, -1, 37, -1,
+ -1, 29, 92, -1, 93, 94, 95, 96, 97, 98,
+ -1, 61, 62, -1, 29, -1, 66, 67, 68, 61,
+ 62, -1, -1, 29, 66, 67, 68, 61, 62, -1,
+ -1, -1, 66, 67, 68, -1, -1, -1, 66, 67,
+ 68, -1, 92, -1, -1, -1, 61, 62, -1, -1,
+ 92, 66, 67, 68, -1, 61, 62, 29, 92, -1,
+ 66, 67, 68, -1, 92, -1, -1, -1, -1, -1,
+ -1, -1, -1, 23, 24, -1, -1, 92, 3, -1,
+ -1, 31, 32, -1, -1, 35, 92, 37, 13, 61,
+ 62, -1, 17, -1, 66, 67, 68, -1, -1, -1,
+ -1, 26, -1, 28, -1, -1, 31, -1, -1, -1,
+ -1, -1, -1, -1, 39, -1, 41, 42, -1, -1,
+ 92, -1, -1, -1, 49, -1, -1, 52, 53, -1,
+ -1, -1, -1, 58, -1, -1, -1, -1, -1, 64,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 12,
+ 13, 3, -1, -1, -1, 80, -1, -1, -1, 22,
+ -1, 13, -1, -1, -1, 17, 29, -1, -1, -1,
+ 33, 34, -1, 36, 26, -1, 28, -1, -1, -1,
+ 43, -1, -1, -1, 47, -1, -1, 39, -1, 41,
+ 42, -1, -1, -1, -1, -1, -1, 49, -1, -1,
+ 52, 53, 65, 66, 67, 68, 58, 70, -1, -1,
+ -1, -1, 64, -1, -1, -1, -1, -1, 81, 82,
+ 83, 12, 13, -1, 87, -1, -1, -1, 80, 92,
+ -1, 22, -1, -1, -1, -1, -1, -1, 29, -1,
+ -1, -1, 33, 34, -1, 36, -1, -1, -1, 12,
+ 13, -1, 43, -1, -1, -1, 47, -1, -1, 22,
+ -1, -1, -1, -1, -1, -1, 29, -1, -1, -1,
+ 33, 34, -1, 36, 65, 66, 67, 68, -1, 70,
+ 43, -1, -1, -1, 47, -1, -1, -1, -1, -1,
+ 81, 82, 83, -1, -1, -1, 87, -1, -1, -1,
+ -1, 92, 65, 66, 67, 68, -1, 70, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 81, 82,
+ 83, -1, -1, -1, 87, -1, -1, -1, -1, 92,
+ 12, 13, -1, -1, -1, -1, -1, -1, 12, 13,
+ 22, -1, -1, -1, -1, -1, -1, 29, 22, -1,
+ -1, 33, 34, -1, 36, 29, -1, -1, -1, 33,
+ 34, 43, 36, -1, -1, 47, -1, -1, -1, 43,
+ -1, -1, -1, 47, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 65, 66, 67, 68, -1, 70, -1,
+ -1, 65, 66, 67, 68, -1, 70, -1, -1, 81,
+ 82, 83, -1, -1, -1, 87, -1, 81, 82, 83,
+ 92, -1, -1, 87, -1, -1, -1, -1, 92, 12,
+ 13, -1, -1, -1, -1, -1, -1, 12, 13, 22,
+ -1, -1, -1, -1, -1, -1, 29, 22, -1, -1,
+ 33, 34, -1, 36, 29, -1, -1, -1, 33, 34,
+ 43, 36, -1, -1, 47, -1, -1, -1, 43, -1,
+ -1, -1, 47, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 65, 66, 67, 68, -1, 70, -1, -1,
+ 65, 66, 67, 68, -1, 70, -1, -1, 81, 82,
+ 83, -1, -1, -1, 87, -1, 81, 82, 83, 92,
+ -1, -1, 87, -1, -1, -1, -1, 92, -1, -1,
+ -1, -1, -1, -1, -1, -1, 10, -1, 12, 13,
+ -1, -1, -1, -1, -1, -1, -1, -1, 22, -1,
+ -1, -1, -1, -1, -1, 29, -1, -1, -1, 33,
+ 34, -1, 36, -1, -1, -1, -1, -1, -1, 43,
+ -1, -1, -1, 47, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 65, 66, 67, 68, -1, 70, -1, -1, -1,
+ -1, 75, -1, -1, -1, -1, -1, 81, 82, 83,
+ 84, -1, -1, 87, -1, -1, -1, -1, 92, -1,
+ -1, -1, -1, -1, -1, -1, -1, 10, -1, 12,
+ 13, -1, -1, -1, -1, -1, -1, -1, -1, 22,
+ -1, -1, -1, -1, -1, -1, 29, -1, -1, -1,
+ 33, 34, -1, 36, -1, -1, -1, -1, -1, -1,
+ 43, -1, -1, -1, 47, -1, -1, -1, -1, -1,
+ -1, -1, 55, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 65, 66, 67, 68, -1, 70, -1, -1,
+ -1, -1, 75, -1, -1, -1, -1, -1, 81, 82,
+ 83, 84, -1, -1, 87, -1, -1, -1, -1, 92,
+ -1, -1, -1, -1, -1, -1, -1, -1, 10, -1,
+ 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
+ 22, -1, -1, -1, -1, -1, -1, 29, -1, -1,
-1, 33, 34, -1, 36, -1, -1, -1, -1, -1,
- -1, 43, -1, -1, -1, 47, -1, -1, 3, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 13, -1,
- -1, -1, 17, 65, 66, 67, 68, -1, 70, -1,
- -1, 26, -1, 28, -1, -1, -1, -1, -1, 81,
- 82, 83, -1, -1, 39, 87, 41, 42, -1, -1,
- 92, -1, -1, -1, 49, 12, 13, 52, 53, -1,
- -1, -1, -1, 58, -1, 22, -1, -1, -1, 64,
- -1, -1, 29, -1, -1, -1, 33, 34, -1, 36,
- -1, -1, -1, -1, -1, 80, 43, -1, -1, -1,
- 47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 3, -1, 65, 66,
- 67, 68, -1, 70, -1, -1, 13, -1, -1, -1,
- 17, -1, -1, -1, 81, 82, 83, -1, -1, 26,
- 87, 28, -1, -1, 31, 92, -1, -1, -1, -1,
- -1, -1, 39, -1, 41, 42, -1, -1, -1, -1,
- -1, -1, 49, -1, -1, 52, 53, -1, -1, -1,
- -1, 58, -1, -1, -1, -1, -1, 64, -1, -1,
- -1, -1, -1, -1, -1, -1, 12, 13, -1, -1,
- -1, -1, -1, 80, -1, -1, 22, -1, -1, -1,
- -1, -1, -1, 29, -1, -1, -1, 33, 34, -1,
- 36, -1, -1, -1, 12, 13, -1, 43, -1, -1,
- -1, 47, -1, -1, 22, -1, -1, -1, -1, -1,
- -1, 29, -1, -1, -1, 33, 34, -1, 36, 65,
- 66, 67, 68, -1, 70, 43, -1, -1, -1, 47,
- -1, -1, -1, -1, -1, 81, 82, 83, -1, -1,
- -1, 87, -1, -1, -1, -1, 92, 65, 66, 67,
- 68, -1, 70, -1, -1, -1, -1, -1, -1, -1,
+ -1, 43, -1, -1, -1, 47, -1, -1, -1, -1,
+ -1, -1, -1, 55, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 65, 66, 67, 68, -1, 70, -1,
+ -1, -1, -1, 75, -1, -1, -1, -1, -1, 81,
+ 82, 83, 84, -1, -1, 87, -1, -1, -1, -1,
+ 92, -1, -1, -1, -1, -1, -1, -1, -1, 11,
+ 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
+ 22, -1, -1, -1, -1, -1, -1, 29, -1, -1,
+ -1, 33, 34, -1, 36, -1, -1, -1, 40, -1,
+ 42, 43, 44, -1, -1, 47, -1, -1, -1, 51,
+ -1, 53, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 65, 66, 67, 68, -1, 70, -1,
+ 72, -1, 74, -1, 76, -1, -1, -1, -1, 81,
+ 82, 83, -1, -1, -1, 87, -1, -1, -1, -1,
+ 92, -1, -1, -1, -1, -1, -1, -1, -1, 7,
+ -1, -1, -1, 11, 12, 13, -1, -1, -1, -1,
+ -1, -1, -1, -1, 22, -1, -1, -1, -1, -1,
+ -1, 29, -1, -1, -1, 33, 34, -1, 36, -1,
+ -1, -1, 40, -1, 42, 43, 44, -1, -1, 47,
+ -1, -1, -1, 51, -1, 53, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 65, 66, 67,
+ 68, -1, 70, -1, 72, -1, 74, -1, 76, -1,
-1, -1, -1, 81, 82, 83, -1, -1, -1, 87,
- -1, -1, -1, -1, 92, 12, 13, -1, -1, -1,
- -1, -1, -1, 12, 13, 22, -1, -1, -1, -1,
- -1, -1, 29, 22, -1, -1, 33, 34, -1, 36,
- 29, -1, -1, -1, 33, 34, 43, 36, -1, -1,
- 47, -1, -1, -1, 43, -1, -1, -1, 47, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 65, 66,
- 67, 68, -1, 70, -1, -1, 65, 66, 67, 68,
- -1, 70, -1, -1, 81, 82, 83, -1, -1, -1,
- 87, -1, 81, 82, 83, 92, -1, -1, 87, -1,
- -1, -1, -1, 92, 12, 13, -1, -1, -1, -1,
- -1, -1, 12, 13, 22, -1, -1, -1, -1, -1,
- -1, 29, 22, -1, -1, 33, 34, -1, 36, 29,
- -1, -1, -1, 33, 34, 43, 36, -1, -1, 47,
- -1, -1, -1, 43, -1, -1, -1, 47, -1, -1,
+ -1, -1, -1, -1, 92, -1, -1, -1, -1, -1,
+ -1, -1, -1, 11, 12, 13, -1, -1, -1, -1,
+ -1, -1, -1, -1, 22, -1, -1, -1, -1, -1,
+ -1, 29, -1, -1, -1, 33, 34, -1, 36, -1,
+ -1, -1, 40, -1, 42, 43, 44, -1, -1, 47,
+ -1, -1, -1, 51, -1, 53, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 65, 66, 67,
- 68, -1, 70, -1, -1, 65, 66, 67, 68, -1,
- 70, -1, -1, 81, 82, 83, -1, -1, -1, 87,
- -1, 81, 82, 83, 92, -1, -1, 87, -1, -1,
- -1, -1, 92, -1, -1, -1, -1, -1, -1, -1,
- -1, 10, -1, 12, 13, -1, -1, -1, -1, -1,
+ 68, -1, 70, -1, 72, -1, 74, 75, 76, -1,
+ -1, -1, -1, 81, 82, 83, -1, -1, -1, 87,
+ -1, -1, -1, -1, 92, -1, -1, -1, -1, -1,
+ -1, -1, -1, 8, -1, -1, 11, 12, 13, -1,
+ -1, -1, -1, -1, -1, -1, -1, 22, -1, -1,
+ -1, -1, -1, -1, 29, -1, -1, -1, 33, 34,
+ -1, 36, -1, -1, -1, 40, -1, 42, 43, 44,
+ -1, -1, 47, -1, -1, -1, 51, -1, 53, -1,
+ -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
+ 65, 66, 67, 68, -1, 70, -1, 72, -1, 74,
+ -1, 76, -1, -1, -1, -1, 81, 82, 83, -1,
+ -1, -1, 87, -1, -1, -1, -1, 92, -1, -1,
+ -1, -1, -1, -1, -1, -1, 8, -1, -1, 11,
+ 12, 13, -1, -1, -1, -1, -1, -1, -1, -1,
+ 22, -1, -1, -1, -1, -1, -1, 29, -1, -1,
+ -1, 33, 34, -1, 36, -1, -1, -1, 40, -1,
+ 42, 43, 44, -1, -1, 47, -1, -1, -1, 51,
+ -1, 53, -1, -1, 56, -1, -1, -1, -1, -1,
+ -1, -1, -1, 65, 66, 67, 68, -1, 70, -1,
+ 72, -1, 74, -1, 76, -1, -1, -1, -1, 81,
+ 82, 83, -1, -1, -1, 87, -1, -1, -1, -1,
+ 92, -1, -1, -1, -1, -1, -1, -1, -1, 8,
+ -1, -1, 11, 12, 13, -1, -1, -1, -1, -1,
-1, -1, -1, 22, -1, -1, -1, -1, -1, -1,
29, -1, -1, -1, 33, 34, -1, 36, -1, -1,
- -1, -1, -1, -1, 43, -1, -1, -1, 47, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 40, -1, 42, 43, 44, -1, -1, 47, -1,
+ -1, -1, 51, -1, 53, -1, -1, 56, -1, -1,
-1, -1, -1, -1, -1, -1, 65, 66, 67, 68,
- -1, 70, -1, -1, -1, -1, 75, -1, -1, -1,
- -1, -1, 81, 82, 83, 84, -1, -1, 87, -1,
+ -1, 70, -1, 72, -1, 74, -1, 76, -1, -1,
+ -1, -1, 81, 82, 83, -1, -1, -1, 87, -1,
-1, -1, -1, 92, -1, -1, -1, -1, -1, -1,
- -1, -1, 10, -1, 12, 13, -1, -1, -1, -1,
- -1, -1, -1, -1, 22, -1, -1, -1, -1, -1,
- -1, 29, -1, -1, -1, 33, 34, -1, 36, -1,
- -1, -1, -1, -1, -1, 43, -1, -1, -1, 47,
- -1, -1, -1, -1, -1, -1, -1, 55, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 65, 66, 67,
- 68, -1, 70, -1, -1, -1, -1, 75, -1, -1,
- -1, -1, -1, 81, 82, 83, 84, -1, -1, 87,
- -1, -1, -1, -1, 92, -1, -1, -1, -1, -1,
- -1, -1, -1, 10, -1, 12, 13, -1, -1, -1,
- -1, -1, -1, -1, -1, 22, -1, -1, -1, -1,
- -1, -1, 29, -1, -1, -1, 33, 34, -1, 36,
- -1, -1, -1, -1, -1, -1, 43, -1, -1, -1,
- 47, -1, -1, -1, -1, -1, -1, -1, 55, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 65, 66,
- 67, 68, -1, 70, -1, -1, -1, -1, 75, -1,
- -1, -1, -1, -1, 81, 82, 83, 84, -1, -1,
- 87, -1, -1, -1, -1, 92, -1, -1, -1, -1,
- -1, -1, -1, -1, 11, 12, 13, -1, -1, -1,
- -1, -1, -1, -1, -1, 22, -1, -1, -1, -1,
- -1, -1, 29, -1, -1, -1, 33, 34, -1, 36,
- -1, -1, -1, 40, -1, 42, 43, 44, -1, -1,
- 47, -1, -1, -1, 51, -1, 53, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 65, 66,
- 67, 68, -1, 70, -1, 72, -1, 74, -1, 76,
- -1, -1, -1, -1, 81, 82, 83, -1, -1, -1,
- 87, -1, -1, -1, -1, 92, -1, -1, -1, -1,
- -1, -1, -1, -1, 7, -1, -1, -1, 11, 12,
- 13, -1, -1, -1, -1, -1, -1, -1, -1, 22,
- -1, -1, -1, -1, -1, -1, 29, -1, -1, -1,
- 33, 34, -1, 36, -1, -1, -1, 40, -1, 42,
- 43, 44, -1, -1, 47, -1, -1, -1, 51, -1,
- 53, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 65, 66, 67, 68, -1, 70, -1, 72,
- -1, 74, -1, 76, -1, -1, -1, -1, 81, 82,
- 83, -1, -1, -1, 87, -1, -1, -1, -1, 92,
- -1, -1, -1, -1, -1, -1, -1, -1, 11, 12,
- 13, -1, -1, -1, -1, -1, -1, -1, -1, 22,
- -1, -1, -1, -1, -1, -1, 29, -1, -1, -1,
- 33, 34, -1, 36, -1, -1, -1, 40, -1, 42,
- 43, 44, -1, -1, 47, -1, -1, -1, 51, -1,
- 53, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 65, 66, 67, 68, -1, 70, -1, 72,
- -1, 74, 75, 76, -1, -1, -1, -1, 81, 82,
- 83, -1, -1, -1, 87, -1, -1, -1, -1, 92,
- -1, -1, -1, -1, -1, -1, -1, -1, 8, -1,
- -1, 11, 12, 13, -1, -1, -1, -1, -1, -1,
- -1, -1, 22, -1, -1, -1, -1, -1, -1, 29,
- -1, -1, -1, 33, 34, -1, 36, -1, -1, -1,
- 40, -1, 42, 43, 44, -1, -1, 47, -1, -1,
- -1, 51, -1, 53, -1, -1, 56, -1, -1, -1,
- -1, -1, -1, -1, -1, 65, 66, 67, 68, -1,
- 70, -1, 72, -1, 74, -1, 76, -1, -1, -1,
- -1, 81, 82, 83, -1, -1, -1, 87, -1, -1,
- -1, -1, 92, -1, -1, -1, -1, -1, -1, -1,
- -1, 11, 12, 13, -1, -1, -1, -1, -1, -1,
- -1, -1, 22, -1, -1, -1, -1, -1, -1, 29,
- 30, -1, -1, 33, 34, -1, 36, -1, -1, -1,
- 40, -1, 42, 43, 44, -1, -1, 47, -1, -1,
- -1, 51, -1, 53, -1, -1, -1, -1, -1, -1,
- -1, 61, -1, -1, -1, 65, 66, 67, 68, -1,
- 70, -1, 72, -1, 74, -1, 76, -1, -1, -1,
- -1, 81, 82, 83, -1, -1, -1, 87, -1, -1,
- -1, -1, 92, -1, -1, -1, -1, -1, -1, -1,
- -1, 8, -1, -1, 11, 12, 13, -1, -1, -1,
- -1, -1, -1, -1, -1, 22, -1, -1, -1, -1,
- -1, -1, 29, -1, -1, -1, 33, 34, -1, 36,
- -1, -1, -1, 40, -1, 42, 43, 44, -1, -1,
- 47, -1, -1, -1, 51, -1, 53, -1, -1, 56,
- -1, -1, -1, -1, -1, -1, -1, -1, 65, 66,
- 67, 68, -1, 70, -1, 72, -1, 74, -1, 76,
- -1, -1, -1, -1, 81, 82, 83, -1, -1, -1,
- 87, -1, -1, -1, -1, 92, -1, -1, -1, -1,
- -1, -1, -1, -1, 8, -1, -1, 11, 12, 13,
- -1, -1, -1, -1, -1, -1, -1, -1, 22, -1,
- -1, -1, -1, -1, -1, 29, -1, -1, -1, 33,
- 34, -1, 36, -1, -1, -1, 40, -1, 42, 43,
- 44, -1, -1, 47, -1, -1, -1, 51, -1, 53,
- -1, -1, 56, -1, -1, -1, -1, -1, -1, -1,
- -1, 65, 66, 67, 68, -1, 70, -1, 72, -1,
- 74, -1, 76, -1, -1, -1, -1, 81, 82, 83,
- -1, -1, -1, 87, -1, -1, -1, -1, 92, -1,
- -1, -1, -1, -1, -1, -1, -1, 8, -1, -1,
- 11, 12, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, 22, -1, -1, -1, -1, -1, -1, 29, -1,
- -1, -1, 33, 34, -1, 36, -1, -1, -1, 40,
- -1, 42, 43, 44, -1, -1, 47, -1, -1, -1,
- 51, -1, 53, -1, -1, 56, -1, -1, -1, -1,
- -1, -1, -1, -1, 65, 66, 67, 68, -1, 70,
- -1, 72, -1, 74, -1, 76, -1, -1, -1, -1,
- 81, 82, 83, -1, -1, -1, 87, -1, -1, -1,
- -1, 92, -1, -1, -1, -1, -1, -1, -1, -1,
- 4, 5, 6, -1, -1, 9, 10, 11, -1, -1,
- 14, -1, 16, -1, -1, -1, 20, 21, 22, -1,
- -1, -1, -1, -1, -1, 29, 30, 31, 32, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 43,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 59, -1, -1, -1, -1,
- -1, -1, 66, 67, 68, 69, 70, 71, -1, 73,
- 74, 75, 76, 77, 78, -1, -1, 81, 82, 83,
- 84, 85, 86, -1, -1, -1, -1, -1, 92, -1,
- -1, -1, -1, -1, -1, -1, -1, 4, 5, 6,
- -1, -1, 9, 10, 11, -1, -1, 14, -1, 16,
- -1, -1, -1, 20, 21, 22, -1, -1, -1, -1,
- -1, -1, 29, 30, 31, 32, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 43, -1, -1, -1,
- 47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 59, -1, -1, -1, -1, -1, 65, 66,
- 67, -1, 69, 70, 71, -1, 73, 74, 75, 76,
- 77, 78, -1, -1, 81, 82, 83, 84, 85, 86,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 4, 5, 6, -1, -1, 9,
- 10, 11, -1, -1, 14, -1, 16, -1, -1, -1,
- 20, 21, 22, -1, -1, -1, -1, -1, -1, 29,
- 30, 31, 32, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 43, -1, -1, -1, 47, -1, -1,
- -1, -1, -1, -1, -1, 55, -1, -1, -1, 59,
- -1, -1, -1, -1, -1, 65, 66, 67, -1, 69,
- 70, 71, -1, 73, 74, 75, 76, 77, 78, -1,
- -1, 81, 82, 83, 84, 85, 86, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 4, -1, -1, -1, -1, 9, -1, 11, 12,
- 13, 14, -1, -1, -1, -1, -1, -1, 21, 22,
- -1, -1, -1, -1, -1, -1, 29, 30, -1, -1,
- 33, 34, -1, 36, -1, -1, -1, 40, -1, 42,
- 43, 44, -1, -1, 47, -1, -1, -1, 51, -1,
- 53, -1, -1, -1, -1, -1, 59, -1, 61, -1,
- -1, -1, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, -1, -1, 81, 82,
- 83, 84, 85, -1, 87, -1, -1, -1, -1, 92,
- -1, -1, -1, -1, -1, -1, -1, -1, 4, -1,
- -1, -1, -1, 9, -1, 11, 12, 13, 14, -1,
- -1, -1, -1, -1, -1, 21, 22, -1, -1, -1,
+ -1, -1, 8, -1, -1, 11, 12, 13, -1, -1,
+ -1, -1, -1, -1, -1, -1, 22, -1, -1, -1,
+ -1, -1, -1, 29, -1, -1, -1, 33, 34, -1,
+ 36, -1, -1, -1, 40, -1, 42, 43, 44, -1,
+ -1, 47, -1, -1, -1, 51, -1, 53, -1, -1,
+ 56, -1, -1, -1, -1, -1, -1, -1, -1, 65,
+ 66, 67, 68, -1, 70, -1, 72, -1, 74, -1,
+ 76, -1, -1, -1, -1, 81, 82, 83, -1, -1,
+ -1, 87, -1, -1, -1, -1, 92, -1, -1, -1,
+ -1, -1, -1, -1, -1, 11, 12, 13, -1, -1,
+ -1, -1, -1, -1, -1, -1, 22, -1, -1, -1,
-1, -1, -1, 29, 30, -1, -1, 33, 34, -1,
36, -1, -1, -1, 40, -1, 42, 43, 44, -1,
-1, 47, -1, -1, -1, 51, -1, 53, -1, -1,
- -1, -1, -1, 59, -1, 61, -1, -1, -1, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, -1, -1, 81, 82, 83, 84, 85,
+ -1, -1, -1, -1, -1, 61, -1, -1, -1, 65,
+ 66, 67, 68, -1, 70, -1, 72, -1, 74, -1,
+ 76, -1, -1, -1, -1, 81, 82, 83, -1, -1,
-1, 87, -1, -1, -1, -1, 92, -1, -1, -1,
-1, -1, -1, -1, -1, 4, 5, 6, -1, -1,
- 9, 10, 11, 12, 13, 14, -1, 16, -1, -1,
+ 9, 10, 11, -1, -1, 14, -1, 16, -1, -1,
-1, 20, 21, 22, -1, -1, -1, -1, -1, -1,
- 29, 30, 31, 32, 33, 34, -1, 36, -1, -1,
- -1, 40, -1, 42, 43, 44, -1, -1, 47, -1,
- -1, -1, 51, -1, 53, -1, -1, -1, -1, -1,
- 59, -1, 61, -1, -1, -1, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- -1, -1, 81, 82, 83, 84, 85, 86, 87, -1,
+ 29, 30, 31, 32, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 43, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 59, -1, -1, -1, -1, -1, -1, 66, 67, 68,
+ 69, 70, 71, -1, 73, 74, 75, 76, 77, 78,
+ -1, -1, 81, 82, 83, 84, 85, 86, -1, -1,
-1, -1, -1, 92, -1, -1, -1, -1, -1, -1,
-1, -1, 4, 5, 6, -1, -1, 9, 10, 11,
- 12, 13, 14, -1, 16, -1, -1, -1, 20, 21,
+ -1, -1, 14, -1, 16, -1, -1, -1, 20, 21,
22, -1, -1, -1, -1, -1, -1, 29, 30, 31,
- 32, 33, 34, -1, 36, -1, -1, -1, 40, -1,
- 42, 43, 44, -1, -1, 47, -1, -1, -1, 51,
- -1, 53, -1, 55, -1, -1, -1, 59, -1, 61,
- -1, -1, -1, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, -1, -1, 81,
- 82, 83, 84, 85, 86, 87, -1, -1, -1, -1,
- 92, -1, -1, -1, -1, -1, -1, -1, -1,
+ 32, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 43, -1, -1, -1, 47, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 59, -1, -1,
+ -1, -1, -1, 65, 66, 67, -1, 69, 70, 71,
+ -1, 73, 74, 75, 76, 77, 78, -1, -1, 81,
+ 82, 83, 84, 85, 86, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 4,
+ 5, 6, -1, -1, 9, 10, 11, -1, -1, 14,
+ -1, 16, -1, -1, -1, 20, 21, 22, -1, -1,
+ -1, -1, -1, -1, 29, 30, 31, 32, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 43, -1,
+ -1, -1, 47, -1, -1, -1, -1, -1, -1, -1,
+ 55, -1, -1, -1, 59, -1, -1, -1, -1, -1,
+ 65, 66, 67, -1, 69, 70, 71, -1, 73, 74,
+ 75, 76, 77, 78, -1, -1, 81, 82, 83, 84,
+ 85, 86, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 4, -1, -1, -1,
+ -1, 9, -1, 11, 12, 13, 14, -1, -1, -1,
+ -1, -1, -1, 21, 22, -1, -1, -1, -1, -1,
+ -1, 29, 30, -1, -1, 33, 34, -1, 36, -1,
+ -1, -1, 40, -1, 42, 43, 44, -1, -1, 47,
+ -1, -1, -1, 51, -1, 53, -1, -1, -1, -1,
+ -1, 59, -1, 61, -1, -1, -1, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, -1, -1, 81, 82, 83, 84, 85, -1, 87,
+ -1, -1, -1, -1, 92, -1, -1, -1, -1, -1,
+ -1, -1, -1, 4, -1, -1, -1, -1, 9, -1,
+ 11, 12, 13, 14, -1, -1, -1, -1, -1, -1,
+ 21, 22, -1, -1, -1, -1, -1, -1, 29, 30,
+ -1, -1, 33, 34, -1, 36, -1, -1, -1, 40,
+ -1, 42, 43, 44, -1, -1, 47, -1, -1, -1,
+ 51, -1, 53, -1, -1, -1, -1, -1, 59, -1,
+ 61, -1, -1, -1, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, -1, -1,
+ 81, 82, 83, 84, 85, -1, 87, -1, -1, -1,
+ -1, 92, -1, -1, -1, -1, -1, -1, -1, -1,
+ 4, 5, 6, -1, -1, 9, 10, 11, 12, 13,
+ 14, -1, 16, -1, -1, -1, 20, 21, 22, -1,
+ -1, -1, -1, -1, -1, 29, 30, 31, 32, 33,
+ 34, -1, 36, -1, -1, -1, 40, -1, 42, 43,
+ 44, -1, -1, 47, -1, -1, -1, 51, -1, 53,
+ -1, -1, -1, -1, -1, 59, -1, 61, -1, -1,
+ -1, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, -1, -1, 81, 82, 83,
+ 84, 85, 86, 87, -1, -1, -1, -1, 92, -1,
+ -1, -1, -1, -1, -1, -1, -1, 4, 5, 6,
+ -1, -1, 9, 10, 11, 12, 13, 14, -1, 16,
+ -1, -1, -1, 20, 21, 22, -1, -1, -1, -1,
+ -1, -1, 29, 30, 31, 32, 33, 34, -1, 36,
+ -1, -1, -1, 40, -1, 42, 43, 44, -1, -1,
+ 47, -1, -1, -1, 51, -1, 53, -1, 55, -1,
+ -1, -1, 59, -1, 61, -1, -1, -1, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, -1, -1, 81, 82, 83, 84, 85, 86,
+ 87, -1, -1, -1, -1, 92, -1, -1, -1, -1,
+ -1, -1, -1, -1,
- 13, 15, 25, 3, 15, 15, 3, 25, 3, 15,
- 2, 15, 2, 25, 3, 11, 19, 15, 67, 13,
- 3, 104, 15, 4, 15, 3, 2, 15, 2, 15,
- 3, 15, 3, 35, 21, 3, 15, 36, 3, 19,
- 25, 2, 2, 25, 21, 15, 15, 98, 15, 15,
- 2, 4, 15, 15, 2, 93, 3, 21, 2, 2,
- 35, 3, 2, 35, 15, 3, 21, 3, 2, 15,
- 15, 2, 2, 2, 15, 3, 35, 35, 35, 35,
- 3, 35, 3, 3, 21, 35, 35, 96, 15, 3,
- 2, 4, 3, 2, 2, 100, 35, 3, 3, 2,
- 35, 2, -1, -1, -1, 15, -1, -1, -1, -1,
- -1, 44, 44, 46, 46, 13, -1, -1, 44, 44,
- 44, 46, 46, 15, 15, 44, 44, 44, 54, 44,
- 49, 49, 49, 3, 49, 15, -1, 44, -1, -1,
- 44, 48, 44, 41, 48, 44, 37, 46, 44, 44,
- 35, 44, 35, 46, 49, 40, 58, 40, 44, 3,
- 44, -1, 48, 68, 60, 49, 44, 44, 44, 44,
- -1, 49, 49, 49, 49, 85, 44, 44, 81, 46,
- 81, 44, 44, 46, 52, 44, 44, 46, 50, 44,
- 31, 46, 50, 13, 35, 87, 44, 2, 68, 47,
- 20, 44, 44, 46, 46, 44, 13, 44, 47, 46,
- 44, 44, 46, 44, 44, 46, 49, 13, 44, 99,
- 46, 44, 44, 46, 68, 44, 56, 44, 50, 46,
- 49, 44, -1, 44, 41, 44, 15, 50, 49, -1,
- 49, 13, 44, 13, 44, 41, 16, 49, 57, 49,
- 20, -1, -1, -1, -1, 66, 28, 29, 37, 38,
- 44, 61, -1, 44, 66, 49, 44, 51, 49, 44,
- 51, 49, -1, 51, 49, 44, 44, 44, -1, 44,
- 49, 49, 49, 13, 49, -1, 16, 55, 53, 44,
- 20, 66, 59, 44, 49, 5, -1, 66, 49, 13,
- 51, 3, 16, 13, -1, 13, 20, -1, -1, -1,
- -1, 66, 20, 21, 22, 23, 24, -1, 28, 29,
- -1, 35, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 35, 15, 15, 15, 2, 15, 3, 2, 25, 3,
+ 15, 15, 104, 15, 4, 3, 3, 3, 19, 15,
+ 2, 21, 15, 15, 3, 67, 25, 3, 19, 2,
+ 15, 2, 15, 13, 15, 19, 25, 3, 15, 11,
+ 15, 2, 96, 3, 2, 15, 2, 25, 3, 2,
+ 15, 100, 15, 93, 3, 2, 15, 98, 15, 2,
+ 2, 35, 3, 3, 15, 2, 35, 35, 35, 21,
+ 2, 25, 3, 35, 4, 21, 15, 2, 2, 15,
+ 2, 4, 3, 3, 3, 35, 2, 35, 21, 3,
+ 35, 3, 36, 21, 3, 13, 2, 35, 13, -1,
+ 35, 35, 2, -1, 15, 13, 35, -1, 16, -1,
+ -1, 40, -1, -1, -1, -1, 13, 44, 44, 46,
+ 46, 13, 15, -1, 16, -1, 41, 44, -1, 46,
+ 35, 44, -1, 46, 44, 40, 46, 44, 3, 46,
+ 44, 44, 44, 44, 41, 44, 49, 49, 49, 44,
+ 49, 46, 2, 44, 58, 46, 44, 44, 44, 15,
+ 46, 49, 49, 44, 44, 44, 46, 44, 44, 44,
+ 49, 15, 49, 49, 44, 81, 44, 52, 44, 60,
+ 50, 81, 50, 44, 50, 44, 44, 44, 99, 3,
+ 49, 49, 13, 37, 87, 56, 44, 54, 44, 20,
+ 3, 49, 48, 68, 44, 44, 44, 44, 48, 48,
+ 47, 44, 50, 46, 44, 44, 46, 46, 44, 44,
+ 46, 44, 47, 46, 44, 44, 46, 46, 44, 85,
+ 46, 3, 13, 31, 44, 15, 44, 35, -1, 49,
+ 44, 49, 44, 51, 44, 49, -1, 49, 44, 49,
+ -1, 61, -1, 49, 68, -1, 13, 37, 38, 16,
+ 41, 57, 66, -1, 66, 68, 66, 44, 44, 44,
+ -1, -1, 49, 49, 49, 51, 51, 44, 55, 44,
+ 44, 44, 49, 44, 49, 49, 49, 51, 49, -1,
+ 53, 13, 59, -1, 13, 5, 68, 16, 20, 18,
+ 5, 66, -1, 13, -1, 66, 28, 29, 13, -1,
+ 20, -1, -1, -1, -1, 20, 35, -1, 28, 29,
+ 13, -1, -1, 28, 29, -1, -1, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 13,
+ -1, -1, -1, -1, -1, -1, 20, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 5, -1, -1, -1, -1, -1,
- -1, -1, 13, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 28, 29, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -987,6 +984,6 @@ const short QDeclarativeJSGrammar::action_check [] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1};
+ -1, -1};
QT_END_NAMESPACE
diff --git a/src/declarative/qml/parser/qdeclarativejsgrammar_p.h b/src/declarative/qml/parser/qdeclarativejsgrammar_p.h
index 32bb12b..064c67a 100644
--- a/src/declarative/qml/parser/qdeclarativejsgrammar_p.h
+++ b/src/declarative/qml/parser/qdeclarativejsgrammar_p.h
@@ -164,15 +164,15 @@ public:
T_XOR = 79,
T_XOR_EQ = 80,
- ACCEPT_STATE = 639,
- RULE_COUNT = 345,
- STATE_COUNT = 640,
+ ACCEPT_STATE = 645,
+ RULE_COUNT = 347,
+ STATE_COUNT = 646,
TERMINAL_COUNT = 101,
NON_TERMINAL_COUNT = 106,
- GOTO_INDEX_OFFSET = 640,
- GOTO_INFO_OFFSET = 2699,
- GOTO_CHECK_OFFSET = 2699
+ GOTO_INDEX_OFFSET = 646,
+ GOTO_INFO_OFFSET = 2714,
+ GOTO_CHECK_OFFSET = 2714
};
static const char *const spell [];
diff --git a/src/declarative/qml/parser/qdeclarativejslexer.cpp b/src/declarative/qml/parser/qdeclarativejslexer.cpp
index 6404be3..a616146 100644
--- a/src/declarative/qml/parser/qdeclarativejslexer.cpp
+++ b/src/declarative/qml/parser/qdeclarativejslexer.cpp
@@ -43,11 +43,11 @@
#include <config.h>
#endif
-#include "qdeclarativejslexer_p.h"
+#include "private/qdeclarativejslexer_p.h"
-#include "qdeclarativejsglobal_p.h"
-#include "qdeclarativejsengine_p.h"
-#include "qdeclarativejsgrammar_p.h"
+#include "private/qdeclarativejsglobal_p.h"
+#include "private/qdeclarativejsengine_p.h"
+#include "private/qdeclarativejsgrammar_p.h"
#include <QtCore/qcoreapplication.h>
diff --git a/src/declarative/qml/parser/qdeclarativejslexer_p.h b/src/declarative/qml/parser/qdeclarativejslexer_p.h
index 71bd08c..f2a2fa5 100644
--- a/src/declarative/qml/parser/qdeclarativejslexer_p.h
+++ b/src/declarative/qml/parser/qdeclarativejslexer_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include "qdeclarativejsglobal_p.h"
+#include "private/qdeclarativejsglobal_p.h"
#include <QtCore/QString>
diff --git a/src/declarative/qml/parser/qdeclarativejsmemorypool_p.h b/src/declarative/qml/parser/qdeclarativejsmemorypool_p.h
index c8d52d0..51e6e54 100644
--- a/src/declarative/qml/parser/qdeclarativejsmemorypool_p.h
+++ b/src/declarative/qml/parser/qdeclarativejsmemorypool_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include "qdeclarativejsglobal_p.h"
+#include "private/qdeclarativejsglobal_p.h"
#include <QtCore/qglobal.h>
#include <QtCore/qshareddata.h>
diff --git a/src/declarative/qml/parser/qdeclarativejsnodepool_p.h b/src/declarative/qml/parser/qdeclarativejsnodepool_p.h
index 94637fd..ffa9ee5 100644
--- a/src/declarative/qml/parser/qdeclarativejsnodepool_p.h
+++ b/src/declarative/qml/parser/qdeclarativejsnodepool_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include "qdeclarativejsglobal_p.h"
-#include "qdeclarativejsmemorypool_p.h"
+#include "private/qdeclarativejsglobal_p.h"
+#include "private/qdeclarativejsmemorypool_p.h"
#include <QtCore/QHash>
#include <QtCore/QString>
diff --git a/src/declarative/qml/parser/qdeclarativejsparser.cpp b/src/declarative/qml/parser/qdeclarativejsparser.cpp
index 9205ef4..8afb93d 100644
--- a/src/declarative/qml/parser/qdeclarativejsparser.cpp
+++ b/src/declarative/qml/parser/qdeclarativejsparser.cpp
@@ -44,14 +44,14 @@
#include <string.h>
-#include "qdeclarativejsengine_p.h"
-#include "qdeclarativejslexer_p.h"
-#include "qdeclarativejsast_p.h"
-#include "qdeclarativejsnodepool_p.h"
+#include "private/qdeclarativejsengine_p.h"
+#include "private/qdeclarativejslexer_p.h"
+#include "private/qdeclarativejsast_p.h"
+#include "private/qdeclarativejsnodepool_p.h"
-#include "qdeclarativejsparser_p.h"
+#include "private/qdeclarativejsparser_p.h"
#include <QVarLengthArray>
//
@@ -273,11 +273,6 @@ case 20: {
node = makeAstNode<AST::UiImport>(driver->nodePool(), importIdLiteral->value);
node->fileNameToken = loc(2);
} else if (AST::UiQualifiedId *qualifiedId = reparseAsQualifiedId(sym(2).Expression)) {
- QString text;
- for (AST::UiQualifiedId *q = qualifiedId; q; q = q->next) {
- text += q->name->asString();
- if (q->next) text += QLatin1String(".");
- }
node = makeAstNode<AST::UiImport>(driver->nodePool(), qualifiedId);
node->fileNameToken = loc(2);
}
@@ -492,123 +487,173 @@ case 60: {
} break;
case 61: {
- sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
+ AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(4).sval, sym(6).sval);
+ node->typeModifier = sym(2).sval;
+ node->propertyToken = loc(1);
+ node->typeModifierToken = loc(2);
+ node->typeToken = loc(4);
+ node->identifierToken = loc(6);
+ node->semicolonToken = loc(7); // insert a fake ';' before ':'
+
+ AST::UiQualifiedId *propertyName = makeAstNode<AST::UiQualifiedId>(driver->nodePool(), sym(6).sval);
+ propertyName->identifierToken = loc(6);
+ propertyName->next = 0;
+
+ AST::UiArrayBinding *binding = makeAstNode<AST::UiArrayBinding> (driver->nodePool(),
+ propertyName, sym(9).UiArrayMemberList->finish());
+ binding->colonToken = loc(7);
+ binding->lbracketToken = loc(8);
+ binding->rbracketToken = loc(10);
+
+ node->binding = binding;
+
+ sym(1).Node = node;
} break;
case 62: {
+ AST::UiPublicMember *node = makeAstNode<AST::UiPublicMember> (driver->nodePool(), sym(2).sval, sym(3).sval);
+ node->propertyToken = loc(1);
+ node->typeToken = loc(2);
+ node->identifierToken = loc(3);
+ node->semicolonToken = loc(4); // insert a fake ';' before ':'
+
+ AST::UiQualifiedId *propertyName = makeAstNode<AST::UiQualifiedId>(driver->nodePool(), sym(3).sval);
+ propertyName->identifierToken = loc(3);
+ propertyName->next = 0;
+
+ AST::UiObjectBinding *binding = makeAstNode<AST::UiObjectBinding> (driver->nodePool(),
+ propertyName, sym(5).UiQualifiedId, sym(6).UiObjectInitializer);
+ binding->colonToken = loc(4);
+
+ node->binding = binding;
+
+ sym(1).Node = node;
+} break;
+
+case 63: {
sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
} break;
case 64: {
+ sym(1).Node = makeAstNode<AST::UiSourceElement>(driver->nodePool(), sym(1).Node);
+} break;
+
+case 66: {
QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_PROPERTY]);
sym(1).sval = driver->intern(s.constData(), s.length());
break;
}
-case 65: {
+case 67: {
QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_SIGNAL]);
sym(1).sval = driver->intern(s.constData(), s.length());
break;
}
-case 66: {
+case 68: {
QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_READONLY]);
sym(1).sval = driver->intern(s.constData(), s.length());
break;
}
-case 67: {
+case 69: {
QString s = QLatin1String(QDeclarativeJSGrammar::spell[T_ON]);
sym(1).sval = driver->intern(s.constData(), s.length());
break;
}
-case 68: {
+case 70: {
AST::ThisExpression *node = makeAstNode<AST::ThisExpression> (driver->nodePool());
node->thisToken = loc(1);
sym(1).Node = node;
} break;
-case 69: {
+case 71: {
AST::IdentifierExpression *node = makeAstNode<AST::IdentifierExpression> (driver->nodePool(), sym(1).sval);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 70: {
+case 72: {
AST::NullExpression *node = makeAstNode<AST::NullExpression> (driver->nodePool());
node->nullToken = loc(1);
sym(1).Node = node;
} break;
-case 71: {
+case 73: {
AST::TrueLiteral *node = makeAstNode<AST::TrueLiteral> (driver->nodePool());
node->trueToken = loc(1);
sym(1).Node = node;
} break;
-case 72: {
+case 74: {
AST::FalseLiteral *node = makeAstNode<AST::FalseLiteral> (driver->nodePool());
node->falseToken = loc(1);
sym(1).Node = node;
} break;
-case 73: {
+case 75: {
AST::NumericLiteral *node = makeAstNode<AST::NumericLiteral> (driver->nodePool(), sym(1).dval);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 74:
-case 75: {
+case 76:
+case 77: {
AST::StringLiteral *node = makeAstNode<AST::StringLiteral> (driver->nodePool(), sym(1).sval);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 76: {
+case 78: {
bool rx = lexer->scanRegExp(Lexer::NoPrefix);
if (!rx) {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage()));
return false; // ### remove me
}
+
+ loc(1).length = lexer->tokenLength();
+
AST::RegExpLiteral *node = makeAstNode<AST::RegExpLiteral> (driver->nodePool(), lexer->pattern, lexer->flags);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 77: {
+case 79: {
bool rx = lexer->scanRegExp(Lexer::EqualPrefix);
if (!rx) {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Error, location(lexer), lexer->errorMessage()));
return false;
}
+
+ loc(1).length = lexer->tokenLength();
+
AST::RegExpLiteral *node = makeAstNode<AST::RegExpLiteral> (driver->nodePool(), lexer->pattern, lexer->flags);
node->literalToken = loc(1);
sym(1).Node = node;
} break;
-case 78: {
+case 80: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), (AST::Elision *) 0);
node->lbracketToken = loc(1);
node->rbracketToken = loc(2);
sym(1).Node = node;
} break;
-case 79: {
+case 81: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).Elision->finish());
node->lbracketToken = loc(1);
node->rbracketToken = loc(3);
sym(1).Node = node;
} break;
-case 80: {
+case 82: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish ());
node->lbracketToken = loc(1);
node->rbracketToken = loc(3);
sym(1).Node = node;
} break;
-case 81: {
+case 83: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish (),
(AST::Elision *) 0);
node->lbracketToken = loc(1);
@@ -617,7 +662,7 @@ case 81: {
sym(1).Node = node;
} break;
-case 82: {
+case 84: {
AST::ArrayLiteral *node = makeAstNode<AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish (),
sym(4).Elision->finish());
node->lbracketToken = loc(1);
@@ -626,7 +671,7 @@ case 82: {
sym(1).Node = node;
} break;
-case 83: {
+case 85: {
AST::ObjectLiteral *node = 0;
if (sym(2).Node)
node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
@@ -638,7 +683,7 @@ case 83: {
sym(1).Node = node;
} break;
-case 84: {
+case 86: {
AST::ObjectLiteral *node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
sym(2).PropertyNameAndValueList->finish ());
node->lbraceToken = loc(1);
@@ -646,14 +691,14 @@ case 84: {
sym(1).Node = node;
} break;
-case 85: {
+case 87: {
AST::NestedExpression *node = makeAstNode<AST::NestedExpression>(driver->nodePool(), sym(2).Expression);
node->lparenToken = loc(1);
node->rparenToken = loc(3);
sym(1).Node = node;
} break;
-case 86: {
+case 88: {
if (AST::ArrayMemberExpression *mem = AST::cast<AST::ArrayMemberExpression *>(sym(1).Expression)) {
diagnostic_messages.append(DiagnosticMessage(DiagnosticMessage::Warning, mem->lbracketToken,
QLatin1String("Ignored annotation")));
@@ -673,48 +718,48 @@ case 86: {
}
} break;
-case 87: {
+case 89: {
sym(1).Node = makeAstNode<AST::ElementList> (driver->nodePool(), (AST::Elision *) 0, sym(1).Expression);
} break;
-case 88: {
+case 90: {
sym(1).Node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).Elision->finish(), sym(2).Expression);
} break;
-case 89: {
+case 91: {
AST::ElementList *node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).ElementList,
(AST::Elision *) 0, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 90: {
+case 92: {
AST::ElementList *node = makeAstNode<AST::ElementList> (driver->nodePool(), sym(1).ElementList, sym(3).Elision->finish(),
sym(4).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 91: {
+case 93: {
AST::Elision *node = makeAstNode<AST::Elision> (driver->nodePool());
node->commaToken = loc(1);
sym(1).Node = node;
} break;
-case 92: {
+case 94: {
AST::Elision *node = makeAstNode<AST::Elision> (driver->nodePool(), sym(1).Elision);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 93: {
+case 95: {
AST::PropertyNameAndValueList *node = makeAstNode<AST::PropertyNameAndValueList> (driver->nodePool(),
sym(1).PropertyName, sym(3).Expression);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 94: {
+case 96: {
AST::PropertyNameAndValueList *node = makeAstNode<AST::PropertyNameAndValueList> (driver->nodePool(),
sym(1).PropertyNameAndValueList, sym(3).PropertyName, sym(5).Expression);
node->commaToken = loc(2);
@@ -722,40 +767,36 @@ case 94: {
sym(1).Node = node;
} break;
-case 95: {
+case 97: {
AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 96:
-case 97: {
+case 98:
+case 99: {
AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()));
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 98: {
+case 100: {
AST::StringLiteralPropertyName *node = makeAstNode<AST::StringLiteralPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 99: {
+case 101: {
AST::NumericLiteralPropertyName *node = makeAstNode<AST::NumericLiteralPropertyName> (driver->nodePool(), sym(1).dval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 100: {
+case 102: {
AST::IdentifierPropertyName *node = makeAstNode<AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval);
node->propertyNameToken = loc(1);
sym(1).Node = node;
} break;
-case 101:
-
-case 102:
-
case 103:
case 104:
@@ -813,25 +854,29 @@ case 129:
case 130:
case 131:
+
+case 132:
+
+case 133:
{
sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount());
} break;
-case 136: {
+case 138: {
AST::ArrayMemberExpression *node = makeAstNode<AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->lbracketToken = loc(2);
node->rbracketToken = loc(4);
sym(1).Node = node;
} break;
-case 137: {
+case 139: {
AST::FieldMemberExpression *node = makeAstNode<AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval);
node->dotToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 138: {
+case 140: {
AST::NewMemberExpression *node = makeAstNode<AST::NewMemberExpression> (driver->nodePool(), sym(2).Expression, sym(4).ArgumentList);
node->newToken = loc(1);
node->lparenToken = loc(3);
@@ -839,316 +884,309 @@ case 138: {
sym(1).Node = node;
} break;
-case 140: {
+case 142: {
AST::NewExpression *node = makeAstNode<AST::NewExpression> (driver->nodePool(), sym(2).Expression);
node->newToken = loc(1);
sym(1).Node = node;
} break;
-case 141: {
+case 143: {
AST::CallExpression *node = makeAstNode<AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(3).ArgumentList);
node->lparenToken = loc(2);
node->rparenToken = loc(4);
sym(1).Node = node;
} break;
-case 142: {
+case 144: {
AST::CallExpression *node = makeAstNode<AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(3).ArgumentList);
node->lparenToken = loc(2);
node->rparenToken = loc(4);
sym(1).Node = node;
} break;
-case 143: {
+case 145: {
AST::ArrayMemberExpression *node = makeAstNode<AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->lbracketToken = loc(2);
node->rbracketToken = loc(4);
sym(1).Node = node;
} break;
-case 144: {
+case 146: {
AST::FieldMemberExpression *node = makeAstNode<AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval);
node->dotToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 145: {
+case 147: {
sym(1).Node = 0;
} break;
-case 146: {
+case 148: {
sym(1).Node = sym(1).ArgumentList->finish();
} break;
-case 147: {
+case 149: {
sym(1).Node = makeAstNode<AST::ArgumentList> (driver->nodePool(), sym(1).Expression);
} break;
-case 148: {
+case 150: {
AST::ArgumentList *node = makeAstNode<AST::ArgumentList> (driver->nodePool(), sym(1).ArgumentList, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 152: {
+case 154: {
AST::PostIncrementExpression *node = makeAstNode<AST::PostIncrementExpression> (driver->nodePool(), sym(1).Expression);
node->incrementToken = loc(2);
sym(1).Node = node;
} break;
-case 153: {
+case 155: {
AST::PostDecrementExpression *node = makeAstNode<AST::PostDecrementExpression> (driver->nodePool(), sym(1).Expression);
node->decrementToken = loc(2);
sym(1).Node = node;
} break;
-case 155: {
+case 157: {
AST::DeleteExpression *node = makeAstNode<AST::DeleteExpression> (driver->nodePool(), sym(2).Expression);
node->deleteToken = loc(1);
sym(1).Node = node;
} break;
-case 156: {
+case 158: {
AST::VoidExpression *node = makeAstNode<AST::VoidExpression> (driver->nodePool(), sym(2).Expression);
node->voidToken = loc(1);
sym(1).Node = node;
} break;
-case 157: {
+case 159: {
AST::TypeOfExpression *node = makeAstNode<AST::TypeOfExpression> (driver->nodePool(), sym(2).Expression);
node->typeofToken = loc(1);
sym(1).Node = node;
} break;
-case 158: {
+case 160: {
AST::PreIncrementExpression *node = makeAstNode<AST::PreIncrementExpression> (driver->nodePool(), sym(2).Expression);
node->incrementToken = loc(1);
sym(1).Node = node;
} break;
-case 159: {
+case 161: {
AST::PreDecrementExpression *node = makeAstNode<AST::PreDecrementExpression> (driver->nodePool(), sym(2).Expression);
node->decrementToken = loc(1);
sym(1).Node = node;
} break;
-case 160: {
+case 162: {
AST::UnaryPlusExpression *node = makeAstNode<AST::UnaryPlusExpression> (driver->nodePool(), sym(2).Expression);
node->plusToken = loc(1);
sym(1).Node = node;
} break;
-case 161: {
+case 163: {
AST::UnaryMinusExpression *node = makeAstNode<AST::UnaryMinusExpression> (driver->nodePool(), sym(2).Expression);
node->minusToken = loc(1);
sym(1).Node = node;
} break;
-case 162: {
+case 164: {
AST::TildeExpression *node = makeAstNode<AST::TildeExpression> (driver->nodePool(), sym(2).Expression);
node->tildeToken = loc(1);
sym(1).Node = node;
} break;
-case 163: {
+case 165: {
AST::NotExpression *node = makeAstNode<AST::NotExpression> (driver->nodePool(), sym(2).Expression);
node->notToken = loc(1);
sym(1).Node = node;
} break;
-case 165: {
+case 167: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Mul, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 166: {
+case 168: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Div, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 167: {
+case 169: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Mod, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 169: {
+case 171: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Add, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 170: {
+case 172: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Sub, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 172: {
+case 174: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::LShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 173: {
+case 175: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::RShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 174: {
+case 176: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::URShift, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 176: {
+case 178: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Lt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 177: {
+case 179: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Gt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 178: {
+case 180: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Le, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 179: {
+case 181: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Ge, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 180: {
+case 182: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::InstanceOf, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 181: {
+case 183: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::In, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 183: {
+case 185: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Lt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 184: {
+case 186: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Gt, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 185: {
+case 187: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Le, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 186: {
+case 188: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Ge, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 187: {
+case 189: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::InstanceOf, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 189: {
+case 191: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Equal, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 190: {
+case 192: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::NotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 191: {
+case 193: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 192: {
+case 194: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictNotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 194: {
+case 196: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::Equal, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 195: {
+case 197: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::NotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 196: {
+case 198: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
QSOperator::StrictEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 197: {
- AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
- QSOperator::StrictNotEqual, sym(3).Expression);
- node->operatorToken = loc(2);
- sym(1).Node = node;
-} break;
-
case 199: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
- QSOperator::BitAnd, sym(3).Expression);
+ QSOperator::StrictNotEqual, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
@@ -1162,7 +1200,7 @@ case 201: {
case 203: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
- QSOperator::BitXor, sym(3).Expression);
+ QSOperator::BitAnd, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
@@ -1176,7 +1214,7 @@ case 205: {
case 207: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
- QSOperator::BitOr, sym(3).Expression);
+ QSOperator::BitXor, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
@@ -1190,7 +1228,7 @@ case 209: {
case 211: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
- QSOperator::And, sym(3).Expression);
+ QSOperator::BitOr, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
@@ -1204,7 +1242,7 @@ case 213: {
case 215: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
- QSOperator::Or, sym(3).Expression);
+ QSOperator::And, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
@@ -1217,6 +1255,13 @@ case 217: {
} break;
case 219: {
+ AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
+ QSOperator::Or, sym(3).Expression);
+ node->operatorToken = loc(2);
+ sym(1).Node = node;
+} break;
+
+case 221: {
AST::ConditionalExpression *node = makeAstNode<AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression,
sym(3).Expression, sym(5).Expression);
node->questionToken = loc(2);
@@ -1224,7 +1269,7 @@ case 219: {
sym(1).Node = node;
} break;
-case 221: {
+case 223: {
AST::ConditionalExpression *node = makeAstNode<AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression,
sym(3).Expression, sym(5).Expression);
node->questionToken = loc(2);
@@ -1232,112 +1277,112 @@ case 221: {
sym(1).Node = node;
} break;
-case 223: {
+case 225: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
sym(2).ival, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 225: {
+case 227: {
AST::BinaryExpression *node = makeAstNode<AST::BinaryExpression> (driver->nodePool(), sym(1).Expression,
sym(2).ival, sym(3).Expression);
node->operatorToken = loc(2);
sym(1).Node = node;
} break;
-case 226: {
+case 228: {
sym(1).ival = QSOperator::Assign;
} break;
-case 227: {
+case 229: {
sym(1).ival = QSOperator::InplaceMul;
} break;
-case 228: {
+case 230: {
sym(1).ival = QSOperator::InplaceDiv;
} break;
-case 229: {
+case 231: {
sym(1).ival = QSOperator::InplaceMod;
} break;
-case 230: {
+case 232: {
sym(1).ival = QSOperator::InplaceAdd;
} break;
-case 231: {
+case 233: {
sym(1).ival = QSOperator::InplaceSub;
} break;
-case 232: {
+case 234: {
sym(1).ival = QSOperator::InplaceLeftShift;
} break;
-case 233: {
+case 235: {
sym(1).ival = QSOperator::InplaceRightShift;
} break;
-case 234: {
+case 236: {
sym(1).ival = QSOperator::InplaceURightShift;
} break;
-case 235: {
+case 237: {
sym(1).ival = QSOperator::InplaceAnd;
} break;
-case 236: {
+case 238: {
sym(1).ival = QSOperator::InplaceXor;
} break;
-case 237: {
+case 239: {
sym(1).ival = QSOperator::InplaceOr;
} break;
-case 239: {
+case 241: {
AST::Expression *node = makeAstNode<AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 240: {
+case 242: {
sym(1).Node = 0;
} break;
-case 243: {
+case 245: {
AST::Expression *node = makeAstNode<AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 244: {
+case 246: {
sym(1).Node = 0;
} break;
-case 261: {
+case 263: {
AST::Block *node = makeAstNode<AST::Block> (driver->nodePool(), sym(2).StatementList);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-case 262: {
+case 264: {
sym(1).Node = makeAstNode<AST::StatementList> (driver->nodePool(), sym(1).Statement);
} break;
-case 263: {
+case 265: {
sym(1).Node = makeAstNode<AST::StatementList> (driver->nodePool(), sym(1).StatementList, sym(2).Statement);
} break;
-case 264: {
+case 266: {
sym(1).Node = 0;
} break;
-case 265: {
+case 267: {
sym(1).Node = sym(1).StatementList->finish ();
} break;
-case 267: {
+case 269: {
AST::VariableStatement *node = makeAstNode<AST::VariableStatement> (driver->nodePool(),
sym(2).VariableDeclarationList->finish (/*readOnly=*/sym(1).ival == T_CONST));
node->declarationKindToken = loc(1);
@@ -1345,76 +1390,76 @@ case 267: {
sym(1).Node = node;
} break;
-case 268: {
+case 270: {
sym(1).ival = T_CONST;
} break;
-case 269: {
+case 271: {
sym(1).ival = T_VAR;
} break;
-case 270: {
+case 272: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration);
} break;
-case 271: {
+case 273: {
AST::VariableDeclarationList *node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(),
sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
node->commaToken = loc(2);
sym(1).Node = node;
} break;
-case 272: {
+case 274: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration);
} break;
-case 273: {
+case 275: {
sym(1).Node = makeAstNode<AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
} break;
-case 274: {
+case 276: {
AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 275: {
+case 277: {
AST::VariableDeclaration *node = makeAstNode<AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 276: {
+case 278: {
// ### TODO: AST for initializer
sym(1) = sym(2);
} break;
-case 277: {
+case 279: {
sym(1).Node = 0;
} break;
-case 279: {
+case 281: {
// ### TODO: AST for initializer
sym(1) = sym(2);
} break;
-case 280: {
+case 282: {
sym(1).Node = 0;
} break;
-case 282: {
+case 284: {
AST::EmptyStatement *node = makeAstNode<AST::EmptyStatement> (driver->nodePool());
node->semicolonToken = loc(1);
sym(1).Node = node;
} break;
-case 284: {
+case 286: {
AST::ExpressionStatement *node = makeAstNode<AST::ExpressionStatement> (driver->nodePool(), sym(1).Expression);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 285: {
+case 287: {
AST::IfStatement *node = makeAstNode<AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement, sym(7).Statement);
node->ifToken = loc(1);
node->lparenToken = loc(2);
@@ -1423,7 +1468,7 @@ case 285: {
sym(1).Node = node;
} break;
-case 286: {
+case 288: {
AST::IfStatement *node = makeAstNode<AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->ifToken = loc(1);
node->lparenToken = loc(2);
@@ -1431,7 +1476,7 @@ case 286: {
sym(1).Node = node;
} break;
-case 288: {
+case 290: {
AST::DoWhileStatement *node = makeAstNode<AST::DoWhileStatement> (driver->nodePool(), sym(2).Statement, sym(5).Expression);
node->doToken = loc(1);
node->whileToken = loc(3);
@@ -1441,7 +1486,7 @@ case 288: {
sym(1).Node = node;
} break;
-case 289: {
+case 291: {
AST::WhileStatement *node = makeAstNode<AST::WhileStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->whileToken = loc(1);
node->lparenToken = loc(2);
@@ -1449,7 +1494,7 @@ case 289: {
sym(1).Node = node;
} break;
-case 290: {
+case 292: {
AST::ForStatement *node = makeAstNode<AST::ForStatement> (driver->nodePool(), sym(3).Expression,
sym(5).Expression, sym(7).Expression, sym(9).Statement);
node->forToken = loc(1);
@@ -1460,7 +1505,7 @@ case 290: {
sym(1).Node = node;
} break;
-case 291: {
+case 293: {
AST::LocalForStatement *node = makeAstNode<AST::LocalForStatement> (driver->nodePool(),
sym(4).VariableDeclarationList->finish (/*readOnly=*/false), sym(6).Expression,
sym(8).Expression, sym(10).Statement);
@@ -1473,7 +1518,7 @@ case 291: {
sym(1).Node = node;
} break;
-case 292: {
+case 294: {
AST:: ForEachStatement *node = makeAstNode<AST::ForEachStatement> (driver->nodePool(), sym(3).Expression,
sym(5).Expression, sym(7).Statement);
node->forToken = loc(1);
@@ -1483,7 +1528,7 @@ case 292: {
sym(1).Node = node;
} break;
-case 293: {
+case 295: {
AST::LocalForEachStatement *node = makeAstNode<AST::LocalForEachStatement> (driver->nodePool(),
sym(4).VariableDeclaration, sym(6).Expression, sym(8).Statement);
node->forToken = loc(1);
@@ -1494,14 +1539,14 @@ case 293: {
sym(1).Node = node;
} break;
-case 295: {
+case 297: {
AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool());
node->continueToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 297: {
+case 299: {
AST::ContinueStatement *node = makeAstNode<AST::ContinueStatement> (driver->nodePool(), sym(2).sval);
node->continueToken = loc(1);
node->identifierToken = loc(2);
@@ -1509,14 +1554,14 @@ case 297: {
sym(1).Node = node;
} break;
-case 299: {
+case 301: {
AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool());
node->breakToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 301: {
+case 303: {
AST::BreakStatement *node = makeAstNode<AST::BreakStatement> (driver->nodePool(), sym(2).sval);
node->breakToken = loc(1);
node->identifierToken = loc(2);
@@ -1524,14 +1569,14 @@ case 301: {
sym(1).Node = node;
} break;
-case 303: {
+case 305: {
AST::ReturnStatement *node = makeAstNode<AST::ReturnStatement> (driver->nodePool(), sym(2).Expression);
node->returnToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
-case 304: {
+case 306: {
AST::WithStatement *node = makeAstNode<AST::WithStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
node->withToken = loc(1);
node->lparenToken = loc(2);
@@ -1539,7 +1584,7 @@ case 304: {
sym(1).Node = node;
} break;
-case 305: {
+case 307: {
AST::SwitchStatement *node = makeAstNode<AST::SwitchStatement> (driver->nodePool(), sym(3).Expression, sym(5).CaseBlock);
node->switchToken = loc(1);
node->lparenToken = loc(2);
@@ -1547,90 +1592,90 @@ case 305: {
sym(1).Node = node;
} break;
-case 306: {
+case 308: {
AST::CaseBlock *node = makeAstNode<AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
-case 307: {
+case 309: {
AST::CaseBlock *node = makeAstNode<AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses);
node->lbraceToken = loc(1);
node->rbraceToken = loc(5);
sym(1).Node = node;
} break;
-case 308: {
+case 310: {
sym(1).Node = makeAstNode<AST::CaseClauses> (driver->nodePool(), sym(1).CaseClause);
} break;
-case 309: {
+case 311: {
sym(1).Node = makeAstNode<AST::CaseClauses> (driver->nodePool(), sym(1).CaseClauses, sym(2).CaseClause);
} break;
-case 310: {
+case 312: {
sym(1).Node = 0;
} break;
-case 311: {
+case 313: {
sym(1).Node = sym(1).CaseClauses->finish ();
} break;
-case 312: {
+case 314: {
AST::CaseClause *node = makeAstNode<AST::CaseClause> (driver->nodePool(), sym(2).Expression, sym(4).StatementList);
node->caseToken = loc(1);
node->colonToken = loc(3);
sym(1).Node = node;
} break;
-case 313: {
+case 315: {
AST::DefaultClause *node = makeAstNode<AST::DefaultClause> (driver->nodePool(), sym(3).StatementList);
node->defaultToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 314:
-case 315: {
+case 316:
+case 317: {
AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), driver->intern(lexer->characterBuffer(), lexer->characterCount()), sym(3).Statement);
node->identifierToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 316: {
+case 318: {
AST::LabelledStatement *node = makeAstNode<AST::LabelledStatement> (driver->nodePool(), sym(1).sval, sym(3).Statement);
node->identifierToken = loc(1);
node->colonToken = loc(2);
sym(1).Node = node;
} break;
-case 318: {
+case 320: {
AST::ThrowStatement *node = makeAstNode<AST::ThrowStatement> (driver->nodePool(), sym(2).Expression);
node->throwToken = loc(1);
node->semicolonToken = loc(3);
sym(1).Node = node;
} break;
-case 319: {
+case 321: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 320: {
+case 322: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 321: {
+case 323: {
AST::TryStatement *node = makeAstNode<AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch, sym(4).Finally);
node->tryToken = loc(1);
sym(1).Node = node;
} break;
-case 322: {
+case 324: {
AST::Catch *node = makeAstNode<AST::Catch> (driver->nodePool(), sym(3).sval, sym(5).Block);
node->catchToken = loc(1);
node->lparenToken = loc(2);
@@ -1639,20 +1684,20 @@ case 322: {
sym(1).Node = node;
} break;
-case 323: {
+case 325: {
AST::Finally *node = makeAstNode<AST::Finally> (driver->nodePool(), sym(2).Block);
node->finallyToken = loc(1);
sym(1).Node = node;
} break;
-case 325: {
+case 327: {
AST::DebuggerStatement *node = makeAstNode<AST::DebuggerStatement> (driver->nodePool());
node->debuggerToken = loc(1);
node->semicolonToken = loc(2);
sym(1).Node = node;
} break;
-case 326: {
+case 328: {
AST::FunctionDeclaration *node = makeAstNode<AST::FunctionDeclaration> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody);
node->functionToken = loc(1);
node->identifierToken = loc(2);
@@ -1663,7 +1708,7 @@ case 326: {
sym(1).Node = node;
} break;
-case 327: {
+case 329: {
AST::FunctionExpression *node = makeAstNode<AST::FunctionExpression> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody);
node->functionToken = loc(1);
if (sym(2).sval)
@@ -1675,60 +1720,60 @@ case 327: {
sym(1).Node = node;
} break;
-case 328: {
+case 330: {
AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).sval);
node->identifierToken = loc(1);
sym(1).Node = node;
} break;
-case 329: {
+case 331: {
AST::FormalParameterList *node = makeAstNode<AST::FormalParameterList> (driver->nodePool(), sym(1).FormalParameterList, sym(3).sval);
node->commaToken = loc(2);
node->identifierToken = loc(3);
sym(1).Node = node;
} break;
-case 330: {
+case 332: {
sym(1).Node = 0;
} break;
-case 331: {
+case 333: {
sym(1).Node = sym(1).FormalParameterList->finish ();
} break;
-case 332: {
+case 334: {
sym(1).Node = 0;
} break;
-case 334: {
+case 336: {
sym(1).Node = makeAstNode<AST::FunctionBody> (driver->nodePool(), sym(1).SourceElements->finish ());
} break;
-case 335: {
+case 337: {
sym(1).Node = makeAstNode<AST::Program> (driver->nodePool(), sym(1).SourceElements->finish ());
} break;
-case 336: {
+case 338: {
sym(1).Node = makeAstNode<AST::SourceElements> (driver->nodePool(), sym(1).SourceElement);
} break;
-case 337: {
+case 339: {
sym(1).Node = makeAstNode<AST::SourceElements> (driver->nodePool(), sym(1).SourceElements, sym(2).SourceElement);
} break;
-case 338: {
+case 340: {
sym(1).Node = makeAstNode<AST::StatementSourceElement> (driver->nodePool(), sym(1).Statement);
} break;
-case 339: {
+case 341: {
sym(1).Node = makeAstNode<AST::FunctionSourceElement> (driver->nodePool(), sym(1).FunctionDeclaration);
} break;
-case 340: {
+case 342: {
sym(1).sval = 0;
} break;
-case 342: {
+case 344: {
sym(1).Node = 0;
} break;
diff --git a/src/declarative/qml/parser/qdeclarativejsparser_p.h b/src/declarative/qml/parser/qdeclarativejsparser_p.h
index 3864398..005bd3f 100644
--- a/src/declarative/qml/parser/qdeclarativejsparser_p.h
+++ b/src/declarative/qml/parser/qdeclarativejsparser_p.h
@@ -59,10 +59,10 @@
#ifndef QDECLARATIVEJSPARSER_P_H
#define QDECLARATIVEJSPARSER_P_H
-#include "qdeclarativejsglobal_p.h"
-#include "qdeclarativejsgrammar_p.h"
-#include "qdeclarativejsast_p.h"
-#include "qdeclarativejsengine_p.h"
+#include "private/qdeclarativejsglobal_p.h"
+#include "private/qdeclarativejsgrammar_p.h"
+#include "private/qdeclarativejsast_p.h"
+#include "private/qdeclarativejsengine_p.h"
#include <QtCore/QList>
#include <QtCore/QString>
@@ -235,9 +235,9 @@ protected:
-#define J_SCRIPT_REGEXPLITERAL_RULE1 76
+#define J_SCRIPT_REGEXPLITERAL_RULE1 78
-#define J_SCRIPT_REGEXPLITERAL_RULE2 77
+#define J_SCRIPT_REGEXPLITERAL_RULE2 79
QT_QML_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarative.h b/src/declarative/qml/qdeclarative.h
index dfdef11..7c7f6e5 100644
--- a/src/declarative/qml/qdeclarative.h
+++ b/src/declarative/qml/qdeclarative.h
@@ -42,11 +42,11 @@
#ifndef QDECLARATIVE_H
#define QDECLARATIVE_H
-#include "qdeclarativeprivate.h"
-#include "qdeclarativeparserstatus.h"
-#include "qdeclarativepropertyvaluesource.h"
-#include "qdeclarativepropertyvalueinterceptor.h"
-#include "qdeclarativelist.h"
+#include <QtDeclarative/qdeclarativeprivate.h>
+#include <QtDeclarative/qdeclarativeparserstatus.h>
+#include <QtDeclarative/qdeclarativepropertyvaluesource.h>
+#include <QtDeclarative/qdeclarativepropertyvalueinterceptor.h>
+#include <QtDeclarative/qdeclarativelist.h>
#include <QtCore/qbytearray.h>
#include <QtCore/qmetaobject.h>
diff --git a/src/declarative/qml/qdeclarativebinding.cpp b/src/declarative/qml/qdeclarativebinding.cpp
index a7047ab..71cf3cb 100644
--- a/src/declarative/qml/qdeclarativebinding.cpp
+++ b/src/declarative/qml/qdeclarativebinding.cpp
@@ -39,15 +39,15 @@
**
****************************************************************************/
-#include "qdeclarativebinding_p.h"
-#include "qdeclarativebinding_p_p.h"
+#include "private/qdeclarativebinding_p.h"
+#include "private/qdeclarativebinding_p_p.h"
#include "qdeclarative.h"
#include "qdeclarativecontext.h"
#include "qdeclarativeinfo.h"
-#include "qdeclarativecontext_p.h"
-#include "qdeclarativedeclarativedata_p.h"
-#include "qdeclarativestringconverters_p.h"
+#include "private/qdeclarativecontext_p.h"
+#include "private/qdeclarativedeclarativedata_p.h"
+#include "private/qdeclarativestringconverters_p.h"
#include <QVariant>
#include <QtCore/qdebug.h>
diff --git a/src/declarative/qml/qdeclarativebinding_p.h b/src/declarative/qml/qdeclarativebinding_p.h
index 56f1715..2789738 100644
--- a/src/declarative/qml/qdeclarativebinding_p.h
+++ b/src/declarative/qml/qdeclarativebinding_p.h
@@ -57,7 +57,7 @@
#include "qdeclarativepropertyvaluesource.h"
#include "qdeclarativeexpression.h"
#include "qdeclarativeproperty.h"
-#include "qdeclarativeproperty_p.h"
+#include "private/qdeclarativeproperty_p.h"
#include <QtCore/QObject>
#include <QtCore/QMetaProperty>
diff --git a/src/declarative/qml/qdeclarativebinding_p_p.h b/src/declarative/qml/qdeclarativebinding_p_p.h
index 041103c..617ec4b 100644
--- a/src/declarative/qml/qdeclarativebinding_p_p.h
+++ b/src/declarative/qml/qdeclarativebinding_p_p.h
@@ -53,10 +53,10 @@
// We mean it.
//
-#include "qdeclarativebinding_p.h"
+#include "private/qdeclarativebinding_p.h"
#include "qdeclarativeproperty.h"
-#include "qdeclarativeexpression_p.h"
+#include "private/qdeclarativeexpression_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativeboundsignal.cpp b/src/declarative/qml/qdeclarativeboundsignal.cpp
index 6a5a102..762c6428 100644
--- a/src/declarative/qml/qdeclarativeboundsignal.cpp
+++ b/src/declarative/qml/qdeclarativeboundsignal.cpp
@@ -39,16 +39,16 @@
**
****************************************************************************/
-#include "qdeclarativeboundsignal_p.h"
+#include "private/qdeclarativeboundsignal_p.h"
-#include "qmetaobjectbuilder_p.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativeexpression_p.h"
-#include "qdeclarativecontext_p.h"
-#include "qdeclarativemetatype_p.h"
+#include "private/qmetaobjectbuilder_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativeexpression_p.h"
+#include "private/qdeclarativecontext_p.h"
+#include "private/qdeclarativemetatype_p.h"
#include "qdeclarative.h"
#include "qdeclarativecontext.h"
-#include "qdeclarativeglobal_p.h"
+#include "private/qdeclarativeglobal_p.h"
#include <QtCore/qdebug.h>
diff --git a/src/declarative/qml/qdeclarativeclassfactory.cpp b/src/declarative/qml/qdeclarativeclassfactory.cpp
index ae4975c..798eacd 100644
--- a/src/declarative/qml/qdeclarativeclassfactory.cpp
+++ b/src/declarative/qml/qdeclarativeclassfactory.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativeclassfactory_p.h"
+#include "private/qdeclarativeclassfactory_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativecleanup.cpp b/src/declarative/qml/qdeclarativecleanup.cpp
index 0fa49d1..4f48ba1 100644
--- a/src/declarative/qml/qdeclarativecleanup.cpp
+++ b/src/declarative/qml/qdeclarativecleanup.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativecleanup_p.h"
+#include "private/qdeclarativecleanup_p.h"
-#include "qdeclarativeengine_p.h"
+#include "private/qdeclarativeengine_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativecompiledbindings.cpp b/src/declarative/qml/qdeclarativecompiledbindings.cpp
index 1acca2f..53143d5 100644
--- a/src/declarative/qml/qdeclarativecompiledbindings.cpp
+++ b/src/declarative/qml/qdeclarativecompiledbindings.cpp
@@ -41,7 +41,7 @@
// #define COMPILEDBINDINGS_DEBUG
-#include "qdeclarativecompiledbindings_p.h"
+#include "private/qdeclarativecompiledbindings_p.h"
#include <QtDeclarative/qdeclarativeinfo.h>
#include <private/qdeclarativecontext_p.h>
@@ -53,11 +53,15 @@
#include <QtCore/qnumeric.h>
#include <private/qdeclarativeanchors_p_p.h>
#include <private/qdeclarativeglobal_p.h>
+#include <private/qdeclarativefastproperties_p.h>
QT_BEGIN_NAMESPACE
DEFINE_BOOL_CONFIG_OPTION(qmlExperimental, QML_EXPERIMENTAL);
DEFINE_BOOL_CONFIG_OPTION(qmlDisableOptimizer, QML_DISABLE_OPTIMIZER);
+DEFINE_BOOL_CONFIG_OPTION(qmlDisableFastProperties, QML_DISABLE_FAST_PROPERTIES);
+
+Q_GLOBAL_STATIC(QDeclarativeFastProperties, fastProperties);
using namespace QDeclarativeJS;
@@ -334,6 +338,8 @@ struct Instr {
Subscribe, // subscribe
SubscribeId, // subscribe
+ FetchAndSubscribe, // fetchAndSubscribe
+
LoadId, // load
LoadScope, // load
LoadRoot, // load
@@ -433,6 +439,14 @@ struct Instr {
qint8 output;
qint8 objectReg;
quint8 exceptionId;
+ quint16 subscription;
+ quint16 function;
+ } fetchAndSubscribe;
+ struct {
+ quint8 type;
+ qint8 output;
+ qint8 objectReg;
+ quint8 exceptionId;
quint32 index;
} fetch;
struct {
@@ -937,6 +951,9 @@ static void dumpInstruction(const Instr *instr)
case Instr::SubscribeId:
qWarning().nospace() << "SubscribeId" << "\t\t" << instr->subscribe.offset << "\t" << instr->subscribe.reg << "\t" << instr->subscribe.index;
break;
+ case Instr::FetchAndSubscribe:
+ qWarning().nospace() << "FetchAndSubscribe" << "\t" << instr->fetchAndSubscribe.output << "\t" << instr->fetchAndSubscribe.objectReg << "\t" << instr->fetchAndSubscribe.subscription;
+ break;
case Instr::LoadId:
qWarning().nospace() << "LoadId" << "\t\t\t" << instr->load.index << "\t" << instr->load.reg;
break;
@@ -1070,6 +1087,8 @@ void QDeclarativeCompiledBindingsPrivate::run(int instrIndex,
QDeclarativeContextData *context, QDeclarativeDelayedError *error,
QObject *scope, QObject *output)
{
+ Q_Q(QDeclarativeCompiledBindings);
+
error->removeError();
Register registers[32];
@@ -1081,6 +1100,7 @@ void QDeclarativeCompiledBindingsPrivate::run(int instrIndex,
instr += instrIndex;
const char *data = program->data();
+ // return;
#ifdef COMPILEDBINDINGS_DEBUG
qWarning().nospace() << "Begin binding run";
#endif
@@ -1107,6 +1127,32 @@ void QDeclarativeCompiledBindingsPrivate::run(int instrIndex,
}
break;
+ case Instr::FetchAndSubscribe:
+ {
+ const Register &input = registers[instr->fetchAndSubscribe.objectReg];
+ Register &output = registers[instr->fetchAndSubscribe.output];
+
+ if (input.isUndefined()) {
+ throwException(instr->fetchAndSubscribe.exceptionId, error, program, context);
+ return;
+ }
+
+ QObject *object = input.getQObject();
+ if (!object) {
+ output.setUndefined();
+ } else {
+ int subIdx = instr->fetchAndSubscribe.subscription;
+ QDeclarativeCompiledBindingsPrivate::Subscription *sub = 0;
+ if (subIdx != -1) {
+ sub = (subscriptions + subIdx);
+ sub->target = q;
+ sub->targetMethod = methodCount + subIdx;
+ }
+ fastProperties()->accessor(instr->fetchAndSubscribe.function)(object, output.typeDataPtr(), sub);
+ }
+ }
+ break;
+
case Instr::LoadId:
registers[instr->load.reg].setQObject(context->idValues[instr->load.index].data());
break;
@@ -2376,29 +2422,41 @@ bool QDeclarativeBindingCompilerPrivate::buildName(QStringList &name,
return true;
}
-
bool QDeclarativeBindingCompilerPrivate::fetch(Result &rv, const QMetaObject *mo, int reg,
- int idx, const QStringList &subName, QDeclarativeJS::AST::ExpressionNode *node)
+ int idx, const QStringList &subName,
+ QDeclarativeJS::AST::ExpressionNode *node)
{
QMetaProperty prop = mo->property(idx);
rv.metaObject = 0;
rv.type = 0;
- if (subscription(subName, &rv) && prop.hasNotifySignal() && prop.notifySignalIndex() != -1) {
- Instr sub;
- sub.common.type = Instr::Subscribe;
- sub.subscribe.offset = subscriptionIndex(subName);
- sub.subscribe.reg = reg;
- sub.subscribe.index = prop.notifySignalIndex();
- bytecode << sub;
- }
+ int fastFetchIndex = fastProperties()->accessorIndexForProperty(mo, idx);
Instr fetch;
- fetch.common.type = Instr::Fetch;
- fetch.fetch.objectReg = reg;
- fetch.fetch.index = idx;
- fetch.fetch.output = reg;
- fetch.fetch.exceptionId = exceptionId(node);
+
+ if (!qmlDisableFastProperties() && fastFetchIndex != -1) {
+ fetch.common.type = Instr::FetchAndSubscribe;
+ fetch.fetchAndSubscribe.objectReg = reg;
+ fetch.fetchAndSubscribe.output = reg;
+ fetch.fetchAndSubscribe.function = fastFetchIndex;
+ fetch.fetchAndSubscribe.subscription = subscriptionIndex(subName);
+ fetch.fetchAndSubscribe.exceptionId = exceptionId(node);
+ } else {
+ if (subscription(subName, &rv) && prop.hasNotifySignal() && prop.notifySignalIndex() != -1) {
+ Instr sub;
+ sub.common.type = Instr::Subscribe;
+ sub.subscribe.offset = subscriptionIndex(subName);
+ sub.subscribe.reg = reg;
+ sub.subscribe.index = prop.notifySignalIndex();
+ bytecode << sub;
+ }
+
+ fetch.common.type = Instr::Fetch;
+ fetch.fetch.objectReg = reg;
+ fetch.fetch.index = idx;
+ fetch.fetch.output = reg;
+ fetch.fetch.exceptionId = exceptionId(node);
+ }
rv.type = prop.userType();
rv.metaObject = engine->metaObjectForType(rv.type);
diff --git a/src/declarative/qml/qdeclarativecompiledbindings_p.h b/src/declarative/qml/qdeclarativecompiledbindings_p.h
index 8776c08..a17bc84 100644
--- a/src/declarative/qml/qdeclarativecompiledbindings_p.h
+++ b/src/declarative/qml/qdeclarativecompiledbindings_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include "qdeclarativeexpression_p.h"
-#include "qdeclarativebinding_p.h"
+#include "private/qdeclarativeexpression_p.h"
+#include "private/qdeclarativebinding_p.h"
QT_BEGIN_HEADER
diff --git a/src/declarative/qml/qdeclarativecompileddata.cpp b/src/declarative/qml/qdeclarativecompileddata.cpp
index dfbf453..5d73d89 100644
--- a/src/declarative/qml/qdeclarativecompileddata.cpp
+++ b/src/declarative/qml/qdeclarativecompileddata.cpp
@@ -39,12 +39,12 @@
**
****************************************************************************/
-#include "qdeclarativecompiler_p.h"
+#include "private/qdeclarativecompiler_p.h"
#include "qdeclarativeengine.h"
#include "qdeclarativecomponent.h"
-#include "qdeclarativecomponent_p.h"
+#include "private/qdeclarativecomponent_p.h"
#include "qdeclarativecontext.h"
-#include "qdeclarativecontext_p.h"
+#include "private/qdeclarativecontext_p.h"
#include <QtCore/qdebug.h>
diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp
index a9d90f3..f4ccce1 100644
--- a/src/declarative/qml/qdeclarativecompiler.cpp
+++ b/src/declarative/qml/qdeclarativecompiler.cpp
@@ -39,33 +39,33 @@
**
****************************************************************************/
-#include "qdeclarativecompiler_p.h"
+#include "private/qdeclarativecompiler_p.h"
-#include "qdeclarativecompositetypedata_p.h"
-#include "qdeclarativeparser_p.h"
-#include "qdeclarativescriptparser_p.h"
+#include "private/qdeclarativecompositetypedata_p.h"
+#include "private/qdeclarativeparser_p.h"
+#include "private/qdeclarativescriptparser_p.h"
#include "qdeclarativepropertyvaluesource.h"
#include "qdeclarativecomponent.h"
-#include "qmetaobjectbuilder_p.h"
-#include "qdeclarativestringconverters_p.h"
-#include "qdeclarativeengine_p.h"
+#include "private/qmetaobjectbuilder_p.h"
+#include "private/qdeclarativestringconverters_p.h"
+#include "private/qdeclarativeengine_p.h"
#include "qdeclarativeengine.h"
#include "qdeclarativecontext.h"
-#include "qdeclarativemetatype_p.h"
-#include "qdeclarativecustomparser_p_p.h"
-#include "qdeclarativecontext_p.h"
-#include "qdeclarativecomponent_p.h"
+#include "private/qdeclarativemetatype_p.h"
+#include "private/qdeclarativecustomparser_p_p.h"
+#include "private/qdeclarativecontext_p.h"
+#include "private/qdeclarativecomponent_p.h"
#include "parser/qdeclarativejsast_p.h"
-#include "qdeclarativevmemetaobject_p.h"
-#include "qdeclarativeexpression_p.h"
-#include "qdeclarativeproperty_p.h"
-#include "qdeclarativerewrite_p.h"
+#include "private/qdeclarativevmemetaobject_p.h"
+#include "private/qdeclarativeexpression_p.h"
+#include "private/qdeclarativeproperty_p.h"
+#include "private/qdeclarativerewrite_p.h"
#include "qdeclarativescriptstring.h"
-#include "qdeclarativeglobal_p.h"
-#include "qdeclarativescriptparser_p.h"
-#include "qdeclarativebinding_p.h"
-#include "qdeclarativecompiledbindings_p.h"
-#include "qdeclarativeglobalscriptclass_p.h"
+#include "private/qdeclarativeglobal_p.h"
+#include "private/qdeclarativescriptparser_p.h"
+#include "private/qdeclarativebinding_p.h"
+#include "private/qdeclarativecompiledbindings_p.h"
+#include "private/qdeclarativeglobalscriptclass_p.h"
#include <QCoreApplication>
#include <QColor>
@@ -80,7 +80,7 @@
QT_BEGIN_NAMESPACE
DEFINE_BOOL_CONFIG_OPTION(compilerDump, QML_COMPILER_DUMP);
-DEFINE_BOOL_CONFIG_OPTION(compilerStatDump, QML_COMPILER_STATISTICS_DUMP);
+DEFINE_BOOL_CONFIG_OPTION(compilerStatDump, QML_COMPILER_STATS);
DEFINE_BOOL_CONFIG_OPTION(bindingsDump, QML_BINDINGS_DUMP);
using namespace QDeclarativeParser;
@@ -617,6 +617,7 @@ bool QDeclarativeCompiler::compile(QDeclarativeEngine *engine,
void QDeclarativeCompiler::compileTree(Object *tree)
{
compileState.root = tree;
+ componentStat.lineNumber = tree->location.start.line;
if (!buildObject(tree, BindingContext()) || !completeComponentBuild())
return;
@@ -2428,10 +2429,18 @@ bool QDeclarativeCompiler::buildDynamicMeta(QDeclarativeParser::Object *obj, Dyn
propertyType = QVariant::Color;
type = "QColor";
break;
+ case Object::DynamicProperty::Time:
+ propertyType = QVariant::Time;
+ type = "QTime";
+ break;
case Object::DynamicProperty::Date:
propertyType = QVariant::Date;
type = "QDate";
break;
+ case Object::DynamicProperty::DateTime:
+ propertyType = QVariant::DateTime;
+ type = "QDateTime";
+ break;
}
((QDeclarativeVMEMetaData *)dynamicData.data())->propertyCount++;
@@ -2776,7 +2785,7 @@ bool QDeclarativeCompiler::completeComponentBuild()
if (index != -1) {
binding.dataType = BindingReference::Experimental;
binding.compiledIndex = index;
- componentStat.optimizedBindings++;
+ componentStat.optimizedBindings.append(iter.key()->location);
continue;
}
@@ -2810,7 +2819,7 @@ bool QDeclarativeCompiler::completeComponentBuild()
QByteArray((const char *)expression.constData(),
expression.length() * sizeof(QChar));
- componentStat.scriptBindings++;
+ componentStat.scriptBindings.append(iter.key()->location);
}
if (bindingCompiler.isValid()) {
@@ -2832,8 +2841,44 @@ void QDeclarativeCompiler::dumpStats()
qWarning().nospace() << " Component Line " << stat.lineNumber;
qWarning().nospace() << " Total Objects: " << stat.objects;
qWarning().nospace() << " IDs Used: " << stat.ids;
- qWarning().nospace() << " Optimized Bindings: " << stat.optimizedBindings;
- qWarning().nospace() << " QScript Bindings: " << stat.scriptBindings;
+ qWarning().nospace() << " Optimized Bindings: " << stat.optimizedBindings.count();
+
+ {
+ QByteArray output;
+ for (int ii = 0; ii < stat.optimizedBindings.count(); ++ii) {
+ if (0 == (ii % 10)) {
+ if (ii) output.append("\n");
+ output.append(" ");
+ }
+
+ output.append("(");
+ output.append(QByteArray::number(stat.optimizedBindings.at(ii).start.line));
+ output.append(":");
+ output.append(QByteArray::number(stat.optimizedBindings.at(ii).start.column));
+ output.append(") ");
+ }
+ if (!output.isEmpty())
+ qWarning().nospace() << output.constData();
+ }
+
+ qWarning().nospace() << " QScript Bindings: " << stat.scriptBindings.count();
+ {
+ QByteArray output;
+ for (int ii = 0; ii < stat.scriptBindings.count(); ++ii) {
+ if (0 == (ii % 10)) {
+ if (ii) output.append("\n");
+ output.append(" ");
+ }
+
+ output.append("(");
+ output.append(QByteArray::number(stat.scriptBindings.at(ii).start.line));
+ output.append(":");
+ output.append(QByteArray::number(stat.scriptBindings.at(ii).start.column));
+ output.append(") ");
+ }
+ if (!output.isEmpty())
+ qWarning().nospace() << output.constData();
+ }
}
}
diff --git a/src/declarative/qml/qdeclarativecompiler_p.h b/src/declarative/qml/qdeclarativecompiler_p.h
index a81259b..11364bb 100644
--- a/src/declarative/qml/qdeclarativecompiler_p.h
+++ b/src/declarative/qml/qdeclarativecompiler_p.h
@@ -55,14 +55,14 @@
#include "qdeclarative.h"
#include "qdeclarativeerror.h"
-#include "qdeclarativeinstruction_p.h"
-#include "qdeclarativecompositetypemanager_p.h"
-#include "qdeclarativeparser_p.h"
-#include "qdeclarativeengine_p.h"
-#include "qbitfield_p.h"
-#include "qdeclarativepropertycache_p.h"
-#include "qdeclarativeintegercache_p.h"
-#include "qdeclarativetypenamecache_p.h"
+#include "private/qdeclarativeinstruction_p.h"
+#include "private/qdeclarativecompositetypemanager_p.h"
+#include "private/qdeclarativeparser_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qbitfield_p.h"
+#include "private/qdeclarativepropertycache_p.h"
+#include "private/qdeclarativeintegercache_p.h"
+#include "private/qdeclarativetypenamecache_p.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qset.h>
@@ -318,14 +318,13 @@ private:
struct ComponentStat
{
- ComponentStat()
- : ids(0), scriptBindings(0), optimizedBindings(0), objects(0) {}
+ ComponentStat() : ids(0), objects(0) {}
int lineNumber;
int ids;
- int scriptBindings;
- int optimizedBindings;
+ QList<QDeclarativeParser::LocationSpan> scriptBindings;
+ QList<QDeclarativeParser::LocationSpan> optimizedBindings;
int objects;
};
ComponentStat componentStat;
diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp
index ec23458..e180374 100644
--- a/src/declarative/qml/qdeclarativecomponent.cpp
+++ b/src/declarative/qml/qdeclarativecomponent.cpp
@@ -40,19 +40,19 @@
****************************************************************************/
#include "qdeclarativecomponent.h"
-#include "qdeclarativecomponent_p.h"
+#include "private/qdeclarativecomponent_p.h"
-#include "qdeclarativecompiler_p.h"
-#include "qdeclarativecontext_p.h"
-#include "qdeclarativecompositetypedata_p.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativevme_p.h"
+#include "private/qdeclarativecompiler_p.h"
+#include "private/qdeclarativecontext_p.h"
+#include "private/qdeclarativecompositetypedata_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativevme_p.h"
#include "qdeclarative.h"
#include "qdeclarativeengine.h"
-#include "qdeclarativebinding_p.h"
-#include "qdeclarativebinding_p_p.h"
-#include "qdeclarativeglobal_p.h"
-#include "qdeclarativescriptparser_p.h"
+#include "private/qdeclarativebinding_p.h"
+#include "private/qdeclarativebinding_p_p.h"
+#include "private/qdeclarativeglobal_p.h"
+#include "private/qdeclarativescriptparser_p.h"
#include <QStack>
#include <QStringList>
diff --git a/src/declarative/qml/qdeclarativecomponent.h b/src/declarative/qml/qdeclarativecomponent.h
index 13a243e..6ee5070 100644
--- a/src/declarative/qml/qdeclarativecomponent.h
+++ b/src/declarative/qml/qdeclarativecomponent.h
@@ -42,8 +42,8 @@
#ifndef QDECLARATIVECOMPONENT_H
#define QDECLARATIVECOMPONENT_H
-#include "qdeclarative.h"
-#include "qdeclarativeerror.h"
+#include <QtDeclarative/qdeclarative.h>
+#include <QtDeclarative/qdeclarativeerror.h>
#include <QtCore/qobject.h>
#include <QtCore/qstring.h>
diff --git a/src/declarative/qml/qdeclarativecomponent_p.h b/src/declarative/qml/qdeclarativecomponent_p.h
index b44aeef..dfe327b 100644
--- a/src/declarative/qml/qdeclarativecomponent_p.h
+++ b/src/declarative/qml/qdeclarativecomponent_p.h
@@ -55,9 +55,9 @@
#include "qdeclarativecomponent.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativecompositetypemanager_p.h"
-#include "qbitfield_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativecompositetypemanager_p.h"
+#include "private/qbitfield_p.h"
#include "qdeclarativeerror.h"
#include "qdeclarative.h"
diff --git a/src/declarative/qml/qdeclarativecompositetypedata_p.h b/src/declarative/qml/qdeclarativecompositetypedata_p.h
index 04d0c63..47cb3b3 100644
--- a/src/declarative/qml/qdeclarativecompositetypedata_p.h
+++ b/src/declarative/qml/qdeclarativecompositetypedata_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include "qdeclarativeengine_p.h"
+#include "private/qdeclarativeengine_p.h"
#include <QtCore/qglobal.h>
diff --git a/src/declarative/qml/qdeclarativecompositetypemanager.cpp b/src/declarative/qml/qdeclarativecompositetypemanager.cpp
index c59e5e2..55723ea 100644
--- a/src/declarative/qml/qdeclarativecompositetypemanager.cpp
+++ b/src/declarative/qml/qdeclarativecompositetypemanager.cpp
@@ -39,15 +39,15 @@
**
****************************************************************************/
-#include "qdeclarativecompositetypemanager_p.h"
+#include "private/qdeclarativecompositetypemanager_p.h"
-#include "qdeclarativecompositetypedata_p.h"
-#include "qdeclarativescriptparser_p.h"
+#include "private/qdeclarativecompositetypedata_p.h"
+#include "private/qdeclarativescriptparser_p.h"
#include "qdeclarativeengine.h"
-#include "qdeclarativeengine_p.h"
+#include "private/qdeclarativeengine_p.h"
#include "qdeclarativecomponent.h"
-#include "qdeclarativecomponent_p.h"
-#include "qdeclarativecompiler_p.h"
+#include "private/qdeclarativecomponent_p.h"
+#include "private/qdeclarativecompiler_p.h"
#include <QtNetwork/qnetworkreply.h>
#include <QtCore/qdebug.h>
@@ -537,6 +537,31 @@ int QDeclarativeCompositeTypeManager::resolveTypes(QDeclarativeCompositeTypeData
int waiting = 0;
+ /*
+ For local urls, add an implicit import "." as first (most overridden) lookup. This will also trigger
+ the loading of the qmldir and the import of any native types from available plugins.
+ */
+ {
+
+ QDeclarativeDirComponents qmldircomponentsnetwork;
+ if (QDeclarativeCompositeTypeResource *resource
+ = resources.value(unit->imports.baseUrl().resolved(QUrl(QLatin1String("./qmldir"))))) {
+ QDeclarativeDirParser parser;
+ parser.setSource(QString::fromUtf8(resource->data));
+ parser.parse();
+ qmldircomponentsnetwork = parser.components();
+ }
+
+ QDeclarativeEnginePrivate::get(engine)->
+ addToImport(&unit->imports,
+ qmldircomponentsnetwork,
+ QLatin1String("."),
+ QString(),
+ -1, -1,
+ QDeclarativeScriptParser::Import::File,
+ 0); // error ignored (just means no fallback)
+ }
+
foreach (QDeclarativeScriptParser::Import imp, unit->data.imports()) {
QDeclarativeDirComponents qmldircomponentsnetwork;
@@ -587,31 +612,6 @@ int QDeclarativeCompositeTypeManager::resolveTypes(QDeclarativeCompositeTypeData
}
}
- /*
- For local urls, add an implicit import "." as first lookup. This will also trigger
- the loading of the qmldir and the import of any native types from available plugins.
- */
- {
-
- QDeclarativeDirComponents qmldircomponentsnetwork;
- if (QDeclarativeCompositeTypeResource *resource
- = resources.value(unit->imports.baseUrl().resolved(QUrl(QLatin1String("./qmldir"))))) {
- QDeclarativeDirParser parser;
- parser.setSource(QString::fromUtf8(resource->data));
- parser.parse();
- qmldircomponentsnetwork = parser.components();
- }
-
- QDeclarativeEnginePrivate::get(engine)->
- addToImport(&unit->imports,
- qmldircomponentsnetwork,
- QLatin1String("."),
- QString(),
- -1, -1,
- QDeclarativeScriptParser::Import::File,
- 0); // error ignored (just means no fallback)
- }
-
QList<QDeclarativeScriptParser::TypeReference*> types = unit->data.referencedTypes();
diff --git a/src/declarative/qml/qdeclarativecompositetypemanager_p.h b/src/declarative/qml/qdeclarativecompositetypemanager_p.h
index a572e0c..5c82c4c 100644
--- a/src/declarative/qml/qdeclarativecompositetypemanager_p.h
+++ b/src/declarative/qml/qdeclarativecompositetypemanager_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include "qdeclarativescriptparser_p.h"
-#include "qdeclarativerefcount_p.h"
+#include "private/qdeclarativescriptparser_p.h"
+#include "private/qdeclarativerefcount_p.h"
#include "qdeclarativeerror.h"
#include "qdeclarativeengine.h"
diff --git a/src/declarative/qml/qdeclarativecontext.cpp b/src/declarative/qml/qdeclarativecontext.cpp
index 2b8cf70..55c2f7c 100644
--- a/src/declarative/qml/qdeclarativecontext.cpp
+++ b/src/declarative/qml/qdeclarativecontext.cpp
@@ -40,14 +40,14 @@
****************************************************************************/
#include "qdeclarativecontext.h"
-#include "qdeclarativecontext_p.h"
+#include "private/qdeclarativecontext_p.h"
-#include "qdeclarativeexpression_p.h"
-#include "qdeclarativeengine_p.h"
+#include "private/qdeclarativeexpression_p.h"
+#include "private/qdeclarativeengine_p.h"
#include "qdeclarativeengine.h"
-#include "qdeclarativecompiledbindings_p.h"
+#include "private/qdeclarativecompiledbindings_p.h"
#include "qdeclarativeinfo.h"
-#include "qdeclarativeglobalscriptclass_p.h"
+#include "private/qdeclarativeglobalscriptclass_p.h"
#include <qscriptengine.h>
#include <QtCore/qvarlengtharray.h>
@@ -71,31 +71,30 @@ QDeclarativeContextPrivate::QDeclarativeContextPrivate()
Contexts allow data to be exposed to the QML components instantiated by the
QML engine.
- Each QDeclarativeContext contains a set of properties, distinct from
- its QObject properties, that allow data to be
- explicitly bound to a context by name. The context properties are defined or
- updated by calling QDeclarativeContext::setContextProperty(). The following example shows
- a Qt model being bound to a context and then accessed from a QML file.
+ Each QDeclarativeContext contains a set of properties, distinct from its QObject
+ properties, that allow data to be explicitly bound to a context by name. The
+ context properties are defined and updated by calling
+ QDeclarativeContext::setContextProperty(). The following example shows a Qt model
+ being bound to a context and then accessed from a QML file.
\code
QDeclarativeEngine engine;
- QDeclarativeContext context(engine.rootContext());
- context.setContextProperty("myModel", modelData);
+ QDeclarativeContext *context = new QDeclarativeContext(engine.rootContext());
+ context->setContextProperty("myModel", modelData);
QDeclarativeComponent component(&engine, "ListView { model=myModel }");
- component.create(&context);
+ component.create(context);
\endcode
- To simplify binding and maintaining larger data sets, QObject's can be
- added to a QDeclarativeContext. These objects are known as the context's default
- objects. In this case all the properties of the QObject are
- made available by name in the context, as though they were all individually
- added by calling QDeclarativeContext::setContextProperty(). Changes to the property's
- values are detected through the property's notify signal. This method is
- also slightly more faster than manually adding property values.
+ To simplify binding and maintaining larger data sets, a context object can be set
+ on a QDeclarativeContext. All the properties of the context object are available
+ by name in the context, as though they were all individually added through calls
+ to QDeclarativeContext::setContextProperty(). Changes to the property's values are
+ detected through the property's notify signal. Setting a context object is both
+ faster and easier than manually adding and maintaing context property values.
- The following example has the same effect as the one above, but it is
- achieved using a default object.
+ The following example has the same effect as the previous one, but it uses a context
+ object.
\code
class MyDataSet : ... {
@@ -104,46 +103,42 @@ QDeclarativeContextPrivate::QDeclarativeContextPrivate()
...
};
- MyDataSet myDataSet;
+ MyDataSet *myDataSet = new MyDataSet;
QDeclarativeEngine engine;
- QDeclarativeContext context(engine.rootContext());
- context.setContextObject(&myDataSet);
+ QDeclarativeContext *context = new QDeclarativeContext(engine.rootContext());
+ context->setContextObject(myDataSet);
QDeclarativeComponent component(&engine, "ListView { model=myModel }");
- component.create(&context);
+ component.create(context);
\endcode
- Default objects added first take precedence over those added later. All properties
- added explicitly by QDeclarativeContext::setContextProperty() take precedence over default
- object properties.
+ All properties added explicitly by QDeclarativeContext::setContextProperty() take
+ precedence over context object's properties.
- Contexts are hierarchal, with the \l {QDeclarativeEngine::rootContext()}{root context}
- being created by the QDeclarativeEngine. A component instantiated in a given context
- has access to that context's data, as well as the data defined by its
- ancestor contexts. Data values (including those added implicitly by the
- default objects) in a context override those in ancestor contexts. Data
- that should be available to all components instantiated by the QDeclarativeEngine
- should be added to the \l {QDeclarativeEngine::rootContext()}{root context}.
+ Contexts form a hierarchy. The root of this heirarchy is the QDeclarativeEngine's
+ \l {QDeclarativeEngine::rootContext()}{root context}. A component instance can
+ access the data in its own context, as well as all its ancestor contexts. Data
+ can be made available to all instances by modifying the
+ \l {QDeclarativeEngine::rootContext()}{root context}.
- In the following example,
+ The following example defines two contexts - \c context1 and \c context2. The
+ second context overrides the "b" context property inherited from the first with a
+ new value.
\code
QDeclarativeEngine engine;
- QDeclarativeContext context1(engine.rootContext());
- QDeclarativeContext context2(&context1);
- QDeclarativeContext context3(&context2);
-
- context1.setContextProperty("a", 12);
- context2.setContextProperty("b", 13);
- context3.setContextProperty("a", 14);
- context3.setContextProperty("c", 14);
+ QDeclarativeContext *context1 = new QDeclarativeContext(engine.rootContext());
+ QDeclarativeContext *context2 = new QDeclarativeContext(context1);
+
+ context1->setContextProperty("a", 12);
+ context1->setContextProperty("b", 12);
+
+ context2->setContextProperty("b", 15);
\endcode
- a QML component instantiated in context1 would have access to the "a" data,
- a QML component instantiated in context2 would have access to the "a" and
- "b" data, and a QML component instantiated in context3 would have access to
- the "a", "b" and "c" data - although its "a" data would return 14, unlike
- that in context1 or context2.
+ While QML objects instantiated in a context are not strictly owned by that
+ context, their bindings are. If a context is destroyed, the property bindings of
+ outstanding QML objects will stop evaluating.
*/
/*! \internal */
diff --git a/src/declarative/qml/qdeclarativecontext_p.h b/src/declarative/qml/qdeclarativecontext_p.h
index 397f37a..6c5a1f7 100644
--- a/src/declarative/qml/qdeclarativecontext_p.h
+++ b/src/declarative/qml/qdeclarativecontext_p.h
@@ -55,19 +55,19 @@
#include "qdeclarativecontext.h"
-#include "qdeclarativedeclarativedata_p.h"
-#include "qdeclarativeintegercache_p.h"
-#include "qdeclarativetypenamecache_p.h"
-#include "qdeclarativenotifier_p.h"
+#include "private/qdeclarativedeclarativedata_p.h"
+#include "private/qdeclarativeintegercache_p.h"
+#include "private/qdeclarativetypenamecache_p.h"
+#include "private/qdeclarativenotifier_p.h"
#include "qdeclarativelist.h"
-#include "qdeclarativeparser_p.h"
+#include "private/qdeclarativeparser_p.h"
#include <QtCore/qhash.h>
#include <QtScript/qscriptvalue.h>
#include <QtCore/qset.h>
#include <private/qobject_p.h>
-#include "qdeclarativeguard_p.h"
+#include "private/qdeclarativeguard_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativecontextscriptclass.cpp b/src/declarative/qml/qdeclarativecontextscriptclass.cpp
index 2559224..8566744 100644
--- a/src/declarative/qml/qdeclarativecontextscriptclass.cpp
+++ b/src/declarative/qml/qdeclarativecontextscriptclass.cpp
@@ -39,13 +39,13 @@
**
****************************************************************************/
-#include "qdeclarativecontextscriptclass_p.h"
+#include "private/qdeclarativecontextscriptclass_p.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativecontext_p.h"
-#include "qdeclarativetypenamescriptclass_p.h"
-#include "qdeclarativelistscriptclass_p.h"
-#include "qdeclarativeguard_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativecontext_p.h"
+#include "private/qdeclarativetypenamescriptclass_p.h"
+#include "private/qdeclarativelistscriptclass_p.h"
+#include "private/qdeclarativeguard_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativecontextscriptclass_p.h b/src/declarative/qml/qdeclarativecontextscriptclass_p.h
index 93e4b20..b89f0cd 100644
--- a/src/declarative/qml/qdeclarativecontextscriptclass_p.h
+++ b/src/declarative/qml/qdeclarativecontextscriptclass_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include "qdeclarativetypenamecache_p.h"
-#include "qdeclarativescriptclass_p.h"
+#include "private/qdeclarativetypenamecache_p.h"
+#include "private/qdeclarativescriptclass_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativecustomparser.cpp b/src/declarative/qml/qdeclarativecustomparser.cpp
index a3a511c..8b6ee7c 100644
--- a/src/declarative/qml/qdeclarativecustomparser.cpp
+++ b/src/declarative/qml/qdeclarativecustomparser.cpp
@@ -39,11 +39,11 @@
**
****************************************************************************/
-#include "qdeclarativecustomparser_p.h"
-#include "qdeclarativecustomparser_p_p.h"
+#include "private/qdeclarativecustomparser_p.h"
+#include "private/qdeclarativecustomparser_p_p.h"
-#include "qdeclarativeparser_p.h"
-#include "qdeclarativecompiler_p.h"
+#include "private/qdeclarativeparser_p.h"
+#include "private/qdeclarativecompiler_p.h"
#include <QtCore/qdebug.h>
diff --git a/src/declarative/qml/qdeclarativecustomparser_p.h b/src/declarative/qml/qdeclarativecustomparser_p.h
index f9bf513..da0358a 100644
--- a/src/declarative/qml/qdeclarativecustomparser_p.h
+++ b/src/declarative/qml/qdeclarativecustomparser_p.h
@@ -53,9 +53,9 @@
// We mean it.
//
-#include "qdeclarativemetatype_p.h"
+#include "private/qdeclarativemetatype_p.h"
#include "qdeclarativeerror.h"
-#include "qdeclarativeparser_p.h"
+#include "private/qdeclarativeparser_p.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qxmlstream.h>
diff --git a/src/declarative/qml/qdeclarativecustomparser_p_p.h b/src/declarative/qml/qdeclarativecustomparser_p_p.h
index b580db6..a7e213c 100644
--- a/src/declarative/qml/qdeclarativecustomparser_p_p.h
+++ b/src/declarative/qml/qdeclarativecustomparser_p_p.h
@@ -53,9 +53,9 @@
// We mean it.
//
-#include "qdeclarativecustomparser_p.h"
+#include "private/qdeclarativecustomparser_p.h"
-#include "qdeclarativeparser_p.h"
+#include "private/qdeclarativeparser_p.h"
#include <QtCore/qglobal.h>
diff --git a/src/declarative/qml/qdeclarativedeclarativedata_p.h b/src/declarative/qml/qdeclarativedeclarativedata_p.h
index d1d063a..adfff19 100644
--- a/src/declarative/qml/qdeclarativedeclarativedata_p.h
+++ b/src/declarative/qml/qdeclarativedeclarativedata_p.h
@@ -55,7 +55,7 @@
#include <QtScript/qscriptvalue.h>
#include <private/qobject_p.h>
-#include "qdeclarativeguard_p.h"
+#include "private/qdeclarativeguard_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativedirparser.cpp b/src/declarative/qml/qdeclarativedirparser.cpp
index 0e82098..1e3b37b 100644
--- a/src/declarative/qml/qdeclarativedirparser.cpp
+++ b/src/declarative/qml/qdeclarativedirparser.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativedirparser_p.h"
+#include "private/qdeclarativedirparser_p.h"
#include "qdeclarativeerror.h"
#include <QtCore/QTextStream>
diff --git a/src/declarative/qml/qdeclarativedom.cpp b/src/declarative/qml/qdeclarativedom.cpp
index 366750e..a3cddb5 100644
--- a/src/declarative/qml/qdeclarativedom.cpp
+++ b/src/declarative/qml/qdeclarativedom.cpp
@@ -39,14 +39,14 @@
**
****************************************************************************/
-#include "qdeclarativedom_p.h"
-#include "qdeclarativedom_p_p.h"
+#include "private/qdeclarativedom_p.h"
+#include "private/qdeclarativedom_p_p.h"
-#include "qdeclarativecompositetypedata_p.h"
-#include "qdeclarativecompiler_p.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativescriptparser_p.h"
-#include "qdeclarativeglobal_p.h"
+#include "private/qdeclarativecompositetypedata_p.h"
+#include "private/qdeclarativecompiler_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativescriptparser_p.h"
+#include "private/qdeclarativeglobal_p.h"
#include <QtCore/QByteArray>
#include <QtCore/QDebug>
@@ -480,9 +480,15 @@ int QDeclarativeDomDynamicProperty::propertyType() const
case QDeclarativeParser::Object::DynamicProperty::Color:
return QMetaType::type("QColor");
+ case QDeclarativeParser::Object::DynamicProperty::Time:
+ return QMetaType::type("QTime");
+
case QDeclarativeParser::Object::DynamicProperty::Date:
return QMetaType::type("QDate");
+ case QDeclarativeParser::Object::DynamicProperty::DateTime:
+ return QMetaType::type("QDateTime");
+
case QDeclarativeParser::Object::DynamicProperty::Int:
return QMetaType::type("int");
diff --git a/src/declarative/qml/qdeclarativedom_p_p.h b/src/declarative/qml/qdeclarativedom_p_p.h
index a065282..7ce99ec 100644
--- a/src/declarative/qml/qdeclarativedom_p_p.h
+++ b/src/declarative/qml/qdeclarativedom_p_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include "qdeclarativeparser_p.h"
+#include "private/qdeclarativeparser_p.h"
#include <QtCore/QtGlobal>
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp
index 2f0ec24..52a1f45 100644
--- a/src/declarative/qml/qdeclarativeengine.cpp
+++ b/src/declarative/qml/qdeclarativeengine.cpp
@@ -39,35 +39,35 @@
**
****************************************************************************/
-#include "qdeclarativeengine_p.h"
+#include "private/qdeclarativeengine_p.h"
#include "qdeclarativeengine.h"
-#include "qdeclarativecontext_p.h"
-#include "qdeclarativecompiler_p.h"
-#include "qdeclarativeglobalscriptclass_p.h"
+#include "private/qdeclarativecontext_p.h"
+#include "private/qdeclarativecompiler_p.h"
+#include "private/qdeclarativeglobalscriptclass_p.h"
#include "qdeclarative.h"
#include "qdeclarativecontext.h"
#include "qdeclarativeexpression.h"
#include "qdeclarativecomponent.h"
-#include "qdeclarativebinding_p_p.h"
-#include "qdeclarativevme_p.h"
-#include "qdeclarativeenginedebug_p.h"
-#include "qdeclarativestringconverters_p.h"
-#include "qdeclarativexmlhttprequest_p.h"
-#include "qdeclarativesqldatabase_p.h"
-#include "qdeclarativetypenamescriptclass_p.h"
-#include "qdeclarativelistscriptclass_p.h"
+#include "private/qdeclarativebinding_p_p.h"
+#include "private/qdeclarativevme_p.h"
+#include "private/qdeclarativeenginedebug_p.h"
+#include "private/qdeclarativestringconverters_p.h"
+#include "private/qdeclarativexmlhttprequest_p.h"
+#include "private/qdeclarativesqldatabase_p.h"
+#include "private/qdeclarativetypenamescriptclass_p.h"
+#include "private/qdeclarativelistscriptclass_p.h"
#include "qdeclarativescriptstring.h"
-#include "qdeclarativeglobal_p.h"
-#include "qdeclarativeworkerscript_p.h"
-#include "qdeclarativecomponent_p.h"
-#include "qdeclarativescriptclass_p.h"
+#include "private/qdeclarativeglobal_p.h"
+#include "private/qdeclarativeworkerscript_p.h"
+#include "private/qdeclarativecomponent_p.h"
+#include "private/qdeclarativescriptclass_p.h"
#include "qdeclarativenetworkaccessmanagerfactory.h"
#include "qdeclarativeimageprovider.h"
-#include "qdeclarativedirparser_p.h"
+#include "private/qdeclarativedirparser_p.h"
#include "qdeclarativeextensioninterface.h"
-#include "qdeclarativelist_p.h"
-#include "qdeclarativetypenamecache_p.h"
+#include "private/qdeclarativelist_p.h"
+#include "private/qdeclarativetypenamecache_p.h"
#include <QtCore/qmetaobject.h>
#include <QScriptClass>
@@ -81,6 +81,7 @@
#include <QDebug>
#include <QMetaObject>
#include <QStack>
+#include <QMap>
#include <QPluginLoader>
#include <QtCore/qlibraryinfo.h>
#include <QtCore/qthreadstorage.h>
@@ -178,10 +179,16 @@ QDeclarativeEnginePrivate::QDeclarativeEnginePrivate(QDeclarativeEngine *e)
#endif
foreach (const QString &path, QString::fromLatin1(envImportPath).split(pathSep, QString::SkipEmptyParts)) {
QString canonicalPath = QDir(path).canonicalPath();
- if (!canonicalPath.isEmpty() && !environmentImportPath.contains(canonicalPath))
- environmentImportPath.append(canonicalPath);
+ if (!canonicalPath.isEmpty() && !fileImportPath.contains(canonicalPath))
+ fileImportPath.append(canonicalPath);
}
}
+#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0))
+ QString builtinPath = QLibraryInfo::location(QLibraryInfo::ImportsPath);
+ if (!builtinPath.isEmpty())
+ fileImportPath += builtinPath;
+#endif
+
}
QUrl QDeclarativeScriptEngine::resolvedUrl(QScriptContext *context, const QUrl& url)
@@ -336,7 +343,8 @@ void QDeclarativeEnginePrivate::clear(SimpleList<QDeclarativeParserStatus> &pss)
}
Q_GLOBAL_STATIC(QDeclarativeEngineDebugServer, qmlEngineDebugServer);
-Q_GLOBAL_STATIC(QSet<QString>, qmlEnginePluginsWithRegisteredTypes);
+typedef QMap<QString, QString> StringStringMap;
+Q_GLOBAL_STATIC(StringStringMap, qmlEnginePluginsWithRegisteredTypes); // stores the uri
void QDeclarativeEnginePrivate::init()
{
@@ -580,13 +588,13 @@ void QDeclarativeEngine::removeImageProvider(const QString &providerId)
delete d->imageProviders.take(providerId);
}
-QImage QDeclarativeEnginePrivate::getImageFromProvider(const QUrl &url)
+QImage QDeclarativeEnginePrivate::getImageFromProvider(const QUrl &url, QSize *size, const QSize& req_size)
{
QMutexLocker locker(&mutex);
QImage image;
QDeclarativeImageProvider *provider = imageProviders.value(url.host());
if (provider)
- image = provider->request(url.path().mid(1));
+ image = provider->request(url.path().mid(1), size, req_size);
return image;
}
@@ -1306,13 +1314,14 @@ QScriptValue QDeclarativeEnginePrivate::tint(QScriptContext *ctxt, QScriptEngine
QScriptValue QDeclarativeEnginePrivate::scriptValueFromVariant(const QVariant &val)
{
if (val.userType() == qMetaTypeId<QDeclarativeListReference>()) {
- QDeclarativeListReferencePrivate *p = QDeclarativeListReferencePrivate::get((QDeclarativeListReference*)val.constData());
+ QDeclarativeListReferencePrivate *p =
+ QDeclarativeListReferencePrivate::get((QDeclarativeListReference*)val.constData());
if (p->object) {
return listClass->newList(p->property, p->propertyType);
} else {
return scriptEngine.nullValue();
}
- }
+ }
bool objOk;
QObject *obj = QDeclarativeMetaType::toQObject(val, &objOk);
@@ -1405,7 +1414,9 @@ struct QDeclarativeEnginePrivate::ImportedNamespace {
foreach (const QDeclarativeDirParser::Component &c, qmldircomponents) {
if (c.typeName == typeName) {
typeWasDeclaredInQmldir = true;
- if (c.majorVersion < vmaj || (c.majorVersion == vmaj && vmin >= c.minorVersion)) {
+
+ // importing version -1 means import ALL versions
+ if ((vmaj == -1) || (c.majorVersion < vmaj || (c.majorVersion == vmaj && vmin >= c.minorVersion))) {
QUrl candidate = url.resolved(QUrl(c.fileName));
if (c.internal && base) {
if (base->resolved(QUrl(c.fileName)) != candidate)
@@ -1454,13 +1465,14 @@ public:
QDeclarativeDirComponents importExtension(const QString &absoluteFilePath, const QString &uri, QDeclarativeEngine *engine) {
QFile file(absoluteFilePath);
- QString dir = QFileInfo(file).path();
QString filecontent;
if (file.open(QFile::ReadOnly)) {
filecontent = QString::fromUtf8(file.readAll());
if (qmlImportTrace())
qDebug() << "QDeclarativeEngine::add: loaded" << absoluteFilePath;
}
+ QDir dir = QFileInfo(file).dir();
+
QDeclarativeDirParser qmldirParser;
qmldirParser.setSource(filecontent);
qmldirParser.parse();
@@ -1470,9 +1482,13 @@ public:
foreach (const QDeclarativeDirParser::Plugin &plugin, qmldirParser.plugins()) {
- QDir pluginDir(dir + QDir::separator() + plugin.path);
- if (dir.startsWith(QLatin1Char(':')))
+
+ QDir pluginDir = dir.absoluteFilePath(plugin.path);
+
+ // hack for resources, should probably go away
+ if (absoluteFilePath.startsWith(QLatin1Char(':')))
pluginDir = QDir(QCoreApplication::applicationDirPath());
+
QString resolvedFilePath =
QDeclarativeEnginePrivate::get(engine)
->resolvePlugin(pluginDir,
@@ -1492,29 +1508,7 @@ public:
if (dir.endsWith(QLatin1Char('/')) || dir.endsWith(QLatin1Char('\\')))
dir.chop(1);
- QStringList paths;
-
- if (!base.isEmpty()) {
- QString baseDir = QFileInfo(toLocalFileOrQrc(base)).path();
- paths += baseDir;
- }
-
- QString applicationDirPath = QCoreApplication::applicationDirPath();
- if (!applicationDirPath.isEmpty())
- paths += applicationDirPath;
-
- paths += QDeclarativeEnginePrivate::get(engine)->environmentImportPath;
-#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0))
- QString builtinPath = QLibraryInfo::location(QLibraryInfo::ImportsPath);
-#else
- QString builtinPath;
-#endif
- if (!builtinPath.isEmpty())
- paths += builtinPath;
-
- // add fileImportPath last, this is *not* search order.
- paths += QDeclarativeEnginePrivate::get(engine)->fileImportPath;
-
+ QStringList paths = QDeclarativeEnginePrivate::get(engine)->fileImportPath;
qSort(paths.begin(), paths.end(), greaterThan); // Ensure subdirs preceed their parents.
QString stableRelativePath = dir;
@@ -1554,28 +1548,8 @@ public:
QString dir;
- // user import paths
- QStringList paths;
- // base..
- QString localFileOrQrc = toLocalFileOrQrc(base);
- QString localFileOrQrcPath = QFileInfo(localFileOrQrc).path();
- paths += localFileOrQrcPath;
- paths += QDeclarativeEnginePrivate::get(engine)->fileImportPath;
-
- QString applicationDirPath = QCoreApplication::applicationDirPath();
- if (!applicationDirPath.isEmpty())
- paths += applicationDirPath;
-
- paths += QDeclarativeEnginePrivate::get(engine)->environmentImportPath;
-#if (QT_VERSION >= QT_VERSION_CHECK(4,7,0))
- QString builtinPath = QLibraryInfo::location(QLibraryInfo::ImportsPath);
-#else
- QString builtinPath;
-#endif
- if (!builtinPath.isEmpty())
- paths += builtinPath;
-
- foreach (const QString &p, paths) {
+ foreach (const QString &p,
+ QDeclarativeEnginePrivate::get(engine)->fileImportPath) {
dir = p+QLatin1Char('/')+url;
QFileInfo fi(dir+QLatin1String("/qmldir"));
@@ -1807,25 +1781,59 @@ QUrl QDeclarativeEnginePrivate::Imports::baseUrl() const
Adds \a path as a directory where installed QML components are
defined in a URL-based directory structure.
- For example, if you add \c /opt/MyApp/lib/imports and then load QML
- that imports \c com.mycompany.Feature, then QDeclarativeEngine will look
- in \c /opt/MyApp/lib/imports/com/mycompany/Feature/ for the components
- provided by that module. A \c qmldir file is required for definiting the
- type version mapping and possibly declarative extensions plugins.
-
- The engine searches in the base directory of the qml file, then
- the paths added via addImportPath(), then in the directory containing the
- application executable (QCoreApplication::applicationDirPath()),
- then the paths specified in the \c QML_IMPORT_PATH environment variable, then the
- builtin \c ImportsPath from QLibraryInfo.
+ The newly added \a path will be first in the importPathList().
+ \sa setImportPathList()
*/
void QDeclarativeEngine::addImportPath(const QString& path)
{
if (qmlImportTrace())
qDebug() << "QDeclarativeEngine::addImportPath" << path;
Q_D(QDeclarativeEngine);
- d->fileImportPath.prepend(path);
+ QUrl url = QUrl(path);
+ if (url.isRelative() || url.scheme() == QString::fromLocal8Bit("file")) {
+ QDir dir = QDir(path);
+ d->fileImportPath.prepend(dir.canonicalPath());
+ } else {
+ d->fileImportPath.prepend(path);
+ }
+}
+
+
+/*!
+ Returns the list of directories where the engine searches for
+ installed modules.
+
+ For example, if \c /opt/MyApp/lib/imports is in the path, then QML that
+ imports \c com.mycompany.Feature will cause the QDeclarativeEngine to look
+ in \c /opt/MyApp/lib/imports/com/mycompany/Feature/ for the components
+ provided by that module. A \c qmldir file is required for defining the
+ type version mapping and possibly declarative extensions plugins.
+
+ By default, the list contains the paths specified in the \c QML_IMPORT_PATH environment
+ variable, then the builtin \c ImportsPath from QLibraryInfo.
+
+ \sa addImportPath() setImportPathList()
+*/
+QStringList QDeclarativeEngine::importPathList() const
+{
+ Q_D(const QDeclarativeEngine);
+ return d->fileImportPath;
+}
+
+/*!
+ Sets the list of directories where the engine searches for
+ installed modules.
+
+ By default, the list contains the paths specified in the \c QML_IMPORT_PATH environment
+ variable, then the builtin \c ImportsPath from QLibraryInfo.
+
+ \sa importPathList() addImportPath()
+ */
+void QDeclarativeEngine::setImportPathList(const QStringList &paths)
+{
+ Q_D(QDeclarativeEngine);
+ d->fileImportPath = paths;
}
/*!
@@ -1838,34 +1846,43 @@ bool QDeclarativeEngine::importExtension(const QString &fileName, const QString
qDebug() << "QDeclarativeEngine::importExtension" << uri << "from" << fileName;
QFileInfo fileInfo(fileName);
const QString absoluteFilePath = fileInfo.absoluteFilePath();
- QPluginLoader loader(absoluteFilePath);
- if (QDeclarativeExtensionInterface *iface = qobject_cast<QDeclarativeExtensionInterface *>(loader.instance())) {
- const QByteArray bytes = uri.toUtf8();
- const char *moduleId = bytes.constData();
+ QDeclarativeEnginePrivate *d = QDeclarativeEnginePrivate::get(this);
+ bool engineInitialized = d->initializedPlugins.contains(absoluteFilePath);
+ bool typesRegistered = qmlEnginePluginsWithRegisteredTypes()->contains(absoluteFilePath);
- // ### this code should probably be protected with a mutex.
- if (! qmlEnginePluginsWithRegisteredTypes()->contains(absoluteFilePath)) {
- // types should only be registered once (they're global).
+ if (typesRegistered) {
+ Q_ASSERT_X(qmlEnginePluginsWithRegisteredTypes()->value(absoluteFilePath) == uri,
+ "QDeclarativeEngine::importExtension",
+ "Internal error: Plugin imported previously with different uri");
+ }
- qmlEnginePluginsWithRegisteredTypes()->insert(absoluteFilePath);
- iface->registerTypes(moduleId);
- }
+ if (!engineInitialized || !typesRegistered) {
+ QPluginLoader loader(absoluteFilePath);
- QDeclarativeEnginePrivate *d = QDeclarativeEnginePrivate::get(this);
+ if (QDeclarativeExtensionInterface *iface = qobject_cast<QDeclarativeExtensionInterface *>(loader.instance())) {
- if (! d->initializedPlugins.contains(absoluteFilePath)) {
- // things on the engine (eg. adding new global objects) have to be done for every engine.
+ const QByteArray bytes = uri.toUtf8();
+ const char *moduleId = bytes.constData();
+ if (!typesRegistered) {
- // protect against double initialization
- d->initializedPlugins.insert(absoluteFilePath);
- iface->initializeEngine(this, moduleId);
- }
+ // ### this code should probably be protected with a mutex.
+ qmlEnginePluginsWithRegisteredTypes()->insert(absoluteFilePath, uri);
+ iface->registerTypes(moduleId);
+ }
+ if (!engineInitialized) {
+ // things on the engine (eg. adding new global objects) have to be done for every engine.
- return true;
+ // protect against double initialization
+ d->initializedPlugins.insert(absoluteFilePath);
+ iface->initializeEngine(this, moduleId);
+ }
+ } else {
+ return false;
+ }
}
- return false;
+ return true;
}
/*!
@@ -1963,8 +1980,11 @@ QString QDeclarativeEnginePrivate::resolvePlugin(const QDir &dir, const QString
QStringList()
# ifdef QT_DEBUG
<< QLatin1String("_debug.dylib") // try a qmake-style debug build first
-# endif
<< QLatin1String(".dylib")
+# else
+ << QLatin1String(".dylib")
+ << QLatin1String("_debug.dylib") // try a qmake-style debug build after
+# endif
<< QLatin1String(".so")
<< QLatin1String(".bundle"),
QLatin1String("lib"));
diff --git a/src/declarative/qml/qdeclarativeengine.h b/src/declarative/qml/qdeclarativeengine.h
index 19e81b6..b861c1b 100644
--- a/src/declarative/qml/qdeclarativeengine.h
+++ b/src/declarative/qml/qdeclarativeengine.h
@@ -77,7 +77,10 @@ public:
void clearComponentCache();
+ QStringList importPathList() const;
+ void setImportPathList(const QStringList &paths);
void addImportPath(const QString& dir);
+
bool importExtension(const QString &fileName, const QString &uri);
void setNetworkAccessManagerFactory(QDeclarativeNetworkAccessManagerFactory *);
diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h
index 06b5027..45089d0 100644
--- a/src/declarative/qml/qdeclarativeengine_p.h
+++ b/src/declarative/qml/qdeclarativeengine_p.h
@@ -55,21 +55,21 @@
#include "qdeclarativeengine.h"
-#include "qdeclarativeclassfactory_p.h"
-#include "qdeclarativecompositetypemanager_p.h"
-#include "qpodvector_p.h"
+#include "private/qdeclarativeclassfactory_p.h"
+#include "private/qdeclarativecompositetypemanager_p.h"
+#include "private/qpodvector_p.h"
#include "qdeclarative.h"
-#include "qdeclarativevaluetype_p.h"
+#include "private/qdeclarativevaluetype_p.h"
#include "qdeclarativecontext.h"
-#include "qdeclarativecontext_p.h"
+#include "private/qdeclarativecontext_p.h"
#include "qdeclarativeexpression.h"
-#include "qdeclarativeproperty_p.h"
-#include "qdeclarativepropertycache_p.h"
-#include "qdeclarativeobjectscriptclass_p.h"
-#include "qdeclarativecontextscriptclass_p.h"
-#include "qdeclarativevaluetypescriptclass_p.h"
-#include "qdeclarativemetatype_p.h"
-#include "qdeclarativedirparser_p.h"
+#include "private/qdeclarativeproperty_p.h"
+#include "private/qdeclarativepropertycache_p.h"
+#include "private/qdeclarativeobjectscriptclass_p.h"
+#include "private/qdeclarativecontextscriptclass_p.h"
+#include "private/qdeclarativevaluetypescriptclass_p.h"
+#include "private/qdeclarativemetatype_p.h"
+#include "private/qdeclarativedirparser_p.h"
#include <QtScript/QScriptClass>
#include <QtScript/QScriptValue>
@@ -225,7 +225,7 @@ public:
mutable QDeclarativeNetworkAccessManagerFactory *networkAccessManagerFactory;
QHash<QString,QDeclarativeImageProvider*> imageProviders;
- QImage getImageFromProvider(const QUrl &url);
+ QImage getImageFromProvider(const QUrl &url, QSize *size, const QSize& req_size);
mutable QMutex mutex;
@@ -272,7 +272,6 @@ public:
};
- QStringList environmentImportPath;
QSet<QString> initializedPlugins;
QString resolvePlugin(const QDir &dir, const QString &baseName,
diff --git a/src/declarative/qml/qdeclarativeenginedebug.cpp b/src/declarative/qml/qdeclarativeenginedebug.cpp
index d30aa8e..3455883 100644
--- a/src/declarative/qml/qdeclarativeenginedebug.cpp
+++ b/src/declarative/qml/qdeclarativeenginedebug.cpp
@@ -39,17 +39,17 @@
**
****************************************************************************/
-#include "qdeclarativeenginedebug_p.h"
+#include "private/qdeclarativeenginedebug_p.h"
-#include "qdeclarativeboundsignal_p.h"
+#include "private/qdeclarativeboundsignal_p.h"
#include "qdeclarativeengine.h"
-#include "qdeclarativemetatype_p.h"
+#include "private/qdeclarativemetatype_p.h"
#include "qdeclarativeproperty.h"
-#include "qdeclarativeproperty_p.h"
-#include "qdeclarativebinding_p.h"
-#include "qdeclarativecontext_p.h"
-#include "qdeclarativewatcher_p.h"
-#include "qdeclarativevaluetype_p.h"
+#include "private/qdeclarativeproperty_p.h"
+#include "private/qdeclarativebinding_p.h"
+#include "private/qdeclarativecontext_p.h"
+#include "private/qdeclarativewatcher_p.h"
+#include "private/qdeclarativevaluetype_p.h"
#include <QtCore/qdebug.h>
#include <QtCore/qmetaobject.h>
diff --git a/src/declarative/qml/qdeclarativeexpression.cpp b/src/declarative/qml/qdeclarativeexpression.cpp
index b7ee3a4..a250f21 100644
--- a/src/declarative/qml/qdeclarativeexpression.cpp
+++ b/src/declarative/qml/qdeclarativeexpression.cpp
@@ -40,13 +40,13 @@
****************************************************************************/
#include "qdeclarativeexpression.h"
-#include "qdeclarativeexpression_p.h"
+#include "private/qdeclarativeexpression_p.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativecontext_p.h"
-#include "qdeclarativerewrite_p.h"
-#include "qdeclarativecompiler_p.h"
-#include "qdeclarativeglobalscriptclass_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativecontext_p.h"
+#include "private/qdeclarativerewrite_p.h"
+#include "private/qdeclarativecompiler_p.h"
+#include "private/qdeclarativeglobalscriptclass_p.h"
#include <QtCore/qdebug.h>
#include <QtScript/qscriptprogram.h>
diff --git a/src/declarative/qml/qdeclarativeexpression.h b/src/declarative/qml/qdeclarativeexpression.h
index 73a5793..35d6949 100644
--- a/src/declarative/qml/qdeclarativeexpression.h
+++ b/src/declarative/qml/qdeclarativeexpression.h
@@ -42,7 +42,7 @@
#ifndef QDECLARATIVEEXPRESSION_H
#define QDECLARATIVEEXPRESSION_H
-#include "qdeclarativeerror.h"
+#include <QtDeclarative/qdeclarativeerror.h>
#include <QtCore/qobject.h>
#include <QtCore/qvariant.h>
diff --git a/src/declarative/qml/qdeclarativeexpression_p.h b/src/declarative/qml/qdeclarativeexpression_p.h
index 5adaa89..9a90fb6 100644
--- a/src/declarative/qml/qdeclarativeexpression_p.h
+++ b/src/declarative/qml/qdeclarativeexpression_p.h
@@ -55,8 +55,8 @@
#include "qdeclarativeexpression.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativeguard_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativeguard_p.h"
#include <QtScript/qscriptvalue.h>
diff --git a/src/declarative/qml/qdeclarativeextensionplugin.h b/src/declarative/qml/qdeclarativeextensionplugin.h
index c2ad798..8095ec7 100644
--- a/src/declarative/qml/qdeclarativeextensionplugin.h
+++ b/src/declarative/qml/qdeclarativeextensionplugin.h
@@ -44,7 +44,7 @@
#include <QtCore/qplugin.h>
-#include "qdeclarativeextensioninterface.h"
+#include <QtDeclarative/qdeclarativeextensioninterface.h>
QT_BEGIN_HEADER
diff --git a/src/declarative/qml/qdeclarativefastproperties.cpp b/src/declarative/qml/qdeclarativefastproperties.cpp
new file mode 100644
index 0000000..eb69b6a
--- /dev/null
+++ b/src/declarative/qml/qdeclarativefastproperties.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 "private/qdeclarativefastproperties_p.h"
+
+#include <private/qdeclarativeitem_p.h>
+
+QT_BEGIN_NAMESPACE
+
+// Adding entries to the QDeclarativeFastProperties class allows the QML
+// binding optimizer to bypass Qt's meta system and read and, more
+// importantly, subscribe to properties directly. Any property that is
+// primarily read from bindings is a candidate for inclusion as a fast
+// property.
+
+QDeclarativeFastProperties::QDeclarativeFastProperties()
+{
+ add(&QDeclarativeItem::staticMetaObject, QDeclarativeItem::staticMetaObject.indexOfProperty("parent"),
+ QDeclarativeItemPrivate::parentProperty);
+}
+
+int QDeclarativeFastProperties::accessorIndexForProperty(const QMetaObject *metaObject, int propertyIndex)
+{
+ Q_ASSERT(metaObject);
+ Q_ASSERT(propertyIndex >= 0);
+
+ // Find the "real" metaObject
+ while (metaObject->propertyOffset() > propertyIndex)
+ metaObject = metaObject->superClass();
+
+ QHash<QPair<const QMetaObject *, int>, int>::Iterator iter =
+ m_index.find(qMakePair(metaObject, propertyIndex));
+ if (iter != m_index.end())
+ return *iter;
+ else
+ return -1;
+}
+
+void QDeclarativeFastProperties::add(const QMetaObject *metaObject, int propertyIndex, Accessor accessor)
+{
+ Q_ASSERT(metaObject);
+ Q_ASSERT(propertyIndex >= 0);
+
+ // Find the "real" metaObject
+ while (metaObject->propertyOffset() > propertyIndex)
+ metaObject = metaObject->superClass();
+
+ QPair<const QMetaObject *, int> data = qMakePair(metaObject, propertyIndex);
+ int accessorIndex = m_accessors.count();
+ m_accessors.append(accessor);
+ m_index.insert(data, accessorIndex);
+}
+
+QT_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativefastproperties_p.h b/src/declarative/qml/qdeclarativefastproperties_p.h
new file mode 100644
index 0000000..60df947
--- /dev/null
+++ b/src/declarative/qml/qdeclarativefastproperties_p.h
@@ -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 QtDeclarative module 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 QDECLARATIVEFASTPROPERTIES_P_H
+#define QDECLARATIVEFASTPROPERTIES_P_H
+
+#include <QtCore/qvector.h>
+#include <QtCore/qhash.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QObject;
+class QDeclarativeNotifierEndpoint;
+class QDeclarativeFastProperties
+{
+public:
+ typedef void (*Accessor)(QObject *object, void *output, QDeclarativeNotifierEndpoint *endpoint);
+
+ QDeclarativeFastProperties();
+
+ Accessor accessor(int index) const { return m_accessors.at(index); }
+ int accessorIndexForProperty(const QMetaObject *, int);
+
+private:
+ void add(const QMetaObject *, int, Accessor);
+
+ QHash<QPair<const QMetaObject *, int>, int> m_index;
+ QVector<Accessor> m_accessors;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QDECLARATIVEFASTPROPERTIES_P_H
diff --git a/src/declarative/qml/qdeclarativeglobalscriptclass.cpp b/src/declarative/qml/qdeclarativeglobalscriptclass.cpp
index 9ee2fe5..fc802b4 100644
--- a/src/declarative/qml/qdeclarativeglobalscriptclass.cpp
+++ b/src/declarative/qml/qdeclarativeglobalscriptclass.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativeglobalscriptclass_p.h"
+#include "private/qdeclarativeglobalscriptclass_p.h"
#include <QtScript/qscriptstring.h>
#include <QtScript/qscriptengine.h>
diff --git a/src/declarative/qml/qdeclarativeguard_p.h b/src/declarative/qml/qdeclarativeguard_p.h
index 0861e9a..747d58f 100644
--- a/src/declarative/qml/qdeclarativeguard_p.h
+++ b/src/declarative/qml/qdeclarativeguard_p.h
@@ -99,7 +99,7 @@ QT_END_NAMESPACE
Q_DECLARE_METATYPE(QDeclarativeGuard<QObject>);
-#include "qdeclarativedeclarativedata_p.h"
+#include "private/qdeclarativedeclarativedata_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativeimageprovider.cpp b/src/declarative/qml/qdeclarativeimageprovider.cpp
index 9ef8545..b992b9f 100644
--- a/src/declarative/qml/qdeclarativeimageprovider.cpp
+++ b/src/declarative/qml/qdeclarativeimageprovider.cpp
@@ -61,10 +61,14 @@ QDeclarativeImageProvider::~QDeclarativeImageProvider()
}
/*!
- \fn QImage QDeclarativeImageProvider::request(const QString &id)
+ \fn QImage QDeclarativeImageProvider::request(const QString &id, QSize *size, const QSize& requested_size)
Implement this method to return the image with \a id.
+ If \a requested_size is a valid size, resize the image to that size before returning.
+
+ In any case, \a size must be set to the (original) size of the image.
+
Note: this method may be called by multiple threads, so ensure the
implementation of this method is reentrant.
*/
diff --git a/src/declarative/qml/qdeclarativeimageprovider.h b/src/declarative/qml/qdeclarativeimageprovider.h
index 6ee7bcf..50b73fe 100644
--- a/src/declarative/qml/qdeclarativeimageprovider.h
+++ b/src/declarative/qml/qdeclarativeimageprovider.h
@@ -54,7 +54,7 @@ class Q_DECLARATIVE_EXPORT QDeclarativeImageProvider
{
public:
virtual ~QDeclarativeImageProvider();
- virtual QImage request(const QString &id) = 0;
+ virtual QImage request(const QString &id, QSize *size, const QSize& requested_size) = 0;
};
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativeinfo.cpp b/src/declarative/qml/qdeclarativeinfo.cpp
index 5146bb6..6199aa9 100644
--- a/src/declarative/qml/qdeclarativeinfo.cpp
+++ b/src/declarative/qml/qdeclarativeinfo.cpp
@@ -41,10 +41,10 @@
#include "qdeclarativeinfo.h"
-#include "qdeclarativedeclarativedata_p.h"
+#include "private/qdeclarativedeclarativedata_p.h"
#include "qdeclarativecontext.h"
-#include "qdeclarativecontext_p.h"
-#include "qdeclarativemetatype_p.h"
+#include "private/qdeclarativecontext_p.h"
+#include "private/qdeclarativemetatype_p.h"
#include <QCoreApplication>
diff --git a/src/declarative/qml/qdeclarativeinstruction.cpp b/src/declarative/qml/qdeclarativeinstruction.cpp
index 9083ab3..3cf4d2b 100644
--- a/src/declarative/qml/qdeclarativeinstruction.cpp
+++ b/src/declarative/qml/qdeclarativeinstruction.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativeinstruction_p.h"
+#include "private/qdeclarativeinstruction_p.h"
-#include "qdeclarativecompiler_p.h"
+#include "private/qdeclarativecompiler_p.h"
#include <QtCore/qdebug.h>
diff --git a/src/declarative/qml/qdeclarativeintegercache.cpp b/src/declarative/qml/qdeclarativeintegercache.cpp
index be36471..d1e17a0 100644
--- a/src/declarative/qml/qdeclarativeintegercache.cpp
+++ b/src/declarative/qml/qdeclarativeintegercache.cpp
@@ -39,10 +39,10 @@
**
****************************************************************************/
-#include "qdeclarativeintegercache_p.h"
+#include "private/qdeclarativeintegercache_p.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativemetatype_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativemetatype_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativeintegercache_p.h b/src/declarative/qml/qdeclarativeintegercache_p.h
index 5fb5a76..b3a3796 100644
--- a/src/declarative/qml/qdeclarativeintegercache_p.h
+++ b/src/declarative/qml/qdeclarativeintegercache_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include "qdeclarativerefcount_p.h"
-#include "qdeclarativecleanup_p.h"
+#include "private/qdeclarativerefcount_p.h"
+#include "private/qdeclarativecleanup_p.h"
#include <QtCore/qhash.h>
diff --git a/src/declarative/qml/qdeclarativelist.cpp b/src/declarative/qml/qdeclarativelist.cpp
index 9691f32..45b8cd7 100644
--- a/src/declarative/qml/qdeclarativelist.cpp
+++ b/src/declarative/qml/qdeclarativelist.cpp
@@ -40,9 +40,9 @@
****************************************************************************/
#include "qdeclarativelist.h"
-#include "qdeclarativelist_p.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativeproperty_p.h"
+#include "private/qdeclarativelist_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativeproperty_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativelist.h b/src/declarative/qml/qdeclarativelist.h
index ed402a8..399b2a1 100644
--- a/src/declarative/qml/qdeclarativelist.h
+++ b/src/declarative/qml/qdeclarativelist.h
@@ -54,8 +54,12 @@ QT_MODULE(Declarative)
class QObject;
struct QMetaObject;
+
+#ifndef QDECLARATIVELISTPROPERTY
+#define QDECLARATIVELISTPROPERTY
template<typename T>
-struct QDeclarativeListProperty {
+class QDeclarativeListProperty {
+public:
typedef void (*AppendFunction)(QDeclarativeListProperty<T> *, T*);
typedef int (*CountFunction)(QDeclarativeListProperty<T> *);
typedef T *(*AtFunction)(QDeclarativeListProperty<T> *, int);
@@ -106,6 +110,7 @@ private:
return ((QList<T *> *)p->data)->clear();
}
};
+#endif
class QDeclarativeEngine;
class QDeclarativeListReferencePrivate;
@@ -140,7 +145,7 @@ private:
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(QDeclarativeListReference);
+Q_DECLARE_METATYPE(QDeclarativeListReference)
QT_END_HEADER
diff --git a/src/declarative/qml/qdeclarativelist_p.h b/src/declarative/qml/qdeclarativelist_p.h
index 45a805a..b17f84a 100644
--- a/src/declarative/qml/qdeclarativelist_p.h
+++ b/src/declarative/qml/qdeclarativelist_p.h
@@ -54,7 +54,7 @@
//
#include "qdeclarativelist.h"
-#include "qdeclarativeguard_p.h"
+#include "private/qdeclarativeguard_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativelistscriptclass.cpp b/src/declarative/qml/qdeclarativelistscriptclass.cpp
index ea04ad9..3958dd5 100644
--- a/src/declarative/qml/qdeclarativelistscriptclass.cpp
+++ b/src/declarative/qml/qdeclarativelistscriptclass.cpp
@@ -39,11 +39,11 @@
**
****************************************************************************/
-#include "qdeclarativelistscriptclass_p.h"
+#include "private/qdeclarativelistscriptclass_p.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativeguard_p.h"
-#include "qdeclarativelist_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativeguard_p.h"
+#include "private/qdeclarativelist_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativemetatype.cpp b/src/declarative/qml/qdeclarativemetatype.cpp
index c512d97..af21765 100644
--- a/src/declarative/qml/qdeclarativemetatype.cpp
+++ b/src/declarative/qml/qdeclarativemetatype.cpp
@@ -39,11 +39,11 @@
**
****************************************************************************/
-#include "qdeclarativemetatype_p.h"
+#include "private/qdeclarativemetatype_p.h"
-#include "qdeclarativeproxymetaobject_p.h"
-#include "qdeclarativecustomparser_p.h"
-#include "qdeclarativeguard_p.h"
+#include "private/qdeclarativeproxymetaobject_p.h"
+#include "private/qdeclarativecustomparser_p.h"
+#include "private/qdeclarativeguard_p.h"
#include <QtCore/qdebug.h>
#include <QtCore/qstringlist.h>
diff --git a/src/declarative/qml/qdeclarativenotifier.cpp b/src/declarative/qml/qdeclarativenotifier.cpp
index b12bf77..8c946f8 100644
--- a/src/declarative/qml/qdeclarativenotifier.cpp
+++ b/src/declarative/qml/qdeclarativenotifier.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativenotifier_p.h"
+#include "private/qdeclarativenotifier_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativenotifier_p.h b/src/declarative/qml/qdeclarativenotifier_p.h
index 2a9660d..0781caf 100644
--- a/src/declarative/qml/qdeclarativenotifier_p.h
+++ b/src/declarative/qml/qdeclarativenotifier_p.h
@@ -42,7 +42,7 @@
#ifndef QDECLARATIVENOTIFIER_P_H
#define QDECLARATIVENOTIFIER_P_H
-#include "qdeclarativeguard_p.h"
+#include "private/qdeclarativeguard_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
index 84c9bef..d3ee67b 100644
--- a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
+++ b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
@@ -39,16 +39,16 @@
**
****************************************************************************/
-#include "qdeclarativeobjectscriptclass_p.h"
-
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativecontext_p.h"
-#include "qdeclarativedeclarativedata_p.h"
-#include "qdeclarativetypenamescriptclass_p.h"
-#include "qdeclarativelistscriptclass_p.h"
-#include "qdeclarativebinding_p.h"
-#include "qdeclarativeguard_p.h"
-#include "qdeclarativevmemetaobject_p.h"
+#include "private/qdeclarativeobjectscriptclass_p.h"
+
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativecontext_p.h"
+#include "private/qdeclarativedeclarativedata_p.h"
+#include "private/qdeclarativetypenamescriptclass_p.h"
+#include "private/qdeclarativelistscriptclass_p.h"
+#include "private/qdeclarativebinding_p.h"
+#include "private/qdeclarativeguard_p.h"
+#include "private/qdeclarativevmemetaobject_p.h"
#include <QtCore/qtimer.h>
#include <QtCore/qvarlengtharray.h>
diff --git a/src/declarative/qml/qdeclarativeobjectscriptclass_p.h b/src/declarative/qml/qdeclarativeobjectscriptclass_p.h
index 396b782..8941ae0 100644
--- a/src/declarative/qml/qdeclarativeobjectscriptclass_p.h
+++ b/src/declarative/qml/qdeclarativeobjectscriptclass_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include "qdeclarativepropertycache_p.h"
-#include "qdeclarativetypenamecache_p.h"
+#include "private/qdeclarativepropertycache_p.h"
+#include "private/qdeclarativetypenamecache_p.h"
#include <private/qdeclarativescriptclass_p.h>
#include <QtScript/qscriptengine.h>
diff --git a/src/declarative/qml/qdeclarativeparser.cpp b/src/declarative/qml/qdeclarativeparser.cpp
index 6e6080e..69186b6 100644
--- a/src/declarative/qml/qdeclarativeparser.cpp
+++ b/src/declarative/qml/qdeclarativeparser.cpp
@@ -39,16 +39,16 @@
**
****************************************************************************/
-#include "qdeclarativeparser_p.h"
+#include "private/qdeclarativeparser_p.h"
#include "qdeclarativepropertyvaluesource.h"
-#include "qdeclarativevme_p.h"
+#include "private/qdeclarativevme_p.h"
#include "qdeclarative.h"
-#include "qdeclarativecomponent_p.h"
+#include "private/qdeclarativecomponent_p.h"
#include "qdeclarativecomponent.h"
-#include "qmetaobjectbuilder_p.h"
-#include "qdeclarativevmemetaobject_p.h"
-#include "qdeclarativecompiler_p.h"
+#include "private/qmetaobjectbuilder_p.h"
+#include "private/qdeclarativevmemetaobject_p.h"
+#include "private/qdeclarativecompiler_p.h"
#include "parser/qdeclarativejsast_p.h"
#include "parser/qdeclarativejsengine_p.h"
diff --git a/src/declarative/qml/qdeclarativeparser_p.h b/src/declarative/qml/qdeclarativeparser_p.h
index 476b027..57df04c 100644
--- a/src/declarative/qml/qdeclarativeparser_p.h
+++ b/src/declarative/qml/qdeclarativeparser_p.h
@@ -54,7 +54,7 @@
//
#include "qdeclarative.h"
-#include "qdeclarativerefcount_p.h"
+#include "private/qdeclarativerefcount_p.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qlist.h>
@@ -203,7 +203,7 @@ namespace QDeclarativeParser
DynamicProperty();
DynamicProperty(const DynamicProperty &);
- enum Type { Variant, Int, Bool, Real, String, Url, Color, Date, Alias, Custom, CustomList };
+ enum Type { Variant, Int, Bool, Real, String, Url, Color, Time, Date, DateTime, Alias, Custom, CustomList };
bool isDefaultProperty;
Type type;
@@ -237,7 +237,7 @@ namespace QDeclarativeParser
QList<DynamicSlot> dynamicSlots;
};
- class Variant
+ class Q_DECLARATIVE_EXPORT Variant
{
public:
enum Type {
diff --git a/src/declarative/qml/qdeclarativeproperty.cpp b/src/declarative/qml/qdeclarativeproperty.cpp
index caa1acf..affb6b9 100644
--- a/src/declarative/qml/qdeclarativeproperty.cpp
+++ b/src/declarative/qml/qdeclarativeproperty.cpp
@@ -40,20 +40,20 @@
****************************************************************************/
#include "qdeclarativeproperty.h"
-#include "qdeclarativeproperty_p.h"
+#include "private/qdeclarativeproperty_p.h"
-#include "qdeclarativecompositetypedata_p.h"
+#include "private/qdeclarativecompositetypedata_p.h"
#include "qdeclarative.h"
-#include "qdeclarativebinding_p.h"
+#include "private/qdeclarativebinding_p.h"
#include "qdeclarativecontext.h"
-#include "qdeclarativecontext_p.h"
-#include "qdeclarativeboundsignal_p.h"
+#include "private/qdeclarativecontext_p.h"
+#include "private/qdeclarativeboundsignal_p.h"
#include "qdeclarativeengine.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativedeclarativedata_p.h"
-#include "qdeclarativestringconverters_p.h"
-#include "qdeclarativelist_p.h"
-#include "qdeclarativecompiler_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativedeclarativedata_p.h"
+#include "private/qdeclarativestringconverters_p.h"
+#include "private/qdeclarativelist_p.h"
+#include "private/qdeclarativecompiler_p.h"
#include <QStringList>
#include <QtCore/qdebug.h>
diff --git a/src/declarative/qml/qdeclarativeproperty.h b/src/declarative/qml/qdeclarativeproperty.h
index 73bccf3..8f6ea48 100644
--- a/src/declarative/qml/qdeclarativeproperty.h
+++ b/src/declarative/qml/qdeclarativeproperty.h
@@ -131,6 +131,11 @@ private:
};
typedef QList<QDeclarativeProperty> QDeclarativeProperties;
+inline uint qHash (const QDeclarativeProperty &key)
+{
+ return qHash(key.object()) + qHash(key.name());
+}
+
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/declarative/qml/qdeclarativeproperty_p.h b/src/declarative/qml/qdeclarativeproperty_p.h
index 1bbee64..420a1ba 100644
--- a/src/declarative/qml/qdeclarativeproperty_p.h
+++ b/src/declarative/qml/qdeclarativeproperty_p.h
@@ -55,8 +55,8 @@
#include "qdeclarativeproperty.h"
-#include "qdeclarativepropertycache_p.h"
-#include "qdeclarativeguard_p.h"
+#include "private/qdeclarativepropertycache_p.h"
+#include "private/qdeclarativeguard_p.h"
#include <private/qobject_p.h>
diff --git a/src/declarative/qml/qdeclarativepropertycache.cpp b/src/declarative/qml/qdeclarativepropertycache.cpp
index fea59e5..111259d 100644
--- a/src/declarative/qml/qdeclarativepropertycache.cpp
+++ b/src/declarative/qml/qdeclarativepropertycache.cpp
@@ -39,10 +39,10 @@
**
****************************************************************************/
-#include "qdeclarativepropertycache_p.h"
+#include "private/qdeclarativepropertycache_p.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativebinding_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativebinding_p.h"
#include <QtCore/qdebug.h>
Q_DECLARE_METATYPE(QScriptValue);
diff --git a/src/declarative/qml/qdeclarativepropertycache_p.h b/src/declarative/qml/qdeclarativepropertycache_p.h
index bfbeff4..6b64a96 100644
--- a/src/declarative/qml/qdeclarativepropertycache_p.h
+++ b/src/declarative/qml/qdeclarativepropertycache_p.h
@@ -53,9 +53,9 @@
// We mean it.
//
-#include "qdeclarativerefcount_p.h"
-#include "qdeclarativecleanup_p.h"
-#include "qdeclarativenotifier_p.h"
+#include "private/qdeclarativerefcount_p.h"
+#include "private/qdeclarativecleanup_p.h"
+#include "private/qdeclarativenotifier_p.h"
#include <QtCore/qvector.h>
diff --git a/src/declarative/qml/qdeclarativeproxymetaobject.cpp b/src/declarative/qml/qdeclarativeproxymetaobject.cpp
index 1decea1..fe0dce7 100644
--- a/src/declarative/qml/qdeclarativeproxymetaobject.cpp
+++ b/src/declarative/qml/qdeclarativeproxymetaobject.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativeproxymetaobject_p.h"
+#include "private/qdeclarativeproxymetaobject_p.h"
#include <QDebug>
diff --git a/src/declarative/qml/qdeclarativeproxymetaobject_p.h b/src/declarative/qml/qdeclarativeproxymetaobject_p.h
index 3f103b6..3daa22f 100644
--- a/src/declarative/qml/qdeclarativeproxymetaobject_p.h
+++ b/src/declarative/qml/qdeclarativeproxymetaobject_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include "qmetaobjectbuilder_p.h"
+#include "private/qmetaobjectbuilder_p.h"
#include "qdeclarative.h"
#include <QtCore/QMetaObject>
diff --git a/src/declarative/qml/qdeclarativerefcount.cpp b/src/declarative/qml/qdeclarativerefcount.cpp
index 943e35c..351fcf3 100644
--- a/src/declarative/qml/qdeclarativerefcount.cpp
+++ b/src/declarative/qml/qdeclarativerefcount.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativerefcount_p.h"
+#include "private/qdeclarativerefcount_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativerewrite.cpp b/src/declarative/qml/qdeclarativerewrite.cpp
index afc6e63..3d40e77 100644
--- a/src/declarative/qml/qdeclarativerewrite.cpp
+++ b/src/declarative/qml/qdeclarativerewrite.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativerewrite_p.h"
+#include "private/qdeclarativerewrite_p.h"
-#include "qdeclarativeglobal_p.h"
+#include "private/qdeclarativeglobal_p.h"
#include <QtCore/qdebug.h>
diff --git a/src/declarative/qml/qdeclarativescriptparser.cpp b/src/declarative/qml/qdeclarativescriptparser.cpp
index 49bd3b7..cba5bb9 100644
--- a/src/declarative/qml/qdeclarativescriptparser.cpp
+++ b/src/declarative/qml/qdeclarativescriptparser.cpp
@@ -39,16 +39,16 @@
**
****************************************************************************/
-#include "qdeclarativescriptparser_p.h"
+#include "private/qdeclarativescriptparser_p.h"
-#include "qdeclarativeparser_p.h"
+#include "private/qdeclarativeparser_p.h"
#include "parser/qdeclarativejsengine_p.h"
#include "parser/qdeclarativejsparser_p.h"
#include "parser/qdeclarativejslexer_p.h"
#include "parser/qdeclarativejsnodepool_p.h"
#include "parser/qdeclarativejsastvisitor_p.h"
#include "parser/qdeclarativejsast_p.h"
-#include "qdeclarativerewrite_p.h"
+#include "private/qdeclarativerewrite_p.h"
#include <QStack>
#include <QCoreApplication>
@@ -397,7 +397,7 @@ Object *ProcessAST::defineObjectBinding(AST::UiQualifiedId *qualifiedId, bool on
if (string.isStringList()) {
QStringList urls = string.asStringList();
// We need to add this as a resource
- for (int ii = 0; ii < urls.count(); ++ii)
+ for (int ii = 0; ii < urls.count(); ++ii)
_parser->_refUrls << QUrl(urls.at(ii));
}
}
@@ -503,7 +503,7 @@ bool ProcessAST::visit(AST::UiImport *node)
error.setColumn(node->importIdToken.startColumn);
_parser->_errors << error;
return false;
- }
+ }
import.location = location(startLoc, endLoc);
@@ -528,9 +528,14 @@ bool ProcessAST::visit(AST::UiPublicMember *node)
{ "string", Object::DynamicProperty::String, "QString" },
{ "url", Object::DynamicProperty::Url, "QUrl" },
{ "color", Object::DynamicProperty::Color, "QColor" },
- { "date", Object::DynamicProperty::Date, "QDate" },
- { "var", Object::DynamicProperty::Variant, "QVariant" },
- { "variant", Object::DynamicProperty::Variant, "QVariant" }
+ // Internally QTime, QDate and QDateTime are all supported.
+ // To be more consistent with JavaScript we expose only
+ // QDateTime as it matches closely with the Date JS type.
+ // We also call it "date" to match.
+ // { "time", Object::DynamicProperty::Time, "QTime" },
+ // { "date", Object::DynamicProperty::Date, "QDate" },
+ { "date", Object::DynamicProperty::DateTime, "QDateTime" },
+ { "var", Object::DynamicProperty::Variant, "QVariant" }
};
const int propTypeNameToTypesCount = sizeof(propTypeNameToTypes) /
sizeof(propTypeNameToTypes[0]);
@@ -632,7 +637,7 @@ bool ProcessAST::visit(AST::UiPublicMember *node)
property.isDefaultProperty = node->isDefaultMember;
property.type = type;
if (type >= Object::DynamicProperty::Custom) {
- QDeclarativeScriptParser::TypeReference *typeRef =
+ QDeclarativeScriptParser::TypeReference *typeRef =
_parser->findOrCreateType(memberType);
typeRef->refObjects.append(_stateStack.top().object);
}
@@ -655,9 +660,12 @@ bool ProcessAST::visit(AST::UiPublicMember *node)
}
_stateStack.top().object->dynamicProperties << property;
+
+ // process QML-like initializers (e.g. property Object o: Object {})
+ accept(node->binding);
}
- return true;
+ return false;
}
@@ -991,7 +999,7 @@ QDeclarativeParser::Object::ScriptBlock::Pragmas QDeclarativeScriptParser::extra
for (int ii = 0; ii < length; ++ii) {
const QChar &c = data[ii];
- if (c.isSpace())
+ if (c.isSpace())
continue;
if (c == forwardSlash) {
diff --git a/src/declarative/qml/qdeclarativescriptparser_p.h b/src/declarative/qml/qdeclarativescriptparser_p.h
index 68f1840..28e960b 100644
--- a/src/declarative/qml/qdeclarativescriptparser_p.h
+++ b/src/declarative/qml/qdeclarativescriptparser_p.h
@@ -53,7 +53,7 @@
//
#include "qdeclarativeerror.h"
-#include "qdeclarativeparser_p.h"
+#include "private/qdeclarativeparser_p.h"
#include <QtCore/QList>
#include <QtCore/QUrl>
diff --git a/src/declarative/qml/qdeclarativesqldatabase.cpp b/src/declarative/qml/qdeclarativesqldatabase.cpp
index 2d5f096..45f277e 100644
--- a/src/declarative/qml/qdeclarativesqldatabase.cpp
+++ b/src/declarative/qml/qdeclarativesqldatabase.cpp
@@ -39,12 +39,12 @@
**
****************************************************************************/
-#include "qdeclarativesqldatabase_p.h"
+#include "private/qdeclarativesqldatabase_p.h"
#include "qdeclarativeengine.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativerefcount_p.h"
-#include "qdeclarativeengine_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativerefcount_p.h"
+#include "private/qdeclarativeengine_p.h"
#include <QtCore/qobject.h>
#include <QtScript/qscriptvalue.h>
@@ -279,7 +279,7 @@ static QScriptValue qmlsqldatabase_change_version(QScriptContext *context, QScri
QString foundvers = context->thisObject().property(QLatin1String("version")).toString();
if (from_version!=foundvers) {
- THROW_SQL(2,QDeclarativeEngine::tr("Version mismatch: expected %1, found %2").arg(from_version).arg(foundvers));
+ THROW_SQL(VERSION_ERR,QDeclarativeEngine::tr("Version mismatch: expected %1, found %2").arg(from_version).arg(foundvers));
return engine->undefinedValue();
}
@@ -293,7 +293,7 @@ static QScriptValue qmlsqldatabase_change_version(QScriptContext *context, QScri
} else {
if (!db.commit()) {
db.rollback();
- THROW_SQL(0,QDeclarativeEngine::tr("SQL transaction failed"));
+ THROW_SQL(UNKNOWN_ERR,QDeclarativeEngine::tr("SQL transaction failed"));
} else {
ok = true;
}
diff --git a/src/declarative/qml/qdeclarativestringconverters.cpp b/src/declarative/qml/qdeclarativestringconverters.cpp
index f3497e5..5c88b9a 100644
--- a/src/declarative/qml/qdeclarativestringconverters.cpp
+++ b/src/declarative/qml/qdeclarativestringconverters.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativestringconverters_p.h"
+#include "private/qdeclarativestringconverters_p.h"
#include <QtGui/qcolor.h>
#include <QtGui/qvector3d.h>
diff --git a/src/declarative/qml/qdeclarativetypenamecache.cpp b/src/declarative/qml/qdeclarativetypenamecache.cpp
index c4a8707..ea32aa0 100644
--- a/src/declarative/qml/qdeclarativetypenamecache.cpp
+++ b/src/declarative/qml/qdeclarativetypenamecache.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativetypenamecache_p.h"
+#include "private/qdeclarativetypenamecache_p.h"
-#include "qdeclarativeengine_p.h"
+#include "private/qdeclarativeengine_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativetypenamecache_p.h b/src/declarative/qml/qdeclarativetypenamecache_p.h
index 3e24f5c..afd2fd9 100644
--- a/src/declarative/qml/qdeclarativetypenamecache_p.h
+++ b/src/declarative/qml/qdeclarativetypenamecache_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include "qdeclarativerefcount_p.h"
-#include "qdeclarativecleanup_p.h"
+#include "private/qdeclarativerefcount_p.h"
+#include "private/qdeclarativecleanup_p.h"
#include <private/qscriptdeclarativeclass_p.h>
diff --git a/src/declarative/qml/qdeclarativetypenamescriptclass.cpp b/src/declarative/qml/qdeclarativetypenamescriptclass.cpp
index 02370e0..9cac3e1 100644
--- a/src/declarative/qml/qdeclarativetypenamescriptclass.cpp
+++ b/src/declarative/qml/qdeclarativetypenamescriptclass.cpp
@@ -39,10 +39,10 @@
**
****************************************************************************/
-#include "qdeclarativetypenamescriptclass_p.h"
+#include "private/qdeclarativetypenamescriptclass_p.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativetypenamecache_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativetypenamecache_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativetypenamescriptclass_p.h b/src/declarative/qml/qdeclarativetypenamescriptclass_p.h
index b6e3f51..8e07f02 100644
--- a/src/declarative/qml/qdeclarativetypenamescriptclass_p.h
+++ b/src/declarative/qml/qdeclarativetypenamescriptclass_p.h
@@ -52,7 +52,7 @@
//
// We mean it.
//
-#include "qdeclarativeengine_p.h"
+#include "private/qdeclarativeengine_p.h"
#include <QtScript/qscriptclass.h>
diff --git a/src/declarative/qml/qdeclarativevaluetype.cpp b/src/declarative/qml/qdeclarativevaluetype.cpp
index 00e6704..839e0dd 100644
--- a/src/declarative/qml/qdeclarativevaluetype.cpp
+++ b/src/declarative/qml/qdeclarativevaluetype.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativevaluetype_p.h"
+#include "private/qdeclarativevaluetype_p.h"
-#include "qdeclarativemetatype_p.h"
+#include "private/qdeclarativemetatype_p.h"
#include <QtCore/qdebug.h>
diff --git a/src/declarative/qml/qdeclarativevaluetype_p.h b/src/declarative/qml/qdeclarativevaluetype_p.h
index ad2f6c4..1fe8bd2 100644
--- a/src/declarative/qml/qdeclarativevaluetype_p.h
+++ b/src/declarative/qml/qdeclarativevaluetype_p.h
@@ -54,7 +54,7 @@
//
#include "qdeclarativeproperty.h"
-#include "qdeclarativeproperty_p.h"
+#include "private/qdeclarativeproperty_p.h"
#include <QtCore/qobject.h>
#include <QtCore/qrect.h>
diff --git a/src/declarative/qml/qdeclarativevaluetypescriptclass.cpp b/src/declarative/qml/qdeclarativevaluetypescriptclass.cpp
index a567c38..f7902b9 100644
--- a/src/declarative/qml/qdeclarativevaluetypescriptclass.cpp
+++ b/src/declarative/qml/qdeclarativevaluetypescriptclass.cpp
@@ -39,12 +39,12 @@
**
****************************************************************************/
-#include "qdeclarativevaluetypescriptclass_p.h"
+#include "private/qdeclarativevaluetypescriptclass_p.h"
-#include "qdeclarativebinding_p.h"
-#include "qdeclarativeproperty_p.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativeguard_p.h"
+#include "private/qdeclarativebinding_p.h"
+#include "private/qdeclarativeproperty_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativeguard_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativevme.cpp b/src/declarative/qml/qdeclarativevme.cpp
index 2338bc3..5ba7f9b 100644
--- a/src/declarative/qml/qdeclarativevme.cpp
+++ b/src/declarative/qml/qdeclarativevme.cpp
@@ -39,26 +39,26 @@
**
****************************************************************************/
-#include "qdeclarativevme_p.h"
+#include "private/qdeclarativevme_p.h"
-#include "qdeclarativecompiler_p.h"
-#include "qdeclarativeboundsignal_p.h"
-#include "qdeclarativestringconverters_p.h"
-#include "qmetaobjectbuilder_p.h"
-#include "qdeclarativedeclarativedata_p.h"
+#include "private/qdeclarativecompiler_p.h"
+#include "private/qdeclarativeboundsignal_p.h"
+#include "private/qdeclarativestringconverters_p.h"
+#include "private/qmetaobjectbuilder_p.h"
+#include "private/qdeclarativedeclarativedata_p.h"
#include "qdeclarative.h"
-#include "qdeclarativecustomparser_p.h"
+#include "private/qdeclarativecustomparser_p.h"
#include "qdeclarativeengine.h"
#include "qdeclarativecontext.h"
#include "qdeclarativecomponent.h"
-#include "qdeclarativebinding_p.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativecomponent_p.h"
-#include "qdeclarativevmemetaobject_p.h"
-#include "qdeclarativebinding_p_p.h"
-#include "qdeclarativecontext_p.h"
-#include "qdeclarativecompiledbindings_p.h"
-#include "qdeclarativeglobal_p.h"
+#include "private/qdeclarativebinding_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativecomponent_p.h"
+#include "private/qdeclarativevmemetaobject_p.h"
+#include "private/qdeclarativebinding_p_p.h"
+#include "private/qdeclarativecontext_p.h"
+#include "private/qdeclarativecompiledbindings_p.h"
+#include "private/qdeclarativeglobal_p.h"
#include "qdeclarativescriptstring.h"
#include <QStack>
diff --git a/src/declarative/qml/qdeclarativevme_p.h b/src/declarative/qml/qdeclarativevme_p.h
index 1c6fd3c..87a1aab 100644
--- a/src/declarative/qml/qdeclarativevme_p.h
+++ b/src/declarative/qml/qdeclarativevme_p.h
@@ -54,7 +54,7 @@
//
#include "qdeclarativeerror.h"
-#include "qbitfield_p.h"
+#include "private/qbitfield_p.h"
#include <QtCore/QString>
#include <QtCore/QStack>
diff --git a/src/declarative/qml/qdeclarativevmemetaobject.cpp b/src/declarative/qml/qdeclarativevmemetaobject.cpp
index f9c99ee..2644ecf 100644
--- a/src/declarative/qml/qdeclarativevmemetaobject.cpp
+++ b/src/declarative/qml/qdeclarativevmemetaobject.cpp
@@ -39,27 +39,348 @@
**
****************************************************************************/
-#include "qdeclarativevmemetaobject_p.h"
+#include "private/qdeclarativevmemetaobject_p.h"
#include "qdeclarative.h"
-#include "qdeclarativerefcount_p.h"
+#include "private/qdeclarativerefcount_p.h"
#include "qdeclarativeexpression.h"
-#include "qdeclarativeexpression_p.h"
-#include "qdeclarativecontext_p.h"
+#include "private/qdeclarativeexpression_p.h"
+#include "private/qdeclarativecontext_p.h"
-#include <QColor>
-#include <QDate>
-#include <QtCore/qlist.h>
-#include <QtCore/qdebug.h>
+Q_DECLARE_METATYPE(QScriptValue);
QT_BEGIN_NAMESPACE
+class QDeclarativeVMEVariant
+{
+public:
+ inline QDeclarativeVMEVariant();
+ inline ~QDeclarativeVMEVariant();
+
+ inline const void *dataPtr() const;
+ inline void *dataPtr();
+ inline int dataType() const;
+
+ inline QObject *asQObject();
+ inline const QVariant &asQVariant();
+ inline int asInt();
+ inline bool asBool();
+ inline double asDouble();
+ inline const QString &asQString();
+ inline const QUrl &asQUrl();
+ inline const QColor &asQColor();
+ inline const QTime &asQTime();
+ inline const QDate &asQDate();
+ inline const QDateTime &asQDateTime();
+ inline const QScriptValue &asQScriptValue();
+
+ inline void setValue(QObject *);
+ inline void setValue(const QVariant &);
+ inline void setValue(int);
+ inline void setValue(bool);
+ inline void setValue(double);
+ inline void setValue(const QString &);
+ inline void setValue(const QUrl &);
+ inline void setValue(const QColor &);
+ inline void setValue(const QTime &);
+ inline void setValue(const QDate &);
+ inline void setValue(const QDateTime &);
+ inline void setValue(const QScriptValue &);
+
+private:
+ int type;
+ void *data[4]; // Large enough to hold all types
+
+ inline void cleanup();
+};
+
+QDeclarativeVMEVariant::QDeclarativeVMEVariant()
+: type(QVariant::Invalid)
+{
+}
+
+QDeclarativeVMEVariant::~QDeclarativeVMEVariant()
+{
+ cleanup();
+}
+
+void QDeclarativeVMEVariant::cleanup()
+{
+ if (type == QVariant::Invalid) {
+ } else if (type == QMetaType::QObjectStar ||
+ type == QMetaType::Int ||
+ type == QMetaType::Bool ||
+ type == QMetaType::Double) {
+ type = QVariant::Invalid;
+ } else if (type == QMetaType::QString) {
+ ((QString *)dataPtr())->~QString();
+ type = QVariant::Invalid;
+ } else if (type == QMetaType::QUrl) {
+ ((QUrl *)dataPtr())->~QUrl();
+ type = QVariant::Invalid;
+ } else if (type == QMetaType::QColor) {
+ ((QColor *)dataPtr())->~QColor();
+ type = QVariant::Invalid;
+ } else if (type == QMetaType::QTime) {
+ ((QTime *)dataPtr())->~QTime();
+ type = QVariant::Invalid;
+ } else if (type == QMetaType::QDate) {
+ ((QDate *)dataPtr())->~QDate();
+ type = QVariant::Invalid;
+ } else if (type == QMetaType::QDateTime) {
+ ((QDateTime *)dataPtr())->~QDateTime();
+ type = QVariant::Invalid;
+ } else if (type == qMetaTypeId<QVariant>()) {
+ ((QVariant *)dataPtr())->~QVariant();
+ type = QVariant::Invalid;
+ } else if (type == qMetaTypeId<QScriptValue>()) {
+ ((QScriptValue *)dataPtr())->~QScriptValue();
+ type = QVariant::Invalid;
+ }
+
+}
+
+int QDeclarativeVMEVariant::dataType() const
+{
+ return type;
+}
+
+const void *QDeclarativeVMEVariant::dataPtr() const
+{
+ return &data;
+}
+
+void *QDeclarativeVMEVariant::dataPtr()
+{
+ return &data;
+}
+
+QObject *QDeclarativeVMEVariant::asQObject()
+{
+ if (type != QMetaType::QObjectStar)
+ setValue((QObject *)0);
+
+ return *(QObject **)(dataPtr());
+}
+
+const QVariant &QDeclarativeVMEVariant::asQVariant()
+{
+ if (type != QMetaType::QVariant)
+ setValue(QVariant());
+
+ return *(QVariant *)(dataPtr());
+}
+
+int QDeclarativeVMEVariant::asInt()
+{
+ if (type != QMetaType::Int)
+ setValue(int(0));
+
+ return *(int *)(dataPtr());
+}
+
+bool QDeclarativeVMEVariant::asBool()
+{
+ if (type != QMetaType::Bool)
+ setValue(bool(false));
+
+ return *(bool *)(dataPtr());
+}
+
+double QDeclarativeVMEVariant::asDouble()
+{
+ if (type != QMetaType::Double)
+ setValue(double(0));
+
+ return *(double *)(dataPtr());
+}
+
+const QString &QDeclarativeVMEVariant::asQString()
+{
+ if (type != QMetaType::QString)
+ setValue(QString());
+
+ return *(QString *)(dataPtr());
+}
+
+const QUrl &QDeclarativeVMEVariant::asQUrl()
+{
+ if (type != QMetaType::QUrl)
+ setValue(QUrl());
+
+ return *(QUrl *)(dataPtr());
+}
+
+const QColor &QDeclarativeVMEVariant::asQColor()
+{
+ if (type != QMetaType::QColor)
+ setValue(QColor());
+
+ return *(QColor *)(dataPtr());
+}
+
+const QTime &QDeclarativeVMEVariant::asQTime()
+{
+ if (type != QMetaType::QTime)
+ setValue(QTime());
+
+ return *(QTime *)(dataPtr());
+}
+
+const QDate &QDeclarativeVMEVariant::asQDate()
+{
+ if (type != QMetaType::QDate)
+ setValue(QDate());
+
+ return *(QDate *)(dataPtr());
+}
+
+const QDateTime &QDeclarativeVMEVariant::asQDateTime()
+{
+ if (type != QMetaType::QDateTime)
+ setValue(QDateTime());
+
+ return *(QDateTime *)(dataPtr());
+}
+
+const QScriptValue &QDeclarativeVMEVariant::asQScriptValue()
+{
+ if (type != qMetaTypeId<QScriptValue>())
+ setValue(QScriptValue());
+
+ return *(QScriptValue *)(dataPtr());
+}
+
+void QDeclarativeVMEVariant::setValue(QObject *v)
+{
+ if (type != QMetaType::QObjectStar) {
+ cleanup();
+ type = QMetaType::QObjectStar;
+ }
+ *(QObject **)(dataPtr()) = v;
+}
+
+void QDeclarativeVMEVariant::setValue(const QVariant &v)
+{
+ if (type != qMetaTypeId<QVariant>()) {
+ cleanup();
+ type = qMetaTypeId<QVariant>();
+ new (dataPtr()) QVariant(v);
+ } else {
+ *(QVariant *)(dataPtr()) = v;
+ }
+}
+
+void QDeclarativeVMEVariant::setValue(int v)
+{
+ if (type != QMetaType::Int) {
+ cleanup();
+ type = QMetaType::Int;
+ }
+ *(int *)(dataPtr()) = v;
+}
+
+void QDeclarativeVMEVariant::setValue(bool v)
+{
+ if (type != QMetaType::Bool) {
+ cleanup();
+ type = QMetaType::Bool;
+ }
+ *(bool *)(dataPtr()) = v;
+}
+
+void QDeclarativeVMEVariant::setValue(double v)
+{
+ if (type != QMetaType::Double) {
+ cleanup();
+ type = QMetaType::Double;
+ }
+ *(double *)(dataPtr()) = v;
+}
+
+void QDeclarativeVMEVariant::setValue(const QString &v)
+{
+ if (type != QMetaType::QString) {
+ cleanup();
+ type = QMetaType::QString;
+ new (dataPtr()) QString(v);
+ } else {
+ *(QString *)(dataPtr()) = v;
+ }
+}
+
+void QDeclarativeVMEVariant::setValue(const QUrl &v)
+{
+ if (type != QMetaType::QUrl) {
+ cleanup();
+ type = QMetaType::QUrl;
+ new (dataPtr()) QUrl(v);
+ } else {
+ *(QUrl *)(dataPtr()) = v;
+ }
+}
+
+void QDeclarativeVMEVariant::setValue(const QColor &v)
+{
+ if (type != QMetaType::QColor) {
+ cleanup();
+ type = QMetaType::QColor;
+ new (dataPtr()) QColor(v);
+ } else {
+ *(QColor *)(dataPtr()) = v;
+ }
+}
+
+void QDeclarativeVMEVariant::setValue(const QTime &v)
+{
+ if (type != QMetaType::QTime) {
+ cleanup();
+ type = QMetaType::QTime;
+ new (dataPtr()) QTime(v);
+ } else {
+ *(QTime *)(dataPtr()) = v;
+ }
+}
+
+void QDeclarativeVMEVariant::setValue(const QDate &v)
+{
+ if (type != QMetaType::QDate) {
+ cleanup();
+ type = QMetaType::QDate;
+ new (dataPtr()) QDate(v);
+ } else {
+ *(QDate *)(dataPtr()) = v;
+ }
+}
+
+void QDeclarativeVMEVariant::setValue(const QDateTime &v)
+{
+ if (type != QMetaType::QDateTime) {
+ cleanup();
+ type = QMetaType::QDateTime;
+ new (dataPtr()) QDateTime(v);
+ } else {
+ *(QDateTime *)(dataPtr()) = v;
+ }
+}
+
+void QDeclarativeVMEVariant::setValue(const QScriptValue &v)
+{
+ if (type != qMetaTypeId<QScriptValue>()) {
+ cleanup();
+ type = qMetaTypeId<QScriptValue>();
+ new (dataPtr()) QScriptValue(v);
+ } else {
+ *(QScriptValue *)(dataPtr()) = v;
+ }
+}
+
QDeclarativeVMEMetaObject::QDeclarativeVMEMetaObject(QObject *obj,
const QMetaObject *other,
const QDeclarativeVMEMetaData *meta,
QDeclarativeCompiledData *cdata)
: object(obj), compiledData(cdata), ctxt(QDeclarativeDeclarativeData::get(obj)->outerContext),
- metaData(meta), methods(0), parent(0)
+ metaData(meta), data(0), methods(0), parent(0)
{
compiledData->addref();
@@ -74,20 +395,18 @@ QDeclarativeVMEMetaObject::QDeclarativeVMEMetaObject(QObject *obj,
propOffset = QAbstractDynamicMetaObject::propertyOffset();
methodOffset = QAbstractDynamicMetaObject::methodOffset();
- data = new QVariant[metaData->propertyCount];
- aConnected.resize(metaData->aliasCount);
+ data = new QDeclarativeVMEVariant[metaData->propertyCount];
+ aConnected.resize(metaData->aliasCount);
int list_type = qMetaTypeId<QDeclarativeListProperty<QObject> >();
+
// ### Optimize
for (int ii = 0; ii < metaData->propertyCount; ++ii) {
int t = (metaData->propertyData() + ii)->propertyType;
if (t == list_type) {
- listProperties.append(new List(methodOffset + ii));
- data[ii] = QVariant::fromValue(QDeclarativeListProperty<QObject>(obj, listProperties.last(), list_append,
- list_count, list_at, list_clear));
- } else if (t != -1) {
- data[ii] = QVariant((QVariant::Type)t);
- }
+ listProperties.append(List(methodOffset + ii));
+ data[ii].setValue(listProperties.count() - 1);
+ }
}
}
@@ -95,7 +414,6 @@ QDeclarativeVMEMetaObject::~QDeclarativeVMEMetaObject()
{
compiledData->release();
delete parent;
- qDeleteAll(listProperties);
delete [] data;
delete [] methods;
}
@@ -145,11 +463,10 @@ int QDeclarativeVMEMetaObject::metaCall(QMetaObject::Call c, int _id, void **a)
if (t == -1) {
if (c == QMetaObject::ReadProperty) {
- *reinterpret_cast<QVariant *>(a[0]) = data[id];
+ *reinterpret_cast<QVariant *>(a[0]) = readVarPropertyAsVariant(id);
} else if (c == QMetaObject::WriteProperty) {
- needActivate =
- (data[id] != *reinterpret_cast<QVariant *>(a[0]));
- data[id] = *reinterpret_cast<QVariant *>(a[0]);
+ needActivate = (data[id].asQVariant() != *reinterpret_cast<QVariant *>(a[0]));
+ data[id].setValue(*reinterpret_cast<QVariant *>(a[0]));
}
} else {
@@ -157,42 +474,86 @@ int QDeclarativeVMEMetaObject::metaCall(QMetaObject::Call c, int _id, void **a)
if (c == QMetaObject::ReadProperty) {
switch(t) {
case QVariant::Int:
- *reinterpret_cast<int *>(a[0]) = data[id].toInt();
+ *reinterpret_cast<int *>(a[0]) = data[id].asInt();
break;
case QVariant::Bool:
- *reinterpret_cast<bool *>(a[0]) = data[id].toBool();
+ *reinterpret_cast<bool *>(a[0]) = data[id].asBool();
break;
case QVariant::Double:
- *reinterpret_cast<double *>(a[0]) = data[id].toDouble();
+ *reinterpret_cast<double *>(a[0]) = data[id].asDouble();
break;
case QVariant::String:
- *reinterpret_cast<QString *>(a[0]) = data[id].toString();
+ *reinterpret_cast<QString *>(a[0]) = data[id].asQString();
break;
case QVariant::Url:
- *reinterpret_cast<QUrl *>(a[0]) = data[id].toUrl();
+ *reinterpret_cast<QUrl *>(a[0]) = data[id].asQUrl();
break;
case QVariant::Color:
- *reinterpret_cast<QColor *>(a[0]) = data[id].value<QColor>();
+ *reinterpret_cast<QColor *>(a[0]) = data[id].asQColor();
break;
case QVariant::Date:
- *reinterpret_cast<QDate *>(a[0]) = data[id].toDate();
+ *reinterpret_cast<QDate *>(a[0]) = data[id].asQDate();
+ break;
+ case QVariant::DateTime:
+ *reinterpret_cast<QDateTime *>(a[0]) = data[id].asQDateTime();
break;
case QMetaType::QObjectStar:
- *reinterpret_cast<QObject **>(a[0]) = data[id].value<QObject*>();
+ *reinterpret_cast<QObject **>(a[0]) = data[id].asQObject();
break;
default:
break;
}
if (t == qMetaTypeId<QDeclarativeListProperty<QObject> >()) {
+ int listIndex = data[id].asInt();
+ const List *list = &listProperties.at(listIndex);
*reinterpret_cast<QDeclarativeListProperty<QObject> *>(a[0]) =
- data[id].value<QDeclarativeListProperty<QObject> >();
+ QDeclarativeListProperty<QObject>(object, (void *)list,
+ list_append, list_count, list_at,
+ list_clear);
}
} else if (c == QMetaObject::WriteProperty) {
- QVariant value = QVariant((QVariant::Type)data[id].type(), a[0]);
- needActivate = (data[id] != value);
- data[id] = value;
+ switch(t) {
+ case QVariant::Int:
+ needActivate = *reinterpret_cast<int *>(a[0]) != data[id].asInt();
+ data[id].setValue(*reinterpret_cast<int *>(a[0]));
+ break;
+ case QVariant::Bool:
+ needActivate = *reinterpret_cast<bool *>(a[0]) != data[id].asBool();
+ data[id].setValue(*reinterpret_cast<bool *>(a[0]));
+ break;
+ case QVariant::Double:
+ needActivate = *reinterpret_cast<double *>(a[0]) != data[id].asDouble();
+ data[id].setValue(*reinterpret_cast<double *>(a[0]));
+ break;
+ case QVariant::String:
+ needActivate = *reinterpret_cast<QString *>(a[0]) != data[id].asQString();
+ data[id].setValue(*reinterpret_cast<QString *>(a[0]));
+ break;
+ case QVariant::Url:
+ needActivate = *reinterpret_cast<QUrl *>(a[0]) != data[id].asQUrl();
+ data[id].setValue(*reinterpret_cast<QUrl *>(a[0]));
+ break;
+ case QVariant::Color:
+ needActivate = *reinterpret_cast<QColor *>(a[0]) != data[id].asQColor();
+ data[id].setValue(*reinterpret_cast<QColor *>(a[0]));
+ break;
+ case QVariant::Date:
+ needActivate = *reinterpret_cast<QDate *>(a[0]) != data[id].asQDate();
+ data[id].setValue(*reinterpret_cast<QDate *>(a[0]));
+ break;
+ case QVariant::DateTime:
+ needActivate = *reinterpret_cast<QDateTime *>(a[0]) != data[id].asQDateTime();
+ data[id].setValue(*reinterpret_cast<QDateTime *>(a[0]));
+ break;
+ case QMetaType::QObjectStar:
+ needActivate = *reinterpret_cast<QObject **>(a[0]) != data[id].asQObject();
+ data[id].setValue(*reinterpret_cast<QObject **>(a[0]));
+ break;
+ default:
+ break;
+ }
}
}
@@ -316,6 +677,28 @@ QScriptValue QDeclarativeVMEMetaObject::method(int index)
return methods[index];
}
+QScriptValue QDeclarativeVMEMetaObject::readVarProperty(int id)
+{
+ if (data[id].dataType() == qMetaTypeId<QScriptValue>())
+ return data[id].asQScriptValue();
+ else
+ return QDeclarativeEnginePrivate::get(ctxt->engine)->scriptValueFromVariant(data[id].asQVariant());
+}
+
+QVariant QDeclarativeVMEMetaObject::readVarPropertyAsVariant(int id)
+{
+ if (data[id].dataType() == qMetaTypeId<QScriptValue>())
+ return QDeclarativeEnginePrivate::get(ctxt->engine)->scriptValueToVariant(data[id].asQScriptValue());
+ else
+ return data[id].asQVariant();
+}
+
+void QDeclarativeVMEMetaObject::writeVarProperty(int id, const QScriptValue &value)
+{
+ data[id].setValue(value);
+ activate(object, methodOffset + id, 0);
+}
+
void QDeclarativeVMEMetaObject::listChanged(int id)
{
activate(object, methodOffset + id, 0);
@@ -364,4 +747,22 @@ QScriptValue QDeclarativeVMEMetaObject::vmeMethod(int index)
return method(index - methodOffset - plainSignals);
}
+QScriptValue QDeclarativeVMEMetaObject::vmeProperty(int index)
+{
+ if (index < propOffset) {
+ Q_ASSERT(parent);
+ return static_cast<QDeclarativeVMEMetaObject *>(parent)->vmeProperty(index);
+ }
+ return readVarProperty(index - propOffset);
+}
+
+void QDeclarativeVMEMetaObject::setVMEProperty(int index, const QScriptValue &v)
+{
+ if (index < propOffset) {
+ Q_ASSERT(parent);
+ static_cast<QDeclarativeVMEMetaObject *>(parent)->setVMEProperty(index, v);
+ }
+ return writeVarProperty(index - propOffset, v);
+}
+
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativevmemetaobject_p.h b/src/declarative/qml/qdeclarativevmemetaobject_p.h
index e11f6fa..f13dd34 100644
--- a/src/declarative/qml/qdeclarativevmemetaobject_p.h
+++ b/src/declarative/qml/qdeclarativevmemetaobject_p.h
@@ -58,12 +58,16 @@
#include <QtCore/QMetaObject>
#include <QtCore/QBitArray>
#include <QtCore/QPair>
+#include <QtGui/QColor>
+#include <QtCore/QDate>
+#include <QtCore/qlist.h>
+#include <QtCore/qdebug.h>
#include <private/qobject_p.h>
-#include "qdeclarativeguard_p.h"
-#include "qdeclarativecompiler_p.h"
-#include "qdeclarativecontext_p.h"
+#include "private/qdeclarativeguard_p.h"
+#include "private/qdeclarativecompiler_p.h"
+#include "private/qdeclarativecontext_p.h"
QT_BEGIN_NAMESPACE
@@ -106,6 +110,7 @@ struct QDeclarativeVMEMetaData
}
};
+class QDeclarativeVMEVariant;
class QDeclarativeRefCount;
class QDeclarativeVMEMetaObject : public QAbstractDynamicMetaObject
{
@@ -116,6 +121,9 @@ public:
void registerInterceptor(int index, int valueIndex, QDeclarativePropertyValueInterceptor *interceptor);
QScriptValue vmeMethod(int index);
+ QScriptValue vmeProperty(int index);
+ void setVMEProperty(int index, const QScriptValue &);
+
protected:
virtual int metaCall(QMetaObject::Call _c, int _id, void **_a);
@@ -128,7 +136,8 @@ private:
int propOffset;
int methodOffset;
- QVariant *data;
+ QDeclarativeVMEVariant *data;
+
QBitArray aConnected;
QBitArray aInterceptors;
QHash<int, QPair<int, QDeclarativePropertyValueInterceptor*> > interceptors;
@@ -136,6 +145,10 @@ private:
QScriptValue *methods;
QScriptValue method(int);
+ QScriptValue readVarProperty(int);
+ QVariant readVarPropertyAsVariant(int);
+ void writeVarProperty(int, const QScriptValue &);
+
QAbstractDynamicMetaObject *parent;
void listChanged(int);
@@ -145,7 +158,7 @@ private:
List(int lpi) : notifyIndex(lpi) {}
int notifyIndex;
};
- QList<List *> listProperties;
+ QList<List> listProperties;
static void list_append(QDeclarativeListProperty<QObject> *, QObject *);
static int list_count(QDeclarativeListProperty<QObject> *);
diff --git a/src/declarative/qml/qdeclarativewatcher.cpp b/src/declarative/qml/qdeclarativewatcher.cpp
index 2f61195..9ea84b8 100644
--- a/src/declarative/qml/qdeclarativewatcher.cpp
+++ b/src/declarative/qml/qdeclarativewatcher.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativewatcher_p.h"
+#include "private/qdeclarativewatcher_p.h"
#include "qdeclarativeexpression.h"
#include "qdeclarativecontext.h"
diff --git a/src/declarative/qml/qdeclarativeworkerscript.cpp b/src/declarative/qml/qdeclarativeworkerscript.cpp
index a7ed358..ddb0ece 100644
--- a/src/declarative/qml/qdeclarativeworkerscript.cpp
+++ b/src/declarative/qml/qdeclarativeworkerscript.cpp
@@ -39,10 +39,10 @@
**
****************************************************************************/
-#include "qdeclarativeworkerscript_p.h"
-#include "qdeclarativelistmodel_p.h"
-#include "qdeclarativelistmodelworkeragent_p.h"
-#include "qdeclarativeengine_p.h"
+#include "private/qdeclarativeworkerscript_p.h"
+#include "private/qdeclarativelistmodel_p.h"
+#include "private/qdeclarativelistmodelworkeragent_p.h"
+#include "private/qdeclarativeengine_p.h"
#include <QtCore/qcoreevent.h>
#include <QtCore/qcoreapplication.h>
@@ -437,8 +437,12 @@ QDeclarativeWorkerScriptEngine::QDeclarativeWorkerScriptEngine(QDeclarativeEngin
QDeclarativeWorkerScriptEngine::~QDeclarativeWorkerScriptEngine()
{
+ d->m_lock.lock();
qDeleteAll(d->workers);
- delete d; d = 0;
+ d->workers.clear();
+ d->m_lock.unlock();
+
+ d->deleteLater();
}
QDeclarativeWorkerScriptEnginePrivate::WorkerScript::WorkerScript()
diff --git a/src/declarative/qml/qdeclarativexmlhttprequest.cpp b/src/declarative/qml/qdeclarativexmlhttprequest.cpp
index 58e67fa..be2a1a7 100644
--- a/src/declarative/qml/qdeclarativexmlhttprequest.cpp
+++ b/src/declarative/qml/qdeclarativexmlhttprequest.cpp
@@ -39,13 +39,13 @@
**
****************************************************************************/
-#include "qdeclarativexmlhttprequest_p.h"
+#include "private/qdeclarativexmlhttprequest_p.h"
#include "qdeclarativeengine.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativerefcount_p.h"
-#include "qdeclarativeengine_p.h"
-#include "qdeclarativeexpression_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativerefcount_p.h"
+#include "private/qdeclarativeengine_p.h"
+#include "private/qdeclarativeexpression_p.h"
#include <QtCore/qobject.h>
#include <QtScript/qscriptvalue.h>
diff --git a/src/declarative/qml/qmetaobjectbuilder.cpp b/src/declarative/qml/qmetaobjectbuilder.cpp
index a518b03..6e4d7b8 100644
--- a/src/declarative/qml/qmetaobjectbuilder.cpp
+++ b/src/declarative/qml/qmetaobjectbuilder.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qmetaobjectbuilder_p.h"
+#include "private/qmetaobjectbuilder_p.h"
#ifndef Q_OS_WIN
#include <stdint.h>
diff --git a/src/declarative/qml/qml.pri b/src/declarative/qml/qml.pri
index 49888c3..e2f0c67 100644
--- a/src/declarative/qml/qml.pri
+++ b/src/declarative/qml/qml.pri
@@ -31,11 +31,11 @@ SOURCES += \
$$PWD/qdeclarativerewrite.cpp \
$$PWD/qdeclarativevaluetype.cpp \
$$PWD/qdeclarativecompiledbindings.cpp \
+ $$PWD/qdeclarativefastproperties.cpp \
$$PWD/qdeclarativexmlhttprequest.cpp \
$$PWD/qdeclarativesqldatabase.cpp \
$$PWD/qmetaobjectbuilder.cpp \
$$PWD/qdeclarativewatcher.cpp \
- $$PWD/qdeclarativescript.cpp \
$$PWD/qdeclarativecleanup.cpp \
$$PWD/qdeclarativepropertycache.cpp \
$$PWD/qdeclarativenotifier.cpp \
@@ -103,6 +103,7 @@ HEADERS += \
$$PWD/qbitfield_p.h \
$$PWD/qdeclarativevaluetype_p.h \
$$PWD/qdeclarativecompiledbindings_p.h \
+ $$PWD/qdeclarativefastproperties_p.h \
$$PWD/qdeclarativexmlhttprequest_p.h \
$$PWD/qdeclarativesqldatabase_p.h \
$$PWD/qmetaobjectbuilder_p.h \
diff --git a/src/declarative/qml/rewriter/rewriter.cpp b/src/declarative/qml/rewriter/rewriter.cpp
index b458a8d..6d2ccfb 100644
--- a/src/declarative/qml/rewriter/rewriter.cpp
+++ b/src/declarative/qml/rewriter/rewriter.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "rewriter_p.h"
+#include "private/rewriter_p.h"
#include <qdeclarativejsast_p.h>
diff --git a/src/declarative/qml/rewriter/rewriter_p.h b/src/declarative/qml/rewriter/rewriter_p.h
index d1445d8..4799469 100644
--- a/src/declarative/qml/rewriter/rewriter_p.h
+++ b/src/declarative/qml/rewriter/rewriter_p.h
@@ -42,7 +42,7 @@
#ifndef REWRITER_H
#define REWRITER_H
-#include "textwriter_p.h"
+#include "private/textwriter_p.h"
#include <qdeclarativejsastvisitor_p.h>
diff --git a/src/declarative/qml/rewriter/textwriter.cpp b/src/declarative/qml/rewriter/textwriter.cpp
index e63d24c..619f5c9 100644
--- a/src/declarative/qml/rewriter/textwriter.cpp
+++ b/src/declarative/qml/rewriter/textwriter.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "textwriter_p.h"
+#include "private/textwriter_p.h"
QT_QML_BEGIN_NAMESPACE
diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp
index bad142c..33ddb46 100644
--- a/src/declarative/util/qdeclarativeanimation.cpp
+++ b/src/declarative/util/qdeclarativeanimation.cpp
@@ -39,11 +39,11 @@
**
****************************************************************************/
-#include "qdeclarativeanimation_p.h"
-#include "qdeclarativeanimation_p_p.h"
+#include "private/qdeclarativeanimation_p.h"
+#include "private/qdeclarativeanimation_p_p.h"
-#include "qdeclarativebehavior_p.h"
-#include "qdeclarativestateoperations_p.h"
+#include "private/qdeclarativebehavior_p.h"
+#include "private/qdeclarativestateoperations_p.h"
#include <qdeclarativepropertyvaluesource.h>
#include <qdeclarative.h>
@@ -1078,15 +1078,26 @@ void QDeclarativePropertyAction::transition(QDeclarativeStateActions &actions,
QDeclarativeNumberAnimation::QDeclarativeNumberAnimation(QObject *parent)
: QDeclarativePropertyAnimation(parent)
{
- Q_D(QDeclarativePropertyAnimation);
- d->interpolatorType = QMetaType::QReal;
- d->interpolator = QVariantAnimationPrivate::getInterpolator(d->interpolatorType);
+ init();
+}
+
+QDeclarativeNumberAnimation::QDeclarativeNumberAnimation(QDeclarativePropertyAnimationPrivate &dd, QObject *parent)
+: QDeclarativePropertyAnimation(dd, parent)
+{
+ init();
}
QDeclarativeNumberAnimation::~QDeclarativeNumberAnimation()
{
}
+void QDeclarativeNumberAnimation::init()
+{
+ Q_D(QDeclarativePropertyAnimation);
+ d->interpolatorType = QMetaType::QReal;
+ d->interpolator = QVariantAnimationPrivate::getInterpolator(d->interpolatorType);
+}
+
/*!
\qmlproperty real NumberAnimation::from
This property holds the starting value.
@@ -2237,8 +2248,10 @@ void QDeclarativePropertyAnimation::transition(QDeclarativeStateActions &actions
}
d->va->setAnimValue(data, QAbstractAnimation::DeleteWhenStopped);
d->va->setFromSourcedValue(&data->fromSourced);
+ d->actions = &data->actions;
} else {
delete data;
+ d->actions = 0;
}
}
diff --git a/src/declarative/util/qdeclarativeanimation_p.h b/src/declarative/util/qdeclarativeanimation_p.h
index 816520e..c839c2c 100644
--- a/src/declarative/util/qdeclarativeanimation_p.h
+++ b/src/declarative/util/qdeclarativeanimation_p.h
@@ -42,8 +42,8 @@
#ifndef QDECLARATIVEANIMATION_H
#define QDECLARATIVEANIMATION_H
-#include "qdeclarativetransition_p.h"
-#include "qdeclarativestate_p.h"
+#include "private/qdeclarativetransition_p.h"
+#include "private/qdeclarativestate_p.h"
#include <QtGui/qvector3d.h>
#include <qdeclarativepropertyvaluesource.h>
@@ -251,8 +251,8 @@ public:
QDeclarativePropertyAnimation(QObject *parent=0);
virtual ~QDeclarativePropertyAnimation();
- int duration() const;
- void setDuration(int);
+ virtual int duration() const;
+ virtual void setDuration(int);
QVariant from() const;
void setFrom(const QVariant &);
@@ -326,6 +326,12 @@ public:
qreal to() const;
void setTo(qreal);
+
+protected:
+ QDeclarativeNumberAnimation(QDeclarativePropertyAnimationPrivate &dd, QObject *parent);
+
+private:
+ void init();
};
class Q_AUTOTEST_EXPORT QDeclarativeVector3dAnimation : public QDeclarativePropertyAnimation
diff --git a/src/declarative/util/qdeclarativeanimation_p_p.h b/src/declarative/util/qdeclarativeanimation_p_p.h
index 3908e50..3b0f52e 100644
--- a/src/declarative/util/qdeclarativeanimation_p_p.h
+++ b/src/declarative/util/qdeclarativeanimation_p_p.h
@@ -53,10 +53,10 @@
// We mean it.
//
-#include "qdeclarativeanimation_p.h"
+#include "private/qdeclarativeanimation_p.h"
-#include "qdeclarativenullablevalue_p_p.h"
-#include "qdeclarativetimeline_p_p.h"
+#include "private/qdeclarativenullablevalue_p_p.h"
+#include "private/qdeclarativetimeline_p_p.h"
#include <qdeclarative.h>
#include <qdeclarativeitem.h>
@@ -100,17 +100,11 @@ class QActionAnimation : public QAbstractAnimation
{
Q_OBJECT
public:
- QActionAnimation(QObject *parent = 0) : QAbstractAnimation(parent), animAction(0), policy(KeepWhenStopped), running(false) {}
+ QActionAnimation(QObject *parent = 0) : QAbstractAnimation(parent), animAction(0), policy(KeepWhenStopped) {}
QActionAnimation(QAbstractAnimationAction *action, QObject *parent = 0)
- : QAbstractAnimation(parent), animAction(action), policy(KeepWhenStopped), running(false) {}
+ : QAbstractAnimation(parent), animAction(action), policy(KeepWhenStopped) {}
~QActionAnimation() { if (policy == DeleteWhenStopped) { delete animAction; animAction = 0; } }
virtual int duration() const { return 0; }
- void clearAnimAction()
- {
- if (policy == DeleteWhenStopped)
- delete animAction;
- animAction = 0;
- }
void setAnimAction(QAbstractAnimationAction *action, DeletionPolicy p)
{
if (state() == Running)
@@ -127,26 +121,18 @@ protected:
{
if (newState == Running) {
if (animAction) {
- running = true;
animAction->doAction();
- running = false;
if (state() == Stopped && policy == DeleteWhenStopped) {
delete animAction;
animAction = 0;
}
}
- } /*else if (newState == Stopped && policy == DeleteWhenStopped) {
- if (!running) {
- delete animAction;
- animAction = 0;
- }
- }*/
+ }
}
private:
QAbstractAnimationAction *animAction;
DeletionPolicy policy;
- bool running;
};
class QDeclarativeBulkValueUpdater
@@ -192,11 +178,7 @@ protected:
//check for new from every loop
if (fromSourced)
*fromSourced = false;
- } /*else if (newState == Stopped && policy == DeleteWhenStopped) {
- delete animValue;
- animValue = 0;
- }*/ //### we get a stop each loop if we are in a group
- //### top-level animation is the only reliable one for this
+ }
}
private:
@@ -322,7 +304,7 @@ class QDeclarativePropertyAnimationPrivate : public QDeclarativeAbstractAnimatio
public:
QDeclarativePropertyAnimationPrivate()
: QDeclarativeAbstractAnimationPrivate(), target(0), fromSourced(false), fromIsDefined(false), toIsDefined(false),
- rangeIsSet(false), defaultToInterpolatorType(0), interpolatorType(0), interpolator(0), va(0) {}
+ rangeIsSet(false), defaultToInterpolatorType(0), interpolatorType(0), interpolator(0), va(0), actions(0) {}
void init();
@@ -348,6 +330,9 @@ public:
QDeclarativeBulkValueAnimator *va;
+ // for animations that dont use the QDeclarativeBulkValueAnimator
+ QDeclarativeStateActions *actions;
+
static QVariant interpolateVariant(const QVariant &from, const QVariant &to, qreal progress);
static void convertVariant(QVariant &variant, int type);
};
diff --git a/src/declarative/util/qdeclarativebehavior.cpp b/src/declarative/util/qdeclarativebehavior.cpp
index 1e000df..a6c578e 100644
--- a/src/declarative/util/qdeclarativebehavior.cpp
+++ b/src/declarative/util/qdeclarativebehavior.cpp
@@ -39,23 +39,20 @@
**
****************************************************************************/
-#include "qdeclarativebehavior_p.h"
+#include "private/qdeclarativebehavior_p.h"
-#include "qdeclarativeanimation_p.h"
-#include "qdeclarativetransition_p.h"
+#include "private/qdeclarativeanimation_p.h"
+#include "private/qdeclarativetransition_p.h"
#include <qdeclarativecontext.h>
#include <qdeclarativeinfo.h>
#include <qdeclarativeproperty_p.h>
-
-#include <QtCore/qparallelanimationgroup.h>
+#include <qdeclarativeguard_p.h>
#include <private/qobject_p.h>
QT_BEGIN_NAMESPACE
-
-
class QDeclarativeBehaviorPrivate : public QObjectPrivate
{
Q_DECLARE_PUBLIC(QDeclarativeBehavior)
@@ -64,7 +61,7 @@ public:
QDeclarativeProperty property;
QVariant currentValue;
- QDeclarativeAbstractAnimation *animation;
+ QDeclarativeGuard<QDeclarativeAbstractAnimation> animation;
bool enabled;
};
@@ -166,7 +163,8 @@ void QDeclarativeBehavior::write(const QVariant &value)
d->currentValue = d->property.read();
- d->animation->qtAnimation()->stop();
+ if (d->animation->qtAnimation()->duration() != -1)
+ d->animation->qtAnimation()->stop();
QDeclarativeStateOperation::ActionList actions;
QDeclarativeAction action;
@@ -176,11 +174,10 @@ void QDeclarativeBehavior::write(const QVariant &value)
actions << action;
QList<QDeclarativeProperty> after;
- if (d->animation)
- d->animation->transition(actions, after, QDeclarativeAbstractAnimation::Forward);
+ d->animation->transition(actions, after, QDeclarativeAbstractAnimation::Forward);
d->animation->qtAnimation()->start();
if (!after.contains(d->property))
- QDeclarativePropertyPrivate::write(d->property, value, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
+ QDeclarativePropertyPrivate::write(d->property, value, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
}
void QDeclarativeBehavior::setTarget(const QDeclarativeProperty &property)
diff --git a/src/declarative/util/qdeclarativebehavior_p.h b/src/declarative/util/qdeclarativebehavior_p.h
index ff58210..e8a809f 100644
--- a/src/declarative/util/qdeclarativebehavior_p.h
+++ b/src/declarative/util/qdeclarativebehavior_p.h
@@ -42,7 +42,7 @@
#ifndef QDECLARATIVEBEHAVIOR_H
#define QDECLARATIVEBEHAVIOR_H
-#include "qdeclarativestate_p.h"
+#include "private/qdeclarativestate_p.h"
#include <qdeclarativepropertyvaluesource.h>
#include <qdeclarativepropertyvalueinterceptor.h>
diff --git a/src/declarative/util/qdeclarativebind.cpp b/src/declarative/util/qdeclarativebind.cpp
index 26baa38..b7bd4e8 100644
--- a/src/declarative/util/qdeclarativebind.cpp
+++ b/src/declarative/util/qdeclarativebind.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativebind_p.h"
+#include "private/qdeclarativebind_p.h"
-#include "qdeclarativenullablevalue_p_p.h"
+#include "private/qdeclarativenullablevalue_p_p.h"
#include <qdeclarativeengine.h>
#include <qdeclarativecontext.h>
diff --git a/src/declarative/util/qdeclarativeconnections.cpp b/src/declarative/util/qdeclarativeconnections.cpp
index 0b9e3ab..596b306 100644
--- a/src/declarative/util/qdeclarativeconnections.cpp
+++ b/src/declarative/util/qdeclarativeconnections.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativeconnections_p.h"
+#include "private/qdeclarativeconnections_p.h"
#include <qdeclarativeexpression.h>
#include <qdeclarativeproperty_p.h>
diff --git a/src/declarative/util/qdeclarativeeasefollow.cpp b/src/declarative/util/qdeclarativeeasefollow.cpp
deleted file mode 100644
index ee181dd..0000000
--- a/src/declarative/util/qdeclarativeeasefollow.cpp
+++ /dev/null
@@ -1,537 +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 QtDeclarative module 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 "qdeclarativeeasefollow_p.h"
-
-#include "qdeclarativeanimation_p_p.h"
-
-#include <qdeclarativeproperty.h>
-
-#include <QtCore/qdebug.h>
-
-#include <math.h>
-
-QT_BEGIN_NAMESPACE
-
-
-
-class QDeclarativeEaseFollowPrivate : public QObjectPrivate
-{
- Q_DECLARE_PUBLIC(QDeclarativeEaseFollow)
-public:
- QDeclarativeEaseFollowPrivate()
- : source(0), velocity(200), duration(-1), maximumEasingTime(-1),
- reversingMode(QDeclarativeEaseFollow::Eased), initialVelocity(0),
- initialValue(0), invert(false), enabled(true), trackVelocity(0), clockOffset(0),
- lastTick(0), clock(this)
- {}
-
- qreal source;
- qreal velocity;
- qreal duration;
- qreal maximumEasingTime;
- QDeclarativeEaseFollow::ReversingMode reversingMode;
-
- qreal initialVelocity;
- qreal initialValue;
- bool invert;
- bool enabled;
-
- qreal trackVelocity;
-
- QDeclarativeProperty target;
-
- int clockOffset;
- int lastTick;
- void tick(int);
- void clockStart();
- void clockStop();
- QTickAnimationProxy<QDeclarativeEaseFollowPrivate, &QDeclarativeEaseFollowPrivate::tick> clock;
-
- void restart();
-
- // Parameters for use in tick()
- qreal a; // Acceleration
- qreal d; // Deceleration
- qreal tf; // Total time
- qreal tp; // Time at which peak velocity occurs
- qreal td; // Time at which decelleration begins
- qreal vp; // Velocity at tp
- qreal sp; // Displacement at tp
- qreal sd; // Displacement at td
- qreal vi; // "Normalized" initialvelocity
- bool recalc();
-};
-
-bool QDeclarativeEaseFollowPrivate::recalc()
-{
- qreal s = source - initialValue;
- vi = initialVelocity;
-
- s = (invert?-1.0:1.0) * s;
- vi = (invert?-1.0:1.0) * vi;
-
- if (duration > 0 && velocity > 0) {
- tf = s / velocity;
- if (tf > (duration / 1000.)) tf = (duration / 1000.);
- } else if (duration > 0) {
- tf = duration / 1000.;
- } else if (velocity > 0) {
- tf = s / velocity;
- } else {
- return false;
- }
-
- if (maximumEasingTime == 0) {
- a = 0;
- d = 0;
- tp = 0;
- td = tf;
- vp = velocity;
- sp = 0;
- sd = s;
- } else if (maximumEasingTime != -1 && tf > (maximumEasingTime / 1000.)) {
-
- qreal met = maximumEasingTime / 1000.;
- td = tf - met;
-
- qreal c1 = td;
- qreal c2 = (tf - td) * vi - tf * velocity;
- qreal c3 = -0.5 * (tf - td) * vi * vi;
-
- qreal vp1 = (-c2 + sqrt(c2 * c2 - 4 * c1 * c3)) / (2. * c1);
- // qreal vp2 = (-c2 - sqrt(c2 * c2 - 4 * c1 * c3)) / (2. * c1);
-
- vp = vp1;
- a = vp / met;
- d = a;
- tp = (vp - vi) / a;
- sp = vi * tp + 0.5 * a * tp * tp;
- sd = sp + (td - tp) * vp;
- } else {
-
- qreal c1 = 0.25 * tf * tf;
- qreal c2 = 0.5 * vi * tf - s;
- qreal c3 = -0.25 * vi * vi;
-
- qreal a1 = (-c2 + sqrt(c2 * c2 - 4 * c1 * c3)) / (2. * c1);
- //qreal a2 = (-c2 - sqrt(c2 * c2 - 4 * c1 * c3)) / (2. * c1);
-
- qreal tp1 = 0.5 * tf - 0.5 * vi / a1;
- //qreal tp2 = 0.5 * tf - 0.5 * vi / a2;
- qreal vp1 = a1 * tp1 + vi;
- //qreal vp2 = a2 * tp2 + vi;
-
- qreal sp1 = 0.5 * a1 * tp1 * tp1 + vi * tp1;
- //qreal sp2 = 0.5 * a2 * tp2 * tp2 + vi * tp2;
-
- a = a1;
- d = a1;
- tp = tp1;
- td = tp1;
- vp = vp1;
- sp = sp1;
- sd = sp1;
- }
-
- /*
- qWarning() << "a:" << a << "tf:" << tf << "tp:" << tp << "vp:"
- << vp << "sp:" << sp << "vi:" << vi << "invert:" << invert;
- */
- return true;
-}
-
-void QDeclarativeEaseFollowPrivate::clockStart()
-{
- if (clock.state() == QAbstractAnimation::Running) {
- clockOffset = lastTick;
- return;
- } else {
- clockOffset = 0;
- lastTick = 0;
- clock.start();
- }
-}
-
-void QDeclarativeEaseFollowPrivate::clockStop()
-{
- clockOffset = 0;
- lastTick = 0;
- clock.stop();
-}
-
-void QDeclarativeEaseFollowPrivate::tick(int t)
-{
- lastTick = t;
- t -= clockOffset;
-
- qreal time_seconds = qreal(t) / 1000.;
-
- qreal out = 0;
- if (time_seconds < tp) {
-
- trackVelocity = vi + time_seconds * a;
- trackVelocity = (invert?-1.0:1.0) * trackVelocity;
-
- qreal value = 0.5 * a * time_seconds * time_seconds + vi * time_seconds;
- value = (invert?-1.0:1.0) * value;
- target.write(initialValue + value);
- out = initialValue + value;
- } else if (time_seconds < td) {
-
- time_seconds -= tp;
- trackVelocity = (invert?-1.0:1.0) * vp;
- qreal value = sp + time_seconds * vp;
- value = (invert?-1.0:1.0) * value;
-
- target.write(initialValue + value);
-
- out = initialValue + value;
- } else if (time_seconds < tf) {
-
- time_seconds -= td;
-
- trackVelocity = vp - time_seconds * a;
- trackVelocity = (invert?-1.0:1.0) * trackVelocity;
-
- qreal value = sd - 0.5 * d * time_seconds * time_seconds + vp * time_seconds;
- value = (invert?-1.0:1.0) * value;
-
- target.write(initialValue + value);
-
- out = initialValue + value;
- } else {
-
- clock.stop();
-
- trackVelocity = 0;
- target.write(source);
- }
-
- //qWarning() << out << trackVelocity << t << a;
-}
-
-/*!
- \qmlclass EaseFollow QDeclarativeEaseFollow
- \since 4.7
- \brief The EaseFollow element allows a property to smoothly track a value.
-
- The EaseFollow smoothly animates a property's value to a set target value
- using an ease in/out quad easing curve. If the target value changes while
- the animation is in progress, the easing curves used to animate to the old
- and the new target values are spliced together to avoid any obvious visual
- glitches.
-
- The property animation is configured by setting the velocity at which the
- animation should occur, or the duration that the animation should take.
- If both a velocity and a duration are specified, the one that results in
- the quickest animation is chosen for each change in the target value.
-
- For example, animating from 0 to 800 will take 4 seconds if a velocity
- of 200 is set, will take 8 seconds with a duration of 8000 set, and will
- take 4 seconds with both a velocity of 200 and a duration of 8000 set.
- Animating from 0 to 20000 will take 10 seconds if a velocity of 200 is set,
- will take 8 seconds with a duration of 8000 set, and will take 8 seconds
- with both a velocity of 200 and a duration of 8000 set.
-
- The follow example shows one rectangle tracking the position of another.
-\code
-import Qt 4.6
-
-Rectangle {
- width: 800; height: 600; color: "blue"
-
- Rectangle {
- color: "green"
- width: 60; height: 60;
- x: -5; y: -5;
- EaseFollow on x { source: rect1.x - 5; velocity: 200 }
- EaseFollow on y { source: rect1.y - 5; velocity: 200 }
- }
-
- Rectangle {
- id: rect1
- color: "red"
- width: 50; height: 50;
- }
-
- focus: true
- Keys.onRightPressed: rect1.x = rect1.x + 100
- Keys.onLeftPressed: rect1.x = rect1.x - 100
- Keys.onUpPressed: rect1.y = rect1.y - 100
- Keys.onDownPressed: rect1.y = rect1.y + 100
-}
-\endcode
-
- The default velocity of EaseFollow is 200 units/second. Note that if the range of the
- value being animated is small, then the velocity will need to be adjusted
- appropriately. For example, the opacity of an item ranges from 0 - 1.0.
- To enable a smooth animation in this range the velocity will need to be
- set to a value such as 0.5 units/second. Animating from 0 to 1.0 with a velocity
- of 0.5 will take 2000 ms to complete.
-
- \sa SpringFollow
-*/
-
-QDeclarativeEaseFollow::QDeclarativeEaseFollow(QObject *parent)
-: QObject(*(new QDeclarativeEaseFollowPrivate), parent)
-{
-}
-
-QDeclarativeEaseFollow::~QDeclarativeEaseFollow()
-{
-}
-
-/*!
- \qmlproperty qreal EaseFollow::source
- This property holds the source value which will be tracked.
-
- Bind to a property in order to track its changes.
-*/
-qreal QDeclarativeEaseFollow::sourceValue() const
-{
- Q_D(const QDeclarativeEaseFollow);
- return d->source;
-}
-
-/*!
- \qmlproperty enumeration EaseFollow::reversingMode
-
- Sets how the EaseFollow behaves if an animation direction is reversed.
-
- If reversing mode is \c Eased, the animation will smoothly decelerate, and
- then reverse direction. If the reversing mode is \c Immediate, the
- animation will immediately begin accelerating in the reverse direction,
- begining with a velocity of 0. If the reversing mode is \c Sync, the
- property is immediately set to the target value.
-*/
-QDeclarativeEaseFollow::ReversingMode QDeclarativeEaseFollow::reversingMode() const
-{
- Q_D(const QDeclarativeEaseFollow);
- return d->reversingMode;
-}
-
-void QDeclarativeEaseFollow::setReversingMode(ReversingMode m)
-{
- Q_D(QDeclarativeEaseFollow);
- if (d->reversingMode == m)
- return;
-
- d->reversingMode = m;
- emit reversingModeChanged();
-}
-
-void QDeclarativeEaseFollowPrivate::restart()
-{
- if (!enabled || velocity == 0) {
- clockStop();
- return;
- }
-
- initialValue = target.read().toReal();
-
- if (source == initialValue) {
- clockStop();
- return;
- }
-
- bool hasReversed = trackVelocity != 0. &&
- ((trackVelocity > 0) == ((initialValue - source) > 0));
-
- if (hasReversed) {
- switch (reversingMode) {
- default:
- case QDeclarativeEaseFollow::Eased:
- break;
- case QDeclarativeEaseFollow::Sync:
- target.write(source);
- return;
- case QDeclarativeEaseFollow::Immediate:
- initialVelocity = 0;
- clockStop();
- break;
- }
- }
-
- trackVelocity = initialVelocity;
-
- invert = (source < initialValue);
-
- if (!recalc()) {
- target.write(source);
- clockStop();
- return;
- }
-
- clockStart();
-}
-
-void QDeclarativeEaseFollow::setSourceValue(qreal s)
-{
- Q_D(QDeclarativeEaseFollow);
-
- if (d->clock.state() == QAbstractAnimation::Running && d->source == s)
- return;
-
- d->source = s;
- d->initialVelocity = d->trackVelocity;
- d->restart();
-
- emit sourceChanged();
-}
-
-/*!
- \qmlproperty qreal EaseFollow::duration
-
- This property holds the animation duration used when tracking the source.
-
- Setting this to -1 (the default) disables the duration value.
-*/
-qreal QDeclarativeEaseFollow::duration() const
-{
- Q_D(const QDeclarativeEaseFollow);
- return d->duration;
-}
-
-void QDeclarativeEaseFollow::setDuration(qreal v)
-{
- Q_D(QDeclarativeEaseFollow);
- if (d->duration == v)
- return;
-
- d->duration = v;
- d->trackVelocity = 0;
-
- if (d->clock.state() == QAbstractAnimation::Running)
- d->restart();
-
- emit durationChanged();
-}
-
-qreal QDeclarativeEaseFollow::velocity() const
-{
- Q_D(const QDeclarativeEaseFollow);
- return d->velocity;
-}
-
-/*!
- \qmlproperty qreal EaseFollow::velocity
-
- This property holds the average velocity allowed when tracking the source.
-
- The default velocity of EaseFollow is 200 units/second.
-
- Setting this to -1 disables the velocity value.
-*/
-void QDeclarativeEaseFollow::setVelocity(qreal v)
-{
- Q_D(QDeclarativeEaseFollow);
- if (d->velocity == v)
- return;
-
- d->velocity = v;
- d->trackVelocity = 0;
-
- if (d->clock.state() == QAbstractAnimation::Running)
- d->restart();
-
- emit velocityChanged();
-}
-
-/*!
- \qmlproperty bool EaseFollow::enabled
- This property holds whether the target will track the source.
-*/
-bool QDeclarativeEaseFollow::enabled() const
-{
- Q_D(const QDeclarativeEaseFollow);
- return d->enabled;
-}
-
-void QDeclarativeEaseFollow::setEnabled(bool enabled)
-{
- Q_D(QDeclarativeEaseFollow);
- if (d->enabled == enabled)
- return;
-
- d->enabled = enabled;
- if (enabled)
- d->restart();
- else
- d->clockStop();
-
- emit enabledChanged();
-}
-
-void QDeclarativeEaseFollow::setTarget(const QDeclarativeProperty &t)
-{
- Q_D(QDeclarativeEaseFollow);
- d->target = t;
-}
-
-/*!
-\qmlproperty qreal EaseFollow::maximumEasingTime
-
-This property specifies the maximum time an "eases" during the follow should take.
-Setting this property causes the velocity to "level out" after at a time. Setting
-a negative value reverts to the normal mode of easing over the entire animation
-duration.
-
-The default value is -1.
-*/
-qreal QDeclarativeEaseFollow::maximumEasingTime() const
-{
- Q_D(const QDeclarativeEaseFollow);
- return d->maximumEasingTime;
-}
-
-void QDeclarativeEaseFollow::setMaximumEasingTime(qreal v)
-{
- Q_D(QDeclarativeEaseFollow);
- d->maximumEasingTime = v;
-
- if (d->clock.state() == QAbstractAnimation::Running)
- d->restart();
-
- emit maximumEasingTimeChanged();
-}
-
-QT_END_NAMESPACE
diff --git a/src/declarative/util/qdeclarativefontloader.cpp b/src/declarative/util/qdeclarativefontloader.cpp
index bf98d40..b577b81 100644
--- a/src/declarative/util/qdeclarativefontloader.cpp
+++ b/src/declarative/util/qdeclarativefontloader.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativefontloader_p.h"
+#include "private/qdeclarativefontloader_p.h"
#include <qdeclarativecontext.h>
#include <qdeclarativeengine.h>
diff --git a/src/declarative/util/qdeclarativelistaccessor.cpp b/src/declarative/util/qdeclarativelistaccessor.cpp
index 4e56909..4ac587f 100644
--- a/src/declarative/util/qdeclarativelistaccessor.cpp
+++ b/src/declarative/util/qdeclarativelistaccessor.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativelistaccessor_p.h"
+#include "private/qdeclarativelistaccessor_p.h"
#include <qdeclarativemetatype_p.h>
diff --git a/src/declarative/util/qdeclarativelistmodel.cpp b/src/declarative/util/qdeclarativelistmodel.cpp
index 3e25234..ec23bb2 100644
--- a/src/declarative/util/qdeclarativelistmodel.cpp
+++ b/src/declarative/util/qdeclarativelistmodel.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativelistmodel_p_p.h"
-#include "qdeclarativelistmodelworkeragent_p.h"
-#include "qdeclarativeopenmetaobject_p.h"
+#include "private/qdeclarativelistmodel_p_p.h"
+#include "private/qdeclarativelistmodelworkeragent_p.h"
+#include "private/qdeclarativeopenmetaobject_p.h"
#include <qdeclarativecustomparser_p.h>
#include <qdeclarativeparser_p.h>
@@ -365,7 +365,7 @@ void QDeclarativeListModel::clear()
if (!m_isWorkerCopy) {
emit itemsRemoved(0, cleared);
- emit countChanged(0);
+ emit countChanged();
}
}
@@ -390,7 +390,7 @@ void QDeclarativeListModel::remove(int index)
if (!m_isWorkerCopy) {
emit itemsRemoved(index, 1);
- emit countChanged(this->count());
+ emit countChanged();
}
}
@@ -424,7 +424,7 @@ void QDeclarativeListModel::insert(int index, const QScriptValue& valuemap)
bool ok = m_flat ? m_flat->insert(index, valuemap) : m_nested->insert(index, valuemap);
if (ok && !m_isWorkerCopy) {
emit itemsInserted(index, 1);
- emit countChanged(this->count());
+ emit countChanged();
}
}
@@ -532,7 +532,7 @@ QScriptValue QDeclarativeListModel::get(int index) const
\qmlmethod ListModel::set(int index, jsobject dict)
Changes the item at \a index in the list model with the
- values in \a dict. Properties not appearing in \a valuemap
+ values in \a dict. Properties not appearing in \a dict
are left unchanged.
\code
@@ -1250,14 +1250,9 @@ ModelNode::ModelNode()
ModelNode::~ModelNode()
{
- ModelNode *node;
-
- QList<ModelNode *> nodeValues = properties.values();
- for (int ii = 0; ii < nodeValues.count(); ++ii) {
- node = nodeValues[ii];
- if (node) { delete node; node = 0; }
- }
+ qDeleteAll(properties.values());
+ ModelNode *node;
for (int ii = 0; ii < values.count(); ++ii) {
node = qvariant_cast<ModelNode *>(values.at(ii));
if (node) { delete node; node = 0; }
@@ -1278,8 +1273,12 @@ void ModelNode::setObjectValue(const QScriptValue& valuemap) {
value->setListValue(v);
} else {
value->values << v.toVariant();
+ if (objectCache)
+ objectCache->setValue(it.name().toUtf8(), value->values.last());
}
- properties.insert(it.name(),value);
+ if (properties.contains(it.name()))
+ delete properties[it.name()];
+ properties.insert(it.name(), value);
}
}
diff --git a/src/declarative/util/qdeclarativelistmodel_p.h b/src/declarative/util/qdeclarativelistmodel_p.h
index 6a0426b..d09062e 100644
--- a/src/declarative/util/qdeclarativelistmodel_p.h
+++ b/src/declarative/util/qdeclarativelistmodel_p.h
@@ -91,7 +91,7 @@ public:
QDeclarativeListModelWorkerAgent *agent();
Q_SIGNALS:
- void countChanged(int);
+ void countChanged();
private:
friend class QDeclarativeListModelParser;
diff --git a/src/declarative/util/qdeclarativelistmodel_p_p.h b/src/declarative/util/qdeclarativelistmodel_p_p.h
index 8041561..532eefa 100644
--- a/src/declarative/util/qdeclarativelistmodel_p_p.h
+++ b/src/declarative/util/qdeclarativelistmodel_p_p.h
@@ -53,10 +53,10 @@
// We mean it.
//
-#include "qdeclarativelistmodel_p.h"
+#include "private/qdeclarativelistmodel_p.h"
#include "qdeclarative.h"
-#include "qdeclarativeengine_p.h"
+#include "private/qdeclarativeengine_p.h"
QT_BEGIN_HEADER
diff --git a/src/declarative/util/qdeclarativelistmodelworkeragent.cpp b/src/declarative/util/qdeclarativelistmodelworkeragent.cpp
index 2951262..3c0a086 100644
--- a/src/declarative/util/qdeclarativelistmodelworkeragent.cpp
+++ b/src/declarative/util/qdeclarativelistmodelworkeragent.cpp
@@ -39,10 +39,10 @@
**
****************************************************************************/
-#include "qdeclarativelistmodelworkeragent_p.h"
-#include "qdeclarativelistmodel_p_p.h"
-#include "qdeclarativedeclarativedata_p.h"
-#include "qdeclarativeengine_p.h"
+#include "private/qdeclarativelistmodelworkeragent_p.h"
+#include "private/qdeclarativelistmodel_p_p.h"
+#include "private/qdeclarativedeclarativedata_p.h"
+#include "private/qdeclarativeengine_p.h"
#include "qdeclarativeinfo.h"
#include <QtCore/qcoreevent.h>
@@ -229,7 +229,7 @@ bool QDeclarativeListModelWorkerAgent::event(QEvent *e)
}
if (cc)
- emit m_orig->countChanged(m_copy->count());
+ emit m_orig->countChanged();
}
}
diff --git a/src/declarative/util/qdeclarativeopenmetaobject.cpp b/src/declarative/util/qdeclarativeopenmetaobject.cpp
index 8c23354..3d95125 100644
--- a/src/declarative/util/qdeclarativeopenmetaobject.cpp
+++ b/src/declarative/util/qdeclarativeopenmetaobject.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativeopenmetaobject_p.h"
-#include "qdeclarativepropertycache_p.h"
-#include "qdeclarativedeclarativedata_p.h"
+#include "private/qdeclarativeopenmetaobject_p.h"
+#include "private/qdeclarativepropertycache_p.h"
+#include "private/qdeclarativedeclarativedata_p.h"
#include <qmetaobjectbuilder_p.h>
#include <qdebug.h>
@@ -222,9 +222,10 @@ int QDeclarativeOpenMetaObject::metaCall(QMetaObject::Call c, int id, void **a)
propertyRead(propId);
*reinterpret_cast<QVariant *>(a[0]) = d->getData(propId);
} else if (c == QMetaObject::WriteProperty) {
- if (d->data[propId].first != *reinterpret_cast<QVariant *>(a[0])) {
+ if (propId <= d->data.count() || d->data[propId].first != *reinterpret_cast<QVariant *>(a[0])) {
propertyWrite(propId);
d->writeData(propId, *reinterpret_cast<QVariant *>(a[0]));
+ propertyWritten(propId);
activate(d->object, d->type->d->signalOffset + propId, 0);
}
}
@@ -270,6 +271,11 @@ QVariant &QDeclarativeOpenMetaObject::operator[](const QByteArray &name)
return d->getData(*iter);
}
+QVariant &QDeclarativeOpenMetaObject::operator[](int id)
+{
+ return d->getData(id);
+}
+
void QDeclarativeOpenMetaObject::setValue(const QByteArray &name, const QVariant &val)
{
QHash<QByteArray, int>::ConstIterator iter = d->type->d->names.find(name);
@@ -326,6 +332,10 @@ void QDeclarativeOpenMetaObject::propertyWrite(int)
{
}
+void QDeclarativeOpenMetaObject::propertyWritten(int)
+{
+}
+
void QDeclarativeOpenMetaObject::propertyCreated(int, QMetaPropertyBuilder &)
{
}
diff --git a/src/declarative/util/qdeclarativeopenmetaobject_p.h b/src/declarative/util/qdeclarativeopenmetaobject_p.h
index ec5ac17..9bb4c34 100644
--- a/src/declarative/util/qdeclarativeopenmetaobject_p.h
+++ b/src/declarative/util/qdeclarativeopenmetaobject_p.h
@@ -90,6 +90,7 @@ public:
QVariant value(int) const;
void setValue(int, const QVariant &);
QVariant &operator[](const QByteArray &);
+ QVariant &operator[](int);
int count() const;
QByteArray name(int) const;
@@ -109,6 +110,7 @@ protected:
virtual void propertyRead(int);
virtual void propertyWrite(int);
+ virtual void propertyWritten(int);
virtual void propertyCreated(int, QMetaPropertyBuilder &);
QAbstractDynamicMetaObject *parent() const;
diff --git a/src/declarative/util/qdeclarativepackage.cpp b/src/declarative/util/qdeclarativepackage.cpp
index d144777..ac0788f 100644
--- a/src/declarative/util/qdeclarativepackage.cpp
+++ b/src/declarative/util/qdeclarativepackage.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativepackage_p.h"
+#include "private/qdeclarativepackage_p.h"
#include <private/qobject_p.h>
#include <private/qdeclarativeguard_p.h>
diff --git a/src/declarative/util/qdeclarativepixmapcache.cpp b/src/declarative/util/qdeclarativepixmapcache.cpp
index e78fdf1..e57d3c2 100644
--- a/src/declarative/util/qdeclarativepixmapcache.cpp
+++ b/src/declarative/util/qdeclarativepixmapcache.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativepixmapcache_p.h"
+#include "private/qdeclarativepixmapcache_p.h"
#include "qdeclarativenetworkaccessmanagerfactory.h"
#include "qdeclarativeimageprovider.h"
@@ -60,11 +60,6 @@
#include <private/qobject_p.h>
#include <QSslError>
-#ifdef Q_OS_LINUX
-#include <pthread.h>
-#include <linux/sched.h>
-#endif
-
// Maximum number of simultaneous image requests to send.
static const int maxImageRequestCount = 8;
@@ -106,7 +101,7 @@ public:
QDeclarativeImageReader(QDeclarativeEngine *eng);
~QDeclarativeImageReader();
- QDeclarativePixmapReply *getImage(const QUrl &url);
+ QDeclarativePixmapReply *getImage(const QUrl &url, int req_width, int req_height);
void cancel(QDeclarativePixmapReply *rep);
static QDeclarativeImageReader *instance(QDeclarativeEngine *engine);
@@ -119,6 +114,7 @@ private:
QList<QDeclarativePixmapReply*> cancelled;
QDeclarativeEngine *engine;
QDeclarativeImageRequestHandler *handler;
+ QObject *eventLoopQuitHack;
QMutex mutex;
static QHash<QDeclarativeEngine *,QDeclarativeImageReader*> readers;
@@ -140,7 +136,7 @@ public:
QCoreApplication::postEvent(this, new QEvent(QEvent::User));
}
- QDeclarativePixmapReply *getImage(const QUrl &url);
+ QDeclarativePixmapReply *getImage(const QUrl &url, int req_width, int req_height);
void cancel(QDeclarativePixmapReply *reply);
protected:
@@ -170,11 +166,58 @@ private:
//===========================================================================
+static bool readImage(const QUrl& url, QIODevice *dev, QImage *image, QString *errorString, QSize *impsize, int req_width, int req_height)
+{
+ QImageReader imgio(dev);
+
+ bool force_scale = false;
+ if (url.path().endsWith(QLatin1String(".svg"),Qt::CaseInsensitive)) {
+ imgio.setFormat("svg"); // QSvgPlugin::capabilities bug QTBUG-9053
+ force_scale = true;
+ }
+
+ bool scaled = false;
+ if (req_width > 0 || req_height > 0) {
+ QSize s = imgio.size();
+ if (req_width && (force_scale || req_width < s.width())) {
+ if (req_height <= 0)
+ s.setHeight(s.height()*req_width/s.width());
+ s.setWidth(req_width); scaled = true;
+ }
+ if (req_height && (force_scale || req_height < s.height())) {
+ if (req_width <= 0)
+ s.setWidth(s.width()*req_height/s.height());
+ s.setHeight(req_height); scaled = true;
+ }
+ if (scaled) { imgio.setScaledSize(s); }
+ }
+
+ if (impsize)
+ *impsize = imgio.size();
+
+ if (imgio.read(image)) {
+ if (impsize && impsize->width() < 0)
+ *impsize = image->size();
+ return true;
+ } else {
+ if (errorString)
+ *errorString = QLatin1String("Error decoding: ") + url.toString()
+ + QLatin1String(" \"") + imgio.errorString() + QLatin1String("\"");
+ return false;
+ }
+}
+
+
+//===========================================================================
+
int QDeclarativeImageRequestHandler::replyDownloadProgress = -1;
int QDeclarativeImageRequestHandler::replyFinished = -1;
int QDeclarativeImageRequestHandler::downloadProgress = -1;
int QDeclarativeImageRequestHandler::thisNetworkRequestDone = -1;
+typedef QHash<QUrl, QSize> QDeclarativePixmapSizeHash;
+Q_GLOBAL_STATIC(QDeclarativePixmapSizeHash, qmlOriginalSizes);
+
bool QDeclarativeImageRequestHandler::event(QEvent *event)
{
if (event->type() == QEvent::User) {
@@ -221,7 +264,9 @@ bool QDeclarativeImageRequestHandler::event(QEvent *event)
// fetch
if (url.scheme() == QLatin1String("image")) {
// Use QmlImageProvider
- QImage image = QDeclarativeEnginePrivate::get(engine)->getImageFromProvider(url);
+ QSize read_impsize;
+ QImage image = QDeclarativeEnginePrivate::get(engine)->getImageFromProvider(url, &read_impsize, QSize(runningJob->forcedWidth(),runningJob->forcedHeight()));
+ qmlOriginalSizes()->insert(url, read_impsize);
QDeclarativeImageReaderEvent::ReadError errorCode = QDeclarativeImageReaderEvent::NoError;
QString errorStr;
if (image.isNull()) {
@@ -238,10 +283,10 @@ bool QDeclarativeImageRequestHandler::event(QEvent *event)
QString errorStr;
QFile f(lf);
if (f.open(QIODevice::ReadOnly)) {
- QImageReader imgio(&f);
- if (!imgio.read(&image)) {
- errorStr = QLatin1String("Error decoding: ") + url.toString()
- + QLatin1String(" \"") + imgio.errorString() + QLatin1String("\"");
+ QSize read_impsize;
+ if (readImage(url, &f, &image, &errorStr, &read_impsize, runningJob->forcedWidth(),runningJob->forcedHeight())) {
+ qmlOriginalSizes()->insert(url, read_impsize);
+ } else {
errorCode = QDeclarativeImageReaderEvent::Loading;
}
} else {
@@ -303,12 +348,11 @@ void QDeclarativeImageRequestHandler::networkRequestDone()
error = QDeclarativeImageReaderEvent::Loading;
errorString = reply->errorString();
} else {
- QImageReader imgio(reply);
- if (imgio.read(&image)) {
+ QSize read_impsize;
+ if (readImage(reply->url(), reply, &image, &errorString, &read_impsize, job->forcedWidth(), job->forcedHeight())) {
+ qmlOriginalSizes()->insert(reply->url(), read_impsize);
error = QDeclarativeImageReaderEvent::NoError;
} else {
- errorString = QLatin1String("Error decoding: ") + reply->url().toString()
- + QLatin1String(" \"") + imgio.errorString() + QLatin1String("\"");
error = QDeclarativeImageReaderEvent::Decoding;
}
}
@@ -326,7 +370,10 @@ void QDeclarativeImageRequestHandler::networkRequestDone()
QDeclarativeImageReader::QDeclarativeImageReader(QDeclarativeEngine *eng)
: QThread(eng), engine(eng), handler(0)
{
- start(QThread::LowPriority);
+ eventLoopQuitHack = new QObject;
+ eventLoopQuitHack->moveToThread(this);
+ connect(eventLoopQuitHack, SIGNAL(destroyed(QObject*)), SLOT(quit()), Qt::DirectConnection);
+ start(QThread::IdlePriority);
}
QDeclarativeImageReader::~QDeclarativeImageReader()
@@ -335,7 +382,7 @@ QDeclarativeImageReader::~QDeclarativeImageReader()
readers.remove(engine);
readerMutex.unlock();
- quit();
+ eventLoopQuitHack->deleteLater();
wait();
}
@@ -352,10 +399,10 @@ QDeclarativeImageReader *QDeclarativeImageReader::instance(QDeclarativeEngine *e
return reader;
}
-QDeclarativePixmapReply *QDeclarativeImageReader::getImage(const QUrl &url)
+QDeclarativePixmapReply *QDeclarativeImageReader::getImage(const QUrl &url, int req_width, int req_height)
{
mutex.lock();
- QDeclarativePixmapReply *reply = new QDeclarativePixmapReply(this, url);
+ QDeclarativePixmapReply *reply = new QDeclarativePixmapReply(this, url, req_width, req_height);
reply->addRef();
reply->setLoading();
jobs.append(reply);
@@ -379,15 +426,9 @@ void QDeclarativeImageReader::cancel(QDeclarativePixmapReply *reply)
void QDeclarativeImageReader::run()
{
-#if defined(Q_OS_LINUX) && defined(SCHED_IDLE)
- struct sched_param param;
- int policy;
-
- pthread_getschedparam(pthread_self(), &policy, &param);
- pthread_setschedparam(pthread_self(), SCHED_IDLE, &param);
-#endif
-
+ readerMutex.lock();
handler = new QDeclarativeImageRequestHandler(this, engine);
+ readerMutex.unlock();
exec();
@@ -397,40 +438,6 @@ void QDeclarativeImageReader::run()
//===========================================================================
-static bool readImage(QIODevice *dev, QPixmap *pixmap, QString &errorString)
-{
- QImageReader imgio(dev);
-
-//#define QT_TEST_SCALED_SIZE
-#ifdef QT_TEST_SCALED_SIZE
- /*
- Some mechanism is needed for loading images at a limited size, especially
- for remote images. Loading only thumbnails of remote progressive JPEG
- images can be efficient. (Qt jpeg handler does not do so currently)
- */
-
- QSize limit(60,60);
- QSize sz = imgio.size();
- if (sz.width() > limit.width() || sz.height() > limit.height()) {
- sz.scale(limit,Qt::KeepAspectRatio);
- imgio.setScaledSize(sz);
- }
-#endif
-
- QImage img;
- if (imgio.read(&img)) {
-#ifdef QT_TEST_SCALED_SIZE
- if (!sz.isValid())
- img = img.scaled(limit,Qt::KeepAspectRatio);
-#endif
- *pixmap = QPixmap::fromImage(img);
- return true;
- } else {
- errorString = imgio.errorString();
- return false;
- }
-}
-
/*!
\internal
\class QDeclarativePixmapCache
@@ -447,8 +454,10 @@ class QDeclarativePixmapReplyPrivate : public QObjectPrivate
Q_DECLARE_PUBLIC(QDeclarativePixmapReply)
public:
- QDeclarativePixmapReplyPrivate(QDeclarativeImageReader *r, const QUrl &u)
- : QObjectPrivate(), refCount(1), url(u), status(QDeclarativePixmapReply::Loading), loading(false), reader(r) {
+ QDeclarativePixmapReplyPrivate(QDeclarativeImageReader *r, const QUrl &u, int req_width, int req_height)
+ : QObjectPrivate(), refCount(1), url(u), status(QDeclarativePixmapReply::Loading), loading(false), reader(r),
+ forced_width(req_width), forced_height(req_height)
+ {
}
int refCount;
@@ -457,11 +466,12 @@ public:
QDeclarativePixmapReply::Status status;
bool loading;
QDeclarativeImageReader *reader;
+ int forced_width, forced_height;
};
-QDeclarativePixmapReply::QDeclarativePixmapReply(QDeclarativeImageReader *reader, const QUrl &url)
- : QObject(*new QDeclarativePixmapReplyPrivate(reader, url), 0)
+QDeclarativePixmapReply::QDeclarativePixmapReply(QDeclarativeImageReader *reader, const QUrl &url, int req_width, int req_height)
+ : QObject(*new QDeclarativePixmapReplyPrivate(reader, url, req_width, req_height), 0)
{
}
@@ -475,6 +485,28 @@ const QUrl &QDeclarativePixmapReply::url() const
return d->url;
}
+int QDeclarativePixmapReply::forcedWidth() const
+{
+ Q_D(const QDeclarativePixmapReply);
+ return d->forced_width;
+}
+
+int QDeclarativePixmapReply::forcedHeight() const
+{
+ Q_D(const QDeclarativePixmapReply);
+ return d->forced_height;
+}
+
+QSize QDeclarativePixmapReply::implicitSize() const
+{
+ Q_D(const QDeclarativePixmapReply);
+ QDeclarativePixmapSizeHash::Iterator iter = qmlOriginalSizes()->find(d->url);
+ if (iter != qmlOriginalSizes()->end())
+ return *iter;
+ else
+ return QSize();
+}
+
bool QDeclarativePixmapReply::event(QEvent *event)
{
Q_D(QDeclarativePixmapReply);
@@ -554,13 +586,25 @@ bool QDeclarativePixmapReply::release(bool defer)
If \a async is false the image will be loaded and decoded immediately;
otherwise the image will be loaded and decoded in a separate thread.
+ If \a req_width and \a req_height are non-zero, they are used for
+ the size of the rendered pixmap rather than the intrinsic size of the image.
+ Different request sizes add different cache items.
+
Note that images sourced from the network will always be loaded and
decoded asynchonously.
*/
-QDeclarativePixmapReply::Status QDeclarativePixmapCache::get(const QUrl& url, QPixmap *pixmap, bool async)
+QDeclarativePixmapReply::Status QDeclarativePixmapCache::get(const QUrl& url, QPixmap *pixmap, QSize *impsize, bool async, int req_width, int req_height)
{
QDeclarativePixmapReply::Status status = QDeclarativePixmapReply::Unrequested;
QByteArray key = url.toEncoded(QUrl::FormattingOption(0x100));
+
+ if (req_width > 0 || req_height > 0) {
+ key += ':';
+ key += QByteArray::number(req_width);
+ key += 'x';
+ key += QByteArray::number(req_height);
+ }
+
QString strKey = QString::fromLatin1(key.constData(), key.count());
#ifndef QT_NO_LOCALFILE_OPTIMIZED_QML
@@ -570,11 +614,13 @@ QDeclarativePixmapReply::Status QDeclarativePixmapCache::get(const QUrl& url, QP
status = QDeclarativePixmapReply::Ready;
if (!QPixmapCache::find(strKey,pixmap)) {
QFile f(lf);
+ QSize read_impsize;
if (f.open(QIODevice::ReadOnly)) {
QString errorString;
- if (!readImage(&f, pixmap, errorString)) {
- errorString = QLatin1String("Error decoding: ") + url.toString()
- + QLatin1String(" \"") + errorString + QLatin1String("\"");
+ QImage image;
+ if (readImage(url, &f, &image, &errorString, &read_impsize, req_width, req_height)) {
+ *pixmap = QPixmap::fromImage(image);
+ } else {
qWarning() << errorString;
*pixmap = QPixmap();
status = QDeclarativePixmapReply::Error;
@@ -584,8 +630,18 @@ QDeclarativePixmapReply::Status QDeclarativePixmapCache::get(const QUrl& url, QP
*pixmap = QPixmap();
status = QDeclarativePixmapReply::Error;
}
- if (status == QDeclarativePixmapReply::Ready)
+ if (status == QDeclarativePixmapReply::Ready) {
QPixmapCache::insert(strKey, *pixmap);
+ qmlOriginalSizes()->insert(url, read_impsize);
+ }
+ if (impsize)
+ *impsize = read_impsize;
+ } else {
+ if (impsize) {
+ QDeclarativePixmapSizeHash::Iterator iter = qmlOriginalSizes()->find(url);
+ if (iter != qmlOriginalSizes()->end())
+ *impsize = *iter;
+ }
}
return status;
}
@@ -608,6 +664,11 @@ QDeclarativePixmapReply::Status QDeclarativePixmapCache::get(const QUrl& url, QP
} else if (iter != qmlActivePixmapReplies()->end()) {
status = QDeclarativePixmapReply::Loading;
}
+ if (impsize) {
+ QDeclarativePixmapSizeHash::Iterator iter = qmlOriginalSizes()->find(url);
+ if (iter != qmlOriginalSizes()->end())
+ *impsize = *iter;
+ }
return status;
}
@@ -621,12 +682,12 @@ QDeclarativePixmapReply::Status QDeclarativePixmapCache::get(const QUrl& url, QP
The returned QDeclarativePixmapReply will be deleted when all request() calls are
matched by a corresponding get() call.
*/
-QDeclarativePixmapReply *QDeclarativePixmapCache::request(QDeclarativeEngine *engine, const QUrl &url)
+QDeclarativePixmapReply *QDeclarativePixmapCache::request(QDeclarativeEngine *engine, const QUrl &url, int req_width, int req_height)
{
QDeclarativePixmapReplyHash::Iterator iter = qmlActivePixmapReplies()->find(url);
if (iter == qmlActivePixmapReplies()->end()) {
QDeclarativeImageReader *reader = QDeclarativeImageReader::instance(engine);
- QDeclarativePixmapReply *item = reader->getImage(url);
+ QDeclarativePixmapReply *item = reader->getImage(url, req_width, req_height);
iter = qmlActivePixmapReplies()->insert(url, item);
} else {
(*iter)->addRef();
diff --git a/src/declarative/util/qdeclarativepixmapcache_p.h b/src/declarative/util/qdeclarativepixmapcache_p.h
index b8949db..df71d65 100644
--- a/src/declarative/util/qdeclarativepixmapcache_p.h
+++ b/src/declarative/util/qdeclarativepixmapcache_p.h
@@ -66,6 +66,9 @@ public:
Status status() const;
const QUrl &url() const;
+ int forcedWidth() const;
+ int forcedHeight() const;
+ QSize implicitSize() const;
Q_SIGNALS:
void finished();
@@ -81,7 +84,7 @@ private:
void setLoading();
private:
- QDeclarativePixmapReply(QDeclarativeImageReader *reader, const QUrl &url);
+ QDeclarativePixmapReply(QDeclarativeImageReader *reader, const QUrl &url, int req_width, int req_height);
Q_DISABLE_COPY(QDeclarativePixmapReply)
Q_DECLARE_PRIVATE(QDeclarativePixmapReply)
friend class QDeclarativeImageRequestHandler;
@@ -92,8 +95,8 @@ private:
class Q_DECLARATIVE_EXPORT QDeclarativePixmapCache
{
public:
- static QDeclarativePixmapReply::Status get(const QUrl& url, QPixmap *pixmap, bool async=false);
- static QDeclarativePixmapReply *request(QDeclarativeEngine *, const QUrl& url);
+ static QDeclarativePixmapReply::Status get(const QUrl& url, QPixmap *pixmap, QSize *impsize=0, bool async=false, int req_width=0, int req_height=0);
+ static QDeclarativePixmapReply *request(QDeclarativeEngine *, const QUrl& url, int req_width=0, int req_height=0);
static void cancel(const QUrl& url, QObject *obj);
static int pendingRequests();
};
diff --git a/src/declarative/util/qdeclarativepropertychanges.cpp b/src/declarative/util/qdeclarativepropertychanges.cpp
index 6ceec5d..e7228cc 100644
--- a/src/declarative/util/qdeclarativepropertychanges.cpp
+++ b/src/declarative/util/qdeclarativepropertychanges.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativepropertychanges_p.h"
+#include "private/qdeclarativepropertychanges_p.h"
-#include "qdeclarativeopenmetaobject_p.h"
+#include "private/qdeclarativeopenmetaobject_p.h"
#include <qdeclarativeinfo.h>
#include <qdeclarativecustomparser_p.h>
diff --git a/src/declarative/util/qdeclarativepropertychanges_p.h b/src/declarative/util/qdeclarativepropertychanges_p.h
index 1274b0c..c2ed466 100644
--- a/src/declarative/util/qdeclarativepropertychanges_p.h
+++ b/src/declarative/util/qdeclarativepropertychanges_p.h
@@ -42,7 +42,7 @@
#ifndef QDECLARATIVEPROPERTYCHANGES_H
#define QDECLARATIVEPROPERTYCHANGES_H
-#include "qdeclarativestateoperations_p.h"
+#include "private/qdeclarativestateoperations_p.h"
#include <private/qdeclarativecustomparser_p.h>
QT_BEGIN_HEADER
diff --git a/src/declarative/util/qdeclarativepropertymap.cpp b/src/declarative/util/qdeclarativepropertymap.cpp
index fcea515..0e477b1 100644
--- a/src/declarative/util/qdeclarativepropertymap.cpp
+++ b/src/declarative/util/qdeclarativepropertymap.cpp
@@ -41,7 +41,8 @@
#include "qdeclarativepropertymap.h"
-#include "qdeclarativeopenmetaobject_p.h"
+#include <private/qmetaobjectbuilder_p.h>
+#include "private/qdeclarativeopenmetaobject_p.h"
#include <QDebug>
@@ -55,7 +56,8 @@ public:
QDeclarativePropertyMapMetaObject(QDeclarativePropertyMap *obj, QDeclarativePropertyMapPrivate *objPriv);
protected:
- virtual void propertyWrite(int index);
+ virtual void propertyWritten(int index);
+ virtual void propertyCreated(int, QMetaPropertyBuilder &);
private:
QDeclarativePropertyMap *map;
@@ -68,13 +70,13 @@ class QDeclarativePropertyMapPrivate : public QObjectPrivate
public:
QDeclarativePropertyMapMetaObject *mo;
QStringList keys;
- void emitChanged(const QString &key);
+ void emitChanged(const QString &key, const QVariant &value);
};
-void QDeclarativePropertyMapPrivate::emitChanged(const QString &key)
+void QDeclarativePropertyMapPrivate::emitChanged(const QString &key, const QVariant &value)
{
Q_Q(QDeclarativePropertyMap);
- emit q->valueChanged(key);
+ emit q->valueChanged(key, value);
}
QDeclarativePropertyMapMetaObject::QDeclarativePropertyMapMetaObject(QDeclarativePropertyMap *obj, QDeclarativePropertyMapPrivate *objPriv) : QDeclarativeOpenMetaObject(obj)
@@ -83,14 +85,19 @@ QDeclarativePropertyMapMetaObject::QDeclarativePropertyMapMetaObject(QDeclarativ
priv = objPriv;
}
-void QDeclarativePropertyMapMetaObject::propertyWrite(int index)
+void QDeclarativePropertyMapMetaObject::propertyWritten(int index)
{
- priv->emitChanged(QString::fromUtf8(name(index)));
+ priv->emitChanged(QString::fromUtf8(name(index)), operator[](index));
+}
+
+void QDeclarativePropertyMapMetaObject::propertyCreated(int, QMetaPropertyBuilder &b)
+{
+ priv->keys.append(QString::fromUtf8(b.name()));
}
/*!
\class QDeclarativePropertyMap
- \since 4.7
+ \since 4.7
\brief The QDeclarativePropertyMap class allows you to set key-value pairs that can be used in bindings.
QDeclarativePropertyMap provides a convenient way to expose domain data to the UI layer.
@@ -172,8 +179,6 @@ QVariant QDeclarativePropertyMap::value(const QString &key) const
void QDeclarativePropertyMap::insert(const QString &key, const QVariant &value)
{
Q_D(QDeclarativePropertyMap);
- if (!d->keys.contains(key))
- d->keys.append(key);
d->mo->setValue(key.toUtf8(), value);
}
@@ -249,10 +254,8 @@ QVariant &QDeclarativePropertyMap::operator[](const QString &key)
//### optimize
Q_D(QDeclarativePropertyMap);
QByteArray utf8key = key.toUtf8();
- if (!d->keys.contains(key)) {
- d->keys.append(key);
+ if (!d->keys.contains(key))
d->mo->setValue(utf8key, QVariant()); //force creation -- needed below
- }
return (*(d->mo))[utf8key];
}
@@ -268,9 +271,9 @@ const QVariant QDeclarativePropertyMap::operator[](const QString &key) const
}
/*!
- \fn void QDeclarativePropertyMap::valueChanged(const QString &key)
+ \fn void QDeclarativePropertyMap::valueChanged(const QString &key, const QVariant &value)
This signal is emitted whenever one of the values in the map is changed. \a key
- is the key corresponding to the value that was changed.
+ is the key corresponding to the \a value that was changed.
\note valueChanged() is \bold NOT emitted when changes are made by calling insert()
or clear() - it is only emitted when a value is updated from QML.
diff --git a/src/declarative/util/qdeclarativepropertymap.h b/src/declarative/util/qdeclarativepropertymap.h
index 513089f..e0b7ce3 100644
--- a/src/declarative/util/qdeclarativepropertymap.h
+++ b/src/declarative/util/qdeclarativepropertymap.h
@@ -76,7 +76,7 @@ public:
const QVariant operator[](const QString &key) const;
Q_SIGNALS:
- void valueChanged(const QString &key);
+ void valueChanged(const QString &key, const QVariant &value);
private:
Q_DECLARE_PRIVATE(QDeclarativePropertyMap)
diff --git a/src/declarative/util/qdeclarativesmoothedanimation.cpp b/src/declarative/util/qdeclarativesmoothedanimation.cpp
new file mode 100644
index 0000000..3411642
--- /dev/null
+++ b/src/declarative/util/qdeclarativesmoothedanimation.cpp
@@ -0,0 +1,483 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 "private/qdeclarativesmoothedanimation_p.h"
+#include "private/qdeclarativesmoothedanimation_p_p.h"
+
+#include "private/qdeclarativeanimation_p_p.h"
+
+#include <qdeclarativeproperty.h>
+#include "private/qdeclarativeproperty_p.h"
+
+#include "private/qdeclarativeglobal_p.h"
+
+#include <QtCore/qdebug.h>
+
+#include <math.h>
+
+#define DELAY_STOP_TIMER_INTERVAL 32
+
+QT_BEGIN_NAMESPACE
+
+QSmoothedAnimation::QSmoothedAnimation(QObject *parent)
+ : QAbstractAnimation(parent), to(0), velocity(200), userDuration(-1), maximumEasingTime(-1),
+ reversingMode(QDeclarativeSmoothedAnimation::Eased), initialVelocity(0),
+ trackVelocity(0), initialValue(0), invert(false), finalDuration(-1), lastTime(0)
+{
+ delayedStopTimer.setInterval(DELAY_STOP_TIMER_INTERVAL);
+ delayedStopTimer.setSingleShot(true);
+ connect(&delayedStopTimer, SIGNAL(timeout()), this, SLOT(stop()));
+}
+
+void QSmoothedAnimation::restart()
+{
+ if (state() != QAbstractAnimation::Running)
+ start();
+ else
+ init();
+}
+
+void QSmoothedAnimation::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State /*oldState*/)
+{
+ if (newState == QAbstractAnimation::Running)
+ init();
+}
+
+void QSmoothedAnimation::delayedStop()
+{
+ if (!delayedStopTimer.isActive())
+ delayedStopTimer.start();
+}
+
+int QSmoothedAnimation::duration() const
+{
+ return -1;
+}
+
+bool QSmoothedAnimation::recalc()
+{
+ s = to - initialValue;
+ vi = initialVelocity;
+
+ s = (invert? -1.0: 1.0) * s;
+
+ if (userDuration > 0 && velocity > 0) {
+ tf = s / velocity;
+ if (tf > (userDuration / 1000.)) tf = (userDuration / 1000.);
+ } else if (userDuration > 0) {
+ tf = userDuration / 1000.;
+ } else if (velocity > 0) {
+ tf = s / velocity;
+ } else {
+ return false;
+ }
+
+ finalDuration = ceil(tf * 1000.0);
+
+ if (maximumEasingTime == 0) {
+ a = 0;
+ d = 0;
+ tp = 0;
+ td = tf;
+ vp = velocity;
+ sp = 0;
+ sd = s;
+ } else if (maximumEasingTime != -1 && tf > (maximumEasingTime / 1000.)) {
+ qreal met = maximumEasingTime / 1000.;
+ td = tf - met;
+
+ qreal c1 = td;
+ qreal c2 = (tf - td) * vi - tf * velocity;
+ qreal c3 = -0.5 * (tf - td) * vi * vi;
+
+ qreal vp1 = (-c2 + sqrt(c2 * c2 - 4 * c1 * c3)) / (2. * c1);
+
+ vp = vp1;
+ a = vp / met;
+ d = a;
+ tp = (vp - vi) / a;
+ sp = vi * tp + 0.5 * a * tp * tp;
+ sd = sp + (td - tp) * vp;
+ } else {
+ qreal c1 = 0.25 * tf * tf;
+ qreal c2 = 0.5 * vi * tf - s;
+ qreal c3 = -0.25 * vi * vi;
+
+ qreal a1 = (-c2 + sqrt(c2 * c2 - 4 * c1 * c3)) / (2. * c1);
+
+ qreal tp1 = 0.5 * tf - 0.5 * vi / a1;
+ qreal vp1 = a1 * tp1 + vi;
+
+ qreal sp1 = 0.5 * a1 * tp1 * tp1 + vi * tp1;
+
+ a = a1;
+ d = a1;
+ tp = tp1;
+ td = tp1;
+ vp = vp1;
+ sp = sp1;
+ sd = sp1;
+ }
+ return true;
+}
+
+qreal QSmoothedAnimation::easeFollow(qreal time_seconds)
+{
+ qreal value;
+ if (time_seconds < tp) {
+ trackVelocity = vi + time_seconds * a;
+ value = 0.5 * a * time_seconds * time_seconds + vi * time_seconds;
+ } else if (time_seconds < td) {
+ time_seconds -= tp;
+ trackVelocity = vp;
+ value = sp + time_seconds * vp;
+ } else if (time_seconds < tf) {
+ time_seconds -= td;
+ trackVelocity = vp - time_seconds * a;
+ value = sd - 0.5 * d * time_seconds * time_seconds + vp * time_seconds;
+ } else {
+ trackVelocity = 0;
+ value = s;
+ delayedStop();
+ }
+
+ // to normalize 's' between [0..1], divide 'value' by 's'
+ return value;
+}
+
+void QSmoothedAnimation::updateCurrentTime(int t)
+{
+ qreal time_seconds = qreal(t - lastTime) / 1000.;
+
+ qreal value = easeFollow(time_seconds);
+ value *= (invert? -1.0: 1.0);
+ QDeclarativePropertyPrivate::write(target, initialValue + value,
+ QDeclarativePropertyPrivate::BypassInterceptor
+ | QDeclarativePropertyPrivate::DontRemoveBinding);
+}
+
+void QSmoothedAnimation::init()
+{
+ if (velocity == 0) {
+ stop();
+ return;
+ }
+
+ if (delayedStopTimer.isActive())
+ delayedStopTimer.stop();
+
+ initialValue = target.read().toReal();
+ lastTime = this->currentTime();
+
+ if (to == initialValue) {
+ stop();
+ return;
+ }
+
+ bool hasReversed = trackVelocity != 0. &&
+ ((trackVelocity > 0) == ((initialValue - to) > 0));
+
+ if (hasReversed) {
+ switch (reversingMode) {
+ default:
+ case QDeclarativeSmoothedAnimation::Eased:
+ break;
+ case QDeclarativeSmoothedAnimation::Sync:
+ QDeclarativePropertyPrivate::write(target, to,
+ QDeclarativePropertyPrivate::BypassInterceptor
+ | QDeclarativePropertyPrivate::DontRemoveBinding);
+ return;
+ case QDeclarativeSmoothedAnimation::Immediate:
+ initialVelocity = 0;
+ delayedStop();
+ break;
+ }
+ }
+
+ trackVelocity = initialVelocity;
+
+ invert = (to < initialValue);
+
+ if (!recalc()) {
+ QDeclarativePropertyPrivate::write(target, to,
+ QDeclarativePropertyPrivate::BypassInterceptor
+ | QDeclarativePropertyPrivate::DontRemoveBinding);
+ stop();
+ return;
+ }
+}
+
+/*!
+ \qmlclass SmoothedAnimation QDeclarativeSmoothedAnimation
+ \since 4.7
+ \brief The SmoothedAnimation element allows a property to smoothly track a value.
+
+ The SmoothedAnimation smoothly animates a property's value to a set target value
+ using an ease in/out quad easing curve. If the animation is restarted
+ with a different target value, the easing curves used to animate to the old
+ and the new target values are spliced together to avoid any obvious visual
+ glitches.
+
+ The property animation is configured by setting the velocity at which the
+ animation should occur, or the duration that the animation should take.
+ If both a velocity and a duration are specified, the one that results in
+ the quickest animation is chosen for each change in the target value.
+
+ For example, animating from 0 to 800 will take 4 seconds if a velocity
+ of 200 is set, will take 8 seconds with a duration of 8000 set, and will
+ take 4 seconds with both a velocity of 200 and a duration of 8000 set.
+ Animating from 0 to 20000 will take 10 seconds if a velocity of 200 is set,
+ will take 8 seconds with a duration of 8000 set, and will take 8 seconds
+ with both a velocity of 200 and a duration of 8000 set.
+
+ The follow example shows one rectangle tracking the position of another.
+\code
+import Qt 4.6
+
+Rectangle {
+ width: 800; height: 600; color: "blue"
+
+ Rectangle {
+ color: "green"
+ width: 60; height: 60;
+ x: rect1.x - 5; y: rect1.y - 5;
+ Behavior on x { SmoothedAnimation { velocity: 200 } }
+ Behavior on y { SmoothedAnimation { velocity: 200 } }
+ }
+
+ Rectangle {
+ id: rect1
+ color: "red"
+ width: 50; height: 50;
+ }
+
+ focus: true
+ Keys.onRightPressed: rect1.x = rect1.x + 100
+ Keys.onLeftPressed: rect1.x = rect1.x - 100
+ Keys.onUpPressed: rect1.y = rect1.y - 100
+ Keys.onDownPressed: rect1.y = rect1.y + 100
+}
+\endcode
+
+ The default velocity of SmoothedAnimation is 200 units/second. Note that if the range of the
+ value being animated is small, then the velocity will need to be adjusted
+ appropriately. For example, the opacity of an item ranges from 0 - 1.0.
+ To enable a smooth animation in this range the velocity will need to be
+ set to a value such as 0.5 units/second. Animating from 0 to 1.0 with a velocity
+ of 0.5 will take 2000 ms to complete.
+
+ \sa SpringFollow
+*/
+
+QDeclarativeSmoothedAnimation::QDeclarativeSmoothedAnimation(QObject *parent)
+: QDeclarativeNumberAnimation(*(new QDeclarativeSmoothedAnimationPrivate), parent)
+{
+}
+
+QDeclarativeSmoothedAnimation::~QDeclarativeSmoothedAnimation()
+{
+}
+
+QDeclarativeSmoothedAnimationPrivate::QDeclarativeSmoothedAnimationPrivate()
+ : wrapperGroup(new QParallelAnimationGroup), anim(new QSmoothedAnimation)
+{
+ Q_Q(QDeclarativeSmoothedAnimation);
+ QDeclarative_setParent_noEvent(wrapperGroup, q);
+ QDeclarative_setParent_noEvent(anim, q);
+}
+
+QAbstractAnimation* QDeclarativeSmoothedAnimation::qtAnimation()
+{
+ Q_D(QDeclarativeSmoothedAnimation);
+ return d->wrapperGroup;
+}
+
+void QDeclarativeSmoothedAnimation::transition(QDeclarativeStateActions &actions,
+ QDeclarativeProperties &modified,
+ TransitionDirection direction)
+{
+ Q_D(QDeclarativeSmoothedAnimation);
+ QDeclarativeNumberAnimation::transition(actions, modified, direction);
+
+ if (!d->actions)
+ return;
+
+ QSet<QAbstractAnimation*> anims;
+ for (int i = 0; i < d->actions->size(); i++) {
+ QSmoothedAnimation *ease;
+ qreal trackVelocity;
+ bool needsRestart;
+ if (!d->activeAnimations.contains((*d->actions)[i].property)) {
+ ease = new QSmoothedAnimation();
+ d->wrapperGroup->addAnimation(ease);
+ d->activeAnimations.insert((*d->actions)[i].property, ease);
+ trackVelocity = 0.0;
+ needsRestart = false;
+ } else {
+ ease = d->activeAnimations.value((*d->actions)[i].property);
+ trackVelocity = ease->trackVelocity;
+ needsRestart = true;
+ }
+
+ ease->target = (*d->actions)[i].property;
+ ease->to = (*d->actions)[i].toValue.toReal();
+
+ // copying public members from main value holder animation
+ ease->maximumEasingTime = d->anim->maximumEasingTime;
+ ease->reversingMode = d->anim->reversingMode;
+ ease->velocity = d->anim->velocity;
+ ease->userDuration = d->anim->userDuration;
+
+ ease->trackVelocity = trackVelocity;
+ ease->initialVelocity = trackVelocity;
+
+ if (needsRestart)
+ ease->init();
+ anims.insert(ease);
+ }
+
+ for (int i = d->wrapperGroup->animationCount() - 1; i >= 0 ; --i) {
+ if (!anims.contains(d->wrapperGroup->animationAt(i))) {
+ QSmoothedAnimation *ease = static_cast<QSmoothedAnimation*>(d->wrapperGroup->animationAt(i));
+ d->activeAnimations.remove(ease->target);
+ d->wrapperGroup->takeAnimation(i);
+ delete ease;
+ }
+ }
+}
+
+/*!
+ \qmlproperty enumeration SmoothedAnimation::reversingMode
+
+ Sets how the SmoothedAnimation behaves if an animation direction is reversed.
+
+ If reversing mode is \c Eased, the animation will smoothly decelerate, and
+ then reverse direction. If the reversing mode is \c Immediate, the
+ animation will immediately begin accelerating in the reverse direction,
+ begining with a velocity of 0. If the reversing mode is \c Sync, the
+ property is immediately set to the target value.
+*/
+QDeclarativeSmoothedAnimation::ReversingMode QDeclarativeSmoothedAnimation::reversingMode() const
+{
+ Q_D(const QDeclarativeSmoothedAnimation);
+ return (QDeclarativeSmoothedAnimation::ReversingMode) d->anim->reversingMode;
+}
+
+void QDeclarativeSmoothedAnimation::setReversingMode(ReversingMode m)
+{
+ Q_D(QDeclarativeSmoothedAnimation);
+ if (d->anim->reversingMode == m)
+ return;
+
+ d->anim->reversingMode = m;
+ emit reversingModeChanged();
+}
+
+/*!
+ \qmlproperty int SmoothedAnimation::duration
+
+ This property holds the animation duration, in msecs, used when tracking the source.
+
+ Setting this to -1 (the default) disables the duration value.
+*/
+int QDeclarativeSmoothedAnimation::duration() const
+{
+ Q_D(const QDeclarativeSmoothedAnimation);
+ return d->anim->userDuration;
+}
+
+void QDeclarativeSmoothedAnimation::setDuration(int duration)
+{
+ Q_D(QDeclarativeSmoothedAnimation);
+ if (duration != -1)
+ QDeclarativeNumberAnimation::setDuration(duration);
+ d->anim->userDuration = duration;
+}
+
+qreal QDeclarativeSmoothedAnimation::velocity() const
+{
+ Q_D(const QDeclarativeSmoothedAnimation);
+ return d->anim->velocity;
+}
+
+/*!
+ \qmlproperty qreal SmoothedAnimation::velocity
+
+ This property holds the average velocity allowed when tracking the 'to' value.
+
+ The default velocity of SmoothedAnimation is 200 units/second.
+
+ Setting this to -1 disables the velocity value.
+*/
+void QDeclarativeSmoothedAnimation::setVelocity(qreal v)
+{
+ Q_D(QDeclarativeSmoothedAnimation);
+ if (d->anim->velocity == v)
+ return;
+
+ d->anim->velocity = v;
+ emit velocityChanged();
+}
+
+/*!
+\qmlproperty qreal SmoothedAnimation::maximumEasingTime
+
+This property specifies the maximum time, in msecs, an "eases" during the follow should take.
+Setting this property causes the velocity to "level out" after at a time. Setting
+a negative value reverts to the normal mode of easing over the entire animation
+duration.
+
+The default value is -1.
+*/
+int QDeclarativeSmoothedAnimation::maximumEasingTime() const
+{
+ Q_D(const QDeclarativeSmoothedAnimation);
+ return d->anim->maximumEasingTime;
+}
+
+void QDeclarativeSmoothedAnimation::setMaximumEasingTime(int v)
+{
+ Q_D(QDeclarativeSmoothedAnimation);
+ d->anim->maximumEasingTime = v;
+ emit maximumEasingTimeChanged();
+}
+
+QT_END_NAMESPACE
diff --git a/src/declarative/util/qdeclarativeeasefollow_p.h b/src/declarative/util/qdeclarativesmoothedanimation_p.h
index 83d1eff..df53104 100644
--- a/src/declarative/util/qdeclarativeeasefollow_p.h
+++ b/src/declarative/util/qdeclarativesmoothedanimation_p.h
@@ -39,11 +39,11 @@
**
****************************************************************************/
-#ifndef QDECLARATIVEEASEFOLLOW_H
-#define QDECLARATIVEEASEFOLLOW_H
+#ifndef QDECLARATIVESMOOTHEDANIMATION_H
+#define QDECLARATIVESMOOTHEDANIMATION_H
#include <qdeclarative.h>
-#include <qdeclarativepropertyvaluesource.h>
+#include "private/qdeclarativeanimation_p.h"
#include <QtCore/qobject.h>
@@ -54,61 +54,51 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QDeclarativeProperty;
-class QDeclarativeEaseFollowPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeEaseFollow : public QObject,
- public QDeclarativePropertyValueSource
+class QDeclarativeSmoothedAnimationPrivate;
+class Q_DECLARATIVE_EXPORT QDeclarativeSmoothedAnimation : public QDeclarativeNumberAnimation
{
Q_OBJECT
- Q_DECLARE_PRIVATE(QDeclarativeEaseFollow)
- Q_INTERFACES(QDeclarativePropertyValueSource)
+ Q_DECLARE_PRIVATE(QDeclarativeSmoothedAnimation)
Q_ENUMS(ReversingMode)
- Q_PROPERTY(qreal source READ sourceValue WRITE setSourceValue NOTIFY sourceChanged)
Q_PROPERTY(qreal velocity READ velocity WRITE setVelocity NOTIFY velocityChanged)
- Q_PROPERTY(qreal duration READ duration WRITE setDuration NOTIFY durationChanged)
Q_PROPERTY(ReversingMode reversingMode READ reversingMode WRITE setReversingMode NOTIFY reversingModeChanged)
- Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
Q_PROPERTY(qreal maximumEasingTime READ maximumEasingTime WRITE setMaximumEasingTime NOTIFY maximumEasingTimeChanged)
public:
enum ReversingMode { Eased, Immediate, Sync };
- QDeclarativeEaseFollow(QObject *parent = 0);
- ~QDeclarativeEaseFollow();
+ QDeclarativeSmoothedAnimation(QObject *parent = 0);
+ ~QDeclarativeSmoothedAnimation();
ReversingMode reversingMode() const;
void setReversingMode(ReversingMode);
- qreal sourceValue() const;
- void setSourceValue(qreal);
+ virtual int duration() const;
+ virtual void setDuration(int);
qreal velocity() const;
void setVelocity(qreal);
- qreal duration() const;
- void setDuration(qreal);
+ int maximumEasingTime() const;
+ void setMaximumEasingTime(int);
- bool enabled() const;
- void setEnabled(bool enabled);
-
- qreal maximumEasingTime() const;
- void setMaximumEasingTime(qreal);
-
- virtual void setTarget(const QDeclarativeProperty &);
+public:
+ virtual void transition(QDeclarativeStateActions &actions,
+ QDeclarativeProperties &modified,
+ TransitionDirection direction);
+ QAbstractAnimation* qtAnimation();
Q_SIGNALS:
- void sourceChanged();
void velocityChanged();
- void durationChanged();
void reversingModeChanged();
- void enabledChanged();
void maximumEasingTimeChanged();
};
QT_END_NAMESPACE
-QML_DECLARE_TYPE(QDeclarativeEaseFollow);
+QML_DECLARE_TYPE(QDeclarativeSmoothedAnimation);
QT_END_HEADER
-#endif // QDECLARATIVEEASEFOLLOW_H
+#endif // QDECLARATIVESMOOTHEDANIMATION_H
diff --git a/src/declarative/util/qdeclarativesmoothedanimation_p_p.h b/src/declarative/util/qdeclarativesmoothedanimation_p_p.h
new file mode 100644
index 0000000..81cd229
--- /dev/null
+++ b/src/declarative/util/qdeclarativesmoothedanimation_p_p.h
@@ -0,0 +1,134 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QDECLARATIVESMOOTHEDANIMATION_P_H
+#define QDECLARATIVESMOOTHEDANIMATION_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "private/qdeclarativesmoothedanimation_p.h"
+#include "private/qdeclarativeanimation_p.h"
+
+#include "private/qdeclarativeanimation_p_p.h"
+
+#include <qparallelanimationgroup.h>
+
+#include <private/qobject_p.h>
+#include <QTimer>
+
+QT_BEGIN_NAMESPACE
+
+class QSmoothedAnimation : public QAbstractAnimation
+{
+public:
+ QSmoothedAnimation(QObject *parent=0);
+
+ qreal to;
+ qreal velocity;
+ int userDuration;
+
+ int maximumEasingTime;
+ QDeclarativeSmoothedAnimation::ReversingMode reversingMode;
+
+ qreal initialVelocity;
+ qreal trackVelocity;
+
+ QDeclarativeProperty target;
+
+ int duration() const;
+ void restart();
+ void init();
+
+protected:
+ virtual void updateCurrentTime(int);
+ virtual void updateState(QAbstractAnimation::State, QAbstractAnimation::State);
+
+private:
+ qreal easeFollow(qreal);
+ qreal initialValue;
+
+ bool invert;
+
+ int finalDuration;
+
+ // Parameters for use in updateCurrentTime()
+ qreal a; // Acceleration
+ qreal d; // Deceleration
+ qreal tf; // Total time
+ qreal tp; // Time at which peak velocity occurs
+ qreal td; // Time at which decelleration begins
+ qreal vp; // Velocity at tp
+ qreal sp; // Displacement at tp
+ qreal sd; // Displacement at td
+ qreal vi; // "Normalized" initialvelocity
+ qreal s; // Total s
+
+ int lastTime;
+
+ bool recalc();
+ void delayedStop();
+
+ QTimer delayedStopTimer;
+};
+
+class QDeclarativeSmoothedAnimationPrivate : public QDeclarativePropertyAnimationPrivate
+{
+ Q_DECLARE_PUBLIC(QDeclarativeSmoothedAnimation)
+public:
+ QDeclarativeSmoothedAnimationPrivate();
+
+ QParallelAnimationGroup *wrapperGroup;
+ QSmoothedAnimation *anim;
+ QHash<QDeclarativeProperty, QSmoothedAnimation*> activeAnimations;
+};
+
+QT_END_NAMESPACE
+
+#endif // QDECLARATIVESMOOTHEDANIMATION_P_H
diff --git a/src/declarative/util/qdeclarativespringfollow.cpp b/src/declarative/util/qdeclarativespringfollow.cpp
index 76d7c98..c42261d 100644
--- a/src/declarative/util/qdeclarativespringfollow.cpp
+++ b/src/declarative/util/qdeclarativespringfollow.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativespringfollow_p.h"
+#include "private/qdeclarativespringfollow_p.h"
-#include "qdeclarativeanimation_p_p.h"
+#include "private/qdeclarativeanimation_p_p.h"
#include <QtCore/qdebug.h>
@@ -242,8 +242,6 @@ void QDeclarativeSpringFollowPrivate::stop()
SpringFollow on y { source: rect1.y; velocity: 200 }
}
\endcode
-
- \sa EaseFollow
*/
QDeclarativeSpringFollow::QDeclarativeSpringFollow(QObject *parent)
diff --git a/src/declarative/util/qdeclarativestate.cpp b/src/declarative/util/qdeclarativestate.cpp
index 802ff1c..5e6c35e 100644
--- a/src/declarative/util/qdeclarativestate.cpp
+++ b/src/declarative/util/qdeclarativestate.cpp
@@ -39,14 +39,14 @@
**
****************************************************************************/
-#include "qdeclarativestate_p_p.h"
-#include "qdeclarativestate_p.h"
-
-#include "qdeclarativetransition_p.h"
-#include "qdeclarativestategroup_p.h"
-#include "qdeclarativestateoperations_p.h"
-#include "qdeclarativeanimation_p.h"
-#include "qdeclarativeanimation_p_p.h"
+#include "private/qdeclarativestate_p_p.h"
+#include "private/qdeclarativestate_p.h"
+
+#include "private/qdeclarativetransition_p.h"
+#include "private/qdeclarativestategroup_p.h"
+#include "private/qdeclarativestateoperations_p.h"
+#include "private/qdeclarativeanimation_p.h"
+#include "private/qdeclarativeanimation_p_p.h"
#include <qdeclarativebinding_p.h>
#include <qdeclarativeglobal_p.h>
diff --git a/src/declarative/util/qdeclarativestate_p_p.h b/src/declarative/util/qdeclarativestate_p_p.h
index 558c99b..4a2af0f 100644
--- a/src/declarative/util/qdeclarativestate_p_p.h
+++ b/src/declarative/util/qdeclarativestate_p_p.h
@@ -53,10 +53,10 @@
// We mean it.
//
-#include "qdeclarativestate_p.h"
+#include "private/qdeclarativestate_p.h"
-#include "qdeclarativeanimation_p_p.h"
-#include "qdeclarativetransitionmanager_p_p.h"
+#include "private/qdeclarativeanimation_p_p.h"
+#include "private/qdeclarativetransitionmanager_p_p.h"
#include <private/qdeclarativeproperty_p.h>
#include <private/qdeclarativeguard_p.h>
diff --git a/src/declarative/util/qdeclarativestategroup.cpp b/src/declarative/util/qdeclarativestategroup.cpp
index 083e87d..ff78c60 100644
--- a/src/declarative/util/qdeclarativestategroup.cpp
+++ b/src/declarative/util/qdeclarativestategroup.cpp
@@ -39,10 +39,10 @@
**
****************************************************************************/
-#include "qdeclarativestategroup_p.h"
+#include "private/qdeclarativestategroup_p.h"
-#include "qdeclarativetransition_p.h"
-#include "qdeclarativestate_p_p.h"
+#include "private/qdeclarativetransition_p.h"
+#include "private/qdeclarativestate_p_p.h"
#include <qdeclarativebinding_p.h>
#include <qdeclarativeglobal_p.h>
@@ -69,6 +69,7 @@ public:
static void append_state(QDeclarativeListProperty<QDeclarativeState> *list, QDeclarativeState *state);
static int count_state(QDeclarativeListProperty<QDeclarativeState> *list);
static QDeclarativeState *at_state(QDeclarativeListProperty<QDeclarativeState> *list, int index);
+ static void clear_states(QDeclarativeListProperty<QDeclarativeState> *list);
QList<QDeclarativeState *> states;
QList<QDeclarativeTransition *> transitions;
@@ -150,7 +151,8 @@ QDeclarativeListProperty<QDeclarativeState> QDeclarativeStateGroup::statesProper
Q_D(QDeclarativeStateGroup);
return QDeclarativeListProperty<QDeclarativeState>(this, &d->states, &QDeclarativeStateGroupPrivate::append_state,
&QDeclarativeStateGroupPrivate::count_state,
- &QDeclarativeStateGroupPrivate::at_state);
+ &QDeclarativeStateGroupPrivate::at_state,
+ &QDeclarativeStateGroupPrivate::clear_states);
}
void QDeclarativeStateGroupPrivate::append_state(QDeclarativeListProperty<QDeclarativeState> *list, QDeclarativeState *state)
@@ -175,6 +177,16 @@ QDeclarativeState *QDeclarativeStateGroupPrivate::at_state(QDeclarativeListPrope
return _this->d_func()->states.at(index);
}
+void QDeclarativeStateGroupPrivate::clear_states(QDeclarativeListProperty<QDeclarativeState> *list)
+{
+ QDeclarativeStateGroup *_this = static_cast<QDeclarativeStateGroup *>(list->object);
+ _this->d_func()->setCurrentStateInternal(QString(), true);
+ for (int i = 0; i < _this->d_func()->states.count(); ++i) {
+ _this->d_func()->states.at(i)->setStateGroup(0);
+ }
+ _this->d_func()->states.clear();
+}
+
/*!
\qmlproperty list<Transition> StateGroup::transitions
This property holds a list of transitions defined by the state group.
@@ -206,13 +218,11 @@ QDeclarativeListProperty<QDeclarativeTransition> QDeclarativeStateGroup::transit
example:
\qml
- Script {
- function toggle() {
- if (button.state == 'On')
- button.state = 'Off';
- else
- button.state = 'On';
- }
+ function toggle() {
+ if (button.state == 'On')
+ button.state = 'Off';
+ else
+ button.state = 'On';
}
\endqml
diff --git a/src/declarative/util/qdeclarativestategroup_p.h b/src/declarative/util/qdeclarativestategroup_p.h
index 9650199..cac23f4 100644
--- a/src/declarative/util/qdeclarativestategroup_p.h
+++ b/src/declarative/util/qdeclarativestategroup_p.h
@@ -42,7 +42,7 @@
#ifndef QDECLARATIVESTATEGROUP_H
#define QDECLARATIVESTATEGROUP_H
-#include "qdeclarativestate_p.h"
+#include "private/qdeclarativestate_p.h"
QT_BEGIN_HEADER
diff --git a/src/declarative/util/qdeclarativestateoperations.cpp b/src/declarative/util/qdeclarativestateoperations.cpp
index 0bc81ee..2cc1fcc 100644
--- a/src/declarative/util/qdeclarativestateoperations.cpp
+++ b/src/declarative/util/qdeclarativestateoperations.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativestateoperations_p.h"
+#include "private/qdeclarativestateoperations_p.h"
#include <qdeclarative.h>
#include <qdeclarativecontext.h>
@@ -609,209 +609,343 @@ QString QDeclarativeStateChangeScript::typeName() const
For more information on anchors see \l {anchor-layout}{Anchor Layouts}.
*/
-
-
-class QDeclarativeAnchorChangesPrivate : public QObjectPrivate
+class QDeclarativeAnchorSetPrivate : public QObjectPrivate
{
+ Q_DECLARE_PUBLIC(QDeclarativeAnchorSet)
public:
- QDeclarativeAnchorChangesPrivate() : target(0) {}
+ QDeclarativeAnchorSetPrivate()
+ : usedAnchors(0), fill(0),
+ centerIn(0)/*, leftMargin(0), rightMargin(0), topMargin(0), bottomMargin(0),
+ margins(0), vCenterOffset(0), hCenterOffset(0), baselineOffset(0)*/
+ {
+ }
- QDeclarativeItem *target;
- QString resetString;
+ QDeclarativeAnchors::UsedAnchors usedAnchors;
+ //### change to QDeclarativeAnchors::UsedAnchors resetAnchors
QStringList resetList;
+ QDeclarativeItem *fill;
+ QDeclarativeItem *centerIn;
+
QDeclarativeAnchorLine left;
QDeclarativeAnchorLine right;
- QDeclarativeAnchorLine horizontalCenter;
QDeclarativeAnchorLine top;
QDeclarativeAnchorLine bottom;
- QDeclarativeAnchorLine verticalCenter;
+ QDeclarativeAnchorLine vCenter;
+ QDeclarativeAnchorLine hCenter;
QDeclarativeAnchorLine baseline;
- QDeclarativeAnchorLine origLeft;
- QDeclarativeAnchorLine origRight;
- QDeclarativeAnchorLine origHCenter;
- QDeclarativeAnchorLine origTop;
- QDeclarativeAnchorLine origBottom;
- QDeclarativeAnchorLine origVCenter;
- QDeclarativeAnchorLine origBaseline;
-
- QDeclarativeAnchorLine rewindLeft;
- QDeclarativeAnchorLine rewindRight;
- QDeclarativeAnchorLine rewindHCenter;
- QDeclarativeAnchorLine rewindTop;
- QDeclarativeAnchorLine rewindBottom;
- QDeclarativeAnchorLine rewindVCenter;
- QDeclarativeAnchorLine rewindBaseline;
+ /*qreal leftMargin;
+ qreal rightMargin;
+ qreal topMargin;
+ qreal bottomMargin;
+ qreal margins;
+ qreal vCenterOffset;
+ qreal hCenterOffset;
+ qreal baselineOffset;*/
+};
- qreal fromX;
- qreal fromY;
- qreal fromWidth;
- qreal fromHeight;
+QDeclarativeAnchorSet::QDeclarativeAnchorSet(QObject *parent)
+ : QObject(*new QDeclarativeAnchorSetPrivate, parent)
+{
+}
- qreal toX;
- qreal toY;
- qreal toWidth;
- qreal toHeight;
+QDeclarativeAnchorSet::~QDeclarativeAnchorSet()
+{
+}
- qreal rewindX;
- qreal rewindY;
- qreal rewindWidth;
- qreal rewindHeight;
+QDeclarativeAnchorLine QDeclarativeAnchorSet::top() const
+{
+ Q_D(const QDeclarativeAnchorSet);
+ return d->top;
+}
- bool applyOrigLeft;
- bool applyOrigRight;
- bool applyOrigHCenter;
- bool applyOrigTop;
- bool applyOrigBottom;
- bool applyOrigVCenter;
- bool applyOrigBaseline;
-};
+void QDeclarativeAnchorSet::setTop(const QDeclarativeAnchorLine &edge)
+{
+ Q_D(QDeclarativeAnchorSet);
+ d->usedAnchors |= QDeclarativeAnchors::HasTopAnchor;
+ d->top = edge;
+}
-/*!
- \qmlproperty Item AnchorChanges::target
- This property holds the Item whose anchors will change
-*/
+void QDeclarativeAnchorSet::resetTop()
+{
+ Q_D(QDeclarativeAnchorSet);
+ d->usedAnchors &= ~QDeclarativeAnchors::HasTopAnchor;
+ d->top = QDeclarativeAnchorLine();
+ d->resetList << QLatin1String("top");
+}
-QDeclarativeAnchorChanges::QDeclarativeAnchorChanges(QObject *parent)
- : QDeclarativeStateOperation(*(new QDeclarativeAnchorChangesPrivate), parent)
+QDeclarativeAnchorLine QDeclarativeAnchorSet::bottom() const
{
+ Q_D(const QDeclarativeAnchorSet);
+ return d->bottom;
}
-QDeclarativeAnchorChanges::~QDeclarativeAnchorChanges()
+void QDeclarativeAnchorSet::setBottom(const QDeclarativeAnchorLine &edge)
{
+ Q_D(QDeclarativeAnchorSet);
+ d->usedAnchors |= QDeclarativeAnchors::HasBottomAnchor;
+ d->bottom = edge;
}
-QDeclarativeAnchorChanges::ActionList QDeclarativeAnchorChanges::actions()
+void QDeclarativeAnchorSet::resetBottom()
{
- QDeclarativeAction a;
- a.event = this;
- return ActionList() << a;
+ Q_D(QDeclarativeAnchorSet);
+ d->usedAnchors &= ~QDeclarativeAnchors::HasBottomAnchor;
+ d->bottom = QDeclarativeAnchorLine();
+ d->resetList << QLatin1String("bottom");
}
-QDeclarativeItem *QDeclarativeAnchorChanges::object() const
+QDeclarativeAnchorLine QDeclarativeAnchorSet::verticalCenter() const
{
- Q_D(const QDeclarativeAnchorChanges);
- return d->target;
+ Q_D(const QDeclarativeAnchorSet);
+ return d->vCenter;
}
-void QDeclarativeAnchorChanges::setObject(QDeclarativeItem *target)
+void QDeclarativeAnchorSet::setVerticalCenter(const QDeclarativeAnchorLine &edge)
{
- Q_D(QDeclarativeAnchorChanges);
- d->target = target;
+ Q_D(QDeclarativeAnchorSet);
+ d->usedAnchors |= QDeclarativeAnchors::HasVCenterAnchor;
+ d->vCenter = edge;
}
-QString QDeclarativeAnchorChanges::reset() const
+void QDeclarativeAnchorSet::resetVerticalCenter()
{
- Q_D(const QDeclarativeAnchorChanges);
- return d->resetString;
+ Q_D(QDeclarativeAnchorSet);
+ d->usedAnchors &= ~QDeclarativeAnchors::HasVCenterAnchor;
+ d->vCenter = QDeclarativeAnchorLine();
+ d->resetList << QLatin1String("verticalCenter");
}
-void QDeclarativeAnchorChanges::setReset(const QString &reset)
+QDeclarativeAnchorLine QDeclarativeAnchorSet::baseline() const
{
- Q_D(QDeclarativeAnchorChanges);
- d->resetString = reset;
- d->resetList = d->resetString.split(QLatin1Char(','));
- for (int i = 0; i < d->resetList.count(); ++i)
- d->resetList[i] = d->resetList.at(i).trimmed();
+ Q_D(const QDeclarativeAnchorSet);
+ return d->baseline;
}
-/*!
- \qmlproperty AnchorLine AnchorChanges::left
- \qmlproperty AnchorLine AnchorChanges::right
- \qmlproperty AnchorLine AnchorChanges::horizontalCenter
- \qmlproperty AnchorLine AnchorChanges::top
- \qmlproperty AnchorLine AnchorChanges::bottom
- \qmlproperty AnchorLine AnchorChanges::verticalCenter
- \qmlproperty AnchorLine AnchorChanges::baseline
+void QDeclarativeAnchorSet::setBaseline(const QDeclarativeAnchorLine &edge)
+{
+ Q_D(QDeclarativeAnchorSet);
+ d->usedAnchors |= QDeclarativeAnchors::HasBaselineAnchor;
+ d->baseline = edge;
+}
- These properties change the respective anchors of the item.
-*/
+void QDeclarativeAnchorSet::resetBaseline()
+{
+ Q_D(QDeclarativeAnchorSet);
+ d->usedAnchors &= ~QDeclarativeAnchors::HasBaselineAnchor;
+ d->baseline = QDeclarativeAnchorLine();
+ d->resetList << QLatin1String("baseline");
+}
-QDeclarativeAnchorLine QDeclarativeAnchorChanges::left() const
+QDeclarativeAnchorLine QDeclarativeAnchorSet::left() const
{
- Q_D(const QDeclarativeAnchorChanges);
+ Q_D(const QDeclarativeAnchorSet);
return d->left;
}
-void QDeclarativeAnchorChanges::setLeft(const QDeclarativeAnchorLine &edge)
+void QDeclarativeAnchorSet::setLeft(const QDeclarativeAnchorLine &edge)
{
- Q_D(QDeclarativeAnchorChanges);
+ Q_D(QDeclarativeAnchorSet);
+ d->usedAnchors |= QDeclarativeAnchors::HasLeftAnchor;
d->left = edge;
}
-QDeclarativeAnchorLine QDeclarativeAnchorChanges::right() const
+void QDeclarativeAnchorSet::resetLeft()
{
- Q_D(const QDeclarativeAnchorChanges);
+ Q_D(QDeclarativeAnchorSet);
+ d->usedAnchors &= ~QDeclarativeAnchors::HasLeftAnchor;
+ d->left = QDeclarativeAnchorLine();
+ d->resetList << QLatin1String("left");
+}
+
+QDeclarativeAnchorLine QDeclarativeAnchorSet::right() const
+{
+ Q_D(const QDeclarativeAnchorSet);
return d->right;
}
-void QDeclarativeAnchorChanges::setRight(const QDeclarativeAnchorLine &edge)
+void QDeclarativeAnchorSet::setRight(const QDeclarativeAnchorLine &edge)
{
- Q_D(QDeclarativeAnchorChanges);
+ Q_D(QDeclarativeAnchorSet);
+ d->usedAnchors |= QDeclarativeAnchors::HasRightAnchor;
d->right = edge;
}
-QDeclarativeAnchorLine QDeclarativeAnchorChanges::horizontalCenter() const
+void QDeclarativeAnchorSet::resetRight()
{
- Q_D(const QDeclarativeAnchorChanges);
- return d->horizontalCenter;
+ Q_D(QDeclarativeAnchorSet);
+ d->usedAnchors &= ~QDeclarativeAnchors::HasRightAnchor;
+ d->right = QDeclarativeAnchorLine();
+ d->resetList << QLatin1String("right");
}
-void QDeclarativeAnchorChanges::setHorizontalCenter(const QDeclarativeAnchorLine &edge)
+QDeclarativeAnchorLine QDeclarativeAnchorSet::horizontalCenter() const
{
- Q_D(QDeclarativeAnchorChanges);
- d->horizontalCenter = edge;
+ Q_D(const QDeclarativeAnchorSet);
+ return d->hCenter;
}
-QDeclarativeAnchorLine QDeclarativeAnchorChanges::top() const
+void QDeclarativeAnchorSet::setHorizontalCenter(const QDeclarativeAnchorLine &edge)
{
- Q_D(const QDeclarativeAnchorChanges);
- return d->top;
+ Q_D(QDeclarativeAnchorSet);
+ d->usedAnchors |= QDeclarativeAnchors::HasHCenterAnchor;
+ d->hCenter = edge;
}
-void QDeclarativeAnchorChanges::setTop(const QDeclarativeAnchorLine &edge)
+void QDeclarativeAnchorSet::resetHorizontalCenter()
{
- Q_D(QDeclarativeAnchorChanges);
- d->top = edge;
+ Q_D(QDeclarativeAnchorSet);
+ d->usedAnchors &= ~QDeclarativeAnchors::HasHCenterAnchor;
+ d->hCenter = QDeclarativeAnchorLine();
+ d->resetList << QLatin1String("horizontalCenter");
}
-QDeclarativeAnchorLine QDeclarativeAnchorChanges::bottom() const
+QDeclarativeItem *QDeclarativeAnchorSet::fill() const
{
- Q_D(const QDeclarativeAnchorChanges);
- return d->bottom;
+ Q_D(const QDeclarativeAnchorSet);
+ return d->fill;
}
-void QDeclarativeAnchorChanges::setBottom(const QDeclarativeAnchorLine &edge)
+void QDeclarativeAnchorSet::setFill(QDeclarativeItem *f)
{
- Q_D(QDeclarativeAnchorChanges);
- d->bottom = edge;
+ Q_D(QDeclarativeAnchorSet);
+ d->fill = f;
}
-QDeclarativeAnchorLine QDeclarativeAnchorChanges::verticalCenter() const
+void QDeclarativeAnchorSet::resetFill()
{
- Q_D(const QDeclarativeAnchorChanges);
- return d->verticalCenter;
+ setFill(0);
+}
+
+QDeclarativeItem *QDeclarativeAnchorSet::centerIn() const
+{
+ Q_D(const QDeclarativeAnchorSet);
+ return d->centerIn;
}
-void QDeclarativeAnchorChanges::setVerticalCenter(const QDeclarativeAnchorLine &edge)
+void QDeclarativeAnchorSet::setCenterIn(QDeclarativeItem* c)
+{
+ Q_D(QDeclarativeAnchorSet);
+ d->centerIn = c;
+}
+
+void QDeclarativeAnchorSet::resetCenterIn()
+{
+ setCenterIn(0);
+}
+
+
+class QDeclarativeAnchorChangesPrivate : public QObjectPrivate
+{
+public:
+ QDeclarativeAnchorChangesPrivate()
+ : target(0), anchorSet(new QDeclarativeAnchorSet) {}
+ ~QDeclarativeAnchorChangesPrivate() { delete anchorSet; }
+
+ QDeclarativeItem *target;
+ QDeclarativeAnchorSet *anchorSet;
+
+ QDeclarativeAnchorLine origLeft;
+ QDeclarativeAnchorLine origRight;
+ QDeclarativeAnchorLine origHCenter;
+ QDeclarativeAnchorLine origTop;
+ QDeclarativeAnchorLine origBottom;
+ QDeclarativeAnchorLine origVCenter;
+ QDeclarativeAnchorLine origBaseline;
+
+ QDeclarativeAnchorLine rewindLeft;
+ QDeclarativeAnchorLine rewindRight;
+ QDeclarativeAnchorLine rewindHCenter;
+ QDeclarativeAnchorLine rewindTop;
+ QDeclarativeAnchorLine rewindBottom;
+ QDeclarativeAnchorLine rewindVCenter;
+ QDeclarativeAnchorLine rewindBaseline;
+
+ qreal fromX;
+ qreal fromY;
+ qreal fromWidth;
+ qreal fromHeight;
+
+ qreal toX;
+ qreal toY;
+ qreal toWidth;
+ qreal toHeight;
+
+ qreal rewindX;
+ qreal rewindY;
+ qreal rewindWidth;
+ qreal rewindHeight;
+
+ bool applyOrigLeft;
+ bool applyOrigRight;
+ bool applyOrigHCenter;
+ bool applyOrigTop;
+ bool applyOrigBottom;
+ bool applyOrigVCenter;
+ bool applyOrigBaseline;
+};
+
+/*!
+ \qmlproperty Item AnchorChanges::target
+ This property holds the Item whose anchors will change
+*/
+
+QDeclarativeAnchorChanges::QDeclarativeAnchorChanges(QObject *parent)
+ : QDeclarativeStateOperation(*(new QDeclarativeAnchorChangesPrivate), parent)
+{
+}
+
+QDeclarativeAnchorChanges::~QDeclarativeAnchorChanges()
+{
+}
+
+QDeclarativeAnchorChanges::ActionList QDeclarativeAnchorChanges::actions()
+{
+ QDeclarativeAction a;
+ a.event = this;
+ return ActionList() << a;
+}
+
+QDeclarativeAnchorSet *QDeclarativeAnchorChanges::anchors()
{
Q_D(QDeclarativeAnchorChanges);
- d->verticalCenter = edge;
+ return d->anchorSet;
}
-QDeclarativeAnchorLine QDeclarativeAnchorChanges::baseline() const
+QDeclarativeItem *QDeclarativeAnchorChanges::object() const
{
Q_D(const QDeclarativeAnchorChanges);
- return d->baseline;
+ return d->target;
}
-void QDeclarativeAnchorChanges::setBaseline(const QDeclarativeAnchorLine &edge)
+void QDeclarativeAnchorChanges::setObject(QDeclarativeItem *target)
{
Q_D(QDeclarativeAnchorChanges);
- d->baseline = edge;
+ d->target = target;
}
+/*!
+ \qmlproperty AnchorLine AnchorChanges::anchors.left
+ \qmlproperty AnchorLine AnchorChanges::anchors.right
+ \qmlproperty AnchorLine AnchorChanges::anchors.horizontalCenter
+ \qmlproperty AnchorLine AnchorChanges::anchors.top
+ \qmlproperty AnchorLine AnchorChanges::anchors.bottom
+ \qmlproperty AnchorLine AnchorChanges::anchors.verticalCenter
+ \qmlproperty AnchorLine AnchorChanges::anchors.baseline
+
+ These properties change the respective anchors of the item.
+
+ To reset an anchor you can assign \c undefined:
+ \qml
+ AnchorChanges {
+ target: myItem
+ left: undefined //remove myItem's left anchor
+ right: otherItem.right
+ }
+ \endqml
+*/
+
void QDeclarativeAnchorChanges::execute()
{
Q_D(QDeclarativeAnchorChanges);
@@ -835,36 +969,36 @@ void QDeclarativeAnchorChanges::execute()
d->target->anchors()->setBaseline(d->origBaseline);
//reset any anchors that have been specified
- if (d->resetList.contains(QLatin1String("left")))
+ if (d->anchorSet->d_func()->resetList .contains(QLatin1String("left")))
d->target->anchors()->resetLeft();
- if (d->resetList.contains(QLatin1String("right")))
+ if (d->anchorSet->d_func()->resetList .contains(QLatin1String("right")))
d->target->anchors()->resetRight();
- if (d->resetList.contains(QLatin1String("horizontalCenter")))
+ if (d->anchorSet->d_func()->resetList .contains(QLatin1String("horizontalCenter")))
d->target->anchors()->resetHorizontalCenter();
- if (d->resetList.contains(QLatin1String("top")))
+ if (d->anchorSet->d_func()->resetList .contains(QLatin1String("top")))
d->target->anchors()->resetTop();
- if (d->resetList.contains(QLatin1String("bottom")))
+ if (d->anchorSet->d_func()->resetList .contains(QLatin1String("bottom")))
d->target->anchors()->resetBottom();
- if (d->resetList.contains(QLatin1String("verticalCenter")))
+ if (d->anchorSet->d_func()->resetList .contains(QLatin1String("verticalCenter")))
d->target->anchors()->resetVerticalCenter();
- if (d->resetList.contains(QLatin1String("baseline")))
+ if (d->anchorSet->d_func()->resetList .contains(QLatin1String("baseline")))
d->target->anchors()->resetBaseline();
//set any anchors that have been specified
- if (d->left.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->setLeft(d->left);
- if (d->right.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->setRight(d->right);
- if (d->horizontalCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->setHorizontalCenter(d->horizontalCenter);
- if (d->top.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->setTop(d->top);
- if (d->bottom.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->setBottom(d->bottom);
- if (d->verticalCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->setVerticalCenter(d->verticalCenter);
- if (d->baseline.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->setBaseline(d->baseline);
+ if (d->anchorSet->d_func()->left.anchorLine != QDeclarativeAnchorLine::Invalid)
+ d->target->anchors()->setLeft(d->anchorSet->d_func()->left);
+ if (d->anchorSet->d_func()->right.anchorLine != QDeclarativeAnchorLine::Invalid)
+ d->target->anchors()->setRight(d->anchorSet->d_func()->right);
+ if (d->anchorSet->d_func()->hCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
+ d->target->anchors()->setHorizontalCenter(d->anchorSet->d_func()->hCenter);
+ if (d->anchorSet->d_func()->top.anchorLine != QDeclarativeAnchorLine::Invalid)
+ d->target->anchors()->setTop(d->anchorSet->d_func()->top);
+ if (d->anchorSet->d_func()->bottom.anchorLine != QDeclarativeAnchorLine::Invalid)
+ d->target->anchors()->setBottom(d->anchorSet->d_func()->bottom);
+ if (d->anchorSet->d_func()->vCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
+ d->target->anchors()->setVerticalCenter(d->anchorSet->d_func()->vCenter);
+ if (d->anchorSet->d_func()->baseline.anchorLine != QDeclarativeAnchorLine::Invalid)
+ d->target->anchors()->setBaseline(d->anchorSet->d_func()->baseline);
}
bool QDeclarativeAnchorChanges::isReversable()
@@ -879,19 +1013,19 @@ void QDeclarativeAnchorChanges::reverse()
return;
//reset any anchors set by the state
- if (d->left.anchorLine != QDeclarativeAnchorLine::Invalid)
+ if (d->anchorSet->d_func()->left.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->resetLeft();
- if (d->right.anchorLine != QDeclarativeAnchorLine::Invalid)
+ if (d->anchorSet->d_func()->right.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->resetRight();
- if (d->horizontalCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
+ if (d->anchorSet->d_func()->hCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->resetHorizontalCenter();
- if (d->top.anchorLine != QDeclarativeAnchorLine::Invalid)
+ if (d->anchorSet->d_func()->top.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->resetTop();
- if (d->bottom.anchorLine != QDeclarativeAnchorLine::Invalid)
+ if (d->anchorSet->d_func()->bottom.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->resetBottom();
- if (d->verticalCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
+ if (d->anchorSet->d_func()->vCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->resetVerticalCenter();
- if (d->baseline.anchorLine != QDeclarativeAnchorLine::Invalid)
+ if (d->anchorSet->d_func()->baseline.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->resetBaseline();
//restore previous anchors
@@ -977,26 +1111,26 @@ void QDeclarativeAnchorChanges::copyOriginals(QDeclarativeActionEvent *other)
QDeclarativeAnchorChangesPrivate *acp = ac->d_func();
//probably also need to revert some things
- d->applyOrigLeft = (acp->left.anchorLine != QDeclarativeAnchorLine::Invalid ||
- acp->resetList.contains(QLatin1String("left")));
+ d->applyOrigLeft = (acp->anchorSet->d_func()->left.anchorLine != QDeclarativeAnchorLine::Invalid ||
+ acp->anchorSet->d_func()->resetList.contains(QLatin1String("left")));
- d->applyOrigRight = (acp->right.anchorLine != QDeclarativeAnchorLine::Invalid ||
- acp->resetList.contains(QLatin1String("right")));
+ d->applyOrigRight = (acp->anchorSet->d_func()->right.anchorLine != QDeclarativeAnchorLine::Invalid ||
+ acp->anchorSet->d_func()->resetList.contains(QLatin1String("right")));
- d->applyOrigHCenter = (acp->horizontalCenter.anchorLine != QDeclarativeAnchorLine::Invalid ||
- acp->resetList.contains(QLatin1String("horizontalCenter")));
+ d->applyOrigHCenter = (acp->anchorSet->d_func()->hCenter.anchorLine != QDeclarativeAnchorLine::Invalid ||
+ acp->anchorSet->d_func()->resetList.contains(QLatin1String("horizontalCenter")));
- d->applyOrigTop = (acp->top.anchorLine != QDeclarativeAnchorLine::Invalid ||
- acp->resetList.contains(QLatin1String("top")));
+ d->applyOrigTop = (acp->anchorSet->d_func()->top.anchorLine != QDeclarativeAnchorLine::Invalid ||
+ acp->anchorSet->d_func()->resetList.contains(QLatin1String("top")));
- d->applyOrigBottom = (acp->bottom.anchorLine != QDeclarativeAnchorLine::Invalid ||
- acp->resetList.contains(QLatin1String("bottom")));
+ d->applyOrigBottom = (acp->anchorSet->d_func()->bottom.anchorLine != QDeclarativeAnchorLine::Invalid ||
+ acp->anchorSet->d_func()->resetList.contains(QLatin1String("bottom")));
- d->applyOrigVCenter = (acp->verticalCenter.anchorLine != QDeclarativeAnchorLine::Invalid ||
- acp->resetList.contains(QLatin1String("verticalCenter")));
+ d->applyOrigVCenter = (acp->anchorSet->d_func()->vCenter.anchorLine != QDeclarativeAnchorLine::Invalid ||
+ acp->anchorSet->d_func()->resetList.contains(QLatin1String("verticalCenter")));
- d->applyOrigBaseline = (acp->baseline.anchorLine != QDeclarativeAnchorLine::Invalid ||
- acp->resetList.contains(QLatin1String("baseline")));
+ d->applyOrigBaseline = (acp->anchorSet->d_func()->baseline.anchorLine != QDeclarativeAnchorLine::Invalid ||
+ acp->anchorSet->d_func()->resetList.contains(QLatin1String("baseline")));
d->origLeft = ac->d_func()->origLeft;
d->origRight = ac->d_func()->origRight;
@@ -1034,35 +1168,35 @@ void QDeclarativeAnchorChanges::clearBindings()
d->target->anchors()->resetBaseline();
//reset any anchors that have been specified
- if (d->resetList.contains(QLatin1String("left")))
+ if (d->anchorSet->d_func()->resetList .contains(QLatin1String("left")))
d->target->anchors()->resetLeft();
- if (d->resetList.contains(QLatin1String("right")))
+ if (d->anchorSet->d_func()->resetList .contains(QLatin1String("right")))
d->target->anchors()->resetRight();
- if (d->resetList.contains(QLatin1String("horizontalCenter")))
+ if (d->anchorSet->d_func()->resetList .contains(QLatin1String("horizontalCenter")))
d->target->anchors()->resetHorizontalCenter();
- if (d->resetList.contains(QLatin1String("top")))
+ if (d->anchorSet->d_func()->resetList .contains(QLatin1String("top")))
d->target->anchors()->resetTop();
- if (d->resetList.contains(QLatin1String("bottom")))
+ if (d->anchorSet->d_func()->resetList .contains(QLatin1String("bottom")))
d->target->anchors()->resetBottom();
- if (d->resetList.contains(QLatin1String("verticalCenter")))
+ if (d->anchorSet->d_func()->resetList .contains(QLatin1String("verticalCenter")))
d->target->anchors()->resetVerticalCenter();
- if (d->resetList.contains(QLatin1String("baseline")))
+ if (d->anchorSet->d_func()->resetList .contains(QLatin1String("baseline")))
d->target->anchors()->resetBaseline();
//reset any anchors that we'll be setting in the state
- if (d->left.anchorLine != QDeclarativeAnchorLine::Invalid)
+ if (d->anchorSet->d_func()->left.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->resetLeft();
- if (d->right.anchorLine != QDeclarativeAnchorLine::Invalid)
+ if (d->anchorSet->d_func()->right.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->resetRight();
- if (d->horizontalCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
+ if (d->anchorSet->d_func()->hCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->resetHorizontalCenter();
- if (d->top.anchorLine != QDeclarativeAnchorLine::Invalid)
+ if (d->anchorSet->d_func()->top.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->resetTop();
- if (d->bottom.anchorLine != QDeclarativeAnchorLine::Invalid)
+ if (d->anchorSet->d_func()->bottom.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->resetBottom();
- if (d->verticalCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
+ if (d->anchorSet->d_func()->vCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->resetVerticalCenter();
- if (d->baseline.anchorLine != QDeclarativeAnchorLine::Invalid)
+ if (d->anchorSet->d_func()->baseline.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->resetBaseline();
}
diff --git a/src/declarative/util/qdeclarativestateoperations_p.h b/src/declarative/util/qdeclarativestateoperations_p.h
index 66a8717..d49ec63 100644
--- a/src/declarative/util/qdeclarativestateoperations_p.h
+++ b/src/declarative/util/qdeclarativestateoperations_p.h
@@ -42,7 +42,7 @@
#ifndef QDECLARATIVESTATEOPERATIONS_H
#define QDECLARATIVESTATEOPERATIONS_H
-#include "qdeclarativestate_p.h"
+#include "private/qdeclarativestate_p.h"
#include <qdeclarativeitem.h>
#include <private/qdeclarativeanchors_p.h>
@@ -143,54 +143,132 @@ public:
virtual void execute();
};
-class QDeclarativeAnchorChangesPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeAnchorChanges : public QDeclarativeStateOperation, public QDeclarativeActionEvent
+class QDeclarativeAnchorChanges;
+class QDeclarativeAnchorSetPrivate;
+class Q_AUTOTEST_EXPORT QDeclarativeAnchorSet : public QObject
{
Q_OBJECT
- Q_DECLARE_PRIVATE(QDeclarativeAnchorChanges)
- Q_PROPERTY(QDeclarativeItem *target READ object WRITE setObject)
- Q_PROPERTY(QString reset READ reset WRITE setReset)
- Q_PROPERTY(QDeclarativeAnchorLine left READ left WRITE setLeft)
- Q_PROPERTY(QDeclarativeAnchorLine right READ right WRITE setRight)
- Q_PROPERTY(QDeclarativeAnchorLine horizontalCenter READ horizontalCenter WRITE setHorizontalCenter)
- Q_PROPERTY(QDeclarativeAnchorLine top READ top WRITE setTop)
- Q_PROPERTY(QDeclarativeAnchorLine bottom READ bottom WRITE setBottom)
- Q_PROPERTY(QDeclarativeAnchorLine verticalCenter READ verticalCenter WRITE setVerticalCenter)
- Q_PROPERTY(QDeclarativeAnchorLine baseline READ baseline WRITE setBaseline)
+ Q_PROPERTY(QDeclarativeAnchorLine left READ left WRITE setLeft RESET resetLeft)
+ Q_PROPERTY(QDeclarativeAnchorLine right READ right WRITE setRight RESET resetRight)
+ Q_PROPERTY(QDeclarativeAnchorLine horizontalCenter READ horizontalCenter WRITE setHorizontalCenter RESET resetHorizontalCenter)
+ Q_PROPERTY(QDeclarativeAnchorLine top READ top WRITE setTop RESET resetTop)
+ Q_PROPERTY(QDeclarativeAnchorLine bottom READ bottom WRITE setBottom RESET resetBottom)
+ Q_PROPERTY(QDeclarativeAnchorLine verticalCenter READ verticalCenter WRITE setVerticalCenter RESET resetVerticalCenter)
+ Q_PROPERTY(QDeclarativeAnchorLine baseline READ baseline WRITE setBaseline RESET resetBaseline)
+ //Q_PROPERTY(QDeclarativeItem *fill READ fill WRITE setFill RESET resetFill)
+ //Q_PROPERTY(QDeclarativeItem *centerIn READ centerIn WRITE setCenterIn RESET resetCenterIn)
+
+ /*Q_PROPERTY(qreal margins READ margins WRITE setMargins NOTIFY marginsChanged)
+ Q_PROPERTY(qreal leftMargin READ leftMargin WRITE setLeftMargin NOTIFY leftMarginChanged)
+ Q_PROPERTY(qreal rightMargin READ rightMargin WRITE setRightMargin NOTIFY rightMarginChanged)
+ Q_PROPERTY(qreal horizontalCenterOffset READ horizontalCenterOffset WRITE setHorizontalCenterOffset NOTIFY horizontalCenterOffsetChanged())
+ Q_PROPERTY(qreal topMargin READ topMargin WRITE setTopMargin NOTIFY topMarginChanged)
+ Q_PROPERTY(qreal bottomMargin READ bottomMargin WRITE setBottomMargin NOTIFY bottomMarginChanged)
+ Q_PROPERTY(qreal verticalCenterOffset READ verticalCenterOffset WRITE setVerticalCenterOffset NOTIFY verticalCenterOffsetChanged())
+ Q_PROPERTY(qreal baselineOffset READ baselineOffset WRITE setBaselineOffset NOTIFY baselineOffsetChanged())*/
public:
- QDeclarativeAnchorChanges(QObject *parent=0);
- ~QDeclarativeAnchorChanges();
-
- virtual ActionList actions();
-
- QDeclarativeItem *object() const;
- void setObject(QDeclarativeItem *);
-
- QString reset() const;
- void setReset(const QString &);
+ QDeclarativeAnchorSet(QObject *parent=0);
+ virtual ~QDeclarativeAnchorSet();
QDeclarativeAnchorLine left() const;
void setLeft(const QDeclarativeAnchorLine &edge);
+ void resetLeft();
QDeclarativeAnchorLine right() const;
void setRight(const QDeclarativeAnchorLine &edge);
+ void resetRight();
QDeclarativeAnchorLine horizontalCenter() const;
void setHorizontalCenter(const QDeclarativeAnchorLine &edge);
+ void resetHorizontalCenter();
QDeclarativeAnchorLine top() const;
void setTop(const QDeclarativeAnchorLine &edge);
+ void resetTop();
QDeclarativeAnchorLine bottom() const;
void setBottom(const QDeclarativeAnchorLine &edge);
+ void resetBottom();
QDeclarativeAnchorLine verticalCenter() const;
void setVerticalCenter(const QDeclarativeAnchorLine &edge);
+ void resetVerticalCenter();
QDeclarativeAnchorLine baseline() const;
void setBaseline(const QDeclarativeAnchorLine &edge);
+ void resetBaseline();
+
+ QDeclarativeItem *fill() const;
+ void setFill(QDeclarativeItem *);
+ void resetFill();
+
+ QDeclarativeItem *centerIn() const;
+ void setCenterIn(QDeclarativeItem *);
+ void resetCenterIn();
+
+ /*qreal leftMargin() const;
+ void setLeftMargin(qreal);
+
+ qreal rightMargin() const;
+ void setRightMargin(qreal);
+
+ qreal horizontalCenterOffset() const;
+ void setHorizontalCenterOffset(qreal);
+
+ qreal topMargin() const;
+ void setTopMargin(qreal);
+
+ qreal bottomMargin() const;
+ void setBottomMargin(qreal);
+
+ qreal margins() const;
+ void setMargins(qreal);
+
+ qreal verticalCenterOffset() const;
+ void setVerticalCenterOffset(qreal);
+
+ qreal baselineOffset() const;
+ void setBaselineOffset(qreal);*/
+
+ QDeclarativeAnchors::UsedAnchors usedAnchors() const;
+
+/*Q_SIGNALS:
+ void leftMarginChanged();
+ void rightMarginChanged();
+ void topMarginChanged();
+ void bottomMarginChanged();
+ void marginsChanged();
+ void verticalCenterOffsetChanged();
+ void horizontalCenterOffsetChanged();
+ void baselineOffsetChanged();*/
+
+private:
+ friend class QDeclarativeAnchorChanges;
+ Q_DISABLE_COPY(QDeclarativeAnchorSet)
+ Q_DECLARE_PRIVATE(QDeclarativeAnchorSet)
+};
+
+class QDeclarativeAnchorChangesPrivate;
+class Q_DECLARATIVE_EXPORT QDeclarativeAnchorChanges : public QDeclarativeStateOperation, public QDeclarativeActionEvent
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QDeclarativeAnchorChanges)
+
+ Q_PROPERTY(QDeclarativeItem *target READ object WRITE setObject)
+ Q_PROPERTY(QDeclarativeAnchorSet *anchors READ anchors CONSTANT)
+
+public:
+ QDeclarativeAnchorChanges(QObject *parent=0);
+ ~QDeclarativeAnchorChanges();
+
+ virtual ActionList actions();
+
+ QDeclarativeAnchorSet *anchors();
+
+ QDeclarativeItem *object() const;
+ void setObject(QDeclarativeItem *);
virtual void execute();
virtual bool isReversable();
@@ -212,6 +290,7 @@ QT_END_NAMESPACE
QML_DECLARE_TYPE(QDeclarativeParentChange)
QML_DECLARE_TYPE(QDeclarativeStateChangeScript)
+QML_DECLARE_TYPE(QDeclarativeAnchorSet)
QML_DECLARE_TYPE(QDeclarativeAnchorChanges)
QT_END_HEADER
diff --git a/src/declarative/util/qdeclarativestyledtext.cpp b/src/declarative/util/qdeclarativestyledtext.cpp
index 461de12..babd71b 100644
--- a/src/declarative/util/qdeclarativestyledtext.cpp
+++ b/src/declarative/util/qdeclarativestyledtext.cpp
@@ -45,7 +45,7 @@
#include <QTextLayout>
#include <QDebug>
#include <qmath.h>
-#include "qdeclarativestyledtext_p.h"
+#include "private/qdeclarativestyledtext_p.h"
/*
QDeclarativeStyledText supports few tags:
diff --git a/src/declarative/util/qdeclarativesystempalette.cpp b/src/declarative/util/qdeclarativesystempalette.cpp
index d819c27..9bb3f69 100644
--- a/src/declarative/util/qdeclarativesystempalette.cpp
+++ b/src/declarative/util/qdeclarativesystempalette.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativesystempalette_p.h"
+#include "private/qdeclarativesystempalette_p.h"
#include <QApplication>
diff --git a/src/declarative/util/qdeclarativetimeline.cpp b/src/declarative/util/qdeclarativetimeline.cpp
index 8e133b6..656c62b 100644
--- a/src/declarative/util/qdeclarativetimeline.cpp
+++ b/src/declarative/util/qdeclarativetimeline.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativetimeline_p_p.h"
+#include "private/qdeclarativetimeline_p_p.h"
#include <QDebug>
#include <QMutex>
diff --git a/src/declarative/util/qdeclarativetimer.cpp b/src/declarative/util/qdeclarativetimer.cpp
index 104e3ae..76e6d5e 100644
--- a/src/declarative/util/qdeclarativetimer.cpp
+++ b/src/declarative/util/qdeclarativetimer.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativetimer_p.h"
+#include "private/qdeclarativetimer_p.h"
#include <QtCore/qcoreapplication.h>
#include <QtCore/qpauseanimation.h>
diff --git a/src/declarative/util/qdeclarativetransition.cpp b/src/declarative/util/qdeclarativetransition.cpp
index 4326a55..815dc4c 100644
--- a/src/declarative/util/qdeclarativetransition.cpp
+++ b/src/declarative/util/qdeclarativetransition.cpp
@@ -39,13 +39,13 @@
**
****************************************************************************/
-#include "qdeclarativestate_p.h"
-#include "qdeclarativestategroup_p.h"
-#include "qdeclarativestate_p_p.h"
-#include "qdeclarativestateoperations_p.h"
-#include "qdeclarativeanimation_p.h"
-#include "qdeclarativeanimation_p_p.h"
-#include "qdeclarativetransitionmanager_p_p.h"
+#include "private/qdeclarativestate_p.h"
+#include "private/qdeclarativestategroup_p.h"
+#include "private/qdeclarativestate_p_p.h"
+#include "private/qdeclarativestateoperations_p.h"
+#include "private/qdeclarativeanimation_p.h"
+#include "private/qdeclarativeanimation_p_p.h"
+#include "private/qdeclarativetransitionmanager_p_p.h"
#include <QParallelAnimationGroup>
@@ -116,9 +116,9 @@ void QDeclarativeTransitionPrivate::append_animation(QDeclarativeListProperty<QD
void ParallelAnimationWrapper::updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState)
{
QParallelAnimationGroup::updateState(newState, oldState);
- if (newState == Stopped &&
- ((direction() == QAbstractAnimation::Forward && currentLoopTime() == duration()) ||
- (direction() == QAbstractAnimation::Backward && currentLoopTime() == 0)))
+ if (newState == Stopped && (duration() == -1
+ || (direction() == QAbstractAnimation::Forward && currentLoopTime() == duration())
+ || (direction() == QAbstractAnimation::Backward && currentLoopTime() == 0)))
{
trans->complete();
}
diff --git a/src/declarative/util/qdeclarativetransition_p.h b/src/declarative/util/qdeclarativetransition_p.h
index 2f9e7b5..fc7a577 100644
--- a/src/declarative/util/qdeclarativetransition_p.h
+++ b/src/declarative/util/qdeclarativetransition_p.h
@@ -42,7 +42,7 @@
#ifndef QDECLARATIVETRANSITION_H
#define QDECLARATIVETRANSITION_H
-#include "qdeclarativestate_p.h"
+#include "private/qdeclarativestate_p.h"
#include <qdeclarative.h>
diff --git a/src/declarative/util/qdeclarativetransitionmanager.cpp b/src/declarative/util/qdeclarativetransitionmanager.cpp
index f07fb23..bc40377 100644
--- a/src/declarative/util/qdeclarativetransitionmanager.cpp
+++ b/src/declarative/util/qdeclarativetransitionmanager.cpp
@@ -39,9 +39,9 @@
**
****************************************************************************/
-#include "qdeclarativetransitionmanager_p_p.h"
+#include "private/qdeclarativetransitionmanager_p_p.h"
-#include "qdeclarativestate_p_p.h"
+#include "private/qdeclarativestate_p_p.h"
#include <qdeclarativebinding_p.h>
#include <qdeclarativeglobal_p.h>
diff --git a/src/declarative/util/qdeclarativetransitionmanager_p_p.h b/src/declarative/util/qdeclarativetransitionmanager_p_p.h
index d6e626e..4131391 100644
--- a/src/declarative/util/qdeclarativetransitionmanager_p_p.h
+++ b/src/declarative/util/qdeclarativetransitionmanager_p_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include "qdeclarativestateoperations_p.h"
+#include "private/qdeclarativestateoperations_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/util/qdeclarativeutilmodule.cpp b/src/declarative/util/qdeclarativeutilmodule.cpp
index d79c6ba..d4c72bd 100644
--- a/src/declarative/util/qdeclarativeutilmodule.cpp
+++ b/src/declarative/util/qdeclarativeutilmodule.cpp
@@ -39,36 +39,36 @@
**
****************************************************************************/
-#include "qdeclarativeutilmodule_p.h"
-#include "qdeclarativeanimation_p.h"
-#include "qdeclarativeanimation_p_p.h"
-#include "qdeclarativebehavior_p.h"
-#include "qdeclarativebind_p.h"
-#include "qdeclarativeconnections_p.h"
-#include "qdeclarativeeasefollow_p.h"
-#include "qdeclarativefontloader_p.h"
-#include "qdeclarativelistaccessor_p.h"
-#include "qdeclarativelistmodel_p.h"
-#include "qdeclarativenullablevalue_p_p.h"
-#include "qdeclarativeopenmetaobject_p.h"
-#include "qdeclarativepackage_p.h"
-#include "qdeclarativepixmapcache_p.h"
-#include "qdeclarativepropertychanges_p.h"
+#include "private/qdeclarativeutilmodule_p.h"
+#include "private/qdeclarativeanimation_p.h"
+#include "private/qdeclarativeanimation_p_p.h"
+#include "private/qdeclarativebehavior_p.h"
+#include "private/qdeclarativebind_p.h"
+#include "private/qdeclarativeconnections_p.h"
+#include "private/qdeclarativesmoothedanimation_p.h"
+#include "private/qdeclarativefontloader_p.h"
+#include "private/qdeclarativelistaccessor_p.h"
+#include "private/qdeclarativelistmodel_p.h"
+#include "private/qdeclarativenullablevalue_p_p.h"
+#include "private/qdeclarativeopenmetaobject_p.h"
+#include "private/qdeclarativepackage_p.h"
+#include "private/qdeclarativepixmapcache_p.h"
+#include "private/qdeclarativepropertychanges_p.h"
#include "qdeclarativepropertymap.h"
-#include "qdeclarativespringfollow_p.h"
-#include "qdeclarativestategroup_p.h"
-#include "qdeclarativestateoperations_p.h"
-#include "qdeclarativestate_p.h"
-#include "qdeclarativestate_p_p.h"
-#include "qdeclarativestyledtext_p.h"
-#include "qdeclarativesystempalette_p.h"
-#include "qdeclarativetimeline_p_p.h"
-#include "qdeclarativetimer_p.h"
-#include "qdeclarativetransitionmanager_p_p.h"
-#include "qdeclarativetransition_p.h"
+#include "private/qdeclarativespringfollow_p.h"
+#include "private/qdeclarativestategroup_p.h"
+#include "private/qdeclarativestateoperations_p.h"
+#include "private/qdeclarativestate_p.h"
+#include "private/qdeclarativestate_p_p.h"
+#include "private/qdeclarativestyledtext_p.h"
+#include "private/qdeclarativesystempalette_p.h"
+#include "private/qdeclarativetimeline_p_p.h"
+#include "private/qdeclarativetimer_p.h"
+#include "private/qdeclarativetransitionmanager_p_p.h"
+#include "private/qdeclarativetransition_p.h"
#include "qdeclarativeview.h"
#ifndef QT_NO_XMLPATTERNS
-#include "qdeclarativexmllistmodel_p.h"
+#include "private/qdeclarativexmllistmodel_p.h"
#endif
template<typename T>
@@ -111,7 +111,7 @@ void QDeclarativeUtilModule::defineModule()
qmlRegisterType<QDeclarativeBind>("Qt",4,6,"Binding");
qmlRegisterType<QDeclarativeColorAnimation>("Qt",4,6,"ColorAnimation");
qmlRegisterType<QDeclarativeConnections>("Qt",4,6,"Connections");
- qmlRegisterType<QDeclarativeEaseFollow>("Qt",4,6,"EaseFollow");
+ qmlRegisterType<QDeclarativeSmoothedAnimation>("Qt",4,6,"SmoothedAnimation");
qmlRegisterType<QDeclarativeFontLoader>("Qt",4,6,"FontLoader");
qmlRegisterType<QDeclarativeListElement>("Qt",4,6,"ListElement");
qmlRegisterType<QDeclarativeNumberAnimation>("Qt",4,6,"NumberAnimation");
@@ -140,6 +140,7 @@ void QDeclarativeUtilModule::defineModule()
qmlRegisterType<QDeclarativeAnchors>();
qmlRegisterType<QDeclarativeStateOperation>();
+ qmlRegisterType<QDeclarativeAnchorSet>();
qmlRegisterTypeEnums<QDeclarativeAbstractAnimation>("Animation");
diff --git a/src/declarative/util/qdeclarativeview.cpp b/src/declarative/util/qdeclarativeview.cpp
index d97fb5f..22a7873 100644
--- a/src/declarative/util/qdeclarativeview.cpp
+++ b/src/declarative/util/qdeclarativeview.cpp
@@ -157,6 +157,7 @@ void QDeclarativeViewPrivate::execute()
{
delete root;
delete component;
+ initialSize = QSize();
component = new QDeclarativeComponent(&engine, source, q);
if (!component->isLoading()) {
@@ -289,7 +290,6 @@ QDeclarativeView::~QDeclarativeView()
void QDeclarativeView::setSource(const QUrl& url)
{
d->source = url;
- d->engine.setBaseUrl(url);
d->execute();
}
@@ -448,8 +448,8 @@ void QDeclarativeView::setRootObject(QObject *obj)
d->root = item;
d->qmlRoot = item;
- connect(item, SIGNAL(widthChanged(qreal)), this, SLOT(sizeChanged()));
- connect(item, SIGNAL(heightChanged(qreal)), this, SLOT(sizeChanged()));
+ connect(item, SIGNAL(widthChanged()), this, SLOT(sizeChanged()));
+ connect(item, SIGNAL(heightChanged()), this, SLOT(sizeChanged()));
if (d->initialSize.height() <= 0 && d->qmlRoot->width() > 0)
d->initialSize.setWidth(d->qmlRoot->width());
if (d->initialSize.height() <= 0 && d->qmlRoot->height() > 0)
diff --git a/src/declarative/util/qdeclarativexmllistmodel.cpp b/src/declarative/util/qdeclarativexmllistmodel.cpp
index f7beeaa..b33af06 100644
--- a/src/declarative/util/qdeclarativexmllistmodel.cpp
+++ b/src/declarative/util/qdeclarativexmllistmodel.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qdeclarativexmllistmodel_p.h"
+#include "private/qdeclarativexmllistmodel_p.h"
#include <qdeclarativecontext.h>
#include <qdeclarativeengine.h>
@@ -57,6 +57,7 @@
#include <QBuffer>
#include <QNetworkRequest>
#include <QNetworkReply>
+#include <QTimer>
#include <private/qobject_p.h>
@@ -67,6 +68,8 @@ QT_BEGIN_NAMESPACE
typedef QPair<int, int> QDeclarativeXmlListRange;
+#define XMLLISTMODEL_CLEAR_ID 0
+
/*!
\qmlclass XmlRole QDeclarativeXmlListModelRole
\since 4.7
@@ -127,9 +130,10 @@ class QDeclarativeXmlQuery : public QThread
Q_OBJECT
public:
QDeclarativeXmlQuery(QObject *parent=0)
- : QThread(parent), m_quit(false), m_abortQueryId(-1), m_queryIds(0) {
+ : QThread(parent), m_quit(false), m_abortQueryId(-1), m_queryIds(XMLLISTMODEL_CLEAR_ID + 1) {
qRegisterMetaType<QDeclarativeXmlQueryResult>("QDeclarativeXmlQueryResult");
}
+
~QDeclarativeXmlQuery() {
m_mutex.lock();
m_quit = true;
@@ -173,22 +177,6 @@ public:
return job.queryId;
}
- QList<QList<QVariant> > modelData() {
- QMutexLocker locker(&m_mutex);
- return m_modelData;
- }
-
- QList<QDeclarativeXmlListRange> insertedItemRanges() {
- QMutexLocker locker(&m_mutex);
- return m_insertedItemRanges;
- }
-
- QList<QDeclarativeXmlListRange> removedItemRanges() {
- QMutexLocker locker(&m_mutex);
- return m_removedItemRanges;
- }
-
-
Q_SIGNALS:
void queryCompleted(const QDeclarativeXmlQueryResult &);
@@ -254,13 +242,10 @@ void QDeclarativeXmlQuery::doQueryJob()
query.setQuery(job.namespaces + job.query);
query.evaluateTo(&r);
- //qDebug() << r;
-
//always need a single root element
QByteArray xml = "<dummy:items xmlns:dummy=\"http://qtsotware.com/dummy\">\n" + r.toUtf8() + "</dummy:items>";
QBuffer b(&xml);
b.open(QIODevice::ReadOnly);
- //qDebug() << xml;
QString namespaces = QLatin1String("declare namespace dummy=\"http://qtsotware.com/dummy\";\n") + job.namespaces;
QString prefix = QLatin1String("doc($inputDocument)/dummy:items") +
@@ -278,7 +263,6 @@ void QDeclarativeXmlQuery::doQueryJob()
if (item.isAtomicValue())
count = item.toAtomicValue().toInt();
}
- //qDebug() << count;
job.data = xml;
m_prefix = namespaces + prefix + QLatin1Char('/');
@@ -552,7 +536,7 @@ QHash<int,QVariant> QDeclarativeXmlListModel::data(int index, const QList<int> &
for (int i = 0; i < roles.size(); ++i) {
int role = roles.at(i);
int roleIndex = d->roles.indexOf(role);
- rv.insert(role, roleIndex == -1 ? QVariant() : d->data.at(roleIndex).at(index));
+ rv.insert(role, roleIndex == -1 ? QVariant() : d->data.value(roleIndex).value(index));
}
return rv;
}
@@ -561,7 +545,7 @@ QVariant QDeclarativeXmlListModel::data(int index, int role) const
{
Q_D(const QDeclarativeXmlListModel);
int roleIndex = d->roles.indexOf(role);
- return (roleIndex == -1) ? QVariant() : d->data.at(roleIndex).at(index);
+ return (roleIndex == -1) ? QVariant() : d->data.value(roleIndex).value(index);
}
/*!
@@ -606,7 +590,8 @@ void QDeclarativeXmlListModel::setSource(const QUrl &src)
Q_D(QDeclarativeXmlListModel);
if (d->src != src) {
d->src = src;
- reload();
+ if (d->xml.isEmpty()) // src is only used if d->xml is not set
+ reload();
emit sourceChanged();
}
}
@@ -683,23 +668,13 @@ void QDeclarativeXmlListModel::setNamespaceDeclarations(const QString &declarati
/*!
\qmlproperty enum XmlListModel::status
+ Specifies the model loading status, which can be one of the following:
- This property holds the status of data source loading. It can be one of:
- \list
- \o Null - no data source has been set
- \o Ready - the data source has been loaded
- \o Loading - the data source is currently being loaded
- \o Error - an error occurred while loading the data source
- \endlist
-
- Note that a change in the status property does not cause anything to happen
- (although it reflects what has happened to the XmlListModel internally). If you wish
- to react to the change in status you need to do it yourself, for example in one
- of the following ways:
\list
- \o Create a state, so that a state change occurs, e.g. State{name: 'loaded'; when: xmlListModel.status = XmlListModel.Ready;}
- \o Do something inside the onStatusChanged signal handler, e.g. XmlListModel{id: xmlListModel; onStatusChanged: if(xmlListModel.status == XmlListModel.Ready) console.log('Loaded');}
- \o Bind to the status variable somewhere, e.g. Text{text: if(xmlListModel.status!=XmlListModel.Ready){'Not Loaded';}else{'Loaded';}}
+ \o Null - No XML data has been set for this model.
+ \o Ready - The XML data has been loaded into the model.
+ \o Loading - The model is in the process of reading and loading XML data.
+ \o Error - An error occurred while the model was loading.
\endlist
\sa progress
@@ -714,10 +689,17 @@ QDeclarativeXmlListModel::Status QDeclarativeXmlListModel::status() const
/*!
\qmlproperty real XmlListModel::progress
- This property holds the progress of data source loading, from 0.0 (nothing loaded)
- to 1.0 (finished).
+ This indicates the current progress of the downloading of the XML data
+ source. This value ranges from 0.0 (no data downloaded) to
+ 1.0 (all data downloaded). If the XML data is not from a remote source,
+ the progress becomes 1.0 as soon as the data is read.
+
+ Note that when the progress is 1.0, the XML data has been downloaded, but
+ it is yet to be loaded into the model at this point. Use the status
+ property to find out when the XML data has been read and loaded into
+ the model.
- \sa status
+ \sa status, source
*/
qreal QDeclarativeXmlListModel::progress() const
{
@@ -748,6 +730,8 @@ void QDeclarativeXmlListModel::componentComplete()
Otherwise, items are only added if the model does not already
contain items with matching key role values.
+
+ \sa XmlRole::isKey
*/
void QDeclarativeXmlListModel::reload()
{
@@ -759,27 +743,8 @@ void QDeclarativeXmlListModel::reload()
globalXmlQuery()->abort(d->queryId);
d->queryId = -1;
- int count = d->size;
- if (count < 0)
+ if (d->size < 0)
d->size = 0;
- bool hasKeys = false;
- for (int i=0; i<d->roleObjects.count(); i++) {
- if (d->roleObjects[i]->isKey()) {
- hasKeys = true;
- break;
- }
- }
- if (!hasKeys) {
- d->data.clear();
- d->size = 0;
- if (count > 0) {
- emit itemsRemoved(0, count);
- emit countChanged();
- }
- }
-
- if (d->src.isEmpty() && d->xml.isEmpty())
- return;
if (d->reply) {
d->reply->abort();
@@ -790,9 +755,19 @@ void QDeclarativeXmlListModel::reload()
if (!d->xml.isEmpty()) {
d->queryId = globalXmlQuery()->doQuery(d->query, d->namespaces, d->xml.toUtf8(), &d->roleObjects, d->keyRoleResultsCache);
d->progress = 1.0;
- d->status = Ready;
+ d->status = Loading;
+ emit progressChanged(d->progress);
+ emit statusChanged(d->status);
+ return;
+ }
+
+ if (d->src.isEmpty()) {
+ d->queryId = XMLLISTMODEL_CLEAR_ID;
+ d->progress = 1.0;
+ d->status = Loading;
emit progressChanged(d->progress);
emit statusChanged(d->status);
+ QTimer::singleShot(0, this, SLOT(dataCleared()));
return;
}
@@ -831,18 +806,33 @@ void QDeclarativeXmlListModel::requestFinished()
disconnect(d->reply, 0, this, 0);
d->reply->deleteLater();
d->reply = 0;
+
+ int count = this->count();
+ d->data.clear();
+ d->size = 0;
+ if (count > 0) {
+ emit itemsRemoved(0, count);
+ emit countChanged();
+ }
+
d->status = Error;
+ d->queryId = -1;
+ emit statusChanged(d->status);
} else {
- d->status = Ready;
QByteArray data = d->reply->readAll();
- d->queryId = globalXmlQuery()->doQuery(d->query, d->namespaces, data, &d->roleObjects, d->keyRoleResultsCache);
+ if (data.isEmpty()) {
+ d->queryId = XMLLISTMODEL_CLEAR_ID;
+ QTimer::singleShot(0, this, SLOT(dataCleared()));
+ } else {
+ d->queryId = globalXmlQuery()->doQuery(d->query, d->namespaces, data, &d->roleObjects, d->keyRoleResultsCache);
+ }
disconnect(d->reply, 0, this, 0);
d->reply->deleteLater();
d->reply = 0;
+
+ d->progress = 1.0;
+ emit progressChanged(d->progress);
}
- d->progress = 1.0;
- emit progressChanged(d->progress);
- emit statusChanged(d->status);
}
void QDeclarativeXmlListModel::requestProgress(qint64 received, qint64 total)
@@ -854,23 +844,58 @@ void QDeclarativeXmlListModel::requestProgress(qint64 received, qint64 total)
}
}
+void QDeclarativeXmlListModel::dataCleared()
+{
+ Q_D(QDeclarativeXmlListModel);
+ QDeclarativeXmlQueryResult r;
+ r.queryId = XMLLISTMODEL_CLEAR_ID;
+ r.size = 0;
+ r.removed << qMakePair(0, count());
+ r.keyRoleResultsCache = d->keyRoleResultsCache;
+ queryCompleted(r);
+}
+
void QDeclarativeXmlListModel::queryCompleted(const QDeclarativeXmlQueryResult &result)
{
Q_D(QDeclarativeXmlListModel);
if (result.queryId != d->queryId)
return;
+
+ int origCount = d->size;
bool sizeChanged = result.size != d->size;
+
d->size = result.size;
d->data = result.data;
d->keyRoleResultsCache = result.keyRoleResultsCache;
+ d->status = Ready;
+ d->queryId = -1;
+
+ bool hasKeys = false;
+ for (int i=0; i<d->roleObjects.count(); i++) {
+ if (d->roleObjects[i]->isKey()) {
+ hasKeys = true;
+ break;
+ }
+ }
+ if (!hasKeys) {
+ if (!(origCount == 0 && d->size == 0)) {
+ emit itemsRemoved(0, origCount);
+ emit itemsInserted(0, d->size);
+ emit countChanged();
+ }
+
+ } else {
- for (int i=0; i<result.removed.count(); i++)
- emit itemsRemoved(result.removed[i].first, result.removed[i].second);
- for (int i=0; i<result.inserted.count(); i++)
- emit itemsInserted(result.inserted[i].first, result.inserted[i].second);
+ for (int i=0; i<result.removed.count(); i++)
+ emit itemsRemoved(result.removed[i].first, result.removed[i].second);
+ for (int i=0; i<result.inserted.count(); i++)
+ emit itemsInserted(result.inserted[i].first, result.inserted[i].second);
- if (sizeChanged)
- emit countChanged();
+ if (sizeChanged)
+ emit countChanged();
+ }
+
+ emit statusChanged(d->status);
}
QT_END_NAMESPACE
diff --git a/src/declarative/util/qdeclarativexmllistmodel_p.h b/src/declarative/util/qdeclarativexmllistmodel_p.h
index 7bb0f0e..7b85476 100644
--- a/src/declarative/util/qdeclarativexmllistmodel_p.h
+++ b/src/declarative/util/qdeclarativexmllistmodel_p.h
@@ -117,7 +117,7 @@ public:
virtual void componentComplete();
Q_SIGNALS:
- void statusChanged(Status);
+ void statusChanged(QDeclarativeXmlListModel::Status);
void progressChanged(qreal progress);
void countChanged();
void sourceChanged();
@@ -135,6 +135,7 @@ public Q_SLOTS:
private Q_SLOTS:
void requestFinished();
void requestProgress(qint64,qint64);
+ void dataCleared();
void queryCompleted(const QDeclarativeXmlQueryResult &);
private:
diff --git a/src/declarative/util/util.pri b/src/declarative/util/util.pri
index f537806..4163596 100644
--- a/src/declarative/util/util.pri
+++ b/src/declarative/util/util.pri
@@ -8,7 +8,7 @@ SOURCES += \
$$PWD/qdeclarativeanimation.cpp \
$$PWD/qdeclarativesystempalette.cpp \
$$PWD/qdeclarativespringfollow.cpp \
- $$PWD/qdeclarativeeasefollow.cpp \
+ $$PWD/qdeclarativesmoothedanimation.cpp \
$$PWD/qdeclarativestate.cpp\
$$PWD/qdeclarativetransitionmanager.cpp \
$$PWD/qdeclarativestateoperations.cpp \
@@ -37,7 +37,8 @@ HEADERS += \
$$PWD/qdeclarativeanimation_p_p.h \
$$PWD/qdeclarativesystempalette_p.h \
$$PWD/qdeclarativespringfollow_p.h \
- $$PWD/qdeclarativeeasefollow_p.h \
+ $$PWD/qdeclarativesmoothedanimation_p.h \
+ $$PWD/qdeclarativesmoothedanimation_p_p.h \
$$PWD/qdeclarativestate_p.h\
$$PWD/qdeclarativestateoperations_p.h \
$$PWD/qdeclarativepropertychanges_p.h \
diff --git a/src/gui/dialogs/qdialog.cpp b/src/gui/dialogs/qdialog.cpp
index 4faa193..c9129c1 100644
--- a/src/gui/dialogs/qdialog.cpp
+++ b/src/gui/dialogs/qdialog.cpp
@@ -69,7 +69,6 @@ extern bool qt_wince_is_smartphone(); //is defined in qguifunctions_wce.cpp
# include "qfontdialog.h"
# include "qcolordialog.h"
# include "qwizard.h"
-# include "qmenubar.h"
#endif
#if defined(Q_WS_S60)
@@ -259,7 +258,7 @@ QT_BEGIN_NAMESPACE
QDialog::QDialog(QWidget *parent, Qt::WindowFlags f)
: QWidget(*new QDialogPrivate, parent,
- f | QFlag((f & Qt::WindowType_Mask) == 0 ? Qt::Dialog : 0))
+ f | ((f & Qt::WindowType_Mask) == 0 ? Qt::Dialog : Qt::WindowType(0)))
{
#ifdef Q_WS_WINCE
if (!qt_wince_is_smartphone())
@@ -296,7 +295,7 @@ QDialog::QDialog(QWidget *parent, const char *name, bool modal, Qt::WindowFlags
\internal
*/
QDialog::QDialog(QDialogPrivate &dd, QWidget *parent, Qt::WindowFlags f)
- : QWidget(dd, parent, f | QFlag((f & Qt::WindowType_Mask) == 0 ? Qt::Dialog : 0))
+ : QWidget(dd, parent, f | ((f & Qt::WindowType_Mask) == 0 ? Qt::Dialog : Qt::WindowType(0)))
{
#ifdef Q_WS_WINCE
if (!qt_wince_is_smartphone())
@@ -529,12 +528,6 @@ int QDialog::exec()
#endif //Q_WS_WINCE_WM
#ifdef Q_OS_SYMBIAN
-#ifndef QT_NO_MENUBAR
- QMenuBar *menuBar = 0;
- if (!findChild<QMenuBar *>())
- menuBar = new QMenuBar(this);
-#endif
-
if (qobject_cast<QFileDialog *>(this) || qobject_cast<QFontDialog *>(this) ||
qobject_cast<QColorDialog *>(this) || qobject_cast<QWizard *>(this))
showMaximized();
@@ -566,13 +559,6 @@ int QDialog::exec()
delete menuBar;
#endif //QT_NO_MENUBAR
#endif //Q_WS_WINCE_WM
-#ifdef Q_OS_SYMBIAN
-#ifndef QT_NO_MENUBAR
- else if (menuBar)
- delete menuBar;
-#endif //QT_NO_MENUBAR
-#endif //Q_OS_SYMBIAN
-
return res;
}
diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp
index ef2b223..3b5fb9f 100644
--- a/src/gui/dialogs/qfiledialog.cpp
+++ b/src/gui/dialogs/qfiledialog.cpp
@@ -723,9 +723,15 @@ void QFileDialog::setVisible(bool visible)
// Set WA_DontShowOnScreen so that QDialog::setVisible(visible) below
// updates the state correctly, but skips showing the non-native version:
setAttribute(Qt::WA_DontShowOnScreen);
+ //So the completer don't try to complete and therefore to show a popup
+ d->completer->setModel(0);
} else {
d->nativeDialogInUse = false;
setAttribute(Qt::WA_DontShowOnScreen, false);
+ if (d->proxyModel != 0)
+ d->completer->setModel(d->proxyModel);
+ else
+ d->completer->setModel(d->model);
}
}
diff --git a/src/gui/dialogs/qfilesystemmodel.cpp b/src/gui/dialogs/qfilesystemmodel.cpp
index 2f1933c..8a6190f 100644
--- a/src/gui/dialogs/qfilesystemmodel.cpp
+++ b/src/gui/dialogs/qfilesystemmodel.cpp
@@ -1373,6 +1373,16 @@ QModelIndex QFileSystemModel::setRootPath(const QString &newPath)
if (!showDrives && !newPathDir.exists())
return d->index(rootPath());
+ //We remove the watcher on the previous path
+ if (!rootPath().isEmpty() && rootPath() != QLatin1String(".")) {
+ //This remove the watcher for the old rootPath
+ d->fileInfoGatherer.removePath(rootPath());
+ //This line "marks" the node as dirty, so the next fetchMore
+ //call on the path will ask the gatherer to install a watcher again
+ //But it doesn't re-fetch everything
+ d->node(rootPath())->populatedChildren = false;
+ }
+
// We have a new valid root path
d->rootDir = newPathDir;
QModelIndex newRootIndex;
diff --git a/src/gui/dialogs/qmessagebox.cpp b/src/gui/dialogs/qmessagebox.cpp
index df8b525..fe25b0f 100644
--- a/src/gui/dialogs/qmessagebox.cpp
+++ b/src/gui/dialogs/qmessagebox.cpp
@@ -65,6 +65,10 @@
#include <QtGui/qfontmetrics.h>
#include <QtGui/qclipboard.h>
+#ifndef QT_NO_STYLE_S60
+#include <qs60style.h>
+#endif
+
#ifdef Q_WS_WINCE
extern bool qt_wince_is_mobile(); //defined in qguifunctions_wince.cpp
extern bool qt_wince_is_smartphone();//defined in qguifunctions_wince.cpp
@@ -383,6 +387,16 @@ void QMessageBoxPrivate::updateSize()
int height = (layout->hasHeightForWidth())
? layout->totalHeightForWidth(width)
: layout->totalMinimumSize().height();
+
+#ifndef QT_NO_STYLE_S60
+ QS60Style *s60Style = 0;
+ s60Style = qobject_cast<QS60Style *>(QApplication::style());
+
+ //use custom pixel metric to deduce the minimum height of the messagebox
+ if (s60Style)
+ height = qMax(height, s60Style->pixelMetric((QStyle::PixelMetric)PM_MessageBoxHeight));
+#endif
+
q->setFixedSize(width, height);
QCoreApplication::removePostedEvents(q, QEvent::LayoutRequest);
}
diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp
index 9a552cf..6f215cc 100644
--- a/src/gui/egl/qegl.cpp
+++ b/src/gui/egl/qegl.cpp
@@ -528,7 +528,7 @@ QEglProperties QEglContext::configProperties() const
return QEglProperties(config());
}
-#if !defined(EGL_KHR_image) && !defined(EGL_KHR_image_base)
+#if (defined(EGL_KHR_image) || defined(EGL_KHR_image_base)) && !defined(EGL_EGLEXT_PROTOTYPES)
_eglCreateImageKHR eglCreateImageKHR = 0;
_eglDestroyImageKHR eglDestroyImageKHR = 0;
#endif
@@ -556,10 +556,12 @@ EGLDisplay QEgl::display()
}
// Resolve the egl extension function pointers:
+#if (defined(EGL_KHR_image) || defined(EGL_KHR_image_base)) && !defined(EGL_EGLEXT_PROTOTYPES)
if (QEgl::hasExtension("EGL_KHR_image") || QEgl::hasExtension("EGL_KHR_image_base")) {
eglCreateImageKHR = (_eglCreateImageKHR) eglGetProcAddress("eglCreateImageKHR");
eglDestroyImageKHR = (_eglDestroyImageKHR) eglGetProcAddress("eglDestroyImageKHR");
}
+#endif
}
return dpy;
diff --git a/src/gui/egl/qegl_p.h b/src/gui/egl/qegl_p.h
index c659796..540cd3d 100644
--- a/src/gui/egl/qegl_p.h
+++ b/src/gui/egl/qegl_p.h
@@ -110,20 +110,49 @@ QT_BEGIN_NAMESPACE
#define EGLAPIENTRY
#endif
-#if !defined(EGL_KHR_image) && !defined(EGL_KHR_image_base)
+// Try to get some info to debug the symbian build failues:
+#ifdef Q_OS_SYMBIAN
+
+#ifdef EGL_KHR_image
+#warning "EGL_KHR_image is defined"
+#else
+#warning "EGL_KHR_image is NOT defined"
+#endif
+
+#ifdef EGL_KHR_image_base
+#warning "EGL_KHR_image_base is defined"
+#else
+#warning "EGL_KHR_image_base is NOT defined"
+#endif
+
+#ifdef EGL_EGLEXT_PROTOTYPES
+#warning "EGL_EGLEXT_PROTOTYPES is defined"
+#else
+#warning "EGL_EGLEXT_PROTOTYPES NOT not defined"
+#endif
+
+#endif
+
+// Declare/define the bits of EGL_KHR_image_base we need:
+#if !defined(EGL_KHR_image) && !defined(EGL_KHR_image_base)
typedef void *EGLImageKHR;
#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0)
#define EGL_IMAGE_PRESERVED_KHR 0x30D2
+#endif
+// It is possible that something has included eglext.h (like Symbian 10.1's broken egl.h), in
+// which case, EGL_KHR_image/EGL_KHR_image_base will be defined. They may have also defined
+// the actual function prototypes, but generally EGL_EGLEXT_PROTOTYPES will be defined in that
+// case and we shouldn't re-define them here.
+#if (defined(EGL_KHR_image) || defined(EGL_KHR_image_base)) && !defined(EGL_EGLEXT_PROTOTYPES)
typedef EGLImageKHR (EGLAPIENTRY *_eglCreateImageKHR)(EGLDisplay, EGLContext, EGLenum, EGLClientBuffer, EGLint*);
typedef EGLBoolean (EGLAPIENTRY *_eglDestroyImageKHR)(EGLDisplay, EGLImageKHR);
// Defined in qegl.cpp:
extern Q_GUI_EXPORT _eglCreateImageKHR eglCreateImageKHR;
extern Q_GUI_EXPORT _eglDestroyImageKHR eglDestroyImageKHR;
-
-#endif // !defined(EGL_KHR_image) && !defined(EGL_KHR_image_base)
+#endif // (defined(EGL_KHR_image) || defined(EGL_KHR_image_base)) && !defined(EGL_EGLEXT_PROTOTYPES)
#if !defined(EGL_KHR_image) && !defined(EGL_KHR_image_pixmap)
#define EGL_NATIVE_PIXMAP_KHR 0x30B0
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 66b262c..d6daf4d 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -731,6 +731,9 @@
#include <QtGui/qevent.h>
#include <QtGui/qinputcontext.h>
#include <QtGui/qgraphicseffect.h>
+#ifndef QT_NO_ACCESSIBILITY
+# include "qaccessible.h"
+#endif
#include <private/qgraphicsitem_p.h>
#include <private/qgraphicswidget_p.h>
@@ -738,6 +741,7 @@
#include <private/qtextdocumentlayout_p.h>
#include <private/qtextengine_p.h>
#include <private/qwidget_p.h>
+#include <private/qapplication_p.h>
#ifdef Q_WS_X11
#include <private/qt_x11_p.h>
@@ -1179,6 +1183,9 @@ void QGraphicsItemPrivate::setParentItemHelper(QGraphicsItem *newParent, const Q
}
}
+ // Resolve depth.
+ invalidateDepthRecursively();
+
if ((parent = newParent)) {
if (parent->d_func()->scene && parent->d_func()->scene != scene) {
// Move this item to its new parent's scene
@@ -1229,8 +1236,6 @@ void QGraphicsItemPrivate::setParentItemHelper(QGraphicsItem *newParent, const Q
}
}
- // Resolve depth.
- invalidateDepthRecursively();
dirtySceneTransform = 1;
// Restore the sub focus chain.
@@ -1931,7 +1936,8 @@ void QGraphicsItem::setCacheMode(CacheMode mode, const QSize &logicalCacheSize)
d_ptr->cacheMode = mode;
bool noVisualChange = (mode == NoCache && lastMode == NoCache)
|| (mode == NoCache && lastMode == DeviceCoordinateCache)
- || (mode == DeviceCoordinateCache && lastMode == NoCache);
+ || (mode == DeviceCoordinateCache && lastMode == NoCache)
+ || (mode == DeviceCoordinateCache && lastMode == DeviceCoordinateCache);
if (mode == NoCache) {
d_ptr->removeExtraItemCache();
} else {
@@ -2225,8 +2231,12 @@ void QGraphicsItemPrivate::setVisibleHelper(bool newVisible, bool explicitly, bo
QGraphicsItemCache *c = (QGraphicsItemCache *)qVariantValue<void *>(extra(ExtraCacheData));
if (c)
c->purge();
- if (scene)
+ if (scene) {
+#ifndef QT_NO_GRAPHICSEFFECT
+ invalidateParentGraphicsEffectsRecursively();
+#endif //QT_NO_GRAPHICSEFFECT
scene->d_func()->markDirty(q_ptr, QRectF(), /*invalidateChildren=*/false, /*force=*/true);
+ }
}
// Certain properties are dropped as an item becomes invisible.
@@ -3625,7 +3635,7 @@ void QGraphicsItem::setPos(const QPointF &pos)
return;
// Update and repositition.
- if (!(d_ptr->flags & ItemSendsGeometryChanges) && !(d_ptr->flags & ItemSendsScenePositionChanges)) {
+ if (!(d_ptr->flags & (ItemSendsGeometryChanges | ItemSendsScenePositionChanges))) {
d_ptr->setPosHelper(pos);
return;
}
@@ -3918,6 +3928,22 @@ void QGraphicsItem::setTransformations(const QList<QGraphicsTransform *> &transf
/*!
\internal
*/
+void QGraphicsItemPrivate::prependGraphicsTransform(QGraphicsTransform *t)
+{
+ if (!transformData)
+ transformData = new QGraphicsItemPrivate::TransformData;
+ if (!transformData->graphicsTransforms.contains(t))
+ transformData->graphicsTransforms.prepend(t);
+
+ Q_Q(QGraphicsItem);
+ t->d_func()->setItem(q);
+ transformData->onlyTransform = false;
+ dirtySceneTransform = 1;
+}
+
+/*!
+ \internal
+*/
void QGraphicsItemPrivate::appendGraphicsTransform(QGraphicsTransform *t)
{
if (!transformData)
@@ -5325,6 +5351,8 @@ void QGraphicsItemPrivate::addChild(QGraphicsItem *child)
needSortChildren = 1; // ### maybe 0
child->d_ptr->siblingIndex = children.size();
children.append(child);
+ if (isObject)
+ emit static_cast<QGraphicsObject *>(q_ptr)->childrenChanged();
}
/*!
@@ -5347,6 +5375,8 @@ void QGraphicsItemPrivate::removeChild(QGraphicsItem *child)
// the child is not guaranteed to be at the index after the list is sorted.
// (see ensureSortedChildren()).
child->d_ptr->siblingIndex = -1;
+ if (isObject)
+ emit static_cast<QGraphicsObject *>(q_ptr)->childrenChanged();
}
/*!
@@ -7082,7 +7112,8 @@ void QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
// Root items that ignore transformations need to
// calculate their diff by mapping viewport coordinates
// directly to parent coordinates.
- QTransform viewToParentTransform = (item->transform().translate(item->d_ptr->pos.x(), item->d_ptr->pos.y()))
+ // COMBINE
+ QTransform viewToParentTransform = (item->d_func()->transformData->computedFullTransform().translate(item->d_ptr->pos.x(), item->d_ptr->pos.y()))
* (item->sceneTransform() * view->viewportTransform()).inverted();
currentParentPos = viewToParentTransform.map(QPointF(view->mapFromGlobal(event->screenPos())));
buttonDownParentPos = viewToParentTransform.map(QPointF(view->mapFromGlobal(event->buttonDownScreenPos(Qt::LeftButton))));
@@ -7279,6 +7310,31 @@ void QGraphicsItem::setInputMethodHints(Qt::InputMethodHints hints)
}
/*!
+ Updates the item's micro focus.
+
+ \since 4.7
+
+ \sa QInputContext
+*/
+void QGraphicsItem::updateMicroFocus()
+{
+#if !defined(QT_NO_IM) && (defined(Q_WS_X11) || defined(Q_WS_QWS) || defined(Q_OS_SYMBIAN))
+ if (QWidget *fw = qApp->focusWidget()) {
+ if (qt_widget_private(fw)->ic || qApp->d_func()->inputContext) {
+ if (QInputContext *ic = fw->inputContext()) {
+ if (ic)
+ ic->update();
+ }
+ }
+#ifndef QT_NO_ACCESSIBILITY
+ // ##### is this correct
+ QAccessible::updateAccessibility(fw, 0, QAccessible::StateChanged);
+#endif
+ }
+#endif
+}
+
+/*!
This virtual function is called by QGraphicsItem to notify custom items
that some part of the item's state changes. By reimplementing this
function, your can react to a change, and in some cases, (depending on \a
@@ -7554,6 +7610,93 @@ void QGraphicsObject::ungrabGesture(Qt::GestureType gesture)
}
}
+void QGraphicsObject::updateMicroFocus()
+{
+ QGraphicsItem::updateMicroFocus();
+}
+
+void QGraphicsItemPrivate::append(QDeclarativeListProperty<QGraphicsObject> *list, QGraphicsObject *item)
+{
+ QGraphicsItemPrivate::get(item)->setParentItemHelper(static_cast<QGraphicsObject *>(list->object), /*newParentVariant=*/0, /*thisPointerVariant=*/0);
+}
+
+/*!
+ Returns a list of this item's children.
+
+ The items are sorted by stacking order. This takes into account both the
+ items' insertion order and their Z-values.
+
+*/
+QDeclarativeListProperty<QGraphicsObject> QGraphicsItemPrivate::childrenList()
+{
+ Q_Q(QGraphicsItem);
+ if (isObject) {
+ QGraphicsObject *that = static_cast<QGraphicsObject *>(q);
+ return QDeclarativeListProperty<QGraphicsObject>(that, &children, QGraphicsItemPrivate::append);
+ } else {
+ //QGraphicsItem is not supported for this property
+ return QDeclarativeListProperty<QGraphicsObject>();
+ }
+}
+
+/*!
+ \internal
+ Returns the width of the item
+ Reimplemented by QGraphicsWidget
+*/
+qreal QGraphicsItemPrivate::width() const
+{
+ return 0;
+}
+
+/*!
+ \internal
+ Set the width of the item
+ Reimplemented by QGraphicsWidget
+*/
+void QGraphicsItemPrivate::setWidth(qreal w)
+{
+ Q_UNUSED(w);
+}
+
+/*!
+ \internal
+ Reset the width of the item
+ Reimplemented by QGraphicsWidget
+*/
+void QGraphicsItemPrivate::resetWidth()
+{
+}
+
+/*!
+ \internal
+ Returns the height of the item
+ Reimplemented by QGraphicsWidget
+*/
+qreal QGraphicsItemPrivate::height() const
+{
+ return 0;
+}
+
+/*!
+ \internal
+ Set the height of the item
+ Reimplemented by QGraphicsWidget
+*/
+void QGraphicsItemPrivate::setHeight(qreal h)
+{
+ Q_UNUSED(h);
+}
+
+/*!
+ \internal
+ Reset the height of the item
+ Reimplemented by QGraphicsWidget
+*/
+void QGraphicsItemPrivate::resetHeight()
+{
+}
+
/*!
\property QGraphicsObject::parent
\brief the parent of the item
@@ -7740,6 +7883,23 @@ void QGraphicsObject::ungrabGesture(Qt::GestureType gesture)
\sa scale, rotation, QGraphicsItem::transformOriginPoint()
*/
+/*!
+ \fn void QGraphicsObject::widthChanged()
+ \internal
+*/
+
+/*!
+ \fn void QGraphicsObject::heightChanged()
+ \internal
+*/
+
+/*!
+
+ \fn QGraphicsObject::childrenChanged()
+
+ This signal gets emitted whenever the children list changes
+ \internal
+*/
/*!
\class QAbstractGraphicsShapeItem
@@ -11028,7 +11188,7 @@ QPixmap QGraphicsItemEffectSourcePrivate::pixmap(Qt::CoordinateSystem system, QP
&newEffectTransform, false, true);
} else if (deviceCoordinates) {
// Device coordinates with info.
- scened->draw(item, &pixmapPainter, info->viewTransform, info->transformPtr, info->exposedRegion,
+ scened->draw(item, &pixmapPainter, info->viewTransform, info->transformPtr, 0,
info->widget, info->opacity, &effectTransform, info->wasDirtySceneTransform,
info->drawItem);
} else {
diff --git a/src/gui/graphicsview/qgraphicsitem.h b/src/gui/graphicsview/qgraphicsitem.h
index 117113f..9cc75af 100644
--- a/src/gui/graphicsview/qgraphicsitem.h
+++ b/src/gui/graphicsview/qgraphicsitem.h
@@ -424,6 +424,7 @@ public:
void removeSceneEventFilter(QGraphicsItem *filterItem);
protected:
+ void updateMicroFocus();
virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event);
virtual bool sceneEvent(QEvent *event);
virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
@@ -553,6 +554,10 @@ class Q_GUI_EXPORT QGraphicsObject : public QObject, public QGraphicsItem
Q_PROPERTY(qreal rotation READ rotation WRITE setRotation NOTIFY rotationChanged)
Q_PROPERTY(qreal scale READ scale WRITE setScale NOTIFY scaleChanged)
Q_PROPERTY(QPointF transformOriginPoint READ transformOriginPoint WRITE setTransformOriginPoint)
+ Q_PRIVATE_PROPERTY(QGraphicsItem::d_func(), QDeclarativeListProperty<QGraphicsObject> children READ childrenList DESIGNABLE false NOTIFY childrenChanged)
+ Q_PRIVATE_PROPERTY(QGraphicsItem::d_func(), qreal width READ width WRITE setWidth NOTIFY widthChanged RESET resetWidth FINAL)
+ Q_PRIVATE_PROPERTY(QGraphicsItem::d_func(), qreal height READ height WRITE setHeight NOTIFY heightChanged RESET resetHeight FINAL)
+ Q_CLASSINFO("DefaultProperty", "children")
Q_INTERFACES(QGraphicsItem)
public:
QGraphicsObject(QGraphicsItem *parent = 0);
@@ -567,6 +572,9 @@ public:
void grabGesture(Qt::GestureType type, Qt::GestureFlags flags = Qt::GestureFlags());
void ungrabGesture(Qt::GestureType type);
+protected Q_SLOTS:
+ void updateMicroFocus();
+
Q_SIGNALS:
void parentChanged();
void opacityChanged();
@@ -577,6 +585,9 @@ Q_SIGNALS:
void zChanged();
void rotationChanged();
void scaleChanged();
+ void childrenChanged();
+ void widthChanged();
+ void heightChanged();
protected:
QGraphicsObject(QGraphicsItemPrivate &dd, QGraphicsItem *parent, QGraphicsScene *scene);
diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h
index de8cf56..73b8f04 100644
--- a/src/gui/graphicsview/qgraphicsitem_p.h
+++ b/src/gui/graphicsview/qgraphicsitem_p.h
@@ -71,6 +71,63 @@ QT_BEGIN_NAMESPACE
class QGraphicsItemPrivate;
+#ifndef QDECLARATIVELISTPROPERTY
+#define QDECLARATIVELISTPROPERTY
+template<typename T>
+class QDeclarativeListProperty {
+public:
+ typedef void (*AppendFunction)(QDeclarativeListProperty<T> *, T*);
+ typedef int (*CountFunction)(QDeclarativeListProperty<T> *);
+ typedef T *(*AtFunction)(QDeclarativeListProperty<T> *, int);
+ typedef void (*ClearFunction)(QDeclarativeListProperty<T> *);
+
+ QDeclarativeListProperty()
+ : object(0), data(0), append(0), count(0), at(0), clear(0), dummy1(0), dummy2(0) {}
+ QDeclarativeListProperty(QObject *o, QList<T *> &list)
+ : object(o), data(&list), append(qlist_append), count(qlist_count), at(qlist_at),
+ clear(qlist_clear), dummy1(0), dummy2(0) {}
+ QDeclarativeListProperty(QObject *o, void *d, AppendFunction a, CountFunction c = 0, AtFunction t = 0,
+ ClearFunction r = 0)
+ : object(o), data(d), append(a), count(c), at(t), clear(r), dummy1(0), dummy2(0) {}
+
+ bool operator==(const QDeclarativeListProperty &o) const {
+ return object == o.object &&
+ data == o.data &&
+ append == o.append &&
+ count == o.count &&
+ at == o.at &&
+ clear == o.clear;
+ }
+
+ QObject *object;
+ void *data;
+
+ AppendFunction append;
+
+ CountFunction count;
+ AtFunction at;
+
+ ClearFunction clear;
+
+ void *dummy1;
+ void *dummy2;
+
+private:
+ static void qlist_append(QDeclarativeListProperty *p, T *v) {
+ ((QList<T *> *)p->data)->append(v);
+ }
+ static int qlist_count(QDeclarativeListProperty *p) {
+ return ((QList<T *> *)p->data)->count();
+ }
+ static T *qlist_at(QDeclarativeListProperty *p, int idx) {
+ return ((QList<T *> *)p->data)->at(idx);
+ }
+ static void qlist_clear(QDeclarativeListProperty *p) {
+ return ((QList<T *> *)p->data)->clear();
+ }
+};
+#endif
+
class QGraphicsItemCache
{
public:
@@ -220,6 +277,7 @@ public:
virtual void setPosHelper(const QPointF &pos);
void setTransformHelper(const QTransform &transform);
+ void prependGraphicsTransform(QGraphicsTransform *t);
void appendGraphicsTransform(QGraphicsTransform *t);
void setVisibleHelper(bool newVisible, bool explicitly, bool update = true);
void setEnabledHelper(bool newEnabled, bool explicitly, bool update = true);
@@ -237,6 +295,7 @@ public:
void resolveDepth();
void addChild(QGraphicsItem *child);
void removeChild(QGraphicsItem *child);
+ QDeclarativeListProperty<QGraphicsObject> childrenList();
void setParentItemHelper(QGraphicsItem *parent, const QVariant *newParentVariant,
const QVariant *thisPointerVariant);
void childrenBoundingRectHelper(QTransform *x, QRectF *rect);
@@ -423,11 +482,21 @@ public:
inline QTransform transformToParent() const;
inline void ensureSortedChildren();
+ static void append(QDeclarativeListProperty<QGraphicsObject> *list, QGraphicsObject *item);
static inline bool insertionOrder(QGraphicsItem *a, QGraphicsItem *b);
void ensureSequentialSiblingIndex();
inline void sendScenePosChange();
virtual void siblingOrderChange();
+ // Private Properties
+ virtual qreal width() const;
+ virtual void setWidth(qreal);
+ virtual void resetWidth();
+
+ virtual qreal height() const;
+ virtual void setHeight(qreal);
+ virtual void resetHeight();
+
QRectF childrenBoundingRect;
QRectF needsRepaint;
QMap<QWidget *, QRect> paintedViewBoundingRects;
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index 29a4be8..4b612f4 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -4301,12 +4301,7 @@ static void _q_paintIntoCache(QPixmap *pix, QGraphicsItem *item, const QRegion &
if (!subPix.isNull()) {
// Blit the subpixmap into the main pixmap.
pixmapPainter.begin(pix);
- if (item->cacheMode() == QGraphicsItem::DeviceCoordinateCache
- && itemToPixmap.type() > QTransform::TxTranslate) {
- pixmapPainter.setCompositionMode(QPainter::CompositionMode_SourceAtop);
- } else {
- pixmapPainter.setCompositionMode(QPainter::CompositionMode_Source);
- }
+ pixmapPainter.setCompositionMode(QPainter::CompositionMode_Source);
pixmapPainter.setClipRegion(pixmapExposed);
pixmapPainter.drawPixmap(br.topLeft(), subPix);
pixmapPainter.end();
@@ -4472,6 +4467,8 @@ void QGraphicsScenePrivate::drawItemHelper(QGraphicsItem *item, QPainter *painte
}
// Create or reuse offscreen pixmap, possibly scroll/blit from the old one.
+ // If the world transform is rotated we always recreate the cache to avoid
+ // wrong blending.
bool pixModified = false;
QGraphicsItemCache::DeviceData *deviceData = &itemCache->deviceData[widget];
bool invertable = true;
@@ -4479,7 +4476,9 @@ void QGraphicsScenePrivate::drawItemHelper(QGraphicsItem *item, QPainter *painte
if (invertable)
diff *= painter->worldTransform();
deviceData->lastTransform = painter->worldTransform();
- if (!invertable || diff.type() > QTransform::TxTranslate) {
+ if (!invertable
+ || diff.type() > QTransform::TxTranslate
+ || painter->worldTransform().type() > QTransform::TxScale) {
pixModified = true;
itemCache->allExposed = true;
itemCache->exposed.clear();
diff --git a/src/gui/graphicsview/qgraphicswidget.cpp b/src/gui/graphicsview/qgraphicswidget.cpp
index a257e0d..8e439be 100644
--- a/src/gui/graphicsview/qgraphicswidget.cpp
+++ b/src/gui/graphicsview/qgraphicswidget.cpp
@@ -324,6 +324,14 @@ void QGraphicsWidget::resize(const QSizeF &size)
*/
/*!
+
+ \fn QGraphicsWidget::geometryChanged()
+
+ This signal gets emitted whenever the geometry of the item changes
+ \internal
+*/
+
+/*!
\property QGraphicsWidget::geometry
\brief the geometry of the widget
@@ -334,7 +342,7 @@ void QGraphicsWidget::resize(const QSizeF &size)
A side effect of calling this function is that the widget will receive
a move event and a resize event. Also, if the widget has a layout
assigned, the layout will activate.
-
+
\sa geometry(), resize()
*/
void QGraphicsWidget::setGeometry(const QRectF &rect)
@@ -391,6 +399,10 @@ void QGraphicsWidget::setGeometry(const QRectF &rect)
QGraphicsSceneResizeEvent re;
re.setOldSize(oldSize);
re.setNewSize(newGeom.size());
+ if (oldSize.width() != newGeom.size().width())
+ emit widthChanged();
+ if (oldSize.height() != newGeom.size().height())
+ emit heightChanged();
QApplication::sendEvent(this, &re);
}
}
@@ -568,7 +580,7 @@ void QGraphicsWidget::getWindowFrameMargins(qreal *left, qreal *top, qreal *righ
void QGraphicsWidget::unsetWindowFrameMargins()
{
Q_D(QGraphicsWidget);
- if ((d->windowFlags & Qt::Window) && (d->windowFlags & Qt::WindowType_Mask) != Qt::Popup &&
+ if ((d->windowFlags & Qt::Window) && (d->windowFlags & Qt::WindowType_Mask) != Qt::Popup &&
(d->windowFlags & Qt::WindowType_Mask) != Qt::ToolTip && !(d->windowFlags & Qt::FramelessWindowHint)) {
QStyleOptionTitleBar bar;
d->initStyleOptionTitleBar(&bar);
@@ -795,6 +807,7 @@ void QGraphicsWidget::setLayout(QGraphicsLayout *l)
l->setParentLayoutItem(this);
l->d_func()->reparentChildItems(this);
l->invalidate();
+ emit layoutChanged();
}
/*!
@@ -1175,7 +1188,7 @@ bool QGraphicsWidget::sceneEvent(QEvent *event)
Returns true if \a event has been recognized and processed; otherwise,
returns false.
-
+
\sa event()
*/
bool QGraphicsWidget::windowFrameEvent(QEvent *event)
@@ -1232,7 +1245,7 @@ Qt::WindowFrameSection QGraphicsWidget::windowFrameSectionAt(const QPointF &pos)
const QRectF r = windowFrameRect();
if (!r.contains(pos))
return Qt::NoSection;
-
+
const qreal left = r.left();
const qreal top = r.top();
const qreal right = r.right();
@@ -2358,5 +2371,5 @@ void QGraphicsWidget::dumpFocusChain()
#endif
QT_END_NAMESPACE
-
+
#endif //QT_NO_GRAPHICSVIEW
diff --git a/src/gui/graphicsview/qgraphicswidget.h b/src/gui/graphicsview/qgraphicswidget.h
index 87c669b..a22b642 100644
--- a/src/gui/graphicsview/qgraphicswidget.h
+++ b/src/gui/graphicsview/qgraphicswidget.h
@@ -83,6 +83,7 @@ class Q_GUI_EXPORT QGraphicsWidget : public QGraphicsObject, public QGraphicsLay
Q_PROPERTY(QString windowTitle READ windowTitle WRITE setWindowTitle)
Q_PROPERTY(QRectF geometry READ geometry WRITE setGeometry NOTIFY geometryChanged)
Q_PROPERTY(bool autoFillBackground READ autoFillBackground WRITE setAutoFillBackground)
+ Q_PROPERTY(QGraphicsLayout* layout READ layout WRITE setLayout NOTIFY layoutChanged)
public:
QGraphicsWidget(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0);
~QGraphicsWidget();
@@ -180,6 +181,7 @@ public:
Q_SIGNALS:
void geometryChanged();
+ void layoutChanged();
public Q_SLOTS:
bool close();
diff --git a/src/gui/graphicsview/qgraphicswidget_p.cpp b/src/gui/graphicsview/qgraphicswidget_p.cpp
index 1835c74..6e397b6 100644
--- a/src/gui/graphicsview/qgraphicswidget_p.cpp
+++ b/src/gui/graphicsview/qgraphicswidget_p.cpp
@@ -44,6 +44,7 @@
#ifndef QT_NO_GRAPHICSVIEW
#include <QtCore/qdebug.h>
+#include <QtCore/qnumeric.h>
#include "qgraphicswidget_p.h"
#include "qgraphicslayout.h"
#include "qgraphicsscene_p.h"
@@ -825,6 +826,56 @@ void QGraphicsWidgetPrivate::setLayout_helper(QGraphicsLayout *l)
}
}
+qreal QGraphicsWidgetPrivate::width() const
+{
+ Q_Q(const QGraphicsWidget);
+ return q->geometry().width();
+}
+
+void QGraphicsWidgetPrivate::setWidth(qreal w)
+{
+ if (qIsNaN(w))
+ return;
+ Q_Q(QGraphicsWidget);
+ if (q->geometry().width() == w)
+ return;
+
+ QRectF oldGeom = q->geometry();
+
+ q->setGeometry(QRectF(q->x(), q->y(), w, height()));
+}
+
+void QGraphicsWidgetPrivate::resetWidth()
+{
+ Q_Q(QGraphicsWidget);
+ q->setGeometry(QRectF(q->x(), q->y(), 0, height()));
+}
+
+qreal QGraphicsWidgetPrivate::height() const
+{
+ Q_Q(const QGraphicsWidget);
+ return q->geometry().height();
+}
+
+void QGraphicsWidgetPrivate::setHeight(qreal h)
+{
+ if (qIsNaN(h))
+ return;
+ Q_Q(QGraphicsWidget);
+ if (q->geometry().height() == h)
+ return;
+
+ QRectF oldGeom = q->geometry();
+
+ q->setGeometry(QRectF(q->x(), q->y(), width(), h));
+}
+
+void QGraphicsWidgetPrivate::resetHeight()
+{
+ Q_Q(QGraphicsWidget);
+ q->setGeometry(QRectF(q->x(), q->y(), width(), 0));
+}
+
QT_END_NAMESPACE
#endif //QT_NO_GRAPHICSVIEW
diff --git a/src/gui/graphicsview/qgraphicswidget_p.h b/src/gui/graphicsview/qgraphicswidget_p.h
index 3ab8737..7116a23 100644
--- a/src/gui/graphicsview/qgraphicswidget_p.h
+++ b/src/gui/graphicsview/qgraphicswidget_p.h
@@ -131,6 +131,15 @@ public:
void windowFrameHoverLeaveEvent(QGraphicsSceneHoverEvent *event);
bool hasDecoration() const;
+ // Private Properties
+ qreal width() const;
+ void setWidth(qreal);
+ void resetWidth();
+
+ qreal height() const;
+ void setHeight(qreal);
+ void resetHeight();
+
// State
inline int attributeToBitIndex(Qt::WidgetAttribute att) const
{
diff --git a/src/gui/gui.pro b/src/gui/gui.pro
index 52531a3..b22f732 100644
--- a/src/gui/gui.pro
+++ b/src/gui/gui.pro
@@ -41,6 +41,7 @@ include(math3d/math3d.pri)
include(effects/effects.pri)
contains(QT_CONFIG, egl): include(egl/egl.pri)
+win32:!wince*: DEFINES += QT_NO_EGL
embedded: QT += network
@@ -62,7 +63,6 @@ symbian {
# Partial upgrade SIS file
vendorinfo = \
- "&EN" \
"; Localised Vendor name" \
"%{\"Nokia, Qt\"}" \
" " \
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index 233c58d..ce1d6d3 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -5704,9 +5704,10 @@ void QImage::setAlphaChannel(const QImage &alphaChannel)
return;
}
- detach();
-
- *this = convertToFormat(QImage::Format_ARGB32_Premultiplied);
+ if (d->format == QImage::Format_ARGB32_Premultiplied)
+ detach();
+ else
+ *this = convertToFormat(QImage::Format_ARGB32_Premultiplied);
// Slight optimization since alphachannels are returned as 8-bit grays.
if (alphaChannel.d->depth == 8 && alphaChannel.isGrayscale()) {
diff --git a/src/gui/inputmethod/inputmethod.pri b/src/gui/inputmethod/inputmethod.pri
index 6d9f748..02e3e57 100644
--- a/src/gui/inputmethod/inputmethod.pri
+++ b/src/gui/inputmethod/inputmethod.pri
@@ -26,6 +26,6 @@ mac:!embedded {
symbian:contains(QT_CONFIG, s60) {
HEADERS += inputmethod/qcoefepinputcontext_p.h
SOURCES += inputmethod/qcoefepinputcontext_s60.cpp
- LIBS += -lfepbase
+ LIBS += -lfepbase -lakninputlanguage
}
diff --git a/src/gui/inputmethod/qinputcontextfactory.cpp b/src/gui/inputmethod/qinputcontextfactory.cpp
index 501a36e..d47e343 100644
--- a/src/gui/inputmethod/qinputcontextfactory.cpp
+++ b/src/gui/inputmethod/qinputcontextfactory.cpp
@@ -73,6 +73,7 @@
#endif
#ifdef Q_WS_S60
#include "qcoefepinputcontext_p.h"
+#include "akninputlanguageinfo.h"
#endif
#include "private/qfactoryloader_p.h"
@@ -198,6 +199,42 @@ QStringList QInputContextFactory::keys()
return result;
}
+#if defined(Q_WS_S60)
+/*!
+ \internal
+
+ This function contains pure Symbian exception handling code for
+ getting S60 language list.
+ Returned object ownership is transfered to caller.
+*/
+static CAknInputLanguageList* s60LangListL()
+{
+ CAknInputLanguageInfo *langInfo = AknInputLanguageInfoFactory::CreateInputLanguageInfoL();
+ CleanupStack::PushL(langInfo);
+ // In rare phone there is more than 7 languages installed -> use 7 as an array granularity
+ CAknInputLanguageList *langList = new (ELeave) CAknInputLanguageList(7);
+ CleanupStack::PushL(langList);
+ langInfo->AppendAvailableLanguagesL(langList);
+ CleanupStack::Pop(langList);
+ CleanupStack::PopAndDestroy(langInfo);
+ return langList;
+}
+
+/*!
+ \internal
+
+ This function utility function return S60 language list.
+ Returned object ownership is transfered to caller.
+*/
+static CAknInputLanguageList* s60LangList()
+{
+ CAknInputLanguageList *langList = NULL;
+ TRAP_IGNORE(langList = s60LangListL());
+ q_check_ptr(langList);
+ return langList;
+}
+#endif
+
/*!
Returns the languages supported by the QInputContext object
specified by \a key.
@@ -229,7 +266,15 @@ QStringList QInputContextFactory::languages( const QString &key )
#endif
#if defined(Q_WS_S60)
if (key == QLatin1String("coefep"))
- return QStringList(QString());
+ {
+ CAknInputLanguageList *langList = s60LangList();
+ int count = langList->Count();
+ for (int i = 0; i < count; ++i)
+ {
+ result.append(QString(qt_symbianLocaleName(langList->At(i)->LanguageCode())));
+ }
+ delete langList;
+ }
#endif
#if defined(QT_NO_LIBRARY) || defined(QT_NO_SETTINGS)
Q_UNUSED(key);
diff --git a/src/gui/inputmethod/qximinputcontext_x11.cpp b/src/gui/inputmethod/qximinputcontext_x11.cpp
index 68ade38..d048b36 100644
--- a/src/gui/inputmethod/qximinputcontext_x11.cpp
+++ b/src/gui/inputmethod/qximinputcontext_x11.cpp
@@ -344,7 +344,13 @@ static XFontSet getFontSet(const QFont &f)
return (fontsetCache[i] == (XFontSet)-1) ? 0 : fontsetCache[i];
}
-
+extern bool qt_use_rtl_extensions; // from qapplication_x11.cpp
+#ifndef QT_NO_XKB
+extern void q_getLocaleAndDirection(QLocale *locale,
+ Qt::LayoutDirection *direction,
+ const QByteArray &layoutName,
+ const QByteArray &variantName);
+#endif
QXIMInputContext::QXIMInputContext()
{
@@ -375,6 +381,52 @@ QXIMInputContext::QXIMInputContext()
else
QXIMInputContext::create_xim();
#endif // USE_X11R6_XIM
+
+#ifndef QT_NO_XKB
+ if (X11->use_xkb) {
+ QByteArray layoutName;
+ QByteArray variantName;
+
+ Atom type = XNone;
+ int format = 0;
+ ulong nitems = 0;
+ ulong bytesAfter = 0;
+ uchar *data = 0;
+ if (XGetWindowProperty(X11->display, RootWindow(X11->display, 0), ATOM(_XKB_RULES_NAMES), 0, 1024,
+ false, XA_STRING, &type, &format, &nitems, &bytesAfter, &data) == Success
+ && type == XA_STRING && format == 8 && nitems > 2) {
+
+ char *names[5] = { 0, 0, 0, 0, 0 };
+ char *p = reinterpret_cast<char *>(data), *end = p + nitems;
+ int i = 0;
+ do {
+ names[i++] = p;
+ p += qstrlen(p) + 1;
+ } while (p < end);
+
+ QList<QByteArray> layoutNames = QByteArray::fromRawData(names[2], qstrlen(names[2])).split(',');
+ QList<QByteArray> variantNames = QByteArray::fromRawData(names[3], qstrlen(names[3])).split(',');
+ for (int i = 0; i < qMin(layoutNames.count(), variantNames.count()); ++i ) {
+ QLocale keyboardInputLocale;
+ Qt::LayoutDirection keyboardInputDirection;
+ QByteArray variantName = variantNames.at(i);
+ const int dashPos = variantName.indexOf("-");
+ if (dashPos >= 0)
+ variantName.truncate(dashPos);
+ q_getLocaleAndDirection(&keyboardInputLocale,
+ &keyboardInputDirection,
+ layoutNames.at(i),
+ variantName);
+ if (keyboardInputDirection == Qt::RightToLeft)
+ qt_use_rtl_extensions = true;
+ }
+ }
+
+ if (data)
+ XFree(data);
+ }
+#endif // QT_NO_XKB
+
}
diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
index d934683..c3ff2bd 100644
--- a/src/gui/itemviews/qtreeview.cpp
+++ b/src/gui/itemviews/qtreeview.cpp
@@ -3194,12 +3194,16 @@ void QTreeViewPrivate::layout(int i, bool recursiveExpanding, bool afterIsUninit
int QTreeViewPrivate::pageUp(int i) const
{
int index = itemAtCoordinate(coordinateForItem(i) - viewport->height());
+ while (isItemHiddenOrDisabled(index))
+ index--;
return index == -1 ? 0 : index;
}
int QTreeViewPrivate::pageDown(int i) const
{
int index = itemAtCoordinate(coordinateForItem(i) + viewport->height());
+ while (isItemHiddenOrDisabled(index))
+ index++;
return index == -1 ? viewItems.count() - 1 : index;
}
diff --git a/src/gui/kernel/qapplication.h b/src/gui/kernel/qapplication.h
index ee74350..c21b982 100644
--- a/src/gui/kernel/qapplication.h
+++ b/src/gui/kernel/qapplication.h
@@ -376,6 +376,7 @@ private:
Q_DECLARE_PRIVATE(QApplication)
friend class QGraphicsWidget;
+ friend class QGraphicsItem;
friend class QGraphicsScene;
friend class QGraphicsScenePrivate;
friend class QWidget;
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 27b490b..25a7bbe 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -1004,16 +1004,32 @@ void QSymbianControl::FocusChanged(TDrawNow /* aDrawNow */)
// else { We don't touch the active window unless we were explicitly activated or deactivated }
}
+void QSymbianControl::handleClientAreaChange()
+{
+ const bool cbaVisibilityHint = qwidget->windowFlags() & Qt::WindowSoftkeysVisibleHint;
+ if (qwidget->isFullScreen() && !cbaVisibilityHint) {
+ SetExtentToWholeScreen();
+ } else if (qwidget->isMaximized() || (qwidget->isFullScreen() && cbaVisibilityHint)) {
+ TRect r = static_cast<CEikAppUi*>(S60->appUi())->ClientRect();
+ SetExtent(r.iTl, r.Size());
+ } else if (!qwidget->isMinimized()) { // Normal geometry
+ if (!qwidget->testAttribute(Qt::WA_Resized)) {
+ qwidget->adjustSize();
+ qwidget->setAttribute(Qt::WA_Resized, false); //not a user resize
+ }
+ if (!qwidget->testAttribute(Qt::WA_Moved) && qwidget->windowType() != Qt::Dialog) {
+ TRect r = static_cast<CEikAppUi*>(S60->appUi())->ClientRect();
+ SetPosition(r.iTl);
+ qwidget->setAttribute(Qt::WA_Moved, false); // not really an explicit position
+ }
+ }
+}
+
void QSymbianControl::HandleResourceChange(int resourceType)
{
switch (resourceType) {
case KInternalStatusPaneChange:
- if (qwidget->isFullScreen()) {
- SetExtentToWholeScreen();
- } else if (qwidget->isMaximized()) {
- TRect r = static_cast<CEikAppUi*>(S60->appUi())->ClientRect();
- SetExtent(r.iTl, r.Size());
- }
+ handleClientAreaChange();
if (IsFocused() && IsVisible()) {
qwidget->d_func()->setWindowIcon_sys(true);
qwidget->d_func()->setWindowTitle_sys(qwidget->windowTitle());
@@ -1025,22 +1041,7 @@ void QSymbianControl::HandleResourceChange(int resourceType)
#ifdef Q_WS_S60
case KEikDynamicLayoutVariantSwitch:
{
- if (qwidget->isFullScreen()) {
- SetExtentToWholeScreen();
- } else if (qwidget->isMaximized()) {
- TRect r = static_cast<CEikAppUi*>(S60->appUi())->ClientRect();
- SetExtent(r.iTl, r.Size());
- } else if (!qwidget->isMinimized()){ // Normal geometry
- if (!qwidget->testAttribute(Qt::WA_Resized)) {
- qwidget->adjustSize();
- qwidget->setAttribute(Qt::WA_Resized, false); //not a user resize
- }
- if (!qwidget->testAttribute(Qt::WA_Moved) && qwidget->windowType() != Qt::Dialog) {
- TRect r = static_cast<CEikAppUi*>(S60->appUi())->ClientRect();
- SetPosition(r.iTl);
- qwidget->setAttribute(Qt::WA_Moved, false); // not really an explicit position
- }
- }
+ handleClientAreaChange();
break;
}
#endif
diff --git a/src/gui/kernel/qeventdispatcher_mac.mm b/src/gui/kernel/qeventdispatcher_mac.mm
index 62e1e81..a7f1224 100644
--- a/src/gui/kernel/qeventdispatcher_mac.mm
+++ b/src/gui/kernel/qeventdispatcher_mac.mm
@@ -831,7 +831,14 @@ NSModalSession QEventDispatcherMacPrivate::currentModalSession()
QBoolBlocker block1(blockSendPostedEvents, true);
info.nswindow = window;
[(NSWindow*) info.nswindow retain];
- info.session = [NSApp beginModalSessionForWindow:window];
+ // When creating a modal session cocoa will rearrange the windows.
+ // In order to avoid windows to be put behind another we need to
+ // keep the window level.
+ {
+ int level = [window level];
+ info.session = [NSApp beginModalSessionForWindow:window];
+ [window setLevel:level];
+ }
}
currentModalSessionCached = info.session;
}
diff --git a/src/gui/kernel/qkeymapper_x11.cpp b/src/gui/kernel/qkeymapper_x11.cpp
index 428ac3e..807959c 100644
--- a/src/gui/kernel/qkeymapper_x11.cpp
+++ b/src/gui/kernel/qkeymapper_x11.cpp
@@ -80,7 +80,7 @@ QT_BEGIN_NAMESPACE
(((KeySym)(keysym) >= 0x11000000) && ((KeySym)(keysym) <= 0x1100FFFF))
#endif
-static void getLocaleAndDirection(QLocale *locale,
+void q_getLocaleAndDirection(QLocale *locale,
Qt::LayoutDirection *direction,
const QByteArray &layoutName,
const QByteArray &variantName)
@@ -523,7 +523,7 @@ void QKeyMapperPrivate::clearMappings()
// if (keyboardLayoutName.isEmpty())
// qWarning("Qt: unable to determine keyboard layout, please talk to qt-bugs@trolltech.com"); ?
- getLocaleAndDirection(&keyboardInputLocale,
+ q_getLocaleAndDirection(&keyboardInputLocale,
&keyboardInputDirection,
layoutName,
variantName);
@@ -534,7 +534,6 @@ void QKeyMapperPrivate::clearMappings()
<< "direction ="
<< keyboardInputDirection;
#endif
-
if (data)
XFree(data);
} else
diff --git a/src/gui/kernel/qsoftkeymanager.cpp b/src/gui/kernel/qsoftkeymanager.cpp
index c9a94ee..923144a 100644
--- a/src/gui/kernel/qsoftkeymanager.cpp
+++ b/src/gui/kernel/qsoftkeymanager.cpp
@@ -115,6 +115,8 @@ QAction *QSoftKeyManager::createAction(StandardSoftKey standardKey, QWidget *act
break;
}
action->setSoftKeyRole(softKeyRole);
+ action->setVisible(false);
+ setForceEnabledInSoftkeys(action);
return action;
}
@@ -168,25 +170,55 @@ bool QSoftKeyManager::appendSoftkeys(const QWidget &source, int level)
{
Q_D(QSoftKeyManager);
bool ret = false;
- QList<QAction*> actions = source.actions();
- for (int i = 0; i < actions.count(); ++i) {
- if (actions.at(i)->softKeyRole() != QAction::NoSoftKey) {
- d->requestedSoftKeyActions.insert(level, actions.at(i));
+ foreach(QAction *action, source.actions()) {
+ if (action->softKeyRole() != QAction::NoSoftKey
+ && (action->isVisible() || isForceEnabledInSofkeys(action))) {
+ d->requestedSoftKeyActions.insert(level, action);
ret = true;
}
}
return ret;
}
+
+static bool isChildOf(const QWidget *c, const QWidget *p)
+{
+ while (c) {
+ if (c == p)
+ return true;
+ c = c->parentWidget();
+ }
+ return false;
+}
+
QWidget *QSoftKeyManager::softkeySource(QWidget *previousSource, bool& recursiveMerging)
{
Q_D(QSoftKeyManager);
QWidget *source = NULL;
if (!previousSource) {
// Initial source is primarily focuswidget and secondarily activeWindow
- source = QApplication::focusWidget();
- if (!source)
- source = QApplication::activeWindow();
+ QWidget *focus = QApplication::focusWidget();
+ QWidget *popup = QApplication::activePopupWidget();
+ if (popup) {
+ if (isChildOf(focus, popup))
+ source = focus;
+ else
+ source = popup;
+ }
+ if (!source) {
+ QWidget *modal = QApplication::activeModalWidget();
+ if (modal) {
+ if (isChildOf(focus, modal))
+ source = focus;
+ else
+ source = modal;
+ }
+ }
+ if (!source) {
+ source = focus;
+ if (!source)
+ source = QApplication::activeWindow();
+ }
} else {
// Softkey merging is based on four criterias
// 1. Implicit merging is used whenever focus widget does not specify any softkeys
@@ -220,6 +252,20 @@ bool QSoftKeyManager::handleUpdateSoftKeys()
return true;
}
+void QSoftKeyManager::setForceEnabledInSoftkeys(QAction *action)
+{
+ action->setProperty(FORCE_ENABLED_PROPERTY, QVariant(true));
+}
+
+bool QSoftKeyManager::isForceEnabledInSofkeys(QAction *action)
+{
+ bool ret = false;
+ QVariant property = action->property(FORCE_ENABLED_PROPERTY);
+ if (property.isValid() && property.toBool())
+ ret = true;
+ return ret;
+}
+
bool QSoftKeyManager::event(QEvent *e)
{
#ifndef QT_NO_ACTION
diff --git a/src/gui/kernel/qsoftkeymanager_p.h b/src/gui/kernel/qsoftkeymanager_p.h
index a6fe17e..a5b258b 100644
--- a/src/gui/kernel/qsoftkeymanager_p.h
+++ b/src/gui/kernel/qsoftkeymanager_p.h
@@ -63,7 +63,8 @@ QT_BEGIN_NAMESPACE
class QSoftKeyManagerPrivate;
-const char MENU_ACTION_PROPERTY[] = "_q_menuaction";
+const char MENU_ACTION_PROPERTY[] = "_q_menuAction";
+const char FORCE_ENABLED_PROPERTY[] = "_q_forceEnabledInSoftkeys";
class Q_AUTOTEST_EXPORT QSoftKeyManager : public QObject
{
@@ -88,6 +89,8 @@ public:
static QAction *createAction(StandardSoftKey standardKey, QWidget *actionWidget);
static QAction *createKeyedAction(StandardSoftKey standardKey, Qt::Key key, QWidget *actionWidget);
static QString standardSoftKeyText(StandardSoftKey standardKey);
+ static void setForceEnabledInSoftkeys(QAction *action);
+ static bool isForceEnabledInSofkeys(QAction *action);
protected:
bool event(QEvent *e);
diff --git a/src/gui/kernel/qsoftkeymanager_s60.cpp b/src/gui/kernel/qsoftkeymanager_s60.cpp
index 3a0304c..9812d72 100644
--- a/src/gui/kernel/qsoftkeymanager_s60.cpp
+++ b/src/gui/kernel/qsoftkeymanager_s60.cpp
@@ -288,11 +288,7 @@ bool QSoftKeyManagerPrivateS60::setSoftkey(CEikButtonGroupContainer &cba,
TPtrC nativeText = qt_QString2TPtrC(text);
int command = S60_COMMAND_START + position;
setNativeSoftkey(cba, position, command, nativeText);
- // QMainWindow "Options" action is set to invisible in order it does not appear in context menu
- // and all invisible actions are by default disabled.
- // However we never want to dim options softkey, even it is set to invisible
- QVariant property = action->property(MENU_ACTION_PROPERTY);
- const bool dimmed = (property.isValid() && property.toBool()) ? false : !action->isEnabled();
+ const bool dimmed = !action->isEnabled() && !QSoftKeyManager::isForceEnabledInSofkeys(action);
cba.DimCommand(command, dimmed);
realSoftKeyActions.insert(command, action);
return true;
@@ -335,6 +331,7 @@ bool QSoftKeyManagerPrivateS60::setRightSoftkey(CEikButtonGroupContainer &cba)
cbaHasImage[RSK_POSITION] = false;
}
setNativeSoftkey(cba, RSK_POSITION, EAknSoftkeyExit, nativeText);
+ cba.DimCommand(EAknSoftkeyExit, false);
return true;
}
}
diff --git a/src/gui/kernel/qsound.cpp b/src/gui/kernel/qsound.cpp
index 165e6ce..9d8ffa5 100644
--- a/src/gui/kernel/qsound.cpp
+++ b/src/gui/kernel/qsound.cpp
@@ -147,12 +147,13 @@ public:
supports WAVE and AU files.
\row
\o Mac OS X
- \o NSSound is used. All formats that NSSound supports, including QuickTime formats,
+ \o NSSound is used. All formats that NSSound supports, including QuickTime formats,
are supported by Qt for Mac OS X.
\row
\o Qt for Embedded Linux
\o A built-in mixing sound server is used, accessing \c /dev/dsp
directly. Only the WAVE format is supported.
+ \row
\o Symbian
\o CMdaAudioPlayerUtility is used. All formats that Symbian OS or devices support
are supported also by Qt.
diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h
index cedede1..7c6b754 100644
--- a/src/gui/kernel/qt_s60_p.h
+++ b/src/gui/kernel/qt_s60_p.h
@@ -212,6 +212,7 @@ private:
#ifdef QT_SYMBIAN_SUPPORTS_ADVANCED_POINTER
void translateAdvancedPointerEvent(const TAdvancedPointerEvent *event);
#endif
+ void handleClientAreaChange();
private:
static QSymbianControl *lastFocusedControl;
diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h
index ef7ac1f..89ea256 100644
--- a/src/gui/kernel/qwidget_p.h
+++ b/src/gui/kernel/qwidget_p.h
@@ -234,6 +234,15 @@ struct QWExtra {
uint activated : 1; // RWindowBase::Activated has been called
/**
+ * If this bit is set, each native widget receives the signals from the
+ * Symbian control immediately before and immediately after draw ops are
+ * sent to the window server for this control:
+ * void beginNativePaintEvent(const QRect &paintRect);
+ * void endNativePaintEvent(const QRect &paintRect);
+ */
+ uint receiveNativePaintEvents : 1;
+
+ /**
* Defines the behaviour of QSymbianControl::Draw.
*/
enum NativePaintMode {
@@ -258,16 +267,7 @@ struct QWExtra {
Default = Blit
};
- NativePaintMode nativePaintMode : 2;
-
- /**
- * If this bit is set, each native widget receives the signals from the
- * Symbian control immediately before and immediately after draw ops are
- * sent to the window server for this control:
- * void beginNativePaintEvent(const QRect &paintRect);
- * void endNativePaintEvent(const QRect &paintRect);
- */
- uint receiveNativePaintEvents : 1;
+ NativePaintMode nativePaintMode;
#endif
};
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp
index 79702af..bfa7050 100644
--- a/src/gui/kernel/qwidget_s60.cpp
+++ b/src/gui/kernel/qwidget_s60.cpp
@@ -1109,9 +1109,11 @@ void QWidget::setWindowState(Qt::WindowStates newstate)
QTLWExtra *top = d->topData();
const QRect normalGeometry = (top->normalGeometry.width() < 0) ? geometry() : top->normalGeometry;
- if (newstate & Qt::WindowFullScreen)
- setGeometry(qApp->desktop()->availableGeometry(this));
- else if (newstate & Qt::WindowMaximized)
+
+ const bool cbaVisibilityHint = windowFlags() & Qt::WindowSoftkeysVisibleHint;
+ if (newstate & Qt::WindowFullScreen && !cbaVisibilityHint)
+ setGeometry(qApp->desktop()->screenGeometry(this));
+ else if (newstate & Qt::WindowMaximized || ((newstate & Qt::WindowFullScreen) && cbaVisibilityHint))
setGeometry(qApp->desktop()->availableGeometry(this));
else
setGeometry(normalGeometry);
diff --git a/src/gui/painting/qpaintbuffer.cpp b/src/gui/painting/qpaintbuffer.cpp
index ca2077f..e1156dc 100644
--- a/src/gui/painting/qpaintbuffer.cpp
+++ b/src/gui/painting/qpaintbuffer.cpp
@@ -557,11 +557,7 @@ QString QPaintBuffer::commandDescription(int command) const
debug << "Cmd_Translate:" << delta;
break; }
case QPaintBufferPrivate::Cmd_DrawStaticText: {
- QPointF delta(d_ptr->floats.at(cmd.extra), d_ptr->floats.at(cmd.extra+1));
- QVariantList variants(d_ptr->variants.at(cmd.offset).value<QVariantList>());
-
- QStaticText text(variants.at(0).value<QStaticText>());
- debug << "Cmd_DrawStaticText:" << text.text();
+ debug << "Cmd_DrawStaticText";
break; }
}
@@ -1272,13 +1268,14 @@ void QPaintBufferEngine::drawTiledPixmap(const QRectF &r, const QPixmap &pm, con
void QPaintBufferEngine::drawStaticTextItem(QStaticTextItem *staticTextItem)
{
- QString text = QString(staticTextItem->chars, staticTextItem->numChars);
+ QVariantList variants;
- QStaticText staticText(text);
- staticText.prepare(state()->matrix, staticTextItem->font);
+ variants << QVariant(staticTextItem->font);
+ for (int i=0; i<staticTextItem->numGlyphs; ++i) {
+ variants.append(staticTextItem->glyphs[i]);
+ variants.append(staticTextItem->glyphPositions[i].toPointF());
+ }
- QVariantList variants;
- variants << QVariant(staticTextItem->font) << QVariant::fromValue(staticText);
buffer->addCommand(QPaintBufferPrivate::Cmd_DrawStaticText, QVariant(variants));
}
@@ -1761,11 +1758,19 @@ void QPainterReplayer::process(const QPaintBufferCommand &cmd)
QVariantList variants(d->variants.at(cmd.offset).value<QVariantList>());
- QFont font(variants.at(0).value<QFont>());
- QStaticText text(variants.at(0).value<QStaticText>());
-
+ QFont font = variants.at(0).value<QFont>();
+
+ QVector<quint32> glyphs;
+ QVector<QPointF> positions;
+
+ for (int i=0; i<(variants.size() - 1) / 2; ++i) {
+ glyphs.append(variants.at(i*2 + 1).toUInt());
+ positions.append(variants.at(i*2 + 2).toPointF());
+ }
+
painter->setFont(font);
- painter->drawStaticText(QPointF(0, 0), text);
+
+ qt_draw_glyphs(painter, glyphs.constData(), positions.constData(), glyphs.size());
break;
}
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 1c528fe..898a996 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -5720,6 +5720,16 @@ void QPainterPrivate::drawGlyphs(const quint32 *glyphArray, const QPointF *posit
QFontEngine *fontEngine = state->font.d->engineForScript(QUnicodeTables::Common);
+ while (fontEngine->type() == QFontEngine::Multi) {
+ // Pick engine based on first glyph in array if we are using a multi engine.
+ // (all glyphs must be for same font)
+ int engineIdx = 0;
+ if (glyphCount > 0)
+ engineIdx = glyphArray[0] >> 24;
+
+ fontEngine = static_cast<QFontEngineMulti *>(fontEngine)->engine(engineIdx);
+ }
+
QVarLengthArray<QFixedPoint, 128> positions;
for (int i=0; i<glyphCount; ++i) {
QFixedPoint fp = QFixedPoint::fromPointF(positionArray[i]);
@@ -5762,19 +5772,24 @@ void QPainterPrivate::drawGlyphs(const quint32 *glyphArray, const QPointF *posit
/*!
- \fn void QPainter::drawStaticText(const QPoint &position, const QStaticText &staticText)
+ \fn void QPainter::drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText)
\since 4.7
\overload
- Draws the \a staticText at the \a position.
+ Draws the \a staticText at the \a topLeftPosition.
+
+ \note The y-position is used as the top of the font.
+
*/
/*!
- \fn void QPainter::drawStaticText(int x, int y, const QStaticText &staticText)
+ \fn void QPainter::drawStaticText(int left, int top, const QStaticText &staticText)
\since 4.7
\overload
- Draws the \a staticText at coordinates \a x and \a y.
+ Draws the \a staticText at coordinates \a left and \a top.
+
+ \note The y-position is used as the top of the font.
*/
/*!
@@ -5802,7 +5817,7 @@ void QPainter::drawText(const QPointF &p, const QString &str)
/*!
\since 4.7
- Draws the given \a staticText at the given \a position.
+ Draws the given \a staticText at the given \a topLeftPosition.
The text will be drawn using the font and the transformation set on the painter. If the
font and/or transformation set on the painter are different from the ones used to initialize
@@ -5810,15 +5825,17 @@ void QPainter::drawText(const QPointF &p, const QString &str)
QStaticText::prepare() to initialize \a staticText with the font and transformation with which
it will later be drawn.
- If \a position is not the same as when \a staticText was initialized, or when it was last drawn,
- then there will be a slight overhead when translating the text to its new position.
+ If \a topLeftPosition is not the same as when \a staticText was initialized, or when it was
+ last drawn, then there will be a slight overhead when translating the text to its new position.
- \note If the painter's transformation is not affine, then \a staticText will be drawn using regular
- calls to drawText(), losing any potential performance improvement.
+ \note If the painter's transformation is not affine, then \a staticText will be drawn using
+ regular calls to drawText(), losing any potential for performance improvement.
+
+ \note The y-position is used as the top of the font.
\sa QStaticText
*/
-void QPainter::drawStaticText(const QPointF &position, const QStaticText &staticText)
+void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText)
{
Q_D(QPainter);
if (!d->engine || staticText.text().isEmpty() || pen().style() == Qt::NoPen)
@@ -5827,16 +5844,21 @@ void QPainter::drawStaticText(const QPointF &position, const QStaticText &static
QStaticTextPrivate *staticText_d =
const_cast<QStaticTextPrivate *>(QStaticTextPrivate::get(&staticText));
+ if (font() != staticText_d->font) {
+ staticText_d->font = font();
+ staticText_d->needsRelayout = true;
+ }
+
// If we don't have an extended paint engine, or if the painter is projected,
// we go through standard code path
if (d->extended == 0 || !d->state->matrix.isAffine()) {
- staticText_d->paintText(position, this);
+ staticText_d->paintText(topLeftPosition, this);
return;
}
// Don't recalculate entire layout because of translation, rather add the dx and dy
// into the position to move each text item the correct distance.
- QPointF transformedPosition = position * d->state->matrix;
+ QPointF transformedPosition = topLeftPosition * d->state->matrix;
QTransform matrix = d->state->matrix;
// The translation has been applied to transformedPosition. Remove translation
@@ -5857,25 +5879,12 @@ void QPainter::drawStaticText(const QPointF &position, const QStaticText &static
// If the transform is not identical to the text transform,
// we have to relayout the text (for other transformations than plain translation)
- bool staticTextNeedsReinit = false;
+ bool staticTextNeedsReinit = staticText_d->needsRelayout;
if (staticText_d->matrix != d->state->matrix) {
staticText_d->matrix = d->state->matrix;
staticTextNeedsReinit = true;
}
- bool restoreWhenFinished = false;
- if (staticText_d->needsClipRect) {
- save();
- setClipRect(QRectF(position, staticText_d->maximumSize));
-
- restoreWhenFinished = true;
- }
-
- if (font() != staticText_d->font) {
- staticText_d->font = font();
- staticTextNeedsReinit = true;
- }
-
// Recreate the layout of the static text because the matrix or font has changed
if (staticTextNeedsReinit)
staticText_d->init();
@@ -5901,7 +5910,7 @@ void QPainter::drawStaticText(const QPointF &position, const QStaticText &static
QColor currentColor = oldPen.color();
for (int i=0; i<staticText_d->itemCount; ++i) {
QStaticTextItem *item = staticText_d->items + i;
- if (currentColor != item->color) {
+ if (item->color.isValid() && currentColor != item->color) {
setPen(item->color);
currentColor = item->color;
}
@@ -5910,9 +5919,6 @@ void QPainter::drawStaticText(const QPointF &position, const QStaticText &static
if (currentColor != oldPen.color())
setPen(oldPen);
- if (restoreWhenFinished)
- restore();
-
if (matrix.isTranslating())
d->state->matrix = matrix;
}
diff --git a/src/gui/painting/qpainter.h b/src/gui/painting/qpainter.h
index 443925b..edfb67e 100644
--- a/src/gui/painting/qpainter.h
+++ b/src/gui/painting/qpainter.h
@@ -396,9 +396,9 @@ public:
void setLayoutDirection(Qt::LayoutDirection direction);
Qt::LayoutDirection layoutDirection() const;
- void drawStaticText(const QPointF &p, const QStaticText &staticText);
- inline void drawStaticText(const QPoint &p, const QStaticText &staticText);
- inline void drawStaticText(int x, int y, const QStaticText &staticText);
+ void drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText);
+ inline void drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText);
+ inline void drawStaticText(int left, int top, const QStaticText &staticText);
void drawText(const QPointF &p, const QString &s);
inline void drawText(const QPoint &p, const QString &s);
diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp
index cf545be..9eda0ef 100644
--- a/src/gui/painting/qtextureglyphcache.cpp
+++ b/src/gui/painting/qtextureglyphcache.cpp
@@ -133,10 +133,13 @@ void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const
while (iter != listItemCoordinates.end()) {
Coord c = iter.value();
+ m_currentRowHeight = qMax(m_currentRowHeight, c.h + margin * 2);
+
if (m_cx + c.w > m_w) {
// no room on the current line, start new glyph strip
m_cx = 0;
- m_cy += rowHeight;
+ m_cy += m_currentRowHeight;
+ m_currentRowHeight = 0; // New row
}
if (m_cy + c.h > m_h) {
int new_height = m_h*2;
@@ -153,14 +156,7 @@ void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const
fillTexture(c, iter.key());
coords.insert(iter.key(), c);
- if (m_cx + c.w > m_w) {
- m_cx = 0;
- m_cy += rowHeight;
- } else {
- // for the Mono case, glyph_width is 8-bit aligned,
- // and therefore so will m_cx
- m_cx += c.w;
- }
+ m_cx += c.w;
++iter;
}
diff --git a/src/gui/painting/qtextureglyphcache_p.h b/src/gui/painting/qtextureglyphcache_p.h
index 803e71b..8c2f5b4 100644
--- a/src/gui/painting/qtextureglyphcache_p.h
+++ b/src/gui/painting/qtextureglyphcache_p.h
@@ -77,7 +77,7 @@ class Q_GUI_EXPORT QTextureGlyphCache : public QFontEngineGlyphCache
public:
QTextureGlyphCache(QFontEngineGlyphCache::Type type, const QTransform &matrix)
: QFontEngineGlyphCache(matrix, type), m_current_fontengine(0),
- m_w(0), m_h(0), m_cx(0), m_cy(0)
+ m_w(0), m_h(0), m_cx(0), m_cy(0), m_currentRowHeight(0)
{ }
virtual ~QTextureGlyphCache() { }
@@ -120,6 +120,7 @@ protected:
int m_h; // image height
int m_cx; // current x
int m_cy; // current y
+ int m_currentRowHeight; // Height of last row
};
diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp
index bd87ca4..9c61023 100644
--- a/src/gui/styles/qgtkstyle.cpp
+++ b/src/gui/styles/qgtkstyle.cpp
@@ -3423,6 +3423,9 @@ QRect QGtkStyle::subElementRect(SubElement element, const QStyleOption *option,
Q_D(const QGtkStyle);
QRect r = QCleanlooksStyle::subElementRect(element, option, widget);
+ if (!d->isThemeAvailable())
+ return r;
+
switch (element) {
case SE_ProgressBarLabel:
case SE_ProgressBarContents:
diff --git a/src/gui/styles/qgtkstyle_p.h b/src/gui/styles/qgtkstyle_p.h
index 5bb7550..68a04e9 100644
--- a/src/gui/styles/qgtkstyle_p.h
+++ b/src/gui/styles/qgtkstyle_p.h
@@ -85,9 +85,14 @@ public:
int size() const { return m_size; }
const char *data() const { return m_data; }
+#ifdef __SUNPRO_CC
+ QHashableLatin1Literal(const char* str)
+ : m_size(strlen(str)), m_data(str) {}
+#else
template <int N>
QHashableLatin1Literal(const char (&str)[N])
: m_size(N - 1), m_data(str) {}
+#endif
QHashableLatin1Literal(const QHashableLatin1Literal &other)
: m_size(other.m_size), m_data(other.m_data)
diff --git a/src/gui/styles/qplastiquestyle.cpp b/src/gui/styles/qplastiquestyle.cpp
index 4ae9f79..fbb5e4d 100644
--- a/src/gui/styles/qplastiquestyle.cpp
+++ b/src/gui/styles/qplastiquestyle.cpp
@@ -5846,7 +5846,6 @@ void QPlastiqueStyle::polish(QApplication *app)
void QPlastiqueStyle::polish(QPalette &pal)
{
QWindowsStyle::polish(pal);
- pal.setBrush(QPalette::AlternateBase, pal.base().color().darker(110));
#ifdef Q_WS_MAC
pal.setBrush(QPalette::Shadow, Qt::black);
#endif
diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index 750e19f..f49acc4 100644
--- a/src/gui/styles/qs60style.cpp
+++ b/src/gui/styles/qs60style.cpp
@@ -50,6 +50,7 @@
#include "qcalendarwidget.h"
#include "qdial.h"
#include "qdialog.h"
+#include "qmessagebox.h"
#include "qgroupbox.h"
#include "qheaderview.h"
#include "qlist.h"
@@ -61,7 +62,6 @@
#include "qscrollarea.h"
#include "qscrollbar.h"
#include "qtabbar.h"
-#include "qtablewidget.h"
#include "qtableview.h"
#include "qtextedit.h"
#include "qtoolbar.h"
@@ -92,10 +92,10 @@ static const qreal goldenRatio = 1.618;
const layoutHeader QS60StylePrivate::m_layoutHeaders[] = {
// *** generated layout data ***
-{240,320,1,16,"QVGA Landscape"},
-{320,240,1,16,"QVGA Portrait"},
-{360,640,1,16,"NHD Landscape"},
-{640,360,1,16,"NHD Portrait"},
+{240,320,1,17,"QVGA Landscape"},
+{320,240,1,17,"QVGA Portrait"},
+{360,640,1,17,"NHD Landscape"},
+{640,360,1,17,"NHD Portrait"},
{352,800,1,12,"E90 Landscape"}
// *** End of generated data ***
};
@@ -104,11 +104,11 @@ const int QS60StylePrivate::m_numberOfLayouts =
const short QS60StylePrivate::data[][MAX_PIXELMETRICS] = {
// *** generated pixel metrics ***
-{5,0,-909,0,0,2,0,0,-1,7,12,19,13,13,6,200,-909,-909,-909,20,13,2,0,0,21,7,18,0,3,3,1,-909,-909,0,1,0,0,12,20,15,15,18,18,1,115,18,0,-909,-909,-909,-909,0,0,16,2,-909,0,0,-909,16,-909,-909,-909,-909,32,18,55,24,55,4,4,4,9,13,-909,5,51,11,5,0,3,3,6,8,3,3,-909,2,-909,-909,-909,-909,5,5,3,1},
-{5,0,-909,0,0,1,0,0,-1,8,14,22,15,15,7,164,-909,-909,-909,19,15,2,0,0,21,8,27,0,4,4,1,-909,-909,0,7,6,0,13,23,17,17,21,21,7,115,21,0,-909,-909,-909,-909,0,0,15,1,-909,0,0,-909,15,-909,-909,-909,-909,32,21,65,27,65,3,3,5,10,15,-909,5,58,13,5,0,4,4,7,9,4,4,-909,2,-909,-909,-909,-909,6,6,3,1},
-{7,0,-909,0,0,2,0,0,-1,25,69,28,19,19,9,258,-909,-909,-909,23,19,26,0,0,32,25,72,0,5,5,2,-909,-909,0,7,21,0,17,29,22,22,27,27,7,173,29,0,-909,-909,-909,-909,0,0,25,2,-909,0,0,-909,25,-909,-909,-909,-909,87,27,77,35,77,13,13,6,8,19,-909,7,74,19,7,0,5,5,8,12,5,5,-909,3,-909,-909,-909,-909,7,7,3,1},
-{7,0,-909,0,0,2,0,0,-1,25,68,28,19,19,9,258,-909,-909,-909,31,19,6,0,0,32,25,60,0,5,5,2,-909,-909,0,7,32,0,17,29,22,22,27,27,7,173,29,0,-909,-909,-909,-909,0,0,26,2,-909,0,0,-909,26,-909,-909,-909,-909,87,27,96,35,96,12,12,6,8,19,-909,7,74,22,7,0,5,5,8,12,5,5,-909,3,-909,-909,-909,-909,7,7,3,1},
-{7,0,-909,0,0,2,0,0,-1,10,20,27,18,18,9,301,-909,-909,-909,29,18,5,0,0,35,7,32,0,5,5,2,-909,-909,0,2,8,0,16,28,21,21,26,26,2,170,26,0,-909,-909,-909,-909,0,0,21,6,-909,0,0,-909,-909,-909,-909,-909,-909,54,26,265,34,265,5,5,6,3,18,-909,7,72,19,7,0,5,6,8,11,6,5,-909,2,-909,-909,-909,-909,5,5,3,1}
+{5,0,-909,0,0,2,0,0,-1,7,12,19,13,13,6,200,-909,-909,-909,20,13,2,0,0,21,7,18,0,3,3,1,-909,-909,0,1,0,0,12,20,15,15,18,18,1,115,18,0,-909,-909,-909,-909,0,0,16,2,-909,0,0,-909,16,-909,-909,-909,-909,32,18,55,24,55,4,4,4,9,13,-909,5,51,11,5,0,3,3,6,8,3,3,-909,2,-909,-909,-909,-909,5,5,3,1, 106},
+{5,0,-909,0,0,1,0,0,-1,8,14,22,15,15,7,164,-909,-909,-909,19,15,2,0,0,21,8,27,0,4,4,1,-909,-909,0,7,6,0,13,23,17,17,21,21,7,115,21,0,-909,-909,-909,-909,0,0,15,1,-909,0,0,-909,15,-909,-909,-909,-909,32,21,65,27,65,3,3,5,10,15,-909,5,58,13,5,0,4,4,7,9,4,4,-909,2,-909,-909,-909,-909,6,6,3,1, 106},
+{7,0,-909,0,0,2,0,0,-1,25,69,28,19,19,9,258,-909,-909,-909,23,19,26,0,0,32,25,72,0,5,5,2,-909,-909,0,7,21,0,17,29,22,22,27,27,7,173,29,0,-909,-909,-909,-909,0,0,25,2,-909,0,0,-909,25,-909,-909,-909,-909,87,27,77,35,77,13,13,6,8,19,-909,7,74,19,7,0,5,5,8,12,5,5,-909,3,-909,-909,-909,-909,7,7,3,1, 135},
+{7,0,-909,0,0,2,0,0,-1,25,68,28,19,19,9,258,-909,-909,-909,31,19,6,0,0,32,25,60,0,5,5,2,-909,-909,0,7,32,0,17,29,22,22,27,27,7,173,29,0,-909,-909,-909,-909,0,0,26,2,-909,0,0,-909,26,-909,-909,-909,-909,87,27,96,35,96,12,12,6,8,19,-909,7,74,22,7,0,5,5,8,12,5,5,-909,3,-909,-909,-909,-909,7,7,3,1, 135},
+{7,0,-909,0,0,2,0,0,-1,10,20,27,18,18,9,301,-909,-909,-909,29,18,5,0,0,35,7,32,0,5,5,2,-909,-909,0,2,8,0,16,28,21,21,26,26,2,170,26,0,-909,-909,-909,-909,0,0,21,6,-909,0,0,-909,-909,-909,-909,-909,-909,54,26,265,34,265,5,5,6,3,18,-909,7,72,19,7,0,5,6,8,11,6,5,-909,2,-909,-909,-909,-909,5,5,3,1, 106}
// *** End of generated data ***
};
@@ -127,7 +127,7 @@ const struct QS60StylePrivate::frameElementCenter QS60StylePrivate::m_frameEleme
{SE_ButtonPressed, QS60StyleEnums::SP_QsnFrButtonTbCenterPressed},
{SE_FrameLineEdit, QS60StyleEnums::SP_QsnFrInputCenter},
{SE_ListHighlight, QS60StyleEnums::SP_QsnFrListCenter},
- {SE_OptionsMenu, QS60StyleEnums::SP_QsnFrPopupCenter},
+ {SE_PopupBackground, QS60StyleEnums::SP_QsnFrPopupCenter},
{SE_SettingsList, QS60StyleEnums::SP_QsnFrSetOptCenter},
{SE_TableItem, QS60StyleEnums::SP_QsnFrCaleCenter},
{SE_TableHeaderItem, QS60StyleEnums::SP_QsnFrCaleHeadingCenter},
@@ -250,8 +250,8 @@ void QS60StylePrivate::drawSkinElement(SkinElements element, QPainter *painter,
case SE_ListHighlight:
drawFrame(SF_ListHighlight, painter, rect, flags | SF_PointNorth);
break;
- case SE_OptionsMenu:
- drawFrame(SF_OptionsMenu, painter, rect, flags | SF_PointNorth);
+ case SE_PopupBackground:
+ drawFrame(SF_PopupBackground, painter, rect, flags | SF_PointNorth);
break;
case SE_SettingsList:
drawFrame(SF_SettingsList, painter, rect, flags | SF_PointNorth);
@@ -307,6 +307,13 @@ void QS60StylePrivate::drawSkinPart(QS60StyleEnums::SkinParts part,
short QS60StylePrivate::pixelMetric(int metric)
{
+ //If it is a custom value, need to strip away the base to map to internal
+ //pixel metric value table
+ if (metric & QStyle::PM_CustomBase) {
+ metric -= QStyle::PM_CustomBase;
+ metric += MAX_NON_CUSTOM_PIXELMETRICS - 1;
+ }
+
Q_ASSERT(metric < MAX_PIXELMETRICS);
const short returnValue = m_pmPointer[metric];
return returnValue;
@@ -407,8 +414,8 @@ QColor QS60StylePrivate::colorFromFrameGraphics(SkinFrameElements frame) const
{
const bool cachedColorExists = m_colorCache.contains(frame);
if (!cachedColorExists) {
- const int frameCornerWidth = pixelMetric(PM_Custom_FrameCornerWidth);
- const int frameCornerHeight = pixelMetric(PM_Custom_FrameCornerHeight);
+ const int frameCornerWidth = pixelMetric(PM_FrameCornerWidth);
+ const int frameCornerHeight = pixelMetric(PM_FrameCornerHeight);
Q_ASSERT(2 * frameCornerWidth < 32);
Q_ASSERT(2 * frameCornerHeight < 32);
@@ -630,6 +637,8 @@ void QS60StylePrivate::setFont(QWidget *widget) const
fontCategory = QS60StyleEnums::FC_Secondary;
} else if (qobject_cast<QGroupBox *>(widget)){
fontCategory = QS60StyleEnums::FC_Title;
+ } else if (qobject_cast<QMessageBox *>(widget)){
+ fontCategory = QS60StyleEnums::FC_Primary;
}
if (fontCategory != QS60StyleEnums::FC_Undefined) {
const bool resolveFontSize = widget->testAttribute(Qt::WA_SetFont)
@@ -868,7 +877,7 @@ QSize QS60StylePrivate::partSize(QS60StyleEnums::SkinParts part, SkinElementFlag
case QS60StyleEnums::SP_QgnGrafBarFrameSideL:
case QS60StyleEnums::SP_QgnGrafBarFrameSideR:
- result.setWidth(pixelMetric(PM_Custom_FrameCornerWidth));
+ result.setWidth(pixelMetric(PM_FrameCornerWidth));
break;
case QS60StyleEnums::SP_QsnCpScrollHandleTopPressed:
@@ -895,15 +904,15 @@ QSize QS60StylePrivate::partSize(QS60StyleEnums::SkinParts part, SkinElementFlag
case 7: /* CornerTr */
case 6: /* CornerBl */
case 5: /* CornerBr */
- result.setWidth(pixelMetric(PM_Custom_FrameCornerWidth));
+ result.setWidth(pixelMetric(PM_FrameCornerWidth));
// Falltrough intended...
case 4: /* SideT */
case 3: /* SideB */
- result.setHeight(pixelMetric(PM_Custom_FrameCornerHeight));
+ result.setHeight(pixelMetric(PM_FrameCornerHeight));
break;
case 2: /* SideL */
case 1: /* SideR */
- result.setWidth(pixelMetric(PM_Custom_FrameCornerWidth));
+ result.setWidth(pixelMetric(PM_FrameCornerWidth));
break;
case 0: /* center */
default:
@@ -1002,7 +1011,6 @@ void QS60Style::drawComplexControl(ComplexControl control, const QStyleOptionCom
QS60StylePrivate::SE_SliderGrooveVertical;
QS60StylePrivate::drawSkinElement(grooveElement, painter, sliderGroove, flags);
} else {
- const QRect sliderGroove = subControlRect(control, optionSlider, SC_SliderGroove, widget);
const QPoint sliderGrooveCenter = sliderGroove.center();
const bool horizontal = optionSlider->orientation == Qt::Horizontal;
painter->save();
@@ -1129,7 +1137,7 @@ void QS60Style::drawComplexControl(ComplexControl control, const QStyleOptionCom
drawPrimitive(pe, &toolButton, painter, widget);
}
- if (toolBtn->text.length()>0 ||
+ if (toolBtn->text.length() > 0 ||
!toolBtn->icon.isNull()) {
const int frameWidth = pixelMetric(PM_DefaultFrameWidth, option, widget);
toolButton.rect = button.adjusted(frameWidth, frameWidth, -frameWidth, -frameWidth);
@@ -1371,7 +1379,7 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option,
}
if (!comboBox->currentText.isEmpty() && !comboBox->editable) {
QCommonStyle::drawItemText(painter,
- editRect.adjusted(QS60StylePrivate::pixelMetric(PM_Custom_FrameCornerWidth), 0, -1, 0),
+ editRect.adjusted(QS60StylePrivate::pixelMetric(PM_FrameCornerWidth), 0, -1, 0),
visualAlignment(comboBox->direction, Qt::AlignLeft | Qt::AlignVCenter),
comboBox->palette, comboBox->state & State_Enabled, comboBox->currentText);
}
@@ -1836,8 +1844,8 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option,
painter->save();
QPen linePen = QPen(QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnLineColors, 1, header));
const int penWidth = (header->orientation == Qt::Horizontal) ?
- linePen.width() + QS60StylePrivate::pixelMetric(PM_Custom_BoldLineWidth)
- : linePen.width() + QS60StylePrivate::pixelMetric(PM_Custom_ThinLineWidth);
+ linePen.width() + QS60StylePrivate::pixelMetric(PM_BoldLineWidth)
+ : linePen.width() + QS60StylePrivate::pixelMetric(PM_ThinLineWidth);
linePen.setWidth(penWidth);
painter->setPen(linePen);
if (header->orientation == Qt::Horizontal){
@@ -1856,7 +1864,7 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option,
//Make cornerButton slightly smaller so that it is not on top of table border graphic.
QStyleOptionHeader subopt = *header;
const int borderTweak =
- QS60StylePrivate::pixelMetric(PM_Custom_FrameCornerWidth) >> 1;
+ QS60StylePrivate::pixelMetric(PM_FrameCornerWidth) >> 1;
if (subopt.direction == Qt::LeftToRight)
subopt.rect.adjust(borderTweak, borderTweak, 0, -borderTweak);
else
@@ -1964,40 +1972,37 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option,
case CE_MenuScroller:
break;
case CE_FocusFrame: {
- // The pen width should nearly fill the layoutspacings around the widget
- const int penWidth =
- qMin(pixelMetric(QS60Style::PM_LayoutVerticalSpacing), pixelMetric(QS60Style::PM_LayoutHorizontalSpacing))
- - 2; // But keep 1 pixel distance to the focus widget and 1 pixel to the adjacent widgets
-
#ifdef QT_KEYPAD_NAVIGATION
bool editFocus = false;
if (const QFocusFrame *focusFrame = qobject_cast<const QFocusFrame*>(widget)) {
if (focusFrame->widget() && focusFrame->widget()->hasEditFocus())
editFocus = true;
}
- const qreal opacity = editFocus ? 0.65 : 0.45; // Trial and error factors. Feel free to improve.
+ const qreal opacity = editFocus ? 1 : 0.75; // Trial and error factors. Feel free to improve.
#else
- const qreal opacity = 0.5;
+ const qreal opacity = 0.85;
#endif
- // Because of Qts coordinate system, we need to tweak the rect by .5 pixels, otherwise it gets blurred.
- const qreal rectAdjustment = (penWidth % 2) ? -.5 : 0;
-
- // Make sure that the pen stroke is inside the rect
- const QRectF adjustedRect =
- QRectF(option->rect).adjusted(
- rectAdjustment + penWidth,
- rectAdjustment + penWidth,
- -rectAdjustment - penWidth,
- -rectAdjustment - penWidth
- );
-
- const qreal roundRectRadius = penWidth * goldenRatio;
+ // We need to reduce the focus frame size if LayoutSpacing is smaller than FocusFrameMargin
+ // Otherwise, we would overlay adjacent widgets.
+ const int frameHeightReduction =
+ qMin(0, pixelMetric(QStyle::PM_LayoutVerticalSpacing)
+ - pixelMetric(QStyle::PM_FocusFrameVMargin));
+ const int frameWidthReduction =
+ qMin(0, pixelMetric(QStyle::PM_LayoutHorizontalSpacing)
+ - pixelMetric(QStyle::PM_FocusFrameHMargin));
+ const int rounding =
+ qMin(pixelMetric(QStyle::PM_FocusFrameVMargin),
+ pixelMetric(QStyle::PM_LayoutVerticalSpacing));
+ const QRect frameRect =
+ option->rect.adjusted(-frameWidthReduction, -frameHeightReduction,
+ frameWidthReduction, frameHeightReduction);
+ QPainterPath framePath;
+ framePath.addRoundedRect(frameRect, rounding, rounding);
painter->save();
painter->setRenderHint(QPainter::Antialiasing);
painter->setOpacity(opacity);
- painter->setPen(QPen(option->palette.color(QPalette::Text), penWidth));
- painter->drawRoundedRect(adjustedRect, roundRectRadius, roundRectRadius);
+ painter->fillPath(framePath, option->palette.color(QPalette::Text));
painter->restore();
}
break;
@@ -2080,7 +2085,7 @@ void QS60Style::drawPrimitive(PrimitiveElement element, const QStyleOption *opti
// ... or normal "tick" selection at the end.
} else if (option->state & State_Selected) {
QRect tickRect = option->rect;
- const int frameBorderWidth = QS60StylePrivate::pixelMetric(PM_Custom_FrameCornerWidth);
+ const int frameBorderWidth = QS60StylePrivate::pixelMetric(PM_FrameCornerWidth);
// adjust tickmark rect to exclude frame border
tickRect.adjust(0, -frameBorderWidth, 0, -frameBorderWidth);
QS60StyleEnums::SkinParts skinPart = QS60StyleEnums::SP_QgnIndiMarkedAdd;
@@ -2161,7 +2166,7 @@ void QS60Style::drawPrimitive(PrimitiveElement element, const QStyleOption *opti
const QS60StyleEnums::SkinParts part = (element == PE_IndicatorSpinUp) ?
QS60StyleEnums::SP_QgnGrafScrollArrowUp :
QS60StyleEnums::SP_QgnGrafScrollArrowDown;
- const int iconMargin = QS60StylePrivate::pixelMetric(PM_Custom_FrameCornerWidth) >> 1;
+ const int iconMargin = QS60StylePrivate::pixelMetric(PM_FrameCornerWidth) >> 1;
optionSpinBox.rect.translate(0, (element == PE_IndicatorSpinDown) ? iconMargin : -iconMargin );
QS60StylePrivate::drawSkinPart(part, painter, optionSpinBox.rect, flags);
} else {
@@ -2175,7 +2180,7 @@ void QS60Style::drawPrimitive(PrimitiveElement element, const QStyleOption *opti
// We want to draw down arrow here for comboboxes as well.
QStyleOptionFrame optionsComboBox = *cmb;
const QS60StyleEnums::SkinParts part = QS60StyleEnums::SP_QgnGrafScrollArrowDown;
- const int iconMargin = QS60StylePrivate::pixelMetric(PM_Custom_FrameCornerWidth) >> 1;
+ const int iconMargin = QS60StylePrivate::pixelMetric(PM_FrameCornerWidth) >> 1;
optionsComboBox.rect.translate(0, (element == PE_IndicatorSpinDown) ? iconMargin : -iconMargin );
QS60StylePrivate::drawSkinPart(part, painter, optionsComboBox.rect, flags);
} else {
@@ -2213,7 +2218,7 @@ void QS60Style::drawPrimitive(PrimitiveElement element, const QStyleOption *opti
if (QS60StylePrivate::canDrawThemeBackground(option->palette.base(), widget) &&
option->palette.window().texture().cacheKey() ==
QS60StylePrivate::m_themePalette->window().texture().cacheKey())
- QS60StylePrivate::drawSkinElement(QS60StylePrivate::SE_OptionsMenu, painter, option->rect, flags);
+ QS60StylePrivate::drawSkinElement(QS60StylePrivate::SE_PopupBackground, painter, option->rect, flags);
else
commonStyleDraws = true;
}
@@ -2309,7 +2314,7 @@ void QS60Style::drawPrimitive(PrimitiveElement element, const QStyleOption *opti
(option->state & State_Open) ? QS60StyleEnums::SP_QgnIndiHlColSuper : QS60StyleEnums::SP_QgnIndiHlExpSuper;
int minDimension = qMin(option->rect.width(), option->rect.height());
QRect iconRect(option->rect.topLeft(), QSize(minDimension, minDimension));
- const int magicTweak = 3;
+ const int magicTweak = 3;
int resizeValue = minDimension >> 1;
if (!QS60StylePrivate::isTouchSupported()) {
minDimension += resizeValue; // Adjust the icon bigger because of empty space in svg icon.
@@ -2384,13 +2389,6 @@ int QS60Style::pixelMetric(PixelMetric metric, const QStyleOption *option, const
if (metricValue == KNotFound)
metricValue = QCommonStyle::pixelMetric(metric, option, widget);
- if (metric == PM_SubMenuOverlap && widget) {
- const QMenu *menu = qobject_cast<const QMenu *>(widget);
- if (menu && menu->activeAction() && menu->activeAction()->menu()) {
- const int menuWidth = menu->activeAction()->menu()->sizeHint().width();
- metricValue = -menuWidth;
- }
- }
//if layout direction is mirrored, switch left and right border margins
if (option && option->direction == Qt::RightToLeft) {
if (metric == PM_LayoutLeftMargin)
@@ -2398,6 +2396,12 @@ int QS60Style::pixelMetric(PixelMetric metric, const QStyleOption *option, const
else if (metric == PM_LayoutRightMargin)
metricValue = QS60StylePrivate::pixelMetric(PM_LayoutLeftMargin);
}
+
+ if (widget && (metric == PM_LayoutTopMargin))
+ if (widget->windowType() == Qt::Dialog)
+ //double the top layout margin for dialogs, it is very close to real value
+ //without having to define custom pixel metric
+ metricValue *= 2;
return metricValue;
}
@@ -2429,7 +2433,7 @@ QSize QS60Style::sizeFromContents(ContentsType ct, const QStyleOption *opt,
const int contentHeight =
qMax(qMax(iconHeight, decoratorHeight) + pixelMetric(PM_ButtonMargin),
textHeight + 2*pixelMetric(PM_ButtonMargin));
- sz.setHeight(contentHeight);
+ sz.setHeight(qMax(sz.height(), contentHeight));
sz += QSize(2 * pixelMetric(PM_ButtonMargin), 0);
}
break;
@@ -2454,9 +2458,9 @@ QSize QS60Style::sizeFromContents(ContentsType ct, const QStyleOption *opt,
#ifndef QT_NO_COMBOBOX
case CT_ComboBox: {
// Fixing Ui design issues with too wide QComboBoxes and greedy SizeHints
- // Make sure, that the combobox says within the screen.
+ // Make sure, that the combobox stays within the screen.
const QSize desktopContentSize = QApplication::desktop()->availableGeometry().size()
- -QSize(pixelMetric(PM_LayoutLeftMargin) + pixelMetric(PM_LayoutRightMargin), 0);
+ - QSize(pixelMetric(PM_LayoutLeftMargin) + pixelMetric(PM_LayoutRightMargin), 0);
sz = QCommonStyle::sizeFromContents(ct, opt, csz, widget).
boundedTo(desktopContentSize);
}
@@ -2622,14 +2626,22 @@ QRect QS60Style::subControlRect(ComplexControl control, const QStyleOptionComple
const int frameThickness = spinbox->frame ? pixelMetric(PM_SpinBoxFrameWidth, spinbox, widget) : 0;
const int buttonMargin = spinbox->frame ? 2 : 0;
const int buttonContentWidth = QS60StylePrivate::pixelMetric(PM_ButtonIconSize) + 2 * buttonMargin;
+ // Spinbox buttons should be no larger than one fourth of total width.
+ // Thus, side-by-side buttons would take half of the total width.
+ const int maxSize = qMax(spinbox->rect.width() / 4, buttonContentWidth);
QSize buttonSize;
- buttonSize.setHeight(qMax(8, spinbox->rect.height() - frameThickness));
+ buttonSize.setHeight(qMin(maxSize, qMax(8, spinbox->rect.height() - frameThickness)));
//width should at least be equal to height
buttonSize.setWidth(qMax(buttonSize.height(), buttonContentWidth));
buttonSize = buttonSize.expandedTo(QApplication::globalStrut());
- const int y = frameThickness + spinbox->rect.y();
- const int x = spinbox->rect.x() + spinbox->rect.width() - frameThickness - 2 * buttonSize.width();
+ // Normally spinbuttons should be side-by-side, but if spinbox grows very big
+ // and spinbuttons reach their maximum size, they can be deployed one top of the other.
+ const bool sideBySide = (buttonSize.height() * 2 < spinbox->rect.height()) ? false : true;
+ const int y = frameThickness + spinbox->rect.y() +
+ (spinbox->rect.height() - (sideBySide ? 1 : 2) * buttonSize.height()) / 2;
+ const int x = spinbox->rect.x() +
+ spinbox->rect.width() - frameThickness - (sideBySide ? 2 : 1) * buttonSize.width();
switch (scontrol) {
case SC_SpinBoxUp:
@@ -2640,7 +2652,9 @@ QRect QS60Style::subControlRect(ComplexControl control, const QStyleOptionComple
case SC_SpinBoxDown:
if (spinbox->buttonSymbols == QAbstractSpinBox::NoButtons)
return QRect();
- ret = QRect(x + buttonSize.width(), y, buttonSize.width(), buttonSize.height());
+ ret = QRect(x + (sideBySide ? buttonSize.width() : 0),
+ y + (sideBySide ? 0 : buttonSize.height()),
+ buttonSize.width(), buttonSize.height());
break;
case SC_SpinBoxEditField:
if (spinbox->buttonSymbols == QAbstractSpinBox::NoButtons)
@@ -2783,11 +2797,10 @@ QRect QS60Style::subElementRect(SubElement element, const QStyleOption *opt, con
break;
case SE_LineEditContents: {
// in S60 the input text box doesn't start from line Edit's TL, but
- // a bit indented.
- QRect lineEditRect = opt->rect;
- const int adjustment = opt->rect.height() >> 2;
- lineEditRect.adjust(adjustment, 0, 0, 0);
- ret = lineEditRect;
+ // a bit indented (8 pixels).
+ const int KLineEditDefaultIndention = 8;
+ ret = visualRect(
+ opt->direction, opt->rect, opt->rect.adjusted(KLineEditDefaultIndention, 0, 0, 0));
}
break;
case SE_TabBarTearIndicator:
@@ -2929,9 +2942,9 @@ QRect QS60Style::subElementRect(SubElement element, const QStyleOption *opt, con
if (qstyleoption_cast<const QStyleOptionHeader *>(opt)) {
// Subtract area needed for line
if (opt->state & State_Horizontal)
- ret.setHeight(ret.height() - QS60StylePrivate::pixelMetric(PM_Custom_BoldLineWidth));
+ ret.setHeight(ret.height() - QS60StylePrivate::pixelMetric(PM_BoldLineWidth));
else
- ret.setWidth(ret.width() - QS60StylePrivate::pixelMetric(PM_Custom_ThinLineWidth));
+ ret.setWidth(ret.width() - QS60StylePrivate::pixelMetric(PM_ThinLineWidth));
}
ret = visualRect(opt->direction, opt->rect, ret);
break;
@@ -3242,7 +3255,7 @@ bool QS60Style::eventFilter(QObject *object, QEvent *event)
/*!
\internal
- Handle the timer \a event.
+ Handle the timer \a event.
*/
void QS60Style::timerEvent(QTimerEvent *event)
{
diff --git a/src/gui/styles/qs60style.h b/src/gui/styles/qs60style.h
index 82cc21c..c878538 100644
--- a/src/gui/styles/qs60style.h
+++ b/src/gui/styles/qs60style.h
@@ -52,6 +52,16 @@ QT_MODULE(Gui)
#if !defined(QT_NO_STYLE_S60)
+//Public custom pixel metrics values.
+//These can be used to fetch custom pixel metric value from outside QS60Style.
+enum {
+ PM_FrameCornerWidth = QStyle::PM_CustomBase + 1,
+ PM_FrameCornerHeight,
+ PM_BoldLineWidth,
+ PM_ThinLineWidth,
+ PM_MessageBoxHeight
+ };
+
class QS60StylePrivate;
class Q_GUI_EXPORT QS60Style : public QCommonStyle
diff --git a/src/gui/styles/qs60style_p.h b/src/gui/styles/qs60style_p.h
index 16d82e7..6ce4960 100644
--- a/src/gui/styles/qs60style_p.h
+++ b/src/gui/styles/qs60style_p.h
@@ -60,13 +60,8 @@
QT_BEGIN_NAMESPACE
const int MAX_NON_CUSTOM_PIXELMETRICS = 92;
-const int CUSTOMVALUESCOUNT = 4;
-enum {
- PM_Custom_FrameCornerWidth = MAX_NON_CUSTOM_PIXELMETRICS,
- PM_Custom_FrameCornerHeight,
- PM_Custom_BoldLineWidth,
- PM_Custom_ThinLineWidth
- };
+const int CUSTOMVALUESCOUNT = 5;
+
const int MAX_PIXELMETRICS = MAX_NON_CUSTOM_PIXELMETRICS + CUSTOMVALUESCOUNT;
typedef struct {
@@ -416,7 +411,7 @@ public:
SE_TabBarTabWestActive,
SE_TabBarTabWestInactive,
SE_ListHighlight,
- SE_OptionsMenu,
+ SE_PopupBackground,
SE_SettingsList,
SE_TableItem,
SE_TableHeaderItem,
@@ -425,7 +420,7 @@ public:
SE_ToolBarButton,
SE_ToolBarButtonPressed,
SE_PanelBackground,
- SE_ScrollBarHandlePressedHorizontal, //only for 5.0+
+ SE_ScrollBarHandlePressedHorizontal,
SE_ScrollBarHandlePressedVertical,
SE_ButtonInactive,
SE_Editor,
@@ -437,7 +432,7 @@ public:
SF_ButtonPressed,
SF_FrameLineEdit,
SF_ListHighlight,
- SF_OptionsMenu,
+ SF_PopupBackground,
SF_SettingsList,
SF_TableItem,
SF_TableHeaderItem,
diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp
index 4a279a7..6a552e0 100644
--- a/src/gui/styles/qs60style_s60.cpp
+++ b/src/gui/styles/qs60style_s60.cpp
@@ -755,7 +755,7 @@ QPixmap QS60StyleModeSpecifics::createSkinnedGraphicsLX(
if (drawn)
result = fromFbsBitmap(background, NULL, flags, targetSize);
- // if drawing fails in skin server, just ignore the background (probably OOM occured)
+ // if drawing fails in skin server, just ignore the background (probably OOM case)
CleanupStack::PopAndDestroy(4, background); //background, dev, gc, bgContext
// QS60WindowSurface::lockBitmapHeap();
@@ -787,7 +787,7 @@ QPixmap QS60StyleModeSpecifics::createSkinnedGraphicsLX(
const int currentFrame = QS60StylePrivate::currentAnimationFrame(part);
if (constructedFromTheme && aknAnimation && aknAnimation->BitmapAnimData()->FrameArray().Count() > 0) {
- //Animation was created succesfully and contains frames, just fetch current frame
+ //Animation was created successfully and contains frames, just fetch current frame
if(currentFrame >= aknAnimation->BitmapAnimData()->FrameArray().Count())
User::Leave(KErrOverflow);
const CBitmapFrameData* frameData = aknAnimation->BitmapAnimData()->FrameArray().At(currentFrame);
@@ -859,11 +859,9 @@ QPixmap QS60StyleModeSpecifics::createSkinnedGraphicsLX(QS60StylePrivate::SkinFr
User::LeaveIfError(bitmapDev->CreateContext(bitmapGc));
CleanupStack::PushL(bitmapGc);
-#ifndef Q_SYMBIAN_HAS_EXTENDED_BITMAP_TYPE
frame->LockHeap();
memset(frame->DataAddress(), 0, frame->SizeInPixels().iWidth * frame->SizeInPixels().iHeight * 4); // 4: argb bytes
frame->UnlockHeap();
-#endif
const TRect outerRect(TPoint(0, 0), targetSize);
const TRect innerRect = innerRectFromElement(frameElement, outerRect);
@@ -978,21 +976,25 @@ void QS60StyleModeSpecifics::frameIdAndCenterId(QS60StylePrivate::SkinFrameEleme
TRect QS60StyleModeSpecifics::innerRectFromElement(QS60StylePrivate::SkinFrameElements frameElement, const TRect &outerRect)
{
- TInt widthShrink = QS60StylePrivate::pixelMetric(PM_Custom_FrameCornerWidth);
- TInt heightShrink = QS60StylePrivate::pixelMetric(PM_Custom_FrameCornerHeight);
+ TInt widthShrink = QS60StylePrivate::pixelMetric(PM_FrameCornerWidth);
+ TInt heightShrink = QS60StylePrivate::pixelMetric(PM_FrameCornerHeight);
switch(frameElement) {
case QS60StylePrivate::SF_PanelBackground:
// panel should have slightly slimmer border to enable thin line of background graphics between closest component
- widthShrink = widthShrink-2;
- heightShrink = heightShrink-2;
+ widthShrink = widthShrink - 2;
+ heightShrink = heightShrink - 2;
break;
case QS60StylePrivate::SF_ToolTip:
- widthShrink = widthShrink>>1;
- heightShrink = heightShrink>>1;
+ widthShrink = widthShrink >> 1;
+ heightShrink = heightShrink >> 1;
break;
case QS60StylePrivate::SF_ListHighlight:
- widthShrink = widthShrink-2;
- heightShrink = heightShrink-2;
+ widthShrink = widthShrink - 2;
+ heightShrink = heightShrink - 2;
+ break;
+ case QS60StylePrivate::SF_PopupBackground:
+ widthShrink = widthShrink + 5;
+ heightShrink = heightShrink + 5;
break;
default:
break;
@@ -1096,7 +1098,7 @@ void QS60StylePrivate::setActiveLayout()
activeLayoutIndex += (!landscape) ? 1 : 0;
}
- m_pmPointer = data[activeLayoutIndex];
+ setCurrentLayout(activeLayoutIndex);
}
Q_GLOBAL_STATIC(QList<QS60StyleAnimation *>, m_animations)
diff --git a/src/gui/styles/qwindowsstyle.cpp b/src/gui/styles/qwindowsstyle.cpp
index 60c06ca..1653baa 100644
--- a/src/gui/styles/qwindowsstyle.cpp
+++ b/src/gui/styles/qwindowsstyle.cpp
@@ -3105,7 +3105,9 @@ void QWindowsStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComp
qDrawWinButton(p, copy.rect, shadePal, copy.state & (State_Sunken | State_On),
&copy.palette.brush(QPalette::Button));
copy.rect.adjust(4, 1, -5, -1);
- if (!enabled || !(sb->stepEnabled & QAbstractSpinBox::StepUpEnabled) ) {
+ if ((!enabled || !(sb->stepEnabled & QAbstractSpinBox::StepUpEnabled))
+ && proxy()->styleHint(SH_EtchDisabledText, opt, widget) )
+ {
QStyleOptionSpinBox lightCopy = copy;
lightCopy.rect.adjust(1, 1, 1, 1);
lightCopy.palette.setBrush(QPalette::ButtonText, copy.palette.light());
@@ -3138,7 +3140,9 @@ void QWindowsStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComp
qDrawWinButton(p, copy.rect, shadePal, copy.state & (State_Sunken | State_On),
&copy.palette.brush(QPalette::Button));
copy.rect.adjust(4, 0, -5, -1);
- if (!enabled || !(sb->stepEnabled & QAbstractSpinBox::StepDownEnabled) ) {
+ if ((!enabled || !(sb->stepEnabled & QAbstractSpinBox::StepDownEnabled))
+ && proxy()->styleHint(SH_EtchDisabledText, opt, widget) )
+ {
QStyleOptionSpinBox lightCopy = copy;
lightCopy.rect.adjust(1, 1, 1, 1);
lightCopy.palette.setBrush(QPalette::ButtonText, copy.palette.light());
diff --git a/src/gui/text/qfontdatabase_s60.cpp b/src/gui/text/qfontdatabase_s60.cpp
index 621f666..ef5e0c4 100644
--- a/src/gui/text/qfontdatabase_s60.cpp
+++ b/src/gui/text/qfontdatabase_s60.cpp
@@ -332,6 +332,11 @@ bool QFontDatabase::removeApplicationFont(int handle)
return false;
}
+bool QFontDatabase::removeAllApplicationFonts()
+{
+ return false;
+}
+
bool QFontDatabase::supportsThreadedFontRendering()
{
return false;
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index e5975d2..194c5f3 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -379,6 +379,15 @@ void QFontEngine::getGlyphPositions(const QGlyphLayout &glyphs, const QTransform
Q_ASSERT(positions.size() == glyphs_out.size());
}
+void QFontEngine::getGlyphBearings(glyph_t glyph, qreal *leftBearing, qreal *rightBearing)
+{
+ glyph_metrics_t gi = boundingBox(glyph);
+ bool isValid = gi.isValid();
+ if (leftBearing != 0)
+ *leftBearing = isValid ? gi.x.toReal() : 0.0;
+ if (rightBearing != 0)
+ *rightBearing = isValid ? (gi.xoff - gi.x - gi.width).toReal() : 0.0;
+}
glyph_metrics_t QFontEngine::tightBoundingBox(const QGlyphLayout &glyphs)
{
@@ -1389,6 +1398,12 @@ glyph_metrics_t QFontEngineMulti::boundingBox(const QGlyphLayout &glyphs)
return overall;
}
+void QFontEngineMulti::getGlyphBearings(glyph_t glyph, qreal *leftBearing, qreal *rightBearing)
+{
+ int which = highByte(glyph);
+ engine(which)->getGlyphBearings(stripped(glyph), leftBearing, rightBearing);
+}
+
void QFontEngineMulti::addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs,
QPainterPath *path, QTextItem::RenderFlags flags)
{
diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h
index 71ab5a5..e645caf 100644
--- a/src/gui/text/qfontengine_p.h
+++ b/src/gui/text/qfontengine_p.h
@@ -206,6 +206,8 @@ public:
virtual qreal minLeftBearing() const { return qreal(); }
virtual qreal minRightBearing() const { return qreal(); }
+ virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = 0, qreal *rightBearing = 0);
+
virtual const char *name() const = 0;
virtual bool canRender(const QChar *string, int len) = 0;
@@ -374,6 +376,7 @@ public:
virtual void recalcAdvances(QGlyphLayout *, QTextEngine::ShaperFlags) const;
virtual void doKerning(QGlyphLayout *, QTextEngine::ShaperFlags) const;
virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags);
+ virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = 0, qreal *rightBearing = 0);
virtual QFixed ascent() const;
virtual QFixed descent() const;
diff --git a/src/gui/text/qfontengine_win.cpp b/src/gui/text/qfontengine_win.cpp
index 55e93bd..a805612 100644
--- a/src/gui/text/qfontengine_win.cpp
+++ b/src/gui/text/qfontengine_win.cpp
@@ -39,6 +39,11 @@
**
****************************************************************************/
+#if _WIN32_WINNT < 0x0500
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0500
+#endif
+
#include "qfontengine_p.h"
#include "qtextengine_p.h"
#include <qglobal.h>
@@ -649,6 +654,32 @@ static const ushort char_table[] = {
static const int char_table_entries = sizeof(char_table)/sizeof(ushort);
+#ifndef Q_CC_MINGW
+void QFontEngineWin::getGlyphBearings(glyph_t glyph, qreal *leftBearing, qreal *rightBearing)
+{
+ HDC hdc = shared_dc();
+ SelectObject(hdc, hfont);
+
+#ifndef Q_WS_WINCE
+ if (ttf)
+#endif
+
+ {
+ ABC abcWidths;
+ GetCharABCWidthsI(hdc, glyph, 1, 0, &abcWidths);
+ if (leftBearing)
+ *leftBearing = abcWidths.abcA;
+ if (rightBearing)
+ *rightBearing = abcWidths.abcC;
+ }
+
+#ifndef Q_WS_WINCE
+ else {
+ QFontEngine::getGlyphBearings(glyph, leftBearing, rightBearing);
+ }
+#endif
+}
+#endif // Q_CC_MINGW
qreal QFontEngineWin::minLeftBearing() const
{
diff --git a/src/gui/text/qfontengine_win_p.h b/src/gui/text/qfontengine_win_p.h
index f9d8f8b..68b53b5 100644
--- a/src/gui/text/qfontengine_win_p.h
+++ b/src/gui/text/qfontengine_win_p.h
@@ -106,6 +106,10 @@ public:
virtual QImage alphaMapForGlyph(glyph_t, const QTransform &xform);
virtual QImage alphaRGBMapForGlyph(glyph_t t, int margin, const QTransform &xform);
+#ifndef Q_CC_MINGW
+ virtual void getGlyphBearings(glyph_t glyph, qreal *leftBearing = 0, qreal *rightBearing = 0);
+#endif
+
int getGlyphIndexes(const QChar *ch, int numChars, QGlyphLayout *glyphs, bool mirrored) const;
void getCMap();
diff --git a/src/gui/text/qfontmetrics.cpp b/src/gui/text/qfontmetrics.cpp
index 7f9ae8b..3a52e8e 100644
--- a/src/gui/text/qfontmetrics.cpp
+++ b/src/gui/text/qfontmetrics.cpp
@@ -472,8 +472,9 @@ int QFontMetrics::leftBearing(QChar ch) const
int nglyphs = 9;
engine->stringToCMap(&ch, 1, &glyphs, &nglyphs, 0);
// ### can nglyphs != 1 happen at all? Not currently I think
- glyph_metrics_t gi = engine->boundingBox(glyphs.glyphs[0]);
- return qRound(gi.x);
+ qreal lb;
+ engine->getGlyphBearings(glyphs.glyphs[0], &lb);
+ return qRound(lb);
}
/*!
@@ -506,8 +507,9 @@ int QFontMetrics::rightBearing(QChar ch) const
int nglyphs = 9;
engine->stringToCMap(&ch, 1, &glyphs, &nglyphs, 0);
// ### can nglyphs != 1 happen at all? Not currently I think
- glyph_metrics_t gi = engine->boundingBox(glyphs.glyphs[0]);
- return qRound(gi.xoff - gi.x - gi.width);
+ qreal rb;
+ engine->getGlyphBearings(glyphs.glyphs[0], 0, &rb);
+ return qRound(rb);
}
/*!
@@ -1317,8 +1319,9 @@ qreal QFontMetricsF::leftBearing(QChar ch) const
int nglyphs = 9;
engine->stringToCMap(&ch, 1, &glyphs, &nglyphs, 0);
// ### can nglyphs != 1 happen at all? Not currently I think
- glyph_metrics_t gi = engine->boundingBox(glyphs.glyphs[0]);
- return gi.x.toReal();
+ qreal lb;
+ engine->getGlyphBearings(glyphs.glyphs[0], &lb);
+ return lb;
}
/*!
@@ -1351,8 +1354,10 @@ qreal QFontMetricsF::rightBearing(QChar ch) const
int nglyphs = 9;
engine->stringToCMap(&ch, 1, &glyphs, &nglyphs, 0);
// ### can nglyphs != 1 happen at all? Not currently I think
- glyph_metrics_t gi = engine->boundingBox(glyphs.glyphs[0]);
- return (gi.xoff - gi.x - gi.width).toReal();
+ qreal rb;
+ engine->getGlyphBearings(glyphs.glyphs[0], 0, &rb);
+ return rb;
+
}
/*!
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index d685cd9..6c504a7 100644
--- a/src/gui/text/qstatictext.cpp
+++ b/src/gui/text/qstatictext.cpp
@@ -99,20 +99,27 @@ QT_BEGIN_NAMESPACE
point with no boundaries, and also when QPainter::drawText() is called with a bounding
rectangle.
- If a bounding rectangle is not required, create a QStaticText object without setting a maximum
- size. The text will then occupy a single line.
+ If a bounding rectangle is not required, create a QStaticText object without setting a preferred
+ text width. The text will then occupy a single line.
- If you set a maximum size on the QStaticText object, this will bound the text. The text will
- be formatted so that no line exceeds the given width. When the object is painted, it will
- be clipped at the given size. The position of the text is decided by the argument
- passed to QPainter::drawStaticText() and can change from call to call with a minimal impact
- on performance.
+ If you set a text width on the QStaticText object, this will bound the text. The text will
+ be formatted so that no line exceeds the given width. The text width set for QStaticText will
+ not automatically be used for clipping. To achieve clipping in addition to line breaks, use
+ QPainter::setClipRect(). The position of the text is decided by the argument passed to
+ QPainter::drawStaticText() and can change from call to call with a minimal impact on
+ performance.
QStaticText will attempt to guess the format of the input text using Qt::mightBeRichText().
To force QStaticText to display its contents as either plain text or rich text, use the
function QStaticText::setTextFormat() and pass in, respectively, Qt::PlainText and
Qt::RichText.
+ If it's the first time the static text is drawn, or if the static text, or the painter's font
+ or matrix have been altered since the last time it was drawn, the text's layout has to be
+ recalculated. This will impose an overhead on the QPainter::drawStaticText() call where the
+ relayout occurs. To avoid this overhead in the paint event, you can call prepare() ahead of
+ time to ensure that the layout is calculated.
+
\sa QPainter::drawText(), QPainter::drawStaticText(), QTextLayout, QTextDocument
*/
@@ -143,12 +150,11 @@ QStaticText::QStaticText()
If an invalid size is passed for \a size the text will be unbounded.
*/
-QStaticText::QStaticText(const QString &text, const QSizeF &size)
+QStaticText::QStaticText(const QString &text)
: data(new QStaticTextPrivate)
{
data->text = text;
- data->maximumSize = size;
- data->init();
+ data->invalidate();
}
/*!
@@ -177,17 +183,17 @@ void QStaticText::detach()
}
/*!
- Prepares the QStaticText object for being painted with the given \a matrix and the given
- \a font to avoid overhead when the actual drawStaticText() call is made.
+ Prepares the QStaticText object for being painted with the given \a matrix and the given \a font
+ to avoid overhead when the actual drawStaticText() call is made.
- When drawStaticText() is called, the layout of the QStaticText will be recalculated if the
- painter's font or matrix is different from the one used for the currently cached layout. By
- default, QStaticText will use a default constructed QFont and an identity matrix to create
- its layout.
+ When drawStaticText() is called, the layout of the QStaticText will be recalculated if any part
+ of the QStaticText object has changed since the last time it was drawn. It will also be
+ recalculated if the painter's font or matrix are not the same as when the QStaticText was last
+ drawn.
- To avoid the overhead of creating the layout the first time you draw the QStaticText with
- a painter whose matrix or font are different from the defaults, you can use the prepare()
- function and pass in the matrix and font you expect to use when drawing the text.
+ To avoid the overhead of creating the layout the first time you draw the QStaticText after
+ making changes, you can use the prepare() function and pass in the \a matrix and \a font you
+ expect to use when drawing the text.
\sa QPainter::setFont(), QPainter::setMatrix()
*/
@@ -209,7 +215,7 @@ QStaticText &QStaticText::operator=(const QStaticText &other)
}
/*!
- Compares \a other to this QStaticText. Returns true if the texts, fonts and maximum sizes
+ Compares \a other to this QStaticText. Returns true if the texts, fonts and text widths
are equal.
*/
bool QStaticText::operator==(const QStaticText &other) const
@@ -217,7 +223,7 @@ bool QStaticText::operator==(const QStaticText &other) const
return (data == other.data
|| (data->text == other.data->text
&& data->font == other.data->font
- && data->maximumSize == other.data->maximumSize));
+ && data->textWidth == other.data->textWidth));
}
/*!
@@ -232,7 +238,7 @@ bool QStaticText::operator!=(const QStaticText &other) const
/*!
Sets the text of the QStaticText to \a text.
- \note This function will cause the layout of the text to be recalculated.
+ \note This function will cause the layout of the text to require recalculation.
\sa text()
*/
@@ -240,7 +246,7 @@ void QStaticText::setText(const QString &text)
{
detach();
data->text = text;
- data->init();
+ data->invalidate();
}
/*!
@@ -250,7 +256,7 @@ void QStaticText::setText(const QString &text)
displayed as is, whereas it will be interpreted as HTML if the format is Qt::RichText. HTML tags
that alter the font of the text, its color, or its layout are supported by QStaticText.
- \note This function will cause the layout of the text to be recalculated.
+ \note This function will cause the layout of the text to require recalculation.
\sa textFormat(), setText(), text()
*/
@@ -258,7 +264,7 @@ void QStaticText::setTextFormat(Qt::TextFormat textFormat)
{
detach();
data->textFormat = textFormat;
- data->init();
+ data->invalidate();
}
/*!
@@ -289,7 +295,7 @@ QString QStaticText::text() const
The default is QStaticText::ModerateCaching.
- \note This function will cause the layout of the text to be recalculated.
+ \note This function will cause the layout of the text to require recalculation.
\sa performanceHint()
*/
@@ -301,7 +307,7 @@ void QStaticText::setPerformanceHint(PerformanceHint performanceHint)
}
detach();
data->useBackendOptimizations = (performanceHint == AggressiveCaching);
- data->init();
+ data->invalidate();
}
/*!
@@ -315,48 +321,56 @@ QStaticText::PerformanceHint QStaticText::performanceHint() const
}
/*!
- Sets the maximum size of the QStaticText to \a size.
+ Sets the preferred width for this QStaticText. If the text is wider than the specified width,
+ it will be broken into multiple lines and grow vertically. If the text cannot be split into
+ multiple lines, it will be larger than the specified \a textWidth.
- \note This function will cause the layout of the text to be recalculated.
+ Setting the preferred text width to a negative number will cause the text to be unbounded.
- \sa maximumSize(), size()
+ Use size() to get the actual size of the text.
+
+ \note This function will cause the layout of the text to require recalculation.
+
+ \sa textWidth(), size()
*/
-void QStaticText::setMaximumSize(const QSizeF &size)
+void QStaticText::setTextWidth(qreal textWidth)
{
detach();
- data->maximumSize = size;
- data->init();
+ data->textWidth = textWidth;
+ data->invalidate();
}
/*!
- Returns the maximum size of the QStaticText.
+ Returns the preferred width for this QStaticText.
- \sa setMaximumSize()
+ \sa setTextWidth()
*/
-QSizeF QStaticText::maximumSize() const
+qreal QStaticText::textWidth() const
{
- return data->maximumSize;
+ return data->textWidth;
}
/*!
Returns the size of the bounding rect for this QStaticText.
- \sa maximumSize()
+ \sa textWidth()
*/
QSizeF QStaticText::size() const
{
+ if (data->needsRelayout)
+ data->init();
return data->actualSize;
}
QStaticTextPrivate::QStaticTextPrivate()
- : items(0), itemCount(0), glyphPool(0), positionPool(0), needsClipRect(false),
- useBackendOptimizations(false), textFormat(Qt::AutoText)
+ : items(0), itemCount(0), glyphPool(0), positionPool(0), textWidth(-1.0),
+ needsRelayout(true), useBackendOptimizations(false), textFormat(Qt::AutoText)
{
}
QStaticTextPrivate::QStaticTextPrivate(const QStaticTextPrivate &other)
- : text(other.text), font(other.font), maximumSize(other.maximumSize), matrix(other.matrix),
- items(0), itemCount(0), glyphPool(0), positionPool(0), needsClipRect(false),
+ : text(other.text), font(other.font), textWidth(other.textWidth), matrix(other.matrix),
+ items(0), itemCount(0), glyphPool(0), positionPool(0), needsRelayout(true),
useBackendOptimizations(other.useBackendOptimizations), textFormat(other.textFormat)
{
}
@@ -388,8 +402,15 @@ namespace {
m_expectedItemCount(expectedItemCount),
m_expectedGlyphCount(expectedGlyphCount),
m_glyphPool(glyphPool),
- m_positionPool(positionPool)
+ m_positionPool(positionPool),
+ m_dirtyPen(false)
+ {
+ }
+
+ virtual void updateState(const QPaintEngineState &newState)
{
+ if (newState.state() & QPaintEngine::DirtyPen)
+ m_dirtyPen = true;
}
virtual void drawTextItem(const QPointF &position, const QTextItem &textItem)
@@ -412,7 +433,8 @@ namespace {
currentItem->numGlyphs = ti.glyphs.numGlyphs;
currentItem->glyphs = m_glyphPool;
currentItem->glyphPositions = m_positionPool;
- currentItem->color = state->pen().color();
+ if (m_dirtyPen)
+ currentItem->color = state->pen().color();
QTransform matrix = state->transform();
matrix.translate(position.x(), position.y());
@@ -435,7 +457,6 @@ namespace {
virtual bool begin(QPaintDevice *) { return true; }
virtual bool end() { return true; }
- virtual void updateState(const QPaintEngineState &) {}
virtual void drawPixmap(const QRectF &, const QPixmap &, const QRectF &) {}
virtual Type type() const
{
@@ -461,6 +482,8 @@ namespace {
glyph_t *m_glyphPool;
QFixedPoint *m_positionPool;
+
+ bool m_dirtyPen;
};
class DrawTextItemDevice: public QPaintDevice
@@ -530,43 +553,59 @@ namespace {
};
}
-void QStaticTextPrivate::paintText(const QPointF &pos, QPainter *p)
+void QStaticTextPrivate::paintText(const QPointF &topLeftPosition, QPainter *p)
{
bool preferRichText = textFormat == Qt::RichText
|| (textFormat == Qt::AutoText && Qt::mightBeRichText(text));
if (!preferRichText) {
- if (maximumSize.isValid()) {
- QRectF boundingRect;
- p->drawText(QRectF(pos, maximumSize), Qt::TextWordWrap, text, &boundingRect);
-
- actualSize = boundingRect.size();
- needsClipRect = boundingRect.width() > maximumSize.width()
- || boundingRect.height() > maximumSize.height();
- } else {
- p->drawText(pos, text);
- needsClipRect = false;
-
- QFontMetrics fm(font);
- actualSize = fm.boundingRect(text).size();
+ QTextLayout textLayout;
+ textLayout.setText(text);
+ textLayout.setFont(font);
+
+ qreal leading = QFontMetricsF(font).leading();
+ qreal height = -leading;
+
+ textLayout.beginLayout();
+ while (1) {
+ QTextLine line = textLayout.createLine();
+ if (!line.isValid())
+ break;
+
+ if (textWidth >= 0.0)
+ line.setLineWidth(textWidth);
+ height += leading;
+ line.setPosition(QPointF(0.0, height));
+ height += line.height();
}
+ textLayout.endLayout();
+
+ actualSize = textLayout.boundingRect().size();
+ textLayout.draw(p, topLeftPosition);
} else {
QTextDocument document;
+ QColor color = p->pen().color();
+ document.setDefaultStyleSheet(QString::fromLatin1("body { color: #%1%2%3 }")
+ .arg(QString::number(color.red(), 16), 2, QLatin1Char('0'))
+ .arg(QString::number(color.green(), 16), 2, QLatin1Char('0'))
+ .arg(QString::number(color.blue(), 16), 2, QLatin1Char('0')));
document.setDefaultFont(font);
document.setDocumentMargin(0.0);
+ if (textWidth >= 0.0)
+ document.setTextWidth(textWidth);
+#ifndef QT_NO_TEXTHTMLPARSER
document.setHtml(text);
+#else
+ document.setPlainText(text);
+#endif
- QPointF adjustedPos = pos - QPointF(0, QFontMetricsF(font).ascent());
- QRectF rect = maximumSize.isValid() ? QRectF(adjustedPos, maximumSize) : QRectF();
document.adjustSize();
p->save();
- p->translate(adjustedPos);
- document.drawContents(p, rect);
+ p->translate(topLeftPosition);
+ document.drawContents(p);
p->restore();
+
actualSize = document.size();
- needsClipRect = maximumSize.isValid()
- && (actualSize.width() > maximumSize.width()
- || actualSize.height() > maximumSize.height());
}
}
@@ -613,6 +652,7 @@ void QStaticTextPrivate::init()
paintText(QPointF(0, 0), &painter);
}
+ needsRelayout = false;
}
QT_END_NAMESPACE
diff --git a/src/gui/text/qstatictext.h b/src/gui/text/qstatictext.h
index 00d42e0..f3bef93 100644
--- a/src/gui/text/qstatictext.h
+++ b/src/gui/text/qstatictext.h
@@ -66,7 +66,7 @@ public:
};
QStaticText();
- QStaticText(const QString &text, const QSizeF &maximumSize = QSizeF());
+ QStaticText(const QString &text);
QStaticText(const QStaticText &other);
~QStaticText();
@@ -76,12 +76,12 @@ public:
void setTextFormat(Qt::TextFormat textFormat);
Qt::TextFormat textFormat() const;
- void setMaximumSize(const QSizeF &maximumSize);
- QSizeF maximumSize() const;
+ void setTextWidth(qreal textWidth);
+ qreal textWidth() const;
QSizeF size() const;
- void prepare(const QTransform &matrix, const QFont &font);
+ void prepare(const QTransform &matrix = QTransform(), const QFont &font = QFont());
void setPerformanceHint(PerformanceHint performanceHint);
PerformanceHint performanceHint() const;
diff --git a/src/gui/text/qstatictext_p.h b/src/gui/text/qstatictext_p.h
index e758244..f017ed1 100644
--- a/src/gui/text/qstatictext_p.h
+++ b/src/gui/text/qstatictext_p.h
@@ -118,11 +118,16 @@ public:
void init();
void paintText(const QPointF &pos, QPainter *p);
+ void invalidate()
+ {
+ needsRelayout = true;
+ }
+
QAtomicInt ref; // 4 bytes per text
QString text; // 4 bytes per text
QFont font; // 8 bytes per text
- QSizeF maximumSize; // 16 bytes per text
+ qreal textWidth; // 8 bytes per text
QSizeF actualSize; // 16 bytes per text
QPointF position; // 16 bytes per text
@@ -132,11 +137,11 @@ public:
glyph_t *glyphPool; // 4 bytes per text
QFixedPoint *positionPool; // 4 bytes per text
- unsigned char needsClipRect : 1; // 1 byte per text
- unsigned char useBackendOptimizations : 1;
+ unsigned char needsRelayout : 1;
+ unsigned char useBackendOptimizations : 1; // 1 byte per text
unsigned char textFormat : 2;
// ================
- // 171 bytes per text
+ // 163 bytes per text
static QStaticTextPrivate *get(const QStaticText *q);
};
diff --git a/src/gui/text/qtextcontrol.cpp b/src/gui/text/qtextcontrol.cpp
index 6864fe1..671dfc0 100644
--- a/src/gui/text/qtextcontrol.cpp
+++ b/src/gui/text/qtextcontrol.cpp
@@ -91,7 +91,7 @@
QT_BEGIN_NAMESPACE
#ifndef QT_NO_CONTEXTMENU
-#if defined(Q_WS_WIN)
+#if defined(Q_WS_WIN) || defined(Q_WS_X11)
extern bool qt_use_rtl_extensions;
#endif
#endif
@@ -2080,7 +2080,7 @@ QMenu *QTextControl::createStandardContextMenu(const QPointF &pos, QWidget *pare
}
#endif
-#if defined(Q_WS_WIN)
+#if defined(Q_WS_WIN) || defined(Q_WS_X11)
if ((d->interactionFlags & Qt::TextEditable) && qt_use_rtl_extensions) {
#else
if (d->interactionFlags & Qt::TextEditable) {
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index 2fc5d1a..312d135 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -1702,9 +1702,9 @@ namespace {
if (currentPosition <= 0)
return;
- glyph_metrics_t gi = fontEngine->boundingBox(currentGlyph());
- if (gi.isValid())
- rightBearing = qMin(QFixed(), gi.xoff - gi.x - gi.width);
+ qreal rb;
+ fontEngine->getGlyphBearings(currentGlyph(), 0, &rb);
+ rightBearing = qMin(QFixed(), QFixed::fromReal(rb));
}
inline void resetRightBearing()
diff --git a/src/gui/widgets/qcombobox.cpp b/src/gui/widgets/qcombobox.cpp
index c16f18a..b1a27f2 100644
--- a/src/gui/widgets/qcombobox.cpp
+++ b/src/gui/widgets/qcombobox.cpp
@@ -108,7 +108,15 @@ QStyleOptionMenuItem QComboMenuDelegate::getStyleOption(const QStyleOptionViewIt
const QModelIndex &index) const
{
QStyleOptionMenuItem menuOption;
- menuOption.palette = option.palette.resolve(QApplication::palette("QMenu"));
+
+ QPalette resolvedpalette = option.palette.resolve(QApplication::palette("QMenu"));
+ QVariant value = index.data(Qt::ForegroundRole);
+ if (qVariantCanConvert<QBrush>(value)) {
+ resolvedpalette.setBrush(QPalette::WindowText, qvariant_cast<QBrush>(value));
+ resolvedpalette.setBrush(QPalette::ButtonText, qvariant_cast<QBrush>(value));
+ resolvedpalette.setBrush(QPalette::Text, qvariant_cast<QBrush>(value));
+ }
+ menuOption.palette = resolvedpalette;
menuOption.state = QStyle::State_None;
if (mCombo->window()->isActiveWindow())
menuOption.state = QStyle::State_Active;
diff --git a/src/gui/widgets/qlineedit.cpp b/src/gui/widgets/qlineedit.cpp
index 817547c..0b8dca9 100644
--- a/src/gui/widgets/qlineedit.cpp
+++ b/src/gui/widgets/qlineedit.cpp
@@ -2046,7 +2046,7 @@ void QLineEdit::contextMenuEvent(QContextMenuEvent *event)
}
}
-#if defined(Q_WS_WIN)
+#if defined(Q_WS_WIN) || defined(Q_WS_X11)
extern bool qt_use_rtl_extensions;
#endif
@@ -2118,7 +2118,7 @@ QMenu *QLineEdit::createStandardContextMenu()
}
#endif
-#if defined(Q_WS_WIN)
+#if defined(Q_WS_WIN) || defined(Q_WS_X11)
if (!d->control->isReadOnly() && qt_use_rtl_extensions) {
#else
if (!d->control->isReadOnly()) {
diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp
index ebc05d9..404d46e 100644
--- a/src/gui/widgets/qmenu.cpp
+++ b/src/gui/widgets/qmenu.cpp
@@ -167,8 +167,8 @@ void QMenuPrivate::init()
#ifdef QT_SOFTKEYS_ENABLED
selectAction = QSoftKeyManager::createKeyedAction(QSoftKeyManager::SelectSoftKey, Qt::Key_Select, q);
cancelAction = QSoftKeyManager::createKeyedAction(QSoftKeyManager::CancelSoftKey, Qt::Key_Back, q);
- selectAction->setVisible(false); // Don't show these in the menu
- cancelAction->setVisible(false);
+ selectAction->setPriority(QAction::HighPriority);
+ cancelAction->setPriority(QAction::HighPriority);
q->addAction(selectAction);
q->addAction(cancelAction);
#endif
diff --git a/src/gui/widgets/qmenubar.cpp b/src/gui/widgets/qmenubar.cpp
index 13aa02b..a13a2fa 100644
--- a/src/gui/widgets/qmenubar.cpp
+++ b/src/gui/widgets/qmenubar.cpp
@@ -268,19 +268,15 @@ void QMenuBarPrivate::updateGeometries()
QRect QMenuBarPrivate::actionRect(QAction *act) const
{
- Q_Q(const QMenuBar);
const int index = actions.indexOf(act);
- if (index == -1)
- return QRect();
//makes sure the geometries are up-to-date
const_cast<QMenuBarPrivate*>(this)->updateGeometries();
- if (index >= actionRects.count())
+ if (index < 0 || index >= actionRects.count())
return QRect(); // that can happen in case of native menubar
- QRect ret = actionRects.at(index);
- return QStyle::visualRect(q->layoutDirection(), q->rect(), ret);
+ return actionRects.at(index);
}
void QMenuBarPrivate::focusFirstAction()
@@ -505,6 +501,9 @@ void QMenuBarPrivate::calcActionRects(int max_width, int start) const
//keep moving along..
x += rect.width() + itemSpacing;
+
+ //make sure we follow the layout direction
+ rect = QStyle::visualRect(q->layoutDirection(), q->rect(), rect);
}
}
@@ -1404,7 +1403,6 @@ void QMenuBarPrivate::handleReparent()
if (!menuBarAction) {
if (newParent) {
menuBarAction = QSoftKeyManager::createAction(QSoftKeyManager::MenuSoftKey, newParent);
- menuBarAction->setVisible(false);
newParent->addAction(menuBarAction);
}
} else {
diff --git a/src/gui/widgets/qspinbox.cpp b/src/gui/widgets/qspinbox.cpp
index 726426d..2d871d0 100644
--- a/src/gui/widgets/qspinbox.cpp
+++ b/src/gui/widgets/qspinbox.cpp
@@ -448,11 +448,12 @@ void QSpinBox::setRange(int minimum, int maximum)
}
/*!
- This virtual function is used by the spin box whenever it needs
- to display the given \a value. The default implementation returns
- a string containing \a value printed in the standard way using
- QWidget::locale().toString(). Reimplementations may return anything. (See
- the example in the detailed description.)
+ This virtual function is used by the spin box whenever it needs to
+ display the given \a value. The default implementation returns a
+ string containing \a value printed in the standard way using
+ QWidget::locale().toString(), but with the thousand separator
+ removed. Reimplementations may return anything. (See the example
+ in the detailed description.)
Note: QSpinBox does not call this function for specialValueText()
and that neither prefix() nor suffix() should be included in the
@@ -461,7 +462,7 @@ void QSpinBox::setRange(int minimum, int maximum)
If you reimplement this, you may also need to reimplement
valueFromText() and validate()
- \sa valueFromText(), validate()
+ \sa valueFromText(), validate(), QLocale::groupSeparator()
*/
QString QSpinBox::textFromValue(int value) const
@@ -869,7 +870,7 @@ void QDoubleSpinBox::setDecimals(int decimals)
If you reimplement this, you may also need to reimplement
valueFromText().
- \sa valueFromText()
+ \sa valueFromText(), QLocale::groupSeparator()
*/
diff --git a/src/gui/widgets/qvalidator.cpp b/src/gui/widgets/qvalidator.cpp
index 0b5cc5a..b75db45 100644
--- a/src/gui/widgets/qvalidator.cpp
+++ b/src/gui/widgets/qvalidator.cpp
@@ -523,7 +523,7 @@ public:
In addition, QDoubleValidator is always guaranteed to accept a number
formatted according to the "C" locale. QDoubleValidator will not accept
- numbers with thousand-seperators.
+ numbers with thousand-separators.
\sa QIntValidator, QRegExpValidator, {Line Edits Example}
*/
diff --git a/src/imports/gestures/gestures.pro b/src/imports/gestures/gestures.pro
new file mode 100644
index 0000000..b9c5b4e
--- /dev/null
+++ b/src/imports/gestures/gestures.pro
@@ -0,0 +1,27 @@
+TARGET = gesturesqmlplugin
+TARGETPATH = Qt/labs/gestures
+include(../qimportbase.pri)
+
+QT += declarative
+
+SOURCES += qdeclarativegesturearea.cpp plugin.cpp
+HEADERS += qdeclarativegesturearea_p.h
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/$$TARGETPATH
+target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
+
+qmldir.files += $$PWD/qmldir
+qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
+
+symbian:{
+ load(data_caging_paths)
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
+ importFiles.sources = gesturesqmlplugin.dll \
+ qmldir
+ importFiles.path = $$QT_IMPORTS_BASE_DIR/$$TARGETPATH
+
+ DEPLOYMENT = importFiles
+}
+
+INSTALLS += target qmldir
diff --git a/src/imports/gestures/plugin.cpp b/src/imports/gestures/plugin.cpp
new file mode 100644
index 0000000..9f5d923
--- /dev/null
+++ b/src/imports/gestures/plugin.cpp
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** 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 plugins 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 <QtDeclarative/qdeclarativeextensionplugin.h>
+#include <QtDeclarative/qdeclarative.h>
+
+#include "qdeclarativegesturearea_p.h"
+
+QT_BEGIN_NAMESPACE
+
+class GestureAreaQmlPlugin : public QDeclarativeExtensionPlugin
+{
+ Q_OBJECT
+public:
+ virtual void registerTypes(const char *uri)
+ {
+ Q_ASSERT(QLatin1String(uri) == QLatin1String("Qt.labs.gestures"));
+ qmlRegisterCustomType<QDeclarativeGestureArea>(uri,1,0, "GestureArea", "QDeclarativeGestureArea",
+ new QDeclarativeGestureAreaParser);
+ }
+};
+
+QT_END_NAMESPACE
+
+#include "plugin.moc"
+
+Q_EXPORT_PLUGIN2(gesturesqmlplugin, QT_PREPEND_NAMESPACE(GestureAreaQmlPlugin));
+
diff --git a/src/imports/gestures/qdeclarativegesturearea.cpp b/src/imports/gestures/qdeclarativegesturearea.cpp
new file mode 100644
index 0000000..b8c8f57
--- /dev/null
+++ b/src/imports/gestures/qdeclarativegesturearea.cpp
@@ -0,0 +1,266 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 "qdeclarativegesturearea_p.h"
+
+#include <qdeclarativeexpression.h>
+#include <qdeclarativecontext.h>
+#include <qdeclarativeinfo.h>
+
+#include <private/qdeclarativeproperty_p.h>
+#include <private/qdeclarativeitem_p.h>
+
+#include <QtCore/qdebug.h>
+#include <QtCore/qstringlist.h>
+
+#include <QtGui/qevent.h>
+
+#include <private/qobject_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QDeclarativeGestureAreaPrivate : public QDeclarativeItemPrivate
+{
+ Q_DECLARE_PUBLIC(QDeclarativeGestureArea)
+public:
+ QDeclarativeGestureAreaPrivate() : componentcomplete(false), gesture(0) {}
+
+ typedef QMap<Qt::GestureType,QDeclarativeExpression*> Bindings;
+ Bindings bindings;
+
+ bool componentcomplete;
+
+ QByteArray data;
+
+ QGesture *gesture;
+
+ bool gestureEvent(QGestureEvent *event);
+};
+
+/*!
+ \qmlclass GestureArea QDeclarativeGestureArea
+ \brief The GestureArea item enables simple gesture handling.
+ \inherits Item
+
+ A GestureArea is like a MouseArea, but it has signals for gesture events.
+
+ \e {This element is only functional on devices with touch input.}
+
+ \qml
+ import Qt.labs.gestures 0.1
+
+ GestureArea {
+ anchors.fill: parent
+ onPan: ... gesture.acceleration ...
+ onPinch: ... gesture.rotationAngle ...
+ onSwipe: ...
+ onTapAndHold: ...
+ onTap: ...
+ onGesture: ...
+ }
+ \endqml
+
+ Each signal has a \e gesture parameter that has the
+ properties of the gesture.
+
+ \table
+ \header \o Signal \o Type \o Property \o Description
+ \row \o onTap \o point \o position \o the position of the tap
+ \row \o onTapAndHold \o point \o position \o the position of the tap
+ \row \o onPan \o real \o acceleration \o the acceleration of the pan
+ \row \o onPan \o point \o delta \o the offset from the previous input position to the current input
+ \row \o onPan \o point \o offset \o the total offset from the first input position to the current input position
+ \row \o onPan \o point \o lastOffset \o the previous value of offset
+ \row \o onPinch \o point \o centerPoint \o the midpoint between the two input points
+ \row \o onPinch \o point \o lastCenterPoint \o the previous value of centerPoint
+ \row \o onPinch \o point \o startCenterPoint \o the first value of centerPoint
+ \row \o onPinch \o real \o rotationAngle \o the angle covered by the gesture motion
+ \row \o onPinch \o real \o lastRotationAngle \o the previous value of rotationAngle
+ \row \o onPinch \o real \o totalRotationAngle \o the complete angle covered by the gesture
+ \row \o onPinch \o real \o scaleFactor \o the change in distance between the two input points
+ \row \o onPinch \o real \o lastScaleFactor \o the previous value of scaleFactor
+ \row \o onPinch \o real \o totalScaleFactor \o the complete scale factor of the gesture
+ \row \o onSwipe \o real \o swipeAngle \o the angle of the swipe
+ \endtable
+
+ Custom gestures, handled by onGesture, will have custom properties.
+
+ GestureArea is an invisible item: it is never painted.
+
+ \sa Gesture, MouseArea
+*/
+
+/*!
+ \internal
+ \class QDeclarativeGestureArea
+ \brief The QDeclarativeGestureArea class provides simple gesture handling.
+
+*/
+QDeclarativeGestureArea::QDeclarativeGestureArea(QDeclarativeItem *parent) :
+ QDeclarativeItem(*(new QDeclarativeGestureAreaPrivate), parent)
+{
+ setAcceptedMouseButtons(Qt::LeftButton);
+ setAcceptTouchEvents(true);
+}
+
+QDeclarativeGestureArea::~QDeclarativeGestureArea()
+{
+}
+
+QByteArray
+QDeclarativeGestureAreaParser::compile(const QList<QDeclarativeCustomParserProperty> &props)
+{
+ QByteArray rv;
+ QDataStream ds(&rv, QIODevice::WriteOnly);
+
+ for(int ii = 0; ii < props.count(); ++ii)
+ {
+ QString propName = QString::fromUtf8(props.at(ii).name());
+ Qt::GestureType type;
+
+ if (propName == QLatin1String("onTap")) {
+ type = Qt::TapGesture;
+ } else if (propName == QLatin1String("onTapAndHold")) {
+ type = Qt::TapAndHoldGesture;
+ } else if (propName == QLatin1String("onPan")) {
+ type = Qt::PanGesture;
+ } else if (propName == QLatin1String("onPinch")) {
+ type = Qt::PinchGesture;
+ } else if (propName == QLatin1String("onSwipe")) {
+ type = Qt::SwipeGesture;
+ } else if (propName == QLatin1String("onGesture")) {
+ type = Qt::CustomGesture;
+ } else {
+ error(props.at(ii), QDeclarativeGestureArea::tr("Cannot assign to non-existent property \"%1\"").arg(propName));
+ return QByteArray();
+ }
+
+ QList<QVariant> values = props.at(ii).assignedValues();
+
+ for (int i = 0; i < values.count(); ++i) {
+ const QVariant &value = values.at(i);
+
+ if (value.userType() == qMetaTypeId<QDeclarativeCustomParserNode>()) {
+ error(props.at(ii), QDeclarativeGestureArea::tr("GestureArea: nested objects not allowed"));
+ return QByteArray();
+ } else if (value.userType() == qMetaTypeId<QDeclarativeCustomParserProperty>()) {
+ error(props.at(ii), QDeclarativeGestureArea::tr("GestureArea: syntax error"));
+ return QByteArray();
+ } else {
+ QDeclarativeParser::Variant v = qvariant_cast<QDeclarativeParser::Variant>(value);
+ if (v.isScript()) {
+ ds << propName;
+ ds << int(type);
+ ds << v.asScript();
+ } else {
+ error(props.at(ii), QDeclarativeGestureArea::tr("GestureArea: script expected"));
+ return QByteArray();
+ }
+ }
+ }
+ }
+
+ return rv;
+}
+
+void QDeclarativeGestureAreaParser::setCustomData(QObject *object,
+ const QByteArray &data)
+{
+ QDeclarativeGestureArea *ga = static_cast<QDeclarativeGestureArea*>(object);
+ ga->d_func()->data = data;
+}
+
+
+void QDeclarativeGestureArea::connectSignals()
+{
+ Q_D(QDeclarativeGestureArea);
+ if (!d->componentcomplete)
+ return;
+
+ QDataStream ds(d->data);
+ while (!ds.atEnd()) {
+ QString propName;
+ ds >> propName;
+ int gesturetype;
+ ds >> gesturetype;
+ QString script;
+ ds >> script;
+ QDeclarativeExpression *exp = new QDeclarativeExpression(qmlContext(this), script, 0);
+ d->bindings.insert(Qt::GestureType(gesturetype),exp);
+ grabGesture(Qt::GestureType(gesturetype));
+ }
+}
+
+void QDeclarativeGestureArea::componentComplete()
+{
+ QDeclarativeItem::componentComplete();
+ Q_D(QDeclarativeGestureArea);
+ d->componentcomplete=true;
+ connectSignals();
+}
+
+QGesture *QDeclarativeGestureArea::gesture() const
+{
+ Q_D(const QDeclarativeGestureArea);
+ return d->gesture;
+}
+
+bool QDeclarativeGestureArea::sceneEvent(QEvent *event)
+{
+ Q_D(QDeclarativeGestureArea);
+ if (event->type() == QEvent::Gesture)
+ return d->gestureEvent(static_cast<QGestureEvent*>(event));
+ return QDeclarativeItem::sceneEvent(event);
+}
+
+bool QDeclarativeGestureAreaPrivate::gestureEvent(QGestureEvent *event)
+{
+ bool accept = true;
+ for (Bindings::Iterator it = bindings.begin(); it != bindings.end(); ++it) {
+ if ((gesture = event->gesture(it.key()))) {
+ it.value()->value();
+ event->setAccepted(true); // XXX only if value returns true?
+ }
+ }
+ return accept;
+}
+
+QT_END_NAMESPACE
diff --git a/src/imports/gestures/qdeclarativegesturearea_p.h b/src/imports/gestures/qdeclarativegesturearea_p.h
new file mode 100644
index 0000000..8e2c066
--- /dev/null
+++ b/src/imports/gestures/qdeclarativegesturearea_p.h
@@ -0,0 +1,100 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QDECLARATIVEGESTUREAREA_H
+#define QDECLARATIVEGESTUREAREA_H
+
+#include <qdeclarativeitem.h>
+#include <qdeclarativescriptstring.h>
+#include <private/qdeclarativecustomparser_p.h>
+
+#include <QtCore/qobject.h>
+#include <QtCore/qstring.h>
+#include <QtGui/qgesture.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Declarative)
+
+class QDeclarativeBoundSignal;
+class QDeclarativeContext;
+class QDeclarativeGestureAreaPrivate;
+class Q_DECLARATIVE_EXPORT QDeclarativeGestureArea : public QDeclarativeItem
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QGesture *gesture READ gesture)
+
+public:
+ QDeclarativeGestureArea(QDeclarativeItem *parent=0);
+ ~QDeclarativeGestureArea();
+
+ QGesture *gesture() const;
+
+protected:
+ bool sceneEvent(QEvent *event);
+
+private:
+ void connectSignals();
+ void componentComplete();
+ friend class QDeclarativeGestureAreaParser;
+
+ Q_DISABLE_COPY(QDeclarativeGestureArea)
+ Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativeGestureArea)
+};
+
+class QDeclarativeGestureAreaParser : public QDeclarativeCustomParser
+{
+public:
+ virtual QByteArray compile(const QList<QDeclarativeCustomParserProperty> &);
+ virtual void setCustomData(QObject *, const QByteArray &);
+};
+
+
+QT_END_NAMESPACE
+
+QML_DECLARE_TYPE(QDeclarativeGestureArea)
+
+QT_END_HEADER
+
+#endif
diff --git a/src/imports/gestures/qmldir b/src/imports/gestures/qmldir
new file mode 100644
index 0000000..9d9d587
--- /dev/null
+++ b/src/imports/gestures/qmldir
@@ -0,0 +1 @@
+plugin gesturesqmlplugin
diff --git a/src/imports/multimedia/multimedia.pro b/src/imports/multimedia/multimedia.pro
index 16b3ace..92f7ec4 100644
--- a/src/imports/multimedia/multimedia.pro
+++ b/src/imports/multimedia/multimedia.pro
@@ -20,7 +20,18 @@ SOURCES += \
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/$$TARGETPATH
target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
-qmldir.files += $$QT_BUILD_TREE/imports/$$TARGETPATH/qmldir
+qmldir.files += $$PWD/qmldir
qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
+symbian:{
+ load(data_caging_paths)
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
+ importFiles.sources = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH/multimedia.dll \
+ qmldir
+ importFiles.path = $$QT_IMPORTS_BASE_DIR/$$TARGETPATH
+
+ DEPLOYMENT = importFiles
+}
+
INSTALLS += target qmldir
diff --git a/src/imports/multimedia/qdeclarativeaudio.cpp b/src/imports/multimedia/qdeclarativeaudio.cpp
index 077ed9a..8d2dc61 100644
--- a/src/imports/multimedia/qdeclarativeaudio.cpp
+++ b/src/imports/multimedia/qdeclarativeaudio.cpp
@@ -51,7 +51,12 @@ QT_BEGIN_NAMESPACE
\since 4.7
\brief The Audio element allows you to add audio playback to a scene.
+ This element is part of the \bold{Qt.multimedia 4.7} module.
+
\qml
+ import Qt 4.6
+ import Qt.multimedia 4.7
+
Audio { source: "audio/song.mp3" }
\endqml
diff --git a/src/imports/multimedia/qdeclarativevideo.cpp b/src/imports/multimedia/qdeclarativevideo.cpp
index c878fe1..bf112be 100644
--- a/src/imports/multimedia/qdeclarativevideo.cpp
+++ b/src/imports/multimedia/qdeclarativevideo.cpp
@@ -73,7 +73,12 @@ void QDeclarativeVideo::_q_error(int errorCode, const QString &errorString)
\brief The Video element allows you to add videos to a scene.
\inherits Item
+ This element is part of the \bold{Qt.multimedia 4.7} module.
+
\qml
+ import Qt 4.6
+ import Qt.multimedia 4.7
+
Video { source: "video/movie.mpg" }
\endqml
diff --git a/src/imports/particles/particles.pro b/src/imports/particles/particles.pro
index 02d9ea6..58bfe05 100644
--- a/src/imports/particles/particles.pro
+++ b/src/imports/particles/particles.pro
@@ -14,7 +14,18 @@ HEADERS += \
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/$$TARGETPATH
target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
-qmldir.files += $$QT_BUILD_TREE/imports/$$TARGETPATH/qmldir
+qmldir.files += $$PWD/qmldir
qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
+symbian:{
+ load(data_caging_paths)
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
+ importFiles.sources = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH/particles.dll \
+ qmldir
+ importFiles.path = $$QT_IMPORTS_BASE_DIR/$$TARGETPATH
+
+ DEPLOYMENT = importFiles
+}
+
INSTALLS += target qmldir
diff --git a/src/imports/particles/qdeclarativeparticles.cpp b/src/imports/particles/qdeclarativeparticles.cpp
index 83be59b..e98a801 100644
--- a/src/imports/particles/qdeclarativeparticles.cpp
+++ b/src/imports/particles/qdeclarativeparticles.cpp
@@ -623,6 +623,8 @@ void QDeclarativeParticlesPrivate::updateOpacity(QDeclarativeParticle &p, int ag
\brief The Particles object generates and moves particles.
\inherits Item
+ Particles are available in the \bold{Qt.labs.particles 1.0} module.
+
This element provides preliminary support for particles in QML,
and may be heavily changed or removed in later versions.
@@ -640,6 +642,9 @@ void QDeclarativeParticlesPrivate::updateOpacity(QDeclarativeParticle &p, int ag
snow, the lower one has particles expelled up like a fountain.
\qml
+import Qt 4.6
+import Qt.labs.particles 1.0
+
Rectangle {
width: 240
height: 320
diff --git a/src/imports/webkit/qdeclarativewebview.cpp b/src/imports/webkit/qdeclarativewebview.cpp
index 0b85ae4..5db812c 100644
--- a/src/imports/webkit/qdeclarativewebview.cpp
+++ b/src/imports/webkit/qdeclarativewebview.cpp
@@ -121,6 +121,10 @@ public:
A WebView renders web content based on a URL.
+ This type is made available by importing the \c org.webkit module:
+
+ \bold{import org.webkit 1.0}
+
If the width and height of the item is not set, they will
dynamically adjust to a size appropriate for the content.
This width may be large for typical online web pages.
@@ -1214,6 +1218,14 @@ QString QDeclarativeWebPage::chooseFile(QWebFrame *originatingFrame, const QStri
return oldFile;
}
+/*!
+ \qmlsignal WebView::alert(message)
+
+ This signal is emitted when the web engine sends a JavaScript alert. The \a message is the text
+ to be displayed in the alert to the user.
+*/
+
+
void QDeclarativeWebPage::javaScriptAlert(QWebFrame *originatingFrame, const QString& msg)
{
Q_UNUSED(originatingFrame)
diff --git a/src/imports/webkit/webkit.pro b/src/imports/webkit/webkit.pro
index ef08efe..62db9ac 100644
--- a/src/imports/webkit/webkit.pro
+++ b/src/imports/webkit/webkit.pro
@@ -11,7 +11,18 @@ HEADERS += qdeclarativewebview_p.h \
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/$$TARGETPATH
target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
-qmldir.files += $$QT_BUILD_TREE/imports/$$TARGETPATH/qmldir
+qmldir.files += $$PWD/qmldir
qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
+symbian:{
+ load(data_caging_paths)
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
+ importFiles.sources = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH/webkitqmlplugin.dll \
+ qmldir
+ importFiles.path = $$QT_IMPORTS_BASE_DIR/$$TARGETPATH
+
+ DEPLOYMENT = importFiles
+}
+
INSTALLS += target qmldir
diff --git a/src/imports/widgets/widgets.pro b/src/imports/widgets/widgets.pro
index aa09b3c..408f878 100644
--- a/src/imports/widgets/widgets.pro
+++ b/src/imports/widgets/widgets.pro
@@ -15,7 +15,18 @@ HEADERS += \
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/imports/$$TARGETPATH
target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
-qmldir.files += $$QT_BUILD_TREE/imports/$$TARGETPATH/qmldir
+qmldir.files += $$PWD/qmldir
qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
+symbian:{
+ load(data_caging_paths)
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
+ importFiles.sources = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH/widgets.dll \
+ qmldir
+ importFiles.path = $$QT_IMPORTS_BASE_DIR/$$TARGETPATH
+
+ DEPLOYMENT = importFiles
+}
+
INSTALLS += target qmldir
diff --git a/src/multimedia/audio/qaudioinput_mac_p.cpp b/src/multimedia/audio/qaudioinput_mac_p.cpp
index 4b37b18..cb65f6e 100644
--- a/src/multimedia/audio/qaudioinput_mac_p.cpp
+++ b/src/multimedia/audio/qaudioinput_mac_p.cpp
@@ -670,8 +670,8 @@ bool QAudioInputPrivate::open()
}
// Allocate buffer
- periodSizeBytes = (numberOfFrames * streamFormat.mSampleRate / deviceFormat.mSampleRate) *
- streamFormat.mBytesPerFrame;
+ periodSizeBytes = numberOfFrames * streamFormat.mBytesPerFrame;
+
if (internalBufferSize < periodSizeBytes * 2)
internalBufferSize = periodSizeBytes * 2;
else
diff --git a/src/multimedia/audio/qaudiooutput_symbian_p.cpp b/src/multimedia/audio/qaudiooutput_symbian_p.cpp
index 945a08d..3f8e933 100644
--- a/src/multimedia/audio/qaudiooutput_symbian_p.cpp
+++ b/src/multimedia/audio/qaudiooutput_symbian_p.cpp
@@ -185,10 +185,11 @@ void QAudioOutputPrivate::suspend()
const qint64 samplesWritten = SymbianAudio::Utils::bytesToSamples(
m_format, m_bytesWritten);
- m_bytesWritten = 0;
const qint64 samplesPlayed = getSamplesPlayed();
+ m_bytesWritten = 0;
+
// CMMFDevSound::Pause() is not guaranteed to work correctly in all
// implementations, for play-mode DevSound sessions. We therefore
// have to implement suspend() by calling CMMFDevSound::Stop().
diff --git a/src/multimedia/base/base.pri b/src/multimedia/base/base.pri
index 5aebbf0..49eca49 100644
--- a/src/multimedia/base/base.pri
+++ b/src/multimedia/base/base.pri
@@ -60,4 +60,10 @@ SOURCES += \
$$PWD/qpaintervideosurface.cpp \
$$PWD/qmediatimerange.cpp
-
+mac {
+ HEADERS += $$PWD/qpaintervideosurface_mac_p.h
+ OBJECTIVE_SOURCES += $$PWD/qpaintervideosurface_mac.mm
+
+ LIBS += -framework AppKit -framework QuartzCore -framework QTKit
+
+}
diff --git a/src/multimedia/base/qpaintervideosurface.cpp b/src/multimedia/base/qpaintervideosurface.cpp
index 695dc73..2fe941b 100644
--- a/src/multimedia/base/qpaintervideosurface.cpp
+++ b/src/multimedia/base/qpaintervideosurface.cpp
@@ -40,6 +40,7 @@
****************************************************************************/
#include "qpaintervideosurface_p.h"
+#include "qpaintervideosurface_mac_p.h"
#include <qmath.h>
@@ -56,28 +57,6 @@
QT_BEGIN_NAMESPACE
-class QVideoSurfacePainter
-{
-public:
- virtual ~QVideoSurfacePainter();
-
- virtual QList<QVideoFrame::PixelFormat> supportedPixelFormats(
- QAbstractVideoBuffer::HandleType handleType) const = 0;
-
- virtual bool isFormatSupported(
- const QVideoSurfaceFormat &format, QVideoSurfaceFormat *similar) const = 0;
-
- virtual QAbstractVideoSurface::Error start(const QVideoSurfaceFormat &format) = 0;
- virtual void stop() = 0;
-
- virtual QAbstractVideoSurface::Error setCurrentFrame(const QVideoFrame &frame) = 0;
-
- virtual QAbstractVideoSurface::Error paint(
- const QRectF &target, QPainter *painter, const QRectF &source) = 0;
-
- virtual void updateColors(int brightness, int contrast, int hue, int saturation) = 0;
-};
-
QVideoSurfacePainter::~QVideoSurfacePainter()
{
}
@@ -758,10 +737,15 @@ QAbstractVideoSurface::Error QVideoSurfaceArbFpPainter::paint(
const QRectF &target, QPainter *painter, const QRectF &source)
{
if (m_frame.isValid()) {
+ bool stencilTestEnabled = glIsEnabled(GL_STENCIL_TEST);
+ bool scissorTestEnabled = glIsEnabled(GL_SCISSOR_TEST);
+
painter->beginNativePainting();
- glEnable(GL_STENCIL_TEST);
- glEnable(GL_SCISSOR_TEST);
+ if (stencilTestEnabled)
+ glEnable(GL_STENCIL_TEST);
+ if (scissorTestEnabled)
+ glEnable(GL_SCISSOR_TEST);
const float txLeft = source.left() / m_frameSize.width();
const float txRight = source.right() / m_frameSize.width();
@@ -836,9 +820,6 @@ QAbstractVideoSurface::Error QVideoSurfaceArbFpPainter::paint(
glDisableClientState(GL_VERTEX_ARRAY);
glDisable(GL_FRAGMENT_PROGRAM_ARB);
- glDisable(GL_STENCIL_TEST);
- glDisable(GL_SCISSOR_TEST);
-
painter->endNativePainting();
}
return QAbstractVideoSurface::NoError;
@@ -1084,10 +1065,15 @@ QAbstractVideoSurface::Error QVideoSurfaceGlslPainter::paint(
const QRectF &target, QPainter *painter, const QRectF &source)
{
if (m_frame.isValid()) {
+ bool stencilTestEnabled = glIsEnabled(GL_STENCIL_TEST);
+ bool scissorTestEnabled = glIsEnabled(GL_SCISSOR_TEST);
+
painter->beginNativePainting();
- glEnable(GL_STENCIL_TEST);
- glEnable(GL_SCISSOR_TEST);
+ if (stencilTestEnabled)
+ glEnable(GL_STENCIL_TEST);
+ if (scissorTestEnabled)
+ glEnable(GL_SCISSOR_TEST);
const int width = QGLContext::currentContext()->device()->width();
const int height = QGLContext::currentContext()->device()->height();
@@ -1179,9 +1165,6 @@ QAbstractVideoSurface::Error QVideoSurfaceGlslPainter::paint(
m_program.release();
-
- glDisable(GL_SCISSOR_TEST);
- glDisable(GL_STENCIL_TEST);
painter->endNativePainting();
}
return QAbstractVideoSurface::NoError;
@@ -1544,6 +1527,14 @@ void QPainterVideoSurface::createPainter()
{
Q_ASSERT(!m_painter);
+#ifdef Q_WS_MAC
+ if (m_glContext)
+ m_glContext->makeCurrent();
+
+ m_painter = new QVideoSurfaceCoreGraphicsPainter(m_glContext != 0);
+ return;
+#endif
+
#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_1_CL) && !defined(QT_OPENGL_ES_1)
switch (m_shaderType) {
#ifndef QT_OPENGL_ES
diff --git a/src/multimedia/base/qpaintervideosurface_mac.mm b/src/multimedia/base/qpaintervideosurface_mac.mm
new file mode 100644
index 0000000..ee03990
--- /dev/null
+++ b/src/multimedia/base/qpaintervideosurface_mac.mm
@@ -0,0 +1,274 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module 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 "qpaintervideosurface_mac_p.h"
+
+#include <QtCore/qdatetime.h>
+
+#include <qmath.h>
+
+#include <qpainter.h>
+#include <qvariant.h>
+#include <QtMultimedia/qvideosurfaceformat.h>
+
+#include <QtDebug>
+
+#include <QuartzCore/CIContext.h>
+#include <CGLCurrent.h>
+
+QT_BEGIN_NAMESPACE
+
+extern CGContextRef qt_mac_cg_context(const QPaintDevice *pdev); //qpaintdevice_mac.cpp
+
+QVideoSurfaceCoreGraphicsPainter::QVideoSurfaceCoreGraphicsPainter(bool glSupported)
+ : ciContext(0)
+ , m_imageFormat(QImage::Format_Invalid)
+ , m_scanLineDirection(QVideoSurfaceFormat::TopToBottom)
+{
+ //qDebug() << "QVideoSurfaceCoreGraphicsPainter, GL supported:" << glSupported;
+ ciContext = 0;
+ m_imagePixelFormats
+ << QVideoFrame::Format_RGB32;
+
+ m_supportedHandles
+ << QAbstractVideoBuffer::NoHandle
+ << QAbstractVideoBuffer::CoreImageHandle;
+
+ if (glSupported)
+ m_supportedHandles << QAbstractVideoBuffer::GLTextureHandle;
+}
+
+QVideoSurfaceCoreGraphicsPainter::~QVideoSurfaceCoreGraphicsPainter()
+{
+ [(CIContext*)ciContext release];
+}
+
+QList<QVideoFrame::PixelFormat> QVideoSurfaceCoreGraphicsPainter::supportedPixelFormats(
+ QAbstractVideoBuffer::HandleType handleType) const
+{
+ return m_supportedHandles.contains(handleType)
+ ? m_imagePixelFormats
+ : QList<QVideoFrame::PixelFormat>();
+}
+
+bool QVideoSurfaceCoreGraphicsPainter::isFormatSupported(
+ const QVideoSurfaceFormat &format, QVideoSurfaceFormat *) const
+{
+ return m_supportedHandles.contains(format.handleType())
+ && m_imagePixelFormats.contains(format.pixelFormat())
+ && !format.frameSize().isEmpty();
+}
+
+QAbstractVideoSurface::Error QVideoSurfaceCoreGraphicsPainter::start(const QVideoSurfaceFormat &format)
+{
+ m_frame = QVideoFrame();
+ m_imageFormat = QVideoFrame::imageFormatFromPixelFormat(format.pixelFormat());
+ m_imageSize = format.frameSize();
+ m_scanLineDirection = format.scanLineDirection();
+
+ return m_supportedHandles.contains(format.handleType())
+ && m_imageFormat != QImage::Format_Invalid
+ && !m_imageSize.isEmpty()
+ ? QAbstractVideoSurface::NoError
+ : QAbstractVideoSurface::UnsupportedFormatError;
+}
+
+void QVideoSurfaceCoreGraphicsPainter::stop()
+{
+ m_frame = QVideoFrame();
+}
+
+QAbstractVideoSurface::Error QVideoSurfaceCoreGraphicsPainter::setCurrentFrame(const QVideoFrame &frame)
+{
+ m_frame = frame;
+
+ return QAbstractVideoSurface::NoError;
+}
+
+QAbstractVideoSurface::Error QVideoSurfaceCoreGraphicsPainter::paint(
+ const QRectF &target, QPainter *painter, const QRectF &source)
+{
+ if (m_frame.handleType() == QAbstractVideoBuffer::CoreImageHandle) {
+ if (painter->paintEngine()->type() == QPaintEngine::CoreGraphics ) {
+
+ CIImage *img = (CIImage*)(m_frame.handle().value<void*>());
+
+ if (img) {
+ CGContextRef cgContext = qt_mac_cg_context(painter->device());
+
+ if (cgContext) {
+ painter->beginNativePainting();
+
+ CGRect sRect = CGRectMake(source.x(), source.y(), source.width(), source.height());
+ CGRect dRect = CGRectMake(target.x(), target.y(), target.width(), target.height());
+
+ NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc] initWithCIImage:img];
+
+ if (m_scanLineDirection == QVideoSurfaceFormat::TopToBottom) {
+ CGContextSaveGState( cgContext );
+ CGContextTranslateCTM(cgContext, 0, dRect.origin.y + CGRectGetMaxY(dRect));
+ CGContextScaleCTM(cgContext, 1, -1);
+
+ CGContextDrawImage(cgContext, dRect, [bitmap CGImage]);
+
+ CGContextRestoreGState(cgContext);
+ } else {
+ CGContextDrawImage(cgContext, dRect, [bitmap CGImage]);
+ }
+
+ [bitmap release];
+
+ painter->endNativePainting();
+
+ return QAbstractVideoSurface::NoError;
+ }
+ }
+ } else if (painter->paintEngine()->type() == QPaintEngine::OpenGL2 ||
+ painter->paintEngine()->type() == QPaintEngine::OpenGL) {
+ CIImage *img = (CIImage*)(m_frame.handle().value<void*>());
+
+ if (img) {
+ CGLContextObj cglContext = CGLGetCurrentContext();
+
+ if (cglContext) {
+
+ if (!ciContext) {
+ CGLContextObj cglContext = CGLGetCurrentContext();
+ NSOpenGLPixelFormat *nsglPixelFormat = [NSOpenGLView defaultPixelFormat];
+ CGLPixelFormatObj cglPixelFormat = static_cast<CGLPixelFormatObj>([nsglPixelFormat CGLPixelFormatObj]);
+
+ ciContext = [CIContext contextWithCGLContext:cglContext
+ pixelFormat:cglPixelFormat
+ options:nil];
+
+ [(CIContext*)ciContext retain];
+ }
+
+ CGRect sRect = CGRectMake(source.x(), source.y(), source.width(), source.height());
+ CGRect dRect = m_scanLineDirection == QVideoSurfaceFormat::TopToBottom ?
+ CGRectMake(target.x(), target.y()+target.height(), target.width(), -target.height()) :
+ CGRectMake(target.x(), target.y(), target.width(), target.height());
+
+
+ painter->beginNativePainting();
+
+ [(CIContext*)ciContext drawImage:img inRect:dRect fromRect:sRect];
+
+ painter->endNativePainting();
+
+ return QAbstractVideoSurface::NoError;
+ }
+ }
+ }
+ }
+
+ if (m_frame.handleType() == QAbstractVideoBuffer::GLTextureHandle &&
+ (painter->paintEngine()->type() == QPaintEngine::OpenGL2 ||
+ painter->paintEngine()->type() == QPaintEngine::OpenGL)) {
+
+ painter->beginNativePainting();
+ GLuint texture = m_frame.handle().toUInt();
+
+ glDisable(GL_CULL_FACE);
+ glEnable(GL_TEXTURE_2D);
+
+ glBindTexture(GL_TEXTURE_2D, texture);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+
+ const float txLeft = source.left() / m_frame.width();
+ const float txRight = source.right() / m_frame.width();
+ const float txTop = m_scanLineDirection == QVideoSurfaceFormat::TopToBottom
+ ? source.top() / m_frame.height()
+ : source.bottom() / m_frame.height();
+ const float txBottom = m_scanLineDirection == QVideoSurfaceFormat::TopToBottom
+ ? source.bottom() / m_frame.height()
+ : source.top() / m_frame.height();
+
+ glBegin(GL_QUADS);
+ QRectF rect = target;
+ glTexCoord2f(txLeft, txBottom);
+ glVertex2f(rect.topLeft().x(), rect.topLeft().y());
+ glTexCoord2f(txRight, txBottom);
+ glVertex2f(rect.topRight().x() + 1, rect.topRight().y());
+ glTexCoord2f(txRight, txTop);
+ glVertex2f(rect.bottomRight().x() + 1, rect.bottomRight().y() + 1);
+ glTexCoord2f(txLeft, txTop);
+ glVertex2f(rect.bottomLeft().x(), rect.bottomLeft().y() + 1);
+ glEnd();
+ painter->endNativePainting();
+
+ return QAbstractVideoSurface::NoError;
+ }
+
+ //fallback case, software rendering
+ if (m_frame.map(QAbstractVideoBuffer::ReadOnly)) {
+ QImage image(
+ m_frame.bits(),
+ m_imageSize.width(),
+ m_imageSize.height(),
+ m_frame.bytesPerLine(),
+ m_imageFormat);
+
+ if (m_scanLineDirection == QVideoSurfaceFormat::BottomToTop) {
+ const QTransform oldTransform = painter->transform();
+
+ painter->scale(1, -1);
+ painter->translate(0, -target.bottom());
+ painter->drawImage(
+ QRectF(target.x(), 0, target.width(), target.height()), image, source);
+ painter->setTransform(oldTransform);
+ } else {
+ painter->drawImage(target, image, source);
+ }
+
+ m_frame.unmap();
+ } else {
+ painter->fillRect(target, Qt::black);
+ }
+ return QAbstractVideoSurface::NoError;
+}
+
+void QVideoSurfaceCoreGraphicsPainter::updateColors(int, int, int, int)
+{
+}
+
+QT_END_NAMESPACE
diff --git a/src/multimedia/base/qpaintervideosurface_mac_p.h b/src/multimedia/base/qpaintervideosurface_mac_p.h
new file mode 100644
index 0000000..64442ed
--- /dev/null
+++ b/src/multimedia/base/qpaintervideosurface_mac_p.h
@@ -0,0 +1,100 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtMultimedia module 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 QPAINTERVIDEOSURFACE_MAC_P_H
+#define QPAINTERVIDEOSURFACE_MAC_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qpaintervideosurface_p.h"
+#include <QtMultimedia/qvideosurfaceformat.h>
+#include <QtMultimedia/qvideoframe.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QVideoSurfaceCoreGraphicsPainter : public QVideoSurfacePainter
+{
+public:
+ QVideoSurfaceCoreGraphicsPainter(bool glSupported);
+ ~QVideoSurfaceCoreGraphicsPainter();
+
+ QList<QVideoFrame::PixelFormat> supportedPixelFormats(
+ QAbstractVideoBuffer::HandleType handleType) const;
+
+ bool isFormatSupported(
+ const QVideoSurfaceFormat &format, QVideoSurfaceFormat *similar) const;
+
+ QAbstractVideoSurface::Error start(const QVideoSurfaceFormat &format);
+ void stop();
+
+ QAbstractVideoSurface::Error setCurrentFrame(const QVideoFrame &frame);
+
+ QAbstractVideoSurface::Error paint(
+ const QRectF &target, QPainter *painter, const QRectF &source);
+
+ void updateColors(int brightness, int contrast, int hue, int saturation);
+
+private:
+ void* ciContext;
+ QList<QVideoFrame::PixelFormat> m_imagePixelFormats;
+ QVideoFrame m_frame;
+ QSize m_imageSize;
+ QImage::Format m_imageFormat;
+ QVector<QAbstractVideoBuffer::HandleType> m_supportedHandles;
+ QVideoSurfaceFormat::Direction m_scanLineDirection;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif
diff --git a/src/multimedia/base/qpaintervideosurface_p.h b/src/multimedia/base/qpaintervideosurface_p.h
index d4b6740..caba3ba 100644
--- a/src/multimedia/base/qpaintervideosurface_p.h
+++ b/src/multimedia/base/qpaintervideosurface_p.h
@@ -67,8 +67,28 @@ QT_BEGIN_NAMESPACE
class QGLContext;
+class QVideoSurfacePainter
+{
+public:
+ virtual ~QVideoSurfacePainter();
+
+ virtual QList<QVideoFrame::PixelFormat> supportedPixelFormats(
+ QAbstractVideoBuffer::HandleType handleType) const = 0;
+
+ virtual bool isFormatSupported(
+ const QVideoSurfaceFormat &format, QVideoSurfaceFormat *similar) const = 0;
+
+ virtual QAbstractVideoSurface::Error start(const QVideoSurfaceFormat &format) = 0;
+ virtual void stop() = 0;
+
+ virtual QAbstractVideoSurface::Error setCurrentFrame(const QVideoFrame &frame) = 0;
+
+ virtual QAbstractVideoSurface::Error paint(
+ const QRectF &target, QPainter *painter, const QRectF &source) = 0;
+
+ virtual void updateColors(int brightness, int contrast, int hue, int saturation) = 0;
+};
-class QVideoSurfacePainter;
class Q_MULTIMEDIA_EXPORT QPainterVideoSurface : public QAbstractVideoSurface
{
Q_OBJECT
diff --git a/src/multimedia/base/qvideowidget.cpp b/src/multimedia/base/qvideowidget.cpp
index 3820af9..b791abd 100644
--- a/src/multimedia/base/qvideowidget.cpp
+++ b/src/multimedia/base/qvideowidget.cpp
@@ -218,13 +218,23 @@ void QRendererVideoWidgetBackend::paintEvent(QPaintEvent *event)
{
QPainter painter(m_widget);
+ if (m_widget->testAttribute(Qt::WA_OpaquePaintEvent)) {
+ QRegion borderRegion = event->region();
+ borderRegion = borderRegion.subtracted(m_boundingRect);
+
+ QBrush brush = m_widget->palette().window();
+
+ QVector<QRect> rects = borderRegion.rects();
+ for (QVector<QRect>::iterator it = rects.begin(), end = rects.end(); it != end; ++it) {
+ painter.fillRect(*it, brush);
+ }
+ }
+
if (m_surface->isActive() && m_boundingRect.intersects(event->rect())) {
m_surface->paint(&painter, m_boundingRect, m_sourceRect);
m_surface->setReady(true);
} else {
- painter.fillRect(event->rect(), m_widget->palette().background());
-
#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_1_CL) && !defined(QT_OPENGL_ES_1)
if (m_updatePaintDevice && (painter.paintEngine()->type() == QPaintEngine::OpenGL
|| painter.paintEngine()->type() == QPaintEngine::OpenGL2)) {
@@ -239,6 +249,7 @@ void QRendererVideoWidgetBackend::paintEvent(QPaintEvent *event)
}
#endif
}
+
}
void QRendererVideoWidgetBackend::formatChanged(const QVideoSurfaceFormat &format)
@@ -248,6 +259,7 @@ void QRendererVideoWidgetBackend::formatChanged(const QVideoSurfaceFormat &forma
updateRects();
m_widget->updateGeometry();
+ m_widget->update();
}
void QRendererVideoWidgetBackend::frameChanged()
@@ -364,6 +376,12 @@ void QWindowVideoWidgetBackend::resizeEvent(QResizeEvent *)
void QWindowVideoWidgetBackend::paintEvent(QPaintEvent *event)
{
+ if (m_widget->testAttribute(Qt::WA_OpaquePaintEvent)) {
+ QPainter painter(m_widget);
+
+ painter.fillRect(event->rect(), m_widget->palette().window());
+ }
+
m_windowControl->repaint();
event->accept();
@@ -504,6 +522,7 @@ void QVideoWidgetPrivate::_q_fullScreenChanged(bool fullScreen)
void QVideoWidgetPrivate::_q_dimensionsChanged()
{
q_func()->updateGeometry();
+ q_func()->update();
}
/*!
@@ -545,10 +564,6 @@ QVideoWidget::QVideoWidget(QWidget *parent)
, d_ptr(new QVideoWidgetPrivate)
{
d_ptr->q_ptr = this;
-
- QPalette palette = QWidget::palette();
- palette.setColor(QPalette::Background, Qt::black);
- setPalette(palette);
}
/*!
@@ -913,8 +928,13 @@ void QVideoWidget::paintEvent(QPaintEvent *event)
{
Q_D(QVideoWidget);
- if (d->currentBackend)
+ if (d->currentBackend) {
d->currentBackend->paintEvent(event);
+ } else if (testAttribute(Qt::WA_OpaquePaintEvent)) {
+ QPainter painter(this);
+
+ painter.fillRect(event->rect(), palette().window());
+ }
}
#include "moc_qvideowidget.cpp"
diff --git a/src/multimedia/effects/effects.pri b/src/multimedia/effects/effects.pri
index be2b696..6307255 100644
--- a/src/multimedia/effects/effects.pri
+++ b/src/multimedia/effects/effects.pri
@@ -5,7 +5,8 @@ unix:!mac {
DEFINES += QT_MULTIMEDIA_PULSEAUDIO
HEADERS += $$PWD/qsoundeffect_pulse_p.h
SOURCES += $$PWD/qsoundeffect_pulse_p.cpp
- LIBS += -lpulse
+ QMAKE_CXXFLAGS += $$QT_CFLAGS_PULSEAUDIO
+ LIBS += $$QT_LIBS_PULSEAUDIO
} else {
DEFINES += QT_MULTIMEDIA_QMEDIAPLAYER
HEADERS += $$PWD/qsoundeffect_qmedia_p.h
diff --git a/src/multimedia/effects/qsoundeffect.cpp b/src/multimedia/effects/qsoundeffect.cpp
index ed9ab3f..8a38103 100644
--- a/src/multimedia/effects/qsoundeffect.cpp
+++ b/src/multimedia/effects/qsoundeffect.cpp
@@ -56,18 +56,25 @@ QT_BEGIN_NAMESPACE
\since 4.7
\brief The SoundEffect element provides a way to play sound effects in qml.
+ This element is part of the \bold{Qt.multimedia 4.7} module.
+
The following example plays a wav file on mouse click.
\qml
- SoundEffect {
- id: playSound
- source: "test.wav"
- }
- MouseArea {
- id: playArea
- anchors.fill: parent
- onPressed: {
- playSound.play()
+ import Qt 4.6
+ import Qt.multimedia 4.7
+
+ Item {
+ SoundEffect {
+ id: playSound
+ source: "test.wav"
+ }
+ MouseArea {
+ id: playArea
+ anchors.fill: parent
+ onPressed: {
+ playSound.play()
+ }
}
}
\endqml
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index 1d8224c..17b864c 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -58,6 +58,28 @@ QT_BEGIN_NAMESPACE
// TODO: Put channel specific stuff here so it does not polute qhttpnetworkconnection.cpp
+QHttpNetworkConnectionChannel::QHttpNetworkConnectionChannel()
+ : socket(0)
+ , state(IdleState)
+ , reply(0)
+ , written(0)
+ , bytesTotal(0)
+ , resendCurrent(false)
+ , lastStatus(0)
+ , pendingEncrypt(false)
+ , reconnectAttempts(2)
+ , authMehtod(QAuthenticatorPrivate::None)
+ , proxyAuthMehtod(QAuthenticatorPrivate::None)
+#ifndef QT_NO_OPENSSL
+ , ignoreAllSslErrors(false)
+#endif
+ , pipeliningSupported(PipeliningSupportUnknown)
+ , connection(0)
+{
+ // Inlining this function in the header leads to compiler error on
+ // release-armv5, on at least timebox 9.2 and 10.1.
+}
+
void QHttpNetworkConnectionChannel::init()
{
#ifndef QT_NO_OPENSSL
@@ -648,7 +670,8 @@ void QHttpNetworkConnectionChannel::allDone()
close();
QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection);
} else if (alreadyPipelinedRequests.isEmpty()) {
- QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection);
+ if (qobject_cast<QHttpNetworkConnection*>(connection))
+ QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection);
}
}
@@ -753,7 +776,8 @@ void QHttpNetworkConnectionChannel::handleStatus()
}
break;
default:
- QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection);
+ if (qobject_cast<QHttpNetworkConnection*>(connection))
+ QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection);
}
}
@@ -801,7 +825,8 @@ void QHttpNetworkConnectionChannel::closeAndResendCurrentRequest()
requeueCurrentlyPipelinedRequests();
close();
resendCurrent = true;
- QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection);
+ if (qobject_cast<QHttpNetworkConnection*>(connection))
+ QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection);
}
bool QHttpNetworkConnectionChannel::isSocketBusy() const
@@ -865,7 +890,14 @@ void QHttpNetworkConnectionChannel::_q_disconnected()
void QHttpNetworkConnectionChannel::_q_connected()
{
// improve performance since we get the request sent by the kernel ASAP
- socket->setSocketOption(QAbstractSocket::LowDelayOption, 1);
+ //socket->setSocketOption(QAbstractSocket::LowDelayOption, 1);
+ // We have this commented out now. It did not have the effect we wanted. If we want to
+ // do this properly, Qt has to combine multiple HTTP requests into one buffer
+ // and send this to the kernel in one syscall and then the kernel immediately sends
+ // it as one TCP packet because of TCP_NODELAY.
+ // However, this code is currently not in Qt, so we rely on the kernel combining
+ // the requests into one TCP packet.
+
// not sure yet if it helps, but it makes sense
socket->setSocketOption(QAbstractSocket::KeepAliveOption, 1);
@@ -932,7 +964,7 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
errorCode = QNetworkReply::UnknownNetworkError;
break;
}
- QPointer<QObject> that = connection;
+ QPointer<QHttpNetworkConnection> that = connection;
QString errorString = connection->d_func()->errorDetail(errorCode, socket, socket->errorString());
if (send2Reply) {
if (reply) {
@@ -987,8 +1019,16 @@ void QHttpNetworkConnectionChannel::_q_encryptedBytesWritten(qint64 bytes)
sendRequest();
// otherwise we do nothing
}
+
#endif
+void QHttpNetworkConnectionChannel::setConnection(QHttpNetworkConnection *c)
+{
+ // Inlining this function in the header leads to compiler error on
+ // release-armv5, on at least timebox 9.2 and 10.1.
+ connection = c;
+}
+
QT_END_NAMESPACE
#include "moc_qhttpnetworkconnectionchannel_p.cpp"
diff --git a/src/network/access/qhttpnetworkconnectionchannel_p.h b/src/network/access/qhttpnetworkconnectionchannel_p.h
index 5032d2b..51cb5e8 100644
--- a/src/network/access/qhttpnetworkconnectionchannel_p.h
+++ b/src/network/access/qhttpnetworkconnectionchannel_p.h
@@ -65,6 +65,7 @@
#include <private/qhttpnetworkrequest_p.h>
#include <private/qhttpnetworkreply_p.h>
+#include "qhttpnetworkconnection_p.h"
#ifndef QT_NO_HTTP
@@ -80,7 +81,6 @@ QT_BEGIN_NAMESPACE
class QHttpNetworkRequest;
class QHttpNetworkReply;
class QByteArray;
-class QHttpNetworkConnection;
#ifndef HttpMessagePair
typedef QPair<QHttpNetworkRequest, QHttpNetworkReply*> HttpMessagePair;
@@ -127,18 +127,10 @@ public:
QList<HttpMessagePair> alreadyPipelinedRequests;
- QHttpNetworkConnectionChannel() : socket(0), state(IdleState), reply(0), written(0), bytesTotal(0), resendCurrent(false),
- lastStatus(0), pendingEncrypt(false), reconnectAttempts(2),
- authMehtod(QAuthenticatorPrivate::None), proxyAuthMehtod(QAuthenticatorPrivate::None)
-#ifndef QT_NO_OPENSSL
- , ignoreAllSslErrors(false)
-#endif
- , pipeliningSupported(PipeliningSupportUnknown)
- , connection(0)
- {}
-
- void setConnection(QHttpNetworkConnection *c) {connection = c;}
- QHttpNetworkConnection *connection;
+ QHttpNetworkConnectionChannel();
+
+ void setConnection(QHttpNetworkConnection *c);
+ QPointer<QHttpNetworkConnection> connection;
void init();
void close();
@@ -187,8 +179,6 @@ public:
#endif
};
-
-
QT_END_NAMESPACE
#endif // QT_NO_HTTP
diff --git a/src/network/bearer/qnetworkconfigmanager.h b/src/network/bearer/qnetworkconfigmanager.h
index bb4d8a0..79bb27c 100644
--- a/src/network/bearer/qnetworkconfigmanager.h
+++ b/src/network/bearer/qnetworkconfigmanager.h
@@ -42,17 +42,26 @@
#ifndef QNETWORKCONFIGURATIONMANAGER_H
#define QNETWORKCONFIGURATIONMANAGER_H
+#ifdef QT_MOBILITY_BEARER
+# include "qmobilityglobal.h"
+#endif
+
#include <QtCore/qobject.h>
#include <QtNetwork/qnetworkconfiguration.h>
QT_BEGIN_HEADER
+#ifndef QT_MOBILITY_BEARER
QT_BEGIN_NAMESPACE
-
+#define QNetworkConfigurationManagerExport Q_NETWORK_EXPORT
QT_MODULE(Network)
+#else
+QTM_BEGIN_NAMESPACE
+#define QNetworkConfigurationManagerExport Q_BEARER_EXPORT
+#endif
class QNetworkConfigurationManagerPrivate;
-class Q_NETWORK_EXPORT QNetworkConfigurationManager : public QObject
+class QNetworkConfigurationManagerExport QNetworkConfigurationManager : public QObject
{
Q_OBJECT
@@ -94,7 +103,11 @@ Q_SIGNALS:
Q_DECLARE_OPERATORS_FOR_FLAGS(QNetworkConfigurationManager::Capabilities)
+#ifndef QT_MOBILITY_BEARER
QT_END_NAMESPACE
+#else
+QTM_END_NAMESPACE
+#endif
QT_END_HEADER
diff --git a/src/network/bearer/qnetworkconfiguration.h b/src/network/bearer/qnetworkconfiguration.h
index dad6198..dce39eb 100644
--- a/src/network/bearer/qnetworkconfiguration.h
+++ b/src/network/bearer/qnetworkconfiguration.h
@@ -42,19 +42,33 @@
#ifndef QNETWORKCONFIGURATION_H
#define QNETWORKCONFIGURATION_H
-#include <QtCore/qglobal.h>
+#ifndef QT_MOBILITY_BEARER
+# include <QtCore/qglobal.h>
+#else
+# include "qmobilityglobal.h"
+#endif
+
#include <QtCore/qshareddata.h>
#include <QtCore/qstring.h>
#include <QtCore/qlist.h>
+#if defined(Q_OS_WIN) && defined(interface)
+#undef interface
+#endif
+
QT_BEGIN_HEADER
+#ifndef QT_MOBILITY_BEARER
QT_BEGIN_NAMESPACE
-
QT_MODULE(Network)
+#define QNetworkConfigurationExport Q_NETWORK_EXPORT
+#else
+QTM_BEGIN_NAMESPACE
+#define QNetworkConfigurationExport Q_BEARER_EXPORT
+#endif
class QNetworkConfigurationPrivate;
-class Q_NETWORK_EXPORT QNetworkConfiguration
+class QNetworkConfigurationExport QNetworkConfiguration
{
public:
QNetworkConfiguration();
@@ -108,7 +122,11 @@ private:
QExplicitlySharedDataPointer<QNetworkConfigurationPrivate> d;
};
+#ifndef QT_MOBILITY_BEARER
QT_END_NAMESPACE
+#else
+QTM_END_NAMESPACE
+#endif
QT_END_HEADER
diff --git a/src/network/bearer/qnetworksession.h b/src/network/bearer/qnetworksession.h
index 596f527..2911d0a 100644
--- a/src/network/bearer/qnetworksession.h
+++ b/src/network/bearer/qnetworksession.h
@@ -54,12 +54,19 @@
QT_BEGIN_HEADER
+#ifndef QT_MOBILITY_BEARER
+#include <QtCore/qshareddata.h>
QT_BEGIN_NAMESPACE
-
QT_MODULE(Network)
+#define QNetworkSessionExport Q_NETWORK_EXPORT
+#else
+#include "qmobilityglobal.h"
+QTM_BEGIN_NAMESPACE
+#define QNetworkSessionExport Q_BEARER_EXPORT
+#endif
class QNetworkSessionPrivate;
-class Q_NETWORK_EXPORT QNetworkSession : public QObject
+class QNetworkSessionExport QNetworkSession : public QObject
{
Q_OBJECT
public:
@@ -80,8 +87,11 @@ public:
OperationNotSupportedError,
InvalidConfigurationError
};
-
- explicit QNetworkSession(const QNetworkConfiguration& connConfig, QObject* parent =0);
+#ifndef QT_MOBILITY_BEARER
+ QNetworkSession(const QNetworkConfiguration& connConfig, QObject* parent =0);
+#else
+ explicit QNetworkSession(const QNetworkConfiguration& connConfig, QObject* parent =0);
+#endif
virtual ~QNetworkSession();
bool isOpen() const;
@@ -131,7 +141,11 @@ private:
friend class QNetworkSessionPrivate;
};
+#ifndef QT_MOBILITY_BEARER
QT_END_NAMESPACE
+#else
+QTM_END_NAMESPACE
+#endif
QT_END_HEADER
diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp
index 3d0c32d..baf69e7 100644
--- a/src/network/kernel/qhostinfo.cpp
+++ b/src/network/kernel/qhostinfo.cpp
@@ -479,6 +479,7 @@ void QHostInfoRunnable::run()
QHostInfoLookupManager::QHostInfoLookupManager() : mutex(QMutex::Recursive), wasDeleted(false)
{
moveToThread(QCoreApplicationPrivate::mainThread());
+ connect(QCoreApplication::instance(), SIGNAL(destroyed()), SLOT(waitForThreadPoolDone()), Qt::DirectConnection);
threadPool.setMaxThreadCount(5); // do 5 DNS lookups in parallel
}
diff --git a/src/network/kernel/qhostinfo_p.h b/src/network/kernel/qhostinfo_p.h
index 2b26b07..4fc74e9 100644
--- a/src/network/kernel/qhostinfo_p.h
+++ b/src/network/kernel/qhostinfo_p.h
@@ -184,6 +184,9 @@ protected:
QMutex mutex;
bool wasDeleted;
+
+private slots:
+ void waitForThreadPoolDone() { threadPool.waitForDone(); }
};
#endif
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index 1169533..1f28b08 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -593,7 +593,7 @@ inline GLenum qt_gl_preferredTextureTarget()
}
// One resource per group of shared contexts.
-class Q_AUTOTEST_EXPORT QGLContextResource
+class Q_OPENGL_EXPORT QGLContextResource
{
public:
typedef void (*FreeFunc)(void *);
diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp
index af0100b..456e111 100644
--- a/src/opengl/qgl_x11egl.cpp
+++ b/src/opengl/qgl_x11egl.cpp
@@ -435,30 +435,30 @@ QGLTexture *QGLContextPrivate::bindTextureFromNativePixmap(QPixmap *pixmap, cons
// If the pixmap doesn't already have a valid surface, try binding it via EGLImage
// first, as going through EGLImage should be faster and better supported:
- if (!textureIsBound && haveEglImageTFP) {
- Q_ASSERT(eglCreateImageKHR);
-
- EGLImageKHR eglImage;
-
- EGLint attribs[] = {
- EGL_IMAGE_PRESERVED_KHR, EGL_TRUE,
- EGL_NONE
- };
- eglImage = eglCreateImageKHR(QEgl::display(), EGL_NO_CONTEXT, EGL_NATIVE_PIXMAP_KHR,
- (EGLClientBuffer)QEgl::nativePixmap(pixmap), attribs);
-
- QGLContext* ctx = q;
- glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, eglImage);
-
- GLint err = glGetError();
- if (err == GL_NO_ERROR)
- textureIsBound = true;
-
- // Once the egl image is bound, the texture becomes a new sibling image and we can safely
- // destroy the EGLImage we created for the pixmap:
- if (eglImage != EGL_NO_IMAGE_KHR)
- eglDestroyImageKHR(QEgl::display(), eglImage);
- }
+// if (!textureIsBound && haveEglImageTFP) {
+// Q_ASSERT(eglCreateImageKHR);
+//
+// EGLImageKHR eglImage;
+//
+// EGLint attribs[] = {
+// EGL_IMAGE_PRESERVED_KHR, EGL_TRUE,
+// EGL_NONE
+// };
+// eglImage = eglCreateImageKHR(QEgl::display(), EGL_NO_CONTEXT, EGL_NATIVE_PIXMAP_KHR,
+// (EGLClientBuffer)QEgl::nativePixmap(pixmap), attribs);
+//
+// QGLContext* ctx = q;
+// glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, eglImage);
+//
+// GLint err = glGetError();
+// if (err == GL_NO_ERROR)
+// textureIsBound = true;
+//
+// // Once the egl image is bound, the texture becomes a new sibling image and we can safely
+// // destroy the EGLImage we created for the pixmap:
+// if (eglImage != EGL_NO_IMAGE_KHR)
+// eglDestroyImageKHR(QEgl::display(), eglImage);
+// }
if (!textureIsBound && haveTFP) {
// Check to see if the surface is still valid
diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp
index 4902cbd..d1e899a 100644
--- a/src/openvg/qpaintengine_vg.cpp
+++ b/src/openvg/qpaintengine_vg.cpp
@@ -182,6 +182,7 @@ public:
qreal penScale; // Pen scaling factor from "transform".
QTransform pathTransform; // Calculated VG path transformation.
+ QTransform glyphTransform; // Calculated VG glyph transformation.
QTransform imageTransform; // Calculated VG image transformation.
bool pathTransformSet; // True if path transform set in the VG context.
@@ -499,24 +500,31 @@ extern bool qt_scaleForTransform(const QTransform &transform, qreal *scale);
void QVGPaintEnginePrivate::updateTransform(QPaintDevice *pdev)
{
- VGfloat devh = pdev->height() - 1;
+ VGfloat devh = pdev->height();
// Construct the VG transform by combining the Qt transform with
// the following viewport transformation:
- // | 1 0 0 | | 1 0 0.5 | | 1 0 0.5 |
- // | 0 -1 devh | * | 0 1 -0.5 | = | 0 -1 (0.5 + devh) |
- // | 0 0 1 | | 0 0 1 | | 0 0 1 |
+ // | 1 0 0 |
+ // | 0 -1 devh |
+ // | 0 0 1 |
+ // The glyph transform uses a slightly different transformation:
+ // | 1 0 0 | | 1 0 0.5 | | 1 0 0.5 |
+ // | 0 -1 devh - 1 | * | 0 1 -0.5 | = | 0 -1 (devh - 0.5) |
+ // | 0 0 1 | | 0 0 1 | | 0 0 1 |
// The full VG transform is effectively:
// 1. Apply the user's transformation matrix.
- // 2. Translate by (0.5, -0.5) to correct for Qt and VG putting
- // the centre of the pixel at different positions.
+ // 2. Translate glyphs by an extra (0.5, -0.5).
// 3. Flip the co-ordinate system upside down.
QTransform viewport(1.0f, 0.0f, 0.0f,
0.0f, -1.0f, 0.0f,
- 0.5f, devh + 0.5f, 1.0f);
+ 0.0f, devh, 1.0f);
+ QTransform gviewport(1.0f, 0.0f, 0.0f,
+ 0.0f, -1.0f, 0.0f,
+ 0.5f, devh - 0.5f, 1.0f);
// Compute the path transform and determine if it is projective.
pathTransform = transform * viewport;
+ glyphTransform = transform * gviewport;
bool projective = (pathTransform.m13() != 0.0f ||
pathTransform.m23() != 0.0f ||
pathTransform.m33() != 1.0f);
@@ -525,6 +533,7 @@ void QVGPaintEnginePrivate::updateTransform(QPaintDevice *pdev)
// so we will have to convert the co-ordinates ourselves.
// Change the matrix to just the viewport transformation.
pathTransform = viewport;
+ glyphTransform = gviewport;
simpleTransform = false;
} else {
simpleTransform = true;
@@ -532,13 +541,7 @@ void QVGPaintEnginePrivate::updateTransform(QPaintDevice *pdev)
pathTransformSet = false;
// The image transform is always the full transformation,
- // because it can be projective. It also does not need the
- // (0.5, -0.5) translation because vgDrawImage() implicitly
- // adds 0.5 to each co-ordinate.
- QTransform viewport2(1.0f, 0.0f, 0.0f,
- 0.0f, -1.0f, 0.0f,
- 0.0f, devh, 1.0f);
- imageTransform = transform * viewport2;
+ imageTransform = transform * viewport;
// Calculate the scaling factor to use for turning cosmetic pens
// into ordinary non-cosmetic pens.
@@ -3331,7 +3334,7 @@ void QVGPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
}
// Set the transformation to use for drawing the current glyphs.
- QTransform glyphTransform(d->pathTransform);
+ QTransform glyphTransform(d->glyphTransform);
glyphTransform.translate(p.x(), p.y());
#if defined(QVG_NO_IMAGE_GLYPHS)
glyphTransform.scale(glyphCache->scaleX, glyphCache->scaleY);
@@ -3669,10 +3672,10 @@ void QVGCompositionHelper::fillBackground
} else {
// Set the path transform to the default viewport transformation.
- VGfloat devh = screenSize.height() - 1;
+ VGfloat devh = screenSize.height();
QTransform viewport(1.0f, 0.0f, 0.0f,
0.0f, -1.0f, 0.0f,
- -0.5f, devh + 0.5f, 1.0f);
+ 0.0f, devh, 1.0f);
d->setTransform(VG_MATRIX_PATH_USER_TO_SURFACE, viewport);
// Set the brush to use to fill the background.
@@ -3708,10 +3711,10 @@ void QVGCompositionHelper::drawCursorPixmap
}
// Set the image transformation and modes.
- VGfloat devh = screenSize.height() - 1;
+ VGfloat devh = screenSize.height();
QTransform transform(1.0f, 0.0f, 0.0f,
0.0f, -1.0f, 0.0f,
- -0.5f, devh + 0.5f, 1.0f);
+ 0.0f, devh, 1.0f);
transform.translate(offset.x(), offset.y());
d->setTransform(VG_MATRIX_IMAGE_USER_TO_SURFACE, transform);
d->setImageMode(VG_DRAW_IMAGE_NORMAL);
diff --git a/src/openvg/qpixmapdata_vg.cpp b/src/openvg/qpixmapdata_vg.cpp
index 7550446..5c4f41b 100644
--- a/src/openvg/qpixmapdata_vg.cpp
+++ b/src/openvg/qpixmapdata_vg.cpp
@@ -46,8 +46,10 @@
#include "qvg_p.h"
#include "qvgimagepool_p.h"
+#if defined(Q_OS_SYMBIAN)
#include <private/qt_s60_p.h>
#include <fbs.h>
+#endif
#ifdef QT_SYMBIAN_SUPPORTS_SGIMAGE
#include <sgresource/sgimage.h>
typedef VGImage (*pfnVgCreateEGLImageTargetKHR)(VGeglImageKHR);
@@ -455,8 +457,8 @@ void QVGPixmapData::cleanup()
void QVGPixmapData::fromNativeType(void* pixmap, NativeType type)
{
-#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL)
if (type == QPixmapData::SgImage && pixmap) {
+#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL)
RSgImage *sgImage = reinterpret_cast<RSgImage*>(pixmap);
destroyImages();
@@ -487,7 +489,7 @@ void QVGPixmapData::fromNativeType(void* pixmap, NativeType type)
pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR");
- if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) {
+ if (eglGetError() != EGL_SUCCESS || !(QEgl::hasExtension("EGL_KHR_image") || QEgl::hasExtension("EGL_KHR_image_pixmap")) || !vgCreateEGLImageTargetKHR) {
cleanup();
driver.Close();
return;
@@ -525,6 +527,7 @@ void QVGPixmapData::fromNativeType(void* pixmap, NativeType type)
// release stuff
eglDestroyImageKHR(QEgl::display(), eglImage);
driver.Close();
+#endif
} else if (type == QPixmapData::FbsBitmap) {
CFbsBitmap *bitmap = reinterpret_cast<CFbsBitmap*>(pixmap);
@@ -570,16 +573,12 @@ void QVGPixmapData::fromNativeType(void* pixmap, NativeType type)
if(deleteSourceBitmap)
delete bitmap;
}
-#else
- Q_UNUSED(pixmap);
- Q_UNUSED(type);
-#endif
}
void* QVGPixmapData::toNativeType(NativeType type)
{
-#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL)
if (type == QPixmapData::SgImage) {
+#if defined(QT_SYMBIAN_SUPPORTS_SGIMAGE) && !defined(QT_NO_EGL)
toVGImage();
if (!isValid() || vgImage == VG_INVALID_HANDLE)
@@ -606,7 +605,7 @@ void* QVGPixmapData::toNativeType(NativeType type)
pfnVgCreateEGLImageTargetKHR vgCreateEGLImageTargetKHR = (pfnVgCreateEGLImageTargetKHR) eglGetProcAddress("vgCreateEGLImageTargetKHR");
- if (eglGetError() != EGL_SUCCESS || !eglCreateImageKHR || !eglDestroyImageKHR || !vgCreateEGLImageTargetKHR) {
+ if (eglGetError() != EGL_SUCCESS || !(QEgl::hasExtension("EGL_KHR_image") || QEgl::hasExtension("EGL_KHR_image_pixmap")) || !vgCreateEGLImageTargetKHR) {
driver.Close();
return 0;
}
@@ -644,6 +643,7 @@ void* QVGPixmapData::toNativeType(NativeType type)
eglDestroyImageKHR(QEgl::display(), eglImage);
driver.Close();
return reinterpret_cast<void*>(sgImage);
+#endif
} else if (type == QPixmapData::FbsBitmap) {
CFbsBitmap *bitmap = q_check_ptr(new CFbsBitmap);
@@ -665,10 +665,7 @@ void* QVGPixmapData::toNativeType(NativeType type)
return reinterpret_cast<void*>(bitmap);
}
-#else
- Q_UNUSED(type);
return 0;
-#endif
}
#endif //Q_OS_SYMBIAN
diff --git a/src/phonon/phonon.pro b/src/phonon/phonon.pro
index 0469839..7f79d0b 100644
--- a/src/phonon/phonon.pro
+++ b/src/phonon/phonon.pro
@@ -2,8 +2,8 @@ TARGET = phonon
include(../qbase.pri)
PHONON_MAJOR_VERSION = $${QT_MAJOR_VERSION}
-PHONON_MINOR_VERSION = 3
-PHONON_PATCH_VERSION = 1
+PHONON_MINOR_VERSION = 4
+PHONON_PATCH_VERSION = 0
VERSION = $${PHONON_MAJOR_VERSION}.$${PHONON_MINOR_VERSION}.$${PHONON_PATCH_VERSION}
DEPENDPATH += .
@@ -21,6 +21,9 @@ HEADERS += $$PHONON_DIR/abstractaudiooutput.h \
$$PHONON_DIR/abstractvideooutput.h \
$$PHONON_DIR/abstractvideooutput_p.h \
$$PHONON_DIR/addoninterface.h \
+ $$PHONON_DIR/audiodataoutput_p.h \
+ $$PHONON_DIR/audiodataoutput.h \
+ $$PHONON_DIR/audiodataoutputinterface.h \
$$PHONON_DIR/audiooutput.h \
$$PHONON_DIR/audiooutput_p.h \
$$PHONON_DIR/audiooutputinterface.h \
@@ -36,6 +39,7 @@ HEADERS += $$PHONON_DIR/abstractaudiooutput.h \
$$PHONON_DIR/effectwidget_p.h \
$$PHONON_DIR/factory_p.h \
$$PHONON_DIR/frontendinterface_p.h \
+ $$PHONON_DIR/globalconfig.h \
$$PHONON_DIR/globalconfig_p.h \
$$PHONON_DIR/iodevicestream_p.h \
$$PHONON_DIR/mediacontroller.h \
@@ -53,6 +57,7 @@ HEADERS += $$PHONON_DIR/abstractaudiooutput.h \
$$PHONON_DIR/objectdescriptionmodel_p.h \
$$PHONON_DIR/path.h \
$$PHONON_DIR/path_p.h \
+ $$PHONON_DIR/pulsesupport.h \
$$PHONON_DIR/phonondefs.h \
$$PHONON_DIR/phonondefs_p.h \
$$PHONON_DIR/phononnamespace.h \
@@ -64,6 +69,7 @@ HEADERS += $$PHONON_DIR/abstractaudiooutput.h \
$$PHONON_DIR/seekslider_p.h \
$$PHONON_DIR/streaminterface.h \
$$PHONON_DIR/streaminterface_p.h \
+ $$PHONON_DIR/swiftslider_p.h \
$$PHONON_DIR/videoplayer.h \
$$PHONON_DIR/videowidget.h \
$$PHONON_DIR/videowidget_p.h \
@@ -73,35 +79,39 @@ HEADERS += $$PHONON_DIR/abstractaudiooutput.h \
$$PHONON_DIR/volumefaderinterface.h \
$$PHONON_DIR/volumeslider.h \
$$PHONON_DIR/volumeslider_p.h
-SOURCES += $$PHONON_DIR/objectdescription.cpp \
- $$PHONON_DIR/objectdescriptionmodel.cpp \
- $$PHONON_DIR/phononnamespace.cpp \
- $$PHONON_DIR/mediasource.cpp \
- $$PHONON_DIR/abstractmediastream.cpp \
- $$PHONON_DIR/streaminterface.cpp \
- $$PHONON_DIR/mediaobject.cpp \
- $$PHONON_DIR/medianode.cpp \
- $$PHONON_DIR/path.cpp \
- $$PHONON_DIR/effectparameter.cpp \
- $$PHONON_DIR/effect.cpp \
- $$PHONON_DIR/volumefadereffect.cpp \
- $$PHONON_DIR/abstractaudiooutput.cpp \
+
+SOURCES += $$PHONON_DIR/abstractaudiooutput.cpp \
$$PHONON_DIR/abstractaudiooutput_p.cpp \
- $$PHONON_DIR/audiooutput.cpp \
- $$PHONON_DIR/audiooutputinterface.cpp \
+ $$PHONON_DIR/abstractmediastream.cpp \
$$PHONON_DIR/abstractvideooutput.cpp \
$$PHONON_DIR/abstractvideooutput_p.cpp \
+ $$PHONON_DIR/audiodataoutput.cpp \
+ $$PHONON_DIR/audiooutput.cpp \
+ $$PHONON_DIR/audiooutputinterface.cpp \
$$PHONON_DIR/backendcapabilities.cpp \
- $$PHONON_DIR/globalconfig.cpp \
+ $$PHONON_DIR/effect.cpp \
+ $$PHONON_DIR/effectparameter.cpp \
+ $$PHONON_DIR/effectwidget.cpp \
$$PHONON_DIR/factory.cpp \
- $$PHONON_DIR/platform.cpp \
+ $$PHONON_DIR/globalconfig.cpp \
+ $$PHONON_DIR/iodevicestream.cpp \
$$PHONON_DIR/mediacontroller.cpp \
- $$PHONON_DIR/videowidget.cpp \
- $$PHONON_DIR/videoplayer.cpp \
+ $$PHONON_DIR/medianode.cpp \
+ $$PHONON_DIR/mediaobject.cpp \
+ $$PHONON_DIR/mediasource.cpp \
+ $$PHONON_DIR/objectdescription.cpp \
+ $$PHONON_DIR/objectdescriptionmodel.cpp \
+ $$PHONON_DIR/path.cpp \
+ $$PHONON_DIR/phononnamespace.cpp \
+ $$PHONON_DIR/platform.cpp \
+ $$PHONON_DIR/pulsesupport.cpp \
$$PHONON_DIR/seekslider.cpp \
- $$PHONON_DIR/volumeslider.cpp \
- $$PHONON_DIR/effectwidget.cpp \
- $$PHONON_DIR/iodevicestream.cpp
+ $$PHONON_DIR/streaminterface.cpp \
+ $$PHONON_DIR/swiftslider.cpp \
+ $$PHONON_DIR/videoplayer.cpp \
+ $$PHONON_DIR/videowidget.cpp \
+ $$PHONON_DIR/volumefadereffect.cpp \
+ $$PHONON_DIR/volumeslider.cpp
contains(QT_CONFIG, dbus) {
QT += dbus
@@ -114,6 +124,12 @@ contains(QT_CONFIG, dbus) {
contains(QT_CONFIG, reduce_exports): CONFIG += hide_symbols
+unix:!isEmpty(QT_CFLAGS_PULSEAUDIO) {
+ DEFINES += HAVE_PULSEAUDIO
+ QMAKE_CXXFLAGS += $$QT_CFLAGS_PULSEAUDIO
+ LIBS += $$QT_LIBS_PULSEAUDIO
+}
+
symbian: {
# Phonon depends on numeric_limits. Enabling STL support in Qt
# would bring in link dependencies, and we don't need that for
diff --git a/src/plugins/bearer/nativewifi/platformdefs.h b/src/plugins/bearer/nativewifi/platformdefs.h
index 57ae852..d67525a 100644
--- a/src/plugins/bearer/nativewifi/platformdefs.h
+++ b/src/plugins/bearer/nativewifi/platformdefs.h
@@ -52,6 +52,8 @@
#define WLAN_AVAILABLE_NETWORK_HAS_PROFILE 2
#define DOT11_SSID_MAX_LENGTH 32
+QT_BEGIN_NAMESPACE
+
struct WLAN_NOTIFICATION_DATA {
DWORD NotificationSource;
DWORD NotificationCode;
@@ -319,4 +321,6 @@ extern WlanScanProto local_WlanScan;
extern WlanFreeMemoryProto local_WlanFreeMemory;
extern WlanCloseHandleProto local_WlanCloseHandle;
+QT_END_NAMESPACE
+
#endif // PLATFORMDEFS_H
diff --git a/src/plugins/bearer/platformdefs_win.h b/src/plugins/bearer/platformdefs_win.h
index 37d099c..1a10ba7 100644
--- a/src/plugins/bearer/platformdefs_win.h
+++ b/src/plugins/bearer/platformdefs_win.h
@@ -47,6 +47,8 @@
#undef interface
#include <winioctl.h>
+QT_BEGIN_NAMESPACE
+
#ifndef NS_NLA
#define NS_NLA 15
@@ -131,4 +133,6 @@ enum NDIS_PHYSICAL_MEDIUM {
#define IOCTL_NDIS_QUERY_GLOBAL_STATS \
CTL_CODE(FILE_DEVICE_PHYSICAL_NETCARD, 0, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
+QT_END_NAMESPACE
+
#endif
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
index 4219f6f..80366d1 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
@@ -290,27 +290,22 @@ bool QDirectFBPixmapData::fromDataBufferDescription(const DFBDataBufferDescripti
void QDirectFBPixmapData::fromImage(const QImage &img,
Qt::ImageConversionFlags flags)
{
- if (img.depth() == 1 || img.format() == QImage::Format_RGB32) {
- fromImage(img.convertToFormat(screen->alphaPixmapFormat()), flags);
- return;
- }
-
- if (img.hasAlphaChannel()
+ if (img.depth() == 1) {
+ alpha = true;
#ifndef QT_NO_DIRECTFB_OPAQUE_DETECTION
- && (flags & Qt::NoOpaqueDetection || QDirectFBPixmapData::hasAlphaChannel(img))
-#endif
- ) {
+ } else if (flags & Qt::NoOpaqueDetection || QDirectFBPixmapData::hasAlphaChannel(img)) {
alpha = true;
- imageFormat = screen->alphaPixmapFormat();
- } else {
- alpha = false;
- imageFormat = screen->pixelFormat();
+#else
+ } else if (img.hasAlphaChannel()) {
+ alpha = true;
+#endif
}
+ imageFormat = alpha ? screen->alphaPixmapFormat() : screen->pixelFormat();
QImage image;
- if (flags != Qt::AutoColor) {
+ if ((flags & ~Qt::NoOpaqueDetection) != Qt::AutoColor) {
image = img.convertToFormat(imageFormat, flags);
flags = Qt::AutoColor;
- } else if (img.format() == QImage::Format_RGB32) {
+ } else if (img.format() == QImage::Format_RGB32 || img.depth() == 1) {
image = img.convertToFormat(imageFormat, flags);
} else {
image = img;
diff --git a/src/plugins/imageformats/svg/main.cpp b/src/plugins/imageformats/svg/main.cpp
index dbbd3b7..329e9d4 100644
--- a/src/plugins/imageformats/svg/main.cpp
+++ b/src/plugins/imageformats/svg/main.cpp
@@ -62,26 +62,18 @@ public:
QStringList QSvgPlugin::keys() const
{
- return QStringList() << QLatin1String("svg");
+ return QStringList() << QLatin1String("svg") << QLatin1String("svgz");
}
QImageIOPlugin::Capabilities QSvgPlugin::capabilities(QIODevice *device, const QByteArray &format) const
{
- //### canRead disabled for now because it's hard to detect
- // whether the file is actually svg without parsing it
- //if (device->isReadable() && QSvgIOHandler::canRead(device))
-
- if (format == "svg")
+ if (format == "svg" || format == "svgz")
return Capabilities(CanRead);
- else
- return 0;
-
-
- if (!device->isOpen())
+ if (!format.isEmpty())
return 0;
Capabilities cap;
- if (device->isReadable())
+ if (device->isReadable() && QSvgIOHandler::canRead(device))
cap |= CanRead;
return cap;
}
diff --git a/src/plugins/imageformats/svg/qsvgiohandler.cpp b/src/plugins/imageformats/svg/qsvgiohandler.cpp
index f3670c6..8155569 100644
--- a/src/plugins/imageformats/svg/qsvgiohandler.cpp
+++ b/src/plugins/imageformats/svg/qsvgiohandler.cpp
@@ -48,6 +48,7 @@
#include "qpixmap.h"
#include "qpainter.h"
#include "qvariant.h"
+#include "qbuffer.h"
#include "qdebug.h"
QT_BEGIN_NAMESPACE
@@ -55,67 +56,54 @@ QT_BEGIN_NAMESPACE
class QSvgIOHandlerPrivate
{
public:
- QSvgIOHandlerPrivate()
- : r(new QSvgRenderer()), loaded(false)
+ QSvgIOHandlerPrivate(QSvgIOHandler *qq)
+ : q(qq), loaded(false), readDone(false), backColor(Qt::transparent)
{}
- ~QSvgIOHandlerPrivate()
- {
- delete r;
- }
bool load(QIODevice *device);
- static bool findSvgTag(QIODevice *device);
- QSvgRenderer *r;
- QSize defaultSize;
- QSize currentSize;
- bool loaded;
+ QSvgIOHandler *q;
+ QSvgRenderer r;
+ QXmlStreamReader xmlReader;
+ QSize defaultSize;
+ QRect clipRect;
+ QSize scaledSize;
+ QRect scaledClipRect;
+ bool loaded;
+ bool readDone;
+ QColor backColor;
};
+
bool QSvgIOHandlerPrivate::load(QIODevice *device)
{
if (loaded)
return true;
+ if (q->format().isEmpty())
+ q->canRead();
+
+ bool res = false;
+ QBuffer *buf = qobject_cast<QBuffer *>(device);
+ if (buf) {
+ res = r.load(buf->data());
+ } else if (q->format() == "svgz") {
+ res = r.load(device->readAll()); // ### can't stream svgz
+ } else {
+ xmlReader.setDevice(device);
+ res = r.load(&xmlReader); //### doesn't leave pos() correctly
+ }
- if (r->load(device->readAll())) {
- defaultSize = QSize(r->viewBox().width(), r->viewBox().height());
- if (currentSize.isEmpty())
- currentSize = defaultSize;
+ if (res) {
+ defaultSize = QSize(r.viewBox().width(), r.viewBox().height());
+ loaded = true;
}
- loaded = r->isValid();
return loaded;
}
-bool QSvgIOHandlerPrivate::findSvgTag(QIODevice *device)
-{
- qint64 pos = device->pos();
- device->seek(0);
- char buffer[256];
- const char svg_tag[] = "<svg";
-
- while (1) {
- int size = device->read(buffer, 256);
- for (int i=0; i<size - 5; ++i) {
- if (!memcmp(buffer + i, svg_tag, 4)) {
- if (buffer[i+4] == ' ' || buffer[i+4] == '\t'
- || buffer[i+4] == '\n' || buffer[i+4] == '\r')
- {
- device->seek(pos);
- return true;
- }
- }
- }
- if (device->atEnd())
- break;
- device->seek(device->pos()-4);
- }
- device->seek(pos);
- return false;
-}
QSvgIOHandler::QSvgIOHandler()
- : d(new QSvgIOHandlerPrivate())
+ : d(new QSvgIOHandlerPrivate(this))
{
}
@@ -129,7 +117,20 @@ QSvgIOHandler::~QSvgIOHandler()
bool QSvgIOHandler::canRead() const
{
- return QSvgIOHandlerPrivate::findSvgTag(device());
+ if (!device())
+ return false;
+ if (d->loaded && !d->readDone)
+ return true; // Will happen if we have been asked for the size
+
+ QByteArray buf = device()->peek(8);
+ if (buf.startsWith("\x1f\x8b")) {
+ setFormat("svgz");
+ return true;
+ } else if (buf.contains("<?xml") || buf.contains("<svg")) {
+ setFormat("svg");
+ return true;
+ }
+ return false;
}
@@ -141,14 +142,41 @@ QByteArray QSvgIOHandler::name() const
bool QSvgIOHandler::read(QImage *image)
{
- if (d->load(device())) {
- *image = QImage(d->currentSize, QImage::Format_ARGB32_Premultiplied);
- if (!d->currentSize.isEmpty()) {
- image->fill(0x00000000);
+ if (!d->readDone && d->load(device())) {
+ bool xform = (d->clipRect.isValid() || d->scaledSize.isValid() || d->scaledClipRect.isValid());
+ QSize finalSize = d->defaultSize;
+ QRectF bounds;
+ if (xform && !d->defaultSize.isEmpty()) {
+ bounds = QRectF(QPointF(0,0), QSizeF(d->defaultSize));
+ QPoint tr1, tr2;
+ QSizeF sc(1, 1);
+ if (d->clipRect.isValid()) {
+ tr1 = -d->clipRect.topLeft();
+ finalSize = d->clipRect.size();
+ }
+ if (d->scaledSize.isValid()) {
+ sc = QSizeF(qreal(d->scaledSize.width()) / finalSize.width(),
+ qreal(d->scaledSize.height()) / finalSize.height());
+ finalSize = d->scaledSize;
+ }
+ if (d->scaledClipRect.isValid()) {
+ tr2 = -d->scaledClipRect.topLeft();
+ finalSize = d->scaledClipRect.size();
+ }
+ QTransform t;
+ t.translate(tr2.x(), tr2.y());
+ t.scale(sc.width(), sc.height());
+ t.translate(tr1.x(), tr1.y());
+ bounds = t.mapRect(bounds);
+ }
+ *image = QImage(finalSize, QImage::Format_ARGB32_Premultiplied);
+ if (!finalSize.isEmpty()) {
+ image->fill(d->backColor.rgba());
QPainter p(image);
- d->r->render(&p);
+ d->r.render(&p, bounds);
p.end();
}
+ d->readDone = true;
return true;
}
@@ -166,8 +194,17 @@ QVariant QSvgIOHandler::option(ImageOption option) const
d->load(device());
return d->defaultSize;
break;
+ case ClipRect:
+ return d->clipRect;
+ break;
case ScaledSize:
- return d->currentSize;
+ return d->scaledSize;
+ break;
+ case ScaledClipRect:
+ return d->scaledClipRect;
+ break;
+ case BackgroundColor:
+ return d->backColor;
break;
default:
break;
@@ -179,12 +216,17 @@ QVariant QSvgIOHandler::option(ImageOption option) const
void QSvgIOHandler::setOption(ImageOption option, const QVariant & value)
{
switch(option) {
- case Size:
- d->defaultSize = value.toSize();
- d->currentSize = value.toSize();
+ case ClipRect:
+ d->clipRect = value.toRect();
break;
case ScaledSize:
- d->currentSize = value.toSize();
+ d->scaledSize = value.toSize();
+ break;
+ case ScaledClipRect:
+ d->scaledClipRect = value.toRect();
+ break;
+ case BackgroundColor:
+ d->backColor = value.value<QColor>();
break;
default:
break;
@@ -198,7 +240,10 @@ bool QSvgIOHandler::supportsOption(ImageOption option) const
{
case ImageFormat:
case Size:
+ case ClipRect:
case ScaledSize:
+ case ScaledClipRect:
+ case BackgroundColor:
return true;
default:
break;
@@ -206,9 +251,11 @@ bool QSvgIOHandler::supportsOption(ImageOption option) const
return false;
}
+
bool QSvgIOHandler::canRead(QIODevice *device)
{
- return QSvgIOHandlerPrivate::findSvgTag(device);
+ QByteArray buf = device->peek(8);
+ return buf.startsWith("\x1f\x8b") || buf.contains("<?xml") || buf.contains("<svg");
}
QT_END_NAMESPACE
diff --git a/src/plugins/mediaservices/directshow/mediaplayer/vmr9videowindowcontrol.cpp b/src/plugins/mediaservices/directshow/mediaplayer/vmr9videowindowcontrol.cpp
index e25dd99..1c6df2c 100644
--- a/src/plugins/mediaservices/directshow/mediaplayer/vmr9videowindowcontrol.cpp
+++ b/src/plugins/mediaservices/directshow/mediaplayer/vmr9videowindowcontrol.cpp
@@ -61,6 +61,7 @@ Vmr9VideoWindowControl::Vmr9VideoWindowControl(QObject *parent)
if (IVMRFilterConfig9 *config = com_cast<IVMRFilterConfig9>(m_filter, IID_IVMRFilterConfig9)) {
config->SetRenderingMode(VMR9Mode_Windowless);
config->SetNumberOfStreams(1);
+ config->SetRenderingPrefs(RenderPrefs9_DoNotRenderBorder);
config->Release();
}
}
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamerserviceplugin.cpp b/src/plugins/mediaservices/gstreamer/qgstreamerserviceplugin.cpp
index 589d2b5..98068ac 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamerserviceplugin.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstreamerserviceplugin.cpp
@@ -52,9 +52,9 @@
#ifdef QMEDIA_GSTREAMER_CAPTURE
#include "qgstreamercaptureservice.h"
#endif
-
#include <QtMultimedia/qmediaserviceprovider.h>
+#ifdef QMEDIA_GSTREAMER_CAPTURE
#include <linux/types.h>
#include <sys/time.h>
#include <sys/ioctl.h>
@@ -66,6 +66,7 @@
#include <stdlib.h>
#include <sys/mman.h>
#include <linux/videodev2.h>
+#endif
QT_BEGIN_NAMESPACE
@@ -109,18 +110,21 @@ void QGstreamerServicePlugin::release(QMediaService *service)
QList<QByteArray> QGstreamerServicePlugin::devices(const QByteArray &service) const
{
+#ifdef QMEDIA_GSTREAMER_CAPTURE
if (service == Q_MEDIASERVICE_CAMERA) {
if (m_cameraDevices.isEmpty())
updateDevices();
return m_cameraDevices;
}
+#endif
return QList<QByteArray>();
}
QString QGstreamerServicePlugin::deviceDescription(const QByteArray &service, const QByteArray &device)
{
+#ifdef QMEDIA_GSTREAMER_CAPTURE
if (service == Q_MEDIASERVICE_CAMERA) {
if (m_cameraDevices.isEmpty())
updateDevices();
@@ -129,12 +133,14 @@ QString QGstreamerServicePlugin::deviceDescription(const QByteArray &service, co
if (m_cameraDevices[i] == device)
return m_cameraDescriptions[i];
}
+#endif
return QString();
}
void QGstreamerServicePlugin::updateDevices() const
{
+#ifdef QMEDIA_GSTREAMER_CAPTURE
m_cameraDevices.clear();
m_cameraDescriptions.clear();
@@ -178,6 +184,7 @@ void QGstreamerServicePlugin::updateDevices() const
}
::close(fd);
}
+#endif
}
Q_EXPORT_PLUGIN2(gstengine, QGstreamerServicePlugin);
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp b/src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp
index 406cefe11..4ecf10b 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstreamervideoinputdevicecontrol.cpp
@@ -117,6 +117,7 @@ void QGstreamerVideoInputDeviceControl::update()
m_names.clear();
m_descriptions.clear();
+#ifdef QMEDIA_GSTREAMER_CAPTURE
QDir devDir("/dev");
devDir.setFilter(QDir::System);
@@ -157,6 +158,7 @@ void QGstreamerVideoInputDeviceControl::update()
}
::close(fd);
}
+#endif
}
QT_END_NAMESPACE
diff --git a/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm b/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm
index d83c0e3..65c9f7d 100644
--- a/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm
+++ b/src/plugins/mediaservices/qt7/mediaplayer/qt7playersession.mm
@@ -128,25 +128,25 @@
- (void) processEOS:(NSNotification *)notification
{
Q_UNUSED(notification);
- m_session->processEOS();
+ QMetaObject::invokeMethod(m_session, "processEOS", Qt::AutoConnection);
}
- (void) processLoadStateChange:(NSNotification *)notification
{
Q_UNUSED(notification);
- m_session->processLoadStateChange();
+ QMetaObject::invokeMethod(m_session, "processLoadStateChange", Qt::AutoConnection);
}
- (void) processVolumeChange:(NSNotification *)notification
{
Q_UNUSED(notification);
- m_session->processVolumeChange();
+ QMetaObject::invokeMethod(m_session, "processVolumeChange", Qt::AutoConnection);
}
- (void) processNaturalSizeChange :(NSNotification *)notification
{
Q_UNUSED(notification);
- m_session->processNaturalSizeChange();
+ QMetaObject::invokeMethod(m_session, "processNaturalSizeChange", Qt::AutoConnection);
}
@end
@@ -193,17 +193,13 @@ void QT7PlayerSession::setVideoOutput(QT7VideoOutput *output)
if (m_videoOutput == output)
return;
- if (m_videoOutput) {
- m_videoOutput->setEnabled(false);
+ if (m_videoOutput)
m_videoOutput->setMovie(0);
- }
m_videoOutput = output;
- if (m_videoOutput) {
- m_videoOutput->setEnabled(m_QTMovie != 0);
+ if (m_videoOutput && m_state != QMediaPlayer::StoppedState)
m_videoOutput->setMovie(m_QTMovie);
- }
}
@@ -297,6 +293,9 @@ void QT7PlayerSession::setPosition(qint64 pos)
void QT7PlayerSession::play()
{
+ if (m_videoOutput)
+ m_videoOutput->setMovie(m_QTMovie);
+
float preferredRate = [[(QTMovie*)m_QTMovie attributeForKey:@"QTMoviePreferredRateAttribute"] floatValue];
[(QTMovie*)m_QTMovie setRate:preferredRate*m_rate];
@@ -306,6 +305,9 @@ void QT7PlayerSession::play()
void QT7PlayerSession::pause()
{
+ if (m_videoOutput)
+ m_videoOutput->setMovie(m_QTMovie);
+
m_state = QMediaPlayer::PausedState;
[(QTMovie*)m_QTMovie setRate:0];
@@ -320,6 +322,9 @@ void QT7PlayerSession::stop()
[(QTMovie*)m_QTMovie setRate:0];
setPosition(0);
+ if (m_videoOutput)
+ m_videoOutput->setMovie(0);
+
if (m_state == QMediaPlayer::StoppedState)
emit stateChanged(m_state);
}
@@ -361,10 +366,8 @@ void QT7PlayerSession::setMedia(const QMediaContent &content, QIODevice *stream)
if (m_QTMovie) {
[(QTMovieObserver*)m_movieObserver setMovie:nil];
- if (m_videoOutput) {
- m_videoOutput->setEnabled(false);
+ if (m_videoOutput)
m_videoOutput->setMovie(0);
- }
[(QTMovie*)m_QTMovie release];
m_QTMovie = 0;
@@ -425,10 +428,9 @@ void QT7PlayerSession::setMedia(const QMediaContent &content, QIODevice *stream)
} else {
[(QTMovieObserver*)m_movieObserver setMovie:(QTMovie*)m_QTMovie];
- if (m_videoOutput) {
+ if (m_videoOutput && m_state != QMediaPlayer::StoppedState)
m_videoOutput->setMovie(m_QTMovie);
- m_videoOutput->setEnabled(true);
- }
+
processLoadStateChange();
[(QTMovie*)m_QTMovie setMuted:m_muted];
@@ -457,6 +459,8 @@ bool QT7PlayerSession::isVideoAvailable() const
void QT7PlayerSession::processEOS()
{
m_mediaStatus = QMediaPlayer::EndOfMedia;
+ if (m_videoOutput)
+ m_videoOutput->setMovie(0);
emit stateChanged(m_state = QMediaPlayer::StoppedState);
emit mediaStatusChanged(m_mediaStatus);
}
@@ -493,6 +497,9 @@ void QT7PlayerSession::processLoadStateChange()
if (state == kMovieLoadStateError) {
newStatus = QMediaPlayer::InvalidMedia;
+ if (m_videoOutput)
+ m_videoOutput->setMovie(0);
+
emit error(QMediaPlayer::FormatError, tr("Failed to load media"));
emit stateChanged(m_state = QMediaPlayer::StoppedState);
}
diff --git a/src/plugins/mediaservices/qt7/qt7.pro b/src/plugins/mediaservices/qt7/qt7.pro
index 6624d13..8791d73 100644
--- a/src/plugins/mediaservices/qt7/qt7.pro
+++ b/src/plugins/mediaservices/qt7/qt7.pro
@@ -25,6 +25,7 @@ HEADERS += \
qt7movieviewrenderer.h \
qt7serviceplugin.h \
qt7movierenderer.h \
+ qt7ciimagevideobuffer.h \
qcvdisplaylink.h
OBJECTIVE_SOURCES += \
@@ -35,6 +36,7 @@ OBJECTIVE_SOURCES += \
qt7movieviewrenderer.mm \
qt7movierenderer.mm \
qt7videooutputcontrol.mm \
+ qt7ciimagevideobuffer.mm \
qcvdisplaylink.mm
include(mediaplayer/mediaplayer.pri)
diff --git a/src/plugins/mediaservices/qt7/qt7ciimagevideobuffer.h b/src/plugins/mediaservices/qt7/qt7ciimagevideobuffer.h
new file mode 100644
index 0000000..669724f
--- /dev/null
+++ b/src/plugins/mediaservices/qt7/qt7ciimagevideobuffer.h
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins 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 QT7CIIMAGEVIDEOBUFFER_H
+#define QT7CIIMAGEVIDEOBUFFER_H
+
+#include "qt7backend.h"
+#import <QTKit/QTKit.h>
+
+#include <QtCore/qvariant.h>
+#include <QtMultimedia/qabstractvideobuffer.h>
+
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QT7CIImageVideoBuffer : public QAbstractVideoBuffer
+{
+public:
+ QT7CIImageVideoBuffer(CIImage *image);
+
+ virtual ~QT7CIImageVideoBuffer();
+
+ MapMode mapMode() const;
+ uchar *map(MapMode mode, int *numBytes, int *bytesPerLine);
+ void unmap();
+ QVariant handle() const;
+
+private:
+ CIImage *m_image;
+ NSBitmapImageRep *m_buffer;
+ MapMode m_mode;
+};
+
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif
diff --git a/src/plugins/mediaservices/qt7/qt7ciimagevideobuffer.mm b/src/plugins/mediaservices/qt7/qt7ciimagevideobuffer.mm
new file mode 100644
index 0000000..3778b58
--- /dev/null
+++ b/src/plugins/mediaservices/qt7/qt7ciimagevideobuffer.mm
@@ -0,0 +1,104 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins 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 "qt7ciimagevideobuffer.h"
+
+QT7CIImageVideoBuffer::QT7CIImageVideoBuffer(CIImage *image)
+ : QAbstractVideoBuffer(CoreImageHandle)
+ , m_image(image)
+ , m_buffer(0)
+ , m_mode(NotMapped)
+{
+ [m_image retain];
+}
+
+QT7CIImageVideoBuffer::~QT7CIImageVideoBuffer()
+{
+ [m_image release];
+ [m_buffer release];
+}
+
+QAbstractVideoBuffer::MapMode QT7CIImageVideoBuffer::mapMode() const
+{
+ return m_mode;
+}
+
+uchar *QT7CIImageVideoBuffer::map(QAbstractVideoBuffer::MapMode mode, int *numBytes, int *bytesPerLine)
+{
+ if (mode == NotMapped || m_mode != NotMapped || !m_image)
+ return 0;
+
+ if (!m_buffer) {
+ //swap R and B channels
+ CIFilter *colorSwapFilter = [CIFilter filterWithName: @"CIColorMatrix" keysAndValues:
+ @"inputImage", m_image,
+ @"inputRVector", [CIVector vectorWithX: 0 Y: 0 Z: 1 W: 0],
+ @"inputGVector", [CIVector vectorWithX: 0 Y: 1 Z: 0 W: 0],
+ @"inputBVector", [CIVector vectorWithX: 1 Y: 0 Z: 0 W: 0],
+ @"inputAVector", [CIVector vectorWithX: 0 Y: 0 Z: 0 W: 1],
+ @"inputBiasVector", [CIVector vectorWithX: 0 Y: 0 Z: 0 W: 0],
+ nil];
+ CIImage *img = [colorSwapFilter valueForKey: @"outputImage"];
+
+ m_buffer = [[NSBitmapImageRep alloc] initWithCIImage:img];
+ }
+
+ if (numBytes)
+ *numBytes = [m_buffer bytesPerPlane];
+
+ if (bytesPerLine)
+ *bytesPerLine = [m_buffer bytesPerRow];
+
+ m_mode = mode;
+
+ return [m_buffer bitmapData];
+}
+
+void QT7CIImageVideoBuffer::unmap()
+{
+ m_mode = NotMapped;
+}
+
+QVariant QT7CIImageVideoBuffer::handle() const
+{
+ return QVariant::fromValue<void*>(m_image);
+}
+
diff --git a/src/plugins/mediaservices/qt7/qt7movierenderer.h b/src/plugins/mediaservices/qt7/qt7movierenderer.h
index a547329..c2dd177 100644
--- a/src/plugins/mediaservices/qt7/qt7movierenderer.h
+++ b/src/plugins/mediaservices/qt7/qt7movierenderer.h
@@ -74,7 +74,6 @@ public:
QT7MovieRenderer(QObject *parent = 0);
virtual ~QT7MovieRenderer();
- void setEnabled(bool);
void setMovie(void *movie);
void updateNaturalSize(const QSize &newSize);
diff --git a/src/plugins/mediaservices/qt7/qt7movierenderer.mm b/src/plugins/mediaservices/qt7/qt7movierenderer.mm
index 1c1f5e4..95f5d4c 100644
--- a/src/plugins/mediaservices/qt7/qt7movierenderer.mm
+++ b/src/plugins/mediaservices/qt7/qt7movierenderer.mm
@@ -46,6 +46,7 @@
#include "qt7playercontrol.h"
#include "qt7movierenderer.h"
#include "qt7playersession.h"
+#include "qt7ciimagevideobuffer.h"
#include "qcvdisplaylink.h"
#include <QtCore/qdebug.h>
#include <QtCore/qcoreapplication.h>
@@ -64,7 +65,7 @@ class CVGLTextureVideoBuffer : public QAbstractVideoBuffer
{
public:
CVGLTextureVideoBuffer(CVOpenGLTextureRef buffer)
- : QAbstractVideoBuffer(NoHandle)
+ : QAbstractVideoBuffer(GLTextureHandle)
, m_buffer(buffer)
, m_mode(NotMapped)
{
@@ -82,11 +83,6 @@ public:
return QVariant(int(id));
}
- HandleType handleType() const
- {
- return GLTextureHandle;
- }
-
MapMode mapMode() const { return m_mode; }
uchar *map(MapMode mode, int *numBytes, int *bytesPerLine)
@@ -372,10 +368,6 @@ void QT7MovieRenderer::setupVideoOutput()
}
-void QT7MovieRenderer::setEnabled(bool)
-{
-}
-
void QT7MovieRenderer::setMovie(void *movie)
{
// qDebug() << "QT7MovieRenderer::setMovie" << movie;
@@ -447,15 +439,14 @@ void QT7MovieRenderer::updateVideoFrame(const CVTimeStamp &ts)
OSStatus status = QTVisualContextCopyImageForTime(m_visualContext, NULL, &ts, &imageBuffer);
if (status == noErr && imageBuffer) {
- //qDebug() << "render video frame";
QAbstractVideoBuffer *buffer = 0;
if (m_usingGLContext) {
- buffer = new CVGLTextureVideoBuffer((CVOpenGLTextureRef)imageBuffer);
+ buffer = new QT7CIImageVideoBuffer([CIImage imageWithCVImageBuffer:imageBuffer]);
CVOpenGLTextureRelease((CVOpenGLTextureRef)imageBuffer);
- //qDebug() << "render GL video frame" << buffer->handle();
} else {
buffer = new CVPixelBufferVideoBuffer((CVPixelBufferRef)imageBuffer);
+ //buffer = new QT7CIImageVideoBuffer( [CIImage imageWithCVImageBuffer:imageBuffer] );
CVPixelBufferRelease((CVPixelBufferRef)imageBuffer);
}
diff --git a/src/plugins/mediaservices/qt7/qt7movievideowidget.h b/src/plugins/mediaservices/qt7/qt7movievideowidget.h
index 7908efd..831a18d 100644
--- a/src/plugins/mediaservices/qt7/qt7movievideowidget.h
+++ b/src/plugins/mediaservices/qt7/qt7movievideowidget.h
@@ -72,7 +72,6 @@ public:
QT7MovieVideoWidget(QObject *parent = 0);
virtual ~QT7MovieVideoWidget();
- void setEnabled(bool);
void setMovie(void *movie);
void updateNaturalSize(const QSize &newSize);
diff --git a/src/plugins/mediaservices/qt7/qt7movievideowidget.mm b/src/plugins/mediaservices/qt7/qt7movievideowidget.mm
index 197c26e..648d6b4 100644
--- a/src/plugins/mediaservices/qt7/qt7movievideowidget.mm
+++ b/src/plugins/mediaservices/qt7/qt7movievideowidget.mm
@@ -73,7 +73,8 @@ public:
void initializeGL()
{
- glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+ QColor bgColor = palette().color(QPalette::Background);
+ glClearColor(bgColor.redF(), bgColor.greenF(), bgColor.blueF(), bgColor.alphaF());
}
void resizeGL(int w, int h)
@@ -279,10 +280,6 @@ void QT7MovieVideoWidget::setupVideoOutput()
m_displayLink->start();
}
-void QT7MovieVideoWidget::setEnabled(bool)
-{
-}
-
void QT7MovieVideoWidget::setMovie(void *movie)
{
if (m_movie == movie)
diff --git a/src/plugins/mediaservices/qt7/qt7movieviewoutput.h b/src/plugins/mediaservices/qt7/qt7movieviewoutput.h
index 49049ad..0fee41c 100644
--- a/src/plugins/mediaservices/qt7/qt7movieviewoutput.h
+++ b/src/plugins/mediaservices/qt7/qt7movieviewoutput.h
@@ -63,7 +63,6 @@ public:
QT7MovieViewOutput(QObject *parent = 0);
~QT7MovieViewOutput();
- void setEnabled(bool);
void setMovie(void *movie);
void updateNaturalSize(const QSize &newSize);
diff --git a/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm b/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm
index 8e4dd9b..20f1a02 100644
--- a/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm
+++ b/src/plugins/mediaservices/qt7/qt7movieviewoutput.mm
@@ -194,10 +194,6 @@ void QT7MovieViewOutput::setupVideoOutput()
setDisplayRect(m_displayRect);
}
-void QT7MovieViewOutput::setEnabled(bool)
-{
-}
-
void QT7MovieViewOutput::setMovie(void *movie)
{
if (m_movie != movie) {
diff --git a/src/plugins/mediaservices/qt7/qt7movieviewrenderer.h b/src/plugins/mediaservices/qt7/qt7movieviewrenderer.h
index 336006c..0b515ae 100644
--- a/src/plugins/mediaservices/qt7/qt7movieviewrenderer.h
+++ b/src/plugins/mediaservices/qt7/qt7movieviewrenderer.h
@@ -67,7 +67,6 @@ public:
QT7MovieViewRenderer(QObject *parent = 0);
~QT7MovieViewRenderer();
- void setEnabled(bool);
void setMovie(void *movie);
void updateNaturalSize(const QSize &newSize);
@@ -87,6 +86,7 @@ private:
QSize m_nativeSize;
QAbstractVideoSurface *m_surface;
QVideoFrame m_currentFrame;
+ bool m_pendingRenderEvent;
QMutex m_mutex;
};
diff --git a/src/plugins/mediaservices/qt7/qt7movieviewrenderer.mm b/src/plugins/mediaservices/qt7/qt7movieviewrenderer.mm
index 5047853..33a6970 100644
--- a/src/plugins/mediaservices/qt7/qt7movieviewrenderer.mm
+++ b/src/plugins/mediaservices/qt7/qt7movieviewrenderer.mm
@@ -46,6 +46,7 @@
#include "qt7playercontrol.h"
#include "qt7movieviewrenderer.h"
#include "qt7playersession.h"
+#include "qt7ciimagevideobuffer.h"
#include <QtCore/qdebug.h>
#include <QtCore/qcoreevent.h>
#include <QtCore/qcoreapplication.h>
@@ -113,6 +114,7 @@ QT_END_NAMESPACE
- (HiddenQTMovieView *) initWithRenderer:(QT7MovieViewRenderer *)renderer;
- (void) setRenderer:(QT7MovieViewRenderer *)renderer;
- (void) setDrawRect:(const QRect &)rect;
+- (CIImage *) view:(QTMovieView *)view willDisplayImage:(CIImage *)img;
@end
@implementation HiddenQTMovieView
@@ -163,33 +165,37 @@ QT_END_NAMESPACE
// before the image will be drawn.
Q_UNUSED(view);
if (m_renderer) {
- NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc] initWithCIImage:img];
CGRect bounds = [img extent];
int w = bounds.size.width;
int h = bounds.size.height;
- // Swap red and blue (same as QImage::rgbSwapped, but without copy)
- uchar *data = [bitmap bitmapData];
- //qDebug() << data << w << h;
- int bytesPerLine = [bitmap bytesPerRow];
- for (int i=0; i<h; ++i) {
- quint32 *p = (quint32*)data;
- data += bytesPerLine;
- quint32 *end = p + w;
- while (p < end) {
- *p = ((*p << 16) & 0xff0000) | ((*p >> 16) & 0xff) | (*p & 0xff00ff00);
- p++;
- }
- }
+ QVideoFrame frame;
- QVideoFrame frame( new NSBitmapVideoBuffer(bitmap), QSize(w,h), QVideoFrame::Format_RGB32 );
+ QAbstractVideoSurface *surface = m_renderer->surface();
+ if (!surface || !surface->isActive())
+ return img;
- //static int i=0;
- //i++;
- //QImage img([bitmap bitmapData], w, h, QImage::Format_RGB32);
- //img.save(QString("img%1.jpg").arg(i));
-
- [bitmap release];
+ if (surface->surfaceFormat().handleType() == QAbstractVideoBuffer::CoreImageHandle) {
+ //surface supports rendering of opengl based CIImage
+ frame = QVideoFrame(new QT7CIImageVideoBuffer(img), QSize(w,h), QVideoFrame::Format_RGB32 );
+ } else {
+ //Swap R and B colors
+ CIFilter *colorSwapFilter = [CIFilter filterWithName: @"CIColorMatrix" keysAndValues:
+ @"inputImage", img,
+ @"inputRVector", [CIVector vectorWithX: 0 Y: 0 Z: 1 W: 0],
+ @"inputGVector", [CIVector vectorWithX: 0 Y: 1 Z: 0 W: 0],
+ @"inputBVector", [CIVector vectorWithX: 1 Y: 0 Z: 0 W: 0],
+ @"inputAVector", [CIVector vectorWithX: 0 Y: 0 Z: 0 W: 1],
+ @"inputBiasVector", [CIVector vectorWithX: 0 Y: 0 Z: 0 W: 0],
+ nil];
+ CIImage *img = [colorSwapFilter valueForKey: @"outputImage"];
+ NSBitmapImageRep *bitmap =[[NSBitmapImageRep alloc] initWithCIImage:img];
+ //requesting the bitmap data is slow,
+ //but it's better to do it here to avoid blocking the main thread for a long.
+ [bitmap bitmapData];
+ frame = QVideoFrame(new NSBitmapVideoBuffer(bitmap), QSize(w,h), QVideoFrame::Format_RGB32 );
+ [bitmap release];
+ }
if (m_renderer)
m_renderer->renderFrame(frame);
@@ -230,7 +236,8 @@ QT7MovieViewRenderer::QT7MovieViewRenderer(QObject *parent)
:QT7VideoRendererControl(parent),
m_movie(0),
m_movieView(0),
- m_surface(0)
+ m_surface(0),
+ m_pendingRenderEvent(false)
{
}
@@ -267,11 +274,15 @@ void QT7MovieViewRenderer::setupVideoOutput()
}
[movieView setMovie:(QTMovie*)m_movie];
- //[movieView setDrawRect:QRect(QPoint(0,0), m_nativeSize)];
+ [movieView setDrawRect:QRect(QPoint(0,0), m_nativeSize)];
}
if (m_surface && !m_nativeSize.isEmpty()) {
- QVideoSurfaceFormat format(m_nativeSize, QVideoFrame::Format_RGB32);
+ bool coreImageFrameSupported = !m_surface->supportedPixelFormats(QAbstractVideoBuffer::CoreImageHandle).isEmpty() &&
+ !m_surface->supportedPixelFormats(QAbstractVideoBuffer::GLTextureHandle).isEmpty();
+
+ QVideoSurfaceFormat format(m_nativeSize, QVideoFrame::Format_RGB32,
+ coreImageFrameSupported ? QAbstractVideoBuffer::CoreImageHandle : QAbstractVideoBuffer::NoHandle);
if (m_surface->isActive() && m_surface->surfaceFormat() != format) {
// qDebug() << "Surface format was changed, stop the surface.";
@@ -279,18 +290,15 @@ void QT7MovieViewRenderer::setupVideoOutput()
}
if (!m_surface->isActive()) {
-// qDebug() << "Starting the surface with format" << format;
- m_surface->start(format);
-// if (!m_surface->start(format))
-// qDebug() << "failed to start video surface" << m_surface->error();
+ //qDebug() << "Starting the surface with format" << format;
+ if (!m_surface->start(format)) {
+ qWarning() << "Failed to start video surface" << m_surface->error();
+ qWarning() << "Surface format:" << format;
+ }
}
}
}
-void QT7MovieViewRenderer::setEnabled(bool)
-{
-}
-
void QT7MovieViewRenderer::setMovie(void *movie)
{
if (movie == m_movie)
@@ -330,18 +338,21 @@ void QT7MovieViewRenderer::setSurface(QAbstractVideoSurface *surface)
void QT7MovieViewRenderer::renderFrame(const QVideoFrame &frame)
{
- {
- QMutexLocker locker(&m_mutex);
- m_currentFrame = frame;
- }
- qApp->postEvent(this, new QEvent(QEvent::User), Qt::HighEventPriority);
+ QMutexLocker locker(&m_mutex);
+ m_currentFrame = frame;
+
+ if (!m_pendingRenderEvent)
+ qApp->postEvent(this, new QEvent(QEvent::User), Qt::HighEventPriority);
+
+ m_pendingRenderEvent = true;
}
bool QT7MovieViewRenderer::event(QEvent *event)
{
if (event->type() == QEvent::User) {
QMutexLocker locker(&m_mutex);
+ m_pendingRenderEvent = false;
if (m_surface->isActive())
m_surface->present(m_currentFrame);
}
diff --git a/src/plugins/mediaservices/qt7/qt7videooutputcontrol.h b/src/plugins/mediaservices/qt7/qt7videooutputcontrol.h
index 2c60919..3c74cb8 100644
--- a/src/plugins/mediaservices/qt7/qt7videooutputcontrol.h
+++ b/src/plugins/mediaservices/qt7/qt7videooutputcontrol.h
@@ -67,7 +67,6 @@ class QT7PlayerService;
class QT7VideoOutput {
public:
virtual ~QT7VideoOutput() {}
- virtual void setEnabled(bool enabled) = 0;
virtual void setMovie(void *movie) = 0;
virtual void updateNaturalSize(const QSize &newSize) = 0;
};
diff --git a/src/plugins/phonon/gstreamer/gstreamer.pro b/src/plugins/phonon/gstreamer/gstreamer.pro
index ae597fa..1013205 100644
--- a/src/plugins/phonon/gstreamer/gstreamer.pro
+++ b/src/plugins/phonon/gstreamer/gstreamer.pro
@@ -15,6 +15,7 @@ PHONON_GSTREAMER_DIR = $$QT_SOURCE_TREE/src/3rdparty/phonon/gstreamer
HEADERS += $$PHONON_GSTREAMER_DIR/common.h \
$$PHONON_GSTREAMER_DIR/audiooutput.h \
+ $$PHONON_GSTREAMER_DIR/audiodataoutput.h \
$$PHONON_GSTREAMER_DIR/artssink.h \
$$PHONON_GSTREAMER_DIR/abstractrenderer.h \
$$PHONON_GSTREAMER_DIR/backend.h \
@@ -35,26 +36,27 @@ HEADERS += $$PHONON_GSTREAMER_DIR/common.h \
$$PHONON_GSTREAMER_DIR/audioeffect.h \
$$PHONON_GSTREAMER_DIR/volumefadereffect.h
-SOURCES += $$PHONON_GSTREAMER_DIR/audiooutput.cpp \
- $$PHONON_GSTREAMER_DIR/abstractrenderer.cpp \
+SOURCES += $$PHONON_GSTREAMER_DIR/abstractrenderer.cpp \
$$PHONON_GSTREAMER_DIR/artssink.cpp \
+ $$PHONON_GSTREAMER_DIR/audioeffect.cpp \
+ $$PHONON_GSTREAMER_DIR/audiooutput.cpp \
+ $$PHONON_GSTREAMER_DIR/audiodataoutput.cpp \
$$PHONON_GSTREAMER_DIR/backend.cpp \
$$PHONON_GSTREAMER_DIR/devicemanager.cpp \
$$PHONON_GSTREAMER_DIR/effect.cpp \
$$PHONON_GSTREAMER_DIR/effectmanager.cpp \
+ $$PHONON_GSTREAMER_DIR/glrenderer.cpp \
$$PHONON_GSTREAMER_DIR/gsthelper.cpp \
- $$PHONON_GSTREAMER_DIR/mediaobject.cpp \
$$PHONON_GSTREAMER_DIR/medianode.cpp \
$$PHONON_GSTREAMER_DIR/medianodeevent.cpp \
- $$PHONON_GSTREAMER_DIR/widgetrenderer.cpp \
- $$PHONON_GSTREAMER_DIR/videowidget.cpp \
- $$PHONON_GSTREAMER_DIR/glrenderer.cpp \
- $$PHONON_GSTREAMER_DIR/qwidgetvideosink.cpp \
+ $$PHONON_GSTREAMER_DIR/mediaobject.cpp \
+ $$PHONON_GSTREAMER_DIR/message.cpp \
$$PHONON_GSTREAMER_DIR/phononsrc.cpp \
+ $$PHONON_GSTREAMER_DIR/qwidgetvideosink.cpp \
$$PHONON_GSTREAMER_DIR/streamreader.cpp \
- $$PHONON_GSTREAMER_DIR/message.cpp \
- $$PHONON_GSTREAMER_DIR/audioeffect.cpp \
- $$PHONON_GSTREAMER_DIR/volumefadereffect.cpp
+ $$PHONON_GSTREAMER_DIR/videowidget.cpp \
+ $$PHONON_GSTREAMER_DIR/volumefadereffect.cpp \
+ $$PHONON_GSTREAMER_DIR/widgetrenderer.cpp
!embedded {
HEADERS += $$PHONON_GSTREAMER_DIR/x11renderer.h
diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def
index 2feaffd..875fe8c 100644
--- a/src/s60installs/bwins/QtGuiu.def
+++ b/src/s60installs/bwins/QtGuiu.def
@@ -3961,7 +3961,7 @@ EXPORTS
?drawPixmap@QPainter@@QAEXHHABVQPixmap@@HHHH@Z @ 3960 NONAME ; void QPainter::drawPixmap(int, int, class QPixmap const &, int, int, int, int)
?drawPixmap@QPainter@@QAEXHHHHABVQPixmap@@@Z @ 3961 NONAME ; void QPainter::drawPixmap(int, int, int, int, class QPixmap const &)
?drawPixmap@QPainter@@QAEXHHHHABVQPixmap@@HHHH@Z @ 3962 NONAME ; void QPainter::drawPixmap(int, int, int, int, class QPixmap const &, int, int, int, int)
- ?drawPixmaps@QPaintEngineEx@@UAEXPBUData@QDrawPixmaps@@HABVQPixmap@@V?$QFlags@W4DrawingHint@QDrawPixmaps@@@@@Z @ 3963 NONAME ABSENT ; void QPaintEngineEx::drawPixmaps(struct QDrawPixmaps::Data const *, int, class QPixmap const &, class QFlags<enum QDrawPixmaps::DrawingHint>)
+ ?drawPixmaps@QPaintEngineEx@@UAEXPBUData@QDrawPixmaps@@HABVQPixmap@@V?$QFlags@W4DrawingHint@QDrawPixmaps@@@@@Z @ 3963 NONAME ; void QPaintEngineEx::drawPixmaps(struct QDrawPixmaps::Data const *, int, class QPixmap const &, class QFlags<enum QDrawPixmaps::DrawingHint>)
?drawPoint@QPainter@@QAEXABVQPoint@@@Z @ 3964 NONAME ; void QPainter::drawPoint(class QPoint const &)
?drawPoint@QPainter@@QAEXABVQPointF@@@Z @ 3965 NONAME ; void QPainter::drawPoint(class QPointF const &)
?drawPoint@QPainter@@QAEXHH@Z @ 3966 NONAME ; void QPainter::drawPoint(int, int)
@@ -7291,7 +7291,7 @@ EXPORTS
?polishEvent@QGraphicsWidget@@MAEXXZ @ 7290 NONAME ; void QGraphicsWidget::polishEvent(void)
?polygon@QGraphicsPolygonItem@@QBE?AVQPolygonF@@XZ @ 7291 NONAME ; class QPolygonF QGraphicsPolygonItem::polygon(void) const
?polygonFlags@QVectorPath@@SAIW4PolygonDrawMode@QPaintEngine@@@Z @ 7292 NONAME ; unsigned int QVectorPath::polygonFlags(enum QPaintEngine::PolygonDrawMode)
- ?populate@QTextureGlyphCache@@QAEXABVQTextItemInt@@ABV?$QVarLengthArray@I$0BAA@@@ABV?$QVarLengthArray@UQFixedPoint@@$0BAA@@@@Z @ 7293 NONAME ABSENT ; void QTextureGlyphCache::populate(class QTextItemInt const &, class QVarLengthArray<unsigned int, 256> const &, class QVarLengthArray<struct QFixedPoint, 256> const &)
+ ?populate@QTextureGlyphCache@@QAEXABVQTextItemInt@@ABV?$QVarLengthArray@I$0BAA@@@ABV?$QVarLengthArray@UQFixedPoint@@$0BAA@@@@Z @ 7293 NONAME ; void QTextureGlyphCache::populate(class QTextItemInt const &, class QVarLengthArray<unsigned int, 256> const &, class QVarLengthArray<struct QFixedPoint, 256> const &)
?popup@QCompleter@@QBEPAVQAbstractItemView@@XZ @ 7294 NONAME ; class QAbstractItemView * QCompleter::popup(void) const
?popup@QMenu@@QAEXABVQPoint@@PAVQAction@@@Z @ 7295 NONAME ; void QMenu::popup(class QPoint const &, class QAction *)
?popupMode@QToolButton@@QBE?AW4ToolButtonPopupMode@1@XZ @ 7296 NONAME ; enum QToolButton::ToolButtonPopupMode QToolButton::popupMode(void) const
@@ -7389,7 +7389,7 @@ EXPORTS
?qAlpha@@YAHI@Z @ 7388 NONAME ; int qAlpha(unsigned int)
?qBlue@@YAHI@Z @ 7389 NONAME ; int qBlue(unsigned int)
?qDrawBorderPixmap@@YAXPAVQPainter@@ABVQRect@@ABVQMargins@@ABVQPixmap@@12ABUQTileRules@@V?$QFlags@W4DrawingHint@QDrawBorderPixmap@@@@@Z @ 7390 NONAME ; void qDrawBorderPixmap(class QPainter *, class QRect const &, class QMargins const &, class QPixmap const &, class QRect const &, class QMargins const &, struct QTileRules const &, class QFlags<enum QDrawBorderPixmap::DrawingHint>)
- ?qDrawPixmaps@@YAXPAVQPainter@@PBUData@QDrawPixmaps@@HABVQPixmap@@V?$QFlags@W4DrawingHint@QDrawPixmaps@@@@@Z @ 7391 NONAME ABSENT ; void qDrawPixmaps(class QPainter *, struct QDrawPixmaps::Data const *, int, class QPixmap const &, class QFlags<enum QDrawPixmaps::DrawingHint>)
+ ?qDrawPixmaps@@YAXPAVQPainter@@PBUData@QDrawPixmaps@@HABVQPixmap@@V?$QFlags@W4DrawingHint@QDrawPixmaps@@@@@Z @ 7391 NONAME ; void qDrawPixmaps(class QPainter *, struct QDrawPixmaps::Data const *, int, class QPixmap const &, class QFlags<enum QDrawPixmaps::DrawingHint>)
?qDrawPlainRect@@YAXPAVQPainter@@ABVQRect@@ABVQColor@@HPBVQBrush@@@Z @ 7392 NONAME ; void qDrawPlainRect(class QPainter *, class QRect const &, class QColor const &, int, class QBrush const *)
?qDrawPlainRect@@YAXPAVQPainter@@HHHHABVQColor@@HPBVQBrush@@@Z @ 7393 NONAME ; void qDrawPlainRect(class QPainter *, int, int, int, int, class QColor const &, int, class QBrush const *)
?qDrawShadeLine@@YAXPAVQPainter@@ABVQPoint@@1ABVQPalette@@_NHH@Z @ 7394 NONAME ; void qDrawShadeLine(class QPainter *, class QPoint const &, class QPoint const &, class QPalette const &, bool, int, int)
@@ -12601,7 +12601,7 @@ EXPORTS
?setPixelFormat@QEglProperties@@QAEXW4Format@QImage@@@Z @ 12600 NONAME ABSENT ; void QEglProperties::setPixelFormat(enum QImage::Format)
?currentContext@QEglContext@@CAPAV1@W4API@QEgl@@@Z @ 12601 NONAME ABSENT ; class QEglContext * QEglContext::currentContext(enum QEgl::API)
?errorString@QEglContext@@SA?AVQString@@H@Z @ 12602 NONAME ABSENT ; class QString QEglContext::errorString(int)
- ??0FileInfo@QZipReader@@QAE@ABU01@@Z @ 12603 NONAME ; QZipReader::FileInfo::FileInfo(struct QZipReader::FileInfo const &)
+ ?removeAllApplicationFonts@QFontDatabase@@SA_NXZ @12603 ; NONAME ; bool QFontDatabase::removeAllApplicationFonts()
??0FileInfo@QZipReader@@QAE@XZ @ 12604 NONAME ; QZipReader::FileInfo::FileInfo(void)
??0QAbstractScrollAreaPrivate@@QAE@XZ @ 12605 NONAME ; QAbstractScrollAreaPrivate::QAbstractScrollAreaPrivate(void)
??0QGraphicsViewPrivate@@QAE@XZ @ 12606 NONAME ; QGraphicsViewPrivate::QGraphicsViewPrivate(void)
@@ -12722,4 +12722,5 @@ EXPORTS
?verticalScroll@QGraphicsViewPrivate@@QBE_JXZ @ 12721 NONAME ; long long QGraphicsViewPrivate::verticalScroll(void) const
?viewportEvent@QAbstractScrollAreaPrivate@@QAE_NPAVQEvent@@@Z @ 12722 NONAME ; bool QAbstractScrollAreaPrivate::viewportEvent(class QEvent *)
?visibilityChanged@QToolBar@@IAEX_N@Z @ 12723 NONAME ; void QToolBar::visibilityChanged(bool)
+ ??0FileInfo@QZipReader@@QAE@ABU01@@Z @ 12724 NONAME ; QZipReader::FileInfo::FileInfo(struct QZipReader::FileInfo const &)
diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def
index c648d87..b30d987 100644
--- a/src/s60installs/eabi/QtCoreu.def
+++ b/src/s60installs/eabi/QtCoreu.def
@@ -3652,4 +3652,41 @@ EXPORTS
_Z40QBasicAtomicPointer_fetchAndStoreAcquirePVPvS_ @ 3651 NONAME
_Z40QBasicAtomicPointer_fetchAndStoreRelaxedPVPvS_ @ 3652 NONAME
_Z40QBasicAtomicPointer_fetchAndStoreReleasePVPvS_ @ 3653 NONAME
+ _Z14qDecodeDataUrlRK4QUrl @ 3654 NONAME
+ _Z18qDetectCPUFeaturesv @ 3655 NONAME
+ _ZN10QByteArray7replaceEiiPKci @ 3656 NONAME
+ _ZN12QTextDecoderC1EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3657 NONAME
+ _ZN12QTextDecoderC2EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3658 NONAME
+ _ZN12QTextEncoderC1EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3659 NONAME
+ _ZN12QTextEncoderC2EPK10QTextCodec6QFlagsINS0_14ConversionFlagEE @ 3660 NONAME
+ _ZN13QElapsedTimer10invalidateEv @ 3661 NONAME
+ _ZN13QElapsedTimer11isMonotonicEv @ 3662 NONAME
+ _ZN13QElapsedTimer5startEv @ 3663 NONAME
+ _ZN13QElapsedTimer7restartEv @ 3664 NONAME
+ _ZN13QElapsedTimer9clockTypeEv @ 3665 NONAME
+ _ZN20QStateMachinePrivate12clearHistoryEv @ 3666 NONAME
+ _ZN7QStringC1EPK5QChar @ 3667 NONAME
+ _ZN7QStringC2EPK5QChar @ 3668 NONAME
+ _ZN8QVariantC1ERK12QEasingCurve @ 3669 NONAME
+ _ZN8QVariantC2ERK12QEasingCurve @ 3670 NONAME
+ _ZN9QDateTime18currentDateTimeUtcEv @ 3671 NONAME
+ _ZN9QDateTime22currentMsecsSinceEpochEv @ 3672 NONAME
+ _ZN9QListData11detach_growEPii @ 3673 NONAME
+ _ZN9QListData6appendEi @ 3674 NONAME
+ _ZN9QListData6detachEi @ 3675 NONAME
+ _ZN9QMetaType15registerTypedefEPKci @ 3676 NONAME
+ _ZN9QMetaType23registerStreamOperatorsEiPFvR11QDataStreamPKvEPFvS1_PvE @ 3677 NONAME
+ _ZNK10QTextCodec11makeDecoderE6QFlagsINS_14ConversionFlagEE @ 3678 NONAME
+ _ZNK10QTextCodec11makeEncoderE6QFlagsINS_14ConversionFlagEE @ 3679 NONAME
+ _ZNK13QElapsedTimer10hasExpiredEx @ 3680 NONAME
+ _ZNK13QElapsedTimer19msecsSinceReferenceEv @ 3681 NONAME
+ _ZNK13QElapsedTimer6secsToERKS_ @ 3682 NONAME
+ _ZNK13QElapsedTimer7elapsedEv @ 3683 NONAME
+ _ZNK13QElapsedTimer7isValidEv @ 3684 NONAME
+ _ZNK13QElapsedTimer7msecsToERKS_ @ 3685 NONAME
+ _ZNK6QState11transitionsEv @ 3686 NONAME
+ _ZNK8QVariant13toEasingCurveEv @ 3687 NONAME
+ _ZlsR11QDataStreamRK12QEasingCurve @ 3688 NONAME
+ _ZltRK13QElapsedTimerS1_ @ 3689 NONAME
+ _ZrsR11QDataStreamR12QEasingCurve @ 3690 NONAME
diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def
index e4fc7a3..c6d3d3f 100644
--- a/src/s60installs/eabi/QtDeclarativeu.def
+++ b/src/s60installs/eabi/QtDeclarativeu.def
@@ -42,3499 +42,3331 @@ EXPORTS
_ZN15QPacketProtocolD0Ev @ 41 NONAME
_ZN15QPacketProtocolD1Ev @ 42 NONAME
_ZN15QPacketProtocolD2Ev @ 43 NONAME
- _ZN15QPerformanceLog11displayDataEv @ 44 NONAME
- _ZN15QPerformanceLog5clearEv @ 45 NONAME
- _ZN16QDeclarativeBind11qt_metacallEN11QMetaObject4CallEiPPv @ 46 NONAME
- _ZN16QDeclarativeBind11qt_metacastEPKc @ 47 NONAME
- _ZN16QDeclarativeBind11setPropertyERK7QString @ 48 NONAME
- _ZN16QDeclarativeBind16staticMetaObjectE @ 49 NONAME DATA 16
- _ZN16QDeclarativeBind17componentCompleteEv @ 50 NONAME
- _ZN16QDeclarativeBind19getStaticMetaObjectEv @ 51 NONAME
- _ZN16QDeclarativeBind4evalEv @ 52 NONAME
- _ZN16QDeclarativeBind6objectEv @ 53 NONAME
- _ZN16QDeclarativeBind7setWhenEb @ 54 NONAME
- _ZN16QDeclarativeBind8setValueERK8QVariant @ 55 NONAME
- _ZN16QDeclarativeBind9setObjectEP7QObject @ 56 NONAME
- _ZN16QDeclarativeBindC1EP7QObject @ 57 NONAME
- _ZN16QDeclarativeBindC2EP7QObject @ 58 NONAME
- _ZN16QDeclarativeBindD0Ev @ 59 NONAME
- _ZN16QDeclarativeBindD1Ev @ 60 NONAME
- _ZN16QDeclarativeBindD2Ev @ 61 NONAME
- _ZN16QDeclarativeDrag11axisChangedEv @ 62 NONAME
- _ZN16QDeclarativeDrag11qt_metacallEN11QMetaObject4CallEiPPv @ 63 NONAME
- _ZN16QDeclarativeDrag11qt_metacastEPKc @ 64 NONAME
- _ZN16QDeclarativeDrag13targetChangedEv @ 65 NONAME
- _ZN16QDeclarativeDrag15maximumXChangedEv @ 66 NONAME
- _ZN16QDeclarativeDrag15maximumYChangedEv @ 67 NONAME
- _ZN16QDeclarativeDrag15minimumXChangedEv @ 68 NONAME
- _ZN16QDeclarativeDrag15minimumYChangedEv @ 69 NONAME
- _ZN16QDeclarativeDrag16staticMetaObjectE @ 70 NONAME DATA 16
- _ZN16QDeclarativeDrag19getStaticMetaObjectEv @ 71 NONAME
- _ZN16QDeclarativeDrag7setAxisENS_4AxisE @ 72 NONAME
- _ZN16QDeclarativeDrag7setXmaxEf @ 73 NONAME
- _ZN16QDeclarativeDrag7setXminEf @ 74 NONAME
- _ZN16QDeclarativeDrag7setYmaxEf @ 75 NONAME
- _ZN16QDeclarativeDrag7setYminEf @ 76 NONAME
- _ZN16QDeclarativeDrag9setTargetEP16QDeclarativeItem @ 77 NONAME
- _ZN16QDeclarativeDragC1EP7QObject @ 78 NONAME
- _ZN16QDeclarativeDragC2EP7QObject @ 79 NONAME
- _ZN16QDeclarativeDragD0Ev @ 80 NONAME
- _ZN16QDeclarativeDragD1Ev @ 81 NONAME
- _ZN16QDeclarativeDragD2Ev @ 82 NONAME
- _ZN16QDeclarativeFlow11flowChangedEv @ 83 NONAME
- _ZN16QDeclarativeFlow11qt_metacallEN11QMetaObject4CallEiPPv @ 84 NONAME
- _ZN16QDeclarativeFlow11qt_metacastEPKc @ 85 NONAME
- _ZN16QDeclarativeFlow13doPositioningEv @ 86 NONAME
- _ZN16QDeclarativeFlow16staticMetaObjectE @ 87 NONAME DATA 16
- _ZN16QDeclarativeFlow19getStaticMetaObjectEv @ 88 NONAME
- _ZN16QDeclarativeFlow7setFlowENS_4FlowE @ 89 NONAME
- _ZN16QDeclarativeFlowC1EP16QDeclarativeItem @ 90 NONAME
- _ZN16QDeclarativeFlowC2EP16QDeclarativeItem @ 91 NONAME
- _ZN16QDeclarativeGrid10setColumnsEi @ 92 NONAME
- _ZN16QDeclarativeGrid11qt_metacallEN11QMetaObject4CallEiPPv @ 93 NONAME
- _ZN16QDeclarativeGrid11qt_metacastEPKc @ 94 NONAME
- _ZN16QDeclarativeGrid11rowsChangedEv @ 95 NONAME
- _ZN16QDeclarativeGrid13doPositioningEv @ 96 NONAME
- _ZN16QDeclarativeGrid14columnsChangedEv @ 97 NONAME
- _ZN16QDeclarativeGrid16staticMetaObjectE @ 98 NONAME DATA 16
- _ZN16QDeclarativeGrid19getStaticMetaObjectEv @ 99 NONAME
- _ZN16QDeclarativeGrid7setRowsEi @ 100 NONAME
- _ZN16QDeclarativeGridC1EP16QDeclarativeItem @ 101 NONAME
- _ZN16QDeclarativeGridC2EP16QDeclarativeItem @ 102 NONAME
- _ZN16QDeclarativeInfoC1EPK7QObject @ 103 NONAME
- _ZN16QDeclarativeInfoC2EPK7QObject @ 104 NONAME
- _ZN16QDeclarativeInfoD1Ev @ 105 NONAME
- _ZN16QDeclarativeInfoD2Ev @ 106 NONAME
- _ZN16QDeclarativeItem10classBeginEv @ 107 NONAME
- _ZN16QDeclarativeItem10fxChildrenEv @ 108 NONAME
- _ZN16QDeclarativeItem10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 109 NONAME
- _ZN16QDeclarativeItem10resetWidthEv @ 110 NONAME
- _ZN16QDeclarativeItem10sceneEventEP6QEvent @ 111 NONAME
- _ZN16QDeclarativeItem11clipChangedEv @ 112 NONAME
- _ZN16QDeclarativeItem11qt_metacallEN11QMetaObject4CallEiPPv @ 113 NONAME
- _ZN16QDeclarativeItem11qt_metacastEPKc @ 114 NONAME
- _ZN16QDeclarativeItem11resetHeightEv @ 115 NONAME
- _ZN16QDeclarativeItem11transitionsEv @ 116 NONAME
- _ZN16QDeclarativeItem12childrenRectEv @ 117 NONAME
- _ZN16QDeclarativeItem12focusChangedEb @ 118 NONAME
- _ZN16QDeclarativeItem12focusChangedEv @ 119 NONAME
- _ZN16QDeclarativeItem12stateChangedERK7QString @ 120 NONAME
- _ZN16QDeclarativeItem12widthChangedEv @ 121 NONAME
- _ZN16QDeclarativeItem13heightChangedEv @ 122 NONAME
- _ZN16QDeclarativeItem13keyPressEventEP9QKeyEvent @ 123 NONAME
- _ZN16QDeclarativeItem13parentChangedEv @ 124 NONAME
- _ZN16QDeclarativeItem13setParentItemEPS_ @ 125 NONAME
- _ZN16QDeclarativeItem13smoothChangedEv @ 126 NONAME
- _ZN16QDeclarativeItem15childrenChangedEv @ 127 NONAME
- _ZN16QDeclarativeItem15geometryChangedERK6QRectFS2_ @ 128 NONAME
- _ZN16QDeclarativeItem15keyReleaseEventEP9QKeyEvent @ 129 NONAME
- _ZN16QDeclarativeItem16inputMethodEventEP17QInputMethodEvent @ 130 NONAME
- _ZN16QDeclarativeItem16setImplicitWidthEf @ 131 NONAME
- _ZN16QDeclarativeItem16setKeepMouseGrabEb @ 132 NONAME
- _ZN16QDeclarativeItem16staticMetaObjectE @ 133 NONAME DATA 16
- _ZN16QDeclarativeItem17componentCompleteEv @ 134 NONAME
- _ZN16QDeclarativeItem17setBaselineOffsetEf @ 135 NONAME
- _ZN16QDeclarativeItem17setImplicitHeightEf @ 136 NONAME
- _ZN16QDeclarativeItem17wantsFocusChangedEv @ 137 NONAME
- _ZN16QDeclarativeItem18setTransformOriginENS_15TransformOriginE @ 138 NONAME
- _ZN16QDeclarativeItem19childrenRectChangedEv @ 139 NONAME
- _ZN16QDeclarativeItem19getStaticMetaObjectEv @ 140 NONAME
- _ZN16QDeclarativeItem21baselineOffsetChangedEv @ 141 NONAME
- _ZN16QDeclarativeItem22transformOriginChangedENS_15TransformOriginE @ 142 NONAME
- _ZN16QDeclarativeItem4dataEv @ 143 NONAME
- _ZN16QDeclarativeItem5eventEP6QEvent @ 144 NONAME
- _ZN16QDeclarativeItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 145 NONAME
- _ZN16QDeclarativeItem6statesEv @ 146 NONAME
- _ZN16QDeclarativeItem7anchorsEv @ 147 NONAME
- _ZN16QDeclarativeItem7setClipEb @ 148 NONAME
- _ZN16QDeclarativeItem8setFocusEb @ 149 NONAME
- _ZN16QDeclarativeItem8setStateERK7QString @ 150 NONAME
- _ZN16QDeclarativeItem8setWidthEf @ 151 NONAME
- _ZN16QDeclarativeItem9resourcesEv @ 152 NONAME
- _ZN16QDeclarativeItem9setHeightEf @ 153 NONAME
- _ZN16QDeclarativeItem9setSmoothEb @ 154 NONAME
- _ZN16QDeclarativeItem9transformEv @ 155 NONAME
- _ZN16QDeclarativeItemC1EPS_ @ 156 NONAME
- _ZN16QDeclarativeItemC1ER23QDeclarativeItemPrivatePS_ @ 157 NONAME
- _ZN16QDeclarativeItemC2EPS_ @ 158 NONAME
- _ZN16QDeclarativeItemC2ER23QDeclarativeItemPrivatePS_ @ 159 NONAME
- _ZN16QDeclarativeItemD0Ev @ 160 NONAME
- _ZN16QDeclarativeItemD1Ev @ 161 NONAME
- _ZN16QDeclarativeItemD2Ev @ 162 NONAME
- _ZN16QDeclarativePath11interpolateEiRK7QStringf @ 163 NONAME
- _ZN16QDeclarativePath11processPathEv @ 164 NONAME
- _ZN16QDeclarativePath11qt_metacallEN11QMetaObject4CallEiPPv @ 165 NONAME
- _ZN16QDeclarativePath11qt_metacastEPKc @ 166 NONAME
- _ZN16QDeclarativePath12pathElementsEv @ 167 NONAME
- _ZN16QDeclarativePath16staticMetaObjectE @ 168 NONAME DATA 16
- _ZN16QDeclarativePath17componentCompleteEv @ 169 NONAME
- _ZN16QDeclarativePath19getStaticMetaObjectEv @ 170 NONAME
- _ZN16QDeclarativePath7changedEv @ 171 NONAME
- _ZN16QDeclarativePath8endpointERK7QString @ 172 NONAME
- _ZN16QDeclarativePath9setStartXEf @ 173 NONAME
- _ZN16QDeclarativePath9setStartYEf @ 174 NONAME
- _ZN16QDeclarativePathC1EP7QObject @ 175 NONAME
- _ZN16QDeclarativePathC2EP7QObject @ 176 NONAME
- _ZN16QDeclarativePathD0Ev @ 177 NONAME
- _ZN16QDeclarativePathD1Ev @ 178 NONAME
- _ZN16QDeclarativePathD2Ev @ 179 NONAME
- _ZN16QDeclarativeText11fontChangedERK5QFont @ 180 NONAME
- _ZN16QDeclarativeText11qt_metacallEN11QMetaObject4CallEiPPv @ 181 NONAME
- _ZN16QDeclarativeText11qt_metacastEPKc @ 182 NONAME
- _ZN16QDeclarativeText11textChangedERK7QString @ 183 NONAME
- _ZN16QDeclarativeText11wrapChangedEb @ 184 NONAME
- _ZN16QDeclarativeText12colorChangedERK6QColor @ 185 NONAME
- _ZN16QDeclarativeText12setElideModeENS_13TextElideModeE @ 186 NONAME
- _ZN16QDeclarativeText12styleChangedENS_9TextStyleE @ 187 NONAME
- _ZN16QDeclarativeText13linkActivatedERK7QString @ 188 NONAME
- _ZN16QDeclarativeText13setStyleColorERK6QColor @ 189 NONAME
- _ZN16QDeclarativeText13setTextFormatENS_10TextFormatE @ 190 NONAME
- _ZN16QDeclarativeText15geometryChangedERK6QRectFS2_ @ 191 NONAME
- _ZN16QDeclarativeText15mousePressEventEP24QGraphicsSceneMouseEvent @ 192 NONAME
- _ZN16QDeclarativeText16elideModeChangedENS_13TextElideModeE @ 193 NONAME
- _ZN16QDeclarativeText16staticMetaObjectE @ 194 NONAME DATA 16
- _ZN16QDeclarativeText17componentCompleteEv @ 195 NONAME
- _ZN16QDeclarativeText17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 196 NONAME
- _ZN16QDeclarativeText17styleColorChangedERK6QColor @ 197 NONAME
- _ZN16QDeclarativeText17textFormatChangedENS_10TextFormatE @ 198 NONAME
- _ZN16QDeclarativeText19getStaticMetaObjectEv @ 199 NONAME
- _ZN16QDeclarativeText24verticalAlignmentChangedENS_10VAlignmentE @ 200 NONAME
- _ZN16QDeclarativeText26horizontalAlignmentChangedENS_10HAlignmentE @ 201 NONAME
- _ZN16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 202 NONAME
- _ZN16QDeclarativeText7setFontERK5QFont @ 203 NONAME
- _ZN16QDeclarativeText7setTextERK7QString @ 204 NONAME
- _ZN16QDeclarativeText7setWrapEb @ 205 NONAME
- _ZN16QDeclarativeText8setColorERK6QColor @ 206 NONAME
- _ZN16QDeclarativeText8setStyleENS_9TextStyleE @ 207 NONAME
- _ZN16QDeclarativeText9setHAlignENS_10HAlignmentE @ 208 NONAME
- _ZN16QDeclarativeText9setVAlignENS_10VAlignmentE @ 209 NONAME
- _ZN16QDeclarativeTextC1EP16QDeclarativeItem @ 210 NONAME
- _ZN16QDeclarativeTextC2EP16QDeclarativeItem @ 211 NONAME
- _ZN16QDeclarativeTextD0Ev @ 212 NONAME
- _ZN16QDeclarativeTextD1Ev @ 213 NONAME
- _ZN16QDeclarativeTextD2Ev @ 214 NONAME
- _ZN16QDeclarativeTypeC1EiRKN19QDeclarativePrivate12RegisterTypeE @ 215 NONAME
- _ZN16QDeclarativeTypeC1EiRKN19QDeclarativePrivate17RegisterInterfaceE @ 216 NONAME
- _ZN16QDeclarativeTypeC2EiRKN19QDeclarativePrivate12RegisterTypeE @ 217 NONAME
- _ZN16QDeclarativeTypeC2EiRKN19QDeclarativePrivate17RegisterInterfaceE @ 218 NONAME
- _ZN16QDeclarativeTypeD1Ev @ 219 NONAME
- _ZN16QDeclarativeTypeD2Ev @ 220 NONAME
- _ZN16QDeclarativeView10paintEventEP11QPaintEvent @ 221 NONAME
- _ZN16QDeclarativeView10timerEventEP11QTimerEvent @ 222 NONAME
- _ZN16QDeclarativeView11qt_metacallEN11QMetaObject4CallEiPPv @ 223 NONAME
- _ZN16QDeclarativeView11qt_metacastEPKc @ 224 NONAME
- _ZN16QDeclarativeView11resizeEventEP12QResizeEvent @ 225 NONAME
- _ZN16QDeclarativeView11rootContextEv @ 226 NONAME
- _ZN16QDeclarativeView11sizeChangedEv @ 227 NONAME
- _ZN16QDeclarativeView12sceneResizedE5QSize @ 228 NONAME
- _ZN16QDeclarativeView13setResizeModeENS_10ResizeModeE @ 229 NONAME
- _ZN16QDeclarativeView13setRootObjectEP7QObject @ 230 NONAME
- _ZN16QDeclarativeView13statusChangedENS_6StatusE @ 231 NONAME
- _ZN16QDeclarativeView15continueExecuteEv @ 232 NONAME
- _ZN16QDeclarativeView16staticMetaObjectE @ 233 NONAME DATA 16
- _ZN16QDeclarativeView19getStaticMetaObjectEv @ 234 NONAME
- _ZN16QDeclarativeView6engineEv @ 235 NONAME
- _ZN16QDeclarativeView9setSourceERK4QUrl @ 236 NONAME
- _ZN16QDeclarativeViewC1EP7QWidget @ 237 NONAME
- _ZN16QDeclarativeViewC1ERK4QUrlP7QWidget @ 238 NONAME
- _ZN16QDeclarativeViewC2EP7QWidget @ 239 NONAME
- _ZN16QDeclarativeViewC2ERK4QUrlP7QWidget @ 240 NONAME
- _ZN16QDeclarativeViewD0Ev @ 241 NONAME
- _ZN16QDeclarativeViewD1Ev @ 242 NONAME
- _ZN16QDeclarativeViewD2Ev @ 243 NONAME
- _ZN16QMetaEnumBuilder6addKeyERK10QByteArrayi @ 244 NONAME
- _ZN16QMetaEnumBuilder9removeKeyEi @ 245 NONAME
- _ZN16QMetaEnumBuilder9setIsFlagEb @ 246 NONAME
- _ZN17QDeclarativeCurve11qt_metacallEN11QMetaObject4CallEiPPv @ 247 NONAME
- _ZN17QDeclarativeCurve11qt_metacastEPKc @ 248 NONAME
- _ZN17QDeclarativeCurve16staticMetaObjectE @ 249 NONAME DATA 16
- _ZN17QDeclarativeCurve19getStaticMetaObjectEv @ 250 NONAME
- _ZN17QDeclarativeCurve4setXEf @ 251 NONAME
- _ZN17QDeclarativeCurve4setYEf @ 252 NONAME
- _ZN17QDeclarativeError14setDescriptionERK7QString @ 253 NONAME
- _ZN17QDeclarativeError6setUrlERK4QUrl @ 254 NONAME
- _ZN17QDeclarativeError7setLineEi @ 255 NONAME
- _ZN17QDeclarativeError9setColumnEi @ 256 NONAME
- _ZN17QDeclarativeErrorC1ERKS_ @ 257 NONAME
- _ZN17QDeclarativeErrorC1Ev @ 258 NONAME
- _ZN17QDeclarativeErrorC2ERKS_ @ 259 NONAME
- _ZN17QDeclarativeErrorC2Ev @ 260 NONAME
- _ZN17QDeclarativeErrorD1Ev @ 261 NONAME
- _ZN17QDeclarativeErrorD2Ev @ 262 NONAME
- _ZN17QDeclarativeErroraSERKS_ @ 263 NONAME
- _ZN17QDeclarativeImage11qt_metacallEN11QMetaObject4CallEiPPv @ 264 NONAME
- _ZN17QDeclarativeImage11qt_metacastEPKc @ 265 NONAME
- _ZN17QDeclarativeImage11setFillModeENS_8FillModeE @ 266 NONAME
- _ZN17QDeclarativeImage15fillModeChangedEv @ 267 NONAME
- _ZN17QDeclarativeImage15geometryChangedERK6QRectFS2_ @ 268 NONAME
- _ZN17QDeclarativeImage16staticMetaObjectE @ 269 NONAME DATA 16
- _ZN17QDeclarativeImage19getStaticMetaObjectEv @ 270 NONAME
- _ZN17QDeclarativeImage21updatePaintedGeometryEv @ 271 NONAME
- _ZN17QDeclarativeImage22paintedGeometryChangedEv @ 272 NONAME
- _ZN17QDeclarativeImage5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 273 NONAME
- _ZN17QDeclarativeImage9setPixmapERK7QPixmap @ 274 NONAME
- _ZN17QDeclarativeImageC1EP16QDeclarativeItem @ 275 NONAME
- _ZN17QDeclarativeImageC1ER24QDeclarativeImagePrivateP16QDeclarativeItem @ 276 NONAME
- _ZN17QDeclarativeImageC2EP16QDeclarativeItem @ 277 NONAME
- _ZN17QDeclarativeImageC2ER24QDeclarativeImagePrivateP16QDeclarativeItem @ 278 NONAME
- _ZN17QDeclarativeImageD0Ev @ 279 NONAME
- _ZN17QDeclarativeImageD1Ev @ 280 NONAME
- _ZN17QDeclarativeImageD2Ev @ 281 NONAME
- _ZN17QDeclarativeState10setExtendsERK7QString @ 282 NONAME
- _ZN17QDeclarativeState11qt_metacallEN11QMetaObject4CallEiPPv @ 283 NONAME
- _ZN17QDeclarativeState11qt_metacastEPKc @ 284 NONAME
- _ZN17QDeclarativeState13setStateGroupEP22QDeclarativeStateGroup @ 285 NONAME
- _ZN17QDeclarativeState16staticMetaObjectE @ 286 NONAME DATA 16
- _ZN17QDeclarativeState19getStaticMetaObjectEv @ 287 NONAME
- _ZN17QDeclarativeState5applyEP22QDeclarativeStateGroupP22QDeclarativeTransitionPS_ @ 288 NONAME
- _ZN17QDeclarativeState6cancelEv @ 289 NONAME
- _ZN17QDeclarativeState7changesEv @ 290 NONAME
- _ZN17QDeclarativeState7setNameERK7QString @ 291 NONAME
- _ZN17QDeclarativeState7setWhenEP19QDeclarativeBinding @ 292 NONAME
- _ZN17QDeclarativeState9completedEv @ 293 NONAME
- _ZN17QDeclarativeStateC1EP7QObject @ 294 NONAME
- _ZN17QDeclarativeStateC2EP7QObject @ 295 NONAME
- _ZN17QDeclarativeStateD0Ev @ 296 NONAME
- _ZN17QDeclarativeStateD1Ev @ 297 NONAME
- _ZN17QDeclarativeStateD2Ev @ 298 NONAME
- _ZN17QDeclarativeStatelsEP26QDeclarativeStateOperation @ 299 NONAME
- _ZN17QDeclarativeTimer10classBeginEv @ 300 NONAME
- _ZN17QDeclarativeTimer10setRunningEb @ 301 NONAME
- _ZN17QDeclarativeTimer11qt_metacallEN11QMetaObject4CallEiPPv @ 302 NONAME
- _ZN17QDeclarativeTimer11qt_metacastEPKc @ 303 NONAME
- _ZN17QDeclarativeTimer11setIntervalEi @ 304 NONAME
- _ZN17QDeclarativeTimer12setRepeatingEb @ 305 NONAME
+ _ZN16QDeclarativeBind11qt_metacallEN11QMetaObject4CallEiPPv @ 44 NONAME
+ _ZN16QDeclarativeBind11qt_metacastEPKc @ 45 NONAME
+ _ZN16QDeclarativeBind11setPropertyERK7QString @ 46 NONAME
+ _ZN16QDeclarativeBind16staticMetaObjectE @ 47 NONAME DATA 16
+ _ZN16QDeclarativeBind17componentCompleteEv @ 48 NONAME
+ _ZN16QDeclarativeBind19getStaticMetaObjectEv @ 49 NONAME
+ _ZN16QDeclarativeBind4evalEv @ 50 NONAME
+ _ZN16QDeclarativeBind6objectEv @ 51 NONAME
+ _ZN16QDeclarativeBind7setWhenEb @ 52 NONAME
+ _ZN16QDeclarativeBind8setValueERK8QVariant @ 53 NONAME
+ _ZN16QDeclarativeBind9setObjectEP7QObject @ 54 NONAME
+ _ZN16QDeclarativeBindC1EP7QObject @ 55 NONAME
+ _ZN16QDeclarativeBindC2EP7QObject @ 56 NONAME
+ _ZN16QDeclarativeBindD0Ev @ 57 NONAME
+ _ZN16QDeclarativeBindD1Ev @ 58 NONAME
+ _ZN16QDeclarativeBindD2Ev @ 59 NONAME
+ _ZN16QDeclarativeDrag11axisChangedEv @ 60 NONAME
+ _ZN16QDeclarativeDrag11qt_metacallEN11QMetaObject4CallEiPPv @ 61 NONAME
+ _ZN16QDeclarativeDrag11qt_metacastEPKc @ 62 NONAME
+ _ZN16QDeclarativeDrag13targetChangedEv @ 63 NONAME
+ _ZN16QDeclarativeDrag15maximumXChangedEv @ 64 NONAME
+ _ZN16QDeclarativeDrag15maximumYChangedEv @ 65 NONAME
+ _ZN16QDeclarativeDrag15minimumXChangedEv @ 66 NONAME
+ _ZN16QDeclarativeDrag15minimumYChangedEv @ 67 NONAME
+ _ZN16QDeclarativeDrag16staticMetaObjectE @ 68 NONAME DATA 16
+ _ZN16QDeclarativeDrag19getStaticMetaObjectEv @ 69 NONAME
+ _ZN16QDeclarativeDrag7setAxisENS_4AxisE @ 70 NONAME
+ _ZN16QDeclarativeDrag7setXmaxEf @ 71 NONAME
+ _ZN16QDeclarativeDrag7setXminEf @ 72 NONAME
+ _ZN16QDeclarativeDrag7setYmaxEf @ 73 NONAME
+ _ZN16QDeclarativeDrag7setYminEf @ 74 NONAME
+ _ZN16QDeclarativeDrag9setTargetEP15QGraphicsObject @ 75 NONAME
+ _ZN16QDeclarativeDragC1EP7QObject @ 76 NONAME
+ _ZN16QDeclarativeDragC2EP7QObject @ 77 NONAME
+ _ZN16QDeclarativeDragD0Ev @ 78 NONAME
+ _ZN16QDeclarativeDragD1Ev @ 79 NONAME
+ _ZN16QDeclarativeDragD2Ev @ 80 NONAME
+ _ZN16QDeclarativeFlow11flowChangedEv @ 81 NONAME
+ _ZN16QDeclarativeFlow11qt_metacallEN11QMetaObject4CallEiPPv @ 82 NONAME
+ _ZN16QDeclarativeFlow11qt_metacastEPKc @ 83 NONAME
+ _ZN16QDeclarativeFlow13doPositioningEv @ 84 NONAME
+ _ZN16QDeclarativeFlow16staticMetaObjectE @ 85 NONAME DATA 16
+ _ZN16QDeclarativeFlow19getStaticMetaObjectEv @ 86 NONAME
+ _ZN16QDeclarativeFlow7setFlowENS_4FlowE @ 87 NONAME
+ _ZN16QDeclarativeFlowC1EP16QDeclarativeItem @ 88 NONAME
+ _ZN16QDeclarativeFlowC2EP16QDeclarativeItem @ 89 NONAME
+ _ZN16QDeclarativeGrid10setColumnsEi @ 90 NONAME
+ _ZN16QDeclarativeGrid11qt_metacallEN11QMetaObject4CallEiPPv @ 91 NONAME
+ _ZN16QDeclarativeGrid11qt_metacastEPKc @ 92 NONAME
+ _ZN16QDeclarativeGrid11rowsChangedEv @ 93 NONAME
+ _ZN16QDeclarativeGrid13doPositioningEv @ 94 NONAME
+ _ZN16QDeclarativeGrid14columnsChangedEv @ 95 NONAME
+ _ZN16QDeclarativeGrid16staticMetaObjectE @ 96 NONAME DATA 16
+ _ZN16QDeclarativeGrid19getStaticMetaObjectEv @ 97 NONAME
+ _ZN16QDeclarativeGrid7setRowsEi @ 98 NONAME
+ _ZN16QDeclarativeGridC1EP16QDeclarativeItem @ 99 NONAME
+ _ZN16QDeclarativeGridC2EP16QDeclarativeItem @ 100 NONAME
+ _ZN16QDeclarativeInfoC1EPK7QObject @ 101 NONAME
+ _ZN16QDeclarativeInfoC2EPK7QObject @ 102 NONAME
+ _ZN16QDeclarativeInfoD1Ev @ 103 NONAME
+ _ZN16QDeclarativeInfoD2Ev @ 104 NONAME
+ _ZN16QDeclarativeItem10classBeginEv @ 105 NONAME
+ _ZN16QDeclarativeItem10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 106 NONAME
+ _ZN16QDeclarativeItem10resetWidthEv @ 107 NONAME
+ _ZN16QDeclarativeItem10sceneEventEP6QEvent @ 108 NONAME
+ _ZN16QDeclarativeItem11clipChangedEb @ 109 NONAME
+ _ZN16QDeclarativeItem11qt_metacallEN11QMetaObject4CallEiPPv @ 110 NONAME
+ _ZN16QDeclarativeItem11qt_metacastEPKc @ 111 NONAME
+ _ZN16QDeclarativeItem11resetHeightEv @ 112 NONAME
+ _ZN16QDeclarativeItem11transitionsEv @ 113 NONAME
+ _ZN16QDeclarativeItem12childrenRectEv @ 114 NONAME
+ _ZN16QDeclarativeItem12focusChangedEb @ 115 NONAME
+ _ZN16QDeclarativeItem12stateChangedERK7QString @ 116 NONAME
+ _ZN16QDeclarativeItem13keyPressEventEP9QKeyEvent @ 117 NONAME
+ _ZN16QDeclarativeItem13parentChangedEPS_ @ 118 NONAME
+ _ZN16QDeclarativeItem13setParentItemEPS_ @ 119 NONAME
+ _ZN16QDeclarativeItem13smoothChangedEb @ 120 NONAME
+ _ZN16QDeclarativeItem15childrenChangedEv @ 121 NONAME
+ _ZN16QDeclarativeItem15geometryChangedERK6QRectFS2_ @ 122 NONAME
+ _ZN16QDeclarativeItem15keyReleaseEventEP9QKeyEvent @ 123 NONAME
+ _ZN16QDeclarativeItem16inputMethodEventEP17QInputMethodEvent @ 124 NONAME
+ _ZN16QDeclarativeItem16setImplicitWidthEf @ 125 NONAME
+ _ZN16QDeclarativeItem16setKeepMouseGrabEb @ 126 NONAME
+ _ZN16QDeclarativeItem16staticMetaObjectE @ 127 NONAME DATA 16
+ _ZN16QDeclarativeItem17componentCompleteEv @ 128 NONAME
+ _ZN16QDeclarativeItem17setBaselineOffsetEf @ 129 NONAME
+ _ZN16QDeclarativeItem17setImplicitHeightEf @ 130 NONAME
+ _ZN16QDeclarativeItem17wantsFocusChangedEb @ 131 NONAME
+ _ZN16QDeclarativeItem18setTransformOriginENS_15TransformOriginE @ 132 NONAME
+ _ZN16QDeclarativeItem19childrenRectChangedERK6QRectF @ 133 NONAME
+ _ZN16QDeclarativeItem19getStaticMetaObjectEv @ 134 NONAME
+ _ZN16QDeclarativeItem21baselineOffsetChangedEf @ 135 NONAME
+ _ZN16QDeclarativeItem22transformOriginChangedENS_15TransformOriginE @ 136 NONAME
+ _ZN16QDeclarativeItem4dataEv @ 137 NONAME
+ _ZN16QDeclarativeItem5eventEP6QEvent @ 138 NONAME
+ _ZN16QDeclarativeItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 139 NONAME
+ _ZN16QDeclarativeItem6statesEv @ 140 NONAME
+ _ZN16QDeclarativeItem7anchorsEv @ 141 NONAME
+ _ZN16QDeclarativeItem7setClipEb @ 142 NONAME
+ _ZN16QDeclarativeItem7setSizeERK6QSizeF @ 143 NONAME
+ _ZN16QDeclarativeItem8setFocusEb @ 144 NONAME
+ _ZN16QDeclarativeItem8setStateERK7QString @ 145 NONAME
+ _ZN16QDeclarativeItem8setWidthEf @ 146 NONAME
+ _ZN16QDeclarativeItem9resourcesEv @ 147 NONAME
+ _ZN16QDeclarativeItem9setHeightEf @ 148 NONAME
+ _ZN16QDeclarativeItem9setSmoothEb @ 149 NONAME
+ _ZN16QDeclarativeItem9transformEv @ 150 NONAME
+ _ZN16QDeclarativeItemC1EPS_ @ 151 NONAME
+ _ZN16QDeclarativeItemC1ER23QDeclarativeItemPrivatePS_ @ 152 NONAME
+ _ZN16QDeclarativeItemC2EPS_ @ 153 NONAME
+ _ZN16QDeclarativeItemC2ER23QDeclarativeItemPrivatePS_ @ 154 NONAME
+ _ZN16QDeclarativeItemD0Ev @ 155 NONAME
+ _ZN16QDeclarativeItemD1Ev @ 156 NONAME
+ _ZN16QDeclarativeItemD2Ev @ 157 NONAME
+ _ZN16QDeclarativePath11interpolateEiRK7QStringf @ 158 NONAME
+ _ZN16QDeclarativePath11processPathEv @ 159 NONAME
+ _ZN16QDeclarativePath11qt_metacallEN11QMetaObject4CallEiPPv @ 160 NONAME
+ _ZN16QDeclarativePath11qt_metacastEPKc @ 161 NONAME
+ _ZN16QDeclarativePath12pathElementsEv @ 162 NONAME
+ _ZN16QDeclarativePath13startXChangedEv @ 163 NONAME
+ _ZN16QDeclarativePath13startYChangedEv @ 164 NONAME
+ _ZN16QDeclarativePath16staticMetaObjectE @ 165 NONAME DATA 16
+ _ZN16QDeclarativePath17componentCompleteEv @ 166 NONAME
+ _ZN16QDeclarativePath19getStaticMetaObjectEv @ 167 NONAME
+ _ZN16QDeclarativePath7changedEv @ 168 NONAME
+ _ZN16QDeclarativePath8endpointERK7QString @ 169 NONAME
+ _ZN16QDeclarativePath9setStartXEf @ 170 NONAME
+ _ZN16QDeclarativePath9setStartYEf @ 171 NONAME
+ _ZN16QDeclarativePathC1EP7QObject @ 172 NONAME
+ _ZN16QDeclarativePathC2EP7QObject @ 173 NONAME
+ _ZN16QDeclarativePathD0Ev @ 174 NONAME
+ _ZN16QDeclarativePathD1Ev @ 175 NONAME
+ _ZN16QDeclarativePathD2Ev @ 176 NONAME
+ _ZN16QDeclarativeText11fontChangedERK5QFont @ 177 NONAME
+ _ZN16QDeclarativeText11qt_metacallEN11QMetaObject4CallEiPPv @ 178 NONAME
+ _ZN16QDeclarativeText11qt_metacastEPKc @ 179 NONAME
+ _ZN16QDeclarativeText11textChangedERK7QString @ 180 NONAME
+ _ZN16QDeclarativeText11wrapChangedEb @ 181 NONAME
+ _ZN16QDeclarativeText12colorChangedERK6QColor @ 182 NONAME
+ _ZN16QDeclarativeText12setElideModeENS_13TextElideModeE @ 183 NONAME
+ _ZN16QDeclarativeText12styleChangedENS_9TextStyleE @ 184 NONAME
+ _ZN16QDeclarativeText13linkActivatedERK7QString @ 185 NONAME
+ _ZN16QDeclarativeText13setStyleColorERK6QColor @ 186 NONAME
+ _ZN16QDeclarativeText13setTextFormatENS_10TextFormatE @ 187 NONAME
+ _ZN16QDeclarativeText15geometryChangedERK6QRectFS2_ @ 188 NONAME
+ _ZN16QDeclarativeText15mousePressEventEP24QGraphicsSceneMouseEvent @ 189 NONAME
+ _ZN16QDeclarativeText16elideModeChangedENS_13TextElideModeE @ 190 NONAME
+ _ZN16QDeclarativeText16staticMetaObjectE @ 191 NONAME DATA 16
+ _ZN16QDeclarativeText17componentCompleteEv @ 192 NONAME
+ _ZN16QDeclarativeText17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 193 NONAME
+ _ZN16QDeclarativeText17styleColorChangedERK6QColor @ 194 NONAME
+ _ZN16QDeclarativeText17textFormatChangedENS_10TextFormatE @ 195 NONAME
+ _ZN16QDeclarativeText19getStaticMetaObjectEv @ 196 NONAME
+ _ZN16QDeclarativeText24verticalAlignmentChangedENS_10VAlignmentE @ 197 NONAME
+ _ZN16QDeclarativeText26horizontalAlignmentChangedENS_10HAlignmentE @ 198 NONAME
+ _ZN16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 199 NONAME
+ _ZN16QDeclarativeText7setFontERK5QFont @ 200 NONAME
+ _ZN16QDeclarativeText7setTextERK7QString @ 201 NONAME
+ _ZN16QDeclarativeText7setWrapEb @ 202 NONAME
+ _ZN16QDeclarativeText8setColorERK6QColor @ 203 NONAME
+ _ZN16QDeclarativeText8setStyleENS_9TextStyleE @ 204 NONAME
+ _ZN16QDeclarativeText9setHAlignENS_10HAlignmentE @ 205 NONAME
+ _ZN16QDeclarativeText9setVAlignENS_10VAlignmentE @ 206 NONAME
+ _ZN16QDeclarativeTextC1EP16QDeclarativeItem @ 207 NONAME
+ _ZN16QDeclarativeTextC2EP16QDeclarativeItem @ 208 NONAME
+ _ZN16QDeclarativeTextD0Ev @ 209 NONAME
+ _ZN16QDeclarativeTextD1Ev @ 210 NONAME
+ _ZN16QDeclarativeTextD2Ev @ 211 NONAME
+ _ZN16QDeclarativeTypeC1EiRKN19QDeclarativePrivate12RegisterTypeE @ 212 NONAME
+ _ZN16QDeclarativeTypeC1EiRKN19QDeclarativePrivate17RegisterInterfaceE @ 213 NONAME
+ _ZN16QDeclarativeTypeC2EiRKN19QDeclarativePrivate12RegisterTypeE @ 214 NONAME
+ _ZN16QDeclarativeTypeC2EiRKN19QDeclarativePrivate17RegisterInterfaceE @ 215 NONAME
+ _ZN16QDeclarativeTypeD1Ev @ 216 NONAME
+ _ZN16QDeclarativeTypeD2Ev @ 217 NONAME
+ _ZN16QDeclarativeView10paintEventEP11QPaintEvent @ 218 NONAME
+ _ZN16QDeclarativeView10timerEventEP11QTimerEvent @ 219 NONAME
+ _ZN16QDeclarativeView11qt_metacallEN11QMetaObject4CallEiPPv @ 220 NONAME
+ _ZN16QDeclarativeView11qt_metacastEPKc @ 221 NONAME
+ _ZN16QDeclarativeView11resizeEventEP12QResizeEvent @ 222 NONAME
+ _ZN16QDeclarativeView11rootContextEv @ 223 NONAME
+ _ZN16QDeclarativeView11sizeChangedEv @ 224 NONAME
+ _ZN16QDeclarativeView12sceneResizedE5QSize @ 225 NONAME
+ _ZN16QDeclarativeView13setResizeModeENS_10ResizeModeE @ 226 NONAME
+ _ZN16QDeclarativeView13setRootObjectEP7QObject @ 227 NONAME
+ _ZN16QDeclarativeView13statusChangedENS_6StatusE @ 228 NONAME
+ _ZN16QDeclarativeView15continueExecuteEv @ 229 NONAME
+ _ZN16QDeclarativeView16staticMetaObjectE @ 230 NONAME DATA 16
+ _ZN16QDeclarativeView19getStaticMetaObjectEv @ 231 NONAME
+ _ZN16QDeclarativeView6engineEv @ 232 NONAME
+ _ZN16QDeclarativeView9setSourceERK4QUrl @ 233 NONAME
+ _ZN16QDeclarativeViewC1EP7QWidget @ 234 NONAME
+ _ZN16QDeclarativeViewC1ERK4QUrlP7QWidget @ 235 NONAME
+ _ZN16QDeclarativeViewC2EP7QWidget @ 236 NONAME
+ _ZN16QDeclarativeViewC2ERK4QUrlP7QWidget @ 237 NONAME
+ _ZN16QDeclarativeViewD0Ev @ 238 NONAME
+ _ZN16QDeclarativeViewD1Ev @ 239 NONAME
+ _ZN16QDeclarativeViewD2Ev @ 240 NONAME
+ _ZN16QMetaEnumBuilder6addKeyERK10QByteArrayi @ 241 NONAME
+ _ZN16QMetaEnumBuilder9removeKeyEi @ 242 NONAME
+ _ZN16QMetaEnumBuilder9setIsFlagEb @ 243 NONAME
+ _ZN17QDeclarativeCurve11qt_metacallEN11QMetaObject4CallEiPPv @ 244 NONAME
+ _ZN17QDeclarativeCurve11qt_metacastEPKc @ 245 NONAME
+ _ZN17QDeclarativeCurve16staticMetaObjectE @ 246 NONAME DATA 16
+ _ZN17QDeclarativeCurve19getStaticMetaObjectEv @ 247 NONAME
+ _ZN17QDeclarativeCurve4setXEf @ 248 NONAME
+ _ZN17QDeclarativeCurve4setYEf @ 249 NONAME
+ _ZN17QDeclarativeError14setDescriptionERK7QString @ 250 NONAME
+ _ZN17QDeclarativeError6setUrlERK4QUrl @ 251 NONAME
+ _ZN17QDeclarativeError7setLineEi @ 252 NONAME
+ _ZN17QDeclarativeError9setColumnEi @ 253 NONAME
+ _ZN17QDeclarativeErrorC1ERKS_ @ 254 NONAME
+ _ZN17QDeclarativeErrorC1Ev @ 255 NONAME
+ _ZN17QDeclarativeErrorC2ERKS_ @ 256 NONAME
+ _ZN17QDeclarativeErrorC2Ev @ 257 NONAME
+ _ZN17QDeclarativeErrorD1Ev @ 258 NONAME
+ _ZN17QDeclarativeErrorD2Ev @ 259 NONAME
+ _ZN17QDeclarativeErroraSERKS_ @ 260 NONAME
+ _ZN17QDeclarativeImage11qt_metacallEN11QMetaObject4CallEiPPv @ 261 NONAME
+ _ZN17QDeclarativeImage11qt_metacastEPKc @ 262 NONAME
+ _ZN17QDeclarativeImage11setFillModeENS_8FillModeE @ 263 NONAME
+ _ZN17QDeclarativeImage12pixmapChangeEv @ 264 NONAME
+ _ZN17QDeclarativeImage13pixmapChangedEv @ 265 NONAME
+ _ZN17QDeclarativeImage15fillModeChangedEv @ 266 NONAME
+ _ZN17QDeclarativeImage15geometryChangedERK6QRectFS2_ @ 267 NONAME
+ _ZN17QDeclarativeImage16staticMetaObjectE @ 268 NONAME DATA 16
+ _ZN17QDeclarativeImage19getStaticMetaObjectEv @ 269 NONAME
+ _ZN17QDeclarativeImage21updatePaintedGeometryEv @ 270 NONAME
+ _ZN17QDeclarativeImage22paintedGeometryChangedEv @ 271 NONAME
+ _ZN17QDeclarativeImage5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 272 NONAME
+ _ZN17QDeclarativeImage9setPixmapERK7QPixmap @ 273 NONAME
+ _ZN17QDeclarativeImageC1EP16QDeclarativeItem @ 274 NONAME
+ _ZN17QDeclarativeImageC1ER24QDeclarativeImagePrivateP16QDeclarativeItem @ 275 NONAME
+ _ZN17QDeclarativeImageC2EP16QDeclarativeItem @ 276 NONAME
+ _ZN17QDeclarativeImageC2ER24QDeclarativeImagePrivateP16QDeclarativeItem @ 277 NONAME
+ _ZN17QDeclarativeImageD0Ev @ 278 NONAME
+ _ZN17QDeclarativeImageD1Ev @ 279 NONAME
+ _ZN17QDeclarativeImageD2Ev @ 280 NONAME
+ _ZN17QDeclarativeState10setExtendsERK7QString @ 281 NONAME
+ _ZN17QDeclarativeState11qt_metacallEN11QMetaObject4CallEiPPv @ 282 NONAME
+ _ZN17QDeclarativeState11qt_metacastEPKc @ 283 NONAME
+ _ZN17QDeclarativeState13setStateGroupEP22QDeclarativeStateGroup @ 284 NONAME
+ _ZN17QDeclarativeState16staticMetaObjectE @ 285 NONAME DATA 16
+ _ZN17QDeclarativeState19getStaticMetaObjectEv @ 286 NONAME
+ _ZN17QDeclarativeState5applyEP22QDeclarativeStateGroupP22QDeclarativeTransitionPS_ @ 287 NONAME
+ _ZN17QDeclarativeState6cancelEv @ 288 NONAME
+ _ZN17QDeclarativeState7changesEv @ 289 NONAME
+ _ZN17QDeclarativeState7setNameERK7QString @ 290 NONAME
+ _ZN17QDeclarativeState7setWhenEP19QDeclarativeBinding @ 291 NONAME
+ _ZN17QDeclarativeState9completedEv @ 292 NONAME
+ _ZN17QDeclarativeStateC1EP7QObject @ 293 NONAME
+ _ZN17QDeclarativeStateC2EP7QObject @ 294 NONAME
+ _ZN17QDeclarativeStateD0Ev @ 295 NONAME
+ _ZN17QDeclarativeStateD1Ev @ 296 NONAME
+ _ZN17QDeclarativeStateD2Ev @ 297 NONAME
+ _ZN17QDeclarativeStatelsEP26QDeclarativeStateOperation @ 298 NONAME
+ _ZN17QDeclarativeTimer10classBeginEv @ 299 NONAME
+ _ZN17QDeclarativeTimer10setRunningEb @ 300 NONAME
+ _ZN17QDeclarativeTimer11qt_metacallEN11QMetaObject4CallEiPPv @ 301 NONAME
+ _ZN17QDeclarativeTimer11qt_metacastEPKc @ 302 NONAME
+ _ZN17QDeclarativeTimer11setIntervalEi @ 303 NONAME
+ _ZN17QDeclarativeTimer12setRepeatingEb @ 304 NONAME
+ _ZN17QDeclarativeTimer13repeatChangedEv @ 305 NONAME
_ZN17QDeclarativeTimer14runningChangedEv @ 306 NONAME
- _ZN17QDeclarativeTimer16staticMetaObjectE @ 307 NONAME DATA 16
- _ZN17QDeclarativeTimer17componentCompleteEv @ 308 NONAME
- _ZN17QDeclarativeTimer19getStaticMetaObjectEv @ 309 NONAME
- _ZN17QDeclarativeTimer19setTriggeredOnStartEb @ 310 NONAME
- _ZN17QDeclarativeTimer4stopEv @ 311 NONAME
- _ZN17QDeclarativeTimer5startEv @ 312 NONAME
- _ZN17QDeclarativeTimer6tickedEv @ 313 NONAME
- _ZN17QDeclarativeTimer6updateEv @ 314 NONAME
- _ZN17QDeclarativeTimer7restartEv @ 315 NONAME
- _ZN17QDeclarativeTimer8finishedEv @ 316 NONAME
- _ZN17QDeclarativeTimer9triggeredEv @ 317 NONAME
- _ZN17QDeclarativeTimerC1EP7QObject @ 318 NONAME
- _ZN17QDeclarativeTimerC2EP7QObject @ 319 NONAME
- _ZN18QDeclarativeAction17deleteFromBindingEv @ 320 NONAME
- _ZN18QDeclarativeActionC1EP7QObjectRK7QStringRK8QVariant @ 321 NONAME
- _ZN18QDeclarativeActionC1Ev @ 322 NONAME
- _ZN18QDeclarativeActionC2EP7QObjectRK7QStringRK8QVariant @ 323 NONAME
- _ZN18QDeclarativeActionC2Ev @ 324 NONAME
- _ZN18QDeclarativeColumn11qt_metacallEN11QMetaObject4CallEiPPv @ 325 NONAME
- _ZN18QDeclarativeColumn11qt_metacastEPKc @ 326 NONAME
- _ZN18QDeclarativeColumn13doPositioningEv @ 327 NONAME
- _ZN18QDeclarativeColumn16staticMetaObjectE @ 328 NONAME DATA 16
- _ZN18QDeclarativeColumn19getStaticMetaObjectEv @ 329 NONAME
- _ZN18QDeclarativeColumnC1EP16QDeclarativeItem @ 330 NONAME
- _ZN18QDeclarativeColumnC2EP16QDeclarativeItem @ 331 NONAME
- _ZN18QDeclarativeEngine10setBaseUrlERK4QUrl @ 332 NONAME
- _ZN18QDeclarativeEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 333 NONAME
- _ZN18QDeclarativeEngine11qt_metacastEPKc @ 334 NONAME
- _ZN18QDeclarativeEngine11rootContextEv @ 335 NONAME
- _ZN18QDeclarativeEngine13addImportPathERK7QString @ 336 NONAME
- _ZN18QDeclarativeEngine15importExtensionERK7QStringS2_ @ 337 NONAME
- _ZN18QDeclarativeEngine16addImageProviderERK7QStringP25QDeclarativeImageProvider @ 338 NONAME
- _ZN18QDeclarativeEngine16contextForObjectEPK7QObject @ 339 NONAME
- _ZN18QDeclarativeEngine16staticMetaObjectE @ 340 NONAME DATA 16
- _ZN18QDeclarativeEngine19clearComponentCacheEv @ 341 NONAME
- _ZN18QDeclarativeEngine19getStaticMetaObjectEv @ 342 NONAME
- _ZN18QDeclarativeEngine19removeImageProviderERK7QString @ 343 NONAME
- _ZN18QDeclarativeEngine19setContextForObjectEP7QObjectP19QDeclarativeContext @ 344 NONAME
- _ZN18QDeclarativeEngine21setOfflineStoragePathERK7QString @ 345 NONAME
- _ZN18QDeclarativeEngine30setNetworkAccessManagerFactoryEP39QDeclarativeNetworkAccessManagerFactory @ 346 NONAME
- _ZN18QDeclarativeEngine4quitEv @ 347 NONAME
- _ZN18QDeclarativeEngineC1EP7QObject @ 348 NONAME
- _ZN18QDeclarativeEngineC2EP7QObject @ 349 NONAME
- _ZN18QDeclarativeEngineD0Ev @ 350 NONAME
- _ZN18QDeclarativeEngineD1Ev @ 351 NONAME
- _ZN18QDeclarativeEngineD2Ev @ 352 NONAME
- _ZN18QDeclarativeLoader10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 353 NONAME
- _ZN18QDeclarativeLoader11eventFilterEP7QObjectP6QEvent @ 354 NONAME
- _ZN18QDeclarativeLoader11itemChangedEv @ 355 NONAME
- _ZN18QDeclarativeLoader11qt_metacallEN11QMetaObject4CallEiPPv @ 356 NONAME
- _ZN18QDeclarativeLoader11qt_metacastEPKc @ 357 NONAME
- _ZN18QDeclarativeLoader13setResizeModeENS_10ResizeModeE @ 358 NONAME
- _ZN18QDeclarativeLoader13sourceChangedEv @ 359 NONAME
- _ZN18QDeclarativeLoader13statusChangedEv @ 360 NONAME
- _ZN18QDeclarativeLoader15geometryChangedERK6QRectFS2_ @ 361 NONAME
- _ZN18QDeclarativeLoader15progressChangedEv @ 362 NONAME
- _ZN18QDeclarativeLoader16staticMetaObjectE @ 363 NONAME DATA 16
- _ZN18QDeclarativeLoader17resizeModeChangedEv @ 364 NONAME
- _ZN18QDeclarativeLoader18setSourceComponentEP21QDeclarativeComponent @ 365 NONAME
- _ZN18QDeclarativeLoader19getStaticMetaObjectEv @ 366 NONAME
- _ZN18QDeclarativeLoader9setSourceERK4QUrl @ 367 NONAME
- _ZN18QDeclarativeLoaderC1EP16QDeclarativeItem @ 368 NONAME
- _ZN18QDeclarativeLoaderC2EP16QDeclarativeItem @ 369 NONAME
- _ZN18QDeclarativeLoaderD0Ev @ 370 NONAME
- _ZN18QDeclarativeLoaderD1Ev @ 371 NONAME
- _ZN18QDeclarativeLoaderD2Ev @ 372 NONAME
- _ZN18QMetaMethodBuilder13setAttributesEi @ 373 NONAME
- _ZN18QMetaMethodBuilder13setReturnTypeERK10QByteArray @ 374 NONAME
- _ZN18QMetaMethodBuilder17setParameterNamesERK5QListI10QByteArrayE @ 375 NONAME
- _ZN18QMetaMethodBuilder6setTagERK10QByteArray @ 376 NONAME
- _ZN18QMetaMethodBuilder9setAccessEN11QMetaMethod6AccessE @ 377 NONAME
- _ZN18QMetaObjectBuilder11addPropertyERK10QByteArrayS2_i @ 378 NONAME
- _ZN18QMetaObjectBuilder11addPropertyERK13QMetaProperty @ 379 NONAME
- _ZN18QMetaObjectBuilder11deserializeER11QDataStreamRK4QMapI10QByteArrayPK11QMetaObjectE @ 380 NONAME
- _ZN18QMetaObjectBuilder11indexOfSlotERK10QByteArray @ 381 NONAME
- _ZN18QMetaObjectBuilder12addClassInfoERK10QByteArrayS2_ @ 382 NONAME
- _ZN18QMetaObjectBuilder12removeMethodEi @ 383 NONAME
- _ZN18QMetaObjectBuilder12setClassNameERK10QByteArray @ 384 NONAME
- _ZN18QMetaObjectBuilder13addEnumeratorERK10QByteArray @ 385 NONAME
- _ZN18QMetaObjectBuilder13addEnumeratorERK9QMetaEnum @ 386 NONAME
- _ZN18QMetaObjectBuilder13addMetaObjectEPK11QMetaObject6QFlagsINS_9AddMemberEE @ 387 NONAME
- _ZN18QMetaObjectBuilder13indexOfMethodERK10QByteArray @ 388 NONAME
- _ZN18QMetaObjectBuilder13indexOfSignalERK10QByteArray @ 389 NONAME
- _ZN18QMetaObjectBuilder13setSuperClassEPK11QMetaObject @ 390 NONAME
- _ZN18QMetaObjectBuilder14addConstructorERK10QByteArray @ 391 NONAME
- _ZN18QMetaObjectBuilder14addConstructorERK11QMetaMethod @ 392 NONAME
- _ZN18QMetaObjectBuilder14removePropertyEi @ 393 NONAME
- _ZN18QMetaObjectBuilder15indexOfPropertyERK10QByteArray @ 394 NONAME
- _ZN18QMetaObjectBuilder15removeClassInfoEi @ 395 NONAME
- _ZN18QMetaObjectBuilder16indexOfClassInfoERK10QByteArray @ 396 NONAME
- _ZN18QMetaObjectBuilder16removeEnumeratorEi @ 397 NONAME
- _ZN18QMetaObjectBuilder17indexOfEnumeratorERK10QByteArray @ 398 NONAME
- _ZN18QMetaObjectBuilder17removeConstructorEi @ 399 NONAME
- _ZN18QMetaObjectBuilder18indexOfConstructorERK10QByteArray @ 400 NONAME
- _ZN18QMetaObjectBuilder19fromRelocatableDataEP11QMetaObjectPKS0_RK10QByteArray @ 401 NONAME
- _ZN18QMetaObjectBuilder20addRelatedMetaObjectERKPFRK11QMetaObjectvE @ 402 NONAME
- _ZN18QMetaObjectBuilder23removeRelatedMetaObjectEi @ 403 NONAME
- _ZN18QMetaObjectBuilder25setStaticMetacallFunctionEPFiN11QMetaObject4CallEiPPvE @ 404 NONAME
- _ZN18QMetaObjectBuilder7addSlotERK10QByteArray @ 405 NONAME
- _ZN18QMetaObjectBuilder8setFlagsE6QFlagsINS_14MetaObjectFlagEE @ 406 NONAME
- _ZN18QMetaObjectBuilder9addMethodERK10QByteArray @ 407 NONAME
- _ZN18QMetaObjectBuilder9addMethodERK10QByteArrayS2_ @ 408 NONAME
- _ZN18QMetaObjectBuilder9addMethodERK11QMetaMethod @ 409 NONAME
- _ZN18QMetaObjectBuilder9addSignalERK10QByteArray @ 410 NONAME
- _ZN18QMetaObjectBuilderC1EPK11QMetaObject6QFlagsINS_9AddMemberEE @ 411 NONAME
- _ZN18QMetaObjectBuilderC1Ev @ 412 NONAME
- _ZN18QMetaObjectBuilderC2EPK11QMetaObject6QFlagsINS_9AddMemberEE @ 413 NONAME
- _ZN18QMetaObjectBuilderC2Ev @ 414 NONAME
- _ZN18QMetaObjectBuilderD0Ev @ 415 NONAME
- _ZN18QMetaObjectBuilderD1Ev @ 416 NONAME
- _ZN18QMetaObjectBuilderD2Ev @ 417 NONAME
- _ZN19QDeclarativeAnchors10classBeginEv @ 418 NONAME
- _ZN19QDeclarativeAnchors10resetRightEv @ 419 NONAME
- _ZN19QDeclarativeAnchors10setMarginsEf @ 420 NONAME
- _ZN19QDeclarativeAnchors10topChangedEv @ 421 NONAME
- _ZN19QDeclarativeAnchors11fillChangedEv @ 422 NONAME
- _ZN19QDeclarativeAnchors11leftChangedEv @ 423 NONAME
- _ZN19QDeclarativeAnchors11qt_metacallEN11QMetaObject4CallEiPPv @ 424 NONAME
- _ZN19QDeclarativeAnchors11qt_metacastEPKc @ 425 NONAME
- _ZN19QDeclarativeAnchors11resetBottomEv @ 426 NONAME
- _ZN19QDeclarativeAnchors11setBaselineERK22QDeclarativeAnchorLine @ 427 NONAME
- _ZN19QDeclarativeAnchors11setCenterInEP16QDeclarativeItem @ 428 NONAME
- _ZN19QDeclarativeAnchors12rightChangedEv @ 429 NONAME
- _ZN19QDeclarativeAnchors12setTopMarginEf @ 430 NONAME
- _ZN19QDeclarativeAnchors13bottomChangedEv @ 431 NONAME
- _ZN19QDeclarativeAnchors13resetBaselineEv @ 432 NONAME
- _ZN19QDeclarativeAnchors13resetCenterInEv @ 433 NONAME
- _ZN19QDeclarativeAnchors13setLeftMarginEf @ 434 NONAME
- _ZN19QDeclarativeAnchors14marginsChangedEv @ 435 NONAME
- _ZN19QDeclarativeAnchors14setRightMarginEf @ 436 NONAME
- _ZN19QDeclarativeAnchors15baselineChangedEv @ 437 NONAME
- _ZN19QDeclarativeAnchors15centerInChangedEv @ 438 NONAME
- _ZN19QDeclarativeAnchors15setBottomMarginEf @ 439 NONAME
- _ZN19QDeclarativeAnchors16staticMetaObjectE @ 440 NONAME DATA 16
- _ZN19QDeclarativeAnchors16topMarginChangedEv @ 441 NONAME
- _ZN19QDeclarativeAnchors17componentCompleteEv @ 442 NONAME
- _ZN19QDeclarativeAnchors17leftMarginChangedEv @ 443 NONAME
- _ZN19QDeclarativeAnchors17setBaselineOffsetEf @ 444 NONAME
- _ZN19QDeclarativeAnchors17setVerticalCenterERK22QDeclarativeAnchorLine @ 445 NONAME
- _ZN19QDeclarativeAnchors18rightMarginChangedEv @ 446 NONAME
- _ZN19QDeclarativeAnchors19bottomMarginChangedEv @ 447 NONAME
- _ZN19QDeclarativeAnchors19getStaticMetaObjectEv @ 448 NONAME
- _ZN19QDeclarativeAnchors19resetVerticalCenterEv @ 449 NONAME
- _ZN19QDeclarativeAnchors19setHorizontalCenterERK22QDeclarativeAnchorLine @ 450 NONAME
- _ZN19QDeclarativeAnchors21baselineOffsetChangedEv @ 451 NONAME
- _ZN19QDeclarativeAnchors21resetHorizontalCenterEv @ 452 NONAME
- _ZN19QDeclarativeAnchors21verticalCenterChangedEv @ 453 NONAME
- _ZN19QDeclarativeAnchors23horizontalCenterChangedEv @ 454 NONAME
- _ZN19QDeclarativeAnchors23setVerticalCenterOffsetEf @ 455 NONAME
- _ZN19QDeclarativeAnchors25setHorizontalCenterOffsetEf @ 456 NONAME
- _ZN19QDeclarativeAnchors27verticalCenterOffsetChangedEv @ 457 NONAME
- _ZN19QDeclarativeAnchors29horizontalCenterOffsetChangedEv @ 458 NONAME
- _ZN19QDeclarativeAnchors6setTopERK22QDeclarativeAnchorLine @ 459 NONAME
- _ZN19QDeclarativeAnchors7setFillEP16QDeclarativeItem @ 460 NONAME
- _ZN19QDeclarativeAnchors7setLeftERK22QDeclarativeAnchorLine @ 461 NONAME
- _ZN19QDeclarativeAnchors8resetTopEv @ 462 NONAME
- _ZN19QDeclarativeAnchors8setRightERK22QDeclarativeAnchorLine @ 463 NONAME
- _ZN19QDeclarativeAnchors9resetFillEv @ 464 NONAME
- _ZN19QDeclarativeAnchors9resetLeftEv @ 465 NONAME
- _ZN19QDeclarativeAnchors9setBottomERK22QDeclarativeAnchorLine @ 466 NONAME
- _ZN19QDeclarativeAnchorsC1EP16QDeclarativeItemP7QObject @ 467 NONAME
- _ZN19QDeclarativeAnchorsC1EP7QObject @ 468 NONAME
- _ZN19QDeclarativeAnchorsC2EP16QDeclarativeItemP7QObject @ 469 NONAME
- _ZN19QDeclarativeAnchorsC2EP7QObject @ 470 NONAME
- _ZN19QDeclarativeAnchorsD0Ev @ 471 NONAME
- _ZN19QDeclarativeAnchorsD1Ev @ 472 NONAME
- _ZN19QDeclarativeAnchorsD2Ev @ 473 NONAME
- _ZN19QDeclarativeContext10setBaseUrlERK4QUrl @ 474 NONAME
- _ZN19QDeclarativeContext11qt_metacallEN11QMetaObject4CallEiPPv @ 475 NONAME
- _ZN19QDeclarativeContext11qt_metacastEPKc @ 476 NONAME
- _ZN19QDeclarativeContext11resolvedUrlERK4QUrl @ 477 NONAME
- _ZN19QDeclarativeContext16addDefaultObjectEP7QObject @ 478 NONAME
- _ZN19QDeclarativeContext16staticMetaObjectE @ 479 NONAME DATA 16
- _ZN19QDeclarativeContext18setContextPropertyERK7QStringP7QObject @ 480 NONAME
- _ZN19QDeclarativeContext18setContextPropertyERK7QStringRK8QVariant @ 481 NONAME
- _ZN19QDeclarativeContext19getStaticMetaObjectEv @ 482 NONAME
- _ZN19QDeclarativeContextC1EP18QDeclarativeEngineP7QObject @ 483 NONAME
- _ZN19QDeclarativeContextC1EP18QDeclarativeEngineb @ 484 NONAME
- _ZN19QDeclarativeContextC1EPS_P7QObject @ 485 NONAME
- _ZN19QDeclarativeContextC1EPS_P7QObjectb @ 486 NONAME
- _ZN19QDeclarativeContextC2EP18QDeclarativeEngineP7QObject @ 487 NONAME
- _ZN19QDeclarativeContextC2EP18QDeclarativeEngineb @ 488 NONAME
- _ZN19QDeclarativeContextC2EPS_P7QObject @ 489 NONAME
- _ZN19QDeclarativeContextC2EPS_P7QObjectb @ 490 NONAME
- _ZN19QDeclarativeContextD0Ev @ 491 NONAME
- _ZN19QDeclarativeContextD1Ev @ 492 NONAME
- _ZN19QDeclarativeContextD2Ev @ 493 NONAME
- _ZN19QDeclarativeDomListC1ERKS_ @ 494 NONAME
- _ZN19QDeclarativeDomListC1Ev @ 495 NONAME
- _ZN19QDeclarativeDomListC2ERKS_ @ 496 NONAME
- _ZN19QDeclarativeDomListC2Ev @ 497 NONAME
- _ZN19QDeclarativeDomListD1Ev @ 498 NONAME
- _ZN19QDeclarativeDomListD2Ev @ 499 NONAME
- _ZN19QDeclarativeDomListaSERKS_ @ 500 NONAME
- _ZN19QDeclarativePrivate12registerTypeERKNS_12RegisterTypeE @ 501 NONAME
- _ZN19QDeclarativePrivate12registerTypeERKNS_17RegisterInterfaceE @ 502 NONAME
- _ZN19QDeclarativeWebPage10chooseFileEP9QWebFrameRK7QString @ 503 NONAME
- _ZN19QDeclarativeWebPage11qt_metacallEN11QMetaObject4CallEiPPv @ 504 NONAME
- _ZN19QDeclarativeWebPage11qt_metacastEPKc @ 505 NONAME
- _ZN19QDeclarativeWebPage12createPluginERK7QStringRK4QUrlRK11QStringListS8_ @ 506 NONAME
- _ZN19QDeclarativeWebPage12createWindowEN8QWebPage13WebWindowTypeE @ 507 NONAME
- _ZN19QDeclarativeWebPage15javaScriptAlertEP9QWebFrameRK7QString @ 508 NONAME
- _ZN19QDeclarativeWebPage16javaScriptPromptEP9QWebFrameRK7QStringS4_PS2_ @ 509 NONAME
- _ZN19QDeclarativeWebPage16staticMetaObjectE @ 510 NONAME DATA 16
- _ZN19QDeclarativeWebPage17javaScriptConfirmEP9QWebFrameRK7QString @ 511 NONAME
- _ZN19QDeclarativeWebPage19getStaticMetaObjectEv @ 512 NONAME
- _ZN19QDeclarativeWebPage24javaScriptConsoleMessageERK7QStringiS2_ @ 513 NONAME
- _ZN19QDeclarativeWebPage8viewItemEv @ 514 NONAME
- _ZN19QDeclarativeWebPageC1EP19QDeclarativeWebView @ 515 NONAME
- _ZN19QDeclarativeWebPageC2EP19QDeclarativeWebView @ 516 NONAME
- _ZN19QDeclarativeWebPageD0Ev @ 517 NONAME
- _ZN19QDeclarativeWebPageD1Ev @ 518 NONAME
- _ZN19QDeclarativeWebPageD2Ev @ 519 NONAME
- _ZN19QDeclarativeWebView10loadFailedEv @ 520 NONAME
- _ZN19QDeclarativeWebView10sceneEventEP6QEvent @ 521 NONAME
- _ZN19QDeclarativeWebView10setContentERK10QByteArrayRK7QStringRK4QUrl @ 522 NONAME
- _ZN19QDeclarativeWebView10timerEventEP11QTimerEvent @ 523 NONAME
- _ZN19QDeclarativeWebView10urlChangedEv @ 524 NONAME
- _ZN19QDeclarativeWebView11doubleClickEii @ 525 NONAME
- _ZN19QDeclarativeWebView11htmlChangedEv @ 526 NONAME
- _ZN19QDeclarativeWebView11iconChangedEv @ 527 NONAME
- _ZN19QDeclarativeWebView11loadStartedEv @ 528 NONAME
- _ZN19QDeclarativeWebView11qt_metacallEN11QMetaObject4CallEiPPv @ 529 NONAME
- _ZN19QDeclarativeWebView11qt_metacastEPKc @ 530 NONAME
- _ZN19QDeclarativeWebView12createWindowEN8QWebPage13WebWindowTypeE @ 531 NONAME
- _ZN19QDeclarativeWebView12drawContentsEP8QPainterRK5QRect @ 532 NONAME
- _ZN19QDeclarativeWebView12focusChangedEb @ 533 NONAME
- _ZN19QDeclarativeWebView12loadFinishedEv @ 534 NONAME
- _ZN19QDeclarativeWebView12titleChangedERK7QString @ 535 NONAME
- _ZN19QDeclarativeWebView13doLoadStartedEv @ 536 NONAME
- _ZN19QDeclarativeWebView13heuristicZoomEiif @ 537 NONAME
- _ZN19QDeclarativeWebView13initialLayoutEv @ 538 NONAME
- _ZN19QDeclarativeWebView13keyPressEventEP9QKeyEvent @ 539 NONAME
- _ZN19QDeclarativeWebView13setStatusTextERK7QString @ 540 NONAME
- _ZN19QDeclarativeWebView13setZoomFactorEf @ 541 NONAME
- _ZN19QDeclarativeWebView13statusChangedENS_6StatusE @ 542 NONAME
- _ZN19QDeclarativeWebView14doLoadFinishedEb @ 543 NONAME
- _ZN19QDeclarativeWebView14doLoadProgressEi @ 544 NONAME
- _ZN19QDeclarativeWebView14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 545 NONAME
- _ZN19QDeclarativeWebView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 546 NONAME
- _ZN19QDeclarativeWebView14pageUrlChangedEv @ 547 NONAME
- _ZN19QDeclarativeWebView15expandToWebPageEv @ 548 NONAME
- _ZN19QDeclarativeWebView15geometryChangedERK6QRectFS2_ @ 549 NONAME
- _ZN19QDeclarativeWebView15keyReleaseEventEP9QKeyEvent @ 550 NONAME
- _ZN19QDeclarativeWebView15mousePressEventEP24QGraphicsSceneMouseEvent @ 551 NONAME
- _ZN19QDeclarativeWebView15progressChangedEv @ 552 NONAME
- _ZN19QDeclarativeWebView16setPressGrabTimeEi @ 553 NONAME
- _ZN19QDeclarativeWebView16staticMetaObjectE @ 554 NONAME DATA 16
- _ZN19QDeclarativeWebView17componentCompleteEv @ 555 NONAME
- _ZN19QDeclarativeWebView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 556 NONAME
- _ZN19QDeclarativeWebView17setPreferredWidthEi @ 557 NONAME
- _ZN19QDeclarativeWebView17statusTextChangedEv @ 558 NONAME
- _ZN19QDeclarativeWebView17zoomFactorChangedEv @ 559 NONAME
- _ZN19QDeclarativeWebView18evaluateJavaScriptERK7QString @ 560 NONAME
- _ZN19QDeclarativeWebView18setNewWindowParentEP16QDeclarativeItem @ 561 NONAME
- _ZN19QDeclarativeWebView18setPreferredHeightEi @ 562 NONAME
- _ZN19QDeclarativeWebView19getStaticMetaObjectEv @ 563 NONAME
- _ZN19QDeclarativeWebView19setRenderingEnabledEb @ 564 NONAME
- _ZN19QDeclarativeWebView19windowObjectClearedEv @ 565 NONAME
- _ZN19QDeclarativeWebView20pressGrabTimeChangedEv @ 566 NONAME
- _ZN19QDeclarativeWebView21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 567 NONAME
- _ZN19QDeclarativeWebView21preferredWidthChangedEv @ 568 NONAME
- _ZN19QDeclarativeWebView21qmlAttachedPropertiesEP7QObject @ 569 NONAME
- _ZN19QDeclarativeWebView21setNewWindowComponentEP21QDeclarativeComponent @ 570 NONAME
- _ZN19QDeclarativeWebView22newWindowParentChangedEv @ 571 NONAME
- _ZN19QDeclarativeWebView22preferredHeightChangedEv @ 572 NONAME
- _ZN19QDeclarativeWebView23javaScriptWindowObjectsEv @ 573 NONAME
- _ZN19QDeclarativeWebView23noteContentsSizeChangedERK5QSize @ 574 NONAME
- _ZN19QDeclarativeWebView23renderingEnabledChangedEv @ 575 NONAME
- _ZN19QDeclarativeWebView25newWindowComponentChangedEv @ 576 NONAME
- _ZN19QDeclarativeWebView27sceneMouseEventToMouseEventEP24QGraphicsSceneMouseEvent @ 577 NONAME
- _ZN19QDeclarativeWebView31sceneHoverMoveEventToMouseEventEP24QGraphicsSceneHoverEvent @ 578 NONAME
- _ZN19QDeclarativeWebView4initEv @ 579 NONAME
- _ZN19QDeclarativeWebView4loadERK15QNetworkRequestN21QNetworkAccessManager9OperationERK10QByteArray @ 580 NONAME
- _ZN19QDeclarativeWebView5alertERK7QString @ 581 NONAME
- _ZN19QDeclarativeWebView6setUrlERK4QUrl @ 582 NONAME
- _ZN19QDeclarativeWebView6zoomToEfii @ 583 NONAME
- _ZN19QDeclarativeWebView7setHtmlERK7QStringRK4QUrl @ 584 NONAME
- _ZN19QDeclarativeWebView7setPageEP8QWebPage @ 585 NONAME
- _ZN19QDeclarativeWebView9paintPageERK5QRect @ 586 NONAME
- _ZN19QDeclarativeWebViewC1EP16QDeclarativeItem @ 587 NONAME
- _ZN19QDeclarativeWebViewC2EP16QDeclarativeItem @ 588 NONAME
- _ZN19QDeclarativeWebViewD0Ev @ 589 NONAME
- _ZN19QDeclarativeWebViewD1Ev @ 590 NONAME
- _ZN19QDeclarativeWebViewD2Ev @ 591 NONAME
- _ZN19QListModelInterface10itemsMovedEiii @ 592 NONAME
- _ZN19QListModelInterface11qt_metacallEN11QMetaObject4CallEiPPv @ 593 NONAME
- _ZN19QListModelInterface11qt_metacastEPKc @ 594 NONAME
- _ZN19QListModelInterface12itemsChangedEiiRK5QListIiE @ 595 NONAME
- _ZN19QListModelInterface12itemsRemovedEii @ 596 NONAME
- _ZN19QListModelInterface13itemsInsertedEii @ 597 NONAME
- _ZN19QListModelInterface16staticMetaObjectE @ 598 NONAME DATA 16
- _ZN19QListModelInterface19getStaticMetaObjectEv @ 599 NONAME
- _ZN20QDeclarativeBehavior10setEnabledEb @ 600 NONAME
- _ZN20QDeclarativeBehavior11qt_metacallEN11QMetaObject4CallEiPPv @ 601 NONAME
- _ZN20QDeclarativeBehavior11qt_metacastEPKc @ 602 NONAME
- _ZN20QDeclarativeBehavior12setAnimationEP29QDeclarativeAbstractAnimation @ 603 NONAME
- _ZN20QDeclarativeBehavior14enabledChangedEv @ 604 NONAME
- _ZN20QDeclarativeBehavior16staticMetaObjectE @ 605 NONAME DATA 16
- _ZN20QDeclarativeBehavior19getStaticMetaObjectEv @ 606 NONAME
- _ZN20QDeclarativeBehavior5writeERK8QVariant @ 607 NONAME
- _ZN20QDeclarativeBehavior9animationEv @ 608 NONAME
- _ZN20QDeclarativeBehavior9setTargetERK20QDeclarativeProperty @ 609 NONAME
- _ZN20QDeclarativeBehaviorC1EP7QObject @ 610 NONAME
- _ZN20QDeclarativeBehaviorC2EP7QObject @ 611 NONAME
- _ZN20QDeclarativeBehaviorD0Ev @ 612 NONAME
- _ZN20QDeclarativeBehaviorD1Ev @ 613 NONAME
- _ZN20QDeclarativeBehaviorD2Ev @ 614 NONAME
- _ZN20QDeclarativeCompiler11buildObjectEPN18QDeclarativeParser6ObjectERKNS_14BindingContextE @ 615 NONAME
- _ZN20QDeclarativeCompiler11buildScriptEPN18QDeclarativeParser6ObjectES2_ @ 616 NONAME
- _ZN20QDeclarativeCompiler11buildSignalEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 617 NONAME
- _ZN20QDeclarativeCompiler11compileTreeEPN18QDeclarativeParser6ObjectE @ 618 NONAME
- _ZN20QDeclarativeCompiler12buildBindingEPN18QDeclarativeParser5ValueEPNS0_8PropertyERKNS_14BindingContextE @ 619 NONAME
- _ZN20QDeclarativeCompiler12compileAliasER18QMetaObjectBuilderR10QByteArrayPN18QDeclarativeParser6ObjectERKNS5_15DynamicPropertyE @ 620 NONAME
- _ZN20QDeclarativeCompiler12genComponentEPN18QDeclarativeParser6ObjectE @ 621 NONAME
- _ZN20QDeclarativeCompiler13buildPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 622 NONAME
- _ZN20QDeclarativeCompiler13genObjectBodyEPN18QDeclarativeParser6ObjectE @ 623 NONAME
- _ZN20QDeclarativeCompiler14buildComponentEPN18QDeclarativeParser6ObjectERKNS_14BindingContextE @ 624 NONAME
- _ZN20QDeclarativeCompiler14buildSubObjectEPN18QDeclarativeParser6ObjectERKNS_14BindingContextE @ 625 NONAME
- _ZN20QDeclarativeCompiler14componentStateEPN18QDeclarativeParser6ObjectE @ 626 NONAME
- _ZN20QDeclarativeCompiler15buildIdPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectE @ 627 NONAME
- _ZN20QDeclarativeCompiler15genContextCacheEv @ 628 NONAME
- _ZN20QDeclarativeCompiler15genListPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectE @ 629 NONAME
- _ZN20QDeclarativeCompiler15genPropertyDataEPN18QDeclarativeParser8PropertyE @ 630 NONAME
- _ZN20QDeclarativeCompiler16buildDynamicMetaEPN18QDeclarativeParser6ObjectENS_15DynamicMetaModeE @ 631 NONAME
- _ZN20QDeclarativeCompiler16checkDynamicMetaEPN18QDeclarativeParser6ObjectE @ 632 NONAME
- _ZN20QDeclarativeCompiler16componentTypeRefEv @ 633 NONAME
- _ZN20QDeclarativeCompiler16findSignalByNameEPK11QMetaObjectRK10QByteArray @ 634 NONAME
- _ZN20QDeclarativeCompiler16genValuePropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectE @ 635 NONAME
- _ZN20QDeclarativeCompiler16genValueTypeDataEPN18QDeclarativeParser8PropertyES2_ @ 636 NONAME
- _ZN20QDeclarativeCompiler17buildListPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 637 NONAME
- _ZN20QDeclarativeCompiler17doesPropertyExistEPN18QDeclarativeParser8PropertyEPNS0_6ObjectE @ 638 NONAME
- _ZN20QDeclarativeCompiler18deferredPropertiesEPN18QDeclarativeParser6ObjectE @ 639 NONAME
- _ZN20QDeclarativeCompiler18saveComponentStateEv @ 640 NONAME
- _ZN20QDeclarativeCompiler19addBindingReferenceERKNS_16BindingReferenceE @ 641 NONAME
- _ZN20QDeclarativeCompiler20buildGroupedPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 642 NONAME
- _ZN20QDeclarativeCompiler20genBindingAssignmentEPN18QDeclarativeParser5ValueEPNS0_8PropertyEPNS0_6ObjectES4_ @ 643 NONAME
- _ZN20QDeclarativeCompiler20genLiteralAssignmentERK13QMetaPropertyPN18QDeclarativeParser5ValueE @ 644 NONAME
- _ZN20QDeclarativeCompiler20isSignalPropertyNameERK10QByteArray @ 645 NONAME
- _ZN20QDeclarativeCompiler21buildAttachedPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 646 NONAME
- _ZN20QDeclarativeCompiler21genPropertyAssignmentEPN18QDeclarativeParser8PropertyEPNS0_6ObjectES2_ @ 647 NONAME
- _ZN20QDeclarativeCompiler21testLiteralAssignmentERK13QMetaPropertyPN18QDeclarativeParser5ValueE @ 648 NONAME
- _ZN20QDeclarativeCompiler22buildComponentFromRootEPN18QDeclarativeParser6ObjectERKNS_14BindingContextE @ 649 NONAME
- _ZN20QDeclarativeCompiler22buildValueTypePropertyEP7QObjectPN18QDeclarativeParser6ObjectES4_RKNS_14BindingContextE @ 650 NONAME
- _ZN20QDeclarativeCompiler22completeComponentBuildEv @ 651 NONAME
- _ZN20QDeclarativeCompiler22isAttachedPropertyNameERK10QByteArray @ 652 NONAME
- _ZN20QDeclarativeCompiler23buildPropertyAssignmentEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 653 NONAME
- _ZN20QDeclarativeCompiler24buildPropertyInNamespaceEPN25QDeclarativeEnginePrivate17ImportedNamespaceEPN18QDeclarativeParser8PropertyEPNS3_6ObjectERKNS_14BindingContextE @ 654 NONAME
- _ZN20QDeclarativeCompiler25buildScriptStringPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 655 NONAME
- _ZN20QDeclarativeCompiler26mergeDynamicMetaPropertiesEPN18QDeclarativeParser6ObjectE @ 656 NONAME
- _ZN20QDeclarativeCompiler27testQualifiedEnumAssignmentERK13QMetaPropertyPN18QDeclarativeParser6ObjectEPNS3_5ValueEPb @ 657 NONAME
- _ZN20QDeclarativeCompiler29buildPropertyObjectAssignmentEPN18QDeclarativeParser8PropertyEPNS0_6ObjectEPNS0_5ValueERKNS_14BindingContextE @ 658 NONAME
- _ZN20QDeclarativeCompiler30buildPropertyLiteralAssignmentEPN18QDeclarativeParser8PropertyEPNS0_6ObjectEPNS0_5ValueERKNS_14BindingContextE @ 659 NONAME
- _ZN20QDeclarativeCompiler5addIdERK7QStringPN18QDeclarativeParser6ObjectE @ 660 NONAME
- _ZN20QDeclarativeCompiler5resetEP24QDeclarativeCompiledData @ 661 NONAME
- _ZN20QDeclarativeCompiler7compileEP18QDeclarativeEngineP29QDeclarativeCompositeTypeDataP24QDeclarativeCompiledData @ 662 NONAME
- _ZN20QDeclarativeCompiler9canCoerceEiPN18QDeclarativeParser6ObjectE @ 663 NONAME
- _ZN20QDeclarativeCompiler9canCoerceEii @ 664 NONAME
- _ZN20QDeclarativeCompiler9dumpStatsEv @ 665 NONAME
- _ZN20QDeclarativeCompiler9genObjectEPN18QDeclarativeParser6ObjectE @ 666 NONAME
- _ZN20QDeclarativeCompiler9isValidIdERK7QString @ 667 NONAME
- _ZN20QDeclarativeCompiler9toQmlTypeEPN18QDeclarativeParser6ObjectE @ 668 NONAME
- _ZN20QDeclarativeCompilerC1Ev @ 669 NONAME
- _ZN20QDeclarativeCompilerC2Ev @ 670 NONAME
- _ZN20QDeclarativeDomValueC1ERKS_ @ 671 NONAME
- _ZN20QDeclarativeDomValueC1Ev @ 672 NONAME
- _ZN20QDeclarativeDomValueC2ERKS_ @ 673 NONAME
- _ZN20QDeclarativeDomValueC2Ev @ 674 NONAME
- _ZN20QDeclarativeDomValueD1Ev @ 675 NONAME
- _ZN20QDeclarativeDomValueD2Ev @ 676 NONAME
- _ZN20QDeclarativeDomValueaSERKS_ @ 677 NONAME
- _ZN20QDeclarativeFlipable11qt_metacallEN11QMetaObject4CallEiPPv @ 678 NONAME
- _ZN20QDeclarativeFlipable11qt_metacastEPKc @ 679 NONAME
- _ZN20QDeclarativeFlipable11sideChangedEv @ 680 NONAME
- _ZN20QDeclarativeFlipable16staticMetaObjectE @ 681 NONAME DATA 16
- _ZN20QDeclarativeFlipable19getStaticMetaObjectEv @ 682 NONAME
- _ZN20QDeclarativeFlipable4backEv @ 683 NONAME
- _ZN20QDeclarativeFlipable5frontEv @ 684 NONAME
- _ZN20QDeclarativeFlipable7setBackEP16QDeclarativeItem @ 685 NONAME
- _ZN20QDeclarativeFlipable8setFrontEP16QDeclarativeItem @ 686 NONAME
- _ZN20QDeclarativeFlipableC1EP16QDeclarativeItem @ 687 NONAME
- _ZN20QDeclarativeFlipableC2EP16QDeclarativeItem @ 688 NONAME
- _ZN20QDeclarativeFlipableD0Ev @ 689 NONAME
- _ZN20QDeclarativeFlipableD1Ev @ 690 NONAME
- _ZN20QDeclarativeFlipableD2Ev @ 691 NONAME
- _ZN20QDeclarativeGradient11qt_metacallEN11QMetaObject4CallEiPPv @ 692 NONAME
- _ZN20QDeclarativeGradient11qt_metacastEPKc @ 693 NONAME
- _ZN20QDeclarativeGradient16staticMetaObjectE @ 694 NONAME DATA 16
- _ZN20QDeclarativeGradient19getStaticMetaObjectEv @ 695 NONAME
- _ZN20QDeclarativeGradient7updatedEv @ 696 NONAME
- _ZN20QDeclarativeGradient8doUpdateEv @ 697 NONAME
- _ZN20QDeclarativeGridView10itemsMovedEiii @ 698 NONAME
- _ZN20QDeclarativeGridView10modelResetEv @ 699 NONAME
- _ZN20QDeclarativeGridView10sizeChangeEv @ 700 NONAME
- _ZN20QDeclarativeGridView11createdItemEiP16QDeclarativeItem @ 701 NONAME
- _ZN20QDeclarativeGridView11currentItemEv @ 702 NONAME
- _ZN20QDeclarativeGridView11qt_metacallEN11QMetaObject4CallEiPPv @ 703 NONAME
- _ZN20QDeclarativeGridView11qt_metacastEPKc @ 704 NONAME
- _ZN20QDeclarativeGridView11setDelegateEP21QDeclarativeComponent @ 705 NONAME
- _ZN20QDeclarativeGridView12countChangedEv @ 706 NONAME
- _ZN20QDeclarativeGridView12itemsRemovedEii @ 707 NONAME
- _ZN20QDeclarativeGridView12setCellWidthEi @ 708 NONAME
- _ZN20QDeclarativeGridView12setHighlightEP21QDeclarativeComponent @ 709 NONAME
- _ZN20QDeclarativeGridView13highlightItemEv @ 710 NONAME
- _ZN20QDeclarativeGridView13itemsInsertedEii @ 711 NONAME
- _ZN20QDeclarativeGridView13keyPressEventEP9QKeyEvent @ 712 NONAME
- _ZN20QDeclarativeGridView13setCellHeightEi @ 713 NONAME
- _ZN20QDeclarativeGridView13viewportMovedEv @ 714 NONAME
- _ZN20QDeclarativeGridView14destroyRemovedEv @ 715 NONAME
- _ZN20QDeclarativeGridView14destroyingItemEP16QDeclarativeItem @ 716 NONAME
- _ZN20QDeclarativeGridView14setCacheBufferEi @ 717 NONAME
- _ZN20QDeclarativeGridView14setWrapEnabledEb @ 718 NONAME
- _ZN20QDeclarativeGridView15setCurrentIndexEi @ 719 NONAME
- _ZN20QDeclarativeGridView16cellWidthChangedEv @ 720 NONAME
- _ZN20QDeclarativeGridView16highlightChangedEv @ 721 NONAME
- _ZN20QDeclarativeGridView16staticMetaObjectE @ 722 NONAME DATA 16
- _ZN20QDeclarativeGridView17cellHeightChangedEv @ 723 NONAME
- _ZN20QDeclarativeGridView17componentCompleteEv @ 724 NONAME
- _ZN20QDeclarativeGridView18moveCurrentIndexUpEv @ 725 NONAME
- _ZN20QDeclarativeGridView19currentIndexChangedEv @ 726 NONAME
- _ZN20QDeclarativeGridView19getStaticMetaObjectEv @ 727 NONAME
- _ZN20QDeclarativeGridView19positionViewAtIndexEi @ 728 NONAME
- _ZN20QDeclarativeGridView20moveCurrentIndexDownEv @ 729 NONAME
- _ZN20QDeclarativeGridView20moveCurrentIndexLeftEv @ 730 NONAME
- _ZN20QDeclarativeGridView21moveCurrentIndexRightEv @ 731 NONAME
- _ZN20QDeclarativeGridView21qmlAttachedPropertiesEP7QObject @ 732 NONAME
- _ZN20QDeclarativeGridView22trackedPositionChangedEv @ 733 NONAME
- _ZN20QDeclarativeGridView30setHighlightFollowsCurrentItemEb @ 734 NONAME
- _ZN20QDeclarativeGridView6layoutEv @ 735 NONAME
- _ZN20QDeclarativeGridView6refillEv @ 736 NONAME
- _ZN20QDeclarativeGridView7setFlowENS_4FlowE @ 737 NONAME
- _ZN20QDeclarativeGridView8setModelERK8QVariant @ 738 NONAME
- _ZN20QDeclarativeGridViewC1EP16QDeclarativeItem @ 739 NONAME
- _ZN20QDeclarativeGridViewC2EP16QDeclarativeItem @ 740 NONAME
- _ZN20QDeclarativeGridViewD0Ev @ 741 NONAME
- _ZN20QDeclarativeGridViewD1Ev @ 742 NONAME
- _ZN20QDeclarativeGridViewD2Ev @ 743 NONAME
- _ZN20QDeclarativeListView10itemsMovedEiii @ 744 NONAME
- _ZN20QDeclarativeListView10modelResetEv @ 745 NONAME
- _ZN20QDeclarativeListView10setSpacingEf @ 746 NONAME
- _ZN20QDeclarativeListView11animStoppedEv @ 747 NONAME
- _ZN20QDeclarativeListView11createdItemEiP16QDeclarativeItem @ 748 NONAME
- _ZN20QDeclarativeListView11currentItemEv @ 749 NONAME
- _ZN20QDeclarativeListView11qt_metacallEN11QMetaObject4CallEiPPv @ 750 NONAME
- _ZN20QDeclarativeListView11qt_metacastEPKc @ 751 NONAME
- _ZN20QDeclarativeListView11setDelegateEP21QDeclarativeComponent @ 752 NONAME
- _ZN20QDeclarativeListView11setSnapModeENS_8SnapModeE @ 753 NONAME
- _ZN20QDeclarativeListView12countChangedEv @ 754 NONAME
- _ZN20QDeclarativeListView12itemsRemovedEii @ 755 NONAME
- _ZN20QDeclarativeListView12setHighlightEP21QDeclarativeComponent @ 756 NONAME
- _ZN20QDeclarativeListView13highlightItemEv @ 757 NONAME
- _ZN20QDeclarativeListView13itemsInsertedEii @ 758 NONAME
- _ZN20QDeclarativeListView13keyPressEventEP9QKeyEvent @ 759 NONAME
- _ZN20QDeclarativeListView13viewportMovedEv @ 760 NONAME
- _ZN20QDeclarativeListView14destroyRemovedEv @ 761 NONAME
- _ZN20QDeclarativeListView14destroyingItemEP16QDeclarativeItem @ 762 NONAME
- _ZN20QDeclarativeListView14setCacheBufferEi @ 763 NONAME
- _ZN20QDeclarativeListView14setOrientationENS_11OrientationE @ 764 NONAME
- _ZN20QDeclarativeListView14setWrapEnabledEb @ 765 NONAME
- _ZN20QDeclarativeListView14spacingChangedEv @ 766 NONAME
- _ZN20QDeclarativeListView15sectionCriteriaEv @ 767 NONAME
- _ZN20QDeclarativeListView15setCurrentIndexEi @ 768 NONAME
- _ZN20QDeclarativeListView16highlightChangedEv @ 769 NONAME
- _ZN20QDeclarativeListView16staticMetaObjectE @ 770 NONAME DATA 16
- _ZN20QDeclarativeListView17componentCompleteEv @ 771 NONAME
- _ZN20QDeclarativeListView18orientationChangedEv @ 772 NONAME
- _ZN20QDeclarativeListView19currentIndexChangedEv @ 773 NONAME
- _ZN20QDeclarativeListView19getStaticMetaObjectEv @ 774 NONAME
- _ZN20QDeclarativeListView19positionViewAtIndexEi @ 775 NONAME
- _ZN20QDeclarativeListView21currentSectionChangedEv @ 776 NONAME
- _ZN20QDeclarativeListView21decrementCurrentIndexEv @ 777 NONAME
- _ZN20QDeclarativeListView21incrementCurrentIndexEv @ 778 NONAME
- _ZN20QDeclarativeListView21qmlAttachedPropertiesEP7QObject @ 779 NONAME
- _ZN20QDeclarativeListView21setHighlightMoveSpeedEf @ 780 NONAME
- _ZN20QDeclarativeListView21setHighlightRangeModeENS_18HighlightRangeModeE @ 781 NONAME
- _ZN20QDeclarativeListView22trackedPositionChangedEv @ 782 NONAME
- _ZN20QDeclarativeListView23setHighlightResizeSpeedEf @ 783 NONAME
- _ZN20QDeclarativeListView24setPreferredHighlightEndEf @ 784 NONAME
- _ZN20QDeclarativeListView25highlightMoveSpeedChangedEv @ 785 NONAME
- _ZN20QDeclarativeListView26setPreferredHighlightBeginEf @ 786 NONAME
- _ZN20QDeclarativeListView27highlightResizeSpeedChangedEv @ 787 NONAME
- _ZN20QDeclarativeListView30setHighlightFollowsCurrentItemEb @ 788 NONAME
- _ZN20QDeclarativeListView6refillEv @ 789 NONAME
- _ZN20QDeclarativeListView8setModelERK8QVariant @ 790 NONAME
- _ZN20QDeclarativeListView9setFooterEP21QDeclarativeComponent @ 791 NONAME
- _ZN20QDeclarativeListView9setHeaderEP21QDeclarativeComponent @ 792 NONAME
- _ZN20QDeclarativeListViewC1EP16QDeclarativeItem @ 793 NONAME
- _ZN20QDeclarativeListViewC2EP16QDeclarativeItem @ 794 NONAME
- _ZN20QDeclarativeListViewD0Ev @ 795 NONAME
- _ZN20QDeclarativeListViewD1Ev @ 796 NONAME
- _ZN20QDeclarativeListViewD2Ev @ 797 NONAME
- _ZN20QDeclarativeMetaType11isInterfaceEi @ 798 NONAME
- _ZN20QDeclarativeMetaType12interfaceIIdEi @ 799 NONAME
- _ZN20QDeclarativeMetaType12qmlTypeNamesEv @ 800 NONAME
- _ZN20QDeclarativeMetaType12typeCategoryEi @ 801 NONAME
- _ZN20QDeclarativeMetaType13defaultMethodEP7QObject @ 802 NONAME
- _ZN20QDeclarativeMetaType13defaultMethodEPK11QMetaObject @ 803 NONAME
- _ZN20QDeclarativeMetaType15defaultPropertyEP7QObject @ 804 NONAME
- _ZN20QDeclarativeMetaType15defaultPropertyEPK11QMetaObject @ 805 NONAME
- _ZN20QDeclarativeMetaType21customStringConverterEi @ 806 NONAME
- _ZN20QDeclarativeMetaType24attachedPropertiesFuncIdEPK11QMetaObject @ 807 NONAME
- _ZN20QDeclarativeMetaType26attachedPropertiesFuncByIdEi @ 808 NONAME
- _ZN20QDeclarativeMetaType29registerCustomStringConverterEiPF8QVariantRK7QStringE @ 809 NONAME
- _ZN20QDeclarativeMetaType4copyEiPvPKv @ 810 NONAME
- _ZN20QDeclarativeMetaType6isListEi @ 811 NONAME
- _ZN20QDeclarativeMetaType7qmlTypeEPK11QMetaObject @ 812 NONAME
- _ZN20QDeclarativeMetaType7qmlTypeERK10QByteArrayii @ 813 NONAME
- _ZN20QDeclarativeMetaType7qmlTypeEi @ 814 NONAME
- _ZN20QDeclarativeMetaType8listTypeEi @ 815 NONAME
- _ZN20QDeclarativeMetaType8qmlTypesEv @ 816 NONAME
- _ZN20QDeclarativeMetaType9isQObjectEi @ 817 NONAME
- _ZN20QDeclarativeMetaType9toQObjectERK8QVariantPb @ 818 NONAME
- _ZN20QDeclarativePathLine11qt_metacallEN11QMetaObject4CallEiPPv @ 819 NONAME
- _ZN20QDeclarativePathLine11qt_metacastEPKc @ 820 NONAME
- _ZN20QDeclarativePathLine16staticMetaObjectE @ 821 NONAME DATA 16
- _ZN20QDeclarativePathLine19getStaticMetaObjectEv @ 822 NONAME
- _ZN20QDeclarativePathLine9addToPathER12QPainterPath @ 823 NONAME
- _ZN20QDeclarativePathQuad11qt_metacallEN11QMetaObject4CallEiPPv @ 824 NONAME
- _ZN20QDeclarativePathQuad11qt_metacastEPKc @ 825 NONAME
- _ZN20QDeclarativePathQuad11setControlXEf @ 826 NONAME
- _ZN20QDeclarativePathQuad11setControlYEf @ 827 NONAME
- _ZN20QDeclarativePathQuad16staticMetaObjectE @ 828 NONAME DATA 16
- _ZN20QDeclarativePathQuad19getStaticMetaObjectEv @ 829 NONAME
- _ZN20QDeclarativePathQuad9addToPathER12QPainterPath @ 830 NONAME
- _ZN20QDeclarativePathView10modelResetEv @ 831 NONAME
- _ZN20QDeclarativePathView11createdItemEiP16QDeclarativeItem @ 832 NONAME
- _ZN20QDeclarativePathView11qt_metacallEN11QMetaObject4CallEiPPv @ 833 NONAME
- _ZN20QDeclarativePathView11qt_metacastEPKc @ 834 NONAME
- _ZN20QDeclarativePathView11setDelegateEP21QDeclarativeComponent @ 835 NONAME
- _ZN20QDeclarativePathView12itemsRemovedEii @ 836 NONAME
- _ZN20QDeclarativePathView13itemsInsertedEii @ 837 NONAME
- _ZN20QDeclarativePathView13offsetChangedEv @ 838 NONAME
- _ZN20QDeclarativePathView13setDragMarginEf @ 839 NONAME
- _ZN20QDeclarativePathView14destroyingItemEP16QDeclarativeItem @ 840 NONAME
- _ZN20QDeclarativePathView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 841 NONAME
- _ZN20QDeclarativePathView14sendMouseEventEP24QGraphicsSceneMouseEvent @ 842 NONAME
- _ZN20QDeclarativePathView15mousePressEventEP24QGraphicsSceneMouseEvent @ 843 NONAME
- _ZN20QDeclarativePathView15setCurrentIndexEi @ 844 NONAME
- _ZN20QDeclarativePathView15setSnapPositionEf @ 845 NONAME
- _ZN20QDeclarativePathView16sceneEventFilterEP13QGraphicsItemP6QEvent @ 846 NONAME
- _ZN20QDeclarativePathView16setPathItemCountEi @ 847 NONAME
- _ZN20QDeclarativePathView16staticMetaObjectE @ 848 NONAME DATA 16
- _ZN20QDeclarativePathView17componentCompleteEv @ 849 NONAME
- _ZN20QDeclarativePathView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 850 NONAME
- _ZN20QDeclarativePathView18attachedPropertiesE @ 851 NONAME DATA 4
- _ZN20QDeclarativePathView19currentIndexChangedEv @ 852 NONAME
- _ZN20QDeclarativePathView19getStaticMetaObjectEv @ 853 NONAME
- _ZN20QDeclarativePathView21qmlAttachedPropertiesEP7QObject @ 854 NONAME
- _ZN20QDeclarativePathView6refillEv @ 855 NONAME
- _ZN20QDeclarativePathView6tickedEv @ 856 NONAME
- _ZN20QDeclarativePathView7setPathEP16QDeclarativePath @ 857 NONAME
- _ZN20QDeclarativePathView8setModelERK8QVariant @ 858 NONAME
- _ZN20QDeclarativePathView9setOffsetEf @ 859 NONAME
- _ZN20QDeclarativePathViewC1EP16QDeclarativeItem @ 860 NONAME
- _ZN20QDeclarativePathViewC2EP16QDeclarativeItem @ 861 NONAME
- _ZN20QDeclarativePathViewD0Ev @ 862 NONAME
- _ZN20QDeclarativePathViewD1Ev @ 863 NONAME
- _ZN20QDeclarativePathViewD2Ev @ 864 NONAME
- _ZN20QDeclarativeProperty4readEP7QObjectRK7QString @ 865 NONAME
- _ZN20QDeclarativeProperty4readEP7QObjectRK7QStringP18QDeclarativeEngine @ 866 NONAME
- _ZN20QDeclarativeProperty4readEP7QObjectRK7QStringP19QDeclarativeContext @ 867 NONAME
- _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariant @ 868 NONAME
- _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariantP18QDeclarativeEngine @ 869 NONAME
- _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariantP19QDeclarativeContext @ 870 NONAME
- _ZN20QDeclarativePropertyC1EP7QObject @ 871 NONAME
- _ZN20QDeclarativePropertyC1EP7QObjectP18QDeclarativeEngine @ 872 NONAME
- _ZN20QDeclarativePropertyC1EP7QObjectP19QDeclarativeContext @ 873 NONAME
- _ZN20QDeclarativePropertyC1EP7QObjectRK7QString @ 874 NONAME
- _ZN20QDeclarativePropertyC1EP7QObjectRK7QStringP18QDeclarativeEngine @ 875 NONAME
- _ZN20QDeclarativePropertyC1EP7QObjectRK7QStringP19QDeclarativeContext @ 876 NONAME
- _ZN20QDeclarativePropertyC1ERKS_ @ 877 NONAME
- _ZN20QDeclarativePropertyC1Ev @ 878 NONAME
- _ZN20QDeclarativePropertyC2EP7QObject @ 879 NONAME
- _ZN20QDeclarativePropertyC2EP7QObjectP18QDeclarativeEngine @ 880 NONAME
- _ZN20QDeclarativePropertyC2EP7QObjectP19QDeclarativeContext @ 881 NONAME
- _ZN20QDeclarativePropertyC2EP7QObjectRK7QString @ 882 NONAME
- _ZN20QDeclarativePropertyC2EP7QObjectRK7QStringP18QDeclarativeEngine @ 883 NONAME
- _ZN20QDeclarativePropertyC2EP7QObjectRK7QStringP19QDeclarativeContext @ 884 NONAME
- _ZN20QDeclarativePropertyC2ERKS_ @ 885 NONAME
- _ZN20QDeclarativePropertyC2Ev @ 886 NONAME
- _ZN20QDeclarativePropertyD1Ev @ 887 NONAME
- _ZN20QDeclarativePropertyD2Ev @ 888 NONAME
- _ZN20QDeclarativePropertyaSERKS_ @ 889 NONAME
- _ZN20QDeclarativeRepeater10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 890 NONAME
- _ZN20QDeclarativeRepeater10itemsMovedEiii @ 891 NONAME
- _ZN20QDeclarativeRepeater10modelResetEv @ 892 NONAME
- _ZN20QDeclarativeRepeater10regenerateEv @ 893 NONAME
- _ZN20QDeclarativeRepeater11qt_metacallEN11QMetaObject4CallEiPPv @ 894 NONAME
- _ZN20QDeclarativeRepeater11qt_metacastEPKc @ 895 NONAME
- _ZN20QDeclarativeRepeater11setDelegateEP21QDeclarativeComponent @ 896 NONAME
- _ZN20QDeclarativeRepeater12countChangedEv @ 897 NONAME
- _ZN20QDeclarativeRepeater12itemsRemovedEii @ 898 NONAME
- _ZN20QDeclarativeRepeater12modelChangedEv @ 899 NONAME
- _ZN20QDeclarativeRepeater13itemsInsertedEii @ 900 NONAME
- _ZN20QDeclarativeRepeater15delegateChangedEv @ 901 NONAME
- _ZN20QDeclarativeRepeater16staticMetaObjectE @ 902 NONAME DATA 16
- _ZN20QDeclarativeRepeater17componentCompleteEv @ 903 NONAME
- _ZN20QDeclarativeRepeater19getStaticMetaObjectEv @ 904 NONAME
- _ZN20QDeclarativeRepeater5clearEv @ 905 NONAME
- _ZN20QDeclarativeRepeater8setModelERK8QVariant @ 906 NONAME
- _ZN20QDeclarativeRepeaterC1EP16QDeclarativeItem @ 907 NONAME
- _ZN20QDeclarativeRepeaterC2EP16QDeclarativeItem @ 908 NONAME
- _ZN20QDeclarativeRepeaterD0Ev @ 909 NONAME
- _ZN20QDeclarativeRepeaterD1Ev @ 910 NONAME
- _ZN20QDeclarativeRepeaterD2Ev @ 911 NONAME
- _ZN20QDeclarativeTextEdit10updateSizeEv @ 912 NONAME
- _ZN20QDeclarativeTextEdit11fontChangedERK5QFont @ 913 NONAME
- _ZN20QDeclarativeTextEdit11qt_metacallEN11QMetaObject4CallEiPPv @ 914 NONAME
- _ZN20QDeclarativeTextEdit11qt_metacastEPKc @ 915 NONAME
- _ZN20QDeclarativeTextEdit11setReadOnlyEb @ 916 NONAME
- _ZN20QDeclarativeTextEdit11textChangedERK7QString @ 917 NONAME
- _ZN20QDeclarativeTextEdit11wrapChangedEb @ 918 NONAME
- _ZN20QDeclarativeTextEdit12colorChangedERK6QColor @ 919 NONAME
- _ZN20QDeclarativeTextEdit12drawContentsEP8QPainterRK5QRect @ 920 NONAME
- _ZN20QDeclarativeTextEdit12focusChangedEb @ 921 NONAME
- _ZN20QDeclarativeTextEdit13keyPressEventEP9QKeyEvent @ 922 NONAME
- _ZN20QDeclarativeTextEdit13q_textChangedEv @ 923 NONAME
- _ZN20QDeclarativeTextEdit13setTextFormatENS_10TextFormatE @ 924 NONAME
- _ZN20QDeclarativeTextEdit13setTextMarginEf @ 925 NONAME
- _ZN20QDeclarativeTextEdit14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 926 NONAME
- _ZN20QDeclarativeTextEdit14updateImgCacheERK6QRectF @ 927 NONAME
- _ZN20QDeclarativeTextEdit15geometryChangedERK6QRectFS2_ @ 928 NONAME
- _ZN20QDeclarativeTextEdit15keyReleaseEventEP9QKeyEvent @ 929 NONAME
- _ZN20QDeclarativeTextEdit15mousePressEventEP24QGraphicsSceneMouseEvent @ 930 NONAME
- _ZN20QDeclarativeTextEdit15readOnlyChangedEb @ 931 NONAME
- _ZN20QDeclarativeTextEdit15setFocusOnPressEb @ 932 NONAME
- _ZN20QDeclarativeTextEdit15setSelectionEndEi @ 933 NONAME
- _ZN20QDeclarativeTextEdit16inputMethodEventEP17QInputMethodEvent @ 934 NONAME
- _ZN20QDeclarativeTextEdit16selectionChangedEv @ 935 NONAME
- _ZN20QDeclarativeTextEdit16setCursorVisibleEb @ 936 NONAME
- _ZN20QDeclarativeTextEdit16staticMetaObjectE @ 937 NONAME DATA 16
- _ZN20QDeclarativeTextEdit17componentCompleteEv @ 938 NONAME
- _ZN20QDeclarativeTextEdit17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 939 NONAME
- _ZN20QDeclarativeTextEdit17setCursorDelegateEP21QDeclarativeComponent @ 940 NONAME
- _ZN20QDeclarativeTextEdit17setCursorPositionEi @ 941 NONAME
- _ZN20QDeclarativeTextEdit17setSelectionColorERK6QColor @ 942 NONAME
- _ZN20QDeclarativeTextEdit17setSelectionStartEi @ 943 NONAME
- _ZN20QDeclarativeTextEdit17textFormatChangedENS_10TextFormatE @ 944 NONAME
- _ZN20QDeclarativeTextEdit17textMarginChangedEf @ 945 NONAME
- _ZN20QDeclarativeTextEdit18loadCursorDelegateEv @ 946 NONAME
- _ZN20QDeclarativeTextEdit18moveCursorDelegateEv @ 947 NONAME
- _ZN20QDeclarativeTextEdit19focusOnPressChangedEb @ 948 NONAME
- _ZN20QDeclarativeTextEdit19getStaticMetaObjectEv @ 949 NONAME
- _ZN20QDeclarativeTextEdit19selectionEndChangedEv @ 950 NONAME
- _ZN20QDeclarativeTextEdit20cursorVisibleChangedEb @ 951 NONAME
- _ZN20QDeclarativeTextEdit20setSelectedTextColorERK6QColor @ 952 NONAME
- _ZN20QDeclarativeTextEdit21cursorDelegateChangedEv @ 953 NONAME
- _ZN20QDeclarativeTextEdit21cursorPositionChangedEv @ 954 NONAME
- _ZN20QDeclarativeTextEdit21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 955 NONAME
- _ZN20QDeclarativeTextEdit21selectionColorChangedERK6QColor @ 956 NONAME
- _ZN20QDeclarativeTextEdit21selectionStartChangedEv @ 957 NONAME
- _ZN20QDeclarativeTextEdit22setPersistentSelectionEb @ 958 NONAME
- _ZN20QDeclarativeTextEdit22updateSelectionMarkersEv @ 959 NONAME
- _ZN20QDeclarativeTextEdit23setTextInteractionFlagsE6QFlagsIN2Qt19TextInteractionFlagEE @ 960 NONAME
- _ZN20QDeclarativeTextEdit24selectedTextColorChangedERK6QColor @ 961 NONAME
- _ZN20QDeclarativeTextEdit24verticalAlignmentChangedENS_10VAlignmentE @ 962 NONAME
- _ZN20QDeclarativeTextEdit26horizontalAlignmentChangedENS_10HAlignmentE @ 963 NONAME
- _ZN20QDeclarativeTextEdit26persistentSelectionChangedEb @ 964 NONAME
- _ZN20QDeclarativeTextEdit5eventEP6QEvent @ 965 NONAME
- _ZN20QDeclarativeTextEdit7setFontERK5QFont @ 966 NONAME
- _ZN20QDeclarativeTextEdit7setTextERK7QString @ 967 NONAME
- _ZN20QDeclarativeTextEdit7setWrapEb @ 968 NONAME
- _ZN20QDeclarativeTextEdit8setColorERK6QColor @ 969 NONAME
- _ZN20QDeclarativeTextEdit9selectAllEv @ 970 NONAME
- _ZN20QDeclarativeTextEdit9setHAlignENS_10HAlignmentE @ 971 NONAME
- _ZN20QDeclarativeTextEdit9setVAlignENS_10VAlignmentE @ 972 NONAME
- _ZN20QDeclarativeTextEditC1EP16QDeclarativeItem @ 973 NONAME
- _ZN20QDeclarativeTextEditC2EP16QDeclarativeItem @ 974 NONAME
- _ZN20QMetaPropertyBuilder10setDynamicEb @ 975 NONAME
- _ZN20QMetaPropertyBuilder11setEditableEb @ 976 NONAME
- _ZN20QMetaPropertyBuilder11setReadableEb @ 977 NONAME
- _ZN20QMetaPropertyBuilder11setWritableEb @ 978 NONAME
- _ZN20QMetaPropertyBuilder12setStdCppSetEb @ 979 NONAME
- _ZN20QMetaPropertyBuilder13setDesignableEb @ 980 NONAME
- _ZN20QMetaPropertyBuilder13setEnumOrFlagEb @ 981 NONAME
- _ZN20QMetaPropertyBuilder13setResettableEb @ 982 NONAME
- _ZN20QMetaPropertyBuilder13setScriptableEb @ 983 NONAME
- _ZN20QMetaPropertyBuilder15setNotifySignalERK18QMetaMethodBuilder @ 984 NONAME
- _ZN20QMetaPropertyBuilder18removeNotifySignalEv @ 985 NONAME
- _ZN20QMetaPropertyBuilder7setUserEb @ 986 NONAME
- _ZN20QMetaPropertyBuilder9setStoredEb @ 987 NONAME
- _ZN21QDeclarativeComponent11beginCreateEP19QDeclarativeContext @ 988 NONAME
- _ZN21QDeclarativeComponent11qt_metacallEN11QMetaObject4CallEiPPv @ 989 NONAME
- _ZN21QDeclarativeComponent11qt_metacastEPKc @ 990 NONAME
- _ZN21QDeclarativeComponent12createObjectEv @ 991 NONAME
- _ZN21QDeclarativeComponent13statusChangedENS_6StatusE @ 992 NONAME
- _ZN21QDeclarativeComponent14completeCreateEv @ 993 NONAME
- _ZN21QDeclarativeComponent15progressChangedEf @ 994 NONAME
- _ZN21QDeclarativeComponent16staticMetaObjectE @ 995 NONAME DATA 16
- _ZN21QDeclarativeComponent18setCreationContextEP19QDeclarativeContext @ 996 NONAME
- _ZN21QDeclarativeComponent19getStaticMetaObjectEv @ 997 NONAME
- _ZN21QDeclarativeComponent21qmlAttachedPropertiesEP7QObject @ 998 NONAME
- _ZN21QDeclarativeComponent6createEP19QDeclarativeContext @ 999 NONAME
- _ZN21QDeclarativeComponent7loadUrlERK4QUrl @ 1000 NONAME
- _ZN21QDeclarativeComponent7setDataERK10QByteArrayRK4QUrl @ 1001 NONAME
- _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineP24QDeclarativeCompiledDataiiP7QObject @ 1002 NONAME
- _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineP7QObject @ 1003 NONAME
- _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineRK4QUrlP7QObject @ 1004 NONAME
- _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineRK7QStringP7QObject @ 1005 NONAME
- _ZN21QDeclarativeComponentC1EP7QObject @ 1006 NONAME
- _ZN21QDeclarativeComponentC1ER28QDeclarativeComponentPrivateP7QObject @ 1007 NONAME
- _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineP24QDeclarativeCompiledDataiiP7QObject @ 1008 NONAME
- _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineP7QObject @ 1009 NONAME
- _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineRK4QUrlP7QObject @ 1010 NONAME
- _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineRK7QStringP7QObject @ 1011 NONAME
- _ZN21QDeclarativeComponentC2EP7QObject @ 1012 NONAME
- _ZN21QDeclarativeComponentC2ER28QDeclarativeComponentPrivateP7QObject @ 1013 NONAME
- _ZN21QDeclarativeComponentD0Ev @ 1014 NONAME
- _ZN21QDeclarativeComponentD1Ev @ 1015 NONAME
- _ZN21QDeclarativeComponentD2Ev @ 1016 NONAME
- _ZN21QDeclarativeDomImportC1ERKS_ @ 1017 NONAME
- _ZN21QDeclarativeDomImportC1Ev @ 1018 NONAME
- _ZN21QDeclarativeDomImportC2ERKS_ @ 1019 NONAME
- _ZN21QDeclarativeDomImportC2Ev @ 1020 NONAME
- _ZN21QDeclarativeDomImportD1Ev @ 1021 NONAME
- _ZN21QDeclarativeDomImportD2Ev @ 1022 NONAME
- _ZN21QDeclarativeDomImportaSERKS_ @ 1023 NONAME
- _ZN21QDeclarativeDomObjectC1ERKS_ @ 1024 NONAME
- _ZN21QDeclarativeDomObjectC1Ev @ 1025 NONAME
- _ZN21QDeclarativeDomObjectC2ERKS_ @ 1026 NONAME
- _ZN21QDeclarativeDomObjectC2Ev @ 1027 NONAME
- _ZN21QDeclarativeDomObjectD1Ev @ 1028 NONAME
- _ZN21QDeclarativeDomObjectD2Ev @ 1029 NONAME
- _ZN21QDeclarativeDomObjectaSERKS_ @ 1030 NONAME
- _ZN21QDeclarativeFlickable10flickEndedEv @ 1031 NONAME
- _ZN21QDeclarativeFlickable10timerEventEP11QTimerEvent @ 1032 NONAME
- _ZN21QDeclarativeFlickable10wheelEventEP24QGraphicsSceneWheelEvent @ 1033 NONAME
- _ZN21QDeclarativeFlickable11cancelFlickEv @ 1034 NONAME
- _ZN21QDeclarativeFlickable11pageChangedEv @ 1035 NONAME
- _ZN21QDeclarativeFlickable11qt_metacallEN11QMetaObject4CallEiPPv @ 1036 NONAME
- _ZN21QDeclarativeFlickable11qt_metacastEPKc @ 1037 NONAME
- _ZN21QDeclarativeFlickable11setContentXEf @ 1038 NONAME
- _ZN21QDeclarativeFlickable11setContentYEf @ 1039 NONAME
- _ZN21QDeclarativeFlickable11visibleAreaEv @ 1040 NONAME
- _ZN21QDeclarativeFlickable11widthChangeEv @ 1041 NONAME
- _ZN21QDeclarativeFlickable12flickStartedEv @ 1042 NONAME
- _ZN21QDeclarativeFlickable12heightChangeEv @ 1043 NONAME
- _ZN21QDeclarativeFlickable12setOverShootEb @ 1044 NONAME
- _ZN21QDeclarativeFlickable13flickableDataEv @ 1045 NONAME
- _ZN21QDeclarativeFlickable13movementEndedEv @ 1046 NONAME
- _ZN21QDeclarativeFlickable13movingChangedEv @ 1047 NONAME
- _ZN21QDeclarativeFlickable13setPressDelayEi @ 1048 NONAME
- _ZN21QDeclarativeFlickable13viewportMovedEv @ 1049 NONAME
- _ZN21QDeclarativeFlickable14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 1050 NONAME
- _ZN21QDeclarativeFlickable14movementEndingEv @ 1051 NONAME
- _ZN21QDeclarativeFlickable14sendMouseEventEP24QGraphicsSceneMouseEvent @ 1052 NONAME
- _ZN21QDeclarativeFlickable14setInteractiveEb @ 1053 NONAME
- _ZN21QDeclarativeFlickable15contentXChangedEv @ 1054 NONAME
- _ZN21QDeclarativeFlickable15contentYChangedEv @ 1055 NONAME
- _ZN21QDeclarativeFlickable15flickingChangedEv @ 1056 NONAME
- _ZN21QDeclarativeFlickable15mousePressEventEP24QGraphicsSceneMouseEvent @ 1057 NONAME
- _ZN21QDeclarativeFlickable15movementStartedEv @ 1058 NONAME
- _ZN21QDeclarativeFlickable15setContentWidthEf @ 1059 NONAME
- _ZN21QDeclarativeFlickable16movementStartingEv @ 1060 NONAME
- _ZN21QDeclarativeFlickable16overShootChangedEv @ 1061 NONAME
- _ZN21QDeclarativeFlickable16sceneEventFilterEP13QGraphicsItemP6QEvent @ 1062 NONAME
- _ZN21QDeclarativeFlickable16setContentHeightEf @ 1063 NONAME
- _ZN21QDeclarativeFlickable16staticMetaObjectE @ 1064 NONAME DATA 16
- _ZN21QDeclarativeFlickable17flickableChildrenEv @ 1065 NONAME
- _ZN21QDeclarativeFlickable17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 1066 NONAME
- _ZN21QDeclarativeFlickable17pressDelayChangedEv @ 1067 NONAME
- _ZN21QDeclarativeFlickable17setFlickDirectionENS_14FlickDirectionE @ 1068 NONAME
- _ZN21QDeclarativeFlickable18interactiveChangedEv @ 1069 NONAME
- _ZN21QDeclarativeFlickable19contentWidthChangedEv @ 1070 NONAME
- _ZN21QDeclarativeFlickable19getStaticMetaObjectEv @ 1071 NONAME
- _ZN21QDeclarativeFlickable19isAtBoundaryChangedEv @ 1072 NONAME
- _ZN21QDeclarativeFlickable20contentHeightChangedEv @ 1073 NONAME
- _ZN21QDeclarativeFlickable20setFlickDecelerationEf @ 1074 NONAME
- _ZN21QDeclarativeFlickable21flickDirectionChangedEv @ 1075 NONAME
- _ZN21QDeclarativeFlickable23setMaximumFlickVelocityEf @ 1076 NONAME
- _ZN21QDeclarativeFlickable23verticalVelocityChangedEv @ 1077 NONAME
- _ZN21QDeclarativeFlickable24flickDecelerationChangedEv @ 1078 NONAME
- _ZN21QDeclarativeFlickable25horizontalVelocityChangedEv @ 1079 NONAME
- _ZN21QDeclarativeFlickable27maximumFlickVelocityChangedEv @ 1080 NONAME
- _ZN21QDeclarativeFlickable6tickedEv @ 1081 NONAME
- _ZN21QDeclarativeFlickable8viewportEv @ 1082 NONAME
- _ZN21QDeclarativeFlickableC1EP16QDeclarativeItem @ 1083 NONAME
- _ZN21QDeclarativeFlickableC1ER28QDeclarativeFlickablePrivateP16QDeclarativeItem @ 1084 NONAME
- _ZN21QDeclarativeFlickableC2EP16QDeclarativeItem @ 1085 NONAME
- _ZN21QDeclarativeFlickableC2ER28QDeclarativeFlickablePrivateP16QDeclarativeItem @ 1086 NONAME
- _ZN21QDeclarativeFlickableD0Ev @ 1087 NONAME
- _ZN21QDeclarativeFlickableD1Ev @ 1088 NONAME
- _ZN21QDeclarativeFlickableD2Ev @ 1089 NONAME
- _ZN21QDeclarativeImageBase11qt_metacallEN11QMetaObject4CallEiPPv @ 1090 NONAME
- _ZN21QDeclarativeImageBase11qt_metacastEPKc @ 1091 NONAME
- _ZN21QDeclarativeImageBase13pixmapChangedEv @ 1092 NONAME
- _ZN21QDeclarativeImageBase13sourceChangedERK4QUrl @ 1093 NONAME
- _ZN21QDeclarativeImageBase13statusChangedENS_6StatusE @ 1094 NONAME
- _ZN21QDeclarativeImageBase15progressChangedEf @ 1095 NONAME
- _ZN21QDeclarativeImageBase15requestFinishedEv @ 1096 NONAME
- _ZN21QDeclarativeImageBase15requestProgressExx @ 1097 NONAME
- _ZN21QDeclarativeImageBase15setAsynchronousEb @ 1098 NONAME
- _ZN21QDeclarativeImageBase16staticMetaObjectE @ 1099 NONAME DATA 16
- _ZN21QDeclarativeImageBase17componentCompleteEv @ 1100 NONAME
- _ZN21QDeclarativeImageBase19asynchronousChangedEv @ 1101 NONAME
- _ZN21QDeclarativeImageBase19getStaticMetaObjectEv @ 1102 NONAME
- _ZN21QDeclarativeImageBase4loadEv @ 1103 NONAME
- _ZN21QDeclarativeImageBase9setSourceERK4QUrl @ 1104 NONAME
- _ZN21QDeclarativeImageBaseC1ER28QDeclarativeImageBasePrivateP16QDeclarativeItem @ 1105 NONAME
- _ZN21QDeclarativeImageBaseC2ER28QDeclarativeImageBasePrivateP16QDeclarativeItem @ 1106 NONAME
- _ZN21QDeclarativeImageBaseD0Ev @ 1107 NONAME
- _ZN21QDeclarativeImageBaseD1Ev @ 1108 NONAME
- _ZN21QDeclarativeImageBaseD2Ev @ 1109 NONAME
- _ZN21QDeclarativeListModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1110 NONAME
- _ZN21QDeclarativeListModel11qt_metacastEPKc @ 1111 NONAME
- _ZN21QDeclarativeListModel11setPropertyEiRK7QStringRK8QVariant @ 1112 NONAME
- _ZN21QDeclarativeListModel12countChangedEi @ 1113 NONAME
- _ZN21QDeclarativeListModel16staticMetaObjectE @ 1114 NONAME DATA 16
- _ZN21QDeclarativeListModel19getStaticMetaObjectEv @ 1115 NONAME
- _ZN21QDeclarativeListModel3setEiRK12QScriptValue @ 1116 NONAME
- _ZN21QDeclarativeListModel4moveEiii @ 1117 NONAME
- _ZN21QDeclarativeListModel5clearEv @ 1118 NONAME
- _ZN21QDeclarativeListModel6appendERK12QScriptValue @ 1119 NONAME
- _ZN21QDeclarativeListModel6insertEiRK12QScriptValue @ 1120 NONAME
- _ZN21QDeclarativeListModel6removeEi @ 1121 NONAME
- _ZN21QDeclarativeListModelC1EP7QObject @ 1122 NONAME
- _ZN21QDeclarativeListModelC2EP7QObject @ 1123 NONAME
- _ZN21QDeclarativeListModelD0Ev @ 1124 NONAME
- _ZN21QDeclarativeListModelD1Ev @ 1125 NONAME
- _ZN21QDeclarativeListModelD2Ev @ 1126 NONAME
- _ZN21QDeclarativeMouseArea10sceneEventEP6QEvent @ 1127 NONAME
- _ZN21QDeclarativeMouseArea10setEnabledEb @ 1128 NONAME
- _ZN21QDeclarativeMouseArea10setHoveredEb @ 1129 NONAME
- _ZN21QDeclarativeMouseArea10setPressedEb @ 1130 NONAME
- _ZN21QDeclarativeMouseArea10timerEventEP11QTimerEvent @ 1131 NONAME
- _ZN21QDeclarativeMouseArea11qt_metacallEN11QMetaObject4CallEiPPv @ 1132 NONAME
- _ZN21QDeclarativeMouseArea11qt_metacastEPKc @ 1133 NONAME
- _ZN21QDeclarativeMouseArea12pressAndHoldEP22QDeclarativeMouseEvent @ 1134 NONAME
- _ZN21QDeclarativeMouseArea13doubleClickedEP22QDeclarativeMouseEvent @ 1135 NONAME
- _ZN21QDeclarativeMouseArea14enabledChangedEv @ 1136 NONAME
- _ZN21QDeclarativeMouseArea14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 1137 NONAME
- _ZN21QDeclarativeMouseArea14hoveredChangedEv @ 1138 NONAME
- _ZN21QDeclarativeMouseArea14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 1139 NONAME
- _ZN21QDeclarativeMouseArea14pressedChangedEv @ 1140 NONAME
- _ZN21QDeclarativeMouseArea15hoverEnterEventEP24QGraphicsSceneHoverEvent @ 1141 NONAME
- _ZN21QDeclarativeMouseArea15hoverLeaveEventEP24QGraphicsSceneHoverEvent @ 1142 NONAME
- _ZN21QDeclarativeMouseArea15mousePressEventEP24QGraphicsSceneMouseEvent @ 1143 NONAME
- _ZN21QDeclarativeMouseArea15positionChangedEP22QDeclarativeMouseEvent @ 1144 NONAME
- _ZN21QDeclarativeMouseArea16staticMetaObjectE @ 1145 NONAME DATA 16
- _ZN21QDeclarativeMouseArea17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 1146 NONAME
- _ZN21QDeclarativeMouseArea18setAcceptedButtonsE6QFlagsIN2Qt11MouseButtonEE @ 1147 NONAME
- _ZN21QDeclarativeMouseArea19getStaticMetaObjectEv @ 1148 NONAME
- _ZN21QDeclarativeMouseArea21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 1149 NONAME
- _ZN21QDeclarativeMouseArea22acceptedButtonsChangedEv @ 1150 NONAME
- _ZN21QDeclarativeMouseArea4dragEv @ 1151 NONAME
- _ZN21QDeclarativeMouseArea6exitedEv @ 1152 NONAME
- _ZN21QDeclarativeMouseArea7clickedEP22QDeclarativeMouseEvent @ 1153 NONAME
- _ZN21QDeclarativeMouseArea7enteredEv @ 1154 NONAME
- _ZN21QDeclarativeMouseArea7pressedEP22QDeclarativeMouseEvent @ 1155 NONAME
- _ZN21QDeclarativeMouseArea8releasedEP22QDeclarativeMouseEvent @ 1156 NONAME
- _ZN21QDeclarativeMouseAreaC1EP16QDeclarativeItem @ 1157 NONAME
- _ZN21QDeclarativeMouseAreaC2EP16QDeclarativeItem @ 1158 NONAME
- _ZN21QDeclarativeMouseAreaD0Ev @ 1159 NONAME
- _ZN21QDeclarativeMouseAreaD1Ev @ 1160 NONAME
- _ZN21QDeclarativeMouseAreaD2Ev @ 1161 NONAME
- _ZN21QDeclarativeParticles11imageLoadedEv @ 1162 NONAME
- _ZN21QDeclarativeParticles11qt_metacallEN11QMetaObject4CallEiPPv @ 1163 NONAME
- _ZN21QDeclarativeParticles11qt_metacastEPKc @ 1164 NONAME
- _ZN21QDeclarativeParticles11setLifeSpanEi @ 1165 NONAME
- _ZN21QDeclarativeParticles11setVelocityEf @ 1166 NONAME
- _ZN21QDeclarativeParticles12angleChangedEv @ 1167 NONAME
- _ZN21QDeclarativeParticles12countChangedEv @ 1168 NONAME
- _ZN21QDeclarativeParticles13motionChangedEv @ 1169 NONAME
- _ZN21QDeclarativeParticles13sourceChangedEv @ 1170 NONAME
- _ZN21QDeclarativeParticles15emittingChangedEv @ 1171 NONAME
- _ZN21QDeclarativeParticles15lifeSpanChangedEv @ 1172 NONAME
- _ZN21QDeclarativeParticles15setEmissionRateEi @ 1173 NONAME
- _ZN21QDeclarativeParticles15velocityChangedEv @ 1174 NONAME
- _ZN21QDeclarativeParticles16staticMetaObjectE @ 1175 NONAME DATA 16
- _ZN21QDeclarativeParticles17componentCompleteEv @ 1176 NONAME
- _ZN21QDeclarativeParticles17setAngleDeviationEf @ 1177 NONAME
- _ZN21QDeclarativeParticles17setFadeInDurationEi @ 1178 NONAME
- _ZN21QDeclarativeParticles18setFadeOutDurationEi @ 1179 NONAME
- _ZN21QDeclarativeParticles19emissionRateChangedEv @ 1180 NONAME
- _ZN21QDeclarativeParticles19getStaticMetaObjectEv @ 1181 NONAME
- _ZN21QDeclarativeParticles19setEmissionVarianceEf @ 1182 NONAME
- _ZN21QDeclarativeParticles20setLifeSpanDeviationEi @ 1183 NONAME
- _ZN21QDeclarativeParticles20setVelocityDeviationEf @ 1184 NONAME
- _ZN21QDeclarativeParticles21angleDeviationChangedEv @ 1185 NONAME
- _ZN21QDeclarativeParticles21fadeInDurationChangedEv @ 1186 NONAME
- _ZN21QDeclarativeParticles22fadeOutDurationChangedEv @ 1187 NONAME
- _ZN21QDeclarativeParticles23emissionVarianceChangedEv @ 1188 NONAME
- _ZN21QDeclarativeParticles24lifeSpanDeviationChangedEv @ 1189 NONAME
- _ZN21QDeclarativeParticles24velocityDeviationChangedEv @ 1190 NONAME
- _ZN21QDeclarativeParticles5burstEii @ 1191 NONAME
- _ZN21QDeclarativeParticles5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1192 NONAME
- _ZN21QDeclarativeParticles8setAngleEf @ 1193 NONAME
- _ZN21QDeclarativeParticles8setCountEi @ 1194 NONAME
- _ZN21QDeclarativeParticles9setMotionEP26QDeclarativeParticleMotion @ 1195 NONAME
- _ZN21QDeclarativeParticles9setSourceERK4QUrl @ 1196 NONAME
- _ZN21QDeclarativeParticlesC1EP16QDeclarativeItem @ 1197 NONAME
- _ZN21QDeclarativeParticlesC2EP16QDeclarativeItem @ 1198 NONAME
- _ZN21QDeclarativeParticlesD0Ev @ 1199 NONAME
- _ZN21QDeclarativeParticlesD1Ev @ 1200 NONAME
- _ZN21QDeclarativeParticlesD2Ev @ 1201 NONAME
- _ZN21QDeclarativePathCubic11qt_metacallEN11QMetaObject4CallEiPPv @ 1202 NONAME
- _ZN21QDeclarativePathCubic11qt_metacastEPKc @ 1203 NONAME
- _ZN21QDeclarativePathCubic12setControl1XEf @ 1204 NONAME
- _ZN21QDeclarativePathCubic12setControl1YEf @ 1205 NONAME
- _ZN21QDeclarativePathCubic12setControl2XEf @ 1206 NONAME
- _ZN21QDeclarativePathCubic12setControl2YEf @ 1207 NONAME
- _ZN21QDeclarativePathCubic16staticMetaObjectE @ 1208 NONAME DATA 16
- _ZN21QDeclarativePathCubic19getStaticMetaObjectEv @ 1209 NONAME
- _ZN21QDeclarativePathCubic9addToPathER12QPainterPath @ 1210 NONAME
- _ZN21QDeclarativeRectangle11qt_metacallEN11QMetaObject4CallEiPPv @ 1211 NONAME
- _ZN21QDeclarativeRectangle11qt_metacastEPKc @ 1212 NONAME
- _ZN21QDeclarativeRectangle11setGradientEP20QDeclarativeGradient @ 1213 NONAME
- _ZN21QDeclarativeRectangle12colorChangedEv @ 1214 NONAME
- _ZN21QDeclarativeRectangle13radiusChangedEv @ 1215 NONAME
- _ZN21QDeclarativeRectangle16staticMetaObjectE @ 1216 NONAME DATA 16
- _ZN21QDeclarativeRectangle19generateRoundedRectEv @ 1217 NONAME
- _ZN21QDeclarativeRectangle19getStaticMetaObjectEv @ 1218 NONAME
- _ZN21QDeclarativeRectangle20generateBorderedRectEv @ 1219 NONAME
- _ZN21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1220 NONAME
- _ZN21QDeclarativeRectangle6borderEv @ 1221 NONAME
- _ZN21QDeclarativeRectangle8doUpdateEv @ 1222 NONAME
- _ZN21QDeclarativeRectangle8drawRectER8QPainter @ 1223 NONAME
- _ZN21QDeclarativeRectangle8setColorERK6QColor @ 1224 NONAME
- _ZN21QDeclarativeRectangle9setRadiusEf @ 1225 NONAME
- _ZN21QDeclarativeRectangleC1EP16QDeclarativeItem @ 1226 NONAME
- _ZN21QDeclarativeRectangleC2EP16QDeclarativeItem @ 1227 NONAME
- _ZN21QDeclarativeScaleGrid11qt_metacallEN11QMetaObject4CallEiPPv @ 1228 NONAME
- _ZN21QDeclarativeScaleGrid11qt_metacastEPKc @ 1229 NONAME
- _ZN21QDeclarativeScaleGrid13borderChangedEv @ 1230 NONAME
- _ZN21QDeclarativeScaleGrid16staticMetaObjectE @ 1231 NONAME DATA 16
- _ZN21QDeclarativeScaleGrid19getStaticMetaObjectEv @ 1232 NONAME
- _ZN21QDeclarativeScaleGrid6setTopEi @ 1233 NONAME
- _ZN21QDeclarativeScaleGrid7setLeftEi @ 1234 NONAME
- _ZN21QDeclarativeScaleGrid8setRightEi @ 1235 NONAME
- _ZN21QDeclarativeScaleGrid9setBottomEi @ 1236 NONAME
- _ZN21QDeclarativeScaleGridC1EP7QObject @ 1237 NONAME
- _ZN21QDeclarativeScaleGridC2EP7QObject @ 1238 NONAME
- _ZN21QDeclarativeScaleGridD0Ev @ 1239 NONAME
- _ZN21QDeclarativeScaleGridD1Ev @ 1240 NONAME
- _ZN21QDeclarativeScaleGridD2Ev @ 1241 NONAME
- _ZN21QDeclarativeTextInput10moveCursorEv @ 1242 NONAME
- _ZN21QDeclarativeTextInput10updateRectERK5QRect @ 1243 NONAME
- _ZN21QDeclarativeTextInput10updateSizeEb @ 1244 NONAME
- _ZN21QDeclarativeTextInput11fontChangedERK5QFont @ 1245 NONAME
- _ZN21QDeclarativeTextInput11qt_metacallEN11QMetaObject4CallEiPPv @ 1246 NONAME
- _ZN21QDeclarativeTextInput11qt_metacastEPKc @ 1247 NONAME
- _ZN21QDeclarativeTextInput11setEchoModeENS_8EchoModeE @ 1248 NONAME
- _ZN21QDeclarativeTextInput11setReadOnlyEb @ 1249 NONAME
- _ZN21QDeclarativeTextInput11textChangedEv @ 1250 NONAME
- _ZN21QDeclarativeTextInput12colorChangedERK6QColor @ 1251 NONAME
- _ZN21QDeclarativeTextInput12createCursorEv @ 1252 NONAME
- _ZN21QDeclarativeTextInput12drawContentsEP8QPainterRK5QRect @ 1253 NONAME
- _ZN21QDeclarativeTextInput12focusChangedEb @ 1254 NONAME
- _ZN21QDeclarativeTextInput12setInputMaskERK7QString @ 1255 NONAME
- _ZN21QDeclarativeTextInput12setMaxLengthEi @ 1256 NONAME
- _ZN21QDeclarativeTextInput12setValidatorEP10QValidator @ 1257 NONAME
- _ZN21QDeclarativeTextInput13keyPressEventEP9QKeyEvent @ 1258 NONAME
- _ZN21QDeclarativeTextInput13q_textChangedEv @ 1259 NONAME
- _ZN21QDeclarativeTextInput15echoModeChangedENS_8EchoModeE @ 1260 NONAME
- _ZN21QDeclarativeTextInput15geometryChangedERK6QRectFS2_ @ 1261 NONAME
- _ZN21QDeclarativeTextInput15mousePressEventEP24QGraphicsSceneMouseEvent @ 1262 NONAME
- _ZN21QDeclarativeTextInput15readOnlyChangedEb @ 1263 NONAME
- _ZN21QDeclarativeTextInput15setFocusOnPressEb @ 1264 NONAME
- _ZN21QDeclarativeTextInput15setSelectionEndEi @ 1265 NONAME
- _ZN21QDeclarativeTextInput16cursorPosChangedEv @ 1266 NONAME
- _ZN21QDeclarativeTextInput16inputMaskChangedERK7QString @ 1267 NONAME
- _ZN21QDeclarativeTextInput16selectionChangedEv @ 1268 NONAME
- _ZN21QDeclarativeTextInput16setCursorVisibleEb @ 1269 NONAME
- _ZN21QDeclarativeTextInput16staticMetaObjectE @ 1270 NONAME DATA 16
- _ZN21QDeclarativeTextInput16validatorChangedEv @ 1271 NONAME
- _ZN21QDeclarativeTextInput17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 1272 NONAME
- _ZN21QDeclarativeTextInput17setCursorDelegateEP21QDeclarativeComponent @ 1273 NONAME
- _ZN21QDeclarativeTextInput17setCursorPositionEi @ 1274 NONAME
- _ZN21QDeclarativeTextInput17setSelectionColorERK6QColor @ 1275 NONAME
- _ZN21QDeclarativeTextInput17setSelectionStartEi @ 1276 NONAME
- _ZN21QDeclarativeTextInput19focusOnPressChangedEb @ 1277 NONAME
- _ZN21QDeclarativeTextInput19getStaticMetaObjectEv @ 1278 NONAME
- _ZN21QDeclarativeTextInput19selectedTextChangedEv @ 1279 NONAME
- _ZN21QDeclarativeTextInput19selectionEndChangedEv @ 1280 NONAME
- _ZN21QDeclarativeTextInput20cursorVisibleChangedEb @ 1281 NONAME
- _ZN21QDeclarativeTextInput20maximumLengthChangedEi @ 1282 NONAME
- _ZN21QDeclarativeTextInput20setSelectedTextColorERK6QColor @ 1283 NONAME
- _ZN21QDeclarativeTextInput21cursorDelegateChangedEv @ 1284 NONAME
- _ZN21QDeclarativeTextInput21cursorPositionChangedEv @ 1285 NONAME
- _ZN21QDeclarativeTextInput21selectionColorChangedERK6QColor @ 1286 NONAME
- _ZN21QDeclarativeTextInput21selectionStartChangedEv @ 1287 NONAME
- _ZN21QDeclarativeTextInput22acceptableInputChangedEv @ 1288 NONAME
- _ZN21QDeclarativeTextInput24selectedTextColorChangedERK6QColor @ 1289 NONAME
- _ZN21QDeclarativeTextInput26horizontalAlignmentChangedENS_10HAlignmentE @ 1290 NONAME
- _ZN21QDeclarativeTextInput5eventEP6QEvent @ 1291 NONAME
- _ZN21QDeclarativeTextInput6xToPosEi @ 1292 NONAME
- _ZN21QDeclarativeTextInput7setFontERK5QFont @ 1293 NONAME
- _ZN21QDeclarativeTextInput7setTextERK7QString @ 1294 NONAME
- _ZN21QDeclarativeTextInput8acceptedEv @ 1295 NONAME
- _ZN21QDeclarativeTextInput8setColorERK6QColor @ 1296 NONAME
- _ZN21QDeclarativeTextInput9selectAllEv @ 1297 NONAME
- _ZN21QDeclarativeTextInput9setHAlignENS_10HAlignmentE @ 1298 NONAME
- _ZN21QDeclarativeTextInputC1EP16QDeclarativeItem @ 1299 NONAME
- _ZN21QDeclarativeTextInputC2EP16QDeclarativeItem @ 1300 NONAME
- _ZN21QDeclarativeTextInputD0Ev @ 1301 NONAME
- _ZN21QDeclarativeTextInputD1Ev @ 1302 NONAME
- _ZN21QDeclarativeTextInputD2Ev @ 1303 NONAME
- _ZN21QDeclarativeValueType11qt_metacallEN11QMetaObject4CallEiPPv @ 1304 NONAME
- _ZN21QDeclarativeValueType11qt_metacastEPKc @ 1305 NONAME
- _ZN21QDeclarativeValueType16staticMetaObjectE @ 1306 NONAME DATA 16
- _ZN21QDeclarativeValueType19getStaticMetaObjectEv @ 1307 NONAME
- _ZN21QDeclarativeValueTypeC2EP7QObject @ 1308 NONAME
- _ZN22QDeclarativeDebugQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 1309 NONAME
- _ZN22QDeclarativeDebugQuery11qt_metacastEPKc @ 1310 NONAME
- _ZN22QDeclarativeDebugQuery12stateChangedENS_5StateE @ 1311 NONAME
- _ZN22QDeclarativeDebugQuery16staticMetaObjectE @ 1312 NONAME DATA 16
- _ZN22QDeclarativeDebugQuery19getStaticMetaObjectEv @ 1313 NONAME
- _ZN22QDeclarativeDebugQuery8setStateENS_5StateE @ 1314 NONAME
- _ZN22QDeclarativeDebugQueryC1EP7QObject @ 1315 NONAME
- _ZN22QDeclarativeDebugQueryC2EP7QObject @ 1316 NONAME
- _ZN22QDeclarativeDebugWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 1317 NONAME
- _ZN22QDeclarativeDebugWatch11qt_metacastEPKc @ 1318 NONAME
- _ZN22QDeclarativeDebugWatch12stateChangedENS_5StateE @ 1319 NONAME
- _ZN22QDeclarativeDebugWatch12valueChangedERK10QByteArrayRK8QVariant @ 1320 NONAME
- _ZN22QDeclarativeDebugWatch16staticMetaObjectE @ 1321 NONAME DATA 16
- _ZN22QDeclarativeDebugWatch19getStaticMetaObjectEv @ 1322 NONAME
- _ZN22QDeclarativeDebugWatch8setStateENS_5StateE @ 1323 NONAME
- _ZN22QDeclarativeDebugWatchC1EP7QObject @ 1324 NONAME
- _ZN22QDeclarativeDebugWatchC2EP7QObject @ 1325 NONAME
- _ZN22QDeclarativeDebugWatchD0Ev @ 1326 NONAME
- _ZN22QDeclarativeDebugWatchD1Ev @ 1327 NONAME
- _ZN22QDeclarativeDebugWatchD2Ev @ 1328 NONAME
- _ZN22QDeclarativeEaseFollow10setEnabledEb @ 1329 NONAME
- _ZN22QDeclarativeEaseFollow11qt_metacallEN11QMetaObject4CallEiPPv @ 1330 NONAME
- _ZN22QDeclarativeEaseFollow11qt_metacastEPKc @ 1331 NONAME
- _ZN22QDeclarativeEaseFollow11setDurationEf @ 1332 NONAME
- _ZN22QDeclarativeEaseFollow11setVelocityEf @ 1333 NONAME
- _ZN22QDeclarativeEaseFollow13sourceChangedEv @ 1334 NONAME
- _ZN22QDeclarativeEaseFollow14enabledChangedEv @ 1335 NONAME
- _ZN22QDeclarativeEaseFollow14setSourceValueEf @ 1336 NONAME
- _ZN22QDeclarativeEaseFollow15durationChangedEv @ 1337 NONAME
- _ZN22QDeclarativeEaseFollow15velocityChangedEv @ 1338 NONAME
- _ZN22QDeclarativeEaseFollow16setReversingModeENS_13ReversingModeE @ 1339 NONAME
- _ZN22QDeclarativeEaseFollow16staticMetaObjectE @ 1340 NONAME DATA 16
- _ZN22QDeclarativeEaseFollow19getStaticMetaObjectEv @ 1341 NONAME
- _ZN22QDeclarativeEaseFollow20reversingModeChangedEv @ 1342 NONAME
- _ZN22QDeclarativeEaseFollow20setMaximumEasingTimeEf @ 1343 NONAME
- _ZN22QDeclarativeEaseFollow24maximumEasingTimeChangedEv @ 1344 NONAME
- _ZN22QDeclarativeEaseFollow9setTargetERK20QDeclarativeProperty @ 1345 NONAME
- _ZN22QDeclarativeEaseFollowC1EP7QObject @ 1346 NONAME
- _ZN22QDeclarativeEaseFollowC2EP7QObject @ 1347 NONAME
- _ZN22QDeclarativeEaseFollowD0Ev @ 1348 NONAME
- _ZN22QDeclarativeEaseFollowD1Ev @ 1349 NONAME
- _ZN22QDeclarativeEaseFollowD2Ev @ 1350 NONAME
- _ZN22QDeclarativeExpression10__q_notifyEv @ 1351 NONAME
- _ZN22QDeclarativeExpression10clearErrorEv @ 1352 NONAME
- _ZN22QDeclarativeExpression11qt_metacallEN11QMetaObject4CallEiPPv @ 1353 NONAME
- _ZN22QDeclarativeExpression11qt_metacastEPKc @ 1354 NONAME
- _ZN22QDeclarativeExpression12valueChangedEv @ 1355 NONAME
- _ZN22QDeclarativeExpression13setExpressionERK7QString @ 1356 NONAME
- _ZN22QDeclarativeExpression16staticMetaObjectE @ 1357 NONAME DATA 16
- _ZN22QDeclarativeExpression17setSourceLocationERK7QStringi @ 1358 NONAME
- _ZN22QDeclarativeExpression19getStaticMetaObjectEv @ 1359 NONAME
- _ZN22QDeclarativeExpression23setNotifyOnValueChangedEb @ 1360 NONAME
- _ZN22QDeclarativeExpression5valueEPb @ 1361 NONAME
- _ZN22QDeclarativeExpressionC1EP19QDeclarativeContextPvP20QDeclarativeRefCountP7QObjectRK7QStringiR29QDeclarativeExpressionPrivate @ 1362 NONAME
- _ZN22QDeclarativeExpressionC1EP19QDeclarativeContextRK7QStringP7QObject @ 1363 NONAME
- _ZN22QDeclarativeExpressionC1EP19QDeclarativeContextRK7QStringP7QObjectR29QDeclarativeExpressionPrivate @ 1364 NONAME
- _ZN22QDeclarativeExpressionC1Ev @ 1365 NONAME
- _ZN22QDeclarativeExpressionC2EP19QDeclarativeContextPvP20QDeclarativeRefCountP7QObjectRK7QStringiR29QDeclarativeExpressionPrivate @ 1366 NONAME
- _ZN22QDeclarativeExpressionC2EP19QDeclarativeContextRK7QStringP7QObject @ 1367 NONAME
- _ZN22QDeclarativeExpressionC2EP19QDeclarativeContextRK7QStringP7QObjectR29QDeclarativeExpressionPrivate @ 1368 NONAME
- _ZN22QDeclarativeExpressionC2Ev @ 1369 NONAME
- _ZN22QDeclarativeExpressionD0Ev @ 1370 NONAME
- _ZN22QDeclarativeExpressionD1Ev @ 1371 NONAME
- _ZN22QDeclarativeExpressionD2Ev @ 1372 NONAME
- _ZN22QDeclarativeFocusPanel10sceneEventEP6QEvent @ 1373 NONAME
- _ZN22QDeclarativeFocusPanel11qt_metacallEN11QMetaObject4CallEiPPv @ 1374 NONAME
- _ZN22QDeclarativeFocusPanel11qt_metacastEPKc @ 1375 NONAME
- _ZN22QDeclarativeFocusPanel13activeChangedEv @ 1376 NONAME
- _ZN22QDeclarativeFocusPanel16staticMetaObjectE @ 1377 NONAME DATA 16
- _ZN22QDeclarativeFocusPanel19getStaticMetaObjectEv @ 1378 NONAME
- _ZN22QDeclarativeFocusPanelC1EP16QDeclarativeItem @ 1379 NONAME
- _ZN22QDeclarativeFocusPanelC2EP16QDeclarativeItem @ 1380 NONAME
- _ZN22QDeclarativeFocusPanelD0Ev @ 1381 NONAME
- _ZN22QDeclarativeFocusPanelD1Ev @ 1382 NONAME
- _ZN22QDeclarativeFocusPanelD2Ev @ 1383 NONAME
- _ZN22QDeclarativeFocusScope11qt_metacallEN11QMetaObject4CallEiPPv @ 1384 NONAME
- _ZN22QDeclarativeFocusScope11qt_metacastEPKc @ 1385 NONAME
- _ZN22QDeclarativeFocusScope16staticMetaObjectE @ 1386 NONAME DATA 16
- _ZN22QDeclarativeFocusScope19getStaticMetaObjectEv @ 1387 NONAME
- _ZN22QDeclarativeFocusScopeC1EP16QDeclarativeItem @ 1388 NONAME
- _ZN22QDeclarativeFocusScopeC2EP16QDeclarativeItem @ 1389 NONAME
- _ZN22QDeclarativeFocusScopeD0Ev @ 1390 NONAME
- _ZN22QDeclarativeFocusScopeD1Ev @ 1391 NONAME
- _ZN22QDeclarativeFocusScopeD2Ev @ 1392 NONAME
- _ZN22QDeclarativeFontLoader11nameChangedEv @ 1393 NONAME
- _ZN22QDeclarativeFontLoader11qt_metacallEN11QMetaObject4CallEiPPv @ 1394 NONAME
- _ZN22QDeclarativeFontLoader11qt_metacastEPKc @ 1395 NONAME
- _ZN22QDeclarativeFontLoader13replyFinishedEv @ 1396 NONAME
- _ZN22QDeclarativeFontLoader13statusChangedEv @ 1397 NONAME
- _ZN22QDeclarativeFontLoader16staticMetaObjectE @ 1398 NONAME DATA 16
- _ZN22QDeclarativeFontLoader19getStaticMetaObjectEv @ 1399 NONAME
- _ZN22QDeclarativeFontLoader7setNameERK7QString @ 1400 NONAME
- _ZN22QDeclarativeFontLoader9setSourceERK4QUrl @ 1401 NONAME
- _ZN22QDeclarativeFontLoaderC1EP7QObject @ 1402 NONAME
- _ZN22QDeclarativeFontLoaderC2EP7QObject @ 1403 NONAME
- _ZN22QDeclarativeFontLoaderD0Ev @ 1404 NONAME
- _ZN22QDeclarativeFontLoaderD1Ev @ 1405 NONAME
- _ZN22QDeclarativeFontLoaderD2Ev @ 1406 NONAME
- _ZN22QDeclarativeStateGroup10classBeginEv @ 1407 NONAME
- _ZN22QDeclarativeStateGroup11qt_metacallEN11QMetaObject4CallEiPPv @ 1408 NONAME
- _ZN22QDeclarativeStateGroup11qt_metacastEPKc @ 1409 NONAME
- _ZN22QDeclarativeStateGroup11removeStateEP17QDeclarativeState @ 1410 NONAME
- _ZN22QDeclarativeStateGroup12stateChangedERK7QString @ 1411 NONAME
- _ZN22QDeclarativeStateGroup14statesPropertyEv @ 1412 NONAME
- _ZN22QDeclarativeStateGroup15updateAutoStateEv @ 1413 NONAME
- _ZN22QDeclarativeStateGroup16staticMetaObjectE @ 1414 NONAME DATA 16
- _ZN22QDeclarativeStateGroup17componentCompleteEv @ 1415 NONAME
- _ZN22QDeclarativeStateGroup19getStaticMetaObjectEv @ 1416 NONAME
- _ZN22QDeclarativeStateGroup19transitionsPropertyEv @ 1417 NONAME
- _ZN22QDeclarativeStateGroup8setStateERK7QString @ 1418 NONAME
- _ZN22QDeclarativeStateGroupC1EP7QObject @ 1419 NONAME
- _ZN22QDeclarativeStateGroupC2EP7QObject @ 1420 NONAME
- _ZN22QDeclarativeStateGroupD0Ev @ 1421 NONAME
- _ZN22QDeclarativeStateGroupD1Ev @ 1422 NONAME
- _ZN22QDeclarativeStateGroupD2Ev @ 1423 NONAME
- _ZN22QDeclarativeStyledText5parseERK7QStringR11QTextLayout @ 1424 NONAME
- _ZN22QDeclarativeStyledTextC1ERK7QStringR11QTextLayout @ 1425 NONAME
- _ZN22QDeclarativeStyledTextC2ERK7QStringR11QTextLayout @ 1426 NONAME
- _ZN22QDeclarativeStyledTextD1Ev @ 1427 NONAME
- _ZN22QDeclarativeStyledTextD2Ev @ 1428 NONAME
- _ZN22QDeclarativeTransition10animationsEv @ 1429 NONAME
- _ZN22QDeclarativeTransition10setToStateERK7QString @ 1430 NONAME
- _ZN22QDeclarativeTransition11qt_metacallEN11QMetaObject4CallEiPPv @ 1431 NONAME
- _ZN22QDeclarativeTransition11qt_metacastEPKc @ 1432 NONAME
- _ZN22QDeclarativeTransition11setReversedEb @ 1433 NONAME
- _ZN22QDeclarativeTransition12setFromStateERK7QString @ 1434 NONAME
- _ZN22QDeclarativeTransition13setReversibleEb @ 1435 NONAME
- _ZN22QDeclarativeTransition16staticMetaObjectE @ 1436 NONAME DATA 16
- _ZN22QDeclarativeTransition19getStaticMetaObjectEv @ 1437 NONAME
- _ZN22QDeclarativeTransition4stopEv @ 1438 NONAME
- _ZN22QDeclarativeTransition7prepareER5QListI18QDeclarativeActionERS0_I20QDeclarativePropertyEP29QDeclarativeTransitionManager @ 1439 NONAME
- _ZN22QDeclarativeTransitionC1EP7QObject @ 1440 NONAME
- _ZN22QDeclarativeTransitionC2EP7QObject @ 1441 NONAME
- _ZN22QDeclarativeTransitionD0Ev @ 1442 NONAME
- _ZN22QDeclarativeTransitionD1Ev @ 1443 NONAME
- _ZN22QDeclarativeTransitionD2Ev @ 1444 NONAME
- _ZN23QDeclarativeBorderImage11qt_metacallEN11QMetaObject4CallEiPPv @ 1445 NONAME
- _ZN23QDeclarativeBorderImage11qt_metacastEPKc @ 1446 NONAME
- _ZN23QDeclarativeBorderImage15requestFinishedEv @ 1447 NONAME
- _ZN23QDeclarativeBorderImage16staticMetaObjectE @ 1448 NONAME DATA 16
- _ZN23QDeclarativeBorderImage18sciRequestFinishedEv @ 1449 NONAME
- _ZN23QDeclarativeBorderImage18setGridScaledImageERK27QDeclarativeGridScaledImage @ 1450 NONAME
- _ZN23QDeclarativeBorderImage19getStaticMetaObjectEv @ 1451 NONAME
- _ZN23QDeclarativeBorderImage19setVerticalTileModeENS_8TileModeE @ 1452 NONAME
- _ZN23QDeclarativeBorderImage21setHorizontalTileModeENS_8TileModeE @ 1453 NONAME
- _ZN23QDeclarativeBorderImage23verticalTileModeChangedEv @ 1454 NONAME
- _ZN23QDeclarativeBorderImage25horizontalTileModeChangedEv @ 1455 NONAME
- _ZN23QDeclarativeBorderImage4loadEv @ 1456 NONAME
- _ZN23QDeclarativeBorderImage5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1457 NONAME
- _ZN23QDeclarativeBorderImage6borderEv @ 1458 NONAME
- _ZN23QDeclarativeBorderImage9setSourceERK4QUrl @ 1459 NONAME
- _ZN23QDeclarativeBorderImageC1EP16QDeclarativeItem @ 1460 NONAME
- _ZN23QDeclarativeBorderImageC2EP16QDeclarativeItem @ 1461 NONAME
- _ZN23QDeclarativeBorderImageD0Ev @ 1462 NONAME
- _ZN23QDeclarativeBorderImageD1Ev @ 1463 NONAME
- _ZN23QDeclarativeBorderImageD2Ev @ 1464 NONAME
- _ZN23QDeclarativeConnections11qt_metacallEN11QMetaObject4CallEiPPv @ 1465 NONAME
- _ZN23QDeclarativeConnections11qt_metacastEPKc @ 1466 NONAME
- _ZN23QDeclarativeConnections13targetChangedEv @ 1467 NONAME
- _ZN23QDeclarativeConnections14connectSignalsEv @ 1468 NONAME
- _ZN23QDeclarativeConnections16staticMetaObjectE @ 1469 NONAME DATA 16
- _ZN23QDeclarativeConnections17componentCompleteEv @ 1470 NONAME
- _ZN23QDeclarativeConnections19getStaticMetaObjectEv @ 1471 NONAME
- _ZN23QDeclarativeConnections9setTargetEP7QObject @ 1472 NONAME
- _ZN23QDeclarativeConnectionsC1EP7QObject @ 1473 NONAME
- _ZN23QDeclarativeConnectionsC2EP7QObject @ 1474 NONAME
- _ZN23QDeclarativeConnectionsD0Ev @ 1475 NONAME
- _ZN23QDeclarativeConnectionsD1Ev @ 1476 NONAME
- _ZN23QDeclarativeConnectionsD2Ev @ 1477 NONAME
- _ZN23QDeclarativeDebugClient10setEnabledEb @ 1478 NONAME
- _ZN23QDeclarativeDebugClient11qt_metacallEN11QMetaObject4CallEiPPv @ 1479 NONAME
- _ZN23QDeclarativeDebugClient11qt_metacastEPKc @ 1480 NONAME
- _ZN23QDeclarativeDebugClient11sendMessageERK10QByteArray @ 1481 NONAME
- _ZN23QDeclarativeDebugClient15messageReceivedERK10QByteArray @ 1482 NONAME
- _ZN23QDeclarativeDebugClient16staticMetaObjectE @ 1483 NONAME DATA 16
- _ZN23QDeclarativeDebugClient19getStaticMetaObjectEv @ 1484 NONAME
- _ZN23QDeclarativeDebugClientC1ERK7QStringP27QDeclarativeDebugConnection @ 1485 NONAME
- _ZN23QDeclarativeDebugClientC2ERK7QStringP27QDeclarativeDebugConnection @ 1486 NONAME
- _ZN23QDeclarativeDomDocument4loadEP18QDeclarativeEngineRK10QByteArrayRK4QUrl @ 1487 NONAME
- _ZN23QDeclarativeDomDocumentC1ERKS_ @ 1488 NONAME
- _ZN23QDeclarativeDomDocumentC1Ev @ 1489 NONAME
- _ZN23QDeclarativeDomDocumentC2ERKS_ @ 1490 NONAME
- _ZN23QDeclarativeDomDocumentC2Ev @ 1491 NONAME
- _ZN23QDeclarativeDomDocumentD1Ev @ 1492 NONAME
- _ZN23QDeclarativeDomDocumentD2Ev @ 1493 NONAME
- _ZN23QDeclarativeDomDocumentaSERKS_ @ 1494 NONAME
- _ZN23QDeclarativeDomPropertyC1ERKS_ @ 1495 NONAME
- _ZN23QDeclarativeDomPropertyC1Ev @ 1496 NONAME
- _ZN23QDeclarativeDomPropertyC2ERKS_ @ 1497 NONAME
- _ZN23QDeclarativeDomPropertyC2Ev @ 1498 NONAME
- _ZN23QDeclarativeDomPropertyD1Ev @ 1499 NONAME
- _ZN23QDeclarativeDomPropertyD2Ev @ 1500 NONAME
- _ZN23QDeclarativeDomPropertyaSERKS_ @ 1501 NONAME
- _ZN23QDeclarativeEngineDebug11qt_metacallEN11QMetaObject4CallEiPPv @ 1502 NONAME
- _ZN23QDeclarativeEngineDebug11qt_metacastEPKc @ 1503 NONAME
- _ZN23QDeclarativeEngineDebug11queryObjectERK32QDeclarativeDebugObjectReferenceP7QObject @ 1504 NONAME
- _ZN23QDeclarativeEngineDebug11removeWatchEP22QDeclarativeDebugWatch @ 1505 NONAME
- _ZN23QDeclarativeEngineDebug16staticMetaObjectE @ 1506 NONAME DATA 16
- _ZN23QDeclarativeEngineDebug17queryRootContextsERK32QDeclarativeDebugEngineReferenceP7QObject @ 1507 NONAME
- _ZN23QDeclarativeEngineDebug19getStaticMetaObjectEv @ 1508 NONAME
- _ZN23QDeclarativeEngineDebug20queryObjectRecursiveERK32QDeclarativeDebugObjectReferenceP7QObject @ 1509 NONAME
- _ZN23QDeclarativeEngineDebug21queryAvailableEnginesEP7QObject @ 1510 NONAME
- _ZN23QDeclarativeEngineDebug21queryExpressionResultEiRK7QStringP7QObject @ 1511 NONAME
- _ZN23QDeclarativeEngineDebug8addWatchERK30QDeclarativeDebugFileReferenceP7QObject @ 1512 NONAME
- _ZN23QDeclarativeEngineDebug8addWatchERK32QDeclarativeDebugObjectReferenceP7QObject @ 1513 NONAME
- _ZN23QDeclarativeEngineDebug8addWatchERK32QDeclarativeDebugObjectReferenceRK7QStringP7QObject @ 1514 NONAME
- _ZN23QDeclarativeEngineDebug8addWatchERK33QDeclarativeDebugContextReferenceRK7QStringP7QObject @ 1515 NONAME
- _ZN23QDeclarativeEngineDebug8addWatchERK34QDeclarativeDebugPropertyReferenceP7QObject @ 1516 NONAME
- _ZN23QDeclarativeEngineDebugC1EP27QDeclarativeDebugConnectionP7QObject @ 1517 NONAME
- _ZN23QDeclarativeEngineDebugC2EP27QDeclarativeDebugConnectionP7QObject @ 1518 NONAME
- _ZN23QDeclarativeItemPrivate17setConsistentTimeEi @ 1519 NONAME
- _ZN23QDeclarativePaintedItem10clearCacheEv @ 1520 NONAME
- _ZN23QDeclarativePaintedItem10dirtyCacheERK5QRect @ 1521 NONAME
- _ZN23QDeclarativePaintedItem11qt_metacallEN11QMetaObject4CallEiPPv @ 1522 NONAME
- _ZN23QDeclarativePaintedItem11qt_metacastEPKc @ 1523 NONAME
- _ZN23QDeclarativePaintedItem12setFillColorERK6QColor @ 1524 NONAME
- _ZN23QDeclarativePaintedItem14setCacheFrozenEb @ 1525 NONAME
- _ZN23QDeclarativePaintedItem14setSmoothCacheEb @ 1526 NONAME
- _ZN23QDeclarativePaintedItem15setContentsSizeERK5QSize @ 1527 NONAME
- _ZN23QDeclarativePaintedItem16fillColorChangedEv @ 1528 NONAME
- _ZN23QDeclarativePaintedItem16setContentsScaleEf @ 1529 NONAME
- _ZN23QDeclarativePaintedItem16staticMetaObjectE @ 1530 NONAME DATA 16
- _ZN23QDeclarativePaintedItem17setPixelCacheSizeEi @ 1531 NONAME
- _ZN23QDeclarativePaintedItem19contentsSizeChangedEv @ 1532 NONAME
- _ZN23QDeclarativePaintedItem19getStaticMetaObjectEv @ 1533 NONAME
- _ZN23QDeclarativePaintedItem20contentsScaleChangedEv @ 1534 NONAME
- _ZN23QDeclarativePaintedItem4initEv @ 1535 NONAME
- _ZN23QDeclarativePaintedItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1536 NONAME
- _ZN23QDeclarativePaintedItemC2EP16QDeclarativeItem @ 1537 NONAME
- _ZN23QDeclarativePaintedItemC2ER30QDeclarativePaintedItemPrivateP16QDeclarativeItem @ 1538 NONAME
- _ZN23QDeclarativePaintedItemD0Ev @ 1539 NONAME
- _ZN23QDeclarativePaintedItemD1Ev @ 1540 NONAME
- _ZN23QDeclarativePaintedItemD2Ev @ 1541 NONAME
- _ZN23QDeclarativePathElement11qt_metacallEN11QMetaObject4CallEiPPv @ 1542 NONAME
- _ZN23QDeclarativePathElement11qt_metacastEPKc @ 1543 NONAME
- _ZN23QDeclarativePathElement16staticMetaObjectE @ 1544 NONAME DATA 16
- _ZN23QDeclarativePathElement19getStaticMetaObjectEv @ 1545 NONAME
- _ZN23QDeclarativePathElement7changedEv @ 1546 NONAME
- _ZN23QDeclarativePathPercent11qt_metacallEN11QMetaObject4CallEiPPv @ 1547 NONAME
- _ZN23QDeclarativePathPercent11qt_metacastEPKc @ 1548 NONAME
- _ZN23QDeclarativePathPercent16staticMetaObjectE @ 1549 NONAME DATA 16
- _ZN23QDeclarativePathPercent19getStaticMetaObjectEv @ 1550 NONAME
- _ZN23QDeclarativePathPercent8setValueEf @ 1551 NONAME
- _ZN23QDeclarativePixmapCache15pendingRequestsEv @ 1552 NONAME
- _ZN23QDeclarativePixmapCache3getERK4QUrlP7QPixmapb @ 1553 NONAME
- _ZN23QDeclarativePixmapCache6cancelERK4QUrlP7QObject @ 1554 NONAME
- _ZN23QDeclarativePixmapCache7requestEP18QDeclarativeEngineRK4QUrl @ 1555 NONAME
- _ZN23QDeclarativePixmapReply10setLoadingEv @ 1556 NONAME
- _ZN23QDeclarativePixmapReply11qt_metacallEN11QMetaObject4CallEiPPv @ 1557 NONAME
- _ZN23QDeclarativePixmapReply11qt_metacastEPKc @ 1558 NONAME
- _ZN23QDeclarativePixmapReply16downloadProgressExx @ 1559 NONAME
- _ZN23QDeclarativePixmapReply16staticMetaObjectE @ 1560 NONAME DATA 16
- _ZN23QDeclarativePixmapReply19getStaticMetaObjectEv @ 1561 NONAME
- _ZN23QDeclarativePixmapReply5eventEP6QEvent @ 1562 NONAME
- _ZN23QDeclarativePixmapReply6addRefEv @ 1563 NONAME
- _ZN23QDeclarativePixmapReply7releaseEb @ 1564 NONAME
- _ZN23QDeclarativePixmapReply8finishedEv @ 1565 NONAME
- _ZN23QDeclarativePixmapReplyC1EP23QDeclarativeImageReaderRK4QUrl @ 1566 NONAME
- _ZN23QDeclarativePixmapReplyC2EP23QDeclarativeImageReaderRK4QUrl @ 1567 NONAME
- _ZN23QDeclarativePixmapReplyD0Ev @ 1568 NONAME
- _ZN23QDeclarativePixmapReplyD1Ev @ 1569 NONAME
- _ZN23QDeclarativePixmapReplyD2Ev @ 1570 NONAME
- _ZN23QDeclarativePropertyMap11qt_metacallEN11QMetaObject4CallEiPPv @ 1571 NONAME
- _ZN23QDeclarativePropertyMap11qt_metacastEPKc @ 1572 NONAME
- _ZN23QDeclarativePropertyMap12valueChangedERK7QString @ 1573 NONAME
- _ZN23QDeclarativePropertyMap16staticMetaObjectE @ 1574 NONAME DATA 16
- _ZN23QDeclarativePropertyMap19getStaticMetaObjectEv @ 1575 NONAME
- _ZN23QDeclarativePropertyMap5clearERK7QString @ 1576 NONAME
- _ZN23QDeclarativePropertyMap6insertERK7QStringRK8QVariant @ 1577 NONAME
- _ZN23QDeclarativePropertyMapC1EP7QObject @ 1578 NONAME
- _ZN23QDeclarativePropertyMapC2EP7QObject @ 1579 NONAME
- _ZN23QDeclarativePropertyMapD0Ev @ 1580 NONAME
- _ZN23QDeclarativePropertyMapD1Ev @ 1581 NONAME
- _ZN23QDeclarativePropertyMapD2Ev @ 1582 NONAME
- _ZN23QDeclarativePropertyMapixERK7QString @ 1583 NONAME
- _ZN23QDeclarativeViewSection11qt_metacallEN11QMetaObject4CallEiPPv @ 1584 NONAME
- _ZN23QDeclarativeViewSection11qt_metacastEPKc @ 1585 NONAME
- _ZN23QDeclarativeViewSection11setCriteriaENS_15SectionCriteriaE @ 1586 NONAME
- _ZN23QDeclarativeViewSection11setDelegateEP21QDeclarativeComponent @ 1587 NONAME
- _ZN23QDeclarativeViewSection11setPropertyERK7QString @ 1588 NONAME
- _ZN23QDeclarativeViewSection13sectionStringERK7QString @ 1589 NONAME
- _ZN23QDeclarativeViewSection15delegateChangedEv @ 1590 NONAME
- _ZN23QDeclarativeViewSection16staticMetaObjectE @ 1591 NONAME DATA 16
- _ZN23QDeclarativeViewSection19getStaticMetaObjectEv @ 1592 NONAME
- _ZN23QDeclarativeViewSection7changedEv @ 1593 NONAME
- _ZN23QDeclarativeVisualModel10itemsMovedEiii @ 1594 NONAME
- _ZN23QDeclarativeVisualModel10modelResetEv @ 1595 NONAME
- _ZN23QDeclarativeVisualModel11createdItemEiP16QDeclarativeItem @ 1596 NONAME
- _ZN23QDeclarativeVisualModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1597 NONAME
- _ZN23QDeclarativeVisualModel11qt_metacastEPKc @ 1598 NONAME
- _ZN23QDeclarativeVisualModel12countChangedEv @ 1599 NONAME
- _ZN23QDeclarativeVisualModel12itemsRemovedEii @ 1600 NONAME
- _ZN23QDeclarativeVisualModel13itemsInsertedEii @ 1601 NONAME
- _ZN23QDeclarativeVisualModel14destroyingItemEP16QDeclarativeItem @ 1602 NONAME
- _ZN23QDeclarativeVisualModel16staticMetaObjectE @ 1603 NONAME DATA 16
- _ZN23QDeclarativeVisualModel19getStaticMetaObjectEv @ 1604 NONAME
- _ZN24QDeclarativeCustomParser11clearErrorsEv @ 1605 NONAME
- _ZN24QDeclarativeCustomParser5errorERK28QDeclarativeCustomParserNodeRK7QString @ 1606 NONAME
- _ZN24QDeclarativeCustomParser5errorERK32QDeclarativeCustomParserPropertyRK7QString @ 1607 NONAME
- _ZN24QDeclarativeDebugService11idForObjectEP7QObject @ 1608 NONAME
- _ZN24QDeclarativeDebugService11objectForIdEi @ 1609 NONAME
- _ZN24QDeclarativeDebugService11qt_metacallEN11QMetaObject4CallEiPPv @ 1610 NONAME
- _ZN24QDeclarativeDebugService11qt_metacastEPKc @ 1611 NONAME
- _ZN24QDeclarativeDebugService11sendMessageERK10QByteArray @ 1612 NONAME
- _ZN24QDeclarativeDebugService14enabledChangedEb @ 1613 NONAME
- _ZN24QDeclarativeDebugService14objectToStringEP7QObject @ 1614 NONAME
- _ZN24QDeclarativeDebugService14waitForClientsEv @ 1615 NONAME
- _ZN24QDeclarativeDebugService15messageReceivedERK10QByteArray @ 1616 NONAME
- _ZN24QDeclarativeDebugService16staticMetaObjectE @ 1617 NONAME DATA 16
- _ZN24QDeclarativeDebugService18isDebuggingEnabledEv @ 1618 NONAME
- _ZN24QDeclarativeDebugService19getStaticMetaObjectEv @ 1619 NONAME
- _ZN24QDeclarativeDebugService19notifyOnServerStartEP7QObjectPKc @ 1620 NONAME
- _ZN24QDeclarativeDebugServiceC1ERK7QStringP7QObject @ 1621 NONAME
- _ZN24QDeclarativeDebugServiceC2ERK7QStringP7QObject @ 1622 NONAME
- _ZN24QDeclarativeDomComponentC1ERKS_ @ 1623 NONAME
- _ZN24QDeclarativeDomComponentC1Ev @ 1624 NONAME
- _ZN24QDeclarativeDomComponentC2ERKS_ @ 1625 NONAME
- _ZN24QDeclarativeDomComponentC2Ev @ 1626 NONAME
- _ZN24QDeclarativeDomComponentD1Ev @ 1627 NONAME
- _ZN24QDeclarativeDomComponentD2Ev @ 1628 NONAME
- _ZN24QDeclarativeDomComponentaSERKS_ @ 1629 NONAME
- _ZN24QDeclarativeGradientStop11qt_metacallEN11QMetaObject4CallEiPPv @ 1630 NONAME
- _ZN24QDeclarativeGradientStop11qt_metacastEPKc @ 1631 NONAME
- _ZN24QDeclarativeGradientStop14updateGradientEv @ 1632 NONAME
- _ZN24QDeclarativeGradientStop16staticMetaObjectE @ 1633 NONAME DATA 16
- _ZN24QDeclarativeGradientStop19getStaticMetaObjectEv @ 1634 NONAME
- _ZN24QDeclarativeListAccessor7setListERK8QVariantP18QDeclarativeEngine @ 1635 NONAME
- _ZN24QDeclarativeListAccessorC1Ev @ 1636 NONAME
- _ZN24QDeclarativeListAccessorC2Ev @ 1637 NONAME
- _ZN24QDeclarativeListAccessorD1Ev @ 1638 NONAME
- _ZN24QDeclarativeListAccessorD2Ev @ 1639 NONAME
- _ZN24QDeclarativeParentChange11qt_metacallEN11QMetaObject4CallEiPPv @ 1640 NONAME
- _ZN24QDeclarativeParentChange11qt_metacastEPKc @ 1641 NONAME
- _ZN24QDeclarativeParentChange11setRotationEf @ 1642 NONAME
- _ZN24QDeclarativeParentChange12isReversableEv @ 1643 NONAME
- _ZN24QDeclarativeParentChange13saveOriginalsEv @ 1644 NONAME
- _ZN24QDeclarativeParentChange16staticMetaObjectE @ 1645 NONAME DATA 16
- _ZN24QDeclarativeParentChange17saveCurrentValuesEv @ 1646 NONAME
- _ZN24QDeclarativeParentChange19getStaticMetaObjectEv @ 1647 NONAME
- _ZN24QDeclarativeParentChange4setXEf @ 1648 NONAME
- _ZN24QDeclarativeParentChange4setYEf @ 1649 NONAME
- _ZN24QDeclarativeParentChange6rewindEv @ 1650 NONAME
- _ZN24QDeclarativeParentChange7actionsEv @ 1651 NONAME
- _ZN24QDeclarativeParentChange7executeEv @ 1652 NONAME
- _ZN24QDeclarativeParentChange7reverseEv @ 1653 NONAME
- _ZN24QDeclarativeParentChange8overrideEP23QDeclarativeActionEvent @ 1654 NONAME
- _ZN24QDeclarativeParentChange8setScaleEf @ 1655 NONAME
- _ZN24QDeclarativeParentChange8setWidthEf @ 1656 NONAME
- _ZN24QDeclarativeParentChange9setHeightEf @ 1657 NONAME
- _ZN24QDeclarativeParentChange9setObjectEP16QDeclarativeItem @ 1658 NONAME
- _ZN24QDeclarativeParentChange9setParentEP16QDeclarativeItem @ 1659 NONAME
- _ZN24QDeclarativeParentChangeC1EP7QObject @ 1660 NONAME
- _ZN24QDeclarativeParentChangeC2EP7QObject @ 1661 NONAME
- _ZN24QDeclarativeParentChangeD0Ev @ 1662 NONAME
- _ZN24QDeclarativeParentChangeD1Ev @ 1663 NONAME
- _ZN24QDeclarativeParentChangeD2Ev @ 1664 NONAME
- _ZN24QDeclarativeParserStatus10classBeginEv @ 1665 NONAME
- _ZN24QDeclarativeParserStatus17componentCompleteEv @ 1666 NONAME
- _ZN24QDeclarativeParserStatusC1Ev @ 1667 NONAME
- _ZN24QDeclarativeParserStatusC2Ev @ 1668 NONAME
- _ZN24QDeclarativeParserStatusD0Ev @ 1669 NONAME
- _ZN24QDeclarativeParserStatusD1Ev @ 1670 NONAME
- _ZN24QDeclarativeParserStatusD2Ev @ 1671 NONAME
- _ZN24QDeclarativeScriptString10setContextEP19QDeclarativeContext @ 1672 NONAME
- _ZN24QDeclarativeScriptString14setScopeObjectEP7QObject @ 1673 NONAME
- _ZN24QDeclarativeScriptString9setScriptERK7QString @ 1674 NONAME
- _ZN24QDeclarativeScriptStringC1ERKS_ @ 1675 NONAME
- _ZN24QDeclarativeScriptStringC1Ev @ 1676 NONAME
- _ZN24QDeclarativeScriptStringC2ERKS_ @ 1677 NONAME
- _ZN24QDeclarativeScriptStringC2Ev @ 1678 NONAME
- _ZN24QDeclarativeScriptStringD1Ev @ 1679 NONAME
- _ZN24QDeclarativeScriptStringD2Ev @ 1680 NONAME
- _ZN24QDeclarativeScriptStringaSERKS_ @ 1681 NONAME
- _ZN24QDeclarativeSpringFollow10setDampingEf @ 1682 NONAME
- _ZN24QDeclarativeSpringFollow10setEnabledEb @ 1683 NONAME
- _ZN24QDeclarativeSpringFollow10setEpsilonEf @ 1684 NONAME
- _ZN24QDeclarativeSpringFollow10setModulusEf @ 1685 NONAME
- _ZN24QDeclarativeSpringFollow11massChangedEv @ 1686 NONAME
- _ZN24QDeclarativeSpringFollow11qt_metacallEN11QMetaObject4CallEiPPv @ 1687 NONAME
- _ZN24QDeclarativeSpringFollow11qt_metacastEPKc @ 1688 NONAME
- _ZN24QDeclarativeSpringFollow11setVelocityEf @ 1689 NONAME
- _ZN24QDeclarativeSpringFollow11syncChangedEv @ 1690 NONAME
- _ZN24QDeclarativeSpringFollow12valueChangedEf @ 1691 NONAME
- _ZN24QDeclarativeSpringFollow14modulusChangedEv @ 1692 NONAME
- _ZN24QDeclarativeSpringFollow14setSourceValueEf @ 1693 NONAME
- _ZN24QDeclarativeSpringFollow16staticMetaObjectE @ 1694 NONAME DATA 16
- _ZN24QDeclarativeSpringFollow19getStaticMetaObjectEv @ 1695 NONAME
- _ZN24QDeclarativeSpringFollow7setMassEf @ 1696 NONAME
- _ZN24QDeclarativeSpringFollow9setSpringEf @ 1697 NONAME
- _ZN24QDeclarativeSpringFollow9setTargetERK20QDeclarativeProperty @ 1698 NONAME
- _ZN24QDeclarativeSpringFollowC1EP7QObject @ 1699 NONAME
- _ZN24QDeclarativeSpringFollowC2EP7QObject @ 1700 NONAME
- _ZN24QDeclarativeSpringFollowD0Ev @ 1701 NONAME
- _ZN24QDeclarativeSpringFollowD1Ev @ 1702 NONAME
- _ZN24QDeclarativeSpringFollowD2Ev @ 1703 NONAME
- _ZN24QDeclarativeXmlListModel10classBeginEv @ 1704 NONAME
- _ZN24QDeclarativeXmlListModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1705 NONAME
- _ZN24QDeclarativeXmlListModel11qt_metacastEPKc @ 1706 NONAME
- _ZN24QDeclarativeXmlListModel11roleObjectsEv @ 1707 NONAME
- _ZN24QDeclarativeXmlListModel12countChangedEv @ 1708 NONAME
- _ZN24QDeclarativeXmlListModel13statusChangedENS_6StatusE @ 1709 NONAME
- _ZN24QDeclarativeXmlListModel14queryCompletedEii @ 1710 NONAME
- _ZN24QDeclarativeXmlListModel15progressChangedEf @ 1711 NONAME
- _ZN24QDeclarativeXmlListModel15requestFinishedEv @ 1712 NONAME
- _ZN24QDeclarativeXmlListModel15requestProgressExx @ 1713 NONAME
- _ZN24QDeclarativeXmlListModel16staticMetaObjectE @ 1714 NONAME DATA 16
- _ZN24QDeclarativeXmlListModel17componentCompleteEv @ 1715 NONAME
- _ZN24QDeclarativeXmlListModel19getStaticMetaObjectEv @ 1716 NONAME
- _ZN24QDeclarativeXmlListModel24setNamespaceDeclarationsERK7QString @ 1717 NONAME
- _ZN24QDeclarativeXmlListModel6reloadEv @ 1718 NONAME
- _ZN24QDeclarativeXmlListModel6setXmlERK7QString @ 1719 NONAME
- _ZN24QDeclarativeXmlListModel8setQueryERK7QString @ 1720 NONAME
- _ZN24QDeclarativeXmlListModel9setSourceERK4QUrl @ 1721 NONAME
- _ZN24QDeclarativeXmlListModelC1EP7QObject @ 1722 NONAME
- _ZN24QDeclarativeXmlListModelC2EP7QObject @ 1723 NONAME
- _ZN24QDeclarativeXmlListModelD0Ev @ 1724 NONAME
- _ZN24QDeclarativeXmlListModelD1Ev @ 1725 NONAME
- _ZN24QDeclarativeXmlListModelD2Ev @ 1726 NONAME
- _ZN25QDeclarativeAnchorChanges11qt_metacallEN11QMetaObject4CallEiPPv @ 1727 NONAME
- _ZN25QDeclarativeAnchorChanges11qt_metacastEPKc @ 1728 NONAME
- _ZN25QDeclarativeAnchorChanges11setBaselineERK22QDeclarativeAnchorLine @ 1729 NONAME
- _ZN25QDeclarativeAnchorChanges12extraActionsEv @ 1730 NONAME
- _ZN25QDeclarativeAnchorChanges12isReversableEv @ 1731 NONAME
- _ZN25QDeclarativeAnchorChanges13saveOriginalsEv @ 1732 NONAME
- _ZN25QDeclarativeAnchorChanges15changesBindingsEv @ 1733 NONAME
- _ZN25QDeclarativeAnchorChanges16staticMetaObjectE @ 1734 NONAME DATA 16
- _ZN25QDeclarativeAnchorChanges17saveCurrentValuesEv @ 1735 NONAME
- _ZN25QDeclarativeAnchorChanges17setVerticalCenterERK22QDeclarativeAnchorLine @ 1736 NONAME
- _ZN25QDeclarativeAnchorChanges19getStaticMetaObjectEv @ 1737 NONAME
- _ZN25QDeclarativeAnchorChanges19setHorizontalCenterERK22QDeclarativeAnchorLine @ 1738 NONAME
- _ZN25QDeclarativeAnchorChanges20clearForwardBindingsEv @ 1739 NONAME
- _ZN25QDeclarativeAnchorChanges20clearReverseBindingsEv @ 1740 NONAME
- _ZN25QDeclarativeAnchorChanges6rewindEv @ 1741 NONAME
- _ZN25QDeclarativeAnchorChanges6setTopERK22QDeclarativeAnchorLine @ 1742 NONAME
- _ZN25QDeclarativeAnchorChanges7actionsEv @ 1743 NONAME
- _ZN25QDeclarativeAnchorChanges7executeEv @ 1744 NONAME
- _ZN25QDeclarativeAnchorChanges7reverseEv @ 1745 NONAME
- _ZN25QDeclarativeAnchorChanges7setLeftERK22QDeclarativeAnchorLine @ 1746 NONAME
- _ZN25QDeclarativeAnchorChanges8overrideEP23QDeclarativeActionEvent @ 1747 NONAME
- _ZN25QDeclarativeAnchorChanges8setResetERK7QString @ 1748 NONAME
- _ZN25QDeclarativeAnchorChanges8setRightERK22QDeclarativeAnchorLine @ 1749 NONAME
- _ZN25QDeclarativeAnchorChanges9setBottomERK22QDeclarativeAnchorLine @ 1750 NONAME
- _ZN25QDeclarativeAnchorChanges9setObjectEP16QDeclarativeItem @ 1751 NONAME
- _ZN25QDeclarativeAnchorChangesC1EP7QObject @ 1752 NONAME
- _ZN25QDeclarativeAnchorChangesC2EP7QObject @ 1753 NONAME
- _ZN25QDeclarativeAnchorChangesD0Ev @ 1754 NONAME
- _ZN25QDeclarativeAnchorChangesD1Ev @ 1755 NONAME
- _ZN25QDeclarativeAnchorChangesD2Ev @ 1756 NONAME
- _ZN25QDeclarativeAnimatedImage10setPlayingEb @ 1757 NONAME
- _ZN25QDeclarativeAnimatedImage11movieUpdateEv @ 1758 NONAME
- _ZN25QDeclarativeAnimatedImage11qt_metacallEN11QMetaObject4CallEiPPv @ 1759 NONAME
- _ZN25QDeclarativeAnimatedImage11qt_metacastEPKc @ 1760 NONAME
- _ZN25QDeclarativeAnimatedImage12frameChangedEv @ 1761 NONAME
- _ZN25QDeclarativeAnimatedImage13pausedChangedEv @ 1762 NONAME
- _ZN25QDeclarativeAnimatedImage14playingChangedEv @ 1763 NONAME
- _ZN25QDeclarativeAnimatedImage15setCurrentFrameEi @ 1764 NONAME
- _ZN25QDeclarativeAnimatedImage16staticMetaObjectE @ 1765 NONAME DATA 16
- _ZN25QDeclarativeAnimatedImage17componentCompleteEv @ 1766 NONAME
- _ZN25QDeclarativeAnimatedImage19getStaticMetaObjectEv @ 1767 NONAME
- _ZN25QDeclarativeAnimatedImage20movieRequestFinishedEv @ 1768 NONAME
- _ZN25QDeclarativeAnimatedImage20playingStatusChangedEv @ 1769 NONAME
- _ZN25QDeclarativeAnimatedImage9setPausedEb @ 1770 NONAME
- _ZN25QDeclarativeAnimatedImage9setSourceERK4QUrl @ 1771 NONAME
- _ZN25QDeclarativeAnimatedImageC1EP16QDeclarativeItem @ 1772 NONAME
- _ZN25QDeclarativeAnimatedImageC2EP16QDeclarativeItem @ 1773 NONAME
- _ZN25QDeclarativeAnimatedImageD0Ev @ 1774 NONAME
- _ZN25QDeclarativeAnimatedImageD1Ev @ 1775 NONAME
- _ZN25QDeclarativeAnimatedImageD2Ev @ 1776 NONAME
- _ZN25QDeclarativeImageProviderD0Ev @ 1777 NONAME
- _ZN25QDeclarativeImageProviderD1Ev @ 1778 NONAME
- _ZN25QDeclarativeImageProviderD2Ev @ 1779 NONAME
- _ZN25QDeclarativeListReferenceC1EP7QObjectPKcP18QDeclarativeEngine @ 1780 NONAME
- _ZN25QDeclarativeListReferenceC1ERKS_ @ 1781 NONAME
- _ZN25QDeclarativeListReferenceC1Ev @ 1782 NONAME
- _ZN25QDeclarativeListReferenceC2EP7QObjectPKcP18QDeclarativeEngine @ 1783 NONAME
- _ZN25QDeclarativeListReferenceC2ERKS_ @ 1784 NONAME
- _ZN25QDeclarativeListReferenceC2Ev @ 1785 NONAME
- _ZN25QDeclarativeListReferenceD1Ev @ 1786 NONAME
- _ZN25QDeclarativeListReferenceD2Ev @ 1787 NONAME
- _ZN25QDeclarativeListReferenceaSERKS_ @ 1788 NONAME
- _ZN25QDeclarativePathAttribute11qt_metacallEN11QMetaObject4CallEiPPv @ 1789 NONAME
- _ZN25QDeclarativePathAttribute11qt_metacastEPKc @ 1790 NONAME
- _ZN25QDeclarativePathAttribute16staticMetaObjectE @ 1791 NONAME DATA 16
- _ZN25QDeclarativePathAttribute19getStaticMetaObjectEv @ 1792 NONAME
- _ZN25QDeclarativePathAttribute7setNameERK7QString @ 1793 NONAME
- _ZN25QDeclarativePathAttribute8setValueEf @ 1794 NONAME
- _ZN25QDeclarativeSystemPalette11eventFilterEP7QObjectP6QEvent @ 1795 NONAME
- _ZN25QDeclarativeSystemPalette11qt_metacallEN11QMetaObject4CallEiPPv @ 1796 NONAME
- _ZN25QDeclarativeSystemPalette11qt_metacastEPKc @ 1797 NONAME
- _ZN25QDeclarativeSystemPalette13setColorGroupENS_10ColorGroupE @ 1798 NONAME
- _ZN25QDeclarativeSystemPalette14paletteChangedEv @ 1799 NONAME
- _ZN25QDeclarativeSystemPalette16staticMetaObjectE @ 1800 NONAME DATA 16
- _ZN25QDeclarativeSystemPalette19getStaticMetaObjectEv @ 1801 NONAME
- _ZN25QDeclarativeSystemPalette5eventEP6QEvent @ 1802 NONAME
- _ZN25QDeclarativeSystemPaletteC1EP7QObject @ 1803 NONAME
- _ZN25QDeclarativeSystemPaletteC2EP7QObject @ 1804 NONAME
- _ZN25QDeclarativeSystemPaletteD0Ev @ 1805 NONAME
- _ZN25QDeclarativeSystemPaletteD1Ev @ 1806 NONAME
- _ZN25QDeclarativeSystemPaletteD2Ev @ 1807 NONAME
- _ZN26QDeclarativeBasePositioner10addChangedEv @ 1808 NONAME
- _ZN26QDeclarativeBasePositioner10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 1809 NONAME
- _ZN26QDeclarativeBasePositioner10setSpacingEi @ 1810 NONAME
- _ZN26QDeclarativeBasePositioner11moveChangedEv @ 1811 NONAME
- _ZN26QDeclarativeBasePositioner11qt_metacallEN11QMetaObject4CallEiPPv @ 1812 NONAME
- _ZN26QDeclarativeBasePositioner11qt_metacastEPKc @ 1813 NONAME
- _ZN26QDeclarativeBasePositioner14prePositioningEv @ 1814 NONAME
- _ZN26QDeclarativeBasePositioner14spacingChangedEv @ 1815 NONAME
- _ZN26QDeclarativeBasePositioner16staticMetaObjectE @ 1816 NONAME DATA 16
- _ZN26QDeclarativeBasePositioner17componentCompleteEv @ 1817 NONAME
- _ZN26QDeclarativeBasePositioner19getStaticMetaObjectEv @ 1818 NONAME
- _ZN26QDeclarativeBasePositioner22finishApplyTransitionsEv @ 1819 NONAME
- _ZN26QDeclarativeBasePositioner6setAddEP22QDeclarativeTransition @ 1820 NONAME
- _ZN26QDeclarativeBasePositioner7setMoveEP22QDeclarativeTransition @ 1821 NONAME
- _ZN26QDeclarativeBasePositioner9positionXEiRKNS_14PositionedItemE @ 1822 NONAME
- _ZN26QDeclarativeBasePositioner9positionYEiRKNS_14PositionedItemE @ 1823 NONAME
- _ZN26QDeclarativeBasePositionerC2ENS_14PositionerTypeEP16QDeclarativeItem @ 1824 NONAME
- _ZN26QDeclarativeBasePositionerC2ER33QDeclarativeBasePositionerPrivateNS_14PositionerTypeEP16QDeclarativeItem @ 1825 NONAME
- _ZN26QDeclarativeBasePositionerD0Ev @ 1826 NONAME
- _ZN26QDeclarativeBasePositionerD1Ev @ 1827 NONAME
- _ZN26QDeclarativeBasePositionerD2Ev @ 1828 NONAME
- _ZN26QDeclarativeContextPrivate10context_atEP24QDeclarativeListPropertyI7QObjectEi @ 1829 NONAME
- _ZN26QDeclarativeContextPrivate13context_countEP24QDeclarativeListPropertyI7QObjectE @ 1830 NONAME
- _ZN26QDeclarativeContextPrivate13setIdPropertyEiP7QObject @ 1831 NONAME
- _ZN26QDeclarativeContextPrivate17invalidateEnginesEv @ 1832 NONAME
- _ZN26QDeclarativeContextPrivate17setIdPropertyDataEP24QDeclarativeIntegerCache @ 1833 NONAME
- _ZN26QDeclarativeContextPrivate18refreshExpressionsEv @ 1834 NONAME
- _ZN26QDeclarativeContextPrivate4initEv @ 1835 NONAME
- _ZN26QDeclarativeContextPrivate9addScriptERKN18QDeclarativeParser6Object11ScriptBlockEP7QObject @ 1836 NONAME
- _ZN26QDeclarativeContextPrivate9destroyedEPNS_12ContextGuardE @ 1837 NONAME
- _ZN26QDeclarativeContextPrivateC1Ev @ 1838 NONAME
- _ZN26QDeclarativeContextPrivateC2Ev @ 1839 NONAME
- _ZN26QDeclarativeDebuggerStatus16setSelectedStateEb @ 1840 NONAME
- _ZN26QDeclarativeDebuggerStatusD0Ev @ 1841 NONAME
- _ZN26QDeclarativeDebuggerStatusD1Ev @ 1842 NONAME
- _ZN26QDeclarativeDebuggerStatusD2Ev @ 1843 NONAME
- _ZN26QDeclarativeOpenMetaObject12initialValueEi @ 1844 NONAME
- _ZN26QDeclarativeOpenMetaObject12propertyReadEi @ 1845 NONAME
- _ZN26QDeclarativeOpenMetaObject13propertyWriteEi @ 1846 NONAME
- _ZN26QDeclarativeOpenMetaObject14createPropertyEPKcS1_ @ 1847 NONAME
- _ZN26QDeclarativeOpenMetaObject15propertyCreatedEiR20QMetaPropertyBuilder @ 1848 NONAME
- _ZN26QDeclarativeOpenMetaObject8metaCallEN11QMetaObject4CallEiPPv @ 1849 NONAME
- _ZN26QDeclarativeOpenMetaObject8setValueERK10QByteArrayRK8QVariant @ 1850 NONAME
- _ZN26QDeclarativeOpenMetaObject8setValueEiRK8QVariant @ 1851 NONAME
- _ZN26QDeclarativeOpenMetaObject9setCachedEb @ 1852 NONAME
- _ZN26QDeclarativeOpenMetaObjectC1EP7QObjectP30QDeclarativeOpenMetaObjectTypeb @ 1853 NONAME
- _ZN26QDeclarativeOpenMetaObjectC1EP7QObjectb @ 1854 NONAME
- _ZN26QDeclarativeOpenMetaObjectC2EP7QObjectP30QDeclarativeOpenMetaObjectTypeb @ 1855 NONAME
- _ZN26QDeclarativeOpenMetaObjectC2EP7QObjectb @ 1856 NONAME
- _ZN26QDeclarativeOpenMetaObjectD0Ev @ 1857 NONAME
- _ZN26QDeclarativeOpenMetaObjectD1Ev @ 1858 NONAME
- _ZN26QDeclarativeOpenMetaObjectD2Ev @ 1859 NONAME
- _ZN26QDeclarativeOpenMetaObjectixERK10QByteArray @ 1860 NONAME
- _ZN26QDeclarativeParticleMotion11qt_metacallEN11QMetaObject4CallEiPPv @ 1861 NONAME
- _ZN26QDeclarativeParticleMotion11qt_metacastEPKc @ 1862 NONAME
- _ZN26QDeclarativeParticleMotion16staticMetaObjectE @ 1863 NONAME DATA 16
- _ZN26QDeclarativeParticleMotion19getStaticMetaObjectEv @ 1864 NONAME
- _ZN26QDeclarativeParticleMotion7advanceER20QDeclarativeParticlei @ 1865 NONAME
- _ZN26QDeclarativeParticleMotion7createdER20QDeclarativeParticle @ 1866 NONAME
- _ZN26QDeclarativeParticleMotion7destroyER20QDeclarativeParticle @ 1867 NONAME
- _ZN26QDeclarativeParticleMotionC1EP7QObject @ 1868 NONAME
- _ZN26QDeclarativeParticleMotionC2EP7QObject @ 1869 NONAME
- _ZN26QDeclarativeStateOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 1870 NONAME
- _ZN26QDeclarativeStateOperation11qt_metacastEPKc @ 1871 NONAME
- _ZN26QDeclarativeStateOperation16staticMetaObjectE @ 1872 NONAME DATA 16
- _ZN26QDeclarativeStateOperation19getStaticMetaObjectEv @ 1873 NONAME
- _ZN26QDeclarativeStateOperation7actionsEv @ 1874 NONAME
- _ZN26QDeclarativeStateOperationC1ER14QObjectPrivateP7QObject @ 1875 NONAME
- _ZN26QDeclarativeStateOperationC2ER14QObjectPrivateP7QObject @ 1876 NONAME
- _ZN27QDeclarativeDebugConnection11qt_metacallEN11QMetaObject4CallEiPPv @ 1877 NONAME
- _ZN27QDeclarativeDebugConnection11qt_metacastEPKc @ 1878 NONAME
- _ZN27QDeclarativeDebugConnection16staticMetaObjectE @ 1879 NONAME DATA 16
- _ZN27QDeclarativeDebugConnection19getStaticMetaObjectEv @ 1880 NONAME
- _ZN27QDeclarativeDebugConnectionC1EP7QObject @ 1881 NONAME
- _ZN27QDeclarativeDebugConnectionC2EP7QObject @ 1882 NONAME
- _ZN27QDeclarativeDomValueBindingC1ERKS_ @ 1883 NONAME
- _ZN27QDeclarativeDomValueBindingC1Ev @ 1884 NONAME
- _ZN27QDeclarativeDomValueBindingC2ERKS_ @ 1885 NONAME
- _ZN27QDeclarativeDomValueBindingC2Ev @ 1886 NONAME
- _ZN27QDeclarativeDomValueBindingD1Ev @ 1887 NONAME
- _ZN27QDeclarativeDomValueBindingD2Ev @ 1888 NONAME
- _ZN27QDeclarativeDomValueBindingaSERKS_ @ 1889 NONAME
- _ZN27QDeclarativeDomValueLiteralC1ERKS_ @ 1890 NONAME
- _ZN27QDeclarativeDomValueLiteralC1Ev @ 1891 NONAME
- _ZN27QDeclarativeDomValueLiteralC2ERKS_ @ 1892 NONAME
- _ZN27QDeclarativeDomValueLiteralC2Ev @ 1893 NONAME
- _ZN27QDeclarativeDomValueLiteralD1Ev @ 1894 NONAME
- _ZN27QDeclarativeDomValueLiteralD2Ev @ 1895 NONAME
- _ZN27QDeclarativeDomValueLiteralaSERKS_ @ 1896 NONAME
- _ZN27QDeclarativeExtensionPlugin11qt_metacallEN11QMetaObject4CallEiPPv @ 1897 NONAME
- _ZN27QDeclarativeExtensionPlugin11qt_metacastEPKc @ 1898 NONAME
- _ZN27QDeclarativeExtensionPlugin16initializeEngineEP18QDeclarativeEnginePKc @ 1899 NONAME
- _ZN27QDeclarativeExtensionPlugin16staticMetaObjectE @ 1900 NONAME DATA 16
- _ZN27QDeclarativeExtensionPlugin19getStaticMetaObjectEv @ 1901 NONAME
- _ZN27QDeclarativeExtensionPluginC2EP7QObject @ 1902 NONAME
- _ZN27QDeclarativeExtensionPluginD0Ev @ 1903 NONAME
- _ZN27QDeclarativeExtensionPluginD1Ev @ 1904 NONAME
- _ZN27QDeclarativeExtensionPluginD2Ev @ 1905 NONAME
- _ZN27QDeclarativeGridScaledImage12stringToRuleERK7QString @ 1906 NONAME
- _ZN27QDeclarativeGridScaledImageC1EP9QIODevice @ 1907 NONAME
- _ZN27QDeclarativeGridScaledImageC1ERKS_ @ 1908 NONAME
- _ZN27QDeclarativeGridScaledImageC1Ev @ 1909 NONAME
- _ZN27QDeclarativeGridScaledImageC2EP9QIODevice @ 1910 NONAME
- _ZN27QDeclarativeGridScaledImageC2ERKS_ @ 1911 NONAME
- _ZN27QDeclarativeGridScaledImageC2Ev @ 1912 NONAME
- _ZN27QDeclarativeGridScaledImageaSERKS_ @ 1913 NONAME
- _ZN27QDeclarativeNumberFormatter10classBeginEv @ 1914 NONAME
- _ZN27QDeclarativeNumberFormatter11qt_metacallEN11QMetaObject4CallEiPPv @ 1915 NONAME
- _ZN27QDeclarativeNumberFormatter11qt_metacastEPKc @ 1916 NONAME
- _ZN27QDeclarativeNumberFormatter11textChangedEv @ 1917 NONAME
- _ZN27QDeclarativeNumberFormatter16staticMetaObjectE @ 1918 NONAME DATA 16
- _ZN27QDeclarativeNumberFormatter17componentCompleteEv @ 1919 NONAME
- _ZN27QDeclarativeNumberFormatter19getStaticMetaObjectEv @ 1920 NONAME
- _ZN27QDeclarativeNumberFormatter9setFormatERK7QString @ 1921 NONAME
- _ZN27QDeclarativeNumberFormatter9setNumberERKf @ 1922 NONAME
- _ZN27QDeclarativeNumberFormatterC1EP7QObject @ 1923 NONAME
- _ZN27QDeclarativeNumberFormatterC2EP7QObject @ 1924 NONAME
- _ZN27QDeclarativeNumberFormatterD0Ev @ 1925 NONAME
- _ZN27QDeclarativeNumberFormatterD1Ev @ 1926 NONAME
- _ZN27QDeclarativeNumberFormatterD2Ev @ 1927 NONAME
- _ZN27QDeclarativePropertyChanges11qt_metacallEN11QMetaObject4CallEiPPv @ 1928 NONAME
- _ZN27QDeclarativePropertyChanges11qt_metacastEPKc @ 1929 NONAME
- _ZN27QDeclarativePropertyChanges13setIsExplicitEb @ 1930 NONAME
- _ZN27QDeclarativePropertyChanges16staticMetaObjectE @ 1931 NONAME DATA 16
- _ZN27QDeclarativePropertyChanges19getStaticMetaObjectEv @ 1932 NONAME
- _ZN27QDeclarativePropertyChanges21setRestoreEntryValuesEb @ 1933 NONAME
- _ZN27QDeclarativePropertyChanges7actionsEv @ 1934 NONAME
- _ZN27QDeclarativePropertyChanges9setObjectEP7QObject @ 1935 NONAME
- _ZN27QDeclarativePropertyChangesC1Ev @ 1936 NONAME
- _ZN27QDeclarativePropertyChangesC2Ev @ 1937 NONAME
- _ZN27QDeclarativePropertyChangesD0Ev @ 1938 NONAME
- _ZN27QDeclarativePropertyChangesD1Ev @ 1939 NONAME
- _ZN27QDeclarativePropertyChangesD2Ev @ 1940 NONAME
- _ZN27QDeclarativeVisualDataModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1941 NONAME
- _ZN27QDeclarativeVisualDataModel11qt_metacastEPKc @ 1942 NONAME
- _ZN27QDeclarativeVisualDataModel11setDelegateEP21QDeclarativeComponent @ 1943 NONAME
- _ZN27QDeclarativeVisualDataModel11stringValueEiRK7QString @ 1944 NONAME
- _ZN27QDeclarativeVisualDataModel12_q_rowsMovedERK11QModelIndexiiS2_i @ 1945 NONAME
- _ZN27QDeclarativeVisualDataModel12completeItemEv @ 1946 NONAME
- _ZN27QDeclarativeVisualDataModel12setRootIndexERK11QModelIndex @ 1947 NONAME
- _ZN27QDeclarativeVisualDataModel13_q_itemsMovedEiii @ 1948 NONAME
- _ZN27QDeclarativeVisualDataModel13_q_modelResetEv @ 1949 NONAME
- _ZN27QDeclarativeVisualDataModel14_q_dataChangedERK11QModelIndexS2_ @ 1950 NONAME
- _ZN27QDeclarativeVisualDataModel14_q_rowsRemovedERK11QModelIndexii @ 1951 NONAME
- _ZN27QDeclarativeVisualDataModel14createdPackageEiP19QDeclarativePackage @ 1952 NONAME
- _ZN27QDeclarativeVisualDataModel15_q_itemsChangedEiiRK5QListIiE @ 1953 NONAME
- _ZN27QDeclarativeVisualDataModel15_q_itemsRemovedEii @ 1954 NONAME
- _ZN27QDeclarativeVisualDataModel15_q_rowsInsertedERK11QModelIndexii @ 1955 NONAME
- _ZN27QDeclarativeVisualDataModel16_q_itemsInsertedEii @ 1956 NONAME
- _ZN27QDeclarativeVisualDataModel16rootIndexChangedEv @ 1957 NONAME
- _ZN27QDeclarativeVisualDataModel16staticMetaObjectE @ 1958 NONAME DATA 16
- _ZN27QDeclarativeVisualDataModel17_q_createdPackageEiP19QDeclarativePackage @ 1959 NONAME
- _ZN27QDeclarativeVisualDataModel17destroyingPackageEP19QDeclarativePackage @ 1960 NONAME
- _ZN27QDeclarativeVisualDataModel19getStaticMetaObjectEv @ 1961 NONAME
- _ZN27QDeclarativeVisualDataModel20_q_destroyingPackageEP19QDeclarativePackage @ 1962 NONAME
- _ZN27QDeclarativeVisualDataModel4itemEiRK10QByteArrayb @ 1963 NONAME
- _ZN27QDeclarativeVisualDataModel4itemEib @ 1964 NONAME
- _ZN27QDeclarativeVisualDataModel5partsEv @ 1965 NONAME
- _ZN27QDeclarativeVisualDataModel7releaseEP16QDeclarativeItem @ 1966 NONAME
- _ZN27QDeclarativeVisualDataModel7setPartERK7QString @ 1967 NONAME
- _ZN27QDeclarativeVisualDataModel8evaluateEiRK7QStringP7QObject @ 1968 NONAME
- _ZN27QDeclarativeVisualDataModel8setModelERK8QVariant @ 1969 NONAME
- _ZN27QDeclarativeVisualDataModelC1EP19QDeclarativeContext @ 1970 NONAME
- _ZN27QDeclarativeVisualDataModelC1Ev @ 1971 NONAME
- _ZN27QDeclarativeVisualDataModelC2EP19QDeclarativeContext @ 1972 NONAME
- _ZN27QDeclarativeVisualDataModelC2Ev @ 1973 NONAME
- _ZN27QDeclarativeVisualDataModelD0Ev @ 1974 NONAME
- _ZN27QDeclarativeVisualDataModelD1Ev @ 1975 NONAME
- _ZN27QDeclarativeVisualDataModelD2Ev @ 1976 NONAME
- _ZN27QDeclarativeVisualItemModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1977 NONAME
- _ZN27QDeclarativeVisualItemModel11qt_metacastEPKc @ 1978 NONAME
- _ZN27QDeclarativeVisualItemModel11stringValueEiRK7QString @ 1979 NONAME
- _ZN27QDeclarativeVisualItemModel12completeItemEv @ 1980 NONAME
- _ZN27QDeclarativeVisualItemModel15childrenChangedEv @ 1981 NONAME
- _ZN27QDeclarativeVisualItemModel16staticMetaObjectE @ 1982 NONAME DATA 16
- _ZN27QDeclarativeVisualItemModel19getStaticMetaObjectEv @ 1983 NONAME
- _ZN27QDeclarativeVisualItemModel21qmlAttachedPropertiesEP7QObject @ 1984 NONAME
- _ZN27QDeclarativeVisualItemModel4itemEib @ 1985 NONAME
- _ZN27QDeclarativeVisualItemModel7releaseEP16QDeclarativeItem @ 1986 NONAME
- _ZN27QDeclarativeVisualItemModel8childrenEv @ 1987 NONAME
- _ZN27QDeclarativeVisualItemModel8evaluateEiRK7QStringP7QObject @ 1988 NONAME
- _ZN27QDeclarativeVisualItemModelC1Ev @ 1989 NONAME
- _ZN27QDeclarativeVisualItemModelC2Ev @ 1990 NONAME
- _ZN28QDeclarativeCustomParserNodeC1ERKS_ @ 1991 NONAME
- _ZN28QDeclarativeCustomParserNodeC1Ev @ 1992 NONAME
- _ZN28QDeclarativeCustomParserNodeC2ERKS_ @ 1993 NONAME
- _ZN28QDeclarativeCustomParserNodeC2Ev @ 1994 NONAME
- _ZN28QDeclarativeCustomParserNodeD1Ev @ 1995 NONAME
- _ZN28QDeclarativeCustomParserNodeD2Ev @ 1996 NONAME
- _ZN28QDeclarativeCustomParserNodeaSERKS_ @ 1997 NONAME
- _ZN28QDeclarativeDebugObjectQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 1998 NONAME
- _ZN28QDeclarativeDebugObjectQuery11qt_metacastEPKc @ 1999 NONAME
- _ZN28QDeclarativeDebugObjectQuery16staticMetaObjectE @ 2000 NONAME DATA 16
- _ZN28QDeclarativeDebugObjectQuery19getStaticMetaObjectEv @ 2001 NONAME
- _ZN28QDeclarativeDebugObjectQueryC1EP7QObject @ 2002 NONAME
- _ZN28QDeclarativeDebugObjectQueryC2EP7QObject @ 2003 NONAME
- _ZN28QDeclarativeDebugObjectQueryD0Ev @ 2004 NONAME
- _ZN28QDeclarativeDebugObjectQueryD1Ev @ 2005 NONAME
- _ZN28QDeclarativeDebugObjectQueryD2Ev @ 2006 NONAME
- _ZN28QDeclarativeStringConverters14dateFromStringERK7QStringPb @ 2007 NONAME
- _ZN28QDeclarativeStringConverters14timeFromStringERK7QStringPb @ 2008 NONAME
- _ZN28QDeclarativeStringConverters15colorFromStringERK7QStringPb @ 2009 NONAME
- _ZN28QDeclarativeStringConverters15rectFFromStringERK7QStringPb @ 2010 NONAME
- _ZN28QDeclarativeStringConverters15sizeFFromStringERK7QStringPb @ 2011 NONAME
- _ZN28QDeclarativeStringConverters16pointFFromStringERK7QStringPb @ 2012 NONAME
- _ZN28QDeclarativeStringConverters17variantFromStringERK7QString @ 2013 NONAME
- _ZN28QDeclarativeStringConverters17variantFromStringERK7QStringiPb @ 2014 NONAME
- _ZN28QDeclarativeStringConverters18dateTimeFromStringERK7QStringPb @ 2015 NONAME
- _ZN28QDeclarativeStringConverters18vector3DFromStringERK7QStringPb @ 2016 NONAME
- _ZN28QDeclarativeValueTypeFactory9valueTypeEi @ 2017 NONAME
- _ZN28QDeclarativeValueTypeFactoryC1Ev @ 2018 NONAME
- _ZN28QDeclarativeValueTypeFactoryC2Ev @ 2019 NONAME
- _ZN28QDeclarativeValueTypeFactoryD1Ev @ 2020 NONAME
- _ZN28QDeclarativeValueTypeFactoryD2Ev @ 2021 NONAME
- _ZN28QDeclarativeXmlListModelRole11qt_metacallEN11QMetaObject4CallEiPPv @ 2022 NONAME
- _ZN28QDeclarativeXmlListModelRole11qt_metacastEPKc @ 2023 NONAME
- _ZN28QDeclarativeXmlListModelRole16staticMetaObjectE @ 2024 NONAME DATA 16
- _ZN28QDeclarativeXmlListModelRole19getStaticMetaObjectEv @ 2025 NONAME
- _ZN29QDeclarativeDateTimeFormatter10classBeginEv @ 2026 NONAME
- _ZN29QDeclarativeDateTimeFormatter11qt_metacallEN11QMetaObject4CallEiPPv @ 2027 NONAME
- _ZN29QDeclarativeDateTimeFormatter11qt_metacastEPKc @ 2028 NONAME
- _ZN29QDeclarativeDateTimeFormatter11setDateTimeERK9QDateTime @ 2029 NONAME
- _ZN29QDeclarativeDateTimeFormatter11textChangedEv @ 2030 NONAME
- _ZN29QDeclarativeDateTimeFormatter12setLongStyleEb @ 2031 NONAME
- _ZN29QDeclarativeDateTimeFormatter13setDateFormatERK7QString @ 2032 NONAME
- _ZN29QDeclarativeDateTimeFormatter13setTimeFormatERK7QString @ 2033 NONAME
- _ZN29QDeclarativeDateTimeFormatter16staticMetaObjectE @ 2034 NONAME DATA 16
- _ZN29QDeclarativeDateTimeFormatter17componentCompleteEv @ 2035 NONAME
- _ZN29QDeclarativeDateTimeFormatter17setDateTimeFormatERK7QString @ 2036 NONAME
- _ZN29QDeclarativeDateTimeFormatter19getStaticMetaObjectEv @ 2037 NONAME
- _ZN29QDeclarativeDateTimeFormatter7setDateERK5QDate @ 2038 NONAME
- _ZN29QDeclarativeDateTimeFormatter7setTimeERK5QTime @ 2039 NONAME
- _ZN29QDeclarativeDateTimeFormatterC1EP7QObject @ 2040 NONAME
- _ZN29QDeclarativeDateTimeFormatterC2EP7QObject @ 2041 NONAME
- _ZN29QDeclarativeDateTimeFormatterD0Ev @ 2042 NONAME
- _ZN29QDeclarativeDateTimeFormatterD1Ev @ 2043 NONAME
- _ZN29QDeclarativeDateTimeFormatterD2Ev @ 2044 NONAME
- _ZN29QDeclarativeDebugEnginesQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 2045 NONAME
- _ZN29QDeclarativeDebugEnginesQuery11qt_metacastEPKc @ 2046 NONAME
- _ZN29QDeclarativeDebugEnginesQuery16staticMetaObjectE @ 2047 NONAME DATA 16
- _ZN29QDeclarativeDebugEnginesQuery19getStaticMetaObjectEv @ 2048 NONAME
- _ZN29QDeclarativeDebugEnginesQueryC1EP7QObject @ 2049 NONAME
- _ZN29QDeclarativeDebugEnginesQueryC2EP7QObject @ 2050 NONAME
- _ZN29QDeclarativeDebugEnginesQueryD0Ev @ 2051 NONAME
- _ZN29QDeclarativeDebugEnginesQueryD1Ev @ 2052 NONAME
- _ZN29QDeclarativeDebugEnginesQueryD2Ev @ 2053 NONAME
- _ZN29QDeclarativeStateChangeScript11qt_metacallEN11QMetaObject4CallEiPPv @ 2054 NONAME
- _ZN29QDeclarativeStateChangeScript11qt_metacastEPKc @ 2055 NONAME
- _ZN29QDeclarativeStateChangeScript16staticMetaObjectE @ 2056 NONAME DATA 16
- _ZN29QDeclarativeStateChangeScript19getStaticMetaObjectEv @ 2057 NONAME
- _ZN29QDeclarativeStateChangeScript7actionsEv @ 2058 NONAME
- _ZN29QDeclarativeStateChangeScript7executeEv @ 2059 NONAME
- _ZN29QDeclarativeStateChangeScript7setNameERK7QString @ 2060 NONAME
- _ZN29QDeclarativeStateChangeScript9setScriptERK24QDeclarativeScriptString @ 2061 NONAME
- _ZN29QDeclarativeStateChangeScriptC1EP7QObject @ 2062 NONAME
- _ZN29QDeclarativeStateChangeScriptC2EP7QObject @ 2063 NONAME
- _ZN29QDeclarativeStateChangeScriptD0Ev @ 2064 NONAME
- _ZN29QDeclarativeStateChangeScriptD1Ev @ 2065 NONAME
- _ZN29QDeclarativeStateChangeScriptD2Ev @ 2066 NONAME
- _ZN30QDeclarativeDebugFileReference13setLineNumberEi @ 2067 NONAME
- _ZN30QDeclarativeDebugFileReference15setColumnNumberEi @ 2068 NONAME
- _ZN30QDeclarativeDebugFileReference6setUrlERK4QUrl @ 2069 NONAME
- _ZN30QDeclarativeDebugFileReferenceC1ERKS_ @ 2070 NONAME
- _ZN30QDeclarativeDebugFileReferenceC1Ev @ 2071 NONAME
- _ZN30QDeclarativeDebugFileReferenceC2ERKS_ @ 2072 NONAME
- _ZN30QDeclarativeDebugFileReferenceC2Ev @ 2073 NONAME
- _ZN30QDeclarativeDebugFileReferenceaSERKS_ @ 2074 NONAME
- _ZN30QDeclarativeDebugPropertyWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 2075 NONAME
- _ZN30QDeclarativeDebugPropertyWatch11qt_metacastEPKc @ 2076 NONAME
- _ZN30QDeclarativeDebugPropertyWatch16staticMetaObjectE @ 2077 NONAME DATA 16
- _ZN30QDeclarativeDebugPropertyWatch19getStaticMetaObjectEv @ 2078 NONAME
- _ZN30QDeclarativeDebugPropertyWatchC1EP7QObject @ 2079 NONAME
- _ZN30QDeclarativeDebugPropertyWatchC2EP7QObject @ 2080 NONAME
- _ZN30QDeclarativeDomDynamicPropertyC1ERKS_ @ 2081 NONAME
- _ZN30QDeclarativeDomDynamicPropertyC1Ev @ 2082 NONAME
- _ZN30QDeclarativeDomDynamicPropertyC2ERKS_ @ 2083 NONAME
- _ZN30QDeclarativeDomDynamicPropertyC2Ev @ 2084 NONAME
- _ZN30QDeclarativeDomDynamicPropertyD1Ev @ 2085 NONAME
- _ZN30QDeclarativeDomDynamicPropertyD2Ev @ 2086 NONAME
- _ZN30QDeclarativeDomDynamicPropertyaSERKS_ @ 2087 NONAME
- _ZN30QDeclarativeOpenMetaObjectType14createPropertyERK10QByteArray @ 2088 NONAME
- _ZN30QDeclarativeOpenMetaObjectType15propertyCreatedEiR20QMetaPropertyBuilder @ 2089 NONAME
- _ZN30QDeclarativeOpenMetaObjectTypeC1EPK11QMetaObjectP18QDeclarativeEngine @ 2090 NONAME
- _ZN30QDeclarativeOpenMetaObjectTypeC2EPK11QMetaObjectP18QDeclarativeEngine @ 2091 NONAME
- _ZN30QDeclarativeOpenMetaObjectTypeD0Ev @ 2092 NONAME
- _ZN30QDeclarativeOpenMetaObjectTypeD1Ev @ 2093 NONAME
- _ZN30QDeclarativeOpenMetaObjectTypeD2Ev @ 2094 NONAME
- _ZN31QDeclarativeDomValueValueSourceC1ERKS_ @ 2095 NONAME
- _ZN31QDeclarativeDomValueValueSourceC1Ev @ 2096 NONAME
- _ZN31QDeclarativeDomValueValueSourceC2ERKS_ @ 2097 NONAME
- _ZN31QDeclarativeDomValueValueSourceC2Ev @ 2098 NONAME
- _ZN31QDeclarativeDomValueValueSourceD1Ev @ 2099 NONAME
- _ZN31QDeclarativeDomValueValueSourceD2Ev @ 2100 NONAME
- _ZN31QDeclarativeDomValueValueSourceaSERKS_ @ 2101 NONAME
- _ZN31QDeclarativePropertyValueSourceC2Ev @ 2102 NONAME
- _ZN31QDeclarativePropertyValueSourceD0Ev @ 2103 NONAME
- _ZN31QDeclarativePropertyValueSourceD1Ev @ 2104 NONAME
- _ZN31QDeclarativePropertyValueSourceD2Ev @ 2105 NONAME
- _ZN32QDeclarativeCustomParserPropertyC1ERKS_ @ 2106 NONAME
- _ZN32QDeclarativeCustomParserPropertyC1Ev @ 2107 NONAME
- _ZN32QDeclarativeCustomParserPropertyC2ERKS_ @ 2108 NONAME
- _ZN32QDeclarativeCustomParserPropertyC2Ev @ 2109 NONAME
- _ZN32QDeclarativeCustomParserPropertyD1Ev @ 2110 NONAME
- _ZN32QDeclarativeCustomParserPropertyD2Ev @ 2111 NONAME
- _ZN32QDeclarativeCustomParserPropertyaSERKS_ @ 2112 NONAME
- _ZN32QDeclarativeDebugEngineReferenceC1ERKS_ @ 2113 NONAME
- _ZN32QDeclarativeDebugEngineReferenceC1Ei @ 2114 NONAME
- _ZN32QDeclarativeDebugEngineReferenceC1Ev @ 2115 NONAME
- _ZN32QDeclarativeDebugEngineReferenceC2ERKS_ @ 2116 NONAME
- _ZN32QDeclarativeDebugEngineReferenceC2Ei @ 2117 NONAME
- _ZN32QDeclarativeDebugEngineReferenceC2Ev @ 2118 NONAME
- _ZN32QDeclarativeDebugEngineReferenceaSERKS_ @ 2119 NONAME
- _ZN32QDeclarativeDebugExpressionQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 2120 NONAME
- _ZN32QDeclarativeDebugExpressionQuery11qt_metacastEPKc @ 2121 NONAME
- _ZN32QDeclarativeDebugExpressionQuery16staticMetaObjectE @ 2122 NONAME DATA 16
- _ZN32QDeclarativeDebugExpressionQuery19getStaticMetaObjectEv @ 2123 NONAME
- _ZN32QDeclarativeDebugExpressionQueryC1EP7QObject @ 2124 NONAME
- _ZN32QDeclarativeDebugExpressionQueryC2EP7QObject @ 2125 NONAME
- _ZN32QDeclarativeDebugExpressionQueryD0Ev @ 2126 NONAME
- _ZN32QDeclarativeDebugExpressionQueryD1Ev @ 2127 NONAME
- _ZN32QDeclarativeDebugExpressionQueryD2Ev @ 2128 NONAME
- _ZN32QDeclarativeDebugObjectReferenceC1ERKS_ @ 2129 NONAME
- _ZN32QDeclarativeDebugObjectReferenceC1Ei @ 2130 NONAME
- _ZN32QDeclarativeDebugObjectReferenceC1Ev @ 2131 NONAME
- _ZN32QDeclarativeDebugObjectReferenceC2ERKS_ @ 2132 NONAME
- _ZN32QDeclarativeDebugObjectReferenceC2Ei @ 2133 NONAME
- _ZN32QDeclarativeDebugObjectReferenceC2Ev @ 2134 NONAME
- _ZN32QDeclarativeDebugObjectReferenceaSERKS_ @ 2135 NONAME
- _ZN32QDeclarativeParticleMotionLinear11qt_metacallEN11QMetaObject4CallEiPPv @ 2136 NONAME
- _ZN32QDeclarativeParticleMotionLinear11qt_metacastEPKc @ 2137 NONAME
- _ZN32QDeclarativeParticleMotionLinear16staticMetaObjectE @ 2138 NONAME DATA 16
- _ZN32QDeclarativeParticleMotionLinear19getStaticMetaObjectEv @ 2139 NONAME
- _ZN32QDeclarativeParticleMotionLinear7advanceER20QDeclarativeParticlei @ 2140 NONAME
- _ZN32QDeclarativeParticleMotionWander11paceChangedEv @ 2141 NONAME
- _ZN32QDeclarativeParticleMotionWander11qt_metacallEN11QMetaObject4CallEiPPv @ 2142 NONAME
- _ZN32QDeclarativeParticleMotionWander11qt_metacastEPKc @ 2143 NONAME
- _ZN32QDeclarativeParticleMotionWander12setXVarianceEf @ 2144 NONAME
- _ZN32QDeclarativeParticleMotionWander12setYVarianceEf @ 2145 NONAME
- _ZN32QDeclarativeParticleMotionWander16staticMetaObjectE @ 2146 NONAME DATA 16
- _ZN32QDeclarativeParticleMotionWander16xvarianceChangedEv @ 2147 NONAME
- _ZN32QDeclarativeParticleMotionWander16yvarianceChangedEv @ 2148 NONAME
- _ZN32QDeclarativeParticleMotionWander19getStaticMetaObjectEv @ 2149 NONAME
- _ZN32QDeclarativeParticleMotionWander7advanceER20QDeclarativeParticlei @ 2150 NONAME
- _ZN32QDeclarativeParticleMotionWander7createdER20QDeclarativeParticle @ 2151 NONAME
- _ZN32QDeclarativeParticleMotionWander7destroyER20QDeclarativeParticle @ 2152 NONAME
- _ZN32QDeclarativeParticleMotionWander7setPaceEf @ 2153 NONAME
- _ZN33QDeclarativeDebugContextReferenceC1ERKS_ @ 2154 NONAME
- _ZN33QDeclarativeDebugContextReferenceC1Ev @ 2155 NONAME
- _ZN33QDeclarativeDebugContextReferenceC2ERKS_ @ 2156 NONAME
- _ZN33QDeclarativeDebugContextReferenceC2Ev @ 2157 NONAME
- _ZN33QDeclarativeDebugContextReferenceaSERKS_ @ 2158 NONAME
- _ZN33QDeclarativeDebugRootContextQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 2159 NONAME
- _ZN33QDeclarativeDebugRootContextQuery11qt_metacastEPKc @ 2160 NONAME
- _ZN33QDeclarativeDebugRootContextQuery16staticMetaObjectE @ 2161 NONAME DATA 16
- _ZN33QDeclarativeDebugRootContextQuery19getStaticMetaObjectEv @ 2162 NONAME
- _ZN33QDeclarativeDebugRootContextQueryC1EP7QObject @ 2163 NONAME
- _ZN33QDeclarativeDebugRootContextQueryC2EP7QObject @ 2164 NONAME
- _ZN33QDeclarativeDebugRootContextQueryD0Ev @ 2165 NONAME
- _ZN33QDeclarativeDebugRootContextQueryD1Ev @ 2166 NONAME
- _ZN33QDeclarativeDebugRootContextQueryD2Ev @ 2167 NONAME
- _ZN33QDeclarativeParticleMotionGravity11qt_metacallEN11QMetaObject4CallEiPPv @ 2168 NONAME
- _ZN33QDeclarativeParticleMotionGravity11qt_metacastEPKc @ 2169 NONAME
- _ZN33QDeclarativeParticleMotionGravity13setXAttractorEf @ 2170 NONAME
- _ZN33QDeclarativeParticleMotionGravity13setYAttractorEf @ 2171 NONAME
- _ZN33QDeclarativeParticleMotionGravity15setAccelerationEf @ 2172 NONAME
- _ZN33QDeclarativeParticleMotionGravity16staticMetaObjectE @ 2173 NONAME DATA 16
- _ZN33QDeclarativeParticleMotionGravity17xattractorChangedEv @ 2174 NONAME
- _ZN33QDeclarativeParticleMotionGravity17yattractorChangedEv @ 2175 NONAME
- _ZN33QDeclarativeParticleMotionGravity19accelerationChangedEv @ 2176 NONAME
- _ZN33QDeclarativeParticleMotionGravity19getStaticMetaObjectEv @ 2177 NONAME
- _ZN33QDeclarativeParticleMotionGravity7advanceER20QDeclarativeParticlei @ 2178 NONAME
- _ZN34QDeclarativeDebugPropertyReferenceC1ERKS_ @ 2179 NONAME
- _ZN34QDeclarativeDebugPropertyReferenceC1Ev @ 2180 NONAME
- _ZN34QDeclarativeDebugPropertyReferenceC2ERKS_ @ 2181 NONAME
- _ZN34QDeclarativeDebugPropertyReferenceC2Ev @ 2182 NONAME
- _ZN34QDeclarativeDebugPropertyReferenceaSERKS_ @ 2183 NONAME
- _ZN35QDeclarativeGraphicsObjectContainer10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 2184 NONAME
- _ZN35QDeclarativeGraphicsObjectContainer11eventFilterEP7QObjectP6QEvent @ 2185 NONAME
- _ZN35QDeclarativeGraphicsObjectContainer11qt_metacallEN11QMetaObject4CallEiPPv @ 2186 NONAME
- _ZN35QDeclarativeGraphicsObjectContainer11qt_metacastEPKc @ 2187 NONAME
- _ZN35QDeclarativeGraphicsObjectContainer16staticMetaObjectE @ 2188 NONAME DATA 16
- _ZN35QDeclarativeGraphicsObjectContainer17setGraphicsObjectEP15QGraphicsObject @ 2189 NONAME
- _ZN35QDeclarativeGraphicsObjectContainer19getStaticMetaObjectEv @ 2190 NONAME
- _ZN35QDeclarativeGraphicsObjectContainer23setSynchronizedResizingEb @ 2191 NONAME
- _ZN35QDeclarativeGraphicsObjectContainerC1EP16QDeclarativeItem @ 2192 NONAME
- _ZN35QDeclarativeGraphicsObjectContainerC2EP16QDeclarativeItem @ 2193 NONAME
- _ZN35QDeclarativeGraphicsObjectContainerD0Ev @ 2194 NONAME
- _ZN35QDeclarativeGraphicsObjectContainerD1Ev @ 2195 NONAME
- _ZN35QDeclarativeGraphicsObjectContainerD2Ev @ 2196 NONAME
- _ZN36QDeclarativeDomValueValueInterceptorC1ERKS_ @ 2197 NONAME
- _ZN36QDeclarativeDomValueValueInterceptorC1Ev @ 2198 NONAME
- _ZN36QDeclarativeDomValueValueInterceptorC2ERKS_ @ 2199 NONAME
- _ZN36QDeclarativeDomValueValueInterceptorC2Ev @ 2200 NONAME
- _ZN36QDeclarativeDomValueValueInterceptorD1Ev @ 2201 NONAME
- _ZN36QDeclarativeDomValueValueInterceptorD2Ev @ 2202 NONAME
- _ZN36QDeclarativeDomValueValueInterceptoraSERKS_ @ 2203 NONAME
- _ZN36QDeclarativePropertyValueInterceptorC2Ev @ 2204 NONAME
- _ZN36QDeclarativePropertyValueInterceptorD0Ev @ 2205 NONAME
- _ZN36QDeclarativePropertyValueInterceptorD1Ev @ 2206 NONAME
- _ZN36QDeclarativePropertyValueInterceptorD2Ev @ 2207 NONAME
- _ZN38QDeclarativeDebugObjectExpressionWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 2208 NONAME
- _ZN38QDeclarativeDebugObjectExpressionWatch11qt_metacastEPKc @ 2209 NONAME
- _ZN38QDeclarativeDebugObjectExpressionWatch16staticMetaObjectE @ 2210 NONAME DATA 16
- _ZN38QDeclarativeDebugObjectExpressionWatch19getStaticMetaObjectEv @ 2211 NONAME
- _ZN38QDeclarativeDebugObjectExpressionWatchC1EP7QObject @ 2212 NONAME
- _ZN38QDeclarativeDebugObjectExpressionWatchC2EP7QObject @ 2213 NONAME
- _ZN39QDeclarativeNetworkAccessManagerFactoryD0Ev @ 2214 NONAME
- _ZN39QDeclarativeNetworkAccessManagerFactoryD1Ev @ 2215 NONAME
- _ZN39QDeclarativeNetworkAccessManagerFactoryD2Ev @ 2216 NONAME
- _ZN7QPacket5clearEv @ 2217 NONAME
- _ZN7QPacketC1ERK10QByteArray @ 2218 NONAME
- _ZN7QPacketC1ERKS_ @ 2219 NONAME
- _ZN7QPacketC1Ev @ 2220 NONAME
- _ZN7QPacketC2ERK10QByteArray @ 2221 NONAME
- _ZN7QPacketC2ERKS_ @ 2222 NONAME
- _ZN7QPacketC2Ev @ 2223 NONAME
- _ZN7QPacketD0Ev @ 2224 NONAME
- _ZN7QPacketD1Ev @ 2225 NONAME
- _ZN7QPacketD2Ev @ 2226 NONAME
- _ZNK15QDeclarativePen10metaObjectEv @ 2227 NONAME
- _ZNK15QDeclarativeRow10metaObjectEv @ 2228 NONAME
- _ZNK15QPacketProtocol10metaObjectEv @ 2229 NONAME
- _ZNK15QPacketProtocol16packetsAvailableEv @ 2230 NONAME
- _ZNK15QPacketProtocol17maximumPacketSizeEv @ 2231 NONAME
- _ZNK16QDeclarativeBind10metaObjectEv @ 2232 NONAME
- _ZNK16QDeclarativeBind4whenEv @ 2233 NONAME
- _ZNK16QDeclarativeBind5valueEv @ 2234 NONAME
- _ZNK16QDeclarativeBind8propertyEv @ 2235 NONAME
- _ZNK16QDeclarativeDrag10metaObjectEv @ 2236 NONAME
- _ZNK16QDeclarativeDrag4axisEv @ 2237 NONAME
- _ZNK16QDeclarativeDrag4xmaxEv @ 2238 NONAME
- _ZNK16QDeclarativeDrag4xminEv @ 2239 NONAME
- _ZNK16QDeclarativeDrag4ymaxEv @ 2240 NONAME
- _ZNK16QDeclarativeDrag4yminEv @ 2241 NONAME
- _ZNK16QDeclarativeDrag6targetEv @ 2242 NONAME
- _ZNK16QDeclarativeFlow10metaObjectEv @ 2243 NONAME
- _ZNK16QDeclarativeFlow4flowEv @ 2244 NONAME
- _ZNK16QDeclarativeGrid10metaObjectEv @ 2245 NONAME
- _ZNK16QDeclarativeItem10metaObjectEv @ 2246 NONAME
- _ZNK16QDeclarativeItem10parentItemEv @ 2247 NONAME
- _ZNK16QDeclarativeItem10wantsFocusEv @ 2248 NONAME
- _ZNK16QDeclarativeItem10widthValidEv @ 2249 NONAME
- _ZNK16QDeclarativeItem11heightValidEv @ 2250 NONAME
- _ZNK16QDeclarativeItem12boundingRectEv @ 2251 NONAME
- _ZNK16QDeclarativeItem13implicitWidthEv @ 2252 NONAME
- _ZNK16QDeclarativeItem13keepMouseGrabEv @ 2253 NONAME
- _ZNK16QDeclarativeItem14baselineOffsetEv @ 2254 NONAME
- _ZNK16QDeclarativeItem14implicitHeightEv @ 2255 NONAME
- _ZNK16QDeclarativeItem14verticalCenterEv @ 2256 NONAME
- _ZNK16QDeclarativeItem15transformOriginEv @ 2257 NONAME
- _ZNK16QDeclarativeItem16horizontalCenterEv @ 2258 NONAME
- _ZNK16QDeclarativeItem16inputMethodQueryEN2Qt16InputMethodQueryE @ 2259 NONAME
- _ZNK16QDeclarativeItem19isComponentCompleteEv @ 2260 NONAME
- _ZNK16QDeclarativeItem3topEv @ 2261 NONAME
- _ZNK16QDeclarativeItem4clipEv @ 2262 NONAME
- _ZNK16QDeclarativeItem4leftEv @ 2263 NONAME
- _ZNK16QDeclarativeItem5rightEv @ 2264 NONAME
- _ZNK16QDeclarativeItem5stateEv @ 2265 NONAME
- _ZNK16QDeclarativeItem5widthEv @ 2266 NONAME
- _ZNK16QDeclarativeItem6bottomEv @ 2267 NONAME
- _ZNK16QDeclarativeItem6heightEv @ 2268 NONAME
- _ZNK16QDeclarativeItem6smoothEv @ 2269 NONAME
- _ZNK16QDeclarativeItem8baselineEv @ 2270 NONAME
- _ZNK16QDeclarativeItem8hasFocusEv @ 2271 NONAME
- _ZNK16QDeclarativePath10attributesEv @ 2272 NONAME
- _ZNK16QDeclarativePath10metaObjectEv @ 2273 NONAME
- _ZNK16QDeclarativePath11attributeAtERK7QStringf @ 2274 NONAME
- _ZNK16QDeclarativePath16createPointCacheEv @ 2275 NONAME
- _ZNK16QDeclarativePath4pathEv @ 2276 NONAME
- _ZNK16QDeclarativePath6startXEv @ 2277 NONAME
- _ZNK16QDeclarativePath6startYEv @ 2278 NONAME
- _ZNK16QDeclarativePath7pointAtEf @ 2279 NONAME
- _ZNK16QDeclarativePath8isClosedEv @ 2280 NONAME
- _ZNK16QDeclarativeText10metaObjectEv @ 2281 NONAME
- _ZNK16QDeclarativeText10styleColorEv @ 2282 NONAME
- _ZNK16QDeclarativeText10textFormatEv @ 2283 NONAME
- _ZNK16QDeclarativeText4fontEv @ 2284 NONAME
- _ZNK16QDeclarativeText4textEv @ 2285 NONAME
- _ZNK16QDeclarativeText4wrapEv @ 2286 NONAME
- _ZNK16QDeclarativeText5colorEv @ 2287 NONAME
- _ZNK16QDeclarativeText5styleEv @ 2288 NONAME
- _ZNK16QDeclarativeText6hAlignEv @ 2289 NONAME
- _ZNK16QDeclarativeText6vAlignEv @ 2290 NONAME
- _ZNK16QDeclarativeText9elideModeEv @ 2291 NONAME
- _ZNK16QDeclarativeType10metaObjectEv @ 2292 NONAME
- _ZNK16QDeclarativeType11isInterfaceEv @ 2293 NONAME
- _ZNK16QDeclarativeType11qListTypeIdEv @ 2294 NONAME
- _ZNK16QDeclarativeType11qmlTypeNameEv @ 2295 NONAME
- _ZNK16QDeclarativeType12customParserEv @ 2296 NONAME
- _ZNK16QDeclarativeType12interfaceIIdEv @ 2297 NONAME
- _ZNK16QDeclarativeType12majorVersionEv @ 2298 NONAME
- _ZNK16QDeclarativeType12minorVersionEv @ 2299 NONAME
- _ZNK16QDeclarativeType14baseMetaObjectEv @ 2300 NONAME
- _ZNK16QDeclarativeType16parserStatusCastEv @ 2301 NONAME
- _ZNK16QDeclarativeType18availableInVersionEii @ 2302 NONAME
- _ZNK16QDeclarativeType22attachedPropertiesTypeEv @ 2303 NONAME
- _ZNK16QDeclarativeType23propertyValueSourceCastEv @ 2304 NONAME
- _ZNK16QDeclarativeType26attachedPropertiesFunctionEv @ 2305 NONAME
- _ZNK16QDeclarativeType28propertyValueInterceptorCastEv @ 2306 NONAME
- _ZNK16QDeclarativeType5indexEv @ 2307 NONAME
- _ZNK16QDeclarativeType6createEv @ 2308 NONAME
- _ZNK16QDeclarativeType6typeIdEv @ 2309 NONAME
- _ZNK16QDeclarativeType8typeNameEv @ 2310 NONAME
- _ZNK16QDeclarativeView10metaObjectEv @ 2311 NONAME
- _ZNK16QDeclarativeView10resizeModeEv @ 2312 NONAME
- _ZNK16QDeclarativeView10rootObjectEv @ 2313 NONAME
- _ZNK16QDeclarativeView6errorsEv @ 2314 NONAME
- _ZNK16QDeclarativeView6sourceEv @ 2315 NONAME
- _ZNK16QDeclarativeView6statusEv @ 2316 NONAME
- _ZNK16QDeclarativeView8sizeHintEv @ 2317 NONAME
- _ZNK16QMetaEnumBuilder3keyEi @ 2318 NONAME
- _ZNK16QMetaEnumBuilder4nameEv @ 2319 NONAME
- _ZNK16QMetaEnumBuilder5valueEi @ 2320 NONAME
- _ZNK16QMetaEnumBuilder6d_funcEv @ 2321 NONAME
- _ZNK16QMetaEnumBuilder6isFlagEv @ 2322 NONAME
- _ZNK16QMetaEnumBuilder8keyCountEv @ 2323 NONAME
- _ZNK17QDeclarativeCurve10metaObjectEv @ 2324 NONAME
- _ZNK17QDeclarativeCurve1xEv @ 2325 NONAME
- _ZNK17QDeclarativeCurve1yEv @ 2326 NONAME
- _ZNK17QDeclarativeError11descriptionEv @ 2327 NONAME
- _ZNK17QDeclarativeError3urlEv @ 2328 NONAME
- _ZNK17QDeclarativeError4lineEv @ 2329 NONAME
- _ZNK17QDeclarativeError6columnEv @ 2330 NONAME
- _ZNK17QDeclarativeError7isValidEv @ 2331 NONAME
- _ZNK17QDeclarativeError8toStringEv @ 2332 NONAME
- _ZNK17QDeclarativeImage10metaObjectEv @ 2333 NONAME
- _ZNK17QDeclarativeImage12paintedWidthEv @ 2334 NONAME
- _ZNK17QDeclarativeImage13paintedHeightEv @ 2335 NONAME
- _ZNK17QDeclarativeImage6pixmapEv @ 2336 NONAME
- _ZNK17QDeclarativeImage8fillModeEv @ 2337 NONAME
- _ZNK17QDeclarativeState10metaObjectEv @ 2338 NONAME
- _ZNK17QDeclarativeState10stateGroupEv @ 2339 NONAME
- _ZNK17QDeclarativeState11isWhenKnownEv @ 2340 NONAME
- _ZNK17QDeclarativeState11operationAtEi @ 2341 NONAME
- _ZNK17QDeclarativeState14operationCountEv @ 2342 NONAME
- _ZNK17QDeclarativeState4nameEv @ 2343 NONAME
- _ZNK17QDeclarativeState4whenEv @ 2344 NONAME
- _ZNK17QDeclarativeState7extendsEv @ 2345 NONAME
- _ZNK17QDeclarativeTimer10metaObjectEv @ 2346 NONAME
- _ZNK17QDeclarativeTimer11isRepeatingEv @ 2347 NONAME
- _ZNK17QDeclarativeTimer16triggeredOnStartEv @ 2348 NONAME
- _ZNK17QDeclarativeTimer8intervalEv @ 2349 NONAME
- _ZNK17QDeclarativeTimer9isRunningEv @ 2350 NONAME
- _ZNK18QDeclarativeColumn10metaObjectEv @ 2351 NONAME
- _ZNK18QDeclarativeEngine10metaObjectEv @ 2352 NONAME
- _ZNK18QDeclarativeEngine13imageProviderERK7QString @ 2353 NONAME
- _ZNK18QDeclarativeEngine18offlineStoragePathEv @ 2354 NONAME
- _ZNK18QDeclarativeEngine20networkAccessManagerEv @ 2355 NONAME
- _ZNK18QDeclarativeEngine27networkAccessManagerFactoryEv @ 2356 NONAME
- _ZNK18QDeclarativeEngine7baseUrlEv @ 2357 NONAME
- _ZNK18QDeclarativeLoader10metaObjectEv @ 2358 NONAME
- _ZNK18QDeclarativeLoader10resizeModeEv @ 2359 NONAME
- _ZNK18QDeclarativeLoader15sourceComponentEv @ 2360 NONAME
- _ZNK18QDeclarativeLoader4itemEv @ 2361 NONAME
- _ZNK18QDeclarativeLoader6sourceEv @ 2362 NONAME
- _ZNK18QDeclarativeLoader6statusEv @ 2363 NONAME
- _ZNK18QDeclarativeLoader8progressEv @ 2364 NONAME
- _ZNK18QMetaMethodBuilder10attributesEv @ 2365 NONAME
- _ZNK18QMetaMethodBuilder10methodTypeEv @ 2366 NONAME
- _ZNK18QMetaMethodBuilder10returnTypeEv @ 2367 NONAME
- _ZNK18QMetaMethodBuilder14parameterNamesEv @ 2368 NONAME
- _ZNK18QMetaMethodBuilder3tagEv @ 2369 NONAME
- _ZNK18QMetaMethodBuilder5indexEv @ 2370 NONAME
- _ZNK18QMetaMethodBuilder6accessEv @ 2371 NONAME
- _ZNK18QMetaMethodBuilder6d_funcEv @ 2372 NONAME
- _ZNK18QMetaMethodBuilder9signatureEv @ 2373 NONAME
- _ZNK18QMetaObjectBuilder10enumeratorEi @ 2374 NONAME
- _ZNK18QMetaObjectBuilder10superClassEv @ 2375 NONAME
- _ZNK18QMetaObjectBuilder11constructorEi @ 2376 NONAME
- _ZNK18QMetaObjectBuilder11methodCountEv @ 2377 NONAME
- _ZNK18QMetaObjectBuilder12toMetaObjectEv @ 2378 NONAME
- _ZNK18QMetaObjectBuilder13classInfoNameEi @ 2379 NONAME
- _ZNK18QMetaObjectBuilder13propertyCountEv @ 2380 NONAME
- _ZNK18QMetaObjectBuilder14classInfoCountEv @ 2381 NONAME
- _ZNK18QMetaObjectBuilder14classInfoValueEi @ 2382 NONAME
- _ZNK18QMetaObjectBuilder15enumeratorCountEv @ 2383 NONAME
- _ZNK18QMetaObjectBuilder16constructorCountEv @ 2384 NONAME
- _ZNK18QMetaObjectBuilder17relatedMetaObjectEi @ 2385 NONAME
- _ZNK18QMetaObjectBuilder17toRelocatableDataEPb @ 2386 NONAME
- _ZNK18QMetaObjectBuilder22relatedMetaObjectCountEv @ 2387 NONAME
- _ZNK18QMetaObjectBuilder22staticMetacallFunctionEv @ 2388 NONAME
- _ZNK18QMetaObjectBuilder5flagsEv @ 2389 NONAME
- _ZNK18QMetaObjectBuilder6methodEi @ 2390 NONAME
- _ZNK18QMetaObjectBuilder8propertyEi @ 2391 NONAME
- _ZNK18QMetaObjectBuilder9classNameEv @ 2392 NONAME
- _ZNK18QMetaObjectBuilder9serializeER11QDataStream @ 2393 NONAME
- _ZNK19QDeclarativeAnchors10leftMarginEv @ 2394 NONAME
- _ZNK19QDeclarativeAnchors10metaObjectEv @ 2395 NONAME
- _ZNK19QDeclarativeAnchors11rightMarginEv @ 2396 NONAME
- _ZNK19QDeclarativeAnchors11usedAnchorsEv @ 2397 NONAME
- _ZNK19QDeclarativeAnchors12bottomMarginEv @ 2398 NONAME
- _ZNK19QDeclarativeAnchors14baselineOffsetEv @ 2399 NONAME
- _ZNK19QDeclarativeAnchors14verticalCenterEv @ 2400 NONAME
- _ZNK19QDeclarativeAnchors16horizontalCenterEv @ 2401 NONAME
- _ZNK19QDeclarativeAnchors20verticalCenterOffsetEv @ 2402 NONAME
- _ZNK19QDeclarativeAnchors22horizontalCenterOffsetEv @ 2403 NONAME
- _ZNK19QDeclarativeAnchors3topEv @ 2404 NONAME
- _ZNK19QDeclarativeAnchors4fillEv @ 2405 NONAME
- _ZNK19QDeclarativeAnchors4leftEv @ 2406 NONAME
- _ZNK19QDeclarativeAnchors5rightEv @ 2407 NONAME
- _ZNK19QDeclarativeAnchors6bottomEv @ 2408 NONAME
- _ZNK19QDeclarativeAnchors7marginsEv @ 2409 NONAME
- _ZNK19QDeclarativeAnchors8baselineEv @ 2410 NONAME
- _ZNK19QDeclarativeAnchors8centerInEv @ 2411 NONAME
- _ZNK19QDeclarativeAnchors9topMarginEv @ 2412 NONAME
- _ZNK19QDeclarativeContext10metaObjectEv @ 2413 NONAME
- _ZNK19QDeclarativeContext13parentContextEv @ 2414 NONAME
- _ZNK19QDeclarativeContext15contextPropertyERK7QString @ 2415 NONAME
- _ZNK19QDeclarativeContext6engineEv @ 2416 NONAME
- _ZNK19QDeclarativeContext7baseUrlEv @ 2417 NONAME
- _ZNK19QDeclarativeDomList14commaPositionsEv @ 2418 NONAME
- _ZNK19QDeclarativeDomList6lengthEv @ 2419 NONAME
- _ZNK19QDeclarativeDomList6valuesEv @ 2420 NONAME
- _ZNK19QDeclarativeDomList8positionEv @ 2421 NONAME
- _ZNK19QDeclarativeWebPage10metaObjectEv @ 2422 NONAME
- _ZNK19QDeclarativeWebView10backActionEv @ 2423 NONAME
- _ZNK19QDeclarativeWebView10metaObjectEv @ 2424 NONAME
- _ZNK19QDeclarativeWebView10statusTextEv @ 2425 NONAME
- _ZNK19QDeclarativeWebView10stopActionEv @ 2426 NONAME
- _ZNK19QDeclarativeWebView10zoomFactorEv @ 2427 NONAME
- _ZNK19QDeclarativeWebView12reloadActionEv @ 2428 NONAME
- _ZNK19QDeclarativeWebView13elementAreaAtEiiii @ 2429 NONAME
- _ZNK19QDeclarativeWebView13forwardActionEv @ 2430 NONAME
- _ZNK19QDeclarativeWebView13pressGrabTimeEv @ 2431 NONAME
- _ZNK19QDeclarativeWebView14preferredWidthEv @ 2432 NONAME
- _ZNK19QDeclarativeWebView14settingsObjectEv @ 2433 NONAME
- _ZNK19QDeclarativeWebView15newWindowParentEv @ 2434 NONAME
- _ZNK19QDeclarativeWebView15preferredHeightEv @ 2435 NONAME
- _ZNK19QDeclarativeWebView16renderingEnabledEv @ 2436 NONAME
- _ZNK19QDeclarativeWebView18newWindowComponentEv @ 2437 NONAME
- _ZNK19QDeclarativeWebView3urlEv @ 2438 NONAME
- _ZNK19QDeclarativeWebView4htmlEv @ 2439 NONAME
- _ZNK19QDeclarativeWebView4iconEv @ 2440 NONAME
- _ZNK19QDeclarativeWebView4pageEv @ 2441 NONAME
- _ZNK19QDeclarativeWebView5titleEv @ 2442 NONAME
- _ZNK19QDeclarativeWebView6statusEv @ 2443 NONAME
- _ZNK19QDeclarativeWebView7historyEv @ 2444 NONAME
- _ZNK19QDeclarativeWebView8progressEv @ 2445 NONAME
- _ZNK19QDeclarativeWebView8settingsEv @ 2446 NONAME
- _ZNK19QListModelInterface10metaObjectEv @ 2447 NONAME
- _ZNK20QDeclarativeBehavior10metaObjectEv @ 2448 NONAME
- _ZNK20QDeclarativeBehavior7enabledEv @ 2449 NONAME
- _ZNK20QDeclarativeCompiler6errorsEv @ 2450 NONAME
- _ZNK20QDeclarativeCompiler7isErrorEv @ 2451 NONAME
- _ZNK20QDeclarativeDomValue13isValueSourceEv @ 2452 NONAME
- _ZNK20QDeclarativeDomValue13toValueSourceEv @ 2453 NONAME
- _ZNK20QDeclarativeDomValue18isValueInterceptorEv @ 2454 NONAME
- _ZNK20QDeclarativeDomValue18toValueInterceptorEv @ 2455 NONAME
- _ZNK20QDeclarativeDomValue4typeEv @ 2456 NONAME
- _ZNK20QDeclarativeDomValue6isListEv @ 2457 NONAME
- _ZNK20QDeclarativeDomValue6lengthEv @ 2458 NONAME
- _ZNK20QDeclarativeDomValue6toListEv @ 2459 NONAME
- _ZNK20QDeclarativeDomValue8isObjectEv @ 2460 NONAME
- _ZNK20QDeclarativeDomValue8positionEv @ 2461 NONAME
- _ZNK20QDeclarativeDomValue8toObjectEv @ 2462 NONAME
- _ZNK20QDeclarativeDomValue9isBindingEv @ 2463 NONAME
- _ZNK20QDeclarativeDomValue9isInvalidEv @ 2464 NONAME
- _ZNK20QDeclarativeDomValue9isLiteralEv @ 2465 NONAME
- _ZNK20QDeclarativeDomValue9toBindingEv @ 2466 NONAME
- _ZNK20QDeclarativeDomValue9toLiteralEv @ 2467 NONAME
- _ZNK20QDeclarativeFlipable10metaObjectEv @ 2468 NONAME
- _ZNK20QDeclarativeFlipable4sideEv @ 2469 NONAME
- _ZNK20QDeclarativeGradient10metaObjectEv @ 2470 NONAME
- _ZNK20QDeclarativeGradient8gradientEv @ 2471 NONAME
- _ZNK20QDeclarativeGridView10cellHeightEv @ 2472 NONAME
- _ZNK20QDeclarativeGridView10maxXExtentEv @ 2473 NONAME
- _ZNK20QDeclarativeGridView10maxYExtentEv @ 2474 NONAME
- _ZNK20QDeclarativeGridView10metaObjectEv @ 2475 NONAME
- _ZNK20QDeclarativeGridView10minXExtentEv @ 2476 NONAME
- _ZNK20QDeclarativeGridView10minYExtentEv @ 2477 NONAME
- _ZNK20QDeclarativeGridView11cacheBufferEv @ 2478 NONAME
- _ZNK20QDeclarativeGridView12currentIndexEv @ 2479 NONAME
- _ZNK20QDeclarativeGridView13isWrapEnabledEv @ 2480 NONAME
- _ZNK20QDeclarativeGridView27highlightFollowsCurrentItemEv @ 2481 NONAME
- _ZNK20QDeclarativeGridView4flowEv @ 2482 NONAME
- _ZNK20QDeclarativeGridView5countEv @ 2483 NONAME
- _ZNK20QDeclarativeGridView5modelEv @ 2484 NONAME
- _ZNK20QDeclarativeGridView8delegateEv @ 2485 NONAME
- _ZNK20QDeclarativeGridView9cellWidthEv @ 2486 NONAME
- _ZNK20QDeclarativeGridView9highlightEv @ 2487 NONAME
- _ZNK20QDeclarativeListView10maxXExtentEv @ 2488 NONAME
- _ZNK20QDeclarativeListView10maxYExtentEv @ 2489 NONAME
- _ZNK20QDeclarativeListView10metaObjectEv @ 2490 NONAME
- _ZNK20QDeclarativeListView10minXExtentEv @ 2491 NONAME
- _ZNK20QDeclarativeListView10minYExtentEv @ 2492 NONAME
- _ZNK20QDeclarativeListView11cacheBufferEv @ 2493 NONAME
- _ZNK20QDeclarativeListView11orientationEv @ 2494 NONAME
- _ZNK20QDeclarativeListView12currentIndexEv @ 2495 NONAME
- _ZNK20QDeclarativeListView13isWrapEnabledEv @ 2496 NONAME
- _ZNK20QDeclarativeListView14currentSectionEv @ 2497 NONAME
- _ZNK20QDeclarativeListView18highlightMoveSpeedEv @ 2498 NONAME
- _ZNK20QDeclarativeListView18highlightRangeModeEv @ 2499 NONAME
- _ZNK20QDeclarativeListView20highlightResizeSpeedEv @ 2500 NONAME
- _ZNK20QDeclarativeListView21preferredHighlightEndEv @ 2501 NONAME
- _ZNK20QDeclarativeListView23preferredHighlightBeginEv @ 2502 NONAME
- _ZNK20QDeclarativeListView27highlightFollowsCurrentItemEv @ 2503 NONAME
- _ZNK20QDeclarativeListView5countEv @ 2504 NONAME
- _ZNK20QDeclarativeListView5modelEv @ 2505 NONAME
- _ZNK20QDeclarativeListView6footerEv @ 2506 NONAME
- _ZNK20QDeclarativeListView6headerEv @ 2507 NONAME
- _ZNK20QDeclarativeListView7spacingEv @ 2508 NONAME
- _ZNK20QDeclarativeListView8delegateEv @ 2509 NONAME
- _ZNK20QDeclarativeListView8snapModeEv @ 2510 NONAME
- _ZNK20QDeclarativeListView9highlightEv @ 2511 NONAME
- _ZNK20QDeclarativePathLine10metaObjectEv @ 2512 NONAME
- _ZNK20QDeclarativePathQuad10metaObjectEv @ 2513 NONAME
- _ZNK20QDeclarativePathQuad8controlXEv @ 2514 NONAME
- _ZNK20QDeclarativePathQuad8controlYEv @ 2515 NONAME
- _ZNK20QDeclarativePathView10dragMarginEv @ 2516 NONAME
- _ZNK20QDeclarativePathView10metaObjectEv @ 2517 NONAME
- _ZNK20QDeclarativePathView12currentIndexEv @ 2518 NONAME
- _ZNK20QDeclarativePathView12snapPositionEv @ 2519 NONAME
- _ZNK20QDeclarativePathView13pathItemCountEv @ 2520 NONAME
- _ZNK20QDeclarativePathView4pathEv @ 2521 NONAME
- _ZNK20QDeclarativePathView5countEv @ 2522 NONAME
- _ZNK20QDeclarativePathView5modelEv @ 2523 NONAME
- _ZNK20QDeclarativePathView6offsetEv @ 2524 NONAME
- _ZNK20QDeclarativePathView8delegateEv @ 2525 NONAME
- _ZNK20QDeclarativeProperty10isPropertyEv @ 2526 NONAME
- _ZNK20QDeclarativeProperty10isWritableEv @ 2527 NONAME
- _ZNK20QDeclarativeProperty12isDesignableEv @ 2528 NONAME
- _ZNK20QDeclarativeProperty12isResettableEv @ 2529 NONAME
- _ZNK20QDeclarativeProperty12propertyTypeEv @ 2530 NONAME
- _ZNK20QDeclarativeProperty15hasNotifySignalEv @ 2531 NONAME
- _ZNK20QDeclarativeProperty16isSignalPropertyEv @ 2532 NONAME
- _ZNK20QDeclarativeProperty16propertyTypeNameEv @ 2533 NONAME
- _ZNK20QDeclarativeProperty17needsNotifySignalEv @ 2534 NONAME
- _ZNK20QDeclarativeProperty19connectNotifySignalEP7QObjectPKc @ 2535 NONAME
- _ZNK20QDeclarativeProperty19connectNotifySignalEP7QObjecti @ 2536 NONAME
- _ZNK20QDeclarativeProperty20propertyTypeCategoryEv @ 2537 NONAME
- _ZNK20QDeclarativeProperty4nameEv @ 2538 NONAME
- _ZNK20QDeclarativeProperty4readEv @ 2539 NONAME
- _ZNK20QDeclarativeProperty4typeEv @ 2540 NONAME
- _ZNK20QDeclarativeProperty5indexEv @ 2541 NONAME
- _ZNK20QDeclarativeProperty5resetEv @ 2542 NONAME
- _ZNK20QDeclarativeProperty5writeERK8QVariant @ 2543 NONAME
- _ZNK20QDeclarativeProperty6methodEv @ 2544 NONAME
- _ZNK20QDeclarativeProperty6objectEv @ 2545 NONAME
- _ZNK20QDeclarativeProperty7isValidEv @ 2546 NONAME
- _ZNK20QDeclarativeProperty8propertyEv @ 2547 NONAME
- _ZNK20QDeclarativePropertyeqERKS_ @ 2548 NONAME
- _ZNK20QDeclarativeRepeater10metaObjectEv @ 2549 NONAME
- _ZNK20QDeclarativeRepeater5countEv @ 2550 NONAME
- _ZNK20QDeclarativeRepeater5modelEv @ 2551 NONAME
- _ZNK20QDeclarativeRepeater8delegateEv @ 2552 NONAME
- _ZNK20QDeclarativeTextEdit10cursorRectEv @ 2553 NONAME
- _ZNK20QDeclarativeTextEdit10isReadOnlyEv @ 2554 NONAME
- _ZNK20QDeclarativeTextEdit10metaObjectEv @ 2555 NONAME
- _ZNK20QDeclarativeTextEdit10textFormatEv @ 2556 NONAME
- _ZNK20QDeclarativeTextEdit10textMarginEv @ 2557 NONAME
- _ZNK20QDeclarativeTextEdit12focusOnPressEv @ 2558 NONAME
- _ZNK20QDeclarativeTextEdit12selectedTextEv @ 2559 NONAME
- _ZNK20QDeclarativeTextEdit12selectionEndEv @ 2560 NONAME
- _ZNK20QDeclarativeTextEdit14cursorDelegateEv @ 2561 NONAME
- _ZNK20QDeclarativeTextEdit14cursorPositionEv @ 2562 NONAME
- _ZNK20QDeclarativeTextEdit14selectionColorEv @ 2563 NONAME
- _ZNK20QDeclarativeTextEdit14selectionStartEv @ 2564 NONAME
- _ZNK20QDeclarativeTextEdit15isCursorVisibleEv @ 2565 NONAME
- _ZNK20QDeclarativeTextEdit16inputMethodQueryEN2Qt16InputMethodQueryE @ 2566 NONAME
- _ZNK20QDeclarativeTextEdit17selectedTextColorEv @ 2567 NONAME
- _ZNK20QDeclarativeTextEdit19persistentSelectionEv @ 2568 NONAME
- _ZNK20QDeclarativeTextEdit20textInteractionFlagsEv @ 2569 NONAME
- _ZNK20QDeclarativeTextEdit4fontEv @ 2570 NONAME
- _ZNK20QDeclarativeTextEdit4textEv @ 2571 NONAME
- _ZNK20QDeclarativeTextEdit4wrapEv @ 2572 NONAME
- _ZNK20QDeclarativeTextEdit5colorEv @ 2573 NONAME
- _ZNK20QDeclarativeTextEdit6hAlignEv @ 2574 NONAME
- _ZNK20QDeclarativeTextEdit6vAlignEv @ 2575 NONAME
- _ZNK20QMetaPropertyBuilder10isEditableEv @ 2576 NONAME
- _ZNK20QMetaPropertyBuilder10isReadableEv @ 2577 NONAME
- _ZNK20QMetaPropertyBuilder10isWritableEv @ 2578 NONAME
- _ZNK20QMetaPropertyBuilder12hasStdCppSetEv @ 2579 NONAME
- _ZNK20QMetaPropertyBuilder12isDesignableEv @ 2580 NONAME
- _ZNK20QMetaPropertyBuilder12isEnumOrFlagEv @ 2581 NONAME
- _ZNK20QMetaPropertyBuilder12isResettableEv @ 2582 NONAME
- _ZNK20QMetaPropertyBuilder12isScriptableEv @ 2583 NONAME
- _ZNK20QMetaPropertyBuilder12notifySignalEv @ 2584 NONAME
- _ZNK20QMetaPropertyBuilder15hasNotifySignalEv @ 2585 NONAME
- _ZNK20QMetaPropertyBuilder4nameEv @ 2586 NONAME
- _ZNK20QMetaPropertyBuilder4typeEv @ 2587 NONAME
- _ZNK20QMetaPropertyBuilder6d_funcEv @ 2588 NONAME
- _ZNK20QMetaPropertyBuilder6isUserEv @ 2589 NONAME
- _ZNK20QMetaPropertyBuilder8isStoredEv @ 2590 NONAME
- _ZNK20QMetaPropertyBuilder9isDynamicEv @ 2591 NONAME
- _ZNK21QDeclarativeComponent10metaObjectEv @ 2592 NONAME
- _ZNK21QDeclarativeComponent12errorsStringEv @ 2593 NONAME
- _ZNK21QDeclarativeComponent15creationContextEv @ 2594 NONAME
- _ZNK21QDeclarativeComponent3urlEv @ 2595 NONAME
- _ZNK21QDeclarativeComponent6errorsEv @ 2596 NONAME
- _ZNK21QDeclarativeComponent6isNullEv @ 2597 NONAME
- _ZNK21QDeclarativeComponent6statusEv @ 2598 NONAME
- _ZNK21QDeclarativeComponent7isErrorEv @ 2599 NONAME
- _ZNK21QDeclarativeComponent7isReadyEv @ 2600 NONAME
- _ZNK21QDeclarativeComponent8progressEv @ 2601 NONAME
- _ZNK21QDeclarativeComponent9isLoadingEv @ 2602 NONAME
- _ZNK21QDeclarativeDomImport3uriEv @ 2603 NONAME
- _ZNK21QDeclarativeDomImport4typeEv @ 2604 NONAME
- _ZNK21QDeclarativeDomImport7versionEv @ 2605 NONAME
- _ZNK21QDeclarativeDomImport9qualifierEv @ 2606 NONAME
- _ZNK21QDeclarativeDomObject10objectTypeEv @ 2607 NONAME
- _ZNK21QDeclarativeDomObject10propertiesEv @ 2608 NONAME
- _ZNK21QDeclarativeDomObject11isComponentEv @ 2609 NONAME
- _ZNK21QDeclarativeDomObject11toComponentEv @ 2610 NONAME
- _ZNK21QDeclarativeDomObject12isCustomTypeEv @ 2611 NONAME
- _ZNK21QDeclarativeDomObject14customTypeDataEv @ 2612 NONAME
- _ZNK21QDeclarativeDomObject15dynamicPropertyERK10QByteArray @ 2613 NONAME
- _ZNK21QDeclarativeDomObject15objectClassNameEv @ 2614 NONAME
- _ZNK21QDeclarativeDomObject17dynamicPropertiesEv @ 2615 NONAME
- _ZNK21QDeclarativeDomObject22objectTypeMajorVersionEv @ 2616 NONAME
- _ZNK21QDeclarativeDomObject22objectTypeMinorVersionEv @ 2617 NONAME
- _ZNK21QDeclarativeDomObject3urlEv @ 2618 NONAME
- _ZNK21QDeclarativeDomObject6lengthEv @ 2619 NONAME
- _ZNK21QDeclarativeDomObject7isValidEv @ 2620 NONAME
- _ZNK21QDeclarativeDomObject8objectIdEv @ 2621 NONAME
- _ZNK21QDeclarativeDomObject8positionEv @ 2622 NONAME
- _ZNK21QDeclarativeDomObject8propertyERK10QByteArray @ 2623 NONAME
- _ZNK21QDeclarativeFlickable10isFlickingEv @ 2624 NONAME
- _ZNK21QDeclarativeFlickable10maxXExtentEv @ 2625 NONAME
- _ZNK21QDeclarativeFlickable10maxYExtentEv @ 2626 NONAME
- _ZNK21QDeclarativeFlickable10metaObjectEv @ 2627 NONAME
- _ZNK21QDeclarativeFlickable10minXExtentEv @ 2628 NONAME
- _ZNK21QDeclarativeFlickable10minYExtentEv @ 2629 NONAME
- _ZNK21QDeclarativeFlickable10pressDelayEv @ 2630 NONAME
- _ZNK21QDeclarativeFlickable12contentWidthEv @ 2631 NONAME
- _ZNK21QDeclarativeFlickable13contentHeightEv @ 2632 NONAME
- _ZNK21QDeclarativeFlickable13isInteractiveEv @ 2633 NONAME
- _ZNK21QDeclarativeFlickable14flickDirectionEv @ 2634 NONAME
- _ZNK21QDeclarativeFlickable14isAtXBeginningEv @ 2635 NONAME
- _ZNK21QDeclarativeFlickable14isAtYBeginningEv @ 2636 NONAME
- _ZNK21QDeclarativeFlickable16verticalVelocityEv @ 2637 NONAME
- _ZNK21QDeclarativeFlickable17flickDecelerationEv @ 2638 NONAME
- _ZNK21QDeclarativeFlickable18horizontalVelocityEv @ 2639 NONAME
- _ZNK21QDeclarativeFlickable20maximumFlickVelocityEv @ 2640 NONAME
- _ZNK21QDeclarativeFlickable6vWidthEv @ 2641 NONAME
- _ZNK21QDeclarativeFlickable6xflickEv @ 2642 NONAME
- _ZNK21QDeclarativeFlickable6yflickEv @ 2643 NONAME
- _ZNK21QDeclarativeFlickable7vHeightEv @ 2644 NONAME
- _ZNK21QDeclarativeFlickable8contentXEv @ 2645 NONAME
- _ZNK21QDeclarativeFlickable8contentYEv @ 2646 NONAME
- _ZNK21QDeclarativeFlickable8isAtXEndEv @ 2647 NONAME
- _ZNK21QDeclarativeFlickable8isAtYEndEv @ 2648 NONAME
- _ZNK21QDeclarativeFlickable8isMovingEv @ 2649 NONAME
- _ZNK21QDeclarativeFlickable9overShootEv @ 2650 NONAME
- _ZNK21QDeclarativeImageBase10metaObjectEv @ 2651 NONAME
- _ZNK21QDeclarativeImageBase12asynchronousEv @ 2652 NONAME
- _ZNK21QDeclarativeImageBase6sourceEv @ 2653 NONAME
- _ZNK21QDeclarativeImageBase6statusEv @ 2654 NONAME
- _ZNK21QDeclarativeImageBase8progressEv @ 2655 NONAME
- _ZNK21QDeclarativeListModel10checkRolesEv @ 2656 NONAME
- _ZNK21QDeclarativeListModel10metaObjectEv @ 2657 NONAME
- _ZNK21QDeclarativeListModel12valueForNodeEP9ModelNode @ 2658 NONAME
- _ZNK21QDeclarativeListModel3getEi @ 2659 NONAME
- _ZNK21QDeclarativeListModel4dataEiRK5QListIiE @ 2660 NONAME
- _ZNK21QDeclarativeListModel4dataEii @ 2661 NONAME
- _ZNK21QDeclarativeListModel5countEv @ 2662 NONAME
- _ZNK21QDeclarativeListModel5rolesEv @ 2663 NONAME
- _ZNK21QDeclarativeListModel7addRoleERK7QString @ 2664 NONAME
- _ZNK21QDeclarativeListModel8toStringEi @ 2665 NONAME
- _ZNK21QDeclarativeMouseArea10metaObjectEv @ 2666 NONAME
- _ZNK21QDeclarativeMouseArea14pressedButtonsEv @ 2667 NONAME
- _ZNK21QDeclarativeMouseArea15acceptedButtonsEv @ 2668 NONAME
- _ZNK21QDeclarativeMouseArea6mouseXEv @ 2669 NONAME
- _ZNK21QDeclarativeMouseArea6mouseYEv @ 2670 NONAME
- _ZNK21QDeclarativeMouseArea7hoveredEv @ 2671 NONAME
- _ZNK21QDeclarativeMouseArea7pressedEv @ 2672 NONAME
- _ZNK21QDeclarativeMouseArea9isEnabledEv @ 2673 NONAME
- _ZNK21QDeclarativeParticles10metaObjectEv @ 2674 NONAME
- _ZNK21QDeclarativeParticles12emissionRateEv @ 2675 NONAME
- _ZNK21QDeclarativeParticles14angleDeviationEv @ 2676 NONAME
- _ZNK21QDeclarativeParticles14fadeInDurationEv @ 2677 NONAME
- _ZNK21QDeclarativeParticles15fadeOutDurationEv @ 2678 NONAME
- _ZNK21QDeclarativeParticles16emissionVarianceEv @ 2679 NONAME
- _ZNK21QDeclarativeParticles17lifeSpanDeviationEv @ 2680 NONAME
- _ZNK21QDeclarativeParticles17velocityDeviationEv @ 2681 NONAME
- _ZNK21QDeclarativeParticles5angleEv @ 2682 NONAME
- _ZNK21QDeclarativeParticles5countEv @ 2683 NONAME
- _ZNK21QDeclarativeParticles6motionEv @ 2684 NONAME
- _ZNK21QDeclarativeParticles6sourceEv @ 2685 NONAME
- _ZNK21QDeclarativeParticles8lifeSpanEv @ 2686 NONAME
- _ZNK21QDeclarativeParticles8velocityEv @ 2687 NONAME
- _ZNK21QDeclarativePathCubic10metaObjectEv @ 2688 NONAME
- _ZNK21QDeclarativePathCubic9control1XEv @ 2689 NONAME
- _ZNK21QDeclarativePathCubic9control1YEv @ 2690 NONAME
- _ZNK21QDeclarativePathCubic9control2XEv @ 2691 NONAME
- _ZNK21QDeclarativePathCubic9control2YEv @ 2692 NONAME
- _ZNK21QDeclarativeRectangle10metaObjectEv @ 2693 NONAME
- _ZNK21QDeclarativeRectangle12boundingRectEv @ 2694 NONAME
- _ZNK21QDeclarativeRectangle5colorEv @ 2695 NONAME
- _ZNK21QDeclarativeRectangle6radiusEv @ 2696 NONAME
- _ZNK21QDeclarativeRectangle8gradientEv @ 2697 NONAME
- _ZNK21QDeclarativeScaleGrid10metaObjectEv @ 2698 NONAME
- _ZNK21QDeclarativeScaleGrid6isNullEv @ 2699 NONAME
- _ZNK21QDeclarativeTextInput10cursorRectEv @ 2700 NONAME
- _ZNK21QDeclarativeTextInput10isReadOnlyEv @ 2701 NONAME
- _ZNK21QDeclarativeTextInput10metaObjectEv @ 2702 NONAME
- _ZNK21QDeclarativeTextInput12focusOnPressEv @ 2703 NONAME
- _ZNK21QDeclarativeTextInput12selectedTextEv @ 2704 NONAME
- _ZNK21QDeclarativeTextInput12selectionEndEv @ 2705 NONAME
- _ZNK21QDeclarativeTextInput14cursorDelegateEv @ 2706 NONAME
- _ZNK21QDeclarativeTextInput14cursorPositionEv @ 2707 NONAME
- _ZNK21QDeclarativeTextInput14selectionColorEv @ 2708 NONAME
- _ZNK21QDeclarativeTextInput14selectionStartEv @ 2709 NONAME
- _ZNK21QDeclarativeTextInput15isCursorVisibleEv @ 2710 NONAME
- _ZNK21QDeclarativeTextInput16inputMethodQueryEN2Qt16InputMethodQueryE @ 2711 NONAME
- _ZNK21QDeclarativeTextInput17selectedTextColorEv @ 2712 NONAME
- _ZNK21QDeclarativeTextInput18hasAcceptableInputEv @ 2713 NONAME
- _ZNK21QDeclarativeTextInput4fontEv @ 2714 NONAME
- _ZNK21QDeclarativeTextInput4textEv @ 2715 NONAME
- _ZNK21QDeclarativeTextInput5colorEv @ 2716 NONAME
- _ZNK21QDeclarativeTextInput6hAlignEv @ 2717 NONAME
- _ZNK21QDeclarativeTextInput8echoModeEv @ 2718 NONAME
- _ZNK21QDeclarativeTextInput9inputMaskEv @ 2719 NONAME
- _ZNK21QDeclarativeTextInput9maxLengthEv @ 2720 NONAME
- _ZNK21QDeclarativeTextInput9validatorEv @ 2721 NONAME
- _ZNK21QDeclarativeValueType10metaObjectEv @ 2722 NONAME
- _ZNK22QDeclarativeDebugQuery10metaObjectEv @ 2723 NONAME
- _ZNK22QDeclarativeDebugQuery5stateEv @ 2724 NONAME
- _ZNK22QDeclarativeDebugQuery9isWaitingEv @ 2725 NONAME
- _ZNK22QDeclarativeDebugWatch10metaObjectEv @ 2726 NONAME
- _ZNK22QDeclarativeDebugWatch13objectDebugIdEv @ 2727 NONAME
- _ZNK22QDeclarativeDebugWatch5stateEv @ 2728 NONAME
- _ZNK22QDeclarativeDebugWatch7queryIdEv @ 2729 NONAME
- _ZNK22QDeclarativeEaseFollow10metaObjectEv @ 2730 NONAME
- _ZNK22QDeclarativeEaseFollow11sourceValueEv @ 2731 NONAME
- _ZNK22QDeclarativeEaseFollow13reversingModeEv @ 2732 NONAME
- _ZNK22QDeclarativeEaseFollow17maximumEasingTimeEv @ 2733 NONAME
- _ZNK22QDeclarativeEaseFollow7enabledEv @ 2734 NONAME
- _ZNK22QDeclarativeEaseFollow8durationEv @ 2735 NONAME
- _ZNK22QDeclarativeEaseFollow8velocityEv @ 2736 NONAME
- _ZNK22QDeclarativeExpression10expressionEv @ 2737 NONAME
- _ZNK22QDeclarativeExpression10lineNumberEv @ 2738 NONAME
- _ZNK22QDeclarativeExpression10metaObjectEv @ 2739 NONAME
- _ZNK22QDeclarativeExpression10sourceFileEv @ 2740 NONAME
- _ZNK22QDeclarativeExpression11scopeObjectEv @ 2741 NONAME
- _ZNK22QDeclarativeExpression20notifyOnValueChangedEv @ 2742 NONAME
- _ZNK22QDeclarativeExpression5errorEv @ 2743 NONAME
- _ZNK22QDeclarativeExpression6engineEv @ 2744 NONAME
- _ZNK22QDeclarativeExpression7contextEv @ 2745 NONAME
- _ZNK22QDeclarativeExpression8hasErrorEv @ 2746 NONAME
- _ZNK22QDeclarativeFocusPanel10metaObjectEv @ 2747 NONAME
- _ZNK22QDeclarativeFocusScope10metaObjectEv @ 2748 NONAME
- _ZNK22QDeclarativeFontLoader10metaObjectEv @ 2749 NONAME
- _ZNK22QDeclarativeFontLoader4nameEv @ 2750 NONAME
- _ZNK22QDeclarativeFontLoader6sourceEv @ 2751 NONAME
- _ZNK22QDeclarativeFontLoader6statusEv @ 2752 NONAME
- _ZNK22QDeclarativeStateGroup10metaObjectEv @ 2753 NONAME
- _ZNK22QDeclarativeStateGroup5stateEv @ 2754 NONAME
- _ZNK22QDeclarativeStateGroup6statesEv @ 2755 NONAME
- _ZNK22QDeclarativeStateGroup9findStateERK7QString @ 2756 NONAME
- _ZNK22QDeclarativeTransition10metaObjectEv @ 2757 NONAME
- _ZNK22QDeclarativeTransition10reversibleEv @ 2758 NONAME
- _ZNK22QDeclarativeTransition7toStateEv @ 2759 NONAME
- _ZNK22QDeclarativeTransition9fromStateEv @ 2760 NONAME
- _ZNK23QDeclarativeBorderImage10metaObjectEv @ 2761 NONAME
- _ZNK23QDeclarativeBorderImage16verticalTileModeEv @ 2762 NONAME
- _ZNK23QDeclarativeBorderImage18horizontalTileModeEv @ 2763 NONAME
- _ZNK23QDeclarativeConnections10metaObjectEv @ 2764 NONAME
- _ZNK23QDeclarativeConnections6targetEv @ 2765 NONAME
- _ZNK23QDeclarativeDebugClient10metaObjectEv @ 2766 NONAME
- _ZNK23QDeclarativeDebugClient11isConnectedEv @ 2767 NONAME
- _ZNK23QDeclarativeDebugClient4nameEv @ 2768 NONAME
- _ZNK23QDeclarativeDebugClient9isEnabledEv @ 2769 NONAME
- _ZNK23QDeclarativeDomDocument10rootObjectEv @ 2770 NONAME
- _ZNK23QDeclarativeDomDocument6errorsEv @ 2771 NONAME
- _ZNK23QDeclarativeDomDocument7importsEv @ 2772 NONAME
- _ZNK23QDeclarativeDomProperty12propertyNameEv @ 2773 NONAME
- _ZNK23QDeclarativeDomProperty17isDefaultPropertyEv @ 2774 NONAME
- _ZNK23QDeclarativeDomProperty17propertyNamePartsEv @ 2775 NONAME
- _ZNK23QDeclarativeDomProperty5valueEv @ 2776 NONAME
- _ZNK23QDeclarativeDomProperty6lengthEv @ 2777 NONAME
- _ZNK23QDeclarativeDomProperty7isValidEv @ 2778 NONAME
- _ZNK23QDeclarativeDomProperty8positionEv @ 2779 NONAME
- _ZNK23QDeclarativeEngineDebug10metaObjectEv @ 2780 NONAME
- _ZNK23QDeclarativePaintedItem10metaObjectEv @ 2781 NONAME
- _ZNK23QDeclarativePaintedItem11smoothCacheEv @ 2782 NONAME
- _ZNK23QDeclarativePaintedItem12contentsSizeEv @ 2783 NONAME
- _ZNK23QDeclarativePaintedItem13contentsScaleEv @ 2784 NONAME
- _ZNK23QDeclarativePaintedItem14pixelCacheSizeEv @ 2785 NONAME
- _ZNK23QDeclarativePaintedItem9fillColorEv @ 2786 NONAME
- _ZNK23QDeclarativePathElement10metaObjectEv @ 2787 NONAME
- _ZNK23QDeclarativePathPercent10metaObjectEv @ 2788 NONAME
- _ZNK23QDeclarativePathPercent5valueEv @ 2789 NONAME
- _ZNK23QDeclarativePixmapReply10metaObjectEv @ 2790 NONAME
- _ZNK23QDeclarativePixmapReply3urlEv @ 2791 NONAME
- _ZNK23QDeclarativePixmapReply6statusEv @ 2792 NONAME
- _ZNK23QDeclarativePixmapReply9isLoadingEv @ 2793 NONAME
- _ZNK23QDeclarativePropertyMap10metaObjectEv @ 2794 NONAME
- _ZNK23QDeclarativePropertyMap4keysEv @ 2795 NONAME
- _ZNK23QDeclarativePropertyMap4sizeEv @ 2796 NONAME
- _ZNK23QDeclarativePropertyMap5countEv @ 2797 NONAME
- _ZNK23QDeclarativePropertyMap5valueERK7QString @ 2798 NONAME
- _ZNK23QDeclarativePropertyMap7isEmptyEv @ 2799 NONAME
- _ZNK23QDeclarativePropertyMap8containsERK7QString @ 2800 NONAME
- _ZNK23QDeclarativePropertyMapixERK7QString @ 2801 NONAME
- _ZNK23QDeclarativeViewSection10metaObjectEv @ 2802 NONAME
- _ZNK23QDeclarativeVisualModel10metaObjectEv @ 2803 NONAME
- _ZNK24QDeclarativeDebugService10metaObjectEv @ 2804 NONAME
- _ZNK24QDeclarativeDebugService4nameEv @ 2805 NONAME
- _ZNK24QDeclarativeDebugService9isEnabledEv @ 2806 NONAME
- _ZNK24QDeclarativeDomComponent13componentRootEv @ 2807 NONAME
- _ZNK24QDeclarativeGradientStop10metaObjectEv @ 2808 NONAME
- _ZNK24QDeclarativeListAccessor2atEi @ 2809 NONAME
- _ZNK24QDeclarativeListAccessor4listEv @ 2810 NONAME
- _ZNK24QDeclarativeListAccessor5countEv @ 2811 NONAME
- _ZNK24QDeclarativeListAccessor7isValidEv @ 2812 NONAME
- _ZNK24QDeclarativeParentChange10metaObjectEv @ 2813 NONAME
- _ZNK24QDeclarativeParentChange10scaleIsSetEv @ 2814 NONAME
- _ZNK24QDeclarativeParentChange10widthIsSetEv @ 2815 NONAME
- _ZNK24QDeclarativeParentChange11heightIsSetEv @ 2816 NONAME
- _ZNK24QDeclarativeParentChange13rotationIsSetEv @ 2817 NONAME
- _ZNK24QDeclarativeParentChange14originalParentEv @ 2818 NONAME
- _ZNK24QDeclarativeParentChange1xEv @ 2819 NONAME
- _ZNK24QDeclarativeParentChange1yEv @ 2820 NONAME
- _ZNK24QDeclarativeParentChange5scaleEv @ 2821 NONAME
- _ZNK24QDeclarativeParentChange5widthEv @ 2822 NONAME
- _ZNK24QDeclarativeParentChange6heightEv @ 2823 NONAME
- _ZNK24QDeclarativeParentChange6objectEv @ 2824 NONAME
- _ZNK24QDeclarativeParentChange6parentEv @ 2825 NONAME
- _ZNK24QDeclarativeParentChange6xIsSetEv @ 2826 NONAME
- _ZNK24QDeclarativeParentChange6yIsSetEv @ 2827 NONAME
- _ZNK24QDeclarativeParentChange8rotationEv @ 2828 NONAME
- _ZNK24QDeclarativeParentChange8typeNameEv @ 2829 NONAME
- _ZNK24QDeclarativeScriptString11scopeObjectEv @ 2830 NONAME
- _ZNK24QDeclarativeScriptString6scriptEv @ 2831 NONAME
- _ZNK24QDeclarativeScriptString7contextEv @ 2832 NONAME
- _ZNK24QDeclarativeSpringFollow10metaObjectEv @ 2833 NONAME
- _ZNK24QDeclarativeSpringFollow11sourceValueEv @ 2834 NONAME
- _ZNK24QDeclarativeSpringFollow4massEv @ 2835 NONAME
- _ZNK24QDeclarativeSpringFollow5valueEv @ 2836 NONAME
- _ZNK24QDeclarativeSpringFollow6inSyncEv @ 2837 NONAME
- _ZNK24QDeclarativeSpringFollow6springEv @ 2838 NONAME
- _ZNK24QDeclarativeSpringFollow7dampingEv @ 2839 NONAME
- _ZNK24QDeclarativeSpringFollow7enabledEv @ 2840 NONAME
- _ZNK24QDeclarativeSpringFollow7epsilonEv @ 2841 NONAME
- _ZNK24QDeclarativeSpringFollow7modulusEv @ 2842 NONAME
- _ZNK24QDeclarativeSpringFollow8velocityEv @ 2843 NONAME
- _ZNK24QDeclarativeXmlListModel10metaObjectEv @ 2844 NONAME
- _ZNK24QDeclarativeXmlListModel21namespaceDeclarationsEv @ 2845 NONAME
- _ZNK24QDeclarativeXmlListModel3xmlEv @ 2846 NONAME
- _ZNK24QDeclarativeXmlListModel4dataEiRK5QListIiE @ 2847 NONAME
- _ZNK24QDeclarativeXmlListModel4dataEii @ 2848 NONAME
- _ZNK24QDeclarativeXmlListModel5countEv @ 2849 NONAME
- _ZNK24QDeclarativeXmlListModel5queryEv @ 2850 NONAME
- _ZNK24QDeclarativeXmlListModel5rolesEv @ 2851 NONAME
- _ZNK24QDeclarativeXmlListModel6sourceEv @ 2852 NONAME
- _ZNK24QDeclarativeXmlListModel6statusEv @ 2853 NONAME
- _ZNK24QDeclarativeXmlListModel8progressEv @ 2854 NONAME
- _ZNK24QDeclarativeXmlListModel8toStringEi @ 2855 NONAME
- _ZNK25QDeclarativeAnchorChanges10metaObjectEv @ 2856 NONAME
- _ZNK25QDeclarativeAnchorChanges14verticalCenterEv @ 2857 NONAME
- _ZNK25QDeclarativeAnchorChanges16horizontalCenterEv @ 2858 NONAME
- _ZNK25QDeclarativeAnchorChanges3topEv @ 2859 NONAME
- _ZNK25QDeclarativeAnchorChanges4leftEv @ 2860 NONAME
- _ZNK25QDeclarativeAnchorChanges5resetEv @ 2861 NONAME
- _ZNK25QDeclarativeAnchorChanges5rightEv @ 2862 NONAME
- _ZNK25QDeclarativeAnchorChanges6bottomEv @ 2863 NONAME
- _ZNK25QDeclarativeAnchorChanges6objectEv @ 2864 NONAME
- _ZNK25QDeclarativeAnchorChanges8baselineEv @ 2865 NONAME
- _ZNK25QDeclarativeAnchorChanges8typeNameEv @ 2866 NONAME
- _ZNK25QDeclarativeAnimatedImage10frameCountEv @ 2867 NONAME
- _ZNK25QDeclarativeAnimatedImage10metaObjectEv @ 2868 NONAME
- _ZNK25QDeclarativeAnimatedImage12currentFrameEv @ 2869 NONAME
- _ZNK25QDeclarativeAnimatedImage8isPausedEv @ 2870 NONAME
- _ZNK25QDeclarativeAnimatedImage9isPlayingEv @ 2871 NONAME
- _ZNK25QDeclarativeListReference15listElementTypeEv @ 2872 NONAME
- _ZNK25QDeclarativeListReference2atEi @ 2873 NONAME
- _ZNK25QDeclarativeListReference5canAtEv @ 2874 NONAME
- _ZNK25QDeclarativeListReference5clearEv @ 2875 NONAME
- _ZNK25QDeclarativeListReference5countEv @ 2876 NONAME
- _ZNK25QDeclarativeListReference6appendEP7QObject @ 2877 NONAME
- _ZNK25QDeclarativeListReference6objectEv @ 2878 NONAME
- _ZNK25QDeclarativeListReference7isValidEv @ 2879 NONAME
- _ZNK25QDeclarativeListReference8canClearEv @ 2880 NONAME
- _ZNK25QDeclarativeListReference8canCountEv @ 2881 NONAME
- _ZNK25QDeclarativeListReference9canAppendEv @ 2882 NONAME
- _ZNK25QDeclarativePathAttribute10metaObjectEv @ 2883 NONAME
- _ZNK25QDeclarativePathAttribute4nameEv @ 2884 NONAME
- _ZNK25QDeclarativePathAttribute5valueEv @ 2885 NONAME
- _ZNK25QDeclarativeSystemPalette10buttonTextEv @ 2886 NONAME
- _ZNK25QDeclarativeSystemPalette10colorGroupEv @ 2887 NONAME
- _ZNK25QDeclarativeSystemPalette10metaObjectEv @ 2888 NONAME
- _ZNK25QDeclarativeSystemPalette10windowTextEv @ 2889 NONAME
- _ZNK25QDeclarativeSystemPalette13alternateBaseEv @ 2890 NONAME
- _ZNK25QDeclarativeSystemPalette15highlightedTextEv @ 2891 NONAME
- _ZNK25QDeclarativeSystemPalette3midEv @ 2892 NONAME
- _ZNK25QDeclarativeSystemPalette4baseEv @ 2893 NONAME
- _ZNK25QDeclarativeSystemPalette4darkEv @ 2894 NONAME
- _ZNK25QDeclarativeSystemPalette4textEv @ 2895 NONAME
- _ZNK25QDeclarativeSystemPalette5lightEv @ 2896 NONAME
- _ZNK25QDeclarativeSystemPalette6buttonEv @ 2897 NONAME
- _ZNK25QDeclarativeSystemPalette6shadowEv @ 2898 NONAME
- _ZNK25QDeclarativeSystemPalette6windowEv @ 2899 NONAME
- _ZNK25QDeclarativeSystemPalette8midlightEv @ 2900 NONAME
- _ZNK25QDeclarativeSystemPalette9highlightEv @ 2901 NONAME
- _ZNK26QDeclarativeBasePositioner10metaObjectEv @ 2902 NONAME
- _ZNK26QDeclarativeBasePositioner3addEv @ 2903 NONAME
- _ZNK26QDeclarativeBasePositioner4moveEv @ 2904 NONAME
- _ZNK26QDeclarativeBasePositioner7spacingEv @ 2905 NONAME
- _ZNK26QDeclarativeOpenMetaObject4nameEi @ 2906 NONAME
- _ZNK26QDeclarativeOpenMetaObject4typeEv @ 2907 NONAME
- _ZNK26QDeclarativeOpenMetaObject5countEv @ 2908 NONAME
- _ZNK26QDeclarativeOpenMetaObject5valueERK10QByteArray @ 2909 NONAME
- _ZNK26QDeclarativeOpenMetaObject5valueEi @ 2910 NONAME
- _ZNK26QDeclarativeOpenMetaObject6objectEv @ 2911 NONAME
- _ZNK26QDeclarativeOpenMetaObject6parentEv @ 2912 NONAME
- _ZNK26QDeclarativeParticleMotion10metaObjectEv @ 2913 NONAME
- _ZNK26QDeclarativeStateOperation10metaObjectEv @ 2914 NONAME
- _ZNK27QDeclarativeDebugConnection10metaObjectEv @ 2915 NONAME
- _ZNK27QDeclarativeDebugConnection11isConnectedEv @ 2916 NONAME
- _ZNK27QDeclarativeDomValueBinding7bindingEv @ 2917 NONAME
- _ZNK27QDeclarativeDomValueLiteral7literalEv @ 2918 NONAME
- _ZNK27QDeclarativeExtensionPlugin10metaObjectEv @ 2919 NONAME
- _ZNK27QDeclarativeGridScaledImage10gridBottomEv @ 2920 NONAME
- _ZNK27QDeclarativeGridScaledImage7gridTopEv @ 2921 NONAME
- _ZNK27QDeclarativeGridScaledImage7isValidEv @ 2922 NONAME
- _ZNK27QDeclarativeGridScaledImage8gridLeftEv @ 2923 NONAME
- _ZNK27QDeclarativeGridScaledImage9gridRightEv @ 2924 NONAME
- _ZNK27QDeclarativeGridScaledImage9pixmapUrlEv @ 2925 NONAME
- _ZNK27QDeclarativeNumberFormatter10metaObjectEv @ 2926 NONAME
- _ZNK27QDeclarativeNumberFormatter4textEv @ 2927 NONAME
- _ZNK27QDeclarativeNumberFormatter6formatEv @ 2928 NONAME
- _ZNK27QDeclarativeNumberFormatter6numberEv @ 2929 NONAME
- _ZNK27QDeclarativePropertyChanges10isExplicitEv @ 2930 NONAME
- _ZNK27QDeclarativePropertyChanges10metaObjectEv @ 2931 NONAME
- _ZNK27QDeclarativePropertyChanges18restoreEntryValuesEv @ 2932 NONAME
- _ZNK27QDeclarativePropertyChanges6objectEv @ 2933 NONAME
- _ZNK27QDeclarativeVisualDataModel10metaObjectEv @ 2934 NONAME
- _ZNK27QDeclarativeVisualDataModel4partEv @ 2935 NONAME
- _ZNK27QDeclarativeVisualDataModel5countEv @ 2936 NONAME
- _ZNK27QDeclarativeVisualDataModel5modelEv @ 2937 NONAME
- _ZNK27QDeclarativeVisualDataModel7indexOfEP16QDeclarativeItemP7QObject @ 2938 NONAME
- _ZNK27QDeclarativeVisualDataModel8delegateEv @ 2939 NONAME
- _ZNK27QDeclarativeVisualDataModel9rootIndexEv @ 2940 NONAME
- _ZNK27QDeclarativeVisualItemModel10metaObjectEv @ 2941 NONAME
- _ZNK27QDeclarativeVisualItemModel5countEv @ 2942 NONAME
- _ZNK27QDeclarativeVisualItemModel7indexOfEP16QDeclarativeItemP7QObject @ 2943 NONAME
- _ZNK27QDeclarativeVisualItemModel7isValidEv @ 2944 NONAME
- _ZNK28QDeclarativeCustomParserNode10propertiesEv @ 2945 NONAME
- _ZNK28QDeclarativeCustomParserNode4nameEv @ 2946 NONAME
- _ZNK28QDeclarativeCustomParserNode8locationEv @ 2947 NONAME
- _ZNK28QDeclarativeDebugObjectQuery10metaObjectEv @ 2948 NONAME
- _ZNK28QDeclarativeDebugObjectQuery6objectEv @ 2949 NONAME
- _ZNK28QDeclarativeXmlListModelRole10metaObjectEv @ 2950 NONAME
- _ZNK29QDeclarativeDateTimeFormatter10dateFormatEv @ 2951 NONAME
- _ZNK29QDeclarativeDateTimeFormatter10metaObjectEv @ 2952 NONAME
- _ZNK29QDeclarativeDateTimeFormatter10timeFormatEv @ 2953 NONAME
- _ZNK29QDeclarativeDateTimeFormatter12dateTimeTextEv @ 2954 NONAME
- _ZNK29QDeclarativeDateTimeFormatter14dateTimeFormatEv @ 2955 NONAME
- _ZNK29QDeclarativeDateTimeFormatter4dateEv @ 2956 NONAME
- _ZNK29QDeclarativeDateTimeFormatter4timeEv @ 2957 NONAME
- _ZNK29QDeclarativeDateTimeFormatter8dateTextEv @ 2958 NONAME
- _ZNK29QDeclarativeDateTimeFormatter8dateTimeEv @ 2959 NONAME
- _ZNK29QDeclarativeDateTimeFormatter8timeTextEv @ 2960 NONAME
- _ZNK29QDeclarativeDateTimeFormatter9longStyleEv @ 2961 NONAME
- _ZNK29QDeclarativeDebugEnginesQuery10metaObjectEv @ 2962 NONAME
- _ZNK29QDeclarativeDebugEnginesQuery7enginesEv @ 2963 NONAME
- _ZNK29QDeclarativeStateChangeScript10metaObjectEv @ 2964 NONAME
- _ZNK29QDeclarativeStateChangeScript4nameEv @ 2965 NONAME
- _ZNK29QDeclarativeStateChangeScript6scriptEv @ 2966 NONAME
- _ZNK29QDeclarativeStateChangeScript8typeNameEv @ 2967 NONAME
- _ZNK30QDeclarativeDebugFileReference10lineNumberEv @ 2968 NONAME
- _ZNK30QDeclarativeDebugFileReference12columnNumberEv @ 2969 NONAME
- _ZNK30QDeclarativeDebugFileReference3urlEv @ 2970 NONAME
- _ZNK30QDeclarativeDebugPropertyWatch10metaObjectEv @ 2971 NONAME
- _ZNK30QDeclarativeDebugPropertyWatch4nameEv @ 2972 NONAME
- _ZNK30QDeclarativeDomDynamicProperty12defaultValueEv @ 2973 NONAME
- _ZNK30QDeclarativeDomDynamicProperty12propertyNameEv @ 2974 NONAME
- _ZNK30QDeclarativeDomDynamicProperty12propertyTypeEv @ 2975 NONAME
- _ZNK30QDeclarativeDomDynamicProperty16propertyTypeNameEv @ 2976 NONAME
- _ZNK30QDeclarativeDomDynamicProperty17isDefaultPropertyEv @ 2977 NONAME
- _ZNK30QDeclarativeDomDynamicProperty6lengthEv @ 2978 NONAME
- _ZNK30QDeclarativeDomDynamicProperty7isAliasEv @ 2979 NONAME
- _ZNK30QDeclarativeDomDynamicProperty7isValidEv @ 2980 NONAME
- _ZNK30QDeclarativeDomDynamicProperty8positionEv @ 2981 NONAME
- _ZNK30QDeclarativeOpenMetaObjectType12signalOffsetEv @ 2982 NONAME
- _ZNK30QDeclarativeOpenMetaObjectType14propertyOffsetEv @ 2983 NONAME
- _ZNK31QDeclarativeDomValueValueSource6objectEv @ 2984 NONAME
- _ZNK32QDeclarativeCustomParserProperty14assignedValuesEv @ 2985 NONAME
- _ZNK32QDeclarativeCustomParserProperty4nameEv @ 2986 NONAME
- _ZNK32QDeclarativeCustomParserProperty6isListEv @ 2987 NONAME
- _ZNK32QDeclarativeCustomParserProperty8locationEv @ 2988 NONAME
- _ZNK32QDeclarativeDebugEngineReference4nameEv @ 2989 NONAME
- _ZNK32QDeclarativeDebugEngineReference7debugIdEv @ 2990 NONAME
- _ZNK32QDeclarativeDebugExpressionQuery10expressionEv @ 2991 NONAME
- _ZNK32QDeclarativeDebugExpressionQuery10metaObjectEv @ 2992 NONAME
- _ZNK32QDeclarativeDebugExpressionQuery6resultEv @ 2993 NONAME
- _ZNK32QDeclarativeDebugObjectReference10propertiesEv @ 2994 NONAME
- _ZNK32QDeclarativeDebugObjectReference14contextDebugIdEv @ 2995 NONAME
- _ZNK32QDeclarativeDebugObjectReference4nameEv @ 2996 NONAME
- _ZNK32QDeclarativeDebugObjectReference6sourceEv @ 2997 NONAME
- _ZNK32QDeclarativeDebugObjectReference7debugIdEv @ 2998 NONAME
- _ZNK32QDeclarativeDebugObjectReference8childrenEv @ 2999 NONAME
- _ZNK32QDeclarativeDebugObjectReference9classNameEv @ 3000 NONAME
- _ZNK32QDeclarativeParticleMotionLinear10metaObjectEv @ 3001 NONAME
- _ZNK32QDeclarativeParticleMotionWander10metaObjectEv @ 3002 NONAME
- _ZNK33QDeclarativeDebugContextReference4nameEv @ 3003 NONAME
- _ZNK33QDeclarativeDebugContextReference7debugIdEv @ 3004 NONAME
- _ZNK33QDeclarativeDebugContextReference7objectsEv @ 3005 NONAME
- _ZNK33QDeclarativeDebugContextReference8contextsEv @ 3006 NONAME
- _ZNK33QDeclarativeDebugRootContextQuery10metaObjectEv @ 3007 NONAME
- _ZNK33QDeclarativeDebugRootContextQuery11rootContextEv @ 3008 NONAME
- _ZNK33QDeclarativeParticleMotionGravity10metaObjectEv @ 3009 NONAME
- _ZNK34QDeclarativeDebugPropertyReference13objectDebugIdEv @ 3010 NONAME
- _ZNK34QDeclarativeDebugPropertyReference13valueTypeNameEv @ 3011 NONAME
- _ZNK34QDeclarativeDebugPropertyReference15hasNotifySignalEv @ 3012 NONAME
- _ZNK34QDeclarativeDebugPropertyReference4nameEv @ 3013 NONAME
- _ZNK34QDeclarativeDebugPropertyReference5valueEv @ 3014 NONAME
- _ZNK34QDeclarativeDebugPropertyReference7bindingEv @ 3015 NONAME
- _ZNK35QDeclarativeGraphicsObjectContainer10metaObjectEv @ 3016 NONAME
- _ZNK35QDeclarativeGraphicsObjectContainer14graphicsObjectEv @ 3017 NONAME
- _ZNK35QDeclarativeGraphicsObjectContainer20synchronizedResizingEv @ 3018 NONAME
- _ZNK36QDeclarativeDomValueValueInterceptor6objectEv @ 3019 NONAME
- _ZNK38QDeclarativeDebugObjectExpressionWatch10expressionEv @ 3020 NONAME
- _ZNK38QDeclarativeDebugObjectExpressionWatch10metaObjectEv @ 3021 NONAME
- _ZNK7QPacket7isEmptyEv @ 3022 NONAME
- _ZTI15QDeclarativePen @ 3023 NONAME
- _ZTI15QDeclarativeRow @ 3024 NONAME
- _ZTI15QPacketAutoSend @ 3025 NONAME
- _ZTI15QPacketProtocol @ 3026 NONAME
- _ZTI16QDeclarativeBind @ 3027 NONAME
- _ZTI16QDeclarativeDrag @ 3028 NONAME
- _ZTI16QDeclarativeFlow @ 3029 NONAME
- _ZTI16QDeclarativeGrid @ 3030 NONAME
- _ZTI16QDeclarativeItem @ 3031 NONAME
- _ZTI16QDeclarativePath @ 3032 NONAME
- _ZTI16QDeclarativeText @ 3033 NONAME
- _ZTI16QDeclarativeView @ 3034 NONAME
- _ZTI17QDeclarativeCurve @ 3035 NONAME
- _ZTI17QDeclarativeImage @ 3036 NONAME
- _ZTI17QDeclarativeState @ 3037 NONAME
- _ZTI17QDeclarativeTimer @ 3038 NONAME
- _ZTI18QDeclarativeColumn @ 3039 NONAME
- _ZTI18QDeclarativeEngine @ 3040 NONAME
- _ZTI18QDeclarativeLoader @ 3041 NONAME
- _ZTI18QMetaObjectBuilder @ 3042 NONAME
- _ZTI19QDeclarativeAnchors @ 3043 NONAME
- _ZTI19QDeclarativeContext @ 3044 NONAME
- _ZTI19QDeclarativeWebPage @ 3045 NONAME
- _ZTI19QDeclarativeWebView @ 3046 NONAME
- _ZTI19QListModelInterface @ 3047 NONAME
- _ZTI20QDeclarativeBehavior @ 3048 NONAME
- _ZTI20QDeclarativeFlipable @ 3049 NONAME
- _ZTI20QDeclarativeGradient @ 3050 NONAME
- _ZTI20QDeclarativeGridView @ 3051 NONAME
- _ZTI20QDeclarativeListView @ 3052 NONAME
- _ZTI20QDeclarativePathLine @ 3053 NONAME
- _ZTI20QDeclarativePathQuad @ 3054 NONAME
- _ZTI20QDeclarativePathView @ 3055 NONAME
- _ZTI20QDeclarativeRepeater @ 3056 NONAME
- _ZTI20QDeclarativeTextEdit @ 3057 NONAME
- _ZTI21QDeclarativeComponent @ 3058 NONAME
- _ZTI21QDeclarativeFlickable @ 3059 NONAME
- _ZTI21QDeclarativeImageBase @ 3060 NONAME
- _ZTI21QDeclarativeListModel @ 3061 NONAME
- _ZTI21QDeclarativeMouseArea @ 3062 NONAME
- _ZTI21QDeclarativeParticles @ 3063 NONAME
- _ZTI21QDeclarativePathCubic @ 3064 NONAME
- _ZTI21QDeclarativeRectangle @ 3065 NONAME
- _ZTI21QDeclarativeScaleGrid @ 3066 NONAME
- _ZTI21QDeclarativeTextInput @ 3067 NONAME
- _ZTI21QDeclarativeValueType @ 3068 NONAME
- _ZTI22QDeclarativeDebugQuery @ 3069 NONAME
- _ZTI22QDeclarativeDebugWatch @ 3070 NONAME
- _ZTI22QDeclarativeEaseFollow @ 3071 NONAME
- _ZTI22QDeclarativeExpression @ 3072 NONAME
- _ZTI22QDeclarativeFocusPanel @ 3073 NONAME
- _ZTI22QDeclarativeFocusScope @ 3074 NONAME
- _ZTI22QDeclarativeFontLoader @ 3075 NONAME
- _ZTI22QDeclarativeStateGroup @ 3076 NONAME
- _ZTI22QDeclarativeTransition @ 3077 NONAME
- _ZTI23QDeclarativeBorderImage @ 3078 NONAME
- _ZTI23QDeclarativeConnections @ 3079 NONAME
- _ZTI23QDeclarativeDebugClient @ 3080 NONAME
- _ZTI23QDeclarativeEngineDebug @ 3081 NONAME
- _ZTI23QDeclarativePaintedItem @ 3082 NONAME
- _ZTI23QDeclarativePathElement @ 3083 NONAME
- _ZTI23QDeclarativePathPercent @ 3084 NONAME
- _ZTI23QDeclarativePixmapReply @ 3085 NONAME
- _ZTI23QDeclarativePropertyMap @ 3086 NONAME
- _ZTI23QDeclarativeViewSection @ 3087 NONAME
- _ZTI23QDeclarativeVisualModel @ 3088 NONAME
- _ZTI24QDeclarativeCustomParser @ 3089 NONAME
- _ZTI24QDeclarativeDebugService @ 3090 NONAME
- _ZTI24QDeclarativeGradientStop @ 3091 NONAME
- _ZTI24QDeclarativeParentChange @ 3092 NONAME
- _ZTI24QDeclarativeParserStatus @ 3093 NONAME
- _ZTI24QDeclarativeSpringFollow @ 3094 NONAME
- _ZTI24QDeclarativeXmlListModel @ 3095 NONAME
- _ZTI25QDeclarativeAnchorChanges @ 3096 NONAME
- _ZTI25QDeclarativeAnimatedImage @ 3097 NONAME
- _ZTI25QDeclarativeImageProvider @ 3098 NONAME
- _ZTI25QDeclarativePathAttribute @ 3099 NONAME
- _ZTI25QDeclarativeSystemPalette @ 3100 NONAME
- _ZTI26QDeclarativeBasePositioner @ 3101 NONAME
- _ZTI26QDeclarativeContextPrivate @ 3102 NONAME
- _ZTI26QDeclarativeDebuggerStatus @ 3103 NONAME
- _ZTI26QDeclarativeOpenMetaObject @ 3104 NONAME
- _ZTI26QDeclarativeParticleMotion @ 3105 NONAME
- _ZTI26QDeclarativeStateOperation @ 3106 NONAME
- _ZTI27QDeclarativeDebugConnection @ 3107 NONAME
- _ZTI27QDeclarativeExtensionPlugin @ 3108 NONAME
- _ZTI27QDeclarativeNumberFormatter @ 3109 NONAME
- _ZTI27QDeclarativePropertyChanges @ 3110 NONAME
- _ZTI27QDeclarativeVisualDataModel @ 3111 NONAME
- _ZTI27QDeclarativeVisualItemModel @ 3112 NONAME
- _ZTI28QDeclarativeDebugObjectQuery @ 3113 NONAME
- _ZTI28QDeclarativeXmlListModelRole @ 3114 NONAME
- _ZTI29QDeclarativeDateTimeFormatter @ 3115 NONAME
- _ZTI29QDeclarativeDebugEnginesQuery @ 3116 NONAME
- _ZTI29QDeclarativeStateChangeScript @ 3117 NONAME
- _ZTI30QDeclarativeDebugPropertyWatch @ 3118 NONAME
- _ZTI30QDeclarativeExtensionInterface @ 3119 NONAME
- _ZTI30QDeclarativeOpenMetaObjectType @ 3120 NONAME
- _ZTI31QDeclarativePropertyValueSource @ 3121 NONAME
- _ZTI32QDeclarativeDebugExpressionQuery @ 3122 NONAME
- _ZTI32QDeclarativeParticleMotionLinear @ 3123 NONAME
- _ZTI32QDeclarativeParticleMotionWander @ 3124 NONAME
- _ZTI33QDeclarativeDebugRootContextQuery @ 3125 NONAME
- _ZTI33QDeclarativeParticleMotionGravity @ 3126 NONAME
- _ZTI35QDeclarativeGraphicsObjectContainer @ 3127 NONAME
- _ZTI36QDeclarativePropertyValueInterceptor @ 3128 NONAME
- _ZTI38QDeclarativeDebugObjectExpressionWatch @ 3129 NONAME
- _ZTI39QDeclarativeNetworkAccessManagerFactory @ 3130 NONAME
- _ZTI7QPacket @ 3131 NONAME
- _ZTV15QDeclarativePen @ 3132 NONAME
- _ZTV15QDeclarativeRow @ 3133 NONAME
- _ZTV15QPacketAutoSend @ 3134 NONAME
- _ZTV15QPacketProtocol @ 3135 NONAME
- _ZTV16QDeclarativeBind @ 3136 NONAME
- _ZTV16QDeclarativeDrag @ 3137 NONAME
- _ZTV16QDeclarativeFlow @ 3138 NONAME
- _ZTV16QDeclarativeGrid @ 3139 NONAME
- _ZTV16QDeclarativeItem @ 3140 NONAME
- _ZTV16QDeclarativePath @ 3141 NONAME
- _ZTV16QDeclarativeText @ 3142 NONAME
- _ZTV16QDeclarativeView @ 3143 NONAME
- _ZTV17QDeclarativeCurve @ 3144 NONAME
- _ZTV17QDeclarativeImage @ 3145 NONAME
- _ZTV17QDeclarativeState @ 3146 NONAME
- _ZTV17QDeclarativeTimer @ 3147 NONAME
- _ZTV18QDeclarativeColumn @ 3148 NONAME
- _ZTV18QDeclarativeEngine @ 3149 NONAME
- _ZTV18QDeclarativeLoader @ 3150 NONAME
- _ZTV18QMetaObjectBuilder @ 3151 NONAME
- _ZTV19QDeclarativeAnchors @ 3152 NONAME
- _ZTV19QDeclarativeContext @ 3153 NONAME
- _ZTV19QDeclarativeWebPage @ 3154 NONAME
- _ZTV19QDeclarativeWebView @ 3155 NONAME
- _ZTV19QListModelInterface @ 3156 NONAME
- _ZTV20QDeclarativeBehavior @ 3157 NONAME
- _ZTV20QDeclarativeFlipable @ 3158 NONAME
- _ZTV20QDeclarativeGradient @ 3159 NONAME
- _ZTV20QDeclarativeGridView @ 3160 NONAME
- _ZTV20QDeclarativeListView @ 3161 NONAME
- _ZTV20QDeclarativePathLine @ 3162 NONAME
- _ZTV20QDeclarativePathQuad @ 3163 NONAME
- _ZTV20QDeclarativePathView @ 3164 NONAME
- _ZTV20QDeclarativeRepeater @ 3165 NONAME
- _ZTV20QDeclarativeTextEdit @ 3166 NONAME
- _ZTV21QDeclarativeComponent @ 3167 NONAME
- _ZTV21QDeclarativeFlickable @ 3168 NONAME
- _ZTV21QDeclarativeImageBase @ 3169 NONAME
- _ZTV21QDeclarativeListModel @ 3170 NONAME
- _ZTV21QDeclarativeMouseArea @ 3171 NONAME
- _ZTV21QDeclarativeParticles @ 3172 NONAME
- _ZTV21QDeclarativePathCubic @ 3173 NONAME
- _ZTV21QDeclarativeRectangle @ 3174 NONAME
- _ZTV21QDeclarativeScaleGrid @ 3175 NONAME
- _ZTV21QDeclarativeTextInput @ 3176 NONAME
- _ZTV21QDeclarativeValueType @ 3177 NONAME
- _ZTV22QDeclarativeDebugQuery @ 3178 NONAME
- _ZTV22QDeclarativeDebugWatch @ 3179 NONAME
- _ZTV22QDeclarativeEaseFollow @ 3180 NONAME
- _ZTV22QDeclarativeExpression @ 3181 NONAME
- _ZTV22QDeclarativeFocusPanel @ 3182 NONAME
- _ZTV22QDeclarativeFocusScope @ 3183 NONAME
- _ZTV22QDeclarativeFontLoader @ 3184 NONAME
- _ZTV22QDeclarativeStateGroup @ 3185 NONAME
- _ZTV22QDeclarativeTransition @ 3186 NONAME
- _ZTV23QDeclarativeBorderImage @ 3187 NONAME
- _ZTV23QDeclarativeConnections @ 3188 NONAME
- _ZTV23QDeclarativeDebugClient @ 3189 NONAME
- _ZTV23QDeclarativeEngineDebug @ 3190 NONAME
- _ZTV23QDeclarativePaintedItem @ 3191 NONAME
- _ZTV23QDeclarativePathElement @ 3192 NONAME
- _ZTV23QDeclarativePathPercent @ 3193 NONAME
- _ZTV23QDeclarativePixmapReply @ 3194 NONAME
- _ZTV23QDeclarativePropertyMap @ 3195 NONAME
- _ZTV23QDeclarativeViewSection @ 3196 NONAME
- _ZTV23QDeclarativeVisualModel @ 3197 NONAME
- _ZTV24QDeclarativeCustomParser @ 3198 NONAME
- _ZTV24QDeclarativeDebugService @ 3199 NONAME
- _ZTV24QDeclarativeGradientStop @ 3200 NONAME
- _ZTV24QDeclarativeParentChange @ 3201 NONAME
- _ZTV24QDeclarativeParserStatus @ 3202 NONAME
- _ZTV24QDeclarativeSpringFollow @ 3203 NONAME
- _ZTV24QDeclarativeXmlListModel @ 3204 NONAME
- _ZTV25QDeclarativeAnchorChanges @ 3205 NONAME
- _ZTV25QDeclarativeAnimatedImage @ 3206 NONAME
- _ZTV25QDeclarativeImageProvider @ 3207 NONAME
- _ZTV25QDeclarativePathAttribute @ 3208 NONAME
- _ZTV25QDeclarativeSystemPalette @ 3209 NONAME
- _ZTV26QDeclarativeBasePositioner @ 3210 NONAME
- _ZTV26QDeclarativeContextPrivate @ 3211 NONAME
- _ZTV26QDeclarativeDebuggerStatus @ 3212 NONAME
- _ZTV26QDeclarativeOpenMetaObject @ 3213 NONAME
- _ZTV26QDeclarativeParticleMotion @ 3214 NONAME
- _ZTV26QDeclarativeStateOperation @ 3215 NONAME
- _ZTV27QDeclarativeDebugConnection @ 3216 NONAME
- _ZTV27QDeclarativeExtensionPlugin @ 3217 NONAME
- _ZTV27QDeclarativeNumberFormatter @ 3218 NONAME
- _ZTV27QDeclarativePropertyChanges @ 3219 NONAME
- _ZTV27QDeclarativeVisualDataModel @ 3220 NONAME
- _ZTV27QDeclarativeVisualItemModel @ 3221 NONAME
- _ZTV28QDeclarativeDebugObjectQuery @ 3222 NONAME
- _ZTV28QDeclarativeXmlListModelRole @ 3223 NONAME
- _ZTV29QDeclarativeDateTimeFormatter @ 3224 NONAME
- _ZTV29QDeclarativeDebugEnginesQuery @ 3225 NONAME
- _ZTV29QDeclarativeStateChangeScript @ 3226 NONAME
- _ZTV30QDeclarativeDebugPropertyWatch @ 3227 NONAME
- _ZTV30QDeclarativeOpenMetaObjectType @ 3228 NONAME
- _ZTV31QDeclarativePropertyValueSource @ 3229 NONAME
- _ZTV32QDeclarativeDebugExpressionQuery @ 3230 NONAME
- _ZTV32QDeclarativeParticleMotionLinear @ 3231 NONAME
- _ZTV32QDeclarativeParticleMotionWander @ 3232 NONAME
- _ZTV33QDeclarativeDebugRootContextQuery @ 3233 NONAME
- _ZTV33QDeclarativeParticleMotionGravity @ 3234 NONAME
- _ZTV35QDeclarativeGraphicsObjectContainer @ 3235 NONAME
- _ZTV36QDeclarativePropertyValueInterceptor @ 3236 NONAME
- _ZTV38QDeclarativeDebugObjectExpressionWatch @ 3237 NONAME
- _ZTV39QDeclarativeNetworkAccessManagerFactory @ 3238 NONAME
- _ZTV7QPacket @ 3239 NONAME
- _ZThn16_N16QDeclarativeItem10classBeginEv @ 3240 NONAME
- _ZThn16_N16QDeclarativeItem17componentCompleteEv @ 3241 NONAME
- _ZThn16_N16QDeclarativeItemD0Ev @ 3242 NONAME
- _ZThn16_N16QDeclarativeItemD1Ev @ 3243 NONAME
- _ZThn16_N16QDeclarativeText17componentCompleteEv @ 3244 NONAME
- _ZThn16_N16QDeclarativeTextD0Ev @ 3245 NONAME
- _ZThn16_N16QDeclarativeTextD1Ev @ 3246 NONAME
- _ZThn16_N17QDeclarativeImageD0Ev @ 3247 NONAME
- _ZThn16_N17QDeclarativeImageD1Ev @ 3248 NONAME
- _ZThn16_N18QDeclarativeLoaderD0Ev @ 3249 NONAME
- _ZThn16_N18QDeclarativeLoaderD1Ev @ 3250 NONAME
- _ZThn16_N19QDeclarativeWebView17componentCompleteEv @ 3251 NONAME
- _ZThn16_N19QDeclarativeWebViewD0Ev @ 3252 NONAME
- _ZThn16_N19QDeclarativeWebViewD1Ev @ 3253 NONAME
- _ZThn16_N20QDeclarativeFlipableD0Ev @ 3254 NONAME
- _ZThn16_N20QDeclarativeFlipableD1Ev @ 3255 NONAME
- _ZThn16_N20QDeclarativeGridView17componentCompleteEv @ 3256 NONAME
- _ZThn16_N20QDeclarativeGridViewD0Ev @ 3257 NONAME
- _ZThn16_N20QDeclarativeGridViewD1Ev @ 3258 NONAME
- _ZThn16_N20QDeclarativeListView17componentCompleteEv @ 3259 NONAME
- _ZThn16_N20QDeclarativeListViewD0Ev @ 3260 NONAME
- _ZThn16_N20QDeclarativeListViewD1Ev @ 3261 NONAME
- _ZThn16_N20QDeclarativePathView17componentCompleteEv @ 3262 NONAME
- _ZThn16_N20QDeclarativePathViewD0Ev @ 3263 NONAME
- _ZThn16_N20QDeclarativePathViewD1Ev @ 3264 NONAME
- _ZThn16_N20QDeclarativeRepeater17componentCompleteEv @ 3265 NONAME
- _ZThn16_N20QDeclarativeRepeaterD0Ev @ 3266 NONAME
- _ZThn16_N20QDeclarativeRepeaterD1Ev @ 3267 NONAME
- _ZThn16_N20QDeclarativeTextEdit17componentCompleteEv @ 3268 NONAME
- _ZThn16_N21QDeclarativeFlickableD0Ev @ 3269 NONAME
- _ZThn16_N21QDeclarativeFlickableD1Ev @ 3270 NONAME
- _ZThn16_N21QDeclarativeImageBase17componentCompleteEv @ 3271 NONAME
- _ZThn16_N21QDeclarativeImageBaseD0Ev @ 3272 NONAME
- _ZThn16_N21QDeclarativeImageBaseD1Ev @ 3273 NONAME
- _ZThn16_N21QDeclarativeMouseAreaD0Ev @ 3274 NONAME
- _ZThn16_N21QDeclarativeMouseAreaD1Ev @ 3275 NONAME
- _ZThn16_N21QDeclarativeParticles17componentCompleteEv @ 3276 NONAME
- _ZThn16_N21QDeclarativeParticlesD0Ev @ 3277 NONAME
- _ZThn16_N21QDeclarativeParticlesD1Ev @ 3278 NONAME
- _ZThn16_N21QDeclarativeTextInputD0Ev @ 3279 NONAME
- _ZThn16_N21QDeclarativeTextInputD1Ev @ 3280 NONAME
- _ZThn16_N22QDeclarativeFocusPanelD0Ev @ 3281 NONAME
- _ZThn16_N22QDeclarativeFocusPanelD1Ev @ 3282 NONAME
- _ZThn16_N22QDeclarativeFocusScopeD0Ev @ 3283 NONAME
- _ZThn16_N22QDeclarativeFocusScopeD1Ev @ 3284 NONAME
- _ZThn16_N23QDeclarativeBorderImageD0Ev @ 3285 NONAME
- _ZThn16_N23QDeclarativeBorderImageD1Ev @ 3286 NONAME
- _ZThn16_N23QDeclarativePaintedItemD0Ev @ 3287 NONAME
- _ZThn16_N23QDeclarativePaintedItemD1Ev @ 3288 NONAME
- _ZThn16_N25QDeclarativeAnimatedImage17componentCompleteEv @ 3289 NONAME
- _ZThn16_N25QDeclarativeAnimatedImageD0Ev @ 3290 NONAME
- _ZThn16_N25QDeclarativeAnimatedImageD1Ev @ 3291 NONAME
- _ZThn16_N26QDeclarativeBasePositioner17componentCompleteEv @ 3292 NONAME
- _ZThn16_N26QDeclarativeBasePositionerD0Ev @ 3293 NONAME
- _ZThn16_N26QDeclarativeBasePositionerD1Ev @ 3294 NONAME
- _ZThn16_N35QDeclarativeGraphicsObjectContainerD0Ev @ 3295 NONAME
- _ZThn16_N35QDeclarativeGraphicsObjectContainerD1Ev @ 3296 NONAME
- _ZThn8_N16QDeclarativeBind17componentCompleteEv @ 3297 NONAME
- _ZThn8_N16QDeclarativeBindD0Ev @ 3298 NONAME
- _ZThn8_N16QDeclarativeBindD1Ev @ 3299 NONAME
- _ZThn8_N16QDeclarativeItem10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3300 NONAME
- _ZThn8_N16QDeclarativeItem10sceneEventEP6QEvent @ 3301 NONAME
- _ZThn8_N16QDeclarativeItem13keyPressEventEP9QKeyEvent @ 3302 NONAME
- _ZThn8_N16QDeclarativeItem15keyReleaseEventEP9QKeyEvent @ 3303 NONAME
- _ZThn8_N16QDeclarativeItem16inputMethodEventEP17QInputMethodEvent @ 3304 NONAME
- _ZThn8_N16QDeclarativeItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3305 NONAME
- _ZThn8_N16QDeclarativeItemD0Ev @ 3306 NONAME
- _ZThn8_N16QDeclarativeItemD1Ev @ 3307 NONAME
- _ZThn8_N16QDeclarativePath17componentCompleteEv @ 3308 NONAME
- _ZThn8_N16QDeclarativePathD0Ev @ 3309 NONAME
- _ZThn8_N16QDeclarativePathD1Ev @ 3310 NONAME
- _ZThn8_N16QDeclarativeText15mousePressEventEP24QGraphicsSceneMouseEvent @ 3311 NONAME
- _ZThn8_N16QDeclarativeText17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3312 NONAME
- _ZThn8_N16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3313 NONAME
- _ZThn8_N16QDeclarativeTextD0Ev @ 3314 NONAME
- _ZThn8_N16QDeclarativeTextD1Ev @ 3315 NONAME
- _ZThn8_N16QDeclarativeViewD0Ev @ 3316 NONAME
- _ZThn8_N16QDeclarativeViewD1Ev @ 3317 NONAME
- _ZThn8_N17QDeclarativeImage5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3318 NONAME
- _ZThn8_N17QDeclarativeImageD0Ev @ 3319 NONAME
- _ZThn8_N17QDeclarativeImageD1Ev @ 3320 NONAME
- _ZThn8_N17QDeclarativeTimer10classBeginEv @ 3321 NONAME
- _ZThn8_N17QDeclarativeTimer17componentCompleteEv @ 3322 NONAME
- _ZThn8_N18QDeclarativeLoader10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3323 NONAME
- _ZThn8_N18QDeclarativeLoaderD0Ev @ 3324 NONAME
- _ZThn8_N18QDeclarativeLoaderD1Ev @ 3325 NONAME
- _ZThn8_N19QDeclarativeWebView10sceneEventEP6QEvent @ 3326 NONAME
- _ZThn8_N19QDeclarativeWebView13keyPressEventEP9QKeyEvent @ 3327 NONAME
- _ZThn8_N19QDeclarativeWebView14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 3328 NONAME
- _ZThn8_N19QDeclarativeWebView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3329 NONAME
- _ZThn8_N19QDeclarativeWebView15keyReleaseEventEP9QKeyEvent @ 3330 NONAME
- _ZThn8_N19QDeclarativeWebView15mousePressEventEP24QGraphicsSceneMouseEvent @ 3331 NONAME
- _ZThn8_N19QDeclarativeWebView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3332 NONAME
- _ZThn8_N19QDeclarativeWebView21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 3333 NONAME
- _ZThn8_N19QDeclarativeWebViewD0Ev @ 3334 NONAME
- _ZThn8_N19QDeclarativeWebViewD1Ev @ 3335 NONAME
- _ZThn8_N20QDeclarativeBehavior5writeERK8QVariant @ 3336 NONAME
- _ZThn8_N20QDeclarativeBehavior9setTargetERK20QDeclarativeProperty @ 3337 NONAME
- _ZThn8_N20QDeclarativeBehaviorD0Ev @ 3338 NONAME
- _ZThn8_N20QDeclarativeBehaviorD1Ev @ 3339 NONAME
- _ZThn8_N20QDeclarativeFlipableD0Ev @ 3340 NONAME
- _ZThn8_N20QDeclarativeFlipableD1Ev @ 3341 NONAME
- _ZThn8_N20QDeclarativeGridView13keyPressEventEP9QKeyEvent @ 3342 NONAME
- _ZThn8_N20QDeclarativeGridViewD0Ev @ 3343 NONAME
- _ZThn8_N20QDeclarativeGridViewD1Ev @ 3344 NONAME
- _ZThn8_N20QDeclarativeListView13keyPressEventEP9QKeyEvent @ 3345 NONAME
- _ZThn8_N20QDeclarativeListViewD0Ev @ 3346 NONAME
- _ZThn8_N20QDeclarativeListViewD1Ev @ 3347 NONAME
- _ZThn8_N20QDeclarativePathView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3348 NONAME
- _ZThn8_N20QDeclarativePathView15mousePressEventEP24QGraphicsSceneMouseEvent @ 3349 NONAME
- _ZThn8_N20QDeclarativePathView16sceneEventFilterEP13QGraphicsItemP6QEvent @ 3350 NONAME
- _ZThn8_N20QDeclarativePathView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3351 NONAME
- _ZThn8_N20QDeclarativePathViewD0Ev @ 3352 NONAME
- _ZThn8_N20QDeclarativePathViewD1Ev @ 3353 NONAME
- _ZThn8_N20QDeclarativeRepeater10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3354 NONAME
- _ZThn8_N20QDeclarativeRepeaterD0Ev @ 3355 NONAME
- _ZThn8_N20QDeclarativeRepeaterD1Ev @ 3356 NONAME
- _ZThn8_N20QDeclarativeTextEdit13keyPressEventEP9QKeyEvent @ 3357 NONAME
- _ZThn8_N20QDeclarativeTextEdit14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3358 NONAME
- _ZThn8_N20QDeclarativeTextEdit15keyReleaseEventEP9QKeyEvent @ 3359 NONAME
- _ZThn8_N20QDeclarativeTextEdit15mousePressEventEP24QGraphicsSceneMouseEvent @ 3360 NONAME
- _ZThn8_N20QDeclarativeTextEdit16inputMethodEventEP17QInputMethodEvent @ 3361 NONAME
- _ZThn8_N20QDeclarativeTextEdit17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3362 NONAME
- _ZThn8_N20QDeclarativeTextEdit21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 3363 NONAME
- _ZThn8_N21QDeclarativeFlickable10wheelEventEP24QGraphicsSceneWheelEvent @ 3364 NONAME
- _ZThn8_N21QDeclarativeFlickable14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3365 NONAME
- _ZThn8_N21QDeclarativeFlickable15mousePressEventEP24QGraphicsSceneMouseEvent @ 3366 NONAME
- _ZThn8_N21QDeclarativeFlickable16sceneEventFilterEP13QGraphicsItemP6QEvent @ 3367 NONAME
- _ZThn8_N21QDeclarativeFlickable17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3368 NONAME
- _ZThn8_N21QDeclarativeFlickableD0Ev @ 3369 NONAME
- _ZThn8_N21QDeclarativeFlickableD1Ev @ 3370 NONAME
- _ZThn8_N21QDeclarativeImageBaseD0Ev @ 3371 NONAME
- _ZThn8_N21QDeclarativeImageBaseD1Ev @ 3372 NONAME
- _ZThn8_N21QDeclarativeMouseArea10sceneEventEP6QEvent @ 3373 NONAME
- _ZThn8_N21QDeclarativeMouseArea14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 3374 NONAME
- _ZThn8_N21QDeclarativeMouseArea14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3375 NONAME
- _ZThn8_N21QDeclarativeMouseArea15hoverEnterEventEP24QGraphicsSceneHoverEvent @ 3376 NONAME
- _ZThn8_N21QDeclarativeMouseArea15hoverLeaveEventEP24QGraphicsSceneHoverEvent @ 3377 NONAME
- _ZThn8_N21QDeclarativeMouseArea15mousePressEventEP24QGraphicsSceneMouseEvent @ 3378 NONAME
- _ZThn8_N21QDeclarativeMouseArea17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3379 NONAME
- _ZThn8_N21QDeclarativeMouseArea21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 3380 NONAME
- _ZThn8_N21QDeclarativeMouseAreaD0Ev @ 3381 NONAME
- _ZThn8_N21QDeclarativeMouseAreaD1Ev @ 3382 NONAME
- _ZThn8_N21QDeclarativeParticles5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3383 NONAME
- _ZThn8_N21QDeclarativeParticlesD0Ev @ 3384 NONAME
- _ZThn8_N21QDeclarativeParticlesD1Ev @ 3385 NONAME
- _ZThn8_N21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3386 NONAME
- _ZThn8_N21QDeclarativeTextInput13keyPressEventEP9QKeyEvent @ 3387 NONAME
- _ZThn8_N21QDeclarativeTextInput15mousePressEventEP24QGraphicsSceneMouseEvent @ 3388 NONAME
- _ZThn8_N21QDeclarativeTextInput17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3389 NONAME
- _ZThn8_N21QDeclarativeTextInputD0Ev @ 3390 NONAME
- _ZThn8_N21QDeclarativeTextInputD1Ev @ 3391 NONAME
- _ZThn8_N22QDeclarativeEaseFollow9setTargetERK20QDeclarativeProperty @ 3392 NONAME
- _ZThn8_N22QDeclarativeEaseFollowD0Ev @ 3393 NONAME
- _ZThn8_N22QDeclarativeEaseFollowD1Ev @ 3394 NONAME
- _ZThn8_N22QDeclarativeFocusPanel10sceneEventEP6QEvent @ 3395 NONAME
- _ZThn8_N22QDeclarativeFocusPanelD0Ev @ 3396 NONAME
- _ZThn8_N22QDeclarativeFocusPanelD1Ev @ 3397 NONAME
- _ZThn8_N22QDeclarativeFocusScopeD0Ev @ 3398 NONAME
- _ZThn8_N22QDeclarativeFocusScopeD1Ev @ 3399 NONAME
- _ZThn8_N22QDeclarativeStateGroup10classBeginEv @ 3400 NONAME
- _ZThn8_N22QDeclarativeStateGroup17componentCompleteEv @ 3401 NONAME
- _ZThn8_N22QDeclarativeStateGroupD0Ev @ 3402 NONAME
- _ZThn8_N22QDeclarativeStateGroupD1Ev @ 3403 NONAME
- _ZThn8_N23QDeclarativeBorderImage5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3404 NONAME
- _ZThn8_N23QDeclarativeBorderImageD0Ev @ 3405 NONAME
- _ZThn8_N23QDeclarativeBorderImageD1Ev @ 3406 NONAME
- _ZThn8_N23QDeclarativeConnections17componentCompleteEv @ 3407 NONAME
- _ZThn8_N23QDeclarativeConnectionsD0Ev @ 3408 NONAME
- _ZThn8_N23QDeclarativeConnectionsD1Ev @ 3409 NONAME
- _ZThn8_N23QDeclarativePaintedItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3410 NONAME
- _ZThn8_N23QDeclarativePaintedItemD0Ev @ 3411 NONAME
- _ZThn8_N23QDeclarativePaintedItemD1Ev @ 3412 NONAME
- _ZThn8_N24QDeclarativeParentChange12isReversableEv @ 3413 NONAME
- _ZThn8_N24QDeclarativeParentChange13saveOriginalsEv @ 3414 NONAME
- _ZThn8_N24QDeclarativeParentChange17saveCurrentValuesEv @ 3415 NONAME
- _ZThn8_N24QDeclarativeParentChange6rewindEv @ 3416 NONAME
- _ZThn8_N24QDeclarativeParentChange7executeEv @ 3417 NONAME
- _ZThn8_N24QDeclarativeParentChange7reverseEv @ 3418 NONAME
- _ZThn8_N24QDeclarativeParentChange8overrideEP23QDeclarativeActionEvent @ 3419 NONAME
- _ZThn8_N24QDeclarativeParentChangeD0Ev @ 3420 NONAME
- _ZThn8_N24QDeclarativeParentChangeD1Ev @ 3421 NONAME
- _ZThn8_N24QDeclarativeSpringFollow9setTargetERK20QDeclarativeProperty @ 3422 NONAME
- _ZThn8_N24QDeclarativeSpringFollowD0Ev @ 3423 NONAME
- _ZThn8_N24QDeclarativeSpringFollowD1Ev @ 3424 NONAME
- _ZThn8_N24QDeclarativeXmlListModel10classBeginEv @ 3425 NONAME
- _ZThn8_N24QDeclarativeXmlListModel17componentCompleteEv @ 3426 NONAME
- _ZThn8_N24QDeclarativeXmlListModelD0Ev @ 3427 NONAME
- _ZThn8_N24QDeclarativeXmlListModelD1Ev @ 3428 NONAME
- _ZThn8_N25QDeclarativeAnchorChanges12extraActionsEv @ 3429 NONAME
- _ZThn8_N25QDeclarativeAnchorChanges12isReversableEv @ 3430 NONAME
- _ZThn8_N25QDeclarativeAnchorChanges13saveOriginalsEv @ 3431 NONAME
- _ZThn8_N25QDeclarativeAnchorChanges15changesBindingsEv @ 3432 NONAME
- _ZThn8_N25QDeclarativeAnchorChanges17saveCurrentValuesEv @ 3433 NONAME
- _ZThn8_N25QDeclarativeAnchorChanges20clearForwardBindingsEv @ 3434 NONAME
- _ZThn8_N25QDeclarativeAnchorChanges20clearReverseBindingsEv @ 3435 NONAME
- _ZThn8_N25QDeclarativeAnchorChanges6rewindEv @ 3436 NONAME
- _ZThn8_N25QDeclarativeAnchorChanges7executeEv @ 3437 NONAME
- _ZThn8_N25QDeclarativeAnchorChanges7reverseEv @ 3438 NONAME
- _ZThn8_N25QDeclarativeAnchorChanges8overrideEP23QDeclarativeActionEvent @ 3439 NONAME
- _ZThn8_N25QDeclarativeAnchorChangesD0Ev @ 3440 NONAME
- _ZThn8_N25QDeclarativeAnchorChangesD1Ev @ 3441 NONAME
- _ZThn8_N25QDeclarativeAnimatedImageD0Ev @ 3442 NONAME
- _ZThn8_N25QDeclarativeAnimatedImageD1Ev @ 3443 NONAME
- _ZThn8_N26QDeclarativeBasePositioner10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3444 NONAME
- _ZThn8_N26QDeclarativeBasePositionerD0Ev @ 3445 NONAME
- _ZThn8_N26QDeclarativeBasePositionerD1Ev @ 3446 NONAME
- _ZThn8_N27QDeclarativeExtensionPlugin16initializeEngineEP18QDeclarativeEnginePKc @ 3447 NONAME
- _ZThn8_N27QDeclarativeExtensionPluginD0Ev @ 3448 NONAME
- _ZThn8_N27QDeclarativeExtensionPluginD1Ev @ 3449 NONAME
- _ZThn8_N27QDeclarativeNumberFormatter10classBeginEv @ 3450 NONAME
- _ZThn8_N27QDeclarativeNumberFormatter17componentCompleteEv @ 3451 NONAME
- _ZThn8_N27QDeclarativeNumberFormatterD0Ev @ 3452 NONAME
- _ZThn8_N27QDeclarativeNumberFormatterD1Ev @ 3453 NONAME
- _ZThn8_N29QDeclarativeDateTimeFormatter10classBeginEv @ 3454 NONAME
- _ZThn8_N29QDeclarativeDateTimeFormatter17componentCompleteEv @ 3455 NONAME
- _ZThn8_N29QDeclarativeDateTimeFormatterD0Ev @ 3456 NONAME
- _ZThn8_N29QDeclarativeDateTimeFormatterD1Ev @ 3457 NONAME
- _ZThn8_N29QDeclarativeStateChangeScript7executeEv @ 3458 NONAME
- _ZThn8_N29QDeclarativeStateChangeScriptD0Ev @ 3459 NONAME
- _ZThn8_N29QDeclarativeStateChangeScriptD1Ev @ 3460 NONAME
- _ZThn8_N35QDeclarativeGraphicsObjectContainer10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3461 NONAME
- _ZThn8_N35QDeclarativeGraphicsObjectContainerD0Ev @ 3462 NONAME
- _ZThn8_N35QDeclarativeGraphicsObjectContainerD1Ev @ 3463 NONAME
- _ZThn8_NK16QDeclarativeItem12boundingRectEv @ 3464 NONAME
- _ZThn8_NK16QDeclarativeItem16inputMethodQueryEN2Qt16InputMethodQueryE @ 3465 NONAME
- _ZThn8_NK20QDeclarativeTextEdit16inputMethodQueryEN2Qt16InputMethodQueryE @ 3466 NONAME
- _ZThn8_NK21QDeclarativeRectangle12boundingRectEv @ 3467 NONAME
- _ZThn8_NK21QDeclarativeTextInput16inputMethodQueryEN2Qt16InputMethodQueryE @ 3468 NONAME
- _ZThn8_NK24QDeclarativeParentChange8typeNameEv @ 3469 NONAME
- _ZThn8_NK25QDeclarativeAnchorChanges8typeNameEv @ 3470 NONAME
- _ZThn8_NK29QDeclarativeStateChangeScript8typeNameEv @ 3471 NONAME
- _Zls6QDebugP16QDeclarativeItem @ 3472 NONAME
- _Zls6QDebugRK17QDeclarativeError @ 3473 NONAME
- _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 3474 NONAME
- _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 3475 NONAME
- _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 3476 NONAME
- _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 3477 NONAME
- _ZN19QDeclarativeBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 3478 NONAME
- _ZN19QDeclarativeBinding11qt_metacallEN11QMetaObject4CallEiPPv @ 3479 NONAME
- _ZN19QDeclarativeBinding11qt_metacastEPKc @ 3480 NONAME
- _ZN19QDeclarativeBinding13propertyIndexEv @ 3481 NONAME
- _ZN19QDeclarativeBinding16staticMetaObjectE @ 3482 NONAME DATA 16
- _ZN19QDeclarativeBinding19getStaticMetaObjectEv @ 3483 NONAME
- _ZN19QDeclarativeBinding6updateE6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 3484 NONAME
- _ZN19QDeclarativeBinding9setTargetERK20QDeclarativeProperty @ 3485 NONAME
- _ZN19QDeclarativeBindingC1EPvP20QDeclarativeRefCountP7QObjectP19QDeclarativeContextRK7QStringiS4_ @ 3486 NONAME
- _ZN19QDeclarativeBindingC1ERK7QStringP7QObjectP19QDeclarativeContextS4_ @ 3487 NONAME
- _ZN19QDeclarativeBindingC2EPvP20QDeclarativeRefCountP7QObjectP19QDeclarativeContextRK7QStringiS4_ @ 3488 NONAME
- _ZN19QDeclarativeBindingC2ERK7QStringP7QObjectP19QDeclarativeContextS4_ @ 3489 NONAME
- _ZN19QDeclarativeBindingD0Ev @ 3490 NONAME
- _ZN19QDeclarativeBindingD1Ev @ 3491 NONAME
- _ZN19QDeclarativeBindingD2Ev @ 3492 NONAME
- _ZN27QDeclarativeAbstractBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 3493 NONAME
- _ZN27QDeclarativeAbstractBinding11addToObjectEP7QObject @ 3494 NONAME
- _ZN27QDeclarativeAbstractBinding16removeFromObjectEv @ 3495 NONAME
- _ZN27QDeclarativeAbstractBinding5clearEv @ 3496 NONAME
- _ZN27QDeclarativeAbstractBinding7destroyEv @ 3497 NONAME
- _ZN27QDeclarativeAbstractBindingC2Ev @ 3498 NONAME
- _ZN27QDeclarativeAbstractBindingD0Ev @ 3499 NONAME
- _ZN27QDeclarativeAbstractBindingD1Ev @ 3500 NONAME
- _ZN27QDeclarativeAbstractBindingD2Ev @ 3501 NONAME
- _ZN27QDeclarativePropertyPrivate10canConvertEPK11QMetaObjectS2_ @ 3502 NONAME
- _ZN27QDeclarativePropertyPrivate10setBindingEP7QObjectRKN25QDeclarativePropertyCache4DataEP27QDeclarativeAbstractBinding6QFlagsINS_9WriteFlagEE @ 3503 NONAME
- _ZN27QDeclarativePropertyPrivate10setBindingERK20QDeclarativePropertyP27QDeclarativeAbstractBinding6QFlagsINS_9WriteFlagEE @ 3504 NONAME
- _ZN27QDeclarativePropertyPrivate11initDefaultEP7QObject @ 3505 NONAME
- _ZN27QDeclarativePropertyPrivate12initPropertyEP7QObjectRK7QString @ 3506 NONAME
- _ZN27QDeclarativePropertyPrivate12savePropertyEPK11QMetaObjecti @ 3507 NONAME
- _ZN27QDeclarativePropertyPrivate13saveValueTypeEPK11QMetaObjectiS2_i @ 3508 NONAME
- _ZN27QDeclarativePropertyPrivate16signalExpressionERK20QDeclarativeProperty @ 3509 NONAME
- _ZN27QDeclarativePropertyPrivate17readValuePropertyEv @ 3510 NONAME
- _ZN27QDeclarativePropertyPrivate17writeEnumPropertyERK13QMetaPropertyiP7QObjectRK8QVarianti @ 3511 NONAME
- _ZN27QDeclarativePropertyPrivate18valueTypeCoreIndexERK20QDeclarativeProperty @ 3512 NONAME
- _ZN27QDeclarativePropertyPrivate18writeValuePropertyERK8QVariant6QFlagsINS_9WriteFlagEE @ 3513 NONAME
- _ZN27QDeclarativePropertyPrivate19setSignalExpressionERK20QDeclarativePropertyP22QDeclarativeExpression @ 3514 NONAME
- _ZN27QDeclarativePropertyPrivate20rawMetaObjectForTypeEP25QDeclarativeEnginePrivatei @ 3515 NONAME
- _ZN27QDeclarativePropertyPrivate5equalEPK11QMetaObjectS2_ @ 3516 NONAME
- _ZN27QDeclarativePropertyPrivate5writeEP7QObjectRKN25QDeclarativePropertyCache4DataERK8QVariantP19QDeclarativeContext6QFlagsINS_9WriteFlagEE @ 3517 NONAME
- _ZN27QDeclarativePropertyPrivate5writeERK20QDeclarativePropertyRK8QVariant6QFlagsINS_9WriteFlagEE @ 3518 NONAME
- _ZN27QDeclarativePropertyPrivate7bindingERK20QDeclarativeProperty @ 3519 NONAME
- _ZN27QDeclarativePropertyPrivate7restoreERK10QByteArrayP7QObjectP19QDeclarativeContext @ 3520 NONAME
- _ZNK19QDeclarativeBinding10expressionEv @ 3521 NONAME
- _ZNK19QDeclarativeBinding10metaObjectEv @ 3522 NONAME
- _ZNK19QDeclarativeBinding7enabledEv @ 3523 NONAME
- _ZNK19QDeclarativeBinding8propertyEv @ 3524 NONAME
- _ZNK27QDeclarativeAbstractBinding10expressionEv @ 3525 NONAME
- _ZNK27QDeclarativePropertyPrivate11isValueTypeEv @ 3526 NONAME
- _ZNK27QDeclarativePropertyPrivate12propertyTypeEv @ 3527 NONAME
- _ZNK27QDeclarativePropertyPrivate20propertyTypeCategoryEv @ 3528 NONAME
- _ZTI19QDeclarativeBinding @ 3529 NONAME
- _ZTI27QDeclarativeAbstractBinding @ 3530 NONAME
- _ZTV19QDeclarativeBinding @ 3531 NONAME
- _ZTV27QDeclarativeAbstractBinding @ 3532 NONAME
- _ZThn8_N19QDeclarativeBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 3533 NONAME
- _ZThn8_N19QDeclarativeBinding13propertyIndexEv @ 3534 NONAME
- _ZThn8_N19QDeclarativeBinding6updateE6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 3535 NONAME
- _ZThn8_N19QDeclarativeBindingD0Ev @ 3536 NONAME
- _ZThn8_N19QDeclarativeBindingD1Ev @ 3537 NONAME
- _ZThn8_NK19QDeclarativeBinding10expressionEv @ 3538 NONAME
+ _ZN17QDeclarativeTimer15intervalChangedEv @ 307 NONAME
+ _ZN17QDeclarativeTimer16staticMetaObjectE @ 308 NONAME DATA 16
+ _ZN17QDeclarativeTimer17componentCompleteEv @ 309 NONAME
+ _ZN17QDeclarativeTimer19getStaticMetaObjectEv @ 310 NONAME
+ _ZN17QDeclarativeTimer19setTriggeredOnStartEb @ 311 NONAME
+ _ZN17QDeclarativeTimer23triggeredOnStartChangedEv @ 312 NONAME
+ _ZN17QDeclarativeTimer4stopEv @ 313 NONAME
+ _ZN17QDeclarativeTimer5startEv @ 314 NONAME
+ _ZN17QDeclarativeTimer6tickedEv @ 315 NONAME
+ _ZN17QDeclarativeTimer6updateEv @ 316 NONAME
+ _ZN17QDeclarativeTimer7restartEv @ 317 NONAME
+ _ZN17QDeclarativeTimer8finishedEv @ 318 NONAME
+ _ZN17QDeclarativeTimer9triggeredEv @ 319 NONAME
+ _ZN17QDeclarativeTimerC1EP7QObject @ 320 NONAME
+ _ZN17QDeclarativeTimerC2EP7QObject @ 321 NONAME
+ _ZN18QDeclarativeAction17deleteFromBindingEv @ 322 NONAME
+ _ZN18QDeclarativeActionC1EP7QObjectRK7QStringRK8QVariant @ 323 NONAME
+ _ZN18QDeclarativeActionC1Ev @ 324 NONAME
+ _ZN18QDeclarativeActionC2EP7QObjectRK7QStringRK8QVariant @ 325 NONAME
+ _ZN18QDeclarativeActionC2Ev @ 326 NONAME
+ _ZN18QDeclarativeColumn11qt_metacallEN11QMetaObject4CallEiPPv @ 327 NONAME
+ _ZN18QDeclarativeColumn11qt_metacastEPKc @ 328 NONAME
+ _ZN18QDeclarativeColumn13doPositioningEv @ 329 NONAME
+ _ZN18QDeclarativeColumn16staticMetaObjectE @ 330 NONAME DATA 16
+ _ZN18QDeclarativeColumn19getStaticMetaObjectEv @ 331 NONAME
+ _ZN18QDeclarativeColumnC1EP16QDeclarativeItem @ 332 NONAME
+ _ZN18QDeclarativeColumnC2EP16QDeclarativeItem @ 333 NONAME
+ _ZN18QDeclarativeEngine10setBaseUrlERK4QUrl @ 334 NONAME
+ _ZN18QDeclarativeEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 335 NONAME
+ _ZN18QDeclarativeEngine11qt_metacastEPKc @ 336 NONAME
+ _ZN18QDeclarativeEngine11rootContextEv @ 337 NONAME
+ _ZN18QDeclarativeEngine13addImportPathERK7QString @ 338 NONAME
+ _ZN18QDeclarativeEngine15importExtensionERK7QStringS2_ @ 339 NONAME
+ _ZN18QDeclarativeEngine15objectOwnershipEP7QObject @ 340 NONAME
+ _ZN18QDeclarativeEngine16addImageProviderERK7QStringP25QDeclarativeImageProvider @ 341 NONAME
+ _ZN18QDeclarativeEngine16contextForObjectEPK7QObject @ 342 NONAME
+ _ZN18QDeclarativeEngine16staticMetaObjectE @ 343 NONAME DATA 16
+ _ZN18QDeclarativeEngine17setImportPathListERK11QStringList @ 344 NONAME
+ _ZN18QDeclarativeEngine18setObjectOwnershipEP7QObjectNS_15ObjectOwnershipE @ 345 NONAME
+ _ZN18QDeclarativeEngine19clearComponentCacheEv @ 346 NONAME
+ _ZN18QDeclarativeEngine19getStaticMetaObjectEv @ 347 NONAME
+ _ZN18QDeclarativeEngine19removeImageProviderERK7QString @ 348 NONAME
+ _ZN18QDeclarativeEngine19setContextForObjectEP7QObjectP19QDeclarativeContext @ 349 NONAME
+ _ZN18QDeclarativeEngine21setOfflineStoragePathERK7QString @ 350 NONAME
+ _ZN18QDeclarativeEngine30setNetworkAccessManagerFactoryEP39QDeclarativeNetworkAccessManagerFactory @ 351 NONAME
+ _ZN18QDeclarativeEngine4quitEv @ 352 NONAME
+ _ZN18QDeclarativeEngineC1EP7QObject @ 353 NONAME
+ _ZN18QDeclarativeEngineC2EP7QObject @ 354 NONAME
+ _ZN18QDeclarativeEngineD0Ev @ 355 NONAME
+ _ZN18QDeclarativeEngineD1Ev @ 356 NONAME
+ _ZN18QDeclarativeEngineD2Ev @ 357 NONAME
+ _ZN18QDeclarativeLoader10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 358 NONAME
+ _ZN18QDeclarativeLoader11eventFilterEP7QObjectP6QEvent @ 359 NONAME
+ _ZN18QDeclarativeLoader11itemChangedEv @ 360 NONAME
+ _ZN18QDeclarativeLoader11qt_metacallEN11QMetaObject4CallEiPPv @ 361 NONAME
+ _ZN18QDeclarativeLoader11qt_metacastEPKc @ 362 NONAME
+ _ZN18QDeclarativeLoader13setResizeModeENS_10ResizeModeE @ 363 NONAME
+ _ZN18QDeclarativeLoader13sourceChangedEv @ 364 NONAME
+ _ZN18QDeclarativeLoader13statusChangedEv @ 365 NONAME
+ _ZN18QDeclarativeLoader15geometryChangedERK6QRectFS2_ @ 366 NONAME
+ _ZN18QDeclarativeLoader15progressChangedEv @ 367 NONAME
+ _ZN18QDeclarativeLoader16staticMetaObjectE @ 368 NONAME DATA 16
+ _ZN18QDeclarativeLoader17resizeModeChangedEv @ 369 NONAME
+ _ZN18QDeclarativeLoader18setSourceComponentEP21QDeclarativeComponent @ 370 NONAME
+ _ZN18QDeclarativeLoader19getStaticMetaObjectEv @ 371 NONAME
+ _ZN18QDeclarativeLoader9setSourceERK4QUrl @ 372 NONAME
+ _ZN18QDeclarativeLoaderC1EP16QDeclarativeItem @ 373 NONAME
+ _ZN18QDeclarativeLoaderC2EP16QDeclarativeItem @ 374 NONAME
+ _ZN18QDeclarativeLoaderD0Ev @ 375 NONAME
+ _ZN18QDeclarativeLoaderD1Ev @ 376 NONAME
+ _ZN18QDeclarativeLoaderD2Ev @ 377 NONAME
+ _ZN18QMetaMethodBuilder13setAttributesEi @ 378 NONAME
+ _ZN18QMetaMethodBuilder13setReturnTypeERK10QByteArray @ 379 NONAME
+ _ZN18QMetaMethodBuilder17setParameterNamesERK5QListI10QByteArrayE @ 380 NONAME
+ _ZN18QMetaMethodBuilder6setTagERK10QByteArray @ 381 NONAME
+ _ZN18QMetaMethodBuilder9setAccessEN11QMetaMethod6AccessE @ 382 NONAME
+ _ZN18QMetaObjectBuilder11addPropertyERK10QByteArrayS2_i @ 383 NONAME
+ _ZN18QMetaObjectBuilder11addPropertyERK13QMetaProperty @ 384 NONAME
+ _ZN18QMetaObjectBuilder11deserializeER11QDataStreamRK4QMapI10QByteArrayPK11QMetaObjectE @ 385 NONAME
+ _ZN18QMetaObjectBuilder11indexOfSlotERK10QByteArray @ 386 NONAME
+ _ZN18QMetaObjectBuilder12addClassInfoERK10QByteArrayS2_ @ 387 NONAME
+ _ZN18QMetaObjectBuilder12removeMethodEi @ 388 NONAME
+ _ZN18QMetaObjectBuilder12setClassNameERK10QByteArray @ 389 NONAME
+ _ZN18QMetaObjectBuilder13addEnumeratorERK10QByteArray @ 390 NONAME
+ _ZN18QMetaObjectBuilder13addEnumeratorERK9QMetaEnum @ 391 NONAME
+ _ZN18QMetaObjectBuilder13addMetaObjectEPK11QMetaObject6QFlagsINS_9AddMemberEE @ 392 NONAME
+ _ZN18QMetaObjectBuilder13indexOfMethodERK10QByteArray @ 393 NONAME
+ _ZN18QMetaObjectBuilder13indexOfSignalERK10QByteArray @ 394 NONAME
+ _ZN18QMetaObjectBuilder13setSuperClassEPK11QMetaObject @ 395 NONAME
+ _ZN18QMetaObjectBuilder14addConstructorERK10QByteArray @ 396 NONAME
+ _ZN18QMetaObjectBuilder14addConstructorERK11QMetaMethod @ 397 NONAME
+ _ZN18QMetaObjectBuilder14removePropertyEi @ 398 NONAME
+ _ZN18QMetaObjectBuilder15indexOfPropertyERK10QByteArray @ 399 NONAME
+ _ZN18QMetaObjectBuilder15removeClassInfoEi @ 400 NONAME
+ _ZN18QMetaObjectBuilder16indexOfClassInfoERK10QByteArray @ 401 NONAME
+ _ZN18QMetaObjectBuilder16removeEnumeratorEi @ 402 NONAME
+ _ZN18QMetaObjectBuilder17indexOfEnumeratorERK10QByteArray @ 403 NONAME
+ _ZN18QMetaObjectBuilder17removeConstructorEi @ 404 NONAME
+ _ZN18QMetaObjectBuilder18indexOfConstructorERK10QByteArray @ 405 NONAME
+ _ZN18QMetaObjectBuilder19fromRelocatableDataEP11QMetaObjectPKS0_RK10QByteArray @ 406 NONAME
+ _ZN18QMetaObjectBuilder20addRelatedMetaObjectERKPFRK11QMetaObjectvE @ 407 NONAME
+ _ZN18QMetaObjectBuilder23removeRelatedMetaObjectEi @ 408 NONAME
+ _ZN18QMetaObjectBuilder25setStaticMetacallFunctionEPFiN11QMetaObject4CallEiPPvE @ 409 NONAME
+ _ZN18QMetaObjectBuilder7addSlotERK10QByteArray @ 410 NONAME
+ _ZN18QMetaObjectBuilder8setFlagsE6QFlagsINS_14MetaObjectFlagEE @ 411 NONAME
+ _ZN18QMetaObjectBuilder9addMethodERK10QByteArray @ 412 NONAME
+ _ZN18QMetaObjectBuilder9addMethodERK10QByteArrayS2_ @ 413 NONAME
+ _ZN18QMetaObjectBuilder9addMethodERK11QMetaMethod @ 414 NONAME
+ _ZN18QMetaObjectBuilder9addSignalERK10QByteArray @ 415 NONAME
+ _ZN18QMetaObjectBuilderC1EPK11QMetaObject6QFlagsINS_9AddMemberEE @ 416 NONAME
+ _ZN18QMetaObjectBuilderC1Ev @ 417 NONAME
+ _ZN18QMetaObjectBuilderC2EPK11QMetaObject6QFlagsINS_9AddMemberEE @ 418 NONAME
+ _ZN18QMetaObjectBuilderC2Ev @ 419 NONAME
+ _ZN18QMetaObjectBuilderD0Ev @ 420 NONAME
+ _ZN18QMetaObjectBuilderD1Ev @ 421 NONAME
+ _ZN18QMetaObjectBuilderD2Ev @ 422 NONAME
+ _ZN19QDeclarativeAnchors10classBeginEv @ 423 NONAME
+ _ZN19QDeclarativeAnchors10resetRightEv @ 424 NONAME
+ _ZN19QDeclarativeAnchors10setMarginsEf @ 425 NONAME
+ _ZN19QDeclarativeAnchors10topChangedEv @ 426 NONAME
+ _ZN19QDeclarativeAnchors11fillChangedEv @ 427 NONAME
+ _ZN19QDeclarativeAnchors11leftChangedEv @ 428 NONAME
+ _ZN19QDeclarativeAnchors11qt_metacallEN11QMetaObject4CallEiPPv @ 429 NONAME
+ _ZN19QDeclarativeAnchors11qt_metacastEPKc @ 430 NONAME
+ _ZN19QDeclarativeAnchors11resetBottomEv @ 431 NONAME
+ _ZN19QDeclarativeAnchors11setBaselineERK22QDeclarativeAnchorLine @ 432 NONAME
+ _ZN19QDeclarativeAnchors11setCenterInEP16QDeclarativeItem @ 433 NONAME
+ _ZN19QDeclarativeAnchors12rightChangedEv @ 434 NONAME
+ _ZN19QDeclarativeAnchors12setTopMarginEf @ 435 NONAME
+ _ZN19QDeclarativeAnchors13bottomChangedEv @ 436 NONAME
+ _ZN19QDeclarativeAnchors13resetBaselineEv @ 437 NONAME
+ _ZN19QDeclarativeAnchors13resetCenterInEv @ 438 NONAME
+ _ZN19QDeclarativeAnchors13setLeftMarginEf @ 439 NONAME
+ _ZN19QDeclarativeAnchors14marginsChangedEv @ 440 NONAME
+ _ZN19QDeclarativeAnchors14setRightMarginEf @ 441 NONAME
+ _ZN19QDeclarativeAnchors15baselineChangedEv @ 442 NONAME
+ _ZN19QDeclarativeAnchors15centerInChangedEv @ 443 NONAME
+ _ZN19QDeclarativeAnchors15setBottomMarginEf @ 444 NONAME
+ _ZN19QDeclarativeAnchors16staticMetaObjectE @ 445 NONAME DATA 16
+ _ZN19QDeclarativeAnchors16topMarginChangedEv @ 446 NONAME
+ _ZN19QDeclarativeAnchors17componentCompleteEv @ 447 NONAME
+ _ZN19QDeclarativeAnchors17leftMarginChangedEv @ 448 NONAME
+ _ZN19QDeclarativeAnchors17setBaselineOffsetEf @ 449 NONAME
+ _ZN19QDeclarativeAnchors17setVerticalCenterERK22QDeclarativeAnchorLine @ 450 NONAME
+ _ZN19QDeclarativeAnchors18rightMarginChangedEv @ 451 NONAME
+ _ZN19QDeclarativeAnchors19bottomMarginChangedEv @ 452 NONAME
+ _ZN19QDeclarativeAnchors19getStaticMetaObjectEv @ 453 NONAME
+ _ZN19QDeclarativeAnchors19resetVerticalCenterEv @ 454 NONAME
+ _ZN19QDeclarativeAnchors19setHorizontalCenterERK22QDeclarativeAnchorLine @ 455 NONAME
+ _ZN19QDeclarativeAnchors21baselineOffsetChangedEv @ 456 NONAME
+ _ZN19QDeclarativeAnchors21resetHorizontalCenterEv @ 457 NONAME
+ _ZN19QDeclarativeAnchors21verticalCenterChangedEv @ 458 NONAME
+ _ZN19QDeclarativeAnchors23horizontalCenterChangedEv @ 459 NONAME
+ _ZN19QDeclarativeAnchors23setVerticalCenterOffsetEf @ 460 NONAME
+ _ZN19QDeclarativeAnchors25setHorizontalCenterOffsetEf @ 461 NONAME
+ _ZN19QDeclarativeAnchors27verticalCenterOffsetChangedEv @ 462 NONAME
+ _ZN19QDeclarativeAnchors29horizontalCenterOffsetChangedEv @ 463 NONAME
+ _ZN19QDeclarativeAnchors6setTopERK22QDeclarativeAnchorLine @ 464 NONAME
+ _ZN19QDeclarativeAnchors7setFillEP16QDeclarativeItem @ 465 NONAME
+ _ZN19QDeclarativeAnchors7setLeftERK22QDeclarativeAnchorLine @ 466 NONAME
+ _ZN19QDeclarativeAnchors8resetTopEv @ 467 NONAME
+ _ZN19QDeclarativeAnchors8setRightERK22QDeclarativeAnchorLine @ 468 NONAME
+ _ZN19QDeclarativeAnchors9resetFillEv @ 469 NONAME
+ _ZN19QDeclarativeAnchors9resetLeftEv @ 470 NONAME
+ _ZN19QDeclarativeAnchors9setBottomERK22QDeclarativeAnchorLine @ 471 NONAME
+ _ZN19QDeclarativeAnchorsC1EP16QDeclarativeItemP7QObject @ 472 NONAME
+ _ZN19QDeclarativeAnchorsC1EP7QObject @ 473 NONAME
+ _ZN19QDeclarativeAnchorsC2EP16QDeclarativeItemP7QObject @ 474 NONAME
+ _ZN19QDeclarativeAnchorsC2EP7QObject @ 475 NONAME
+ _ZN19QDeclarativeAnchorsD0Ev @ 476 NONAME
+ _ZN19QDeclarativeAnchorsD1Ev @ 477 NONAME
+ _ZN19QDeclarativeAnchorsD2Ev @ 478 NONAME
+ _ZN19QDeclarativeBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 479 NONAME
+ _ZN19QDeclarativeBinding11qt_metacallEN11QMetaObject4CallEiPPv @ 480 NONAME
+ _ZN19QDeclarativeBinding11qt_metacastEPKc @ 481 NONAME
+ _ZN19QDeclarativeBinding13propertyIndexEv @ 482 NONAME
+ _ZN19QDeclarativeBinding16staticMetaObjectE @ 483 NONAME DATA 16
+ _ZN19QDeclarativeBinding19getStaticMetaObjectEv @ 484 NONAME
+ _ZN19QDeclarativeBinding6updateE6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 485 NONAME
+ _ZN19QDeclarativeBinding9setTargetERK20QDeclarativeProperty @ 486 NONAME
+ _ZN19QDeclarativeBindingC1EPvP20QDeclarativeRefCountP7QObjectP23QDeclarativeContextDataRK7QStringiS4_ @ 487 NONAME
+ _ZN19QDeclarativeBindingC1ERK7QStringP7QObjectP19QDeclarativeContextS4_ @ 488 NONAME
+ _ZN19QDeclarativeBindingC1ERK7QStringP7QObjectP23QDeclarativeContextDataS4_ @ 489 NONAME
+ _ZN19QDeclarativeBindingC2EPvP20QDeclarativeRefCountP7QObjectP23QDeclarativeContextDataRK7QStringiS4_ @ 490 NONAME
+ _ZN19QDeclarativeBindingC2ERK7QStringP7QObjectP19QDeclarativeContextS4_ @ 491 NONAME
+ _ZN19QDeclarativeBindingC2ERK7QStringP7QObjectP23QDeclarativeContextDataS4_ @ 492 NONAME
+ _ZN19QDeclarativeBindingD0Ev @ 493 NONAME
+ _ZN19QDeclarativeBindingD1Ev @ 494 NONAME
+ _ZN19QDeclarativeBindingD2Ev @ 495 NONAME
+ _ZN19QDeclarativeContext10setBaseUrlERK4QUrl @ 496 NONAME
+ _ZN19QDeclarativeContext11qt_metacallEN11QMetaObject4CallEiPPv @ 497 NONAME
+ _ZN19QDeclarativeContext11qt_metacastEPKc @ 498 NONAME
+ _ZN19QDeclarativeContext11resolvedUrlERK4QUrl @ 499 NONAME
+ _ZN19QDeclarativeContext16setContextObjectEP7QObject @ 500 NONAME
+ _ZN19QDeclarativeContext16staticMetaObjectE @ 501 NONAME DATA 16
+ _ZN19QDeclarativeContext18setContextPropertyERK7QStringP7QObject @ 502 NONAME
+ _ZN19QDeclarativeContext18setContextPropertyERK7QStringRK8QVariant @ 503 NONAME
+ _ZN19QDeclarativeContext19getStaticMetaObjectEv @ 504 NONAME
+ _ZN19QDeclarativeContextC1EP18QDeclarativeEngineP7QObject @ 505 NONAME
+ _ZN19QDeclarativeContextC1EP18QDeclarativeEngineb @ 506 NONAME
+ _ZN19QDeclarativeContextC1EP23QDeclarativeContextData @ 507 NONAME
+ _ZN19QDeclarativeContextC1EPS_P7QObject @ 508 NONAME
+ _ZN19QDeclarativeContextC2EP18QDeclarativeEngineP7QObject @ 509 NONAME
+ _ZN19QDeclarativeContextC2EP18QDeclarativeEngineb @ 510 NONAME
+ _ZN19QDeclarativeContextC2EP23QDeclarativeContextData @ 511 NONAME
+ _ZN19QDeclarativeContextC2EPS_P7QObject @ 512 NONAME
+ _ZN19QDeclarativeContextD0Ev @ 513 NONAME
+ _ZN19QDeclarativeContextD1Ev @ 514 NONAME
+ _ZN19QDeclarativeContextD2Ev @ 515 NONAME
+ _ZN19QDeclarativeDomListC1ERKS_ @ 516 NONAME
+ _ZN19QDeclarativeDomListC1Ev @ 517 NONAME
+ _ZN19QDeclarativeDomListC2ERKS_ @ 518 NONAME
+ _ZN19QDeclarativeDomListC2Ev @ 519 NONAME
+ _ZN19QDeclarativeDomListD1Ev @ 520 NONAME
+ _ZN19QDeclarativeDomListD2Ev @ 521 NONAME
+ _ZN19QDeclarativeDomListaSERKS_ @ 522 NONAME
+ _ZN19QDeclarativePrivate12registerTypeERKNS_12RegisterTypeE @ 523 NONAME
+ _ZN19QDeclarativePrivate12registerTypeERKNS_17RegisterInterfaceE @ 524 NONAME
+ _ZN19QListModelInterface10itemsMovedEiii @ 525 NONAME
+ _ZN19QListModelInterface11qt_metacallEN11QMetaObject4CallEiPPv @ 526 NONAME
+ _ZN19QListModelInterface11qt_metacastEPKc @ 527 NONAME
+ _ZN19QListModelInterface12itemsChangedEiiRK5QListIiE @ 528 NONAME
+ _ZN19QListModelInterface12itemsRemovedEii @ 529 NONAME
+ _ZN19QListModelInterface13itemsInsertedEii @ 530 NONAME
+ _ZN19QListModelInterface16staticMetaObjectE @ 531 NONAME DATA 16
+ _ZN19QListModelInterface19getStaticMetaObjectEv @ 532 NONAME
+ _ZN20QDeclarativeBehavior10setEnabledEb @ 533 NONAME
+ _ZN20QDeclarativeBehavior11qt_metacallEN11QMetaObject4CallEiPPv @ 534 NONAME
+ _ZN20QDeclarativeBehavior11qt_metacastEPKc @ 535 NONAME
+ _ZN20QDeclarativeBehavior12setAnimationEP29QDeclarativeAbstractAnimation @ 536 NONAME
+ _ZN20QDeclarativeBehavior14enabledChangedEv @ 537 NONAME
+ _ZN20QDeclarativeBehavior16staticMetaObjectE @ 538 NONAME DATA 16
+ _ZN20QDeclarativeBehavior19getStaticMetaObjectEv @ 539 NONAME
+ _ZN20QDeclarativeBehavior5writeERK8QVariant @ 540 NONAME
+ _ZN20QDeclarativeBehavior9animationEv @ 541 NONAME
+ _ZN20QDeclarativeBehavior9setTargetERK20QDeclarativeProperty @ 542 NONAME
+ _ZN20QDeclarativeBehaviorC1EP7QObject @ 543 NONAME
+ _ZN20QDeclarativeBehaviorC2EP7QObject @ 544 NONAME
+ _ZN20QDeclarativeBehaviorD0Ev @ 545 NONAME
+ _ZN20QDeclarativeBehaviorD1Ev @ 546 NONAME
+ _ZN20QDeclarativeBehaviorD2Ev @ 547 NONAME
+ _ZN20QDeclarativeCompiler11buildObjectEPN18QDeclarativeParser6ObjectERKNS_14BindingContextE @ 548 NONAME
+ _ZN20QDeclarativeCompiler11buildScriptEPN18QDeclarativeParser6ObjectES2_ @ 549 NONAME
+ _ZN20QDeclarativeCompiler11buildSignalEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 550 NONAME
+ _ZN20QDeclarativeCompiler11compileTreeEPN18QDeclarativeParser6ObjectE @ 551 NONAME
+ _ZN20QDeclarativeCompiler12buildBindingEPN18QDeclarativeParser5ValueEPNS0_8PropertyERKNS_14BindingContextE @ 552 NONAME
+ _ZN20QDeclarativeCompiler12checkValidIdEPN18QDeclarativeParser5ValueERK7QString @ 553 NONAME
+ _ZN20QDeclarativeCompiler12compileAliasER18QMetaObjectBuilderR10QByteArrayPN18QDeclarativeParser6ObjectERKNS5_15DynamicPropertyE @ 554 NONAME
+ _ZN20QDeclarativeCompiler12genComponentEPN18QDeclarativeParser6ObjectE @ 555 NONAME
+ _ZN20QDeclarativeCompiler13buildPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 556 NONAME
+ _ZN20QDeclarativeCompiler13genObjectBodyEPN18QDeclarativeParser6ObjectE @ 557 NONAME
+ _ZN20QDeclarativeCompiler14buildComponentEPN18QDeclarativeParser6ObjectERKNS_14BindingContextE @ 558 NONAME
+ _ZN20QDeclarativeCompiler14buildSubObjectEPN18QDeclarativeParser6ObjectERKNS_14BindingContextE @ 559 NONAME
+ _ZN20QDeclarativeCompiler14componentStateEPN18QDeclarativeParser6ObjectE @ 560 NONAME
+ _ZN20QDeclarativeCompiler15buildIdPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectE @ 561 NONAME
+ _ZN20QDeclarativeCompiler15genContextCacheEv @ 562 NONAME
+ _ZN20QDeclarativeCompiler15genListPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectE @ 563 NONAME
+ _ZN20QDeclarativeCompiler15genPropertyDataEPN18QDeclarativeParser8PropertyE @ 564 NONAME
+ _ZN20QDeclarativeCompiler16buildDynamicMetaEPN18QDeclarativeParser6ObjectENS_15DynamicMetaModeE @ 565 NONAME
+ _ZN20QDeclarativeCompiler16checkDynamicMetaEPN18QDeclarativeParser6ObjectE @ 566 NONAME
+ _ZN20QDeclarativeCompiler16componentTypeRefEv @ 567 NONAME
+ _ZN20QDeclarativeCompiler16findSignalByNameEPK11QMetaObjectRK10QByteArray @ 568 NONAME
+ _ZN20QDeclarativeCompiler16genValuePropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectE @ 569 NONAME
+ _ZN20QDeclarativeCompiler16genValueTypeDataEPN18QDeclarativeParser8PropertyES2_ @ 570 NONAME
+ _ZN20QDeclarativeCompiler17buildListPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 571 NONAME
+ _ZN20QDeclarativeCompiler17doesPropertyExistEPN18QDeclarativeParser8PropertyEPNS0_6ObjectE @ 572 NONAME
+ _ZN20QDeclarativeCompiler18deferredPropertiesEPN18QDeclarativeParser6ObjectE @ 573 NONAME
+ _ZN20QDeclarativeCompiler18saveComponentStateEv @ 574 NONAME
+ _ZN20QDeclarativeCompiler19addBindingReferenceERKNS_16BindingReferenceE @ 575 NONAME
+ _ZN20QDeclarativeCompiler20buildGroupedPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 576 NONAME
+ _ZN20QDeclarativeCompiler20genBindingAssignmentEPN18QDeclarativeParser5ValueEPNS0_8PropertyEPNS0_6ObjectES4_ @ 577 NONAME
+ _ZN20QDeclarativeCompiler20genLiteralAssignmentERK13QMetaPropertyPN18QDeclarativeParser5ValueE @ 578 NONAME
+ _ZN20QDeclarativeCompiler20isSignalPropertyNameERK10QByteArray @ 579 NONAME
+ _ZN20QDeclarativeCompiler21buildAttachedPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 580 NONAME
+ _ZN20QDeclarativeCompiler21genPropertyAssignmentEPN18QDeclarativeParser8PropertyEPNS0_6ObjectES2_ @ 581 NONAME
+ _ZN20QDeclarativeCompiler21testLiteralAssignmentERK13QMetaPropertyPN18QDeclarativeParser5ValueE @ 582 NONAME
+ _ZN20QDeclarativeCompiler22buildComponentFromRootEPN18QDeclarativeParser6ObjectERKNS_14BindingContextE @ 583 NONAME
+ _ZN20QDeclarativeCompiler22buildValueTypePropertyEP7QObjectPN18QDeclarativeParser6ObjectES4_RKNS_14BindingContextE @ 584 NONAME
+ _ZN20QDeclarativeCompiler22completeComponentBuildEv @ 585 NONAME
+ _ZN20QDeclarativeCompiler22isAttachedPropertyNameERK10QByteArray @ 586 NONAME
+ _ZN20QDeclarativeCompiler23buildPropertyAssignmentEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 587 NONAME
+ _ZN20QDeclarativeCompiler24buildPropertyInNamespaceEPN25QDeclarativeEnginePrivate17ImportedNamespaceEPN18QDeclarativeParser8PropertyEPNS3_6ObjectERKNS_14BindingContextE @ 588 NONAME
+ _ZN20QDeclarativeCompiler25buildPropertyOnAssignmentEPN18QDeclarativeParser8PropertyEPNS0_6ObjectES4_PNS0_5ValueERKNS_14BindingContextE @ 589 NONAME
+ _ZN20QDeclarativeCompiler25buildScriptStringPropertyEPN18QDeclarativeParser8PropertyEPNS0_6ObjectERKNS_14BindingContextE @ 590 NONAME
+ _ZN20QDeclarativeCompiler26mergeDynamicMetaPropertiesEPN18QDeclarativeParser6ObjectE @ 591 NONAME
+ _ZN20QDeclarativeCompiler27testQualifiedEnumAssignmentERK13QMetaPropertyPN18QDeclarativeParser6ObjectEPNS3_5ValueEPb @ 592 NONAME
+ _ZN20QDeclarativeCompiler29buildPropertyObjectAssignmentEPN18QDeclarativeParser8PropertyEPNS0_6ObjectEPNS0_5ValueERKNS_14BindingContextE @ 593 NONAME
+ _ZN20QDeclarativeCompiler30buildPropertyLiteralAssignmentEPN18QDeclarativeParser8PropertyEPNS0_6ObjectEPNS0_5ValueERKNS_14BindingContextE @ 594 NONAME
+ _ZN20QDeclarativeCompiler5addIdERK7QStringPN18QDeclarativeParser6ObjectE @ 595 NONAME
+ _ZN20QDeclarativeCompiler5resetEP24QDeclarativeCompiledData @ 596 NONAME
+ _ZN20QDeclarativeCompiler7compileEP18QDeclarativeEngineP29QDeclarativeCompositeTypeDataP24QDeclarativeCompiledData @ 597 NONAME
+ _ZN20QDeclarativeCompiler9canCoerceEiPN18QDeclarativeParser6ObjectE @ 598 NONAME
+ _ZN20QDeclarativeCompiler9canCoerceEii @ 599 NONAME
+ _ZN20QDeclarativeCompiler9dumpStatsEv @ 600 NONAME
+ _ZN20QDeclarativeCompiler9genObjectEPN18QDeclarativeParser6ObjectE @ 601 NONAME
+ _ZN20QDeclarativeCompiler9toQmlTypeEPN18QDeclarativeParser6ObjectE @ 602 NONAME
+ _ZN20QDeclarativeCompilerC1Ev @ 603 NONAME
+ _ZN20QDeclarativeCompilerC2Ev @ 604 NONAME
+ _ZN20QDeclarativeDomValueC1ERKS_ @ 605 NONAME
+ _ZN20QDeclarativeDomValueC1Ev @ 606 NONAME
+ _ZN20QDeclarativeDomValueC2ERKS_ @ 607 NONAME
+ _ZN20QDeclarativeDomValueC2Ev @ 608 NONAME
+ _ZN20QDeclarativeDomValueD1Ev @ 609 NONAME
+ _ZN20QDeclarativeDomValueD2Ev @ 610 NONAME
+ _ZN20QDeclarativeDomValueaSERKS_ @ 611 NONAME
+ _ZN20QDeclarativeFlipable11qt_metacallEN11QMetaObject4CallEiPPv @ 612 NONAME
+ _ZN20QDeclarativeFlipable11qt_metacastEPKc @ 613 NONAME
+ _ZN20QDeclarativeFlipable11sideChangedEv @ 614 NONAME
+ _ZN20QDeclarativeFlipable16staticMetaObjectE @ 615 NONAME DATA 16
+ _ZN20QDeclarativeFlipable19getStaticMetaObjectEv @ 616 NONAME
+ _ZN20QDeclarativeFlipable4backEv @ 617 NONAME
+ _ZN20QDeclarativeFlipable5frontEv @ 618 NONAME
+ _ZN20QDeclarativeFlipable7setBackEP15QGraphicsObject @ 619 NONAME
+ _ZN20QDeclarativeFlipable8setFrontEP15QGraphicsObject @ 620 NONAME
+ _ZN20QDeclarativeFlipableC1EP16QDeclarativeItem @ 621 NONAME
+ _ZN20QDeclarativeFlipableC2EP16QDeclarativeItem @ 622 NONAME
+ _ZN20QDeclarativeFlipableD0Ev @ 623 NONAME
+ _ZN20QDeclarativeFlipableD1Ev @ 624 NONAME
+ _ZN20QDeclarativeFlipableD2Ev @ 625 NONAME
+ _ZN20QDeclarativeGradient11qt_metacallEN11QMetaObject4CallEiPPv @ 626 NONAME
+ _ZN20QDeclarativeGradient11qt_metacastEPKc @ 627 NONAME
+ _ZN20QDeclarativeGradient16staticMetaObjectE @ 628 NONAME DATA 16
+ _ZN20QDeclarativeGradient19getStaticMetaObjectEv @ 629 NONAME
+ _ZN20QDeclarativeGradient7updatedEv @ 630 NONAME
+ _ZN20QDeclarativeGradient8doUpdateEv @ 631 NONAME
+ _ZN20QDeclarativeGridView10itemsMovedEiii @ 632 NONAME
+ _ZN20QDeclarativeGridView10modelResetEv @ 633 NONAME
+ _ZN20QDeclarativeGridView11createdItemEiP16QDeclarativeItem @ 634 NONAME
+ _ZN20QDeclarativeGridView11currentItemEv @ 635 NONAME
+ _ZN20QDeclarativeGridView11flowChangedEv @ 636 NONAME
+ _ZN20QDeclarativeGridView11qt_metacallEN11QMetaObject4CallEiPPv @ 637 NONAME
+ _ZN20QDeclarativeGridView11qt_metacastEPKc @ 638 NONAME
+ _ZN20QDeclarativeGridView11setDelegateEP21QDeclarativeComponent @ 639 NONAME
+ _ZN20QDeclarativeGridView11setSnapModeENS_8SnapModeE @ 640 NONAME
+ _ZN20QDeclarativeGridView12countChangedEv @ 641 NONAME
+ _ZN20QDeclarativeGridView12itemsRemovedEii @ 642 NONAME
+ _ZN20QDeclarativeGridView12modelChangedEv @ 643 NONAME
+ _ZN20QDeclarativeGridView12setCellWidthEi @ 644 NONAME
+ _ZN20QDeclarativeGridView12setHighlightEP21QDeclarativeComponent @ 645 NONAME
+ _ZN20QDeclarativeGridView13highlightItemEv @ 646 NONAME
+ _ZN20QDeclarativeGridView13itemsInsertedEii @ 647 NONAME
+ _ZN20QDeclarativeGridView13keyPressEventEP9QKeyEvent @ 648 NONAME
+ _ZN20QDeclarativeGridView13setCellHeightEi @ 649 NONAME
+ _ZN20QDeclarativeGridView13viewportMovedEv @ 650 NONAME
+ _ZN20QDeclarativeGridView14destroyRemovedEv @ 651 NONAME
+ _ZN20QDeclarativeGridView14destroyingItemEP16QDeclarativeItem @ 652 NONAME
+ _ZN20QDeclarativeGridView14setCacheBufferEi @ 653 NONAME
+ _ZN20QDeclarativeGridView14setWrapEnabledEb @ 654 NONAME
+ _ZN20QDeclarativeGridView15delegateChangedEv @ 655 NONAME
+ _ZN20QDeclarativeGridView15setCurrentIndexEi @ 656 NONAME
+ _ZN20QDeclarativeGridView15snapModeChangedEv @ 657 NONAME
+ _ZN20QDeclarativeGridView16cellWidthChangedEv @ 658 NONAME
+ _ZN20QDeclarativeGridView16highlightChangedEv @ 659 NONAME
+ _ZN20QDeclarativeGridView16staticMetaObjectE @ 660 NONAME DATA 16
+ _ZN20QDeclarativeGridView17cellHeightChangedEv @ 661 NONAME
+ _ZN20QDeclarativeGridView17componentCompleteEv @ 662 NONAME
+ _ZN20QDeclarativeGridView18cacheBufferChangedEv @ 663 NONAME
+ _ZN20QDeclarativeGridView18moveCurrentIndexUpEv @ 664 NONAME
+ _ZN20QDeclarativeGridView19currentIndexChangedEv @ 665 NONAME
+ _ZN20QDeclarativeGridView19getStaticMetaObjectEv @ 666 NONAME
+ _ZN20QDeclarativeGridView19positionViewAtIndexEii @ 667 NONAME
+ _ZN20QDeclarativeGridView20highlightItemChangedEv @ 668 NONAME
+ _ZN20QDeclarativeGridView20moveCurrentIndexDownEv @ 669 NONAME
+ _ZN20QDeclarativeGridView20moveCurrentIndexLeftEv @ 670 NONAME
+ _ZN20QDeclarativeGridView21moveCurrentIndexRightEv @ 671 NONAME
+ _ZN20QDeclarativeGridView21qmlAttachedPropertiesEP7QObject @ 672 NONAME
+ _ZN20QDeclarativeGridView21setHighlightRangeModeENS_18HighlightRangeModeE @ 673 NONAME
+ _ZN20QDeclarativeGridView22trackedPositionChangedEv @ 674 NONAME
+ _ZN20QDeclarativeGridView24setPreferredHighlightEndEf @ 675 NONAME
+ _ZN20QDeclarativeGridView25highlightRangeModeChangedEv @ 676 NONAME
+ _ZN20QDeclarativeGridView25keyNavigationWrapsChangedEv @ 677 NONAME
+ _ZN20QDeclarativeGridView26setPreferredHighlightBeginEf @ 678 NONAME
+ _ZN20QDeclarativeGridView28preferredHighlightEndChangedEv @ 679 NONAME
+ _ZN20QDeclarativeGridView30preferredHighlightBeginChangedEv @ 680 NONAME
+ _ZN20QDeclarativeGridView30setHighlightFollowsCurrentItemEb @ 681 NONAME
+ _ZN20QDeclarativeGridView5eventEP6QEvent @ 682 NONAME
+ _ZN20QDeclarativeGridView6refillEv @ 683 NONAME
+ _ZN20QDeclarativeGridView7setFlowENS_4FlowE @ 684 NONAME
+ _ZN20QDeclarativeGridView8setModelERK8QVariant @ 685 NONAME
+ _ZN20QDeclarativeGridViewC1EP16QDeclarativeItem @ 686 NONAME
+ _ZN20QDeclarativeGridViewC2EP16QDeclarativeItem @ 687 NONAME
+ _ZN20QDeclarativeGridViewD0Ev @ 688 NONAME
+ _ZN20QDeclarativeGridViewD1Ev @ 689 NONAME
+ _ZN20QDeclarativeGridViewD2Ev @ 690 NONAME
+ _ZN20QDeclarativeListView10itemsMovedEiii @ 691 NONAME
+ _ZN20QDeclarativeListView10modelResetEv @ 692 NONAME
+ _ZN20QDeclarativeListView10setSpacingEf @ 693 NONAME
+ _ZN20QDeclarativeListView11animStoppedEv @ 694 NONAME
+ _ZN20QDeclarativeListView11createdItemEiP16QDeclarativeItem @ 695 NONAME
+ _ZN20QDeclarativeListView11currentItemEv @ 696 NONAME
+ _ZN20QDeclarativeListView11qt_metacallEN11QMetaObject4CallEiPPv @ 697 NONAME
+ _ZN20QDeclarativeListView11qt_metacastEPKc @ 698 NONAME
+ _ZN20QDeclarativeListView11setDelegateEP21QDeclarativeComponent @ 699 NONAME
+ _ZN20QDeclarativeListView11setSnapModeENS_8SnapModeE @ 700 NONAME
+ _ZN20QDeclarativeListView12countChangedEv @ 701 NONAME
+ _ZN20QDeclarativeListView12itemsRemovedEii @ 702 NONAME
+ _ZN20QDeclarativeListView12modelChangedEv @ 703 NONAME
+ _ZN20QDeclarativeListView12setHighlightEP21QDeclarativeComponent @ 704 NONAME
+ _ZN20QDeclarativeListView13footerChangedEv @ 705 NONAME
+ _ZN20QDeclarativeListView13headerChangedEv @ 706 NONAME
+ _ZN20QDeclarativeListView13highlightItemEv @ 707 NONAME
+ _ZN20QDeclarativeListView13itemsInsertedEii @ 708 NONAME
+ _ZN20QDeclarativeListView13keyPressEventEP9QKeyEvent @ 709 NONAME
+ _ZN20QDeclarativeListView13viewportMovedEv @ 710 NONAME
+ _ZN20QDeclarativeListView14destroyRemovedEv @ 711 NONAME
+ _ZN20QDeclarativeListView14destroyingItemEP16QDeclarativeItem @ 712 NONAME
+ _ZN20QDeclarativeListView14setCacheBufferEi @ 713 NONAME
+ _ZN20QDeclarativeListView14setOrientationENS_11OrientationE @ 714 NONAME
+ _ZN20QDeclarativeListView14setWrapEnabledEb @ 715 NONAME
+ _ZN20QDeclarativeListView14spacingChangedEv @ 716 NONAME
+ _ZN20QDeclarativeListView15delegateChangedEv @ 717 NONAME
+ _ZN20QDeclarativeListView15sectionCriteriaEv @ 718 NONAME
+ _ZN20QDeclarativeListView15setCurrentIndexEi @ 719 NONAME
+ _ZN20QDeclarativeListView15snapModeChangedEv @ 720 NONAME
+ _ZN20QDeclarativeListView16highlightChangedEv @ 721 NONAME
+ _ZN20QDeclarativeListView16staticMetaObjectE @ 722 NONAME DATA 16
+ _ZN20QDeclarativeListView17componentCompleteEv @ 723 NONAME
+ _ZN20QDeclarativeListView18cacheBufferChangedEv @ 724 NONAME
+ _ZN20QDeclarativeListView18orientationChangedEv @ 725 NONAME
+ _ZN20QDeclarativeListView19currentIndexChangedEv @ 726 NONAME
+ _ZN20QDeclarativeListView19getStaticMetaObjectEv @ 727 NONAME
+ _ZN20QDeclarativeListView19positionViewAtIndexEii @ 728 NONAME
+ _ZN20QDeclarativeListView20highlightItemChangedEv @ 729 NONAME
+ _ZN20QDeclarativeListView21currentSectionChangedEv @ 730 NONAME
+ _ZN20QDeclarativeListView21decrementCurrentIndexEv @ 731 NONAME
+ _ZN20QDeclarativeListView21incrementCurrentIndexEv @ 732 NONAME
+ _ZN20QDeclarativeListView21qmlAttachedPropertiesEP7QObject @ 733 NONAME
+ _ZN20QDeclarativeListView21setHighlightMoveSpeedEf @ 734 NONAME
+ _ZN20QDeclarativeListView21setHighlightRangeModeENS_18HighlightRangeModeE @ 735 NONAME
+ _ZN20QDeclarativeListView22trackedPositionChangedEv @ 736 NONAME
+ _ZN20QDeclarativeListView23setHighlightResizeSpeedEf @ 737 NONAME
+ _ZN20QDeclarativeListView24setPreferredHighlightEndEf @ 738 NONAME
+ _ZN20QDeclarativeListView25highlightMoveSpeedChangedEv @ 739 NONAME
+ _ZN20QDeclarativeListView25highlightRangeModeChangedEv @ 740 NONAME
+ _ZN20QDeclarativeListView25keyNavigationWrapsChangedEv @ 741 NONAME
+ _ZN20QDeclarativeListView26setPreferredHighlightBeginEf @ 742 NONAME
+ _ZN20QDeclarativeListView27highlightResizeSpeedChangedEv @ 743 NONAME
+ _ZN20QDeclarativeListView28preferredHighlightEndChangedEv @ 744 NONAME
+ _ZN20QDeclarativeListView30preferredHighlightBeginChangedEv @ 745 NONAME
+ _ZN20QDeclarativeListView30setHighlightFollowsCurrentItemEb @ 746 NONAME
+ _ZN20QDeclarativeListView34highlightFollowsCurrentItemChangedEv @ 747 NONAME
+ _ZN20QDeclarativeListView5eventEP6QEvent @ 748 NONAME
+ _ZN20QDeclarativeListView6refillEv @ 749 NONAME
+ _ZN20QDeclarativeListView8setModelERK8QVariant @ 750 NONAME
+ _ZN20QDeclarativeListView9setFooterEP21QDeclarativeComponent @ 751 NONAME
+ _ZN20QDeclarativeListView9setHeaderEP21QDeclarativeComponent @ 752 NONAME
+ _ZN20QDeclarativeListViewC1EP16QDeclarativeItem @ 753 NONAME
+ _ZN20QDeclarativeListViewC2EP16QDeclarativeItem @ 754 NONAME
+ _ZN20QDeclarativeListViewD0Ev @ 755 NONAME
+ _ZN20QDeclarativeListViewD1Ev @ 756 NONAME
+ _ZN20QDeclarativeListViewD2Ev @ 757 NONAME
+ _ZN20QDeclarativeMetaType11isInterfaceEi @ 758 NONAME
+ _ZN20QDeclarativeMetaType12interfaceIIdEi @ 759 NONAME
+ _ZN20QDeclarativeMetaType12qmlTypeNamesEv @ 760 NONAME
+ _ZN20QDeclarativeMetaType12typeCategoryEi @ 761 NONAME
+ _ZN20QDeclarativeMetaType13defaultMethodEP7QObject @ 762 NONAME
+ _ZN20QDeclarativeMetaType13defaultMethodEPK11QMetaObject @ 763 NONAME
+ _ZN20QDeclarativeMetaType15defaultPropertyEP7QObject @ 764 NONAME
+ _ZN20QDeclarativeMetaType15defaultPropertyEPK11QMetaObject @ 765 NONAME
+ _ZN20QDeclarativeMetaType21customStringConverterEi @ 766 NONAME
+ _ZN20QDeclarativeMetaType24attachedPropertiesFuncIdEPK11QMetaObject @ 767 NONAME
+ _ZN20QDeclarativeMetaType26attachedPropertiesFuncByIdEi @ 768 NONAME
+ _ZN20QDeclarativeMetaType29registerCustomStringConverterEiPF8QVariantRK7QStringE @ 769 NONAME
+ _ZN20QDeclarativeMetaType4copyEiPvPKv @ 770 NONAME
+ _ZN20QDeclarativeMetaType6isListEi @ 771 NONAME
+ _ZN20QDeclarativeMetaType7qmlTypeEPK11QMetaObject @ 772 NONAME
+ _ZN20QDeclarativeMetaType7qmlTypeERK10QByteArrayii @ 773 NONAME
+ _ZN20QDeclarativeMetaType7qmlTypeEi @ 774 NONAME
+ _ZN20QDeclarativeMetaType8isModuleERK10QByteArrayii @ 775 NONAME
+ _ZN20QDeclarativeMetaType8listTypeEi @ 776 NONAME
+ _ZN20QDeclarativeMetaType8qmlTypesEv @ 777 NONAME
+ _ZN20QDeclarativeMetaType9isQObjectEi @ 778 NONAME
+ _ZN20QDeclarativeMetaType9toQObjectERK8QVariantPb @ 779 NONAME
+ _ZN20QDeclarativePathLine11qt_metacallEN11QMetaObject4CallEiPPv @ 780 NONAME
+ _ZN20QDeclarativePathLine11qt_metacastEPKc @ 781 NONAME
+ _ZN20QDeclarativePathLine16staticMetaObjectE @ 782 NONAME DATA 16
+ _ZN20QDeclarativePathLine19getStaticMetaObjectEv @ 783 NONAME
+ _ZN20QDeclarativePathLine9addToPathER12QPainterPath @ 784 NONAME
+ _ZN20QDeclarativePathQuad11qt_metacallEN11QMetaObject4CallEiPPv @ 785 NONAME
+ _ZN20QDeclarativePathQuad11qt_metacastEPKc @ 786 NONAME
+ _ZN20QDeclarativePathQuad11setControlXEf @ 787 NONAME
+ _ZN20QDeclarativePathQuad11setControlYEf @ 788 NONAME
+ _ZN20QDeclarativePathQuad16staticMetaObjectE @ 789 NONAME DATA 16
+ _ZN20QDeclarativePathQuad19getStaticMetaObjectEv @ 790 NONAME
+ _ZN20QDeclarativePathQuad9addToPathER12QPainterPath @ 791 NONAME
+ _ZN20QDeclarativePathView10itemsMovedEiii @ 792 NONAME
+ _ZN20QDeclarativePathView10modelResetEv @ 793 NONAME
+ _ZN20QDeclarativePathView11createdItemEiP16QDeclarativeItem @ 794 NONAME
+ _ZN20QDeclarativePathView11pathChangedEv @ 795 NONAME
+ _ZN20QDeclarativePathView11qt_metacallEN11QMetaObject4CallEiPPv @ 796 NONAME
+ _ZN20QDeclarativePathView11qt_metacastEPKc @ 797 NONAME
+ _ZN20QDeclarativePathView11setDelegateEP21QDeclarativeComponent @ 798 NONAME
+ _ZN20QDeclarativePathView12countChangedEv @ 799 NONAME
+ _ZN20QDeclarativePathView12itemsRemovedEii @ 800 NONAME
+ _ZN20QDeclarativePathView12modelChangedEv @ 801 NONAME
+ _ZN20QDeclarativePathView12setHighlightEP21QDeclarativeComponent @ 802 NONAME
+ _ZN20QDeclarativePathView13highlightItemEv @ 803 NONAME
+ _ZN20QDeclarativePathView13itemsInsertedEii @ 804 NONAME
+ _ZN20QDeclarativePathView13offsetChangedEv @ 805 NONAME
+ _ZN20QDeclarativePathView13setDragMarginEf @ 806 NONAME
+ _ZN20QDeclarativePathView14destroyingItemEP16QDeclarativeItem @ 807 NONAME
+ _ZN20QDeclarativePathView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 808 NONAME
+ _ZN20QDeclarativePathView14sendMouseEventEP24QGraphicsSceneMouseEvent @ 809 NONAME
+ _ZN20QDeclarativePathView14setInteractiveEb @ 810 NONAME
+ _ZN20QDeclarativePathView15delegateChangedEv @ 811 NONAME
+ _ZN20QDeclarativePathView15mousePressEventEP24QGraphicsSceneMouseEvent @ 812 NONAME
+ _ZN20QDeclarativePathView15setCurrentIndexEi @ 813 NONAME
+ _ZN20QDeclarativePathView16highlightChangedEv @ 814 NONAME
+ _ZN20QDeclarativePathView16sceneEventFilterEP13QGraphicsItemP6QEvent @ 815 NONAME
+ _ZN20QDeclarativePathView16setPathItemCountEi @ 816 NONAME
+ _ZN20QDeclarativePathView16staticMetaObjectE @ 817 NONAME DATA 16
+ _ZN20QDeclarativePathView17componentCompleteEv @ 818 NONAME
+ _ZN20QDeclarativePathView17dragMarginChangedEv @ 819 NONAME
+ _ZN20QDeclarativePathView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 820 NONAME
+ _ZN20QDeclarativePathView18interactiveChangedEv @ 821 NONAME
+ _ZN20QDeclarativePathView19currentIndexChangedEv @ 822 NONAME
+ _ZN20QDeclarativePathView19getStaticMetaObjectEv @ 823 NONAME
+ _ZN20QDeclarativePathView19snapPositionChangedEv @ 824 NONAME
+ _ZN20QDeclarativePathView20highlightItemChangedEv @ 825 NONAME
+ _ZN20QDeclarativePathView20pathItemCountChangedEv @ 826 NONAME
+ _ZN20QDeclarativePathView20setFlickDecelerationEf @ 827 NONAME
+ _ZN20QDeclarativePathView21qmlAttachedPropertiesEP7QObject @ 828 NONAME
+ _ZN20QDeclarativePathView21setHighlightRangeModeENS_18HighlightRangeModeE @ 829 NONAME
+ _ZN20QDeclarativePathView24flickDecelerationChangedEv @ 830 NONAME
+ _ZN20QDeclarativePathView24setPreferredHighlightEndEf @ 831 NONAME
+ _ZN20QDeclarativePathView25highlightRangeModeChangedEv @ 832 NONAME
+ _ZN20QDeclarativePathView26setPreferredHighlightBeginEf @ 833 NONAME
+ _ZN20QDeclarativePathView28preferredHighlightEndChangedEv @ 834 NONAME
+ _ZN20QDeclarativePathView30preferredHighlightBeginChangedEv @ 835 NONAME
+ _ZN20QDeclarativePathView6refillEv @ 836 NONAME
+ _ZN20QDeclarativePathView6tickedEv @ 837 NONAME
+ _ZN20QDeclarativePathView7setPathEP16QDeclarativePath @ 838 NONAME
+ _ZN20QDeclarativePathView8setModelERK8QVariant @ 839 NONAME
+ _ZN20QDeclarativePathView9setOffsetEf @ 840 NONAME
+ _ZN20QDeclarativePathViewC1EP16QDeclarativeItem @ 841 NONAME
+ _ZN20QDeclarativePathViewC2EP16QDeclarativeItem @ 842 NONAME
+ _ZN20QDeclarativePathViewD0Ev @ 843 NONAME
+ _ZN20QDeclarativePathViewD1Ev @ 844 NONAME
+ _ZN20QDeclarativePathViewD2Ev @ 845 NONAME
+ _ZN20QDeclarativeProperty4readEP7QObjectRK7QString @ 846 NONAME
+ _ZN20QDeclarativeProperty4readEP7QObjectRK7QStringP18QDeclarativeEngine @ 847 NONAME
+ _ZN20QDeclarativeProperty4readEP7QObjectRK7QStringP19QDeclarativeContext @ 848 NONAME
+ _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariant @ 849 NONAME
+ _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariantP18QDeclarativeEngine @ 850 NONAME
+ _ZN20QDeclarativeProperty5writeEP7QObjectRK7QStringRK8QVariantP19QDeclarativeContext @ 851 NONAME
+ _ZN20QDeclarativePropertyC1EP7QObject @ 852 NONAME
+ _ZN20QDeclarativePropertyC1EP7QObjectP18QDeclarativeEngine @ 853 NONAME
+ _ZN20QDeclarativePropertyC1EP7QObjectP19QDeclarativeContext @ 854 NONAME
+ _ZN20QDeclarativePropertyC1EP7QObjectRK7QString @ 855 NONAME
+ _ZN20QDeclarativePropertyC1EP7QObjectRK7QStringP18QDeclarativeEngine @ 856 NONAME
+ _ZN20QDeclarativePropertyC1EP7QObjectRK7QStringP19QDeclarativeContext @ 857 NONAME
+ _ZN20QDeclarativePropertyC1ERKS_ @ 858 NONAME
+ _ZN20QDeclarativePropertyC1Ev @ 859 NONAME
+ _ZN20QDeclarativePropertyC2EP7QObject @ 860 NONAME
+ _ZN20QDeclarativePropertyC2EP7QObjectP18QDeclarativeEngine @ 861 NONAME
+ _ZN20QDeclarativePropertyC2EP7QObjectP19QDeclarativeContext @ 862 NONAME
+ _ZN20QDeclarativePropertyC2EP7QObjectRK7QString @ 863 NONAME
+ _ZN20QDeclarativePropertyC2EP7QObjectRK7QStringP18QDeclarativeEngine @ 864 NONAME
+ _ZN20QDeclarativePropertyC2EP7QObjectRK7QStringP19QDeclarativeContext @ 865 NONAME
+ _ZN20QDeclarativePropertyC2ERKS_ @ 866 NONAME
+ _ZN20QDeclarativePropertyC2Ev @ 867 NONAME
+ _ZN20QDeclarativePropertyD1Ev @ 868 NONAME
+ _ZN20QDeclarativePropertyD2Ev @ 869 NONAME
+ _ZN20QDeclarativePropertyaSERKS_ @ 870 NONAME
+ _ZN20QDeclarativeRepeater10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 871 NONAME
+ _ZN20QDeclarativeRepeater10itemsMovedEiii @ 872 NONAME
+ _ZN20QDeclarativeRepeater10modelResetEv @ 873 NONAME
+ _ZN20QDeclarativeRepeater10regenerateEv @ 874 NONAME
+ _ZN20QDeclarativeRepeater11qt_metacallEN11QMetaObject4CallEiPPv @ 875 NONAME
+ _ZN20QDeclarativeRepeater11qt_metacastEPKc @ 876 NONAME
+ _ZN20QDeclarativeRepeater11setDelegateEP21QDeclarativeComponent @ 877 NONAME
+ _ZN20QDeclarativeRepeater12countChangedEv @ 878 NONAME
+ _ZN20QDeclarativeRepeater12itemsRemovedEii @ 879 NONAME
+ _ZN20QDeclarativeRepeater12modelChangedEv @ 880 NONAME
+ _ZN20QDeclarativeRepeater13itemsInsertedEii @ 881 NONAME
+ _ZN20QDeclarativeRepeater15delegateChangedEv @ 882 NONAME
+ _ZN20QDeclarativeRepeater16staticMetaObjectE @ 883 NONAME DATA 16
+ _ZN20QDeclarativeRepeater17componentCompleteEv @ 884 NONAME
+ _ZN20QDeclarativeRepeater19getStaticMetaObjectEv @ 885 NONAME
+ _ZN20QDeclarativeRepeater5clearEv @ 886 NONAME
+ _ZN20QDeclarativeRepeater8setModelERK8QVariant @ 887 NONAME
+ _ZN20QDeclarativeRepeaterC1EP16QDeclarativeItem @ 888 NONAME
+ _ZN20QDeclarativeRepeaterC2EP16QDeclarativeItem @ 889 NONAME
+ _ZN20QDeclarativeRepeaterD0Ev @ 890 NONAME
+ _ZN20QDeclarativeRepeaterD1Ev @ 891 NONAME
+ _ZN20QDeclarativeRepeaterD2Ev @ 892 NONAME
+ _ZN20QDeclarativeTextEdit10updateSizeEv @ 893 NONAME
+ _ZN20QDeclarativeTextEdit11fontChangedERK5QFont @ 894 NONAME
+ _ZN20QDeclarativeTextEdit11qt_metacallEN11QMetaObject4CallEiPPv @ 895 NONAME
+ _ZN20QDeclarativeTextEdit11qt_metacastEPKc @ 896 NONAME
+ _ZN20QDeclarativeTextEdit11setReadOnlyEb @ 897 NONAME
+ _ZN20QDeclarativeTextEdit11textChangedERK7QString @ 898 NONAME
+ _ZN20QDeclarativeTextEdit11wrapChangedEb @ 899 NONAME
+ _ZN20QDeclarativeTextEdit12colorChangedERK6QColor @ 900 NONAME
+ _ZN20QDeclarativeTextEdit12drawContentsEP8QPainterRK5QRect @ 901 NONAME
+ _ZN20QDeclarativeTextEdit13keyPressEventEP9QKeyEvent @ 902 NONAME
+ _ZN20QDeclarativeTextEdit13q_textChangedEv @ 903 NONAME
+ _ZN20QDeclarativeTextEdit13setTextFormatENS_10TextFormatE @ 904 NONAME
+ _ZN20QDeclarativeTextEdit13setTextMarginEf @ 905 NONAME
+ _ZN20QDeclarativeTextEdit14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 906 NONAME
+ _ZN20QDeclarativeTextEdit14updateImgCacheERK6QRectF @ 907 NONAME
+ _ZN20QDeclarativeTextEdit15geometryChangedERK6QRectFS2_ @ 908 NONAME
+ _ZN20QDeclarativeTextEdit15keyReleaseEventEP9QKeyEvent @ 909 NONAME
+ _ZN20QDeclarativeTextEdit15mousePressEventEP24QGraphicsSceneMouseEvent @ 910 NONAME
+ _ZN20QDeclarativeTextEdit15readOnlyChangedEb @ 911 NONAME
+ _ZN20QDeclarativeTextEdit15setFocusOnPressEb @ 912 NONAME
+ _ZN20QDeclarativeTextEdit15setSelectionEndEi @ 913 NONAME
+ _ZN20QDeclarativeTextEdit16inputMethodEventEP17QInputMethodEvent @ 914 NONAME
+ _ZN20QDeclarativeTextEdit16selectionChangedEv @ 915 NONAME
+ _ZN20QDeclarativeTextEdit16setCursorVisibleEb @ 916 NONAME
+ _ZN20QDeclarativeTextEdit16staticMetaObjectE @ 917 NONAME DATA 16
+ _ZN20QDeclarativeTextEdit17componentCompleteEv @ 918 NONAME
+ _ZN20QDeclarativeTextEdit17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 919 NONAME
+ _ZN20QDeclarativeTextEdit17setCursorDelegateEP21QDeclarativeComponent @ 920 NONAME
+ _ZN20QDeclarativeTextEdit17setCursorPositionEi @ 921 NONAME
+ _ZN20QDeclarativeTextEdit17setSelectionColorERK6QColor @ 922 NONAME
+ _ZN20QDeclarativeTextEdit17setSelectionStartEi @ 923 NONAME
+ _ZN20QDeclarativeTextEdit17textFormatChangedENS_10TextFormatE @ 924 NONAME
+ _ZN20QDeclarativeTextEdit17textMarginChangedEf @ 925 NONAME
+ _ZN20QDeclarativeTextEdit18loadCursorDelegateEv @ 926 NONAME
+ _ZN20QDeclarativeTextEdit18moveCursorDelegateEv @ 927 NONAME
+ _ZN20QDeclarativeTextEdit19focusOnPressChangedEb @ 928 NONAME
+ _ZN20QDeclarativeTextEdit19getStaticMetaObjectEv @ 929 NONAME
+ _ZN20QDeclarativeTextEdit19selectionEndChangedEv @ 930 NONAME
+ _ZN20QDeclarativeTextEdit20cursorVisibleChangedEb @ 931 NONAME
+ _ZN20QDeclarativeTextEdit20setSelectedTextColorERK6QColor @ 932 NONAME
+ _ZN20QDeclarativeTextEdit21cursorDelegateChangedEv @ 933 NONAME
+ _ZN20QDeclarativeTextEdit21cursorPositionChangedEv @ 934 NONAME
+ _ZN20QDeclarativeTextEdit21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 935 NONAME
+ _ZN20QDeclarativeTextEdit21selectionColorChangedERK6QColor @ 936 NONAME
+ _ZN20QDeclarativeTextEdit21selectionStartChangedEv @ 937 NONAME
+ _ZN20QDeclarativeTextEdit22setPersistentSelectionEb @ 938 NONAME
+ _ZN20QDeclarativeTextEdit22updateSelectionMarkersEv @ 939 NONAME
+ _ZN20QDeclarativeTextEdit23setTextInteractionFlagsE6QFlagsIN2Qt19TextInteractionFlagEE @ 940 NONAME
+ _ZN20QDeclarativeTextEdit24selectedTextColorChangedERK6QColor @ 941 NONAME
+ _ZN20QDeclarativeTextEdit24verticalAlignmentChangedENS_10VAlignmentE @ 942 NONAME
+ _ZN20QDeclarativeTextEdit26horizontalAlignmentChangedENS_10HAlignmentE @ 943 NONAME
+ _ZN20QDeclarativeTextEdit26persistentSelectionChangedEb @ 944 NONAME
+ _ZN20QDeclarativeTextEdit5eventEP6QEvent @ 945 NONAME
+ _ZN20QDeclarativeTextEdit7setFontERK5QFont @ 946 NONAME
+ _ZN20QDeclarativeTextEdit7setTextERK7QString @ 947 NONAME
+ _ZN20QDeclarativeTextEdit7setWrapEb @ 948 NONAME
+ _ZN20QDeclarativeTextEdit8setColorERK6QColor @ 949 NONAME
+ _ZN20QDeclarativeTextEdit9selectAllEv @ 950 NONAME
+ _ZN20QDeclarativeTextEdit9setHAlignENS_10HAlignmentE @ 951 NONAME
+ _ZN20QDeclarativeTextEdit9setVAlignENS_10VAlignmentE @ 952 NONAME
+ _ZN20QDeclarativeTextEditC1EP16QDeclarativeItem @ 953 NONAME
+ _ZN20QDeclarativeTextEditC2EP16QDeclarativeItem @ 954 NONAME
+ _ZN20QMetaPropertyBuilder10setDynamicEb @ 955 NONAME
+ _ZN20QMetaPropertyBuilder11setEditableEb @ 956 NONAME
+ _ZN20QMetaPropertyBuilder11setReadableEb @ 957 NONAME
+ _ZN20QMetaPropertyBuilder11setWritableEb @ 958 NONAME
+ _ZN20QMetaPropertyBuilder12setStdCppSetEb @ 959 NONAME
+ _ZN20QMetaPropertyBuilder13setDesignableEb @ 960 NONAME
+ _ZN20QMetaPropertyBuilder13setEnumOrFlagEb @ 961 NONAME
+ _ZN20QMetaPropertyBuilder13setResettableEb @ 962 NONAME
+ _ZN20QMetaPropertyBuilder13setScriptableEb @ 963 NONAME
+ _ZN20QMetaPropertyBuilder15setNotifySignalERK18QMetaMethodBuilder @ 964 NONAME
+ _ZN20QMetaPropertyBuilder18removeNotifySignalEv @ 965 NONAME
+ _ZN20QMetaPropertyBuilder7setUserEb @ 966 NONAME
+ _ZN20QMetaPropertyBuilder9setStoredEb @ 967 NONAME
+ _ZN21QDeclarativeComponent11beginCreateEP19QDeclarativeContext @ 968 NONAME
+ _ZN21QDeclarativeComponent11qt_metacallEN11QMetaObject4CallEiPPv @ 969 NONAME
+ _ZN21QDeclarativeComponent11qt_metacastEPKc @ 970 NONAME
+ _ZN21QDeclarativeComponent12createObjectEv @ 971 NONAME
+ _ZN21QDeclarativeComponent13statusChangedENS_6StatusE @ 972 NONAME
+ _ZN21QDeclarativeComponent14completeCreateEv @ 973 NONAME
+ _ZN21QDeclarativeComponent15progressChangedEf @ 974 NONAME
+ _ZN21QDeclarativeComponent16staticMetaObjectE @ 975 NONAME DATA 16
+ _ZN21QDeclarativeComponent19getStaticMetaObjectEv @ 976 NONAME
+ _ZN21QDeclarativeComponent21qmlAttachedPropertiesEP7QObject @ 977 NONAME
+ _ZN21QDeclarativeComponent6createEP19QDeclarativeContext @ 978 NONAME
+ _ZN21QDeclarativeComponent7loadUrlERK4QUrl @ 979 NONAME
+ _ZN21QDeclarativeComponent7setDataERK10QByteArrayRK4QUrl @ 980 NONAME
+ _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineP24QDeclarativeCompiledDataiiP7QObject @ 981 NONAME
+ _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineP7QObject @ 982 NONAME
+ _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineRK4QUrlP7QObject @ 983 NONAME
+ _ZN21QDeclarativeComponentC1EP18QDeclarativeEngineRK7QStringP7QObject @ 984 NONAME
+ _ZN21QDeclarativeComponentC1EP7QObject @ 985 NONAME
+ _ZN21QDeclarativeComponentC1ER28QDeclarativeComponentPrivateP7QObject @ 986 NONAME
+ _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineP24QDeclarativeCompiledDataiiP7QObject @ 987 NONAME
+ _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineP7QObject @ 988 NONAME
+ _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineRK4QUrlP7QObject @ 989 NONAME
+ _ZN21QDeclarativeComponentC2EP18QDeclarativeEngineRK7QStringP7QObject @ 990 NONAME
+ _ZN21QDeclarativeComponentC2EP7QObject @ 991 NONAME
+ _ZN21QDeclarativeComponentC2ER28QDeclarativeComponentPrivateP7QObject @ 992 NONAME
+ _ZN21QDeclarativeComponentD0Ev @ 993 NONAME
+ _ZN21QDeclarativeComponentD1Ev @ 994 NONAME
+ _ZN21QDeclarativeComponentD2Ev @ 995 NONAME
+ _ZN21QDeclarativeDomImportC1ERKS_ @ 996 NONAME
+ _ZN21QDeclarativeDomImportC1Ev @ 997 NONAME
+ _ZN21QDeclarativeDomImportC2ERKS_ @ 998 NONAME
+ _ZN21QDeclarativeDomImportC2Ev @ 999 NONAME
+ _ZN21QDeclarativeDomImportD1Ev @ 1000 NONAME
+ _ZN21QDeclarativeDomImportD2Ev @ 1001 NONAME
+ _ZN21QDeclarativeDomImportaSERKS_ @ 1002 NONAME
+ _ZN21QDeclarativeDomObjectC1ERKS_ @ 1003 NONAME
+ _ZN21QDeclarativeDomObjectC1Ev @ 1004 NONAME
+ _ZN21QDeclarativeDomObjectC2ERKS_ @ 1005 NONAME
+ _ZN21QDeclarativeDomObjectC2Ev @ 1006 NONAME
+ _ZN21QDeclarativeDomObjectD1Ev @ 1007 NONAME
+ _ZN21QDeclarativeDomObjectD2Ev @ 1008 NONAME
+ _ZN21QDeclarativeDomObjectaSERKS_ @ 1009 NONAME
+ _ZN21QDeclarativeFlickable10flickEndedEv @ 1010 NONAME
+ _ZN21QDeclarativeFlickable10timerEventEP11QTimerEvent @ 1011 NONAME
+ _ZN21QDeclarativeFlickable10wheelEventEP24QGraphicsSceneWheelEvent @ 1012 NONAME
+ _ZN21QDeclarativeFlickable11cancelFlickEv @ 1013 NONAME
+ _ZN21QDeclarativeFlickable11pageChangedEv @ 1014 NONAME
+ _ZN21QDeclarativeFlickable11qt_metacallEN11QMetaObject4CallEiPPv @ 1015 NONAME
+ _ZN21QDeclarativeFlickable11qt_metacastEPKc @ 1016 NONAME
+ _ZN21QDeclarativeFlickable11setContentXEf @ 1017 NONAME
+ _ZN21QDeclarativeFlickable11setContentYEf @ 1018 NONAME
+ _ZN21QDeclarativeFlickable11visibleAreaEv @ 1019 NONAME
+ _ZN21QDeclarativeFlickable12flickStartedEv @ 1020 NONAME
+ _ZN21QDeclarativeFlickable12setOverShootEb @ 1021 NONAME
+ _ZN21QDeclarativeFlickable13flickableDataEv @ 1022 NONAME
+ _ZN21QDeclarativeFlickable13movementEndedEv @ 1023 NONAME
+ _ZN21QDeclarativeFlickable13movingChangedEv @ 1024 NONAME
+ _ZN21QDeclarativeFlickable13setPressDelayEi @ 1025 NONAME
+ _ZN21QDeclarativeFlickable13viewportMovedEv @ 1026 NONAME
+ _ZN21QDeclarativeFlickable14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 1027 NONAME
+ _ZN21QDeclarativeFlickable14movementEndingEv @ 1028 NONAME
+ _ZN21QDeclarativeFlickable14sendMouseEventEP24QGraphicsSceneMouseEvent @ 1029 NONAME
+ _ZN21QDeclarativeFlickable14setInteractiveEb @ 1030 NONAME
+ _ZN21QDeclarativeFlickable15contentXChangedEv @ 1031 NONAME
+ _ZN21QDeclarativeFlickable15contentYChangedEv @ 1032 NONAME
+ _ZN21QDeclarativeFlickable15flickingChangedEv @ 1033 NONAME
+ _ZN21QDeclarativeFlickable15geometryChangedERK6QRectFS2_ @ 1034 NONAME
+ _ZN21QDeclarativeFlickable15mousePressEventEP24QGraphicsSceneMouseEvent @ 1035 NONAME
+ _ZN21QDeclarativeFlickable15movementStartedEv @ 1036 NONAME
+ _ZN21QDeclarativeFlickable15setContentWidthEf @ 1037 NONAME
+ _ZN21QDeclarativeFlickable16movementStartingEv @ 1038 NONAME
+ _ZN21QDeclarativeFlickable16overShootChangedEv @ 1039 NONAME
+ _ZN21QDeclarativeFlickable16sceneEventFilterEP13QGraphicsItemP6QEvent @ 1040 NONAME
+ _ZN21QDeclarativeFlickable16setContentHeightEf @ 1041 NONAME
+ _ZN21QDeclarativeFlickable16staticMetaObjectE @ 1042 NONAME DATA 16
+ _ZN21QDeclarativeFlickable17flickableChildrenEv @ 1043 NONAME
+ _ZN21QDeclarativeFlickable17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 1044 NONAME
+ _ZN21QDeclarativeFlickable17pressDelayChangedEv @ 1045 NONAME
+ _ZN21QDeclarativeFlickable17setFlickDirectionENS_14FlickDirectionE @ 1046 NONAME
+ _ZN21QDeclarativeFlickable18interactiveChangedEv @ 1047 NONAME
+ _ZN21QDeclarativeFlickable19contentWidthChangedEv @ 1048 NONAME
+ _ZN21QDeclarativeFlickable19getStaticMetaObjectEv @ 1049 NONAME
+ _ZN21QDeclarativeFlickable19isAtBoundaryChangedEv @ 1050 NONAME
+ _ZN21QDeclarativeFlickable20contentHeightChangedEv @ 1051 NONAME
+ _ZN21QDeclarativeFlickable20setFlickDecelerationEf @ 1052 NONAME
+ _ZN21QDeclarativeFlickable21flickDirectionChangedEv @ 1053 NONAME
+ _ZN21QDeclarativeFlickable23setMaximumFlickVelocityEf @ 1054 NONAME
+ _ZN21QDeclarativeFlickable23verticalVelocityChangedEv @ 1055 NONAME
+ _ZN21QDeclarativeFlickable24flickDecelerationChangedEv @ 1056 NONAME
+ _ZN21QDeclarativeFlickable25horizontalVelocityChangedEv @ 1057 NONAME
+ _ZN21QDeclarativeFlickable27maximumFlickVelocityChangedEv @ 1058 NONAME
+ _ZN21QDeclarativeFlickable6tickedEv @ 1059 NONAME
+ _ZN21QDeclarativeFlickable8viewportEv @ 1060 NONAME
+ _ZN21QDeclarativeFlickableC1EP16QDeclarativeItem @ 1061 NONAME
+ _ZN21QDeclarativeFlickableC1ER28QDeclarativeFlickablePrivateP16QDeclarativeItem @ 1062 NONAME
+ _ZN21QDeclarativeFlickableC2EP16QDeclarativeItem @ 1063 NONAME
+ _ZN21QDeclarativeFlickableC2ER28QDeclarativeFlickablePrivateP16QDeclarativeItem @ 1064 NONAME
+ _ZN21QDeclarativeFlickableD0Ev @ 1065 NONAME
+ _ZN21QDeclarativeFlickableD1Ev @ 1066 NONAME
+ _ZN21QDeclarativeFlickableD2Ev @ 1067 NONAME
+ _ZN21QDeclarativeImageBase11qt_metacallEN11QMetaObject4CallEiPPv @ 1068 NONAME
+ _ZN21QDeclarativeImageBase11qt_metacastEPKc @ 1069 NONAME
+ _ZN21QDeclarativeImageBase12pixmapChangeEv @ 1070 NONAME
+ _ZN21QDeclarativeImageBase13setSourceSizeERK5QSize @ 1071 NONAME
+ _ZN21QDeclarativeImageBase13sourceChangedERK4QUrl @ 1072 NONAME
+ _ZN21QDeclarativeImageBase13statusChangedENS_6StatusE @ 1073 NONAME
+ _ZN21QDeclarativeImageBase15progressChangedEf @ 1074 NONAME
+ _ZN21QDeclarativeImageBase15requestFinishedEv @ 1075 NONAME
+ _ZN21QDeclarativeImageBase15requestProgressExx @ 1076 NONAME
+ _ZN21QDeclarativeImageBase15setAsynchronousEb @ 1077 NONAME
+ _ZN21QDeclarativeImageBase16staticMetaObjectE @ 1078 NONAME DATA 16
+ _ZN21QDeclarativeImageBase17componentCompleteEv @ 1079 NONAME
+ _ZN21QDeclarativeImageBase17sourceSizeChangedEv @ 1080 NONAME
+ _ZN21QDeclarativeImageBase19asynchronousChangedEv @ 1081 NONAME
+ _ZN21QDeclarativeImageBase19getStaticMetaObjectEv @ 1082 NONAME
+ _ZN21QDeclarativeImageBase4loadEv @ 1083 NONAME
+ _ZN21QDeclarativeImageBase9setSourceERK4QUrl @ 1084 NONAME
+ _ZN21QDeclarativeImageBaseC1ER28QDeclarativeImageBasePrivateP16QDeclarativeItem @ 1085 NONAME
+ _ZN21QDeclarativeImageBaseC2ER28QDeclarativeImageBasePrivateP16QDeclarativeItem @ 1086 NONAME
+ _ZN21QDeclarativeImageBaseD0Ev @ 1087 NONAME
+ _ZN21QDeclarativeImageBaseD1Ev @ 1088 NONAME
+ _ZN21QDeclarativeImageBaseD2Ev @ 1089 NONAME
+ _ZN21QDeclarativeListModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1090 NONAME
+ _ZN21QDeclarativeListModel11qt_metacastEPKc @ 1091 NONAME
+ _ZN21QDeclarativeListModel11setPropertyEiRK7QStringRK8QVariant @ 1092 NONAME
+ _ZN21QDeclarativeListModel12countChangedEv @ 1093 NONAME
+ _ZN21QDeclarativeListModel16staticMetaObjectE @ 1094 NONAME DATA 16
+ _ZN21QDeclarativeListModel19getStaticMetaObjectEv @ 1095 NONAME
+ _ZN21QDeclarativeListModel3setEiRK12QScriptValue @ 1096 NONAME
+ _ZN21QDeclarativeListModel4moveEiii @ 1097 NONAME
+ _ZN21QDeclarativeListModel4syncEv @ 1098 NONAME
+ _ZN21QDeclarativeListModel5agentEv @ 1099 NONAME
+ _ZN21QDeclarativeListModel5clearEv @ 1100 NONAME
+ _ZN21QDeclarativeListModel6appendERK12QScriptValue @ 1101 NONAME
+ _ZN21QDeclarativeListModel6insertEiRK12QScriptValue @ 1102 NONAME
+ _ZN21QDeclarativeListModel6removeEi @ 1103 NONAME
+ _ZN21QDeclarativeListModel7flattenEv @ 1104 NONAME
+ _ZN21QDeclarativeListModelC1EP7QObject @ 1105 NONAME
+ _ZN21QDeclarativeListModelC1EbP7QObject @ 1106 NONAME
+ _ZN21QDeclarativeListModelC2EP7QObject @ 1107 NONAME
+ _ZN21QDeclarativeListModelC2EbP7QObject @ 1108 NONAME
+ _ZN21QDeclarativeListModelD0Ev @ 1109 NONAME
+ _ZN21QDeclarativeListModelD1Ev @ 1110 NONAME
+ _ZN21QDeclarativeListModelD2Ev @ 1111 NONAME
+ _ZN21QDeclarativeMouseArea10sceneEventEP6QEvent @ 1112 NONAME
+ _ZN21QDeclarativeMouseArea10setEnabledEb @ 1113 NONAME
+ _ZN21QDeclarativeMouseArea10setHoveredEb @ 1114 NONAME
+ _ZN21QDeclarativeMouseArea10setPressedEb @ 1115 NONAME
+ _ZN21QDeclarativeMouseArea10timerEventEP11QTimerEvent @ 1116 NONAME
+ _ZN21QDeclarativeMouseArea11qt_metacallEN11QMetaObject4CallEiPPv @ 1117 NONAME
+ _ZN21QDeclarativeMouseArea11qt_metacastEPKc @ 1118 NONAME
+ _ZN21QDeclarativeMouseArea12pressAndHoldEP22QDeclarativeMouseEvent @ 1119 NONAME
+ _ZN21QDeclarativeMouseArea13doubleClickedEP22QDeclarativeMouseEvent @ 1120 NONAME
+ _ZN21QDeclarativeMouseArea14enabledChangedEv @ 1121 NONAME
+ _ZN21QDeclarativeMouseArea14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 1122 NONAME
+ _ZN21QDeclarativeMouseArea14hoveredChangedEv @ 1123 NONAME
+ _ZN21QDeclarativeMouseArea14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 1124 NONAME
+ _ZN21QDeclarativeMouseArea14pressedChangedEv @ 1125 NONAME
+ _ZN21QDeclarativeMouseArea15hoverEnterEventEP24QGraphicsSceneHoverEvent @ 1126 NONAME
+ _ZN21QDeclarativeMouseArea15hoverLeaveEventEP24QGraphicsSceneHoverEvent @ 1127 NONAME
+ _ZN21QDeclarativeMouseArea15mousePressEventEP24QGraphicsSceneMouseEvent @ 1128 NONAME
+ _ZN21QDeclarativeMouseArea15positionChangedEP22QDeclarativeMouseEvent @ 1129 NONAME
+ _ZN21QDeclarativeMouseArea16staticMetaObjectE @ 1130 NONAME DATA 16
+ _ZN21QDeclarativeMouseArea17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 1131 NONAME
+ _ZN21QDeclarativeMouseArea18setAcceptedButtonsE6QFlagsIN2Qt11MouseButtonEE @ 1132 NONAME
+ _ZN21QDeclarativeMouseArea19getStaticMetaObjectEv @ 1133 NONAME
+ _ZN21QDeclarativeMouseArea21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 1134 NONAME
+ _ZN21QDeclarativeMouseArea22acceptedButtonsChangedEv @ 1135 NONAME
+ _ZN21QDeclarativeMouseArea4dragEv @ 1136 NONAME
+ _ZN21QDeclarativeMouseArea6exitedEv @ 1137 NONAME
+ _ZN21QDeclarativeMouseArea7clickedEP22QDeclarativeMouseEvent @ 1138 NONAME
+ _ZN21QDeclarativeMouseArea7enteredEv @ 1139 NONAME
+ _ZN21QDeclarativeMouseArea7pressedEP22QDeclarativeMouseEvent @ 1140 NONAME
+ _ZN21QDeclarativeMouseArea8releasedEP22QDeclarativeMouseEvent @ 1141 NONAME
+ _ZN21QDeclarativeMouseAreaC1EP16QDeclarativeItem @ 1142 NONAME
+ _ZN21QDeclarativeMouseAreaC2EP16QDeclarativeItem @ 1143 NONAME
+ _ZN21QDeclarativeMouseAreaD0Ev @ 1144 NONAME
+ _ZN21QDeclarativeMouseAreaD1Ev @ 1145 NONAME
+ _ZN21QDeclarativeMouseAreaD2Ev @ 1146 NONAME
+ _ZN21QDeclarativePathCubic11qt_metacallEN11QMetaObject4CallEiPPv @ 1147 NONAME
+ _ZN21QDeclarativePathCubic11qt_metacastEPKc @ 1148 NONAME
+ _ZN21QDeclarativePathCubic12setControl1XEf @ 1149 NONAME
+ _ZN21QDeclarativePathCubic12setControl1YEf @ 1150 NONAME
+ _ZN21QDeclarativePathCubic12setControl2XEf @ 1151 NONAME
+ _ZN21QDeclarativePathCubic12setControl2YEf @ 1152 NONAME
+ _ZN21QDeclarativePathCubic16staticMetaObjectE @ 1153 NONAME DATA 16
+ _ZN21QDeclarativePathCubic19getStaticMetaObjectEv @ 1154 NONAME
+ _ZN21QDeclarativePathCubic9addToPathER12QPainterPath @ 1155 NONAME
+ _ZN21QDeclarativeRectangle11qt_metacallEN11QMetaObject4CallEiPPv @ 1156 NONAME
+ _ZN21QDeclarativeRectangle11qt_metacastEPKc @ 1157 NONAME
+ _ZN21QDeclarativeRectangle11setGradientEP20QDeclarativeGradient @ 1158 NONAME
+ _ZN21QDeclarativeRectangle12colorChangedEv @ 1159 NONAME
+ _ZN21QDeclarativeRectangle13radiusChangedEv @ 1160 NONAME
+ _ZN21QDeclarativeRectangle16staticMetaObjectE @ 1161 NONAME DATA 16
+ _ZN21QDeclarativeRectangle19generateRoundedRectEv @ 1162 NONAME
+ _ZN21QDeclarativeRectangle19getStaticMetaObjectEv @ 1163 NONAME
+ _ZN21QDeclarativeRectangle20generateBorderedRectEv @ 1164 NONAME
+ _ZN21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1165 NONAME
+ _ZN21QDeclarativeRectangle6borderEv @ 1166 NONAME
+ _ZN21QDeclarativeRectangle8doUpdateEv @ 1167 NONAME
+ _ZN21QDeclarativeRectangle8drawRectER8QPainter @ 1168 NONAME
+ _ZN21QDeclarativeRectangle8setColorERK6QColor @ 1169 NONAME
+ _ZN21QDeclarativeRectangle9setRadiusEf @ 1170 NONAME
+ _ZN21QDeclarativeRectangleC1EP16QDeclarativeItem @ 1171 NONAME
+ _ZN21QDeclarativeRectangleC2EP16QDeclarativeItem @ 1172 NONAME
+ _ZN21QDeclarativeScaleGrid11qt_metacallEN11QMetaObject4CallEiPPv @ 1173 NONAME
+ _ZN21QDeclarativeScaleGrid11qt_metacastEPKc @ 1174 NONAME
+ _ZN21QDeclarativeScaleGrid13borderChangedEv @ 1175 NONAME
+ _ZN21QDeclarativeScaleGrid16staticMetaObjectE @ 1176 NONAME DATA 16
+ _ZN21QDeclarativeScaleGrid19getStaticMetaObjectEv @ 1177 NONAME
+ _ZN21QDeclarativeScaleGrid6setTopEi @ 1178 NONAME
+ _ZN21QDeclarativeScaleGrid7setLeftEi @ 1179 NONAME
+ _ZN21QDeclarativeScaleGrid8setRightEi @ 1180 NONAME
+ _ZN21QDeclarativeScaleGrid9setBottomEi @ 1181 NONAME
+ _ZN21QDeclarativeScaleGridC1EP7QObject @ 1182 NONAME
+ _ZN21QDeclarativeScaleGridC2EP7QObject @ 1183 NONAME
+ _ZN21QDeclarativeScaleGridD0Ev @ 1184 NONAME
+ _ZN21QDeclarativeScaleGridD1Ev @ 1185 NONAME
+ _ZN21QDeclarativeScaleGridD2Ev @ 1186 NONAME
+ _ZN21QDeclarativeTextInput10moveCursorEv @ 1187 NONAME
+ _ZN21QDeclarativeTextInput10updateRectERK5QRect @ 1188 NONAME
+ _ZN21QDeclarativeTextInput10updateSizeEb @ 1189 NONAME
+ _ZN21QDeclarativeTextInput11fontChangedERK5QFont @ 1190 NONAME
+ _ZN21QDeclarativeTextInput11qt_metacallEN11QMetaObject4CallEiPPv @ 1191 NONAME
+ _ZN21QDeclarativeTextInput11qt_metacastEPKc @ 1192 NONAME
+ _ZN21QDeclarativeTextInput11setEchoModeENS_8EchoModeE @ 1193 NONAME
+ _ZN21QDeclarativeTextInput11setReadOnlyEb @ 1194 NONAME
+ _ZN21QDeclarativeTextInput11textChangedEv @ 1195 NONAME
+ _ZN21QDeclarativeTextInput12colorChangedERK6QColor @ 1196 NONAME
+ _ZN21QDeclarativeTextInput12createCursorEv @ 1197 NONAME
+ _ZN21QDeclarativeTextInput12drawContentsEP8QPainterRK5QRect @ 1198 NONAME
+ _ZN21QDeclarativeTextInput12setInputMaskERK7QString @ 1199 NONAME
+ _ZN21QDeclarativeTextInput12setMaxLengthEi @ 1200 NONAME
+ _ZN21QDeclarativeTextInput12setValidatorEP10QValidator @ 1201 NONAME
+ _ZN21QDeclarativeTextInput13keyPressEventEP9QKeyEvent @ 1202 NONAME
+ _ZN21QDeclarativeTextInput13q_textChangedEv @ 1203 NONAME
+ _ZN21QDeclarativeTextInput15echoModeChangedENS_8EchoModeE @ 1204 NONAME
+ _ZN21QDeclarativeTextInput15geometryChangedERK6QRectFS2_ @ 1205 NONAME
+ _ZN21QDeclarativeTextInput15mousePressEventEP24QGraphicsSceneMouseEvent @ 1206 NONAME
+ _ZN21QDeclarativeTextInput15readOnlyChangedEb @ 1207 NONAME
+ _ZN21QDeclarativeTextInput15setFocusOnPressEb @ 1208 NONAME
+ _ZN21QDeclarativeTextInput15setSelectionEndEi @ 1209 NONAME
+ _ZN21QDeclarativeTextInput16cursorPosChangedEv @ 1210 NONAME
+ _ZN21QDeclarativeTextInput16inputMaskChangedERK7QString @ 1211 NONAME
+ _ZN21QDeclarativeTextInput16selectionChangedEv @ 1212 NONAME
+ _ZN21QDeclarativeTextInput16setCursorVisibleEb @ 1213 NONAME
+ _ZN21QDeclarativeTextInput16staticMetaObjectE @ 1214 NONAME DATA 16
+ _ZN21QDeclarativeTextInput16validatorChangedEv @ 1215 NONAME
+ _ZN21QDeclarativeTextInput17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 1216 NONAME
+ _ZN21QDeclarativeTextInput17setCursorDelegateEP21QDeclarativeComponent @ 1217 NONAME
+ _ZN21QDeclarativeTextInput17setCursorPositionEi @ 1218 NONAME
+ _ZN21QDeclarativeTextInput17setSelectionColorERK6QColor @ 1219 NONAME
+ _ZN21QDeclarativeTextInput17setSelectionStartEi @ 1220 NONAME
+ _ZN21QDeclarativeTextInput19focusOnPressChangedEb @ 1221 NONAME
+ _ZN21QDeclarativeTextInput19getStaticMetaObjectEv @ 1222 NONAME
+ _ZN21QDeclarativeTextInput19selectedTextChangedEv @ 1223 NONAME
+ _ZN21QDeclarativeTextInput19selectionEndChangedEv @ 1224 NONAME
+ _ZN21QDeclarativeTextInput20cursorVisibleChangedEb @ 1225 NONAME
+ _ZN21QDeclarativeTextInput20maximumLengthChangedEi @ 1226 NONAME
+ _ZN21QDeclarativeTextInput20setSelectedTextColorERK6QColor @ 1227 NONAME
+ _ZN21QDeclarativeTextInput21cursorDelegateChangedEv @ 1228 NONAME
+ _ZN21QDeclarativeTextInput21cursorPositionChangedEv @ 1229 NONAME
+ _ZN21QDeclarativeTextInput21selectionColorChangedERK6QColor @ 1230 NONAME
+ _ZN21QDeclarativeTextInput21selectionStartChangedEv @ 1231 NONAME
+ _ZN21QDeclarativeTextInput22acceptableInputChangedEv @ 1232 NONAME
+ _ZN21QDeclarativeTextInput24selectedTextColorChangedERK6QColor @ 1233 NONAME
+ _ZN21QDeclarativeTextInput26horizontalAlignmentChangedENS_10HAlignmentE @ 1234 NONAME
+ _ZN21QDeclarativeTextInput5eventEP6QEvent @ 1235 NONAME
+ _ZN21QDeclarativeTextInput6xToPosEi @ 1236 NONAME
+ _ZN21QDeclarativeTextInput7setFontERK5QFont @ 1237 NONAME
+ _ZN21QDeclarativeTextInput7setTextERK7QString @ 1238 NONAME
+ _ZN21QDeclarativeTextInput8acceptedEv @ 1239 NONAME
+ _ZN21QDeclarativeTextInput8setColorERK6QColor @ 1240 NONAME
+ _ZN21QDeclarativeTextInput9selectAllEv @ 1241 NONAME
+ _ZN21QDeclarativeTextInput9setHAlignENS_10HAlignmentE @ 1242 NONAME
+ _ZN21QDeclarativeTextInputC1EP16QDeclarativeItem @ 1243 NONAME
+ _ZN21QDeclarativeTextInputC2EP16QDeclarativeItem @ 1244 NONAME
+ _ZN21QDeclarativeTextInputD0Ev @ 1245 NONAME
+ _ZN21QDeclarativeTextInputD1Ev @ 1246 NONAME
+ _ZN21QDeclarativeTextInputD2Ev @ 1247 NONAME
+ _ZN21QDeclarativeTranslate11qt_metacallEN11QMetaObject4CallEiPPv @ 1248 NONAME
+ _ZN21QDeclarativeTranslate11qt_metacastEPKc @ 1249 NONAME
+ _ZN21QDeclarativeTranslate15positionChangedEv @ 1250 NONAME
+ _ZN21QDeclarativeTranslate16staticMetaObjectE @ 1251 NONAME DATA 16
+ _ZN21QDeclarativeTranslate19getStaticMetaObjectEv @ 1252 NONAME
+ _ZN21QDeclarativeTranslate4setXEf @ 1253 NONAME
+ _ZN21QDeclarativeTranslate4setYEf @ 1254 NONAME
+ _ZN21QDeclarativeTranslateC1EP7QObject @ 1255 NONAME
+ _ZN21QDeclarativeTranslateC2EP7QObject @ 1256 NONAME
+ _ZN21QDeclarativeTranslateD0Ev @ 1257 NONAME
+ _ZN21QDeclarativeTranslateD1Ev @ 1258 NONAME
+ _ZN21QDeclarativeTranslateD2Ev @ 1259 NONAME
+ _ZN21QDeclarativeValueType11qt_metacallEN11QMetaObject4CallEiPPv @ 1260 NONAME
+ _ZN21QDeclarativeValueType11qt_metacastEPKc @ 1261 NONAME
+ _ZN21QDeclarativeValueType16staticMetaObjectE @ 1262 NONAME DATA 16
+ _ZN21QDeclarativeValueType19getStaticMetaObjectEv @ 1263 NONAME
+ _ZN21QDeclarativeValueTypeC2EP7QObject @ 1264 NONAME
+ _ZN22QDeclarativeDebugQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 1265 NONAME
+ _ZN22QDeclarativeDebugQuery11qt_metacastEPKc @ 1266 NONAME
+ _ZN22QDeclarativeDebugQuery12stateChangedENS_5StateE @ 1267 NONAME
+ _ZN22QDeclarativeDebugQuery16staticMetaObjectE @ 1268 NONAME DATA 16
+ _ZN22QDeclarativeDebugQuery19getStaticMetaObjectEv @ 1269 NONAME
+ _ZN22QDeclarativeDebugQuery8setStateENS_5StateE @ 1270 NONAME
+ _ZN22QDeclarativeDebugQueryC1EP7QObject @ 1271 NONAME
+ _ZN22QDeclarativeDebugQueryC2EP7QObject @ 1272 NONAME
+ _ZN22QDeclarativeDebugWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 1273 NONAME
+ _ZN22QDeclarativeDebugWatch11qt_metacastEPKc @ 1274 NONAME
+ _ZN22QDeclarativeDebugWatch12stateChangedENS_5StateE @ 1275 NONAME
+ _ZN22QDeclarativeDebugWatch12valueChangedERK10QByteArrayRK8QVariant @ 1276 NONAME
+ _ZN22QDeclarativeDebugWatch16staticMetaObjectE @ 1277 NONAME DATA 16
+ _ZN22QDeclarativeDebugWatch19getStaticMetaObjectEv @ 1278 NONAME
+ _ZN22QDeclarativeDebugWatch8setStateENS_5StateE @ 1279 NONAME
+ _ZN22QDeclarativeDebugWatchC1EP7QObject @ 1280 NONAME
+ _ZN22QDeclarativeDebugWatchC2EP7QObject @ 1281 NONAME
+ _ZN22QDeclarativeDebugWatchD0Ev @ 1282 NONAME
+ _ZN22QDeclarativeDebugWatchD1Ev @ 1283 NONAME
+ _ZN22QDeclarativeDebugWatchD2Ev @ 1284 NONAME
+ _ZN22QDeclarativeExpression10__q_notifyEv @ 1285 NONAME
+ _ZN22QDeclarativeExpression10clearErrorEv @ 1286 NONAME
+ _ZN22QDeclarativeExpression11qt_metacallEN11QMetaObject4CallEiPPv @ 1287 NONAME
+ _ZN22QDeclarativeExpression11qt_metacastEPKc @ 1288 NONAME
+ _ZN22QDeclarativeExpression12valueChangedEv @ 1289 NONAME
+ _ZN22QDeclarativeExpression13setExpressionERK7QString @ 1290 NONAME
+ _ZN22QDeclarativeExpression16staticMetaObjectE @ 1291 NONAME DATA 16
+ _ZN22QDeclarativeExpression17setSourceLocationERK7QStringi @ 1292 NONAME
+ _ZN22QDeclarativeExpression19getStaticMetaObjectEv @ 1293 NONAME
+ _ZN22QDeclarativeExpression23setNotifyOnValueChangedEb @ 1294 NONAME
+ _ZN22QDeclarativeExpression5valueEPb @ 1295 NONAME
+ _ZN22QDeclarativeExpressionC1EP19QDeclarativeContextRK7QStringP7QObject @ 1296 NONAME
+ _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataPvP20QDeclarativeRefCountP7QObjectRK7QStringiR29QDeclarativeExpressionPrivate @ 1297 NONAME
+ _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataRK7QStringP7QObject @ 1298 NONAME
+ _ZN22QDeclarativeExpressionC1EP23QDeclarativeContextDataRK7QStringP7QObjectR29QDeclarativeExpressionPrivate @ 1299 NONAME
+ _ZN22QDeclarativeExpressionC1Ev @ 1300 NONAME
+ _ZN22QDeclarativeExpressionC2EP19QDeclarativeContextRK7QStringP7QObject @ 1301 NONAME
+ _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataPvP20QDeclarativeRefCountP7QObjectRK7QStringiR29QDeclarativeExpressionPrivate @ 1302 NONAME
+ _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataRK7QStringP7QObject @ 1303 NONAME
+ _ZN22QDeclarativeExpressionC2EP23QDeclarativeContextDataRK7QStringP7QObjectR29QDeclarativeExpressionPrivate @ 1304 NONAME
+ _ZN22QDeclarativeExpressionC2Ev @ 1305 NONAME
+ _ZN22QDeclarativeExpressionD0Ev @ 1306 NONAME
+ _ZN22QDeclarativeExpressionD1Ev @ 1307 NONAME
+ _ZN22QDeclarativeExpressionD2Ev @ 1308 NONAME
+ _ZN22QDeclarativeFocusPanel10sceneEventEP6QEvent @ 1309 NONAME
+ _ZN22QDeclarativeFocusPanel11qt_metacallEN11QMetaObject4CallEiPPv @ 1310 NONAME
+ _ZN22QDeclarativeFocusPanel11qt_metacastEPKc @ 1311 NONAME
+ _ZN22QDeclarativeFocusPanel13activeChangedEv @ 1312 NONAME
+ _ZN22QDeclarativeFocusPanel16staticMetaObjectE @ 1313 NONAME DATA 16
+ _ZN22QDeclarativeFocusPanel19getStaticMetaObjectEv @ 1314 NONAME
+ _ZN22QDeclarativeFocusPanelC1EP16QDeclarativeItem @ 1315 NONAME
+ _ZN22QDeclarativeFocusPanelC2EP16QDeclarativeItem @ 1316 NONAME
+ _ZN22QDeclarativeFocusPanelD0Ev @ 1317 NONAME
+ _ZN22QDeclarativeFocusPanelD1Ev @ 1318 NONAME
+ _ZN22QDeclarativeFocusPanelD2Ev @ 1319 NONAME
+ _ZN22QDeclarativeFocusScope11qt_metacallEN11QMetaObject4CallEiPPv @ 1320 NONAME
+ _ZN22QDeclarativeFocusScope11qt_metacastEPKc @ 1321 NONAME
+ _ZN22QDeclarativeFocusScope16staticMetaObjectE @ 1322 NONAME DATA 16
+ _ZN22QDeclarativeFocusScope19getStaticMetaObjectEv @ 1323 NONAME
+ _ZN22QDeclarativeFocusScopeC1EP16QDeclarativeItem @ 1324 NONAME
+ _ZN22QDeclarativeFocusScopeC2EP16QDeclarativeItem @ 1325 NONAME
+ _ZN22QDeclarativeFocusScopeD0Ev @ 1326 NONAME
+ _ZN22QDeclarativeFocusScopeD1Ev @ 1327 NONAME
+ _ZN22QDeclarativeFocusScopeD2Ev @ 1328 NONAME
+ _ZN22QDeclarativeFontLoader11nameChangedEv @ 1329 NONAME
+ _ZN22QDeclarativeFontLoader11qt_metacallEN11QMetaObject4CallEiPPv @ 1330 NONAME
+ _ZN22QDeclarativeFontLoader11qt_metacastEPKc @ 1331 NONAME
+ _ZN22QDeclarativeFontLoader13replyFinishedEv @ 1332 NONAME
+ _ZN22QDeclarativeFontLoader13statusChangedEv @ 1333 NONAME
+ _ZN22QDeclarativeFontLoader16staticMetaObjectE @ 1334 NONAME DATA 16
+ _ZN22QDeclarativeFontLoader19getStaticMetaObjectEv @ 1335 NONAME
+ _ZN22QDeclarativeFontLoader7setNameERK7QString @ 1336 NONAME
+ _ZN22QDeclarativeFontLoader9setSourceERK4QUrl @ 1337 NONAME
+ _ZN22QDeclarativeFontLoaderC1EP7QObject @ 1338 NONAME
+ _ZN22QDeclarativeFontLoaderC2EP7QObject @ 1339 NONAME
+ _ZN22QDeclarativeFontLoaderD0Ev @ 1340 NONAME
+ _ZN22QDeclarativeFontLoaderD1Ev @ 1341 NONAME
+ _ZN22QDeclarativeFontLoaderD2Ev @ 1342 NONAME
+ _ZN22QDeclarativeStateGroup10classBeginEv @ 1343 NONAME
+ _ZN22QDeclarativeStateGroup11qt_metacallEN11QMetaObject4CallEiPPv @ 1344 NONAME
+ _ZN22QDeclarativeStateGroup11qt_metacastEPKc @ 1345 NONAME
+ _ZN22QDeclarativeStateGroup11removeStateEP17QDeclarativeState @ 1346 NONAME
+ _ZN22QDeclarativeStateGroup12stateChangedERK7QString @ 1347 NONAME
+ _ZN22QDeclarativeStateGroup14statesPropertyEv @ 1348 NONAME
+ _ZN22QDeclarativeStateGroup15updateAutoStateEv @ 1349 NONAME
+ _ZN22QDeclarativeStateGroup16staticMetaObjectE @ 1350 NONAME DATA 16
+ _ZN22QDeclarativeStateGroup17componentCompleteEv @ 1351 NONAME
+ _ZN22QDeclarativeStateGroup19getStaticMetaObjectEv @ 1352 NONAME
+ _ZN22QDeclarativeStateGroup19transitionsPropertyEv @ 1353 NONAME
+ _ZN22QDeclarativeStateGroup8setStateERK7QString @ 1354 NONAME
+ _ZN22QDeclarativeStateGroupC1EP7QObject @ 1355 NONAME
+ _ZN22QDeclarativeStateGroupC2EP7QObject @ 1356 NONAME
+ _ZN22QDeclarativeStateGroupD0Ev @ 1357 NONAME
+ _ZN22QDeclarativeStateGroupD1Ev @ 1358 NONAME
+ _ZN22QDeclarativeStateGroupD2Ev @ 1359 NONAME
+ _ZN22QDeclarativeStyledText5parseERK7QStringR11QTextLayout @ 1360 NONAME
+ _ZN22QDeclarativeStyledTextC1ERK7QStringR11QTextLayout @ 1361 NONAME
+ _ZN22QDeclarativeStyledTextC2ERK7QStringR11QTextLayout @ 1362 NONAME
+ _ZN22QDeclarativeStyledTextD1Ev @ 1363 NONAME
+ _ZN22QDeclarativeStyledTextD2Ev @ 1364 NONAME
+ _ZN22QDeclarativeTransition10animationsEv @ 1365 NONAME
+ _ZN22QDeclarativeTransition10setToStateERK7QString @ 1366 NONAME
+ _ZN22QDeclarativeTransition11fromChangedEv @ 1367 NONAME
+ _ZN22QDeclarativeTransition11qt_metacallEN11QMetaObject4CallEiPPv @ 1368 NONAME
+ _ZN22QDeclarativeTransition11qt_metacastEPKc @ 1369 NONAME
+ _ZN22QDeclarativeTransition11setReversedEb @ 1370 NONAME
+ _ZN22QDeclarativeTransition12setFromStateERK7QString @ 1371 NONAME
+ _ZN22QDeclarativeTransition13setReversibleEb @ 1372 NONAME
+ _ZN22QDeclarativeTransition16staticMetaObjectE @ 1373 NONAME DATA 16
+ _ZN22QDeclarativeTransition17reversibleChangedEv @ 1374 NONAME
+ _ZN22QDeclarativeTransition19getStaticMetaObjectEv @ 1375 NONAME
+ _ZN22QDeclarativeTransition4stopEv @ 1376 NONAME
+ _ZN22QDeclarativeTransition7prepareER5QListI18QDeclarativeActionERS0_I20QDeclarativePropertyEP29QDeclarativeTransitionManager @ 1377 NONAME
+ _ZN22QDeclarativeTransition9toChangedEv @ 1378 NONAME
+ _ZN22QDeclarativeTransitionC1EP7QObject @ 1379 NONAME
+ _ZN22QDeclarativeTransitionC2EP7QObject @ 1380 NONAME
+ _ZN22QDeclarativeTransitionD0Ev @ 1381 NONAME
+ _ZN22QDeclarativeTransitionD1Ev @ 1382 NONAME
+ _ZN22QDeclarativeTransitionD2Ev @ 1383 NONAME
+ _ZN23QDeclarativeBorderImage11qt_metacallEN11QMetaObject4CallEiPPv @ 1384 NONAME
+ _ZN23QDeclarativeBorderImage11qt_metacastEPKc @ 1385 NONAME
+ _ZN23QDeclarativeBorderImage15requestFinishedEv @ 1386 NONAME
+ _ZN23QDeclarativeBorderImage16staticMetaObjectE @ 1387 NONAME DATA 16
+ _ZN23QDeclarativeBorderImage18sciRequestFinishedEv @ 1388 NONAME
+ _ZN23QDeclarativeBorderImage18setGridScaledImageERK27QDeclarativeGridScaledImage @ 1389 NONAME
+ _ZN23QDeclarativeBorderImage19getStaticMetaObjectEv @ 1390 NONAME
+ _ZN23QDeclarativeBorderImage19setVerticalTileModeENS_8TileModeE @ 1391 NONAME
+ _ZN23QDeclarativeBorderImage21setHorizontalTileModeENS_8TileModeE @ 1392 NONAME
+ _ZN23QDeclarativeBorderImage23verticalTileModeChangedEv @ 1393 NONAME
+ _ZN23QDeclarativeBorderImage25horizontalTileModeChangedEv @ 1394 NONAME
+ _ZN23QDeclarativeBorderImage4loadEv @ 1395 NONAME
+ _ZN23QDeclarativeBorderImage5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1396 NONAME
+ _ZN23QDeclarativeBorderImage6borderEv @ 1397 NONAME
+ _ZN23QDeclarativeBorderImage9setSourceERK4QUrl @ 1398 NONAME
+ _ZN23QDeclarativeBorderImageC1EP16QDeclarativeItem @ 1399 NONAME
+ _ZN23QDeclarativeBorderImageC2EP16QDeclarativeItem @ 1400 NONAME
+ _ZN23QDeclarativeBorderImageD0Ev @ 1401 NONAME
+ _ZN23QDeclarativeBorderImageD1Ev @ 1402 NONAME
+ _ZN23QDeclarativeBorderImageD2Ev @ 1403 NONAME
+ _ZN23QDeclarativeConnections11qt_metacallEN11QMetaObject4CallEiPPv @ 1404 NONAME
+ _ZN23QDeclarativeConnections11qt_metacastEPKc @ 1405 NONAME
+ _ZN23QDeclarativeConnections13targetChangedEv @ 1406 NONAME
+ _ZN23QDeclarativeConnections14connectSignalsEv @ 1407 NONAME
+ _ZN23QDeclarativeConnections16staticMetaObjectE @ 1408 NONAME DATA 16
+ _ZN23QDeclarativeConnections17componentCompleteEv @ 1409 NONAME
+ _ZN23QDeclarativeConnections19getStaticMetaObjectEv @ 1410 NONAME
+ _ZN23QDeclarativeConnections9setTargetEP7QObject @ 1411 NONAME
+ _ZN23QDeclarativeConnectionsC1EP7QObject @ 1412 NONAME
+ _ZN23QDeclarativeConnectionsC2EP7QObject @ 1413 NONAME
+ _ZN23QDeclarativeConnectionsD0Ev @ 1414 NONAME
+ _ZN23QDeclarativeConnectionsD1Ev @ 1415 NONAME
+ _ZN23QDeclarativeConnectionsD2Ev @ 1416 NONAME
+ _ZN23QDeclarativeDebugClient10setEnabledEb @ 1417 NONAME
+ _ZN23QDeclarativeDebugClient11qt_metacallEN11QMetaObject4CallEiPPv @ 1418 NONAME
+ _ZN23QDeclarativeDebugClient11qt_metacastEPKc @ 1419 NONAME
+ _ZN23QDeclarativeDebugClient11sendMessageERK10QByteArray @ 1420 NONAME
+ _ZN23QDeclarativeDebugClient15messageReceivedERK10QByteArray @ 1421 NONAME
+ _ZN23QDeclarativeDebugClient16staticMetaObjectE @ 1422 NONAME DATA 16
+ _ZN23QDeclarativeDebugClient19getStaticMetaObjectEv @ 1423 NONAME
+ _ZN23QDeclarativeDebugClientC1ERK7QStringP27QDeclarativeDebugConnection @ 1424 NONAME
+ _ZN23QDeclarativeDebugClientC2ERK7QStringP27QDeclarativeDebugConnection @ 1425 NONAME
+ _ZN23QDeclarativeDomDocument4loadEP18QDeclarativeEngineRK10QByteArrayRK4QUrl @ 1426 NONAME
+ _ZN23QDeclarativeDomDocumentC1ERKS_ @ 1427 NONAME
+ _ZN23QDeclarativeDomDocumentC1Ev @ 1428 NONAME
+ _ZN23QDeclarativeDomDocumentC2ERKS_ @ 1429 NONAME
+ _ZN23QDeclarativeDomDocumentC2Ev @ 1430 NONAME
+ _ZN23QDeclarativeDomDocumentD1Ev @ 1431 NONAME
+ _ZN23QDeclarativeDomDocumentD2Ev @ 1432 NONAME
+ _ZN23QDeclarativeDomDocumentaSERKS_ @ 1433 NONAME
+ _ZN23QDeclarativeDomPropertyC1ERKS_ @ 1434 NONAME
+ _ZN23QDeclarativeDomPropertyC1Ev @ 1435 NONAME
+ _ZN23QDeclarativeDomPropertyC2ERKS_ @ 1436 NONAME
+ _ZN23QDeclarativeDomPropertyC2Ev @ 1437 NONAME
+ _ZN23QDeclarativeDomPropertyD1Ev @ 1438 NONAME
+ _ZN23QDeclarativeDomPropertyD2Ev @ 1439 NONAME
+ _ZN23QDeclarativeDomPropertyaSERKS_ @ 1440 NONAME
+ _ZN23QDeclarativeEngineDebug11qt_metacallEN11QMetaObject4CallEiPPv @ 1441 NONAME
+ _ZN23QDeclarativeEngineDebug11qt_metacastEPKc @ 1442 NONAME
+ _ZN23QDeclarativeEngineDebug11queryObjectERK32QDeclarativeDebugObjectReferenceP7QObject @ 1443 NONAME
+ _ZN23QDeclarativeEngineDebug11removeWatchEP22QDeclarativeDebugWatch @ 1444 NONAME
+ _ZN23QDeclarativeEngineDebug16staticMetaObjectE @ 1445 NONAME DATA 16
+ _ZN23QDeclarativeEngineDebug17queryRootContextsERK32QDeclarativeDebugEngineReferenceP7QObject @ 1446 NONAME
+ _ZN23QDeclarativeEngineDebug19getStaticMetaObjectEv @ 1447 NONAME
+ _ZN23QDeclarativeEngineDebug20queryObjectRecursiveERK32QDeclarativeDebugObjectReferenceP7QObject @ 1448 NONAME
+ _ZN23QDeclarativeEngineDebug21queryAvailableEnginesEP7QObject @ 1449 NONAME
+ _ZN23QDeclarativeEngineDebug21queryExpressionResultEiRK7QStringP7QObject @ 1450 NONAME
+ _ZN23QDeclarativeEngineDebug8addWatchERK30QDeclarativeDebugFileReferenceP7QObject @ 1451 NONAME
+ _ZN23QDeclarativeEngineDebug8addWatchERK32QDeclarativeDebugObjectReferenceP7QObject @ 1452 NONAME
+ _ZN23QDeclarativeEngineDebug8addWatchERK32QDeclarativeDebugObjectReferenceRK7QStringP7QObject @ 1453 NONAME
+ _ZN23QDeclarativeEngineDebug8addWatchERK33QDeclarativeDebugContextReferenceRK7QStringP7QObject @ 1454 NONAME
+ _ZN23QDeclarativeEngineDebug8addWatchERK34QDeclarativeDebugPropertyReferenceP7QObject @ 1455 NONAME
+ _ZN23QDeclarativeEngineDebugC1EP27QDeclarativeDebugConnectionP7QObject @ 1456 NONAME
+ _ZN23QDeclarativeEngineDebugC2EP27QDeclarativeDebugConnectionP7QObject @ 1457 NONAME
+ _ZN23QDeclarativeItemPrivate10resetWidthEv @ 1458 NONAME
+ _ZN23QDeclarativeItemPrivate11currentTimeEv @ 1459 NONAME
+ _ZN23QDeclarativeItemPrivate11data_appendEP24QDeclarativeListPropertyI7QObjectEPS1_ @ 1460 NONAME
+ _ZN23QDeclarativeItemPrivate11resetHeightEv @ 1461 NONAME
+ _ZN23QDeclarativeItemPrivate12focusChangedEb @ 1462 NONAME
+ _ZN23QDeclarativeItemPrivate12resources_atEP24QDeclarativeListPropertyI7QObjectEi @ 1463 NONAME
+ _ZN23QDeclarativeItemPrivate12transform_atEP24QDeclarativeListPropertyI18QGraphicsTransformEi @ 1464 NONAME
+ _ZN23QDeclarativeItemPrivate14consistentTimeE @ 1465 NONAME DATA 4
+ _ZN23QDeclarativeItemPrivate14parentPropertyEP7QObjectPvP28QDeclarativeNotifierEndpoint @ 1466 NONAME
+ _ZN23QDeclarativeItemPrivate15resources_countEP24QDeclarativeListPropertyI7QObjectE @ 1467 NONAME
+ _ZN23QDeclarativeItemPrivate15transform_clearEP24QDeclarativeListPropertyI18QGraphicsTransformE @ 1468 NONAME
+ _ZN23QDeclarativeItemPrivate15transform_countEP24QDeclarativeListPropertyI18QGraphicsTransformE @ 1469 NONAME
+ _ZN23QDeclarativeItemPrivate16resources_appendEP24QDeclarativeListPropertyI7QObjectEPS1_ @ 1470 NONAME
+ _ZN23QDeclarativeItemPrivate16transform_appendEP24QDeclarativeListPropertyI18QGraphicsTransformEPS1_ @ 1471 NONAME
+ _ZN23QDeclarativeItemPrivate17setConsistentTimeEi @ 1472 NONAME
+ _ZN23QDeclarativeItemPrivate24removeItemChangeListenerEP30QDeclarativeItemChangeListener6QFlagsINS_10ChangeTypeEE @ 1473 NONAME
+ _ZN23QDeclarativeItemPrivate5startER5QTime @ 1474 NONAME
+ _ZN23QDeclarativeItemPrivate6statesEv @ 1475 NONAME
+ _ZN23QDeclarativeItemPrivate7elapsedER5QTime @ 1476 NONAME
+ _ZN23QDeclarativeItemPrivate7restartER5QTime @ 1477 NONAME
+ _ZN23QDeclarativeItemPrivate8setWidthEf @ 1478 NONAME
+ _ZN23QDeclarativeItemPrivate9setHeightEf @ 1479 NONAME
+ _ZN23QDeclarativePaintedItem10clearCacheEv @ 1480 NONAME
+ _ZN23QDeclarativePaintedItem10dirtyCacheERK5QRect @ 1481 NONAME
+ _ZN23QDeclarativePaintedItem11qt_metacallEN11QMetaObject4CallEiPPv @ 1482 NONAME
+ _ZN23QDeclarativePaintedItem11qt_metacastEPKc @ 1483 NONAME
+ _ZN23QDeclarativePaintedItem12setFillColorERK6QColor @ 1484 NONAME
+ _ZN23QDeclarativePaintedItem14setCacheFrozenEb @ 1485 NONAME
+ _ZN23QDeclarativePaintedItem14setSmoothCacheEb @ 1486 NONAME
+ _ZN23QDeclarativePaintedItem15setContentsSizeERK5QSize @ 1487 NONAME
+ _ZN23QDeclarativePaintedItem16fillColorChangedEv @ 1488 NONAME
+ _ZN23QDeclarativePaintedItem16setContentsScaleEf @ 1489 NONAME
+ _ZN23QDeclarativePaintedItem16staticMetaObjectE @ 1490 NONAME DATA 16
+ _ZN23QDeclarativePaintedItem17setPixelCacheSizeEi @ 1491 NONAME
+ _ZN23QDeclarativePaintedItem19contentsSizeChangedEv @ 1492 NONAME
+ _ZN23QDeclarativePaintedItem19getStaticMetaObjectEv @ 1493 NONAME
+ _ZN23QDeclarativePaintedItem20contentsScaleChangedEv @ 1494 NONAME
+ _ZN23QDeclarativePaintedItem4initEv @ 1495 NONAME
+ _ZN23QDeclarativePaintedItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1496 NONAME
+ _ZN23QDeclarativePaintedItemC2EP16QDeclarativeItem @ 1497 NONAME
+ _ZN23QDeclarativePaintedItemC2ER30QDeclarativePaintedItemPrivateP16QDeclarativeItem @ 1498 NONAME
+ _ZN23QDeclarativePaintedItemD0Ev @ 1499 NONAME
+ _ZN23QDeclarativePaintedItemD1Ev @ 1500 NONAME
+ _ZN23QDeclarativePaintedItemD2Ev @ 1501 NONAME
+ _ZN23QDeclarativePathElement11qt_metacallEN11QMetaObject4CallEiPPv @ 1502 NONAME
+ _ZN23QDeclarativePathElement11qt_metacastEPKc @ 1503 NONAME
+ _ZN23QDeclarativePathElement16staticMetaObjectE @ 1504 NONAME DATA 16
+ _ZN23QDeclarativePathElement19getStaticMetaObjectEv @ 1505 NONAME
+ _ZN23QDeclarativePathElement7changedEv @ 1506 NONAME
+ _ZN23QDeclarativePathPercent11qt_metacallEN11QMetaObject4CallEiPPv @ 1507 NONAME
+ _ZN23QDeclarativePathPercent11qt_metacastEPKc @ 1508 NONAME
+ _ZN23QDeclarativePathPercent16staticMetaObjectE @ 1509 NONAME DATA 16
+ _ZN23QDeclarativePathPercent19getStaticMetaObjectEv @ 1510 NONAME
+ _ZN23QDeclarativePathPercent8setValueEf @ 1511 NONAME
+ _ZN23QDeclarativePixmapCache15pendingRequestsEv @ 1512 NONAME
+ _ZN23QDeclarativePixmapCache3getERK4QUrlP7QPixmapP5QSizebii @ 1513 NONAME
+ _ZN23QDeclarativePixmapCache6cancelERK4QUrlP7QObject @ 1514 NONAME
+ _ZN23QDeclarativePixmapCache7requestEP18QDeclarativeEngineRK4QUrlii @ 1515 NONAME
+ _ZN23QDeclarativePixmapReply10setLoadingEv @ 1516 NONAME
+ _ZN23QDeclarativePixmapReply11qt_metacallEN11QMetaObject4CallEiPPv @ 1517 NONAME
+ _ZN23QDeclarativePixmapReply11qt_metacastEPKc @ 1518 NONAME
+ _ZN23QDeclarativePixmapReply16downloadProgressExx @ 1519 NONAME
+ _ZN23QDeclarativePixmapReply16staticMetaObjectE @ 1520 NONAME DATA 16
+ _ZN23QDeclarativePixmapReply19getStaticMetaObjectEv @ 1521 NONAME
+ _ZN23QDeclarativePixmapReply5eventEP6QEvent @ 1522 NONAME
+ _ZN23QDeclarativePixmapReply6addRefEv @ 1523 NONAME
+ _ZN23QDeclarativePixmapReply7releaseEb @ 1524 NONAME
+ _ZN23QDeclarativePixmapReply8finishedEv @ 1525 NONAME
+ _ZN23QDeclarativePixmapReplyC1EP23QDeclarativeImageReaderRK4QUrlii @ 1526 NONAME
+ _ZN23QDeclarativePixmapReplyC2EP23QDeclarativeImageReaderRK4QUrlii @ 1527 NONAME
+ _ZN23QDeclarativePixmapReplyD0Ev @ 1528 NONAME
+ _ZN23QDeclarativePixmapReplyD1Ev @ 1529 NONAME
+ _ZN23QDeclarativePixmapReplyD2Ev @ 1530 NONAME
+ _ZN23QDeclarativePropertyMap11qt_metacallEN11QMetaObject4CallEiPPv @ 1531 NONAME
+ _ZN23QDeclarativePropertyMap11qt_metacastEPKc @ 1532 NONAME
+ _ZN23QDeclarativePropertyMap12valueChangedERK7QStringRK8QVariant @ 1533 NONAME
+ _ZN23QDeclarativePropertyMap16staticMetaObjectE @ 1534 NONAME DATA 16
+ _ZN23QDeclarativePropertyMap19getStaticMetaObjectEv @ 1535 NONAME
+ _ZN23QDeclarativePropertyMap5clearERK7QString @ 1536 NONAME
+ _ZN23QDeclarativePropertyMap6insertERK7QStringRK8QVariant @ 1537 NONAME
+ _ZN23QDeclarativePropertyMapC1EP7QObject @ 1538 NONAME
+ _ZN23QDeclarativePropertyMapC2EP7QObject @ 1539 NONAME
+ _ZN23QDeclarativePropertyMapD0Ev @ 1540 NONAME
+ _ZN23QDeclarativePropertyMapD1Ev @ 1541 NONAME
+ _ZN23QDeclarativePropertyMapD2Ev @ 1542 NONAME
+ _ZN23QDeclarativePropertyMapixERK7QString @ 1543 NONAME
+ _ZN23QDeclarativeViewSection11qt_metacallEN11QMetaObject4CallEiPPv @ 1544 NONAME
+ _ZN23QDeclarativeViewSection11qt_metacastEPKc @ 1545 NONAME
+ _ZN23QDeclarativeViewSection11setCriteriaENS_15SectionCriteriaE @ 1546 NONAME
+ _ZN23QDeclarativeViewSection11setDelegateEP21QDeclarativeComponent @ 1547 NONAME
+ _ZN23QDeclarativeViewSection11setPropertyERK7QString @ 1548 NONAME
+ _ZN23QDeclarativeViewSection13sectionStringERK7QString @ 1549 NONAME
+ _ZN23QDeclarativeViewSection15delegateChangedEv @ 1550 NONAME
+ _ZN23QDeclarativeViewSection16staticMetaObjectE @ 1551 NONAME DATA 16
+ _ZN23QDeclarativeViewSection19getStaticMetaObjectEv @ 1552 NONAME
+ _ZN23QDeclarativeViewSection7changedEv @ 1553 NONAME
+ _ZN23QDeclarativeVisualModel10itemsMovedEiii @ 1554 NONAME
+ _ZN23QDeclarativeVisualModel10modelResetEv @ 1555 NONAME
+ _ZN23QDeclarativeVisualModel11createdItemEiP16QDeclarativeItem @ 1556 NONAME
+ _ZN23QDeclarativeVisualModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1557 NONAME
+ _ZN23QDeclarativeVisualModel11qt_metacastEPKc @ 1558 NONAME
+ _ZN23QDeclarativeVisualModel12countChangedEv @ 1559 NONAME
+ _ZN23QDeclarativeVisualModel12itemsRemovedEii @ 1560 NONAME
+ _ZN23QDeclarativeVisualModel13itemsInsertedEii @ 1561 NONAME
+ _ZN23QDeclarativeVisualModel14destroyingItemEP16QDeclarativeItem @ 1562 NONAME
+ _ZN23QDeclarativeVisualModel16staticMetaObjectE @ 1563 NONAME DATA 16
+ _ZN23QDeclarativeVisualModel19getStaticMetaObjectEv @ 1564 NONAME
+ _ZN24QDeclarativeCustomParser11clearErrorsEv @ 1565 NONAME
+ _ZN24QDeclarativeCustomParser5errorERK28QDeclarativeCustomParserNodeRK7QString @ 1566 NONAME
+ _ZN24QDeclarativeCustomParser5errorERK32QDeclarativeCustomParserPropertyRK7QString @ 1567 NONAME
+ _ZN24QDeclarativeDebugService11idForObjectEP7QObject @ 1568 NONAME
+ _ZN24QDeclarativeDebugService11objectForIdEi @ 1569 NONAME
+ _ZN24QDeclarativeDebugService11qt_metacallEN11QMetaObject4CallEiPPv @ 1570 NONAME
+ _ZN24QDeclarativeDebugService11qt_metacastEPKc @ 1571 NONAME
+ _ZN24QDeclarativeDebugService11sendMessageERK10QByteArray @ 1572 NONAME
+ _ZN24QDeclarativeDebugService14enabledChangedEb @ 1573 NONAME
+ _ZN24QDeclarativeDebugService14objectToStringEP7QObject @ 1574 NONAME
+ _ZN24QDeclarativeDebugService14waitForClientsEv @ 1575 NONAME
+ _ZN24QDeclarativeDebugService15messageReceivedERK10QByteArray @ 1576 NONAME
+ _ZN24QDeclarativeDebugService16staticMetaObjectE @ 1577 NONAME DATA 16
+ _ZN24QDeclarativeDebugService18isDebuggingEnabledEv @ 1578 NONAME
+ _ZN24QDeclarativeDebugService19getStaticMetaObjectEv @ 1579 NONAME
+ _ZN24QDeclarativeDebugService19notifyOnServerStartEP7QObjectPKc @ 1580 NONAME
+ _ZN24QDeclarativeDebugServiceC1ERK7QStringP7QObject @ 1581 NONAME
+ _ZN24QDeclarativeDebugServiceC2ERK7QStringP7QObject @ 1582 NONAME
+ _ZN24QDeclarativeDomComponentC1ERKS_ @ 1583 NONAME
+ _ZN24QDeclarativeDomComponentC1Ev @ 1584 NONAME
+ _ZN24QDeclarativeDomComponentC2ERKS_ @ 1585 NONAME
+ _ZN24QDeclarativeDomComponentC2Ev @ 1586 NONAME
+ _ZN24QDeclarativeDomComponentD1Ev @ 1587 NONAME
+ _ZN24QDeclarativeDomComponentD2Ev @ 1588 NONAME
+ _ZN24QDeclarativeDomComponentaSERKS_ @ 1589 NONAME
+ _ZN24QDeclarativeGradientStop11qt_metacallEN11QMetaObject4CallEiPPv @ 1590 NONAME
+ _ZN24QDeclarativeGradientStop11qt_metacastEPKc @ 1591 NONAME
+ _ZN24QDeclarativeGradientStop14updateGradientEv @ 1592 NONAME
+ _ZN24QDeclarativeGradientStop16staticMetaObjectE @ 1593 NONAME DATA 16
+ _ZN24QDeclarativeGradientStop19getStaticMetaObjectEv @ 1594 NONAME
+ _ZN24QDeclarativeListAccessor7setListERK8QVariantP18QDeclarativeEngine @ 1595 NONAME
+ _ZN24QDeclarativeListAccessorC1Ev @ 1596 NONAME
+ _ZN24QDeclarativeListAccessorC2Ev @ 1597 NONAME
+ _ZN24QDeclarativeListAccessorD1Ev @ 1598 NONAME
+ _ZN24QDeclarativeListAccessorD2Ev @ 1599 NONAME
+ _ZN24QDeclarativeParentChange11qt_metacallEN11QMetaObject4CallEiPPv @ 1600 NONAME
+ _ZN24QDeclarativeParentChange11qt_metacastEPKc @ 1601 NONAME
+ _ZN24QDeclarativeParentChange11setRotationEf @ 1602 NONAME
+ _ZN24QDeclarativeParentChange12isReversableEv @ 1603 NONAME
+ _ZN24QDeclarativeParentChange13copyOriginalsEP23QDeclarativeActionEvent @ 1604 NONAME
+ _ZN24QDeclarativeParentChange13saveOriginalsEv @ 1605 NONAME
+ _ZN24QDeclarativeParentChange16staticMetaObjectE @ 1606 NONAME DATA 16
+ _ZN24QDeclarativeParentChange17saveCurrentValuesEv @ 1607 NONAME
+ _ZN24QDeclarativeParentChange19getStaticMetaObjectEv @ 1608 NONAME
+ _ZN24QDeclarativeParentChange4setXEf @ 1609 NONAME
+ _ZN24QDeclarativeParentChange4setYEf @ 1610 NONAME
+ _ZN24QDeclarativeParentChange6rewindEv @ 1611 NONAME
+ _ZN24QDeclarativeParentChange7actionsEv @ 1612 NONAME
+ _ZN24QDeclarativeParentChange7executeEv @ 1613 NONAME
+ _ZN24QDeclarativeParentChange7reverseEv @ 1614 NONAME
+ _ZN24QDeclarativeParentChange8overrideEP23QDeclarativeActionEvent @ 1615 NONAME
+ _ZN24QDeclarativeParentChange8setScaleEf @ 1616 NONAME
+ _ZN24QDeclarativeParentChange8setWidthEf @ 1617 NONAME
+ _ZN24QDeclarativeParentChange9setHeightEf @ 1618 NONAME
+ _ZN24QDeclarativeParentChange9setObjectEP16QDeclarativeItem @ 1619 NONAME
+ _ZN24QDeclarativeParentChange9setParentEP16QDeclarativeItem @ 1620 NONAME
+ _ZN24QDeclarativeParentChangeC1EP7QObject @ 1621 NONAME
+ _ZN24QDeclarativeParentChangeC2EP7QObject @ 1622 NONAME
+ _ZN24QDeclarativeParentChangeD0Ev @ 1623 NONAME
+ _ZN24QDeclarativeParentChangeD1Ev @ 1624 NONAME
+ _ZN24QDeclarativeParentChangeD2Ev @ 1625 NONAME
+ _ZN24QDeclarativeParserStatus10classBeginEv @ 1626 NONAME
+ _ZN24QDeclarativeParserStatus17componentCompleteEv @ 1627 NONAME
+ _ZN24QDeclarativeParserStatusC1Ev @ 1628 NONAME
+ _ZN24QDeclarativeParserStatusC2Ev @ 1629 NONAME
+ _ZN24QDeclarativeParserStatusD0Ev @ 1630 NONAME
+ _ZN24QDeclarativeParserStatusD1Ev @ 1631 NONAME
+ _ZN24QDeclarativeParserStatusD2Ev @ 1632 NONAME
+ _ZN24QDeclarativeScriptString10setContextEP19QDeclarativeContext @ 1633 NONAME
+ _ZN24QDeclarativeScriptString14setScopeObjectEP7QObject @ 1634 NONAME
+ _ZN24QDeclarativeScriptString9setScriptERK7QString @ 1635 NONAME
+ _ZN24QDeclarativeScriptStringC1ERKS_ @ 1636 NONAME
+ _ZN24QDeclarativeScriptStringC1Ev @ 1637 NONAME
+ _ZN24QDeclarativeScriptStringC2ERKS_ @ 1638 NONAME
+ _ZN24QDeclarativeScriptStringC2Ev @ 1639 NONAME
+ _ZN24QDeclarativeScriptStringD1Ev @ 1640 NONAME
+ _ZN24QDeclarativeScriptStringD2Ev @ 1641 NONAME
+ _ZN24QDeclarativeScriptStringaSERKS_ @ 1642 NONAME
+ _ZN24QDeclarativeSpringFollow10setDampingEf @ 1643 NONAME
+ _ZN24QDeclarativeSpringFollow10setEnabledEb @ 1644 NONAME
+ _ZN24QDeclarativeSpringFollow10setEpsilonEf @ 1645 NONAME
+ _ZN24QDeclarativeSpringFollow10setModulusEf @ 1646 NONAME
+ _ZN24QDeclarativeSpringFollow11massChangedEv @ 1647 NONAME
+ _ZN24QDeclarativeSpringFollow11qt_metacallEN11QMetaObject4CallEiPPv @ 1648 NONAME
+ _ZN24QDeclarativeSpringFollow11qt_metacastEPKc @ 1649 NONAME
+ _ZN24QDeclarativeSpringFollow11setVelocityEf @ 1650 NONAME
+ _ZN24QDeclarativeSpringFollow11syncChangedEv @ 1651 NONAME
+ _ZN24QDeclarativeSpringFollow12valueChangedEf @ 1652 NONAME
+ _ZN24QDeclarativeSpringFollow14modulusChangedEv @ 1653 NONAME
+ _ZN24QDeclarativeSpringFollow14setSourceValueEf @ 1654 NONAME
+ _ZN24QDeclarativeSpringFollow16staticMetaObjectE @ 1655 NONAME DATA 16
+ _ZN24QDeclarativeSpringFollow19getStaticMetaObjectEv @ 1656 NONAME
+ _ZN24QDeclarativeSpringFollow7setMassEf @ 1657 NONAME
+ _ZN24QDeclarativeSpringFollow9setSpringEf @ 1658 NONAME
+ _ZN24QDeclarativeSpringFollow9setTargetERK20QDeclarativeProperty @ 1659 NONAME
+ _ZN24QDeclarativeSpringFollowC1EP7QObject @ 1660 NONAME
+ _ZN24QDeclarativeSpringFollowC2EP7QObject @ 1661 NONAME
+ _ZN24QDeclarativeSpringFollowD0Ev @ 1662 NONAME
+ _ZN24QDeclarativeSpringFollowD1Ev @ 1663 NONAME
+ _ZN24QDeclarativeSpringFollowD2Ev @ 1664 NONAME
+ _ZN24QDeclarativeWorkerScript11qt_metacallEN11QMetaObject4CallEiPPv @ 1665 NONAME
+ _ZN24QDeclarativeWorkerScript11qt_metacastEPKc @ 1666 NONAME
+ _ZN24QDeclarativeWorkerScript11sendMessageERK12QScriptValue @ 1667 NONAME
+ _ZN24QDeclarativeWorkerScript13sourceChangedEv @ 1668 NONAME
+ _ZN24QDeclarativeWorkerScript16staticMetaObjectE @ 1669 NONAME DATA 16
+ _ZN24QDeclarativeWorkerScript17componentCompleteEv @ 1670 NONAME
+ _ZN24QDeclarativeWorkerScript19getStaticMetaObjectEv @ 1671 NONAME
+ _ZN24QDeclarativeWorkerScript5eventEP6QEvent @ 1672 NONAME
+ _ZN24QDeclarativeWorkerScript7messageERK12QScriptValue @ 1673 NONAME
+ _ZN24QDeclarativeWorkerScript9setSourceERK4QUrl @ 1674 NONAME
+ _ZN24QDeclarativeWorkerScriptC1EP7QObject @ 1675 NONAME
+ _ZN24QDeclarativeWorkerScriptC2EP7QObject @ 1676 NONAME
+ _ZN24QDeclarativeWorkerScriptD0Ev @ 1677 NONAME
+ _ZN24QDeclarativeWorkerScriptD1Ev @ 1678 NONAME
+ _ZN24QDeclarativeWorkerScriptD2Ev @ 1679 NONAME
+ _ZN24QDeclarativeXmlListModel10classBeginEv @ 1680 NONAME
+ _ZN24QDeclarativeXmlListModel10xmlChangedEv @ 1681 NONAME
+ _ZN24QDeclarativeXmlListModel11dataClearedEv @ 1682 NONAME
+ _ZN24QDeclarativeXmlListModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1683 NONAME
+ _ZN24QDeclarativeXmlListModel11qt_metacastEPKc @ 1684 NONAME
+ _ZN24QDeclarativeXmlListModel11roleObjectsEv @ 1685 NONAME
+ _ZN24QDeclarativeXmlListModel12countChangedEv @ 1686 NONAME
+ _ZN24QDeclarativeXmlListModel12queryChangedEv @ 1687 NONAME
+ _ZN24QDeclarativeXmlListModel13sourceChangedEv @ 1688 NONAME
+ _ZN24QDeclarativeXmlListModel13statusChangedENS_6StatusE @ 1689 NONAME
+ _ZN24QDeclarativeXmlListModel14queryCompletedERK26QDeclarativeXmlQueryResult @ 1690 NONAME
+ _ZN24QDeclarativeXmlListModel15progressChangedEf @ 1691 NONAME
+ _ZN24QDeclarativeXmlListModel15requestFinishedEv @ 1692 NONAME
+ _ZN24QDeclarativeXmlListModel15requestProgressExx @ 1693 NONAME
+ _ZN24QDeclarativeXmlListModel16staticMetaObjectE @ 1694 NONAME DATA 16
+ _ZN24QDeclarativeXmlListModel17componentCompleteEv @ 1695 NONAME
+ _ZN24QDeclarativeXmlListModel19getStaticMetaObjectEv @ 1696 NONAME
+ _ZN24QDeclarativeXmlListModel24setNamespaceDeclarationsERK7QString @ 1697 NONAME
+ _ZN24QDeclarativeXmlListModel28namespaceDeclarationsChangedEv @ 1698 NONAME
+ _ZN24QDeclarativeXmlListModel6reloadEv @ 1699 NONAME
+ _ZN24QDeclarativeXmlListModel6setXmlERK7QString @ 1700 NONAME
+ _ZN24QDeclarativeXmlListModel8setQueryERK7QString @ 1701 NONAME
+ _ZN24QDeclarativeXmlListModel9setSourceERK4QUrl @ 1702 NONAME
+ _ZN24QDeclarativeXmlListModelC1EP7QObject @ 1703 NONAME
+ _ZN24QDeclarativeXmlListModelC2EP7QObject @ 1704 NONAME
+ _ZN24QDeclarativeXmlListModelD0Ev @ 1705 NONAME
+ _ZN24QDeclarativeXmlListModelD1Ev @ 1706 NONAME
+ _ZN24QDeclarativeXmlListModelD2Ev @ 1707 NONAME
+ _ZN25QDeclarativeAnchorChanges11qt_metacallEN11QMetaObject4CallEiPPv @ 1708 NONAME
+ _ZN25QDeclarativeAnchorChanges11qt_metacastEPKc @ 1709 NONAME
+ _ZN25QDeclarativeAnchorChanges12isReversableEv @ 1710 NONAME
+ _ZN25QDeclarativeAnchorChanges13clearBindingsEv @ 1711 NONAME
+ _ZN25QDeclarativeAnchorChanges13copyOriginalsEP23QDeclarativeActionEvent @ 1712 NONAME
+ _ZN25QDeclarativeAnchorChanges13saveOriginalsEv @ 1713 NONAME
+ _ZN25QDeclarativeAnchorChanges15changesBindingsEv @ 1714 NONAME
+ _ZN25QDeclarativeAnchorChanges16saveTargetValuesEv @ 1715 NONAME
+ _ZN25QDeclarativeAnchorChanges16staticMetaObjectE @ 1716 NONAME DATA 16
+ _ZN25QDeclarativeAnchorChanges17additionalActionsEv @ 1717 NONAME
+ _ZN25QDeclarativeAnchorChanges17saveCurrentValuesEv @ 1718 NONAME
+ _ZN25QDeclarativeAnchorChanges19getStaticMetaObjectEv @ 1719 NONAME
+ _ZN25QDeclarativeAnchorChanges6rewindEv @ 1720 NONAME
+ _ZN25QDeclarativeAnchorChanges7actionsEv @ 1721 NONAME
+ _ZN25QDeclarativeAnchorChanges7anchorsEv @ 1722 NONAME
+ _ZN25QDeclarativeAnchorChanges7executeEv @ 1723 NONAME
+ _ZN25QDeclarativeAnchorChanges7reverseEv @ 1724 NONAME
+ _ZN25QDeclarativeAnchorChanges8overrideEP23QDeclarativeActionEvent @ 1725 NONAME
+ _ZN25QDeclarativeAnchorChanges9setObjectEP16QDeclarativeItem @ 1726 NONAME
+ _ZN25QDeclarativeAnchorChangesC1EP7QObject @ 1727 NONAME
+ _ZN25QDeclarativeAnchorChangesC2EP7QObject @ 1728 NONAME
+ _ZN25QDeclarativeAnchorChangesD0Ev @ 1729 NONAME
+ _ZN25QDeclarativeAnchorChangesD1Ev @ 1730 NONAME
+ _ZN25QDeclarativeAnchorChangesD2Ev @ 1731 NONAME
+ _ZN25QDeclarativeAnimatedImage10setPlayingEb @ 1732 NONAME
+ _ZN25QDeclarativeAnimatedImage11movieUpdateEv @ 1733 NONAME
+ _ZN25QDeclarativeAnimatedImage11qt_metacallEN11QMetaObject4CallEiPPv @ 1734 NONAME
+ _ZN25QDeclarativeAnimatedImage11qt_metacastEPKc @ 1735 NONAME
+ _ZN25QDeclarativeAnimatedImage12frameChangedEv @ 1736 NONAME
+ _ZN25QDeclarativeAnimatedImage13pausedChangedEv @ 1737 NONAME
+ _ZN25QDeclarativeAnimatedImage14playingChangedEv @ 1738 NONAME
+ _ZN25QDeclarativeAnimatedImage15setCurrentFrameEi @ 1739 NONAME
+ _ZN25QDeclarativeAnimatedImage16staticMetaObjectE @ 1740 NONAME DATA 16
+ _ZN25QDeclarativeAnimatedImage17componentCompleteEv @ 1741 NONAME
+ _ZN25QDeclarativeAnimatedImage19getStaticMetaObjectEv @ 1742 NONAME
+ _ZN25QDeclarativeAnimatedImage20movieRequestFinishedEv @ 1743 NONAME
+ _ZN25QDeclarativeAnimatedImage20playingStatusChangedEv @ 1744 NONAME
+ _ZN25QDeclarativeAnimatedImage9setPausedEb @ 1745 NONAME
+ _ZN25QDeclarativeAnimatedImage9setSourceERK4QUrl @ 1746 NONAME
+ _ZN25QDeclarativeAnimatedImageC1EP16QDeclarativeItem @ 1747 NONAME
+ _ZN25QDeclarativeAnimatedImageC2EP16QDeclarativeItem @ 1748 NONAME
+ _ZN25QDeclarativeAnimatedImageD0Ev @ 1749 NONAME
+ _ZN25QDeclarativeAnimatedImageD1Ev @ 1750 NONAME
+ _ZN25QDeclarativeAnimatedImageD2Ev @ 1751 NONAME
+ _ZN25QDeclarativeImageProviderD0Ev @ 1752 NONAME
+ _ZN25QDeclarativeImageProviderD1Ev @ 1753 NONAME
+ _ZN25QDeclarativeImageProviderD2Ev @ 1754 NONAME
+ _ZN25QDeclarativeListReferenceC1EP7QObjectPKcP18QDeclarativeEngine @ 1755 NONAME
+ _ZN25QDeclarativeListReferenceC1ERKS_ @ 1756 NONAME
+ _ZN25QDeclarativeListReferenceC1Ev @ 1757 NONAME
+ _ZN25QDeclarativeListReferenceC2EP7QObjectPKcP18QDeclarativeEngine @ 1758 NONAME
+ _ZN25QDeclarativeListReferenceC2ERKS_ @ 1759 NONAME
+ _ZN25QDeclarativeListReferenceC2Ev @ 1760 NONAME
+ _ZN25QDeclarativeListReferenceD1Ev @ 1761 NONAME
+ _ZN25QDeclarativeListReferenceD2Ev @ 1762 NONAME
+ _ZN25QDeclarativeListReferenceaSERKS_ @ 1763 NONAME
+ _ZN25QDeclarativePathAttribute11nameChangedEv @ 1764 NONAME
+ _ZN25QDeclarativePathAttribute11qt_metacallEN11QMetaObject4CallEiPPv @ 1765 NONAME
+ _ZN25QDeclarativePathAttribute11qt_metacastEPKc @ 1766 NONAME
+ _ZN25QDeclarativePathAttribute16staticMetaObjectE @ 1767 NONAME DATA 16
+ _ZN25QDeclarativePathAttribute19getStaticMetaObjectEv @ 1768 NONAME
+ _ZN25QDeclarativePathAttribute7setNameERK7QString @ 1769 NONAME
+ _ZN25QDeclarativePathAttribute8setValueEf @ 1770 NONAME
+ _ZN25QDeclarativeSystemPalette11eventFilterEP7QObjectP6QEvent @ 1771 NONAME
+ _ZN25QDeclarativeSystemPalette11qt_metacallEN11QMetaObject4CallEiPPv @ 1772 NONAME
+ _ZN25QDeclarativeSystemPalette11qt_metacastEPKc @ 1773 NONAME
+ _ZN25QDeclarativeSystemPalette13setColorGroupENS_10ColorGroupE @ 1774 NONAME
+ _ZN25QDeclarativeSystemPalette14paletteChangedEv @ 1775 NONAME
+ _ZN25QDeclarativeSystemPalette16staticMetaObjectE @ 1776 NONAME DATA 16
+ _ZN25QDeclarativeSystemPalette19getStaticMetaObjectEv @ 1777 NONAME
+ _ZN25QDeclarativeSystemPalette5eventEP6QEvent @ 1778 NONAME
+ _ZN25QDeclarativeSystemPaletteC1EP7QObject @ 1779 NONAME
+ _ZN25QDeclarativeSystemPaletteC2EP7QObject @ 1780 NONAME
+ _ZN25QDeclarativeSystemPaletteD0Ev @ 1781 NONAME
+ _ZN25QDeclarativeSystemPaletteD1Ev @ 1782 NONAME
+ _ZN25QDeclarativeSystemPaletteD2Ev @ 1783 NONAME
+ _ZN26QDeclarativeBasePositioner10addChangedEv @ 1784 NONAME
+ _ZN26QDeclarativeBasePositioner10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 1785 NONAME
+ _ZN26QDeclarativeBasePositioner10setSpacingEi @ 1786 NONAME
+ _ZN26QDeclarativeBasePositioner11moveChangedEv @ 1787 NONAME
+ _ZN26QDeclarativeBasePositioner11qt_metacallEN11QMetaObject4CallEiPPv @ 1788 NONAME
+ _ZN26QDeclarativeBasePositioner11qt_metacastEPKc @ 1789 NONAME
+ _ZN26QDeclarativeBasePositioner14prePositioningEv @ 1790 NONAME
+ _ZN26QDeclarativeBasePositioner14spacingChangedEv @ 1791 NONAME
+ _ZN26QDeclarativeBasePositioner16staticMetaObjectE @ 1792 NONAME DATA 16
+ _ZN26QDeclarativeBasePositioner17componentCompleteEv @ 1793 NONAME
+ _ZN26QDeclarativeBasePositioner19getStaticMetaObjectEv @ 1794 NONAME
+ _ZN26QDeclarativeBasePositioner22finishApplyTransitionsEv @ 1795 NONAME
+ _ZN26QDeclarativeBasePositioner6setAddEP22QDeclarativeTransition @ 1796 NONAME
+ _ZN26QDeclarativeBasePositioner7setMoveEP22QDeclarativeTransition @ 1797 NONAME
+ _ZN26QDeclarativeBasePositioner9positionXEiRKNS_14PositionedItemE @ 1798 NONAME
+ _ZN26QDeclarativeBasePositioner9positionYEiRKNS_14PositionedItemE @ 1799 NONAME
+ _ZN26QDeclarativeBasePositionerC2ENS_14PositionerTypeEP16QDeclarativeItem @ 1800 NONAME
+ _ZN26QDeclarativeBasePositionerC2ER33QDeclarativeBasePositionerPrivateNS_14PositionerTypeEP16QDeclarativeItem @ 1801 NONAME
+ _ZN26QDeclarativeBasePositionerD0Ev @ 1802 NONAME
+ _ZN26QDeclarativeBasePositionerD1Ev @ 1803 NONAME
+ _ZN26QDeclarativeBasePositionerD2Ev @ 1804 NONAME
+ _ZN26QDeclarativeDebuggerStatus16setSelectedStateEb @ 1805 NONAME
+ _ZN26QDeclarativeDebuggerStatusD0Ev @ 1806 NONAME
+ _ZN26QDeclarativeDebuggerStatusD1Ev @ 1807 NONAME
+ _ZN26QDeclarativeDebuggerStatusD2Ev @ 1808 NONAME
+ _ZN26QDeclarativeOpenMetaObject12initialValueEi @ 1809 NONAME
+ _ZN26QDeclarativeOpenMetaObject12propertyReadEi @ 1810 NONAME
+ _ZN26QDeclarativeOpenMetaObject13propertyWriteEi @ 1811 NONAME
+ _ZN26QDeclarativeOpenMetaObject14createPropertyEPKcS1_ @ 1812 NONAME
+ _ZN26QDeclarativeOpenMetaObject15propertyCreatedEiR20QMetaPropertyBuilder @ 1813 NONAME
+ _ZN26QDeclarativeOpenMetaObject15propertyWrittenEi @ 1814 NONAME
+ _ZN26QDeclarativeOpenMetaObject8metaCallEN11QMetaObject4CallEiPPv @ 1815 NONAME
+ _ZN26QDeclarativeOpenMetaObject8setValueERK10QByteArrayRK8QVariant @ 1816 NONAME
+ _ZN26QDeclarativeOpenMetaObject8setValueEiRK8QVariant @ 1817 NONAME
+ _ZN26QDeclarativeOpenMetaObject9setCachedEb @ 1818 NONAME
+ _ZN26QDeclarativeOpenMetaObjectC1EP7QObjectP30QDeclarativeOpenMetaObjectTypeb @ 1819 NONAME
+ _ZN26QDeclarativeOpenMetaObjectC1EP7QObjectb @ 1820 NONAME
+ _ZN26QDeclarativeOpenMetaObjectC2EP7QObjectP30QDeclarativeOpenMetaObjectTypeb @ 1821 NONAME
+ _ZN26QDeclarativeOpenMetaObjectC2EP7QObjectb @ 1822 NONAME
+ _ZN26QDeclarativeOpenMetaObjectD0Ev @ 1823 NONAME
+ _ZN26QDeclarativeOpenMetaObjectD1Ev @ 1824 NONAME
+ _ZN26QDeclarativeOpenMetaObjectD2Ev @ 1825 NONAME
+ _ZN26QDeclarativeOpenMetaObjectixERK10QByteArray @ 1826 NONAME
+ _ZN26QDeclarativeOpenMetaObjectixEi @ 1827 NONAME
+ _ZN26QDeclarativeStateOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 1828 NONAME
+ _ZN26QDeclarativeStateOperation11qt_metacastEPKc @ 1829 NONAME
+ _ZN26QDeclarativeStateOperation16staticMetaObjectE @ 1830 NONAME DATA 16
+ _ZN26QDeclarativeStateOperation19getStaticMetaObjectEv @ 1831 NONAME
+ _ZN26QDeclarativeStateOperation7actionsEv @ 1832 NONAME
+ _ZN26QDeclarativeStateOperationC1ER14QObjectPrivateP7QObject @ 1833 NONAME
+ _ZN26QDeclarativeStateOperationC2ER14QObjectPrivateP7QObject @ 1834 NONAME
+ _ZN27QDeclarativeAbstractBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 1835 NONAME
+ _ZN27QDeclarativeAbstractBinding11addToObjectEP7QObject @ 1836 NONAME
+ _ZN27QDeclarativeAbstractBinding16removeFromObjectEv @ 1837 NONAME
+ _ZN27QDeclarativeAbstractBinding5clearEv @ 1838 NONAME
+ _ZN27QDeclarativeAbstractBinding7destroyEv @ 1839 NONAME
+ _ZN27QDeclarativeAbstractBindingC2Ev @ 1840 NONAME
+ _ZN27QDeclarativeAbstractBindingD0Ev @ 1841 NONAME
+ _ZN27QDeclarativeAbstractBindingD1Ev @ 1842 NONAME
+ _ZN27QDeclarativeAbstractBindingD2Ev @ 1843 NONAME
+ _ZN27QDeclarativeDebugConnection11qt_metacallEN11QMetaObject4CallEiPPv @ 1844 NONAME
+ _ZN27QDeclarativeDebugConnection11qt_metacastEPKc @ 1845 NONAME
+ _ZN27QDeclarativeDebugConnection16staticMetaObjectE @ 1846 NONAME DATA 16
+ _ZN27QDeclarativeDebugConnection19getStaticMetaObjectEv @ 1847 NONAME
+ _ZN27QDeclarativeDebugConnectionC1EP7QObject @ 1848 NONAME
+ _ZN27QDeclarativeDebugConnectionC2EP7QObject @ 1849 NONAME
+ _ZN27QDeclarativeDomValueBindingC1ERKS_ @ 1850 NONAME
+ _ZN27QDeclarativeDomValueBindingC1Ev @ 1851 NONAME
+ _ZN27QDeclarativeDomValueBindingC2ERKS_ @ 1852 NONAME
+ _ZN27QDeclarativeDomValueBindingC2Ev @ 1853 NONAME
+ _ZN27QDeclarativeDomValueBindingD1Ev @ 1854 NONAME
+ _ZN27QDeclarativeDomValueBindingD2Ev @ 1855 NONAME
+ _ZN27QDeclarativeDomValueBindingaSERKS_ @ 1856 NONAME
+ _ZN27QDeclarativeDomValueLiteralC1ERKS_ @ 1857 NONAME
+ _ZN27QDeclarativeDomValueLiteralC1Ev @ 1858 NONAME
+ _ZN27QDeclarativeDomValueLiteralC2ERKS_ @ 1859 NONAME
+ _ZN27QDeclarativeDomValueLiteralC2Ev @ 1860 NONAME
+ _ZN27QDeclarativeDomValueLiteralD1Ev @ 1861 NONAME
+ _ZN27QDeclarativeDomValueLiteralD2Ev @ 1862 NONAME
+ _ZN27QDeclarativeDomValueLiteralaSERKS_ @ 1863 NONAME
+ _ZN27QDeclarativeExtensionPlugin11qt_metacallEN11QMetaObject4CallEiPPv @ 1864 NONAME
+ _ZN27QDeclarativeExtensionPlugin11qt_metacastEPKc @ 1865 NONAME
+ _ZN27QDeclarativeExtensionPlugin16initializeEngineEP18QDeclarativeEnginePKc @ 1866 NONAME
+ _ZN27QDeclarativeExtensionPlugin16staticMetaObjectE @ 1867 NONAME DATA 16
+ _ZN27QDeclarativeExtensionPlugin19getStaticMetaObjectEv @ 1868 NONAME
+ _ZN27QDeclarativeExtensionPluginC2EP7QObject @ 1869 NONAME
+ _ZN27QDeclarativeExtensionPluginD0Ev @ 1870 NONAME
+ _ZN27QDeclarativeExtensionPluginD1Ev @ 1871 NONAME
+ _ZN27QDeclarativeExtensionPluginD2Ev @ 1872 NONAME
+ _ZN27QDeclarativeGridScaledImage12stringToRuleERK7QString @ 1873 NONAME
+ _ZN27QDeclarativeGridScaledImageC1EP9QIODevice @ 1874 NONAME
+ _ZN27QDeclarativeGridScaledImageC1ERKS_ @ 1875 NONAME
+ _ZN27QDeclarativeGridScaledImageC1Ev @ 1876 NONAME
+ _ZN27QDeclarativeGridScaledImageC2EP9QIODevice @ 1877 NONAME
+ _ZN27QDeclarativeGridScaledImageC2ERKS_ @ 1878 NONAME
+ _ZN27QDeclarativeGridScaledImageC2Ev @ 1879 NONAME
+ _ZN27QDeclarativeGridScaledImageaSERKS_ @ 1880 NONAME
+ _ZN27QDeclarativePropertyChanges11qt_metacallEN11QMetaObject4CallEiPPv @ 1881 NONAME
+ _ZN27QDeclarativePropertyChanges11qt_metacastEPKc @ 1882 NONAME
+ _ZN27QDeclarativePropertyChanges13setIsExplicitEb @ 1883 NONAME
+ _ZN27QDeclarativePropertyChanges16staticMetaObjectE @ 1884 NONAME DATA 16
+ _ZN27QDeclarativePropertyChanges19getStaticMetaObjectEv @ 1885 NONAME
+ _ZN27QDeclarativePropertyChanges21setRestoreEntryValuesEb @ 1886 NONAME
+ _ZN27QDeclarativePropertyChanges7actionsEv @ 1887 NONAME
+ _ZN27QDeclarativePropertyChanges9setObjectEP7QObject @ 1888 NONAME
+ _ZN27QDeclarativePropertyChangesC1Ev @ 1889 NONAME
+ _ZN27QDeclarativePropertyChangesC2Ev @ 1890 NONAME
+ _ZN27QDeclarativePropertyChangesD0Ev @ 1891 NONAME
+ _ZN27QDeclarativePropertyChangesD1Ev @ 1892 NONAME
+ _ZN27QDeclarativePropertyChangesD2Ev @ 1893 NONAME
+ _ZN27QDeclarativePropertyPrivate10canConvertEPK11QMetaObjectS2_ @ 1894 NONAME
+ _ZN27QDeclarativePropertyPrivate10setBindingEP7QObjectiiP27QDeclarativeAbstractBinding6QFlagsINS_9WriteFlagEE @ 1895 NONAME
+ _ZN27QDeclarativePropertyPrivate10setBindingERK20QDeclarativePropertyP27QDeclarativeAbstractBinding6QFlagsINS_9WriteFlagEE @ 1896 NONAME
+ _ZN27QDeclarativePropertyPrivate11initDefaultEP7QObject @ 1897 NONAME
+ _ZN27QDeclarativePropertyPrivate12bindingIndexERK20QDeclarativeProperty @ 1898 NONAME
+ _ZN27QDeclarativePropertyPrivate12initPropertyEP7QObjectRK7QString @ 1899 NONAME
+ _ZN27QDeclarativePropertyPrivate12savePropertyEPK11QMetaObjecti @ 1900 NONAME
+ _ZN27QDeclarativePropertyPrivate13saveValueTypeEPK11QMetaObjectiS2_i @ 1901 NONAME
+ _ZN27QDeclarativePropertyPrivate16signalExpressionERK20QDeclarativeProperty @ 1902 NONAME
+ _ZN27QDeclarativePropertyPrivate17readValuePropertyEv @ 1903 NONAME
+ _ZN27QDeclarativePropertyPrivate17writeEnumPropertyERK13QMetaPropertyiP7QObjectRK8QVarianti @ 1904 NONAME
+ _ZN27QDeclarativePropertyPrivate18valueTypeCoreIndexERK20QDeclarativeProperty @ 1905 NONAME
+ _ZN27QDeclarativePropertyPrivate18writeValuePropertyERK8QVariant6QFlagsINS_9WriteFlagEE @ 1906 NONAME
+ _ZN27QDeclarativePropertyPrivate19setSignalExpressionERK20QDeclarativePropertyP22QDeclarativeExpression @ 1907 NONAME
+ _ZN27QDeclarativePropertyPrivate20rawMetaObjectForTypeEP25QDeclarativeEnginePrivatei @ 1908 NONAME
+ _ZN27QDeclarativePropertyPrivate5equalEPK11QMetaObjectS2_ @ 1909 NONAME
+ _ZN27QDeclarativePropertyPrivate5writeEP7QObjectRKN25QDeclarativePropertyCache4DataERK8QVariantP23QDeclarativeContextData6QFlagsINS_9WriteFlagEE @ 1910 NONAME
+ _ZN27QDeclarativePropertyPrivate5writeERK20QDeclarativePropertyRK8QVariant6QFlagsINS_9WriteFlagEE @ 1911 NONAME
+ _ZN27QDeclarativePropertyPrivate7bindingERK20QDeclarativeProperty @ 1912 NONAME
+ _ZN27QDeclarativePropertyPrivate7restoreERK10QByteArrayP7QObjectP23QDeclarativeContextData @ 1913 NONAME
+ _ZN27QDeclarativeVisualDataModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1914 NONAME
+ _ZN27QDeclarativeVisualDataModel11qt_metacastEPKc @ 1915 NONAME
+ _ZN27QDeclarativeVisualDataModel11setDelegateEP21QDeclarativeComponent @ 1916 NONAME
+ _ZN27QDeclarativeVisualDataModel11stringValueEiRK7QString @ 1917 NONAME
+ _ZN27QDeclarativeVisualDataModel12_q_rowsMovedERK11QModelIndexiiS2_i @ 1918 NONAME
+ _ZN27QDeclarativeVisualDataModel12completeItemEv @ 1919 NONAME
+ _ZN27QDeclarativeVisualDataModel12setRootIndexERK11QModelIndex @ 1920 NONAME
+ _ZN27QDeclarativeVisualDataModel13_q_itemsMovedEiii @ 1921 NONAME
+ _ZN27QDeclarativeVisualDataModel13_q_modelResetEv @ 1922 NONAME
+ _ZN27QDeclarativeVisualDataModel14_q_dataChangedERK11QModelIndexS2_ @ 1923 NONAME
+ _ZN27QDeclarativeVisualDataModel14_q_rowsRemovedERK11QModelIndexii @ 1924 NONAME
+ _ZN27QDeclarativeVisualDataModel14createdPackageEiP19QDeclarativePackage @ 1925 NONAME
+ _ZN27QDeclarativeVisualDataModel15_q_itemsChangedEiiRK5QListIiE @ 1926 NONAME
+ _ZN27QDeclarativeVisualDataModel15_q_itemsRemovedEii @ 1927 NONAME
+ _ZN27QDeclarativeVisualDataModel15_q_rowsInsertedERK11QModelIndexii @ 1928 NONAME
+ _ZN27QDeclarativeVisualDataModel16_q_itemsInsertedEii @ 1929 NONAME
+ _ZN27QDeclarativeVisualDataModel16rootIndexChangedEv @ 1930 NONAME
+ _ZN27QDeclarativeVisualDataModel16staticMetaObjectE @ 1931 NONAME DATA 16
+ _ZN27QDeclarativeVisualDataModel17_q_createdPackageEiP19QDeclarativePackage @ 1932 NONAME
+ _ZN27QDeclarativeVisualDataModel17destroyingPackageEP19QDeclarativePackage @ 1933 NONAME
+ _ZN27QDeclarativeVisualDataModel19getStaticMetaObjectEv @ 1934 NONAME
+ _ZN27QDeclarativeVisualDataModel20_q_destroyingPackageEP19QDeclarativePackage @ 1935 NONAME
+ _ZN27QDeclarativeVisualDataModel4itemEiRK10QByteArrayb @ 1936 NONAME
+ _ZN27QDeclarativeVisualDataModel4itemEib @ 1937 NONAME
+ _ZN27QDeclarativeVisualDataModel5partsEv @ 1938 NONAME
+ _ZN27QDeclarativeVisualDataModel7releaseEP16QDeclarativeItem @ 1939 NONAME
+ _ZN27QDeclarativeVisualDataModel7setPartERK7QString @ 1940 NONAME
+ _ZN27QDeclarativeVisualDataModel8evaluateEiRK7QStringP7QObject @ 1941 NONAME
+ _ZN27QDeclarativeVisualDataModel8setModelERK8QVariant @ 1942 NONAME
+ _ZN27QDeclarativeVisualDataModelC1EP19QDeclarativeContext @ 1943 NONAME
+ _ZN27QDeclarativeVisualDataModelC1Ev @ 1944 NONAME
+ _ZN27QDeclarativeVisualDataModelC2EP19QDeclarativeContext @ 1945 NONAME
+ _ZN27QDeclarativeVisualDataModelC2Ev @ 1946 NONAME
+ _ZN27QDeclarativeVisualDataModelD0Ev @ 1947 NONAME
+ _ZN27QDeclarativeVisualDataModelD1Ev @ 1948 NONAME
+ _ZN27QDeclarativeVisualDataModelD2Ev @ 1949 NONAME
+ _ZN27QDeclarativeVisualItemModel11qt_metacallEN11QMetaObject4CallEiPPv @ 1950 NONAME
+ _ZN27QDeclarativeVisualItemModel11qt_metacastEPKc @ 1951 NONAME
+ _ZN27QDeclarativeVisualItemModel11stringValueEiRK7QString @ 1952 NONAME
+ _ZN27QDeclarativeVisualItemModel12completeItemEv @ 1953 NONAME
+ _ZN27QDeclarativeVisualItemModel15childrenChangedEv @ 1954 NONAME
+ _ZN27QDeclarativeVisualItemModel16staticMetaObjectE @ 1955 NONAME DATA 16
+ _ZN27QDeclarativeVisualItemModel19getStaticMetaObjectEv @ 1956 NONAME
+ _ZN27QDeclarativeVisualItemModel21qmlAttachedPropertiesEP7QObject @ 1957 NONAME
+ _ZN27QDeclarativeVisualItemModel4itemEib @ 1958 NONAME
+ _ZN27QDeclarativeVisualItemModel7releaseEP16QDeclarativeItem @ 1959 NONAME
+ _ZN27QDeclarativeVisualItemModel8childrenEv @ 1960 NONAME
+ _ZN27QDeclarativeVisualItemModel8evaluateEiRK7QStringP7QObject @ 1961 NONAME
+ _ZN27QDeclarativeVisualItemModelC1Ev @ 1962 NONAME
+ _ZN27QDeclarativeVisualItemModelC2Ev @ 1963 NONAME
+ _ZN28QDeclarativeCustomParserNodeC1ERKS_ @ 1964 NONAME
+ _ZN28QDeclarativeCustomParserNodeC1Ev @ 1965 NONAME
+ _ZN28QDeclarativeCustomParserNodeC2ERKS_ @ 1966 NONAME
+ _ZN28QDeclarativeCustomParserNodeC2Ev @ 1967 NONAME
+ _ZN28QDeclarativeCustomParserNodeD1Ev @ 1968 NONAME
+ _ZN28QDeclarativeCustomParserNodeD2Ev @ 1969 NONAME
+ _ZN28QDeclarativeCustomParserNodeaSERKS_ @ 1970 NONAME
+ _ZN28QDeclarativeDebugObjectQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 1971 NONAME
+ _ZN28QDeclarativeDebugObjectQuery11qt_metacastEPKc @ 1972 NONAME
+ _ZN28QDeclarativeDebugObjectQuery16staticMetaObjectE @ 1973 NONAME DATA 16
+ _ZN28QDeclarativeDebugObjectQuery19getStaticMetaObjectEv @ 1974 NONAME
+ _ZN28QDeclarativeDebugObjectQueryC1EP7QObject @ 1975 NONAME
+ _ZN28QDeclarativeDebugObjectQueryC2EP7QObject @ 1976 NONAME
+ _ZN28QDeclarativeDebugObjectQueryD0Ev @ 1977 NONAME
+ _ZN28QDeclarativeDebugObjectQueryD1Ev @ 1978 NONAME
+ _ZN28QDeclarativeDebugObjectQueryD2Ev @ 1979 NONAME
+ _ZN28QDeclarativeStringConverters14dateFromStringERK7QStringPb @ 1980 NONAME
+ _ZN28QDeclarativeStringConverters14timeFromStringERK7QStringPb @ 1981 NONAME
+ _ZN28QDeclarativeStringConverters15colorFromStringERK7QStringPb @ 1982 NONAME
+ _ZN28QDeclarativeStringConverters15rectFFromStringERK7QStringPb @ 1983 NONAME
+ _ZN28QDeclarativeStringConverters15sizeFFromStringERK7QStringPb @ 1984 NONAME
+ _ZN28QDeclarativeStringConverters16pointFFromStringERK7QStringPb @ 1985 NONAME
+ _ZN28QDeclarativeStringConverters17variantFromStringERK7QString @ 1986 NONAME
+ _ZN28QDeclarativeStringConverters17variantFromStringERK7QStringiPb @ 1987 NONAME
+ _ZN28QDeclarativeStringConverters18dateTimeFromStringERK7QStringPb @ 1988 NONAME
+ _ZN28QDeclarativeStringConverters18vector3DFromStringERK7QStringPb @ 1989 NONAME
+ _ZN28QDeclarativeValueTypeFactory11isValueTypeEi @ 1990 NONAME
+ _ZN28QDeclarativeValueTypeFactory18registerValueTypesEv @ 1991 NONAME
+ _ZN28QDeclarativeValueTypeFactory9valueTypeEi @ 1992 NONAME
+ _ZN28QDeclarativeValueTypeFactoryC1Ev @ 1993 NONAME
+ _ZN28QDeclarativeValueTypeFactoryC2Ev @ 1994 NONAME
+ _ZN28QDeclarativeValueTypeFactoryD1Ev @ 1995 NONAME
+ _ZN28QDeclarativeValueTypeFactoryD2Ev @ 1996 NONAME
+ _ZN28QDeclarativeXmlListModelRole11nameChangedEv @ 1997 NONAME
+ _ZN28QDeclarativeXmlListModelRole11qt_metacallEN11QMetaObject4CallEiPPv @ 1998 NONAME
+ _ZN28QDeclarativeXmlListModelRole11qt_metacastEPKc @ 1999 NONAME
+ _ZN28QDeclarativeXmlListModelRole12isKeyChangedEv @ 2000 NONAME
+ _ZN28QDeclarativeXmlListModelRole12queryChangedEv @ 2001 NONAME
+ _ZN28QDeclarativeXmlListModelRole16staticMetaObjectE @ 2002 NONAME DATA 16
+ _ZN28QDeclarativeXmlListModelRole19getStaticMetaObjectEv @ 2003 NONAME
+ _ZN29QDeclarativeDebugEnginesQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 2004 NONAME
+ _ZN29QDeclarativeDebugEnginesQuery11qt_metacastEPKc @ 2005 NONAME
+ _ZN29QDeclarativeDebugEnginesQuery16staticMetaObjectE @ 2006 NONAME DATA 16
+ _ZN29QDeclarativeDebugEnginesQuery19getStaticMetaObjectEv @ 2007 NONAME
+ _ZN29QDeclarativeDebugEnginesQueryC1EP7QObject @ 2008 NONAME
+ _ZN29QDeclarativeDebugEnginesQueryC2EP7QObject @ 2009 NONAME
+ _ZN29QDeclarativeDebugEnginesQueryD0Ev @ 2010 NONAME
+ _ZN29QDeclarativeDebugEnginesQueryD1Ev @ 2011 NONAME
+ _ZN29QDeclarativeDebugEnginesQueryD2Ev @ 2012 NONAME
+ _ZN29QDeclarativeSmoothedAnimation10transitionER5QListI18QDeclarativeActionERS0_I20QDeclarativePropertyEN29QDeclarativeAbstractAnimation19TransitionDirectionE @ 2013 NONAME
+ _ZN29QDeclarativeSmoothedAnimation11qtAnimationEv @ 2014 NONAME
+ _ZN29QDeclarativeSmoothedAnimation11qt_metacallEN11QMetaObject4CallEiPPv @ 2015 NONAME
+ _ZN29QDeclarativeSmoothedAnimation11qt_metacastEPKc @ 2016 NONAME
+ _ZN29QDeclarativeSmoothedAnimation11setDurationEi @ 2017 NONAME
+ _ZN29QDeclarativeSmoothedAnimation11setVelocityEf @ 2018 NONAME
+ _ZN29QDeclarativeSmoothedAnimation15velocityChangedEv @ 2019 NONAME
+ _ZN29QDeclarativeSmoothedAnimation16setReversingModeENS_13ReversingModeE @ 2020 NONAME
+ _ZN29QDeclarativeSmoothedAnimation16staticMetaObjectE @ 2021 NONAME DATA 16
+ _ZN29QDeclarativeSmoothedAnimation19getStaticMetaObjectEv @ 2022 NONAME
+ _ZN29QDeclarativeSmoothedAnimation20reversingModeChangedEv @ 2023 NONAME
+ _ZN29QDeclarativeSmoothedAnimation20setMaximumEasingTimeEi @ 2024 NONAME
+ _ZN29QDeclarativeSmoothedAnimation24maximumEasingTimeChangedEv @ 2025 NONAME
+ _ZN29QDeclarativeSmoothedAnimationC1EP7QObject @ 2026 NONAME
+ _ZN29QDeclarativeSmoothedAnimationC2EP7QObject @ 2027 NONAME
+ _ZN29QDeclarativeSmoothedAnimationD0Ev @ 2028 NONAME
+ _ZN29QDeclarativeSmoothedAnimationD1Ev @ 2029 NONAME
+ _ZN29QDeclarativeSmoothedAnimationD2Ev @ 2030 NONAME
+ _ZN29QDeclarativeStateChangeScript11qt_metacallEN11QMetaObject4CallEiPPv @ 2031 NONAME
+ _ZN29QDeclarativeStateChangeScript11qt_metacastEPKc @ 2032 NONAME
+ _ZN29QDeclarativeStateChangeScript16staticMetaObjectE @ 2033 NONAME DATA 16
+ _ZN29QDeclarativeStateChangeScript19getStaticMetaObjectEv @ 2034 NONAME
+ _ZN29QDeclarativeStateChangeScript7actionsEv @ 2035 NONAME
+ _ZN29QDeclarativeStateChangeScript7executeEv @ 2036 NONAME
+ _ZN29QDeclarativeStateChangeScript7setNameERK7QString @ 2037 NONAME
+ _ZN29QDeclarativeStateChangeScript9setScriptERK24QDeclarativeScriptString @ 2038 NONAME
+ _ZN29QDeclarativeStateChangeScriptC1EP7QObject @ 2039 NONAME
+ _ZN29QDeclarativeStateChangeScriptC2EP7QObject @ 2040 NONAME
+ _ZN29QDeclarativeStateChangeScriptD0Ev @ 2041 NONAME
+ _ZN29QDeclarativeStateChangeScriptD1Ev @ 2042 NONAME
+ _ZN29QDeclarativeStateChangeScriptD2Ev @ 2043 NONAME
+ _ZN30QDeclarativeDebugFileReference13setLineNumberEi @ 2044 NONAME
+ _ZN30QDeclarativeDebugFileReference15setColumnNumberEi @ 2045 NONAME
+ _ZN30QDeclarativeDebugFileReference6setUrlERK4QUrl @ 2046 NONAME
+ _ZN30QDeclarativeDebugFileReferenceC1ERKS_ @ 2047 NONAME
+ _ZN30QDeclarativeDebugFileReferenceC1Ev @ 2048 NONAME
+ _ZN30QDeclarativeDebugFileReferenceC2ERKS_ @ 2049 NONAME
+ _ZN30QDeclarativeDebugFileReferenceC2Ev @ 2050 NONAME
+ _ZN30QDeclarativeDebugFileReferenceaSERKS_ @ 2051 NONAME
+ _ZN30QDeclarativeDebugPropertyWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 2052 NONAME
+ _ZN30QDeclarativeDebugPropertyWatch11qt_metacastEPKc @ 2053 NONAME
+ _ZN30QDeclarativeDebugPropertyWatch16staticMetaObjectE @ 2054 NONAME DATA 16
+ _ZN30QDeclarativeDebugPropertyWatch19getStaticMetaObjectEv @ 2055 NONAME
+ _ZN30QDeclarativeDebugPropertyWatchC1EP7QObject @ 2056 NONAME
+ _ZN30QDeclarativeDebugPropertyWatchC2EP7QObject @ 2057 NONAME
+ _ZN30QDeclarativeDomDynamicPropertyC1ERKS_ @ 2058 NONAME
+ _ZN30QDeclarativeDomDynamicPropertyC1Ev @ 2059 NONAME
+ _ZN30QDeclarativeDomDynamicPropertyC2ERKS_ @ 2060 NONAME
+ _ZN30QDeclarativeDomDynamicPropertyC2Ev @ 2061 NONAME
+ _ZN30QDeclarativeDomDynamicPropertyD1Ev @ 2062 NONAME
+ _ZN30QDeclarativeDomDynamicPropertyD2Ev @ 2063 NONAME
+ _ZN30QDeclarativeDomDynamicPropertyaSERKS_ @ 2064 NONAME
+ _ZN30QDeclarativeOpenMetaObjectType14createPropertyERK10QByteArray @ 2065 NONAME
+ _ZN30QDeclarativeOpenMetaObjectType15propertyCreatedEiR20QMetaPropertyBuilder @ 2066 NONAME
+ _ZN30QDeclarativeOpenMetaObjectTypeC1EPK11QMetaObjectP18QDeclarativeEngine @ 2067 NONAME
+ _ZN30QDeclarativeOpenMetaObjectTypeC2EPK11QMetaObjectP18QDeclarativeEngine @ 2068 NONAME
+ _ZN30QDeclarativeOpenMetaObjectTypeD0Ev @ 2069 NONAME
+ _ZN30QDeclarativeOpenMetaObjectTypeD1Ev @ 2070 NONAME
+ _ZN30QDeclarativeOpenMetaObjectTypeD2Ev @ 2071 NONAME
+ _ZN31QDeclarativeDomValueValueSourceC1ERKS_ @ 2072 NONAME
+ _ZN31QDeclarativeDomValueValueSourceC1Ev @ 2073 NONAME
+ _ZN31QDeclarativeDomValueValueSourceC2ERKS_ @ 2074 NONAME
+ _ZN31QDeclarativeDomValueValueSourceC2Ev @ 2075 NONAME
+ _ZN31QDeclarativeDomValueValueSourceD1Ev @ 2076 NONAME
+ _ZN31QDeclarativeDomValueValueSourceD2Ev @ 2077 NONAME
+ _ZN31QDeclarativeDomValueValueSourceaSERKS_ @ 2078 NONAME
+ _ZN31QDeclarativePropertyValueSourceC2Ev @ 2079 NONAME
+ _ZN31QDeclarativePropertyValueSourceD0Ev @ 2080 NONAME
+ _ZN31QDeclarativePropertyValueSourceD1Ev @ 2081 NONAME
+ _ZN31QDeclarativePropertyValueSourceD2Ev @ 2082 NONAME
+ _ZN32QDeclarativeCustomParserPropertyC1ERKS_ @ 2083 NONAME
+ _ZN32QDeclarativeCustomParserPropertyC1Ev @ 2084 NONAME
+ _ZN32QDeclarativeCustomParserPropertyC2ERKS_ @ 2085 NONAME
+ _ZN32QDeclarativeCustomParserPropertyC2Ev @ 2086 NONAME
+ _ZN32QDeclarativeCustomParserPropertyD1Ev @ 2087 NONAME
+ _ZN32QDeclarativeCustomParserPropertyD2Ev @ 2088 NONAME
+ _ZN32QDeclarativeCustomParserPropertyaSERKS_ @ 2089 NONAME
+ _ZN32QDeclarativeDebugEngineReferenceC1ERKS_ @ 2090 NONAME
+ _ZN32QDeclarativeDebugEngineReferenceC1Ei @ 2091 NONAME
+ _ZN32QDeclarativeDebugEngineReferenceC1Ev @ 2092 NONAME
+ _ZN32QDeclarativeDebugEngineReferenceC2ERKS_ @ 2093 NONAME
+ _ZN32QDeclarativeDebugEngineReferenceC2Ei @ 2094 NONAME
+ _ZN32QDeclarativeDebugEngineReferenceC2Ev @ 2095 NONAME
+ _ZN32QDeclarativeDebugEngineReferenceaSERKS_ @ 2096 NONAME
+ _ZN32QDeclarativeDebugExpressionQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 2097 NONAME
+ _ZN32QDeclarativeDebugExpressionQuery11qt_metacastEPKc @ 2098 NONAME
+ _ZN32QDeclarativeDebugExpressionQuery16staticMetaObjectE @ 2099 NONAME DATA 16
+ _ZN32QDeclarativeDebugExpressionQuery19getStaticMetaObjectEv @ 2100 NONAME
+ _ZN32QDeclarativeDebugExpressionQueryC1EP7QObject @ 2101 NONAME
+ _ZN32QDeclarativeDebugExpressionQueryC2EP7QObject @ 2102 NONAME
+ _ZN32QDeclarativeDebugExpressionQueryD0Ev @ 2103 NONAME
+ _ZN32QDeclarativeDebugExpressionQueryD1Ev @ 2104 NONAME
+ _ZN32QDeclarativeDebugExpressionQueryD2Ev @ 2105 NONAME
+ _ZN32QDeclarativeDebugObjectReferenceC1ERKS_ @ 2106 NONAME
+ _ZN32QDeclarativeDebugObjectReferenceC1Ei @ 2107 NONAME
+ _ZN32QDeclarativeDebugObjectReferenceC1Ev @ 2108 NONAME
+ _ZN32QDeclarativeDebugObjectReferenceC2ERKS_ @ 2109 NONAME
+ _ZN32QDeclarativeDebugObjectReferenceC2Ei @ 2110 NONAME
+ _ZN32QDeclarativeDebugObjectReferenceC2Ev @ 2111 NONAME
+ _ZN32QDeclarativeDebugObjectReferenceaSERKS_ @ 2112 NONAME
+ _ZN33QDeclarativeDebugContextReferenceC1ERKS_ @ 2113 NONAME
+ _ZN33QDeclarativeDebugContextReferenceC1Ev @ 2114 NONAME
+ _ZN33QDeclarativeDebugContextReferenceC2ERKS_ @ 2115 NONAME
+ _ZN33QDeclarativeDebugContextReferenceC2Ev @ 2116 NONAME
+ _ZN33QDeclarativeDebugContextReferenceaSERKS_ @ 2117 NONAME
+ _ZN33QDeclarativeDebugRootContextQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 2118 NONAME
+ _ZN33QDeclarativeDebugRootContextQuery11qt_metacastEPKc @ 2119 NONAME
+ _ZN33QDeclarativeDebugRootContextQuery16staticMetaObjectE @ 2120 NONAME DATA 16
+ _ZN33QDeclarativeDebugRootContextQuery19getStaticMetaObjectEv @ 2121 NONAME
+ _ZN33QDeclarativeDebugRootContextQueryC1EP7QObject @ 2122 NONAME
+ _ZN33QDeclarativeDebugRootContextQueryC2EP7QObject @ 2123 NONAME
+ _ZN33QDeclarativeDebugRootContextQueryD0Ev @ 2124 NONAME
+ _ZN33QDeclarativeDebugRootContextQueryD1Ev @ 2125 NONAME
+ _ZN33QDeclarativeDebugRootContextQueryD2Ev @ 2126 NONAME
+ _ZN34QDeclarativeDebugPropertyReferenceC1ERKS_ @ 2127 NONAME
+ _ZN34QDeclarativeDebugPropertyReferenceC1Ev @ 2128 NONAME
+ _ZN34QDeclarativeDebugPropertyReferenceC2ERKS_ @ 2129 NONAME
+ _ZN34QDeclarativeDebugPropertyReferenceC2Ev @ 2130 NONAME
+ _ZN34QDeclarativeDebugPropertyReferenceaSERKS_ @ 2131 NONAME
+ _ZN35QDeclarativeGraphicsObjectContainer10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 2132 NONAME
+ _ZN35QDeclarativeGraphicsObjectContainer11eventFilterEP7QObjectP6QEvent @ 2133 NONAME
+ _ZN35QDeclarativeGraphicsObjectContainer11qt_metacallEN11QMetaObject4CallEiPPv @ 2134 NONAME
+ _ZN35QDeclarativeGraphicsObjectContainer11qt_metacastEPKc @ 2135 NONAME
+ _ZN35QDeclarativeGraphicsObjectContainer16staticMetaObjectE @ 2136 NONAME DATA 16
+ _ZN35QDeclarativeGraphicsObjectContainer17setGraphicsObjectEP15QGraphicsObject @ 2137 NONAME
+ _ZN35QDeclarativeGraphicsObjectContainer19getStaticMetaObjectEv @ 2138 NONAME
+ _ZN35QDeclarativeGraphicsObjectContainer23setSynchronizedResizingEb @ 2139 NONAME
+ _ZN35QDeclarativeGraphicsObjectContainerC1EP16QDeclarativeItem @ 2140 NONAME
+ _ZN35QDeclarativeGraphicsObjectContainerC2EP16QDeclarativeItem @ 2141 NONAME
+ _ZN35QDeclarativeGraphicsObjectContainerD0Ev @ 2142 NONAME
+ _ZN35QDeclarativeGraphicsObjectContainerD1Ev @ 2143 NONAME
+ _ZN35QDeclarativeGraphicsObjectContainerD2Ev @ 2144 NONAME
+ _ZN36QDeclarativeDomValueValueInterceptorC1ERKS_ @ 2145 NONAME
+ _ZN36QDeclarativeDomValueValueInterceptorC1Ev @ 2146 NONAME
+ _ZN36QDeclarativeDomValueValueInterceptorC2ERKS_ @ 2147 NONAME
+ _ZN36QDeclarativeDomValueValueInterceptorC2Ev @ 2148 NONAME
+ _ZN36QDeclarativeDomValueValueInterceptorD1Ev @ 2149 NONAME
+ _ZN36QDeclarativeDomValueValueInterceptorD2Ev @ 2150 NONAME
+ _ZN36QDeclarativeDomValueValueInterceptoraSERKS_ @ 2151 NONAME
+ _ZN36QDeclarativePropertyValueInterceptorC2Ev @ 2152 NONAME
+ _ZN36QDeclarativePropertyValueInterceptorD0Ev @ 2153 NONAME
+ _ZN36QDeclarativePropertyValueInterceptorD1Ev @ 2154 NONAME
+ _ZN36QDeclarativePropertyValueInterceptorD2Ev @ 2155 NONAME
+ _ZN38QDeclarativeDebugObjectExpressionWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 2156 NONAME
+ _ZN38QDeclarativeDebugObjectExpressionWatch11qt_metacastEPKc @ 2157 NONAME
+ _ZN38QDeclarativeDebugObjectExpressionWatch16staticMetaObjectE @ 2158 NONAME DATA 16
+ _ZN38QDeclarativeDebugObjectExpressionWatch19getStaticMetaObjectEv @ 2159 NONAME
+ _ZN38QDeclarativeDebugObjectExpressionWatchC1EP7QObject @ 2160 NONAME
+ _ZN38QDeclarativeDebugObjectExpressionWatchC2EP7QObject @ 2161 NONAME
+ _ZN39QDeclarativeNetworkAccessManagerFactoryD0Ev @ 2162 NONAME
+ _ZN39QDeclarativeNetworkAccessManagerFactoryD1Ev @ 2163 NONAME
+ _ZN39QDeclarativeNetworkAccessManagerFactoryD2Ev @ 2164 NONAME
+ _ZN7QPacket5clearEv @ 2165 NONAME
+ _ZN7QPacketC1ERK10QByteArray @ 2166 NONAME
+ _ZN7QPacketC1ERKS_ @ 2167 NONAME
+ _ZN7QPacketC1Ev @ 2168 NONAME
+ _ZN7QPacketC2ERK10QByteArray @ 2169 NONAME
+ _ZN7QPacketC2ERKS_ @ 2170 NONAME
+ _ZN7QPacketC2Ev @ 2171 NONAME
+ _ZN7QPacketD0Ev @ 2172 NONAME
+ _ZN7QPacketD1Ev @ 2173 NONAME
+ _ZN7QPacketD2Ev @ 2174 NONAME
+ _ZNK15QDeclarativePen10metaObjectEv @ 2175 NONAME
+ _ZNK15QDeclarativeRow10metaObjectEv @ 2176 NONAME
+ _ZNK15QPacketProtocol10metaObjectEv @ 2177 NONAME
+ _ZNK15QPacketProtocol16packetsAvailableEv @ 2178 NONAME
+ _ZNK15QPacketProtocol17maximumPacketSizeEv @ 2179 NONAME
+ _ZNK16QDeclarativeBind10metaObjectEv @ 2180 NONAME
+ _ZNK16QDeclarativeBind4whenEv @ 2181 NONAME
+ _ZNK16QDeclarativeBind5valueEv @ 2182 NONAME
+ _ZNK16QDeclarativeBind8propertyEv @ 2183 NONAME
+ _ZNK16QDeclarativeDrag10metaObjectEv @ 2184 NONAME
+ _ZNK16QDeclarativeDrag4axisEv @ 2185 NONAME
+ _ZNK16QDeclarativeDrag4xmaxEv @ 2186 NONAME
+ _ZNK16QDeclarativeDrag4xminEv @ 2187 NONAME
+ _ZNK16QDeclarativeDrag4ymaxEv @ 2188 NONAME
+ _ZNK16QDeclarativeDrag4yminEv @ 2189 NONAME
+ _ZNK16QDeclarativeDrag6targetEv @ 2190 NONAME
+ _ZNK16QDeclarativeFlow10metaObjectEv @ 2191 NONAME
+ _ZNK16QDeclarativeFlow4flowEv @ 2192 NONAME
+ _ZNK16QDeclarativeGrid10metaObjectEv @ 2193 NONAME
+ _ZNK16QDeclarativeItem10metaObjectEv @ 2194 NONAME
+ _ZNK16QDeclarativeItem10parentItemEv @ 2195 NONAME
+ _ZNK16QDeclarativeItem10wantsFocusEv @ 2196 NONAME
+ _ZNK16QDeclarativeItem10widthValidEv @ 2197 NONAME
+ _ZNK16QDeclarativeItem11heightValidEv @ 2198 NONAME
+ _ZNK16QDeclarativeItem11mapFromItemERK12QScriptValueff @ 2199 NONAME
+ _ZNK16QDeclarativeItem12boundingRectEv @ 2200 NONAME
+ _ZNK16QDeclarativeItem13implicitWidthEv @ 2201 NONAME
+ _ZNK16QDeclarativeItem13keepMouseGrabEv @ 2202 NONAME
+ _ZNK16QDeclarativeItem14baselineOffsetEv @ 2203 NONAME
+ _ZNK16QDeclarativeItem14implicitHeightEv @ 2204 NONAME
+ _ZNK16QDeclarativeItem14verticalCenterEv @ 2205 NONAME
+ _ZNK16QDeclarativeItem15transformOriginEv @ 2206 NONAME
+ _ZNK16QDeclarativeItem16horizontalCenterEv @ 2207 NONAME
+ _ZNK16QDeclarativeItem16inputMethodQueryEN2Qt16InputMethodQueryE @ 2208 NONAME
+ _ZNK16QDeclarativeItem19isComponentCompleteEv @ 2209 NONAME
+ _ZNK16QDeclarativeItem3topEv @ 2210 NONAME
+ _ZNK16QDeclarativeItem4clipEv @ 2211 NONAME
+ _ZNK16QDeclarativeItem4leftEv @ 2212 NONAME
+ _ZNK16QDeclarativeItem5rightEv @ 2213 NONAME
+ _ZNK16QDeclarativeItem5stateEv @ 2214 NONAME
+ _ZNK16QDeclarativeItem5widthEv @ 2215 NONAME
+ _ZNK16QDeclarativeItem6bottomEv @ 2216 NONAME
+ _ZNK16QDeclarativeItem6heightEv @ 2217 NONAME
+ _ZNK16QDeclarativeItem6smoothEv @ 2218 NONAME
+ _ZNK16QDeclarativeItem8baselineEv @ 2219 NONAME
+ _ZNK16QDeclarativeItem8hasFocusEv @ 2220 NONAME
+ _ZNK16QDeclarativeItem9mapToItemERK12QScriptValueff @ 2221 NONAME
+ _ZNK16QDeclarativePath10attributesEv @ 2222 NONAME
+ _ZNK16QDeclarativePath10metaObjectEv @ 2223 NONAME
+ _ZNK16QDeclarativePath11attributeAtERK7QStringf @ 2224 NONAME
+ _ZNK16QDeclarativePath16createPointCacheEv @ 2225 NONAME
+ _ZNK16QDeclarativePath4pathEv @ 2226 NONAME
+ _ZNK16QDeclarativePath6startXEv @ 2227 NONAME
+ _ZNK16QDeclarativePath6startYEv @ 2228 NONAME
+ _ZNK16QDeclarativePath7pointAtEf @ 2229 NONAME
+ _ZNK16QDeclarativePath8isClosedEv @ 2230 NONAME
+ _ZNK16QDeclarativeText10metaObjectEv @ 2231 NONAME
+ _ZNK16QDeclarativeText10styleColorEv @ 2232 NONAME
+ _ZNK16QDeclarativeText10textFormatEv @ 2233 NONAME
+ _ZNK16QDeclarativeText4fontEv @ 2234 NONAME
+ _ZNK16QDeclarativeText4textEv @ 2235 NONAME
+ _ZNK16QDeclarativeText4wrapEv @ 2236 NONAME
+ _ZNK16QDeclarativeText5colorEv @ 2237 NONAME
+ _ZNK16QDeclarativeText5styleEv @ 2238 NONAME
+ _ZNK16QDeclarativeText6hAlignEv @ 2239 NONAME
+ _ZNK16QDeclarativeText6vAlignEv @ 2240 NONAME
+ _ZNK16QDeclarativeText9elideModeEv @ 2241 NONAME
+ _ZNK16QDeclarativeType10metaObjectEv @ 2242 NONAME
+ _ZNK16QDeclarativeType11isCreatableEv @ 2243 NONAME
+ _ZNK16QDeclarativeType11isInterfaceEv @ 2244 NONAME
+ _ZNK16QDeclarativeType11qListTypeIdEv @ 2245 NONAME
+ _ZNK16QDeclarativeType11qmlTypeNameEv @ 2246 NONAME
+ _ZNK16QDeclarativeType12customParserEv @ 2247 NONAME
+ _ZNK16QDeclarativeType12interfaceIIdEv @ 2248 NONAME
+ _ZNK16QDeclarativeType12majorVersionEv @ 2249 NONAME
+ _ZNK16QDeclarativeType12minorVersionEv @ 2250 NONAME
+ _ZNK16QDeclarativeType14baseMetaObjectEv @ 2251 NONAME
+ _ZNK16QDeclarativeType16parserStatusCastEv @ 2252 NONAME
+ _ZNK16QDeclarativeType18availableInVersionEii @ 2253 NONAME
+ _ZNK16QDeclarativeType22attachedPropertiesTypeEv @ 2254 NONAME
+ _ZNK16QDeclarativeType23propertyValueSourceCastEv @ 2255 NONAME
+ _ZNK16QDeclarativeType26attachedPropertiesFunctionEv @ 2256 NONAME
+ _ZNK16QDeclarativeType28propertyValueInterceptorCastEv @ 2257 NONAME
+ _ZNK16QDeclarativeType5indexEv @ 2258 NONAME
+ _ZNK16QDeclarativeType6createEPP7QObjectPPvj @ 2259 NONAME
+ _ZNK16QDeclarativeType6createEv @ 2260 NONAME
+ _ZNK16QDeclarativeType6typeIdEv @ 2261 NONAME
+ _ZNK16QDeclarativeType8typeNameEv @ 2262 NONAME
+ _ZNK16QDeclarativeView10metaObjectEv @ 2263 NONAME
+ _ZNK16QDeclarativeView10resizeModeEv @ 2264 NONAME
+ _ZNK16QDeclarativeView10rootObjectEv @ 2265 NONAME
+ _ZNK16QDeclarativeView6errorsEv @ 2266 NONAME
+ _ZNK16QDeclarativeView6sourceEv @ 2267 NONAME
+ _ZNK16QDeclarativeView6statusEv @ 2268 NONAME
+ _ZNK16QDeclarativeView8sizeHintEv @ 2269 NONAME
+ _ZNK16QMetaEnumBuilder3keyEi @ 2270 NONAME
+ _ZNK16QMetaEnumBuilder4nameEv @ 2271 NONAME
+ _ZNK16QMetaEnumBuilder5valueEi @ 2272 NONAME
+ _ZNK16QMetaEnumBuilder6d_funcEv @ 2273 NONAME
+ _ZNK16QMetaEnumBuilder6isFlagEv @ 2274 NONAME
+ _ZNK16QMetaEnumBuilder8keyCountEv @ 2275 NONAME
+ _ZNK17QDeclarativeCurve10metaObjectEv @ 2276 NONAME
+ _ZNK17QDeclarativeCurve1xEv @ 2277 NONAME
+ _ZNK17QDeclarativeCurve1yEv @ 2278 NONAME
+ _ZNK17QDeclarativeError11descriptionEv @ 2279 NONAME
+ _ZNK17QDeclarativeError3urlEv @ 2280 NONAME
+ _ZNK17QDeclarativeError4lineEv @ 2281 NONAME
+ _ZNK17QDeclarativeError6columnEv @ 2282 NONAME
+ _ZNK17QDeclarativeError7isValidEv @ 2283 NONAME
+ _ZNK17QDeclarativeError8toStringEv @ 2284 NONAME
+ _ZNK17QDeclarativeImage10metaObjectEv @ 2285 NONAME
+ _ZNK17QDeclarativeImage12paintedWidthEv @ 2286 NONAME
+ _ZNK17QDeclarativeImage13paintedHeightEv @ 2287 NONAME
+ _ZNK17QDeclarativeImage6pixmapEv @ 2288 NONAME
+ _ZNK17QDeclarativeImage8fillModeEv @ 2289 NONAME
+ _ZNK17QDeclarativeState10metaObjectEv @ 2290 NONAME
+ _ZNK17QDeclarativeState10stateGroupEv @ 2291 NONAME
+ _ZNK17QDeclarativeState11isWhenKnownEv @ 2292 NONAME
+ _ZNK17QDeclarativeState11operationAtEi @ 2293 NONAME
+ _ZNK17QDeclarativeState14operationCountEv @ 2294 NONAME
+ _ZNK17QDeclarativeState4nameEv @ 2295 NONAME
+ _ZNK17QDeclarativeState4whenEv @ 2296 NONAME
+ _ZNK17QDeclarativeState7extendsEv @ 2297 NONAME
+ _ZNK17QDeclarativeTimer10metaObjectEv @ 2298 NONAME
+ _ZNK17QDeclarativeTimer11isRepeatingEv @ 2299 NONAME
+ _ZNK17QDeclarativeTimer16triggeredOnStartEv @ 2300 NONAME
+ _ZNK17QDeclarativeTimer8intervalEv @ 2301 NONAME
+ _ZNK17QDeclarativeTimer9isRunningEv @ 2302 NONAME
+ _ZNK18QDeclarativeColumn10metaObjectEv @ 2303 NONAME
+ _ZNK18QDeclarativeEngine10metaObjectEv @ 2304 NONAME
+ _ZNK18QDeclarativeEngine13imageProviderERK7QString @ 2305 NONAME
+ _ZNK18QDeclarativeEngine14importPathListEv @ 2306 NONAME
+ _ZNK18QDeclarativeEngine18offlineStoragePathEv @ 2307 NONAME
+ _ZNK18QDeclarativeEngine20networkAccessManagerEv @ 2308 NONAME
+ _ZNK18QDeclarativeEngine27networkAccessManagerFactoryEv @ 2309 NONAME
+ _ZNK18QDeclarativeEngine7baseUrlEv @ 2310 NONAME
+ _ZNK18QDeclarativeLoader10metaObjectEv @ 2311 NONAME
+ _ZNK18QDeclarativeLoader10resizeModeEv @ 2312 NONAME
+ _ZNK18QDeclarativeLoader15sourceComponentEv @ 2313 NONAME
+ _ZNK18QDeclarativeLoader4itemEv @ 2314 NONAME
+ _ZNK18QDeclarativeLoader6sourceEv @ 2315 NONAME
+ _ZNK18QDeclarativeLoader6statusEv @ 2316 NONAME
+ _ZNK18QDeclarativeLoader8progressEv @ 2317 NONAME
+ _ZNK18QMetaMethodBuilder10attributesEv @ 2318 NONAME
+ _ZNK18QMetaMethodBuilder10methodTypeEv @ 2319 NONAME
+ _ZNK18QMetaMethodBuilder10returnTypeEv @ 2320 NONAME
+ _ZNK18QMetaMethodBuilder14parameterNamesEv @ 2321 NONAME
+ _ZNK18QMetaMethodBuilder3tagEv @ 2322 NONAME
+ _ZNK18QMetaMethodBuilder5indexEv @ 2323 NONAME
+ _ZNK18QMetaMethodBuilder6accessEv @ 2324 NONAME
+ _ZNK18QMetaMethodBuilder6d_funcEv @ 2325 NONAME
+ _ZNK18QMetaMethodBuilder9signatureEv @ 2326 NONAME
+ _ZNK18QMetaObjectBuilder10enumeratorEi @ 2327 NONAME
+ _ZNK18QMetaObjectBuilder10superClassEv @ 2328 NONAME
+ _ZNK18QMetaObjectBuilder11constructorEi @ 2329 NONAME
+ _ZNK18QMetaObjectBuilder11methodCountEv @ 2330 NONAME
+ _ZNK18QMetaObjectBuilder12toMetaObjectEv @ 2331 NONAME
+ _ZNK18QMetaObjectBuilder13classInfoNameEi @ 2332 NONAME
+ _ZNK18QMetaObjectBuilder13propertyCountEv @ 2333 NONAME
+ _ZNK18QMetaObjectBuilder14classInfoCountEv @ 2334 NONAME
+ _ZNK18QMetaObjectBuilder14classInfoValueEi @ 2335 NONAME
+ _ZNK18QMetaObjectBuilder15enumeratorCountEv @ 2336 NONAME
+ _ZNK18QMetaObjectBuilder16constructorCountEv @ 2337 NONAME
+ _ZNK18QMetaObjectBuilder17relatedMetaObjectEi @ 2338 NONAME
+ _ZNK18QMetaObjectBuilder17toRelocatableDataEPb @ 2339 NONAME
+ _ZNK18QMetaObjectBuilder22relatedMetaObjectCountEv @ 2340 NONAME
+ _ZNK18QMetaObjectBuilder22staticMetacallFunctionEv @ 2341 NONAME
+ _ZNK18QMetaObjectBuilder5flagsEv @ 2342 NONAME
+ _ZNK18QMetaObjectBuilder6methodEi @ 2343 NONAME
+ _ZNK18QMetaObjectBuilder8propertyEi @ 2344 NONAME
+ _ZNK18QMetaObjectBuilder9classNameEv @ 2345 NONAME
+ _ZNK18QMetaObjectBuilder9serializeER11QDataStream @ 2346 NONAME
+ _ZNK19QDeclarativeAnchors10leftMarginEv @ 2347 NONAME
+ _ZNK19QDeclarativeAnchors10metaObjectEv @ 2348 NONAME
+ _ZNK19QDeclarativeAnchors11rightMarginEv @ 2349 NONAME
+ _ZNK19QDeclarativeAnchors11usedAnchorsEv @ 2350 NONAME
+ _ZNK19QDeclarativeAnchors12bottomMarginEv @ 2351 NONAME
+ _ZNK19QDeclarativeAnchors14baselineOffsetEv @ 2352 NONAME
+ _ZNK19QDeclarativeAnchors14verticalCenterEv @ 2353 NONAME
+ _ZNK19QDeclarativeAnchors16horizontalCenterEv @ 2354 NONAME
+ _ZNK19QDeclarativeAnchors20verticalCenterOffsetEv @ 2355 NONAME
+ _ZNK19QDeclarativeAnchors22horizontalCenterOffsetEv @ 2356 NONAME
+ _ZNK19QDeclarativeAnchors3topEv @ 2357 NONAME
+ _ZNK19QDeclarativeAnchors4fillEv @ 2358 NONAME
+ _ZNK19QDeclarativeAnchors4leftEv @ 2359 NONAME
+ _ZNK19QDeclarativeAnchors5rightEv @ 2360 NONAME
+ _ZNK19QDeclarativeAnchors6bottomEv @ 2361 NONAME
+ _ZNK19QDeclarativeAnchors7marginsEv @ 2362 NONAME
+ _ZNK19QDeclarativeAnchors8baselineEv @ 2363 NONAME
+ _ZNK19QDeclarativeAnchors8centerInEv @ 2364 NONAME
+ _ZNK19QDeclarativeAnchors9topMarginEv @ 2365 NONAME
+ _ZNK19QDeclarativeBinding10expressionEv @ 2366 NONAME
+ _ZNK19QDeclarativeBinding10metaObjectEv @ 2367 NONAME
+ _ZNK19QDeclarativeBinding7enabledEv @ 2368 NONAME
+ _ZNK19QDeclarativeBinding8propertyEv @ 2369 NONAME
+ _ZNK19QDeclarativeContext10metaObjectEv @ 2370 NONAME
+ _ZNK19QDeclarativeContext13contextObjectEv @ 2371 NONAME
+ _ZNK19QDeclarativeContext13parentContextEv @ 2372 NONAME
+ _ZNK19QDeclarativeContext15contextPropertyERK7QString @ 2373 NONAME
+ _ZNK19QDeclarativeContext6engineEv @ 2374 NONAME
+ _ZNK19QDeclarativeContext7baseUrlEv @ 2375 NONAME
+ _ZNK19QDeclarativeDomList14commaPositionsEv @ 2376 NONAME
+ _ZNK19QDeclarativeDomList6lengthEv @ 2377 NONAME
+ _ZNK19QDeclarativeDomList6valuesEv @ 2378 NONAME
+ _ZNK19QDeclarativeDomList8positionEv @ 2379 NONAME
+ _ZNK19QListModelInterface10metaObjectEv @ 2380 NONAME
+ _ZNK20QDeclarativeBehavior10metaObjectEv @ 2381 NONAME
+ _ZNK20QDeclarativeBehavior7enabledEv @ 2382 NONAME
+ _ZNK20QDeclarativeCompiler12evaluateEnumERK10QByteArray @ 2383 NONAME
+ _ZNK20QDeclarativeCompiler6errorsEv @ 2384 NONAME
+ _ZNK20QDeclarativeCompiler7isErrorEv @ 2385 NONAME
+ _ZNK20QDeclarativeDomValue13isValueSourceEv @ 2386 NONAME
+ _ZNK20QDeclarativeDomValue13toValueSourceEv @ 2387 NONAME
+ _ZNK20QDeclarativeDomValue18isValueInterceptorEv @ 2388 NONAME
+ _ZNK20QDeclarativeDomValue18toValueInterceptorEv @ 2389 NONAME
+ _ZNK20QDeclarativeDomValue4typeEv @ 2390 NONAME
+ _ZNK20QDeclarativeDomValue6isListEv @ 2391 NONAME
+ _ZNK20QDeclarativeDomValue6lengthEv @ 2392 NONAME
+ _ZNK20QDeclarativeDomValue6toListEv @ 2393 NONAME
+ _ZNK20QDeclarativeDomValue8isObjectEv @ 2394 NONAME
+ _ZNK20QDeclarativeDomValue8positionEv @ 2395 NONAME
+ _ZNK20QDeclarativeDomValue8toObjectEv @ 2396 NONAME
+ _ZNK20QDeclarativeDomValue9isBindingEv @ 2397 NONAME
+ _ZNK20QDeclarativeDomValue9isInvalidEv @ 2398 NONAME
+ _ZNK20QDeclarativeDomValue9isLiteralEv @ 2399 NONAME
+ _ZNK20QDeclarativeDomValue9toBindingEv @ 2400 NONAME
+ _ZNK20QDeclarativeDomValue9toLiteralEv @ 2401 NONAME
+ _ZNK20QDeclarativeFlipable10metaObjectEv @ 2402 NONAME
+ _ZNK20QDeclarativeFlipable4sideEv @ 2403 NONAME
+ _ZNK20QDeclarativeGradient10metaObjectEv @ 2404 NONAME
+ _ZNK20QDeclarativeGradient8gradientEv @ 2405 NONAME
+ _ZNK20QDeclarativeGridView10cellHeightEv @ 2406 NONAME
+ _ZNK20QDeclarativeGridView10maxXExtentEv @ 2407 NONAME
+ _ZNK20QDeclarativeGridView10maxYExtentEv @ 2408 NONAME
+ _ZNK20QDeclarativeGridView10metaObjectEv @ 2409 NONAME
+ _ZNK20QDeclarativeGridView10minXExtentEv @ 2410 NONAME
+ _ZNK20QDeclarativeGridView10minYExtentEv @ 2411 NONAME
+ _ZNK20QDeclarativeGridView11cacheBufferEv @ 2412 NONAME
+ _ZNK20QDeclarativeGridView12currentIndexEv @ 2413 NONAME
+ _ZNK20QDeclarativeGridView13isWrapEnabledEv @ 2414 NONAME
+ _ZNK20QDeclarativeGridView18highlightRangeModeEv @ 2415 NONAME
+ _ZNK20QDeclarativeGridView21preferredHighlightEndEv @ 2416 NONAME
+ _ZNK20QDeclarativeGridView23preferredHighlightBeginEv @ 2417 NONAME
+ _ZNK20QDeclarativeGridView27highlightFollowsCurrentItemEv @ 2418 NONAME
+ _ZNK20QDeclarativeGridView4flowEv @ 2419 NONAME
+ _ZNK20QDeclarativeGridView5countEv @ 2420 NONAME
+ _ZNK20QDeclarativeGridView5modelEv @ 2421 NONAME
+ _ZNK20QDeclarativeGridView7indexAtEii @ 2422 NONAME
+ _ZNK20QDeclarativeGridView8delegateEv @ 2423 NONAME
+ _ZNK20QDeclarativeGridView8snapModeEv @ 2424 NONAME
+ _ZNK20QDeclarativeGridView9cellWidthEv @ 2425 NONAME
+ _ZNK20QDeclarativeGridView9highlightEv @ 2426 NONAME
+ _ZNK20QDeclarativeListView10maxXExtentEv @ 2427 NONAME
+ _ZNK20QDeclarativeListView10maxYExtentEv @ 2428 NONAME
+ _ZNK20QDeclarativeListView10metaObjectEv @ 2429 NONAME
+ _ZNK20QDeclarativeListView10minXExtentEv @ 2430 NONAME
+ _ZNK20QDeclarativeListView10minYExtentEv @ 2431 NONAME
+ _ZNK20QDeclarativeListView11cacheBufferEv @ 2432 NONAME
+ _ZNK20QDeclarativeListView11orientationEv @ 2433 NONAME
+ _ZNK20QDeclarativeListView12currentIndexEv @ 2434 NONAME
+ _ZNK20QDeclarativeListView13isWrapEnabledEv @ 2435 NONAME
+ _ZNK20QDeclarativeListView14currentSectionEv @ 2436 NONAME
+ _ZNK20QDeclarativeListView18highlightMoveSpeedEv @ 2437 NONAME
+ _ZNK20QDeclarativeListView18highlightRangeModeEv @ 2438 NONAME
+ _ZNK20QDeclarativeListView20highlightResizeSpeedEv @ 2439 NONAME
+ _ZNK20QDeclarativeListView21preferredHighlightEndEv @ 2440 NONAME
+ _ZNK20QDeclarativeListView23preferredHighlightBeginEv @ 2441 NONAME
+ _ZNK20QDeclarativeListView27highlightFollowsCurrentItemEv @ 2442 NONAME
+ _ZNK20QDeclarativeListView5countEv @ 2443 NONAME
+ _ZNK20QDeclarativeListView5modelEv @ 2444 NONAME
+ _ZNK20QDeclarativeListView6footerEv @ 2445 NONAME
+ _ZNK20QDeclarativeListView6headerEv @ 2446 NONAME
+ _ZNK20QDeclarativeListView7indexAtEii @ 2447 NONAME
+ _ZNK20QDeclarativeListView7spacingEv @ 2448 NONAME
+ _ZNK20QDeclarativeListView8delegateEv @ 2449 NONAME
+ _ZNK20QDeclarativeListView8snapModeEv @ 2450 NONAME
+ _ZNK20QDeclarativeListView9highlightEv @ 2451 NONAME
+ _ZNK20QDeclarativePathLine10metaObjectEv @ 2452 NONAME
+ _ZNK20QDeclarativePathQuad10metaObjectEv @ 2453 NONAME
+ _ZNK20QDeclarativePathQuad8controlXEv @ 2454 NONAME
+ _ZNK20QDeclarativePathQuad8controlYEv @ 2455 NONAME
+ _ZNK20QDeclarativePathView10dragMarginEv @ 2456 NONAME
+ _ZNK20QDeclarativePathView10metaObjectEv @ 2457 NONAME
+ _ZNK20QDeclarativePathView12currentIndexEv @ 2458 NONAME
+ _ZNK20QDeclarativePathView13isInteractiveEv @ 2459 NONAME
+ _ZNK20QDeclarativePathView13pathItemCountEv @ 2460 NONAME
+ _ZNK20QDeclarativePathView17flickDecelerationEv @ 2461 NONAME
+ _ZNK20QDeclarativePathView18highlightRangeModeEv @ 2462 NONAME
+ _ZNK20QDeclarativePathView21preferredHighlightEndEv @ 2463 NONAME
+ _ZNK20QDeclarativePathView23preferredHighlightBeginEv @ 2464 NONAME
+ _ZNK20QDeclarativePathView4pathEv @ 2465 NONAME
+ _ZNK20QDeclarativePathView5countEv @ 2466 NONAME
+ _ZNK20QDeclarativePathView5modelEv @ 2467 NONAME
+ _ZNK20QDeclarativePathView6offsetEv @ 2468 NONAME
+ _ZNK20QDeclarativePathView8delegateEv @ 2469 NONAME
+ _ZNK20QDeclarativePathView9highlightEv @ 2470 NONAME
+ _ZNK20QDeclarativeProperty10isPropertyEv @ 2471 NONAME
+ _ZNK20QDeclarativeProperty10isWritableEv @ 2472 NONAME
+ _ZNK20QDeclarativeProperty12isDesignableEv @ 2473 NONAME
+ _ZNK20QDeclarativeProperty12isResettableEv @ 2474 NONAME
+ _ZNK20QDeclarativeProperty12propertyTypeEv @ 2475 NONAME
+ _ZNK20QDeclarativeProperty15hasNotifySignalEv @ 2476 NONAME
+ _ZNK20QDeclarativeProperty16isSignalPropertyEv @ 2477 NONAME
+ _ZNK20QDeclarativeProperty16propertyTypeNameEv @ 2478 NONAME
+ _ZNK20QDeclarativeProperty17needsNotifySignalEv @ 2479 NONAME
+ _ZNK20QDeclarativeProperty19connectNotifySignalEP7QObjectPKc @ 2480 NONAME
+ _ZNK20QDeclarativeProperty19connectNotifySignalEP7QObjecti @ 2481 NONAME
+ _ZNK20QDeclarativeProperty20propertyTypeCategoryEv @ 2482 NONAME
+ _ZNK20QDeclarativeProperty4nameEv @ 2483 NONAME
+ _ZNK20QDeclarativeProperty4readEv @ 2484 NONAME
+ _ZNK20QDeclarativeProperty4typeEv @ 2485 NONAME
+ _ZNK20QDeclarativeProperty5indexEv @ 2486 NONAME
+ _ZNK20QDeclarativeProperty5resetEv @ 2487 NONAME
+ _ZNK20QDeclarativeProperty5writeERK8QVariant @ 2488 NONAME
+ _ZNK20QDeclarativeProperty6methodEv @ 2489 NONAME
+ _ZNK20QDeclarativeProperty6objectEv @ 2490 NONAME
+ _ZNK20QDeclarativeProperty7isValidEv @ 2491 NONAME
+ _ZNK20QDeclarativeProperty8propertyEv @ 2492 NONAME
+ _ZNK20QDeclarativePropertyeqERKS_ @ 2493 NONAME
+ _ZNK20QDeclarativeRepeater10metaObjectEv @ 2494 NONAME
+ _ZNK20QDeclarativeRepeater5countEv @ 2495 NONAME
+ _ZNK20QDeclarativeRepeater5modelEv @ 2496 NONAME
+ _ZNK20QDeclarativeRepeater8delegateEv @ 2497 NONAME
+ _ZNK20QDeclarativeTextEdit10cursorRectEv @ 2498 NONAME
+ _ZNK20QDeclarativeTextEdit10isReadOnlyEv @ 2499 NONAME
+ _ZNK20QDeclarativeTextEdit10metaObjectEv @ 2500 NONAME
+ _ZNK20QDeclarativeTextEdit10textFormatEv @ 2501 NONAME
+ _ZNK20QDeclarativeTextEdit10textMarginEv @ 2502 NONAME
+ _ZNK20QDeclarativeTextEdit12focusOnPressEv @ 2503 NONAME
+ _ZNK20QDeclarativeTextEdit12selectedTextEv @ 2504 NONAME
+ _ZNK20QDeclarativeTextEdit12selectionEndEv @ 2505 NONAME
+ _ZNK20QDeclarativeTextEdit14cursorDelegateEv @ 2506 NONAME
+ _ZNK20QDeclarativeTextEdit14cursorPositionEv @ 2507 NONAME
+ _ZNK20QDeclarativeTextEdit14selectionColorEv @ 2508 NONAME
+ _ZNK20QDeclarativeTextEdit14selectionStartEv @ 2509 NONAME
+ _ZNK20QDeclarativeTextEdit15isCursorVisibleEv @ 2510 NONAME
+ _ZNK20QDeclarativeTextEdit16inputMethodQueryEN2Qt16InputMethodQueryE @ 2511 NONAME
+ _ZNK20QDeclarativeTextEdit17selectedTextColorEv @ 2512 NONAME
+ _ZNK20QDeclarativeTextEdit19persistentSelectionEv @ 2513 NONAME
+ _ZNK20QDeclarativeTextEdit20textInteractionFlagsEv @ 2514 NONAME
+ _ZNK20QDeclarativeTextEdit4fontEv @ 2515 NONAME
+ _ZNK20QDeclarativeTextEdit4textEv @ 2516 NONAME
+ _ZNK20QDeclarativeTextEdit4wrapEv @ 2517 NONAME
+ _ZNK20QDeclarativeTextEdit5colorEv @ 2518 NONAME
+ _ZNK20QDeclarativeTextEdit6hAlignEv @ 2519 NONAME
+ _ZNK20QDeclarativeTextEdit6vAlignEv @ 2520 NONAME
+ _ZNK20QMetaPropertyBuilder10isEditableEv @ 2521 NONAME
+ _ZNK20QMetaPropertyBuilder10isReadableEv @ 2522 NONAME
+ _ZNK20QMetaPropertyBuilder10isWritableEv @ 2523 NONAME
+ _ZNK20QMetaPropertyBuilder12hasStdCppSetEv @ 2524 NONAME
+ _ZNK20QMetaPropertyBuilder12isDesignableEv @ 2525 NONAME
+ _ZNK20QMetaPropertyBuilder12isEnumOrFlagEv @ 2526 NONAME
+ _ZNK20QMetaPropertyBuilder12isResettableEv @ 2527 NONAME
+ _ZNK20QMetaPropertyBuilder12isScriptableEv @ 2528 NONAME
+ _ZNK20QMetaPropertyBuilder12notifySignalEv @ 2529 NONAME
+ _ZNK20QMetaPropertyBuilder15hasNotifySignalEv @ 2530 NONAME
+ _ZNK20QMetaPropertyBuilder4nameEv @ 2531 NONAME
+ _ZNK20QMetaPropertyBuilder4typeEv @ 2532 NONAME
+ _ZNK20QMetaPropertyBuilder6d_funcEv @ 2533 NONAME
+ _ZNK20QMetaPropertyBuilder6isUserEv @ 2534 NONAME
+ _ZNK20QMetaPropertyBuilder8isStoredEv @ 2535 NONAME
+ _ZNK20QMetaPropertyBuilder9isDynamicEv @ 2536 NONAME
+ _ZNK21QDeclarativeComponent10metaObjectEv @ 2537 NONAME
+ _ZNK21QDeclarativeComponent12errorsStringEv @ 2538 NONAME
+ _ZNK21QDeclarativeComponent15creationContextEv @ 2539 NONAME
+ _ZNK21QDeclarativeComponent3urlEv @ 2540 NONAME
+ _ZNK21QDeclarativeComponent6errorsEv @ 2541 NONAME
+ _ZNK21QDeclarativeComponent6isNullEv @ 2542 NONAME
+ _ZNK21QDeclarativeComponent6statusEv @ 2543 NONAME
+ _ZNK21QDeclarativeComponent7isErrorEv @ 2544 NONAME
+ _ZNK21QDeclarativeComponent7isReadyEv @ 2545 NONAME
+ _ZNK21QDeclarativeComponent8progressEv @ 2546 NONAME
+ _ZNK21QDeclarativeComponent9isLoadingEv @ 2547 NONAME
+ _ZNK21QDeclarativeDomImport3uriEv @ 2548 NONAME
+ _ZNK21QDeclarativeDomImport4typeEv @ 2549 NONAME
+ _ZNK21QDeclarativeDomImport7versionEv @ 2550 NONAME
+ _ZNK21QDeclarativeDomImport9qualifierEv @ 2551 NONAME
+ _ZNK21QDeclarativeDomObject10objectTypeEv @ 2552 NONAME
+ _ZNK21QDeclarativeDomObject10propertiesEv @ 2553 NONAME
+ _ZNK21QDeclarativeDomObject11isComponentEv @ 2554 NONAME
+ _ZNK21QDeclarativeDomObject11toComponentEv @ 2555 NONAME
+ _ZNK21QDeclarativeDomObject12isCustomTypeEv @ 2556 NONAME
+ _ZNK21QDeclarativeDomObject14customTypeDataEv @ 2557 NONAME
+ _ZNK21QDeclarativeDomObject15dynamicPropertyERK10QByteArray @ 2558 NONAME
+ _ZNK21QDeclarativeDomObject15objectClassNameEv @ 2559 NONAME
+ _ZNK21QDeclarativeDomObject17dynamicPropertiesEv @ 2560 NONAME
+ _ZNK21QDeclarativeDomObject22objectTypeMajorVersionEv @ 2561 NONAME
+ _ZNK21QDeclarativeDomObject22objectTypeMinorVersionEv @ 2562 NONAME
+ _ZNK21QDeclarativeDomObject3urlEv @ 2563 NONAME
+ _ZNK21QDeclarativeDomObject6lengthEv @ 2564 NONAME
+ _ZNK21QDeclarativeDomObject7isValidEv @ 2565 NONAME
+ _ZNK21QDeclarativeDomObject8objectIdEv @ 2566 NONAME
+ _ZNK21QDeclarativeDomObject8positionEv @ 2567 NONAME
+ _ZNK21QDeclarativeDomObject8propertyERK10QByteArray @ 2568 NONAME
+ _ZNK21QDeclarativeFlickable10isFlickingEv @ 2569 NONAME
+ _ZNK21QDeclarativeFlickable10maxXExtentEv @ 2570 NONAME
+ _ZNK21QDeclarativeFlickable10maxYExtentEv @ 2571 NONAME
+ _ZNK21QDeclarativeFlickable10metaObjectEv @ 2572 NONAME
+ _ZNK21QDeclarativeFlickable10minXExtentEv @ 2573 NONAME
+ _ZNK21QDeclarativeFlickable10minYExtentEv @ 2574 NONAME
+ _ZNK21QDeclarativeFlickable10pressDelayEv @ 2575 NONAME
+ _ZNK21QDeclarativeFlickable12contentWidthEv @ 2576 NONAME
+ _ZNK21QDeclarativeFlickable13contentHeightEv @ 2577 NONAME
+ _ZNK21QDeclarativeFlickable13isInteractiveEv @ 2578 NONAME
+ _ZNK21QDeclarativeFlickable14flickDirectionEv @ 2579 NONAME
+ _ZNK21QDeclarativeFlickable14isAtXBeginningEv @ 2580 NONAME
+ _ZNK21QDeclarativeFlickable14isAtYBeginningEv @ 2581 NONAME
+ _ZNK21QDeclarativeFlickable16verticalVelocityEv @ 2582 NONAME
+ _ZNK21QDeclarativeFlickable17flickDecelerationEv @ 2583 NONAME
+ _ZNK21QDeclarativeFlickable18horizontalVelocityEv @ 2584 NONAME
+ _ZNK21QDeclarativeFlickable20maximumFlickVelocityEv @ 2585 NONAME
+ _ZNK21QDeclarativeFlickable6vWidthEv @ 2586 NONAME
+ _ZNK21QDeclarativeFlickable6xflickEv @ 2587 NONAME
+ _ZNK21QDeclarativeFlickable6yflickEv @ 2588 NONAME
+ _ZNK21QDeclarativeFlickable7vHeightEv @ 2589 NONAME
+ _ZNK21QDeclarativeFlickable8contentXEv @ 2590 NONAME
+ _ZNK21QDeclarativeFlickable8contentYEv @ 2591 NONAME
+ _ZNK21QDeclarativeFlickable8isAtXEndEv @ 2592 NONAME
+ _ZNK21QDeclarativeFlickable8isAtYEndEv @ 2593 NONAME
+ _ZNK21QDeclarativeFlickable8isMovingEv @ 2594 NONAME
+ _ZNK21QDeclarativeFlickable9overShootEv @ 2595 NONAME
+ _ZNK21QDeclarativeImageBase10metaObjectEv @ 2596 NONAME
+ _ZNK21QDeclarativeImageBase10sourceSizeEv @ 2597 NONAME
+ _ZNK21QDeclarativeImageBase12asynchronousEv @ 2598 NONAME
+ _ZNK21QDeclarativeImageBase6sourceEv @ 2599 NONAME
+ _ZNK21QDeclarativeImageBase6statusEv @ 2600 NONAME
+ _ZNK21QDeclarativeImageBase8progressEv @ 2601 NONAME
+ _ZNK21QDeclarativeListModel10metaObjectEv @ 2602 NONAME
+ _ZNK21QDeclarativeListModel3getEi @ 2603 NONAME
+ _ZNK21QDeclarativeListModel4dataEiRK5QListIiE @ 2604 NONAME
+ _ZNK21QDeclarativeListModel4dataEii @ 2605 NONAME
+ _ZNK21QDeclarativeListModel5countEv @ 2606 NONAME
+ _ZNK21QDeclarativeListModel5rolesEv @ 2607 NONAME
+ _ZNK21QDeclarativeListModel8toStringEi @ 2608 NONAME
+ _ZNK21QDeclarativeMouseArea10metaObjectEv @ 2609 NONAME
+ _ZNK21QDeclarativeMouseArea14pressedButtonsEv @ 2610 NONAME
+ _ZNK21QDeclarativeMouseArea15acceptedButtonsEv @ 2611 NONAME
+ _ZNK21QDeclarativeMouseArea6mouseXEv @ 2612 NONAME
+ _ZNK21QDeclarativeMouseArea6mouseYEv @ 2613 NONAME
+ _ZNK21QDeclarativeMouseArea7hoveredEv @ 2614 NONAME
+ _ZNK21QDeclarativeMouseArea7pressedEv @ 2615 NONAME
+ _ZNK21QDeclarativeMouseArea9isEnabledEv @ 2616 NONAME
+ _ZNK21QDeclarativePathCubic10metaObjectEv @ 2617 NONAME
+ _ZNK21QDeclarativePathCubic9control1XEv @ 2618 NONAME
+ _ZNK21QDeclarativePathCubic9control1YEv @ 2619 NONAME
+ _ZNK21QDeclarativePathCubic9control2XEv @ 2620 NONAME
+ _ZNK21QDeclarativePathCubic9control2YEv @ 2621 NONAME
+ _ZNK21QDeclarativeRectangle10metaObjectEv @ 2622 NONAME
+ _ZNK21QDeclarativeRectangle12boundingRectEv @ 2623 NONAME
+ _ZNK21QDeclarativeRectangle5colorEv @ 2624 NONAME
+ _ZNK21QDeclarativeRectangle6radiusEv @ 2625 NONAME
+ _ZNK21QDeclarativeRectangle8gradientEv @ 2626 NONAME
+ _ZNK21QDeclarativeScaleGrid10metaObjectEv @ 2627 NONAME
+ _ZNK21QDeclarativeScaleGrid6isNullEv @ 2628 NONAME
+ _ZNK21QDeclarativeTextInput10cursorRectEv @ 2629 NONAME
+ _ZNK21QDeclarativeTextInput10isReadOnlyEv @ 2630 NONAME
+ _ZNK21QDeclarativeTextInput10metaObjectEv @ 2631 NONAME
+ _ZNK21QDeclarativeTextInput12focusOnPressEv @ 2632 NONAME
+ _ZNK21QDeclarativeTextInput12selectedTextEv @ 2633 NONAME
+ _ZNK21QDeclarativeTextInput12selectionEndEv @ 2634 NONAME
+ _ZNK21QDeclarativeTextInput14cursorDelegateEv @ 2635 NONAME
+ _ZNK21QDeclarativeTextInput14cursorPositionEv @ 2636 NONAME
+ _ZNK21QDeclarativeTextInput14selectionColorEv @ 2637 NONAME
+ _ZNK21QDeclarativeTextInput14selectionStartEv @ 2638 NONAME
+ _ZNK21QDeclarativeTextInput15isCursorVisibleEv @ 2639 NONAME
+ _ZNK21QDeclarativeTextInput16inputMethodQueryEN2Qt16InputMethodQueryE @ 2640 NONAME
+ _ZNK21QDeclarativeTextInput17selectedTextColorEv @ 2641 NONAME
+ _ZNK21QDeclarativeTextInput18hasAcceptableInputEv @ 2642 NONAME
+ _ZNK21QDeclarativeTextInput4fontEv @ 2643 NONAME
+ _ZNK21QDeclarativeTextInput4textEv @ 2644 NONAME
+ _ZNK21QDeclarativeTextInput5colorEv @ 2645 NONAME
+ _ZNK21QDeclarativeTextInput6hAlignEv @ 2646 NONAME
+ _ZNK21QDeclarativeTextInput8echoModeEv @ 2647 NONAME
+ _ZNK21QDeclarativeTextInput9inputMaskEv @ 2648 NONAME
+ _ZNK21QDeclarativeTextInput9maxLengthEv @ 2649 NONAME
+ _ZNK21QDeclarativeTextInput9validatorEv @ 2650 NONAME
+ _ZNK21QDeclarativeTranslate10metaObjectEv @ 2651 NONAME
+ _ZNK21QDeclarativeTranslate1xEv @ 2652 NONAME
+ _ZNK21QDeclarativeTranslate1yEv @ 2653 NONAME
+ _ZNK21QDeclarativeTranslate7applyToEP10QMatrix4x4 @ 2654 NONAME
+ _ZNK21QDeclarativeValueType10metaObjectEv @ 2655 NONAME
+ _ZNK22QDeclarativeDebugQuery10metaObjectEv @ 2656 NONAME
+ _ZNK22QDeclarativeDebugQuery5stateEv @ 2657 NONAME
+ _ZNK22QDeclarativeDebugQuery9isWaitingEv @ 2658 NONAME
+ _ZNK22QDeclarativeDebugWatch10metaObjectEv @ 2659 NONAME
+ _ZNK22QDeclarativeDebugWatch13objectDebugIdEv @ 2660 NONAME
+ _ZNK22QDeclarativeDebugWatch5stateEv @ 2661 NONAME
+ _ZNK22QDeclarativeDebugWatch7queryIdEv @ 2662 NONAME
+ _ZNK22QDeclarativeExpression10expressionEv @ 2663 NONAME
+ _ZNK22QDeclarativeExpression10lineNumberEv @ 2664 NONAME
+ _ZNK22QDeclarativeExpression10metaObjectEv @ 2665 NONAME
+ _ZNK22QDeclarativeExpression10sourceFileEv @ 2666 NONAME
+ _ZNK22QDeclarativeExpression11scopeObjectEv @ 2667 NONAME
+ _ZNK22QDeclarativeExpression20notifyOnValueChangedEv @ 2668 NONAME
+ _ZNK22QDeclarativeExpression5errorEv @ 2669 NONAME
+ _ZNK22QDeclarativeExpression6engineEv @ 2670 NONAME
+ _ZNK22QDeclarativeExpression7contextEv @ 2671 NONAME
+ _ZNK22QDeclarativeExpression8hasErrorEv @ 2672 NONAME
+ _ZNK22QDeclarativeFocusPanel10metaObjectEv @ 2673 NONAME
+ _ZNK22QDeclarativeFocusScope10metaObjectEv @ 2674 NONAME
+ _ZNK22QDeclarativeFontLoader10metaObjectEv @ 2675 NONAME
+ _ZNK22QDeclarativeFontLoader4nameEv @ 2676 NONAME
+ _ZNK22QDeclarativeFontLoader6sourceEv @ 2677 NONAME
+ _ZNK22QDeclarativeFontLoader6statusEv @ 2678 NONAME
+ _ZNK22QDeclarativeStateGroup10metaObjectEv @ 2679 NONAME
+ _ZNK22QDeclarativeStateGroup5stateEv @ 2680 NONAME
+ _ZNK22QDeclarativeStateGroup6statesEv @ 2681 NONAME
+ _ZNK22QDeclarativeStateGroup9findStateERK7QString @ 2682 NONAME
+ _ZNK22QDeclarativeTransition10metaObjectEv @ 2683 NONAME
+ _ZNK22QDeclarativeTransition10reversibleEv @ 2684 NONAME
+ _ZNK22QDeclarativeTransition7toStateEv @ 2685 NONAME
+ _ZNK22QDeclarativeTransition9fromStateEv @ 2686 NONAME
+ _ZNK23QDeclarativeBorderImage10metaObjectEv @ 2687 NONAME
+ _ZNK23QDeclarativeBorderImage16verticalTileModeEv @ 2688 NONAME
+ _ZNK23QDeclarativeBorderImage18horizontalTileModeEv @ 2689 NONAME
+ _ZNK23QDeclarativeConnections10metaObjectEv @ 2690 NONAME
+ _ZNK23QDeclarativeConnections6targetEv @ 2691 NONAME
+ _ZNK23QDeclarativeDebugClient10metaObjectEv @ 2692 NONAME
+ _ZNK23QDeclarativeDebugClient11isConnectedEv @ 2693 NONAME
+ _ZNK23QDeclarativeDebugClient4nameEv @ 2694 NONAME
+ _ZNK23QDeclarativeDebugClient9isEnabledEv @ 2695 NONAME
+ _ZNK23QDeclarativeDomDocument10rootObjectEv @ 2696 NONAME
+ _ZNK23QDeclarativeDomDocument6errorsEv @ 2697 NONAME
+ _ZNK23QDeclarativeDomDocument7importsEv @ 2698 NONAME
+ _ZNK23QDeclarativeDomProperty12propertyNameEv @ 2699 NONAME
+ _ZNK23QDeclarativeDomProperty17isDefaultPropertyEv @ 2700 NONAME
+ _ZNK23QDeclarativeDomProperty17propertyNamePartsEv @ 2701 NONAME
+ _ZNK23QDeclarativeDomProperty5valueEv @ 2702 NONAME
+ _ZNK23QDeclarativeDomProperty6lengthEv @ 2703 NONAME
+ _ZNK23QDeclarativeDomProperty7isValidEv @ 2704 NONAME
+ _ZNK23QDeclarativeDomProperty8positionEv @ 2705 NONAME
+ _ZNK23QDeclarativeEngineDebug10metaObjectEv @ 2706 NONAME
+ _ZNK23QDeclarativeItemPrivate22computeTransformOriginEv @ 2707 NONAME
+ _ZNK23QDeclarativeItemPrivate5widthEv @ 2708 NONAME
+ _ZNK23QDeclarativeItemPrivate6heightEv @ 2709 NONAME
+ _ZNK23QDeclarativePaintedItem10metaObjectEv @ 2710 NONAME
+ _ZNK23QDeclarativePaintedItem11smoothCacheEv @ 2711 NONAME
+ _ZNK23QDeclarativePaintedItem12contentsSizeEv @ 2712 NONAME
+ _ZNK23QDeclarativePaintedItem13contentsScaleEv @ 2713 NONAME
+ _ZNK23QDeclarativePaintedItem14pixelCacheSizeEv @ 2714 NONAME
+ _ZNK23QDeclarativePaintedItem9fillColorEv @ 2715 NONAME
+ _ZNK23QDeclarativePathElement10metaObjectEv @ 2716 NONAME
+ _ZNK23QDeclarativePathPercent10metaObjectEv @ 2717 NONAME
+ _ZNK23QDeclarativePathPercent5valueEv @ 2718 NONAME
+ _ZNK23QDeclarativePixmapReply10metaObjectEv @ 2719 NONAME
+ _ZNK23QDeclarativePixmapReply11forcedWidthEv @ 2720 NONAME
+ _ZNK23QDeclarativePixmapReply12forcedHeightEv @ 2721 NONAME
+ _ZNK23QDeclarativePixmapReply12implicitSizeEv @ 2722 NONAME
+ _ZNK23QDeclarativePixmapReply3urlEv @ 2723 NONAME
+ _ZNK23QDeclarativePixmapReply6statusEv @ 2724 NONAME
+ _ZNK23QDeclarativePixmapReply9isLoadingEv @ 2725 NONAME
+ _ZNK23QDeclarativePropertyMap10metaObjectEv @ 2726 NONAME
+ _ZNK23QDeclarativePropertyMap4keysEv @ 2727 NONAME
+ _ZNK23QDeclarativePropertyMap4sizeEv @ 2728 NONAME
+ _ZNK23QDeclarativePropertyMap5countEv @ 2729 NONAME
+ _ZNK23QDeclarativePropertyMap5valueERK7QString @ 2730 NONAME
+ _ZNK23QDeclarativePropertyMap7isEmptyEv @ 2731 NONAME
+ _ZNK23QDeclarativePropertyMap8containsERK7QString @ 2732 NONAME
+ _ZNK23QDeclarativePropertyMapixERK7QString @ 2733 NONAME
+ _ZNK23QDeclarativeViewSection10metaObjectEv @ 2734 NONAME
+ _ZNK23QDeclarativeVisualModel10metaObjectEv @ 2735 NONAME
+ _ZNK24QDeclarativeCustomParser12evaluateEnumERK10QByteArray @ 2736 NONAME
+ _ZNK24QDeclarativeDebugService10metaObjectEv @ 2737 NONAME
+ _ZNK24QDeclarativeDebugService4nameEv @ 2738 NONAME
+ _ZNK24QDeclarativeDebugService9isEnabledEv @ 2739 NONAME
+ _ZNK24QDeclarativeDomComponent13componentRootEv @ 2740 NONAME
+ _ZNK24QDeclarativeGradientStop10metaObjectEv @ 2741 NONAME
+ _ZNK24QDeclarativeListAccessor2atEi @ 2742 NONAME
+ _ZNK24QDeclarativeListAccessor4listEv @ 2743 NONAME
+ _ZNK24QDeclarativeListAccessor5countEv @ 2744 NONAME
+ _ZNK24QDeclarativeListAccessor7isValidEv @ 2745 NONAME
+ _ZNK24QDeclarativeParentChange10metaObjectEv @ 2746 NONAME
+ _ZNK24QDeclarativeParentChange10scaleIsSetEv @ 2747 NONAME
+ _ZNK24QDeclarativeParentChange10widthIsSetEv @ 2748 NONAME
+ _ZNK24QDeclarativeParentChange11heightIsSetEv @ 2749 NONAME
+ _ZNK24QDeclarativeParentChange13rotationIsSetEv @ 2750 NONAME
+ _ZNK24QDeclarativeParentChange14originalParentEv @ 2751 NONAME
+ _ZNK24QDeclarativeParentChange1xEv @ 2752 NONAME
+ _ZNK24QDeclarativeParentChange1yEv @ 2753 NONAME
+ _ZNK24QDeclarativeParentChange5scaleEv @ 2754 NONAME
+ _ZNK24QDeclarativeParentChange5widthEv @ 2755 NONAME
+ _ZNK24QDeclarativeParentChange6heightEv @ 2756 NONAME
+ _ZNK24QDeclarativeParentChange6objectEv @ 2757 NONAME
+ _ZNK24QDeclarativeParentChange6parentEv @ 2758 NONAME
+ _ZNK24QDeclarativeParentChange6xIsSetEv @ 2759 NONAME
+ _ZNK24QDeclarativeParentChange6yIsSetEv @ 2760 NONAME
+ _ZNK24QDeclarativeParentChange8rotationEv @ 2761 NONAME
+ _ZNK24QDeclarativeParentChange8typeNameEv @ 2762 NONAME
+ _ZNK24QDeclarativeScriptString11scopeObjectEv @ 2763 NONAME
+ _ZNK24QDeclarativeScriptString6scriptEv @ 2764 NONAME
+ _ZNK24QDeclarativeScriptString7contextEv @ 2765 NONAME
+ _ZNK24QDeclarativeSpringFollow10metaObjectEv @ 2766 NONAME
+ _ZNK24QDeclarativeSpringFollow11sourceValueEv @ 2767 NONAME
+ _ZNK24QDeclarativeSpringFollow4massEv @ 2768 NONAME
+ _ZNK24QDeclarativeSpringFollow5valueEv @ 2769 NONAME
+ _ZNK24QDeclarativeSpringFollow6inSyncEv @ 2770 NONAME
+ _ZNK24QDeclarativeSpringFollow6springEv @ 2771 NONAME
+ _ZNK24QDeclarativeSpringFollow7dampingEv @ 2772 NONAME
+ _ZNK24QDeclarativeSpringFollow7enabledEv @ 2773 NONAME
+ _ZNK24QDeclarativeSpringFollow7epsilonEv @ 2774 NONAME
+ _ZNK24QDeclarativeSpringFollow7modulusEv @ 2775 NONAME
+ _ZNK24QDeclarativeSpringFollow8velocityEv @ 2776 NONAME
+ _ZNK24QDeclarativeWorkerScript10metaObjectEv @ 2777 NONAME
+ _ZNK24QDeclarativeWorkerScript6sourceEv @ 2778 NONAME
+ _ZNK24QDeclarativeXmlListModel10metaObjectEv @ 2779 NONAME
+ _ZNK24QDeclarativeXmlListModel21namespaceDeclarationsEv @ 2780 NONAME
+ _ZNK24QDeclarativeXmlListModel3xmlEv @ 2781 NONAME
+ _ZNK24QDeclarativeXmlListModel4dataEiRK5QListIiE @ 2782 NONAME
+ _ZNK24QDeclarativeXmlListModel4dataEii @ 2783 NONAME
+ _ZNK24QDeclarativeXmlListModel5countEv @ 2784 NONAME
+ _ZNK24QDeclarativeXmlListModel5queryEv @ 2785 NONAME
+ _ZNK24QDeclarativeXmlListModel5rolesEv @ 2786 NONAME
+ _ZNK24QDeclarativeXmlListModel6sourceEv @ 2787 NONAME
+ _ZNK24QDeclarativeXmlListModel6statusEv @ 2788 NONAME
+ _ZNK24QDeclarativeXmlListModel8progressEv @ 2789 NONAME
+ _ZNK24QDeclarativeXmlListModel8toStringEi @ 2790 NONAME
+ _ZNK25QDeclarativeAnchorChanges10metaObjectEv @ 2791 NONAME
+ _ZNK25QDeclarativeAnchorChanges6objectEv @ 2792 NONAME
+ _ZNK25QDeclarativeAnchorChanges8typeNameEv @ 2793 NONAME
+ _ZNK25QDeclarativeAnimatedImage10frameCountEv @ 2794 NONAME
+ _ZNK25QDeclarativeAnimatedImage10metaObjectEv @ 2795 NONAME
+ _ZNK25QDeclarativeAnimatedImage12currentFrameEv @ 2796 NONAME
+ _ZNK25QDeclarativeAnimatedImage8isPausedEv @ 2797 NONAME
+ _ZNK25QDeclarativeAnimatedImage9isPlayingEv @ 2798 NONAME
+ _ZNK25QDeclarativeListReference15listElementTypeEv @ 2799 NONAME
+ _ZNK25QDeclarativeListReference2atEi @ 2800 NONAME
+ _ZNK25QDeclarativeListReference5canAtEv @ 2801 NONAME
+ _ZNK25QDeclarativeListReference5clearEv @ 2802 NONAME
+ _ZNK25QDeclarativeListReference5countEv @ 2803 NONAME
+ _ZNK25QDeclarativeListReference6appendEP7QObject @ 2804 NONAME
+ _ZNK25QDeclarativeListReference6objectEv @ 2805 NONAME
+ _ZNK25QDeclarativeListReference7isValidEv @ 2806 NONAME
+ _ZNK25QDeclarativeListReference8canClearEv @ 2807 NONAME
+ _ZNK25QDeclarativeListReference8canCountEv @ 2808 NONAME
+ _ZNK25QDeclarativeListReference9canAppendEv @ 2809 NONAME
+ _ZNK25QDeclarativePathAttribute10metaObjectEv @ 2810 NONAME
+ _ZNK25QDeclarativePathAttribute4nameEv @ 2811 NONAME
+ _ZNK25QDeclarativePathAttribute5valueEv @ 2812 NONAME
+ _ZNK25QDeclarativeSystemPalette10buttonTextEv @ 2813 NONAME
+ _ZNK25QDeclarativeSystemPalette10colorGroupEv @ 2814 NONAME
+ _ZNK25QDeclarativeSystemPalette10metaObjectEv @ 2815 NONAME
+ _ZNK25QDeclarativeSystemPalette10windowTextEv @ 2816 NONAME
+ _ZNK25QDeclarativeSystemPalette13alternateBaseEv @ 2817 NONAME
+ _ZNK25QDeclarativeSystemPalette15highlightedTextEv @ 2818 NONAME
+ _ZNK25QDeclarativeSystemPalette3midEv @ 2819 NONAME
+ _ZNK25QDeclarativeSystemPalette4baseEv @ 2820 NONAME
+ _ZNK25QDeclarativeSystemPalette4darkEv @ 2821 NONAME
+ _ZNK25QDeclarativeSystemPalette4textEv @ 2822 NONAME
+ _ZNK25QDeclarativeSystemPalette5lightEv @ 2823 NONAME
+ _ZNK25QDeclarativeSystemPalette6buttonEv @ 2824 NONAME
+ _ZNK25QDeclarativeSystemPalette6shadowEv @ 2825 NONAME
+ _ZNK25QDeclarativeSystemPalette6windowEv @ 2826 NONAME
+ _ZNK25QDeclarativeSystemPalette8midlightEv @ 2827 NONAME
+ _ZNK25QDeclarativeSystemPalette9highlightEv @ 2828 NONAME
+ _ZNK26QDeclarativeBasePositioner10metaObjectEv @ 2829 NONAME
+ _ZNK26QDeclarativeBasePositioner3addEv @ 2830 NONAME
+ _ZNK26QDeclarativeBasePositioner4moveEv @ 2831 NONAME
+ _ZNK26QDeclarativeBasePositioner7spacingEv @ 2832 NONAME
+ _ZNK26QDeclarativeOpenMetaObject4nameEi @ 2833 NONAME
+ _ZNK26QDeclarativeOpenMetaObject4typeEv @ 2834 NONAME
+ _ZNK26QDeclarativeOpenMetaObject5countEv @ 2835 NONAME
+ _ZNK26QDeclarativeOpenMetaObject5valueERK10QByteArray @ 2836 NONAME
+ _ZNK26QDeclarativeOpenMetaObject5valueEi @ 2837 NONAME
+ _ZNK26QDeclarativeOpenMetaObject6objectEv @ 2838 NONAME
+ _ZNK26QDeclarativeOpenMetaObject6parentEv @ 2839 NONAME
+ _ZNK26QDeclarativeStateOperation10metaObjectEv @ 2840 NONAME
+ _ZNK27QDeclarativeAbstractBinding10expressionEv @ 2841 NONAME
+ _ZNK27QDeclarativeDebugConnection10metaObjectEv @ 2842 NONAME
+ _ZNK27QDeclarativeDebugConnection11isConnectedEv @ 2843 NONAME
+ _ZNK27QDeclarativeDomValueBinding7bindingEv @ 2844 NONAME
+ _ZNK27QDeclarativeDomValueLiteral7literalEv @ 2845 NONAME
+ _ZNK27QDeclarativeExtensionPlugin10metaObjectEv @ 2846 NONAME
+ _ZNK27QDeclarativeGridScaledImage10gridBottomEv @ 2847 NONAME
+ _ZNK27QDeclarativeGridScaledImage7gridTopEv @ 2848 NONAME
+ _ZNK27QDeclarativeGridScaledImage7isValidEv @ 2849 NONAME
+ _ZNK27QDeclarativeGridScaledImage8gridLeftEv @ 2850 NONAME
+ _ZNK27QDeclarativeGridScaledImage9gridRightEv @ 2851 NONAME
+ _ZNK27QDeclarativeGridScaledImage9pixmapUrlEv @ 2852 NONAME
+ _ZNK27QDeclarativePropertyChanges10isExplicitEv @ 2853 NONAME
+ _ZNK27QDeclarativePropertyChanges10metaObjectEv @ 2854 NONAME
+ _ZNK27QDeclarativePropertyChanges18restoreEntryValuesEv @ 2855 NONAME
+ _ZNK27QDeclarativePropertyChanges6objectEv @ 2856 NONAME
+ _ZNK27QDeclarativePropertyPrivate11isValueTypeEv @ 2857 NONAME
+ _ZNK27QDeclarativePropertyPrivate12propertyTypeEv @ 2858 NONAME
+ _ZNK27QDeclarativePropertyPrivate20propertyTypeCategoryEv @ 2859 NONAME
+ _ZNK27QDeclarativeVisualDataModel10metaObjectEv @ 2860 NONAME
+ _ZNK27QDeclarativeVisualDataModel4partEv @ 2861 NONAME
+ _ZNK27QDeclarativeVisualDataModel5countEv @ 2862 NONAME
+ _ZNK27QDeclarativeVisualDataModel5modelEv @ 2863 NONAME
+ _ZNK27QDeclarativeVisualDataModel7indexOfEP16QDeclarativeItemP7QObject @ 2864 NONAME
+ _ZNK27QDeclarativeVisualDataModel8delegateEv @ 2865 NONAME
+ _ZNK27QDeclarativeVisualDataModel9rootIndexEv @ 2866 NONAME
+ _ZNK27QDeclarativeVisualItemModel10metaObjectEv @ 2867 NONAME
+ _ZNK27QDeclarativeVisualItemModel5countEv @ 2868 NONAME
+ _ZNK27QDeclarativeVisualItemModel7indexOfEP16QDeclarativeItemP7QObject @ 2869 NONAME
+ _ZNK27QDeclarativeVisualItemModel7isValidEv @ 2870 NONAME
+ _ZNK28QDeclarativeCustomParserNode10propertiesEv @ 2871 NONAME
+ _ZNK28QDeclarativeCustomParserNode4nameEv @ 2872 NONAME
+ _ZNK28QDeclarativeCustomParserNode8locationEv @ 2873 NONAME
+ _ZNK28QDeclarativeDebugObjectQuery10metaObjectEv @ 2874 NONAME
+ _ZNK28QDeclarativeDebugObjectQuery6objectEv @ 2875 NONAME
+ _ZNK28QDeclarativeValueTypeFactoryixEi @ 2876 NONAME
+ _ZNK28QDeclarativeXmlListModelRole10metaObjectEv @ 2877 NONAME
+ _ZNK29QDeclarativeDebugEnginesQuery10metaObjectEv @ 2878 NONAME
+ _ZNK29QDeclarativeDebugEnginesQuery7enginesEv @ 2879 NONAME
+ _ZNK29QDeclarativeSmoothedAnimation10metaObjectEv @ 2880 NONAME
+ _ZNK29QDeclarativeSmoothedAnimation13reversingModeEv @ 2881 NONAME
+ _ZNK29QDeclarativeSmoothedAnimation17maximumEasingTimeEv @ 2882 NONAME
+ _ZNK29QDeclarativeSmoothedAnimation8durationEv @ 2883 NONAME
+ _ZNK29QDeclarativeSmoothedAnimation8velocityEv @ 2884 NONAME
+ _ZNK29QDeclarativeStateChangeScript10metaObjectEv @ 2885 NONAME
+ _ZNK29QDeclarativeStateChangeScript4nameEv @ 2886 NONAME
+ _ZNK29QDeclarativeStateChangeScript6scriptEv @ 2887 NONAME
+ _ZNK29QDeclarativeStateChangeScript8typeNameEv @ 2888 NONAME
+ _ZNK30QDeclarativeDebugFileReference10lineNumberEv @ 2889 NONAME
+ _ZNK30QDeclarativeDebugFileReference12columnNumberEv @ 2890 NONAME
+ _ZNK30QDeclarativeDebugFileReference3urlEv @ 2891 NONAME
+ _ZNK30QDeclarativeDebugPropertyWatch10metaObjectEv @ 2892 NONAME
+ _ZNK30QDeclarativeDebugPropertyWatch4nameEv @ 2893 NONAME
+ _ZNK30QDeclarativeDomDynamicProperty12defaultValueEv @ 2894 NONAME
+ _ZNK30QDeclarativeDomDynamicProperty12propertyNameEv @ 2895 NONAME
+ _ZNK30QDeclarativeDomDynamicProperty12propertyTypeEv @ 2896 NONAME
+ _ZNK30QDeclarativeDomDynamicProperty16propertyTypeNameEv @ 2897 NONAME
+ _ZNK30QDeclarativeDomDynamicProperty17isDefaultPropertyEv @ 2898 NONAME
+ _ZNK30QDeclarativeDomDynamicProperty6lengthEv @ 2899 NONAME
+ _ZNK30QDeclarativeDomDynamicProperty7isAliasEv @ 2900 NONAME
+ _ZNK30QDeclarativeDomDynamicProperty7isValidEv @ 2901 NONAME
+ _ZNK30QDeclarativeDomDynamicProperty8positionEv @ 2902 NONAME
+ _ZNK30QDeclarativeOpenMetaObjectType12signalOffsetEv @ 2903 NONAME
+ _ZNK30QDeclarativeOpenMetaObjectType14propertyOffsetEv @ 2904 NONAME
+ _ZNK31QDeclarativeDomValueValueSource6objectEv @ 2905 NONAME
+ _ZNK32QDeclarativeCustomParserProperty14assignedValuesEv @ 2906 NONAME
+ _ZNK32QDeclarativeCustomParserProperty4nameEv @ 2907 NONAME
+ _ZNK32QDeclarativeCustomParserProperty6isListEv @ 2908 NONAME
+ _ZNK32QDeclarativeCustomParserProperty8locationEv @ 2909 NONAME
+ _ZNK32QDeclarativeDebugEngineReference4nameEv @ 2910 NONAME
+ _ZNK32QDeclarativeDebugEngineReference7debugIdEv @ 2911 NONAME
+ _ZNK32QDeclarativeDebugExpressionQuery10expressionEv @ 2912 NONAME
+ _ZNK32QDeclarativeDebugExpressionQuery10metaObjectEv @ 2913 NONAME
+ _ZNK32QDeclarativeDebugExpressionQuery6resultEv @ 2914 NONAME
+ _ZNK32QDeclarativeDebugObjectReference10propertiesEv @ 2915 NONAME
+ _ZNK32QDeclarativeDebugObjectReference14contextDebugIdEv @ 2916 NONAME
+ _ZNK32QDeclarativeDebugObjectReference4nameEv @ 2917 NONAME
+ _ZNK32QDeclarativeDebugObjectReference6sourceEv @ 2918 NONAME
+ _ZNK32QDeclarativeDebugObjectReference7debugIdEv @ 2919 NONAME
+ _ZNK32QDeclarativeDebugObjectReference8childrenEv @ 2920 NONAME
+ _ZNK32QDeclarativeDebugObjectReference8idStringEv @ 2921 NONAME
+ _ZNK32QDeclarativeDebugObjectReference9classNameEv @ 2922 NONAME
+ _ZNK33QDeclarativeDebugContextReference4nameEv @ 2923 NONAME
+ _ZNK33QDeclarativeDebugContextReference7debugIdEv @ 2924 NONAME
+ _ZNK33QDeclarativeDebugContextReference7objectsEv @ 2925 NONAME
+ _ZNK33QDeclarativeDebugContextReference8contextsEv @ 2926 NONAME
+ _ZNK33QDeclarativeDebugRootContextQuery10metaObjectEv @ 2927 NONAME
+ _ZNK33QDeclarativeDebugRootContextQuery11rootContextEv @ 2928 NONAME
+ _ZNK34QDeclarativeDebugPropertyReference13objectDebugIdEv @ 2929 NONAME
+ _ZNK34QDeclarativeDebugPropertyReference13valueTypeNameEv @ 2930 NONAME
+ _ZNK34QDeclarativeDebugPropertyReference15hasNotifySignalEv @ 2931 NONAME
+ _ZNK34QDeclarativeDebugPropertyReference4nameEv @ 2932 NONAME
+ _ZNK34QDeclarativeDebugPropertyReference5valueEv @ 2933 NONAME
+ _ZNK34QDeclarativeDebugPropertyReference7bindingEv @ 2934 NONAME
+ _ZNK35QDeclarativeGraphicsObjectContainer10metaObjectEv @ 2935 NONAME
+ _ZNK35QDeclarativeGraphicsObjectContainer14graphicsObjectEv @ 2936 NONAME
+ _ZNK35QDeclarativeGraphicsObjectContainer20synchronizedResizingEv @ 2937 NONAME
+ _ZNK36QDeclarativeDomValueValueInterceptor6objectEv @ 2938 NONAME
+ _ZNK38QDeclarativeDebugObjectExpressionWatch10expressionEv @ 2939 NONAME
+ _ZNK38QDeclarativeDebugObjectExpressionWatch10metaObjectEv @ 2940 NONAME
+ _ZNK7QPacket7isEmptyEv @ 2941 NONAME
+ _ZTI15QDeclarativePen @ 2942 NONAME
+ _ZTI15QDeclarativeRow @ 2943 NONAME
+ _ZTI15QPacketAutoSend @ 2944 NONAME
+ _ZTI15QPacketProtocol @ 2945 NONAME
+ _ZTI16QDeclarativeBind @ 2946 NONAME
+ _ZTI16QDeclarativeDrag @ 2947 NONAME
+ _ZTI16QDeclarativeFlow @ 2948 NONAME
+ _ZTI16QDeclarativeGrid @ 2949 NONAME
+ _ZTI16QDeclarativeItem @ 2950 NONAME
+ _ZTI16QDeclarativePath @ 2951 NONAME
+ _ZTI16QDeclarativeText @ 2952 NONAME
+ _ZTI16QDeclarativeView @ 2953 NONAME
+ _ZTI17QDeclarativeCurve @ 2954 NONAME
+ _ZTI17QDeclarativeImage @ 2955 NONAME
+ _ZTI17QDeclarativeState @ 2956 NONAME
+ _ZTI17QDeclarativeTimer @ 2957 NONAME
+ _ZTI18QDeclarativeColumn @ 2958 NONAME
+ _ZTI18QDeclarativeEngine @ 2959 NONAME
+ _ZTI18QDeclarativeLoader @ 2960 NONAME
+ _ZTI18QMetaObjectBuilder @ 2961 NONAME
+ _ZTI19QDeclarativeAnchors @ 2962 NONAME
+ _ZTI19QDeclarativeBinding @ 2963 NONAME
+ _ZTI19QDeclarativeContext @ 2964 NONAME
+ _ZTI19QListModelInterface @ 2965 NONAME
+ _ZTI20QDeclarativeBehavior @ 2966 NONAME
+ _ZTI20QDeclarativeFlipable @ 2967 NONAME
+ _ZTI20QDeclarativeGradient @ 2968 NONAME
+ _ZTI20QDeclarativeGridView @ 2969 NONAME
+ _ZTI20QDeclarativeListView @ 2970 NONAME
+ _ZTI20QDeclarativePathLine @ 2971 NONAME
+ _ZTI20QDeclarativePathQuad @ 2972 NONAME
+ _ZTI20QDeclarativePathView @ 2973 NONAME
+ _ZTI20QDeclarativeRepeater @ 2974 NONAME
+ _ZTI20QDeclarativeTextEdit @ 2975 NONAME
+ _ZTI21QDeclarativeComponent @ 2976 NONAME
+ _ZTI21QDeclarativeFlickable @ 2977 NONAME
+ _ZTI21QDeclarativeImageBase @ 2978 NONAME
+ _ZTI21QDeclarativeListModel @ 2979 NONAME
+ _ZTI21QDeclarativeMouseArea @ 2980 NONAME
+ _ZTI21QDeclarativePathCubic @ 2981 NONAME
+ _ZTI21QDeclarativeRectangle @ 2982 NONAME
+ _ZTI21QDeclarativeScaleGrid @ 2983 NONAME
+ _ZTI21QDeclarativeTextInput @ 2984 NONAME
+ _ZTI21QDeclarativeTranslate @ 2985 NONAME
+ _ZTI21QDeclarativeValueType @ 2986 NONAME
+ _ZTI22QDeclarativeDebugQuery @ 2987 NONAME
+ _ZTI22QDeclarativeDebugWatch @ 2988 NONAME
+ _ZTI22QDeclarativeExpression @ 2989 NONAME
+ _ZTI22QDeclarativeFocusPanel @ 2990 NONAME
+ _ZTI22QDeclarativeFocusScope @ 2991 NONAME
+ _ZTI22QDeclarativeFontLoader @ 2992 NONAME
+ _ZTI22QDeclarativeStateGroup @ 2993 NONAME
+ _ZTI22QDeclarativeTransition @ 2994 NONAME
+ _ZTI23QDeclarativeBorderImage @ 2995 NONAME
+ _ZTI23QDeclarativeConnections @ 2996 NONAME
+ _ZTI23QDeclarativeDebugClient @ 2997 NONAME
+ _ZTI23QDeclarativeEngineDebug @ 2998 NONAME
+ _ZTI23QDeclarativeItemPrivate @ 2999 NONAME
+ _ZTI23QDeclarativePaintedItem @ 3000 NONAME
+ _ZTI23QDeclarativePathElement @ 3001 NONAME
+ _ZTI23QDeclarativePathPercent @ 3002 NONAME
+ _ZTI23QDeclarativePixmapReply @ 3003 NONAME
+ _ZTI23QDeclarativePropertyMap @ 3004 NONAME
+ _ZTI23QDeclarativeViewSection @ 3005 NONAME
+ _ZTI23QDeclarativeVisualModel @ 3006 NONAME
+ _ZTI24QDeclarativeCustomParser @ 3007 NONAME
+ _ZTI24QDeclarativeDebugService @ 3008 NONAME
+ _ZTI24QDeclarativeGradientStop @ 3009 NONAME
+ _ZTI24QDeclarativeParentChange @ 3010 NONAME
+ _ZTI24QDeclarativeParserStatus @ 3011 NONAME
+ _ZTI24QDeclarativeSpringFollow @ 3012 NONAME
+ _ZTI24QDeclarativeWorkerScript @ 3013 NONAME
+ _ZTI24QDeclarativeXmlListModel @ 3014 NONAME
+ _ZTI25QDeclarativeAnchorChanges @ 3015 NONAME
+ _ZTI25QDeclarativeAnimatedImage @ 3016 NONAME
+ _ZTI25QDeclarativeImageProvider @ 3017 NONAME
+ _ZTI25QDeclarativePathAttribute @ 3018 NONAME
+ _ZTI25QDeclarativeSystemPalette @ 3019 NONAME
+ _ZTI26QDeclarativeBasePositioner @ 3020 NONAME
+ _ZTI26QDeclarativeDebuggerStatus @ 3021 NONAME
+ _ZTI26QDeclarativeOpenMetaObject @ 3022 NONAME
+ _ZTI26QDeclarativeStateOperation @ 3023 NONAME
+ _ZTI27QDeclarativeAbstractBinding @ 3024 NONAME
+ _ZTI27QDeclarativeDebugConnection @ 3025 NONAME
+ _ZTI27QDeclarativeExtensionPlugin @ 3026 NONAME
+ _ZTI27QDeclarativePropertyChanges @ 3027 NONAME
+ _ZTI27QDeclarativeVisualDataModel @ 3028 NONAME
+ _ZTI27QDeclarativeVisualItemModel @ 3029 NONAME
+ _ZTI28QDeclarativeDebugObjectQuery @ 3030 NONAME
+ _ZTI28QDeclarativeXmlListModelRole @ 3031 NONAME
+ _ZTI29QDeclarativeDebugEnginesQuery @ 3032 NONAME
+ _ZTI29QDeclarativeSmoothedAnimation @ 3033 NONAME
+ _ZTI29QDeclarativeStateChangeScript @ 3034 NONAME
+ _ZTI30QDeclarativeDebugPropertyWatch @ 3035 NONAME
+ _ZTI30QDeclarativeExtensionInterface @ 3036 NONAME
+ _ZTI30QDeclarativeOpenMetaObjectType @ 3037 NONAME
+ _ZTI31QDeclarativePropertyValueSource @ 3038 NONAME
+ _ZTI32QDeclarativeDebugExpressionQuery @ 3039 NONAME
+ _ZTI33QDeclarativeDebugRootContextQuery @ 3040 NONAME
+ _ZTI35QDeclarativeGraphicsObjectContainer @ 3041 NONAME
+ _ZTI36QDeclarativePropertyValueInterceptor @ 3042 NONAME
+ _ZTI38QDeclarativeDebugObjectExpressionWatch @ 3043 NONAME
+ _ZTI39QDeclarativeNetworkAccessManagerFactory @ 3044 NONAME
+ _ZTI7QPacket @ 3045 NONAME
+ _ZTV15QDeclarativePen @ 3046 NONAME
+ _ZTV15QDeclarativeRow @ 3047 NONAME
+ _ZTV15QPacketAutoSend @ 3048 NONAME
+ _ZTV15QPacketProtocol @ 3049 NONAME
+ _ZTV16QDeclarativeBind @ 3050 NONAME
+ _ZTV16QDeclarativeDrag @ 3051 NONAME
+ _ZTV16QDeclarativeFlow @ 3052 NONAME
+ _ZTV16QDeclarativeGrid @ 3053 NONAME
+ _ZTV16QDeclarativeItem @ 3054 NONAME
+ _ZTV16QDeclarativePath @ 3055 NONAME
+ _ZTV16QDeclarativeText @ 3056 NONAME
+ _ZTV16QDeclarativeView @ 3057 NONAME
+ _ZTV17QDeclarativeCurve @ 3058 NONAME
+ _ZTV17QDeclarativeImage @ 3059 NONAME
+ _ZTV17QDeclarativeState @ 3060 NONAME
+ _ZTV17QDeclarativeTimer @ 3061 NONAME
+ _ZTV18QDeclarativeColumn @ 3062 NONAME
+ _ZTV18QDeclarativeEngine @ 3063 NONAME
+ _ZTV18QDeclarativeLoader @ 3064 NONAME
+ _ZTV18QMetaObjectBuilder @ 3065 NONAME
+ _ZTV19QDeclarativeAnchors @ 3066 NONAME
+ _ZTV19QDeclarativeBinding @ 3067 NONAME
+ _ZTV19QDeclarativeContext @ 3068 NONAME
+ _ZTV19QListModelInterface @ 3069 NONAME
+ _ZTV20QDeclarativeBehavior @ 3070 NONAME
+ _ZTV20QDeclarativeFlipable @ 3071 NONAME
+ _ZTV20QDeclarativeGradient @ 3072 NONAME
+ _ZTV20QDeclarativeGridView @ 3073 NONAME
+ _ZTV20QDeclarativeListView @ 3074 NONAME
+ _ZTV20QDeclarativePathLine @ 3075 NONAME
+ _ZTV20QDeclarativePathQuad @ 3076 NONAME
+ _ZTV20QDeclarativePathView @ 3077 NONAME
+ _ZTV20QDeclarativeRepeater @ 3078 NONAME
+ _ZTV20QDeclarativeTextEdit @ 3079 NONAME
+ _ZTV21QDeclarativeComponent @ 3080 NONAME
+ _ZTV21QDeclarativeFlickable @ 3081 NONAME
+ _ZTV21QDeclarativeImageBase @ 3082 NONAME
+ _ZTV21QDeclarativeListModel @ 3083 NONAME
+ _ZTV21QDeclarativeMouseArea @ 3084 NONAME
+ _ZTV21QDeclarativePathCubic @ 3085 NONAME
+ _ZTV21QDeclarativeRectangle @ 3086 NONAME
+ _ZTV21QDeclarativeScaleGrid @ 3087 NONAME
+ _ZTV21QDeclarativeTextInput @ 3088 NONAME
+ _ZTV21QDeclarativeTranslate @ 3089 NONAME
+ _ZTV21QDeclarativeValueType @ 3090 NONAME
+ _ZTV22QDeclarativeDebugQuery @ 3091 NONAME
+ _ZTV22QDeclarativeDebugWatch @ 3092 NONAME
+ _ZTV22QDeclarativeExpression @ 3093 NONAME
+ _ZTV22QDeclarativeFocusPanel @ 3094 NONAME
+ _ZTV22QDeclarativeFocusScope @ 3095 NONAME
+ _ZTV22QDeclarativeFontLoader @ 3096 NONAME
+ _ZTV22QDeclarativeStateGroup @ 3097 NONAME
+ _ZTV22QDeclarativeTransition @ 3098 NONAME
+ _ZTV23QDeclarativeBorderImage @ 3099 NONAME
+ _ZTV23QDeclarativeConnections @ 3100 NONAME
+ _ZTV23QDeclarativeDebugClient @ 3101 NONAME
+ _ZTV23QDeclarativeEngineDebug @ 3102 NONAME
+ _ZTV23QDeclarativeItemPrivate @ 3103 NONAME
+ _ZTV23QDeclarativePaintedItem @ 3104 NONAME
+ _ZTV23QDeclarativePathElement @ 3105 NONAME
+ _ZTV23QDeclarativePathPercent @ 3106 NONAME
+ _ZTV23QDeclarativePixmapReply @ 3107 NONAME
+ _ZTV23QDeclarativePropertyMap @ 3108 NONAME
+ _ZTV23QDeclarativeViewSection @ 3109 NONAME
+ _ZTV23QDeclarativeVisualModel @ 3110 NONAME
+ _ZTV24QDeclarativeCustomParser @ 3111 NONAME
+ _ZTV24QDeclarativeDebugService @ 3112 NONAME
+ _ZTV24QDeclarativeGradientStop @ 3113 NONAME
+ _ZTV24QDeclarativeParentChange @ 3114 NONAME
+ _ZTV24QDeclarativeParserStatus @ 3115 NONAME
+ _ZTV24QDeclarativeSpringFollow @ 3116 NONAME
+ _ZTV24QDeclarativeWorkerScript @ 3117 NONAME
+ _ZTV24QDeclarativeXmlListModel @ 3118 NONAME
+ _ZTV25QDeclarativeAnchorChanges @ 3119 NONAME
+ _ZTV25QDeclarativeAnimatedImage @ 3120 NONAME
+ _ZTV25QDeclarativeImageProvider @ 3121 NONAME
+ _ZTV25QDeclarativePathAttribute @ 3122 NONAME
+ _ZTV25QDeclarativeSystemPalette @ 3123 NONAME
+ _ZTV26QDeclarativeBasePositioner @ 3124 NONAME
+ _ZTV26QDeclarativeDebuggerStatus @ 3125 NONAME
+ _ZTV26QDeclarativeOpenMetaObject @ 3126 NONAME
+ _ZTV26QDeclarativeStateOperation @ 3127 NONAME
+ _ZTV27QDeclarativeAbstractBinding @ 3128 NONAME
+ _ZTV27QDeclarativeDebugConnection @ 3129 NONAME
+ _ZTV27QDeclarativeExtensionPlugin @ 3130 NONAME
+ _ZTV27QDeclarativePropertyChanges @ 3131 NONAME
+ _ZTV27QDeclarativeVisualDataModel @ 3132 NONAME
+ _ZTV27QDeclarativeVisualItemModel @ 3133 NONAME
+ _ZTV28QDeclarativeDebugObjectQuery @ 3134 NONAME
+ _ZTV28QDeclarativeXmlListModelRole @ 3135 NONAME
+ _ZTV29QDeclarativeDebugEnginesQuery @ 3136 NONAME
+ _ZTV29QDeclarativeSmoothedAnimation @ 3137 NONAME
+ _ZTV29QDeclarativeStateChangeScript @ 3138 NONAME
+ _ZTV30QDeclarativeDebugPropertyWatch @ 3139 NONAME
+ _ZTV30QDeclarativeOpenMetaObjectType @ 3140 NONAME
+ _ZTV31QDeclarativePropertyValueSource @ 3141 NONAME
+ _ZTV32QDeclarativeDebugExpressionQuery @ 3142 NONAME
+ _ZTV33QDeclarativeDebugRootContextQuery @ 3143 NONAME
+ _ZTV35QDeclarativeGraphicsObjectContainer @ 3144 NONAME
+ _ZTV36QDeclarativePropertyValueInterceptor @ 3145 NONAME
+ _ZTV38QDeclarativeDebugObjectExpressionWatch @ 3146 NONAME
+ _ZTV39QDeclarativeNetworkAccessManagerFactory @ 3147 NONAME
+ _ZTV7QPacket @ 3148 NONAME
+ _ZThn12_N29QDeclarativeSmoothedAnimationD0Ev @ 3149 NONAME
+ _ZThn12_N29QDeclarativeSmoothedAnimationD1Ev @ 3150 NONAME
+ _ZThn16_N16QDeclarativeItem10classBeginEv @ 3151 NONAME
+ _ZThn16_N16QDeclarativeItem17componentCompleteEv @ 3152 NONAME
+ _ZThn16_N16QDeclarativeItemD0Ev @ 3153 NONAME
+ _ZThn16_N16QDeclarativeItemD1Ev @ 3154 NONAME
+ _ZThn16_N16QDeclarativeText17componentCompleteEv @ 3155 NONAME
+ _ZThn16_N16QDeclarativeTextD0Ev @ 3156 NONAME
+ _ZThn16_N16QDeclarativeTextD1Ev @ 3157 NONAME
+ _ZThn16_N17QDeclarativeImageD0Ev @ 3158 NONAME
+ _ZThn16_N17QDeclarativeImageD1Ev @ 3159 NONAME
+ _ZThn16_N18QDeclarativeLoaderD0Ev @ 3160 NONAME
+ _ZThn16_N18QDeclarativeLoaderD1Ev @ 3161 NONAME
+ _ZThn16_N20QDeclarativeFlipableD0Ev @ 3162 NONAME
+ _ZThn16_N20QDeclarativeFlipableD1Ev @ 3163 NONAME
+ _ZThn16_N20QDeclarativeGridView17componentCompleteEv @ 3164 NONAME
+ _ZThn16_N20QDeclarativeGridViewD0Ev @ 3165 NONAME
+ _ZThn16_N20QDeclarativeGridViewD1Ev @ 3166 NONAME
+ _ZThn16_N20QDeclarativeListView17componentCompleteEv @ 3167 NONAME
+ _ZThn16_N20QDeclarativeListViewD0Ev @ 3168 NONAME
+ _ZThn16_N20QDeclarativeListViewD1Ev @ 3169 NONAME
+ _ZThn16_N20QDeclarativePathView17componentCompleteEv @ 3170 NONAME
+ _ZThn16_N20QDeclarativePathViewD0Ev @ 3171 NONAME
+ _ZThn16_N20QDeclarativePathViewD1Ev @ 3172 NONAME
+ _ZThn16_N20QDeclarativeRepeater17componentCompleteEv @ 3173 NONAME
+ _ZThn16_N20QDeclarativeRepeaterD0Ev @ 3174 NONAME
+ _ZThn16_N20QDeclarativeRepeaterD1Ev @ 3175 NONAME
+ _ZThn16_N20QDeclarativeTextEdit17componentCompleteEv @ 3176 NONAME
+ _ZThn16_N21QDeclarativeFlickableD0Ev @ 3177 NONAME
+ _ZThn16_N21QDeclarativeFlickableD1Ev @ 3178 NONAME
+ _ZThn16_N21QDeclarativeImageBase17componentCompleteEv @ 3179 NONAME
+ _ZThn16_N21QDeclarativeImageBaseD0Ev @ 3180 NONAME
+ _ZThn16_N21QDeclarativeImageBaseD1Ev @ 3181 NONAME
+ _ZThn16_N21QDeclarativeMouseAreaD0Ev @ 3182 NONAME
+ _ZThn16_N21QDeclarativeMouseAreaD1Ev @ 3183 NONAME
+ _ZThn16_N21QDeclarativeTextInputD0Ev @ 3184 NONAME
+ _ZThn16_N21QDeclarativeTextInputD1Ev @ 3185 NONAME
+ _ZThn16_N22QDeclarativeFocusPanelD0Ev @ 3186 NONAME
+ _ZThn16_N22QDeclarativeFocusPanelD1Ev @ 3187 NONAME
+ _ZThn16_N22QDeclarativeFocusScopeD0Ev @ 3188 NONAME
+ _ZThn16_N22QDeclarativeFocusScopeD1Ev @ 3189 NONAME
+ _ZThn16_N23QDeclarativeBorderImageD0Ev @ 3190 NONAME
+ _ZThn16_N23QDeclarativeBorderImageD1Ev @ 3191 NONAME
+ _ZThn16_N23QDeclarativePaintedItemD0Ev @ 3192 NONAME
+ _ZThn16_N23QDeclarativePaintedItemD1Ev @ 3193 NONAME
+ _ZThn16_N25QDeclarativeAnimatedImage17componentCompleteEv @ 3194 NONAME
+ _ZThn16_N25QDeclarativeAnimatedImageD0Ev @ 3195 NONAME
+ _ZThn16_N25QDeclarativeAnimatedImageD1Ev @ 3196 NONAME
+ _ZThn16_N26QDeclarativeBasePositioner17componentCompleteEv @ 3197 NONAME
+ _ZThn16_N26QDeclarativeBasePositionerD0Ev @ 3198 NONAME
+ _ZThn16_N26QDeclarativeBasePositionerD1Ev @ 3199 NONAME
+ _ZThn16_N35QDeclarativeGraphicsObjectContainerD0Ev @ 3200 NONAME
+ _ZThn16_N35QDeclarativeGraphicsObjectContainerD1Ev @ 3201 NONAME
+ _ZThn8_N16QDeclarativeBind17componentCompleteEv @ 3202 NONAME
+ _ZThn8_N16QDeclarativeBindD0Ev @ 3203 NONAME
+ _ZThn8_N16QDeclarativeBindD1Ev @ 3204 NONAME
+ _ZThn8_N16QDeclarativeItem10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3205 NONAME
+ _ZThn8_N16QDeclarativeItem10sceneEventEP6QEvent @ 3206 NONAME
+ _ZThn8_N16QDeclarativeItem13keyPressEventEP9QKeyEvent @ 3207 NONAME
+ _ZThn8_N16QDeclarativeItem15keyReleaseEventEP9QKeyEvent @ 3208 NONAME
+ _ZThn8_N16QDeclarativeItem16inputMethodEventEP17QInputMethodEvent @ 3209 NONAME
+ _ZThn8_N16QDeclarativeItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3210 NONAME
+ _ZThn8_N16QDeclarativeItemD0Ev @ 3211 NONAME
+ _ZThn8_N16QDeclarativeItemD1Ev @ 3212 NONAME
+ _ZThn8_N16QDeclarativePath17componentCompleteEv @ 3213 NONAME
+ _ZThn8_N16QDeclarativePathD0Ev @ 3214 NONAME
+ _ZThn8_N16QDeclarativePathD1Ev @ 3215 NONAME
+ _ZThn8_N16QDeclarativeText15mousePressEventEP24QGraphicsSceneMouseEvent @ 3216 NONAME
+ _ZThn8_N16QDeclarativeText17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3217 NONAME
+ _ZThn8_N16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3218 NONAME
+ _ZThn8_N16QDeclarativeTextD0Ev @ 3219 NONAME
+ _ZThn8_N16QDeclarativeTextD1Ev @ 3220 NONAME
+ _ZThn8_N16QDeclarativeViewD0Ev @ 3221 NONAME
+ _ZThn8_N16QDeclarativeViewD1Ev @ 3222 NONAME
+ _ZThn8_N17QDeclarativeImage5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3223 NONAME
+ _ZThn8_N17QDeclarativeImageD0Ev @ 3224 NONAME
+ _ZThn8_N17QDeclarativeImageD1Ev @ 3225 NONAME
+ _ZThn8_N17QDeclarativeTimer10classBeginEv @ 3226 NONAME
+ _ZThn8_N17QDeclarativeTimer17componentCompleteEv @ 3227 NONAME
+ _ZThn8_N18QDeclarativeLoader10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3228 NONAME
+ _ZThn8_N18QDeclarativeLoaderD0Ev @ 3229 NONAME
+ _ZThn8_N18QDeclarativeLoaderD1Ev @ 3230 NONAME
+ _ZThn8_N19QDeclarativeBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 3231 NONAME
+ _ZThn8_N19QDeclarativeBinding13propertyIndexEv @ 3232 NONAME
+ _ZThn8_N19QDeclarativeBinding6updateE6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 3233 NONAME
+ _ZThn8_N19QDeclarativeBindingD0Ev @ 3234 NONAME
+ _ZThn8_N19QDeclarativeBindingD1Ev @ 3235 NONAME
+ _ZThn8_N20QDeclarativeBehavior5writeERK8QVariant @ 3236 NONAME
+ _ZThn8_N20QDeclarativeBehavior9setTargetERK20QDeclarativeProperty @ 3237 NONAME
+ _ZThn8_N20QDeclarativeBehaviorD0Ev @ 3238 NONAME
+ _ZThn8_N20QDeclarativeBehaviorD1Ev @ 3239 NONAME
+ _ZThn8_N20QDeclarativeFlipableD0Ev @ 3240 NONAME
+ _ZThn8_N20QDeclarativeFlipableD1Ev @ 3241 NONAME
+ _ZThn8_N20QDeclarativeGridView13keyPressEventEP9QKeyEvent @ 3242 NONAME
+ _ZThn8_N20QDeclarativeGridViewD0Ev @ 3243 NONAME
+ _ZThn8_N20QDeclarativeGridViewD1Ev @ 3244 NONAME
+ _ZThn8_N20QDeclarativeListView13keyPressEventEP9QKeyEvent @ 3245 NONAME
+ _ZThn8_N20QDeclarativeListViewD0Ev @ 3246 NONAME
+ _ZThn8_N20QDeclarativeListViewD1Ev @ 3247 NONAME
+ _ZThn8_N20QDeclarativePathView14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3248 NONAME
+ _ZThn8_N20QDeclarativePathView15mousePressEventEP24QGraphicsSceneMouseEvent @ 3249 NONAME
+ _ZThn8_N20QDeclarativePathView16sceneEventFilterEP13QGraphicsItemP6QEvent @ 3250 NONAME
+ _ZThn8_N20QDeclarativePathView17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3251 NONAME
+ _ZThn8_N20QDeclarativePathViewD0Ev @ 3252 NONAME
+ _ZThn8_N20QDeclarativePathViewD1Ev @ 3253 NONAME
+ _ZThn8_N20QDeclarativeRepeater10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3254 NONAME
+ _ZThn8_N20QDeclarativeRepeaterD0Ev @ 3255 NONAME
+ _ZThn8_N20QDeclarativeRepeaterD1Ev @ 3256 NONAME
+ _ZThn8_N20QDeclarativeTextEdit13keyPressEventEP9QKeyEvent @ 3257 NONAME
+ _ZThn8_N20QDeclarativeTextEdit14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3258 NONAME
+ _ZThn8_N20QDeclarativeTextEdit15keyReleaseEventEP9QKeyEvent @ 3259 NONAME
+ _ZThn8_N20QDeclarativeTextEdit15mousePressEventEP24QGraphicsSceneMouseEvent @ 3260 NONAME
+ _ZThn8_N20QDeclarativeTextEdit16inputMethodEventEP17QInputMethodEvent @ 3261 NONAME
+ _ZThn8_N20QDeclarativeTextEdit17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3262 NONAME
+ _ZThn8_N20QDeclarativeTextEdit21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 3263 NONAME
+ _ZThn8_N21QDeclarativeFlickable10wheelEventEP24QGraphicsSceneWheelEvent @ 3264 NONAME
+ _ZThn8_N21QDeclarativeFlickable14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3265 NONAME
+ _ZThn8_N21QDeclarativeFlickable15mousePressEventEP24QGraphicsSceneMouseEvent @ 3266 NONAME
+ _ZThn8_N21QDeclarativeFlickable16sceneEventFilterEP13QGraphicsItemP6QEvent @ 3267 NONAME
+ _ZThn8_N21QDeclarativeFlickable17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3268 NONAME
+ _ZThn8_N21QDeclarativeFlickableD0Ev @ 3269 NONAME
+ _ZThn8_N21QDeclarativeFlickableD1Ev @ 3270 NONAME
+ _ZThn8_N21QDeclarativeImageBaseD0Ev @ 3271 NONAME
+ _ZThn8_N21QDeclarativeImageBaseD1Ev @ 3272 NONAME
+ _ZThn8_N21QDeclarativeMouseArea10sceneEventEP6QEvent @ 3273 NONAME
+ _ZThn8_N21QDeclarativeMouseArea14hoverMoveEventEP24QGraphicsSceneHoverEvent @ 3274 NONAME
+ _ZThn8_N21QDeclarativeMouseArea14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 3275 NONAME
+ _ZThn8_N21QDeclarativeMouseArea15hoverEnterEventEP24QGraphicsSceneHoverEvent @ 3276 NONAME
+ _ZThn8_N21QDeclarativeMouseArea15hoverLeaveEventEP24QGraphicsSceneHoverEvent @ 3277 NONAME
+ _ZThn8_N21QDeclarativeMouseArea15mousePressEventEP24QGraphicsSceneMouseEvent @ 3278 NONAME
+ _ZThn8_N21QDeclarativeMouseArea17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3279 NONAME
+ _ZThn8_N21QDeclarativeMouseArea21mouseDoubleClickEventEP24QGraphicsSceneMouseEvent @ 3280 NONAME
+ _ZThn8_N21QDeclarativeMouseAreaD0Ev @ 3281 NONAME
+ _ZThn8_N21QDeclarativeMouseAreaD1Ev @ 3282 NONAME
+ _ZThn8_N21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3283 NONAME
+ _ZThn8_N21QDeclarativeTextInput13keyPressEventEP9QKeyEvent @ 3284 NONAME
+ _ZThn8_N21QDeclarativeTextInput15mousePressEventEP24QGraphicsSceneMouseEvent @ 3285 NONAME
+ _ZThn8_N21QDeclarativeTextInput17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 3286 NONAME
+ _ZThn8_N21QDeclarativeTextInputD0Ev @ 3287 NONAME
+ _ZThn8_N21QDeclarativeTextInputD1Ev @ 3288 NONAME
+ _ZThn8_N22QDeclarativeFocusPanel10sceneEventEP6QEvent @ 3289 NONAME
+ _ZThn8_N22QDeclarativeFocusPanelD0Ev @ 3290 NONAME
+ _ZThn8_N22QDeclarativeFocusPanelD1Ev @ 3291 NONAME
+ _ZThn8_N22QDeclarativeFocusScopeD0Ev @ 3292 NONAME
+ _ZThn8_N22QDeclarativeFocusScopeD1Ev @ 3293 NONAME
+ _ZThn8_N22QDeclarativeStateGroup10classBeginEv @ 3294 NONAME
+ _ZThn8_N22QDeclarativeStateGroup17componentCompleteEv @ 3295 NONAME
+ _ZThn8_N22QDeclarativeStateGroupD0Ev @ 3296 NONAME
+ _ZThn8_N22QDeclarativeStateGroupD1Ev @ 3297 NONAME
+ _ZThn8_N23QDeclarativeBorderImage5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3298 NONAME
+ _ZThn8_N23QDeclarativeBorderImageD0Ev @ 3299 NONAME
+ _ZThn8_N23QDeclarativeBorderImageD1Ev @ 3300 NONAME
+ _ZThn8_N23QDeclarativeConnections17componentCompleteEv @ 3301 NONAME
+ _ZThn8_N23QDeclarativeConnectionsD0Ev @ 3302 NONAME
+ _ZThn8_N23QDeclarativeConnectionsD1Ev @ 3303 NONAME
+ _ZThn8_N23QDeclarativePaintedItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 3304 NONAME
+ _ZThn8_N23QDeclarativePaintedItemD0Ev @ 3305 NONAME
+ _ZThn8_N23QDeclarativePaintedItemD1Ev @ 3306 NONAME
+ _ZThn8_N24QDeclarativeParentChange12isReversableEv @ 3307 NONAME
+ _ZThn8_N24QDeclarativeParentChange13copyOriginalsEP23QDeclarativeActionEvent @ 3308 NONAME
+ _ZThn8_N24QDeclarativeParentChange13saveOriginalsEv @ 3309 NONAME
+ _ZThn8_N24QDeclarativeParentChange17saveCurrentValuesEv @ 3310 NONAME
+ _ZThn8_N24QDeclarativeParentChange6rewindEv @ 3311 NONAME
+ _ZThn8_N24QDeclarativeParentChange7executeEv @ 3312 NONAME
+ _ZThn8_N24QDeclarativeParentChange7reverseEv @ 3313 NONAME
+ _ZThn8_N24QDeclarativeParentChange8overrideEP23QDeclarativeActionEvent @ 3314 NONAME
+ _ZThn8_N24QDeclarativeParentChangeD0Ev @ 3315 NONAME
+ _ZThn8_N24QDeclarativeParentChangeD1Ev @ 3316 NONAME
+ _ZThn8_N24QDeclarativeSpringFollow9setTargetERK20QDeclarativeProperty @ 3317 NONAME
+ _ZThn8_N24QDeclarativeSpringFollowD0Ev @ 3318 NONAME
+ _ZThn8_N24QDeclarativeSpringFollowD1Ev @ 3319 NONAME
+ _ZThn8_N24QDeclarativeWorkerScript17componentCompleteEv @ 3320 NONAME
+ _ZThn8_N24QDeclarativeWorkerScriptD0Ev @ 3321 NONAME
+ _ZThn8_N24QDeclarativeWorkerScriptD1Ev @ 3322 NONAME
+ _ZThn8_N24QDeclarativeXmlListModel10classBeginEv @ 3323 NONAME
+ _ZThn8_N24QDeclarativeXmlListModel17componentCompleteEv @ 3324 NONAME
+ _ZThn8_N24QDeclarativeXmlListModelD0Ev @ 3325 NONAME
+ _ZThn8_N24QDeclarativeXmlListModelD1Ev @ 3326 NONAME
+ _ZThn8_N25QDeclarativeAnchorChanges12isReversableEv @ 3327 NONAME
+ _ZThn8_N25QDeclarativeAnchorChanges13clearBindingsEv @ 3328 NONAME
+ _ZThn8_N25QDeclarativeAnchorChanges13copyOriginalsEP23QDeclarativeActionEvent @ 3329 NONAME
+ _ZThn8_N25QDeclarativeAnchorChanges13saveOriginalsEv @ 3330 NONAME
+ _ZThn8_N25QDeclarativeAnchorChanges15changesBindingsEv @ 3331 NONAME
+ _ZThn8_N25QDeclarativeAnchorChanges16saveTargetValuesEv @ 3332 NONAME
+ _ZThn8_N25QDeclarativeAnchorChanges17saveCurrentValuesEv @ 3333 NONAME
+ _ZThn8_N25QDeclarativeAnchorChanges6rewindEv @ 3334 NONAME
+ _ZThn8_N25QDeclarativeAnchorChanges7executeEv @ 3335 NONAME
+ _ZThn8_N25QDeclarativeAnchorChanges7reverseEv @ 3336 NONAME
+ _ZThn8_N25QDeclarativeAnchorChanges8overrideEP23QDeclarativeActionEvent @ 3337 NONAME
+ _ZThn8_N25QDeclarativeAnchorChangesD0Ev @ 3338 NONAME
+ _ZThn8_N25QDeclarativeAnchorChangesD1Ev @ 3339 NONAME
+ _ZThn8_N25QDeclarativeAnimatedImageD0Ev @ 3340 NONAME
+ _ZThn8_N25QDeclarativeAnimatedImageD1Ev @ 3341 NONAME
+ _ZThn8_N26QDeclarativeBasePositioner10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3342 NONAME
+ _ZThn8_N26QDeclarativeBasePositionerD0Ev @ 3343 NONAME
+ _ZThn8_N26QDeclarativeBasePositionerD1Ev @ 3344 NONAME
+ _ZThn8_N27QDeclarativeExtensionPlugin16initializeEngineEP18QDeclarativeEnginePKc @ 3345 NONAME
+ _ZThn8_N27QDeclarativeExtensionPluginD0Ev @ 3346 NONAME
+ _ZThn8_N27QDeclarativeExtensionPluginD1Ev @ 3347 NONAME
+ _ZThn8_N29QDeclarativeSmoothedAnimationD0Ev @ 3348 NONAME
+ _ZThn8_N29QDeclarativeSmoothedAnimationD1Ev @ 3349 NONAME
+ _ZThn8_N29QDeclarativeStateChangeScript7executeEv @ 3350 NONAME
+ _ZThn8_N29QDeclarativeStateChangeScriptD0Ev @ 3351 NONAME
+ _ZThn8_N29QDeclarativeStateChangeScriptD1Ev @ 3352 NONAME
+ _ZThn8_N35QDeclarativeGraphicsObjectContainer10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 3353 NONAME
+ _ZThn8_N35QDeclarativeGraphicsObjectContainerD0Ev @ 3354 NONAME
+ _ZThn8_N35QDeclarativeGraphicsObjectContainerD1Ev @ 3355 NONAME
+ _ZThn8_NK16QDeclarativeItem12boundingRectEv @ 3356 NONAME
+ _ZThn8_NK16QDeclarativeItem16inputMethodQueryEN2Qt16InputMethodQueryE @ 3357 NONAME
+ _ZThn8_NK19QDeclarativeBinding10expressionEv @ 3358 NONAME
+ _ZThn8_NK20QDeclarativeTextEdit16inputMethodQueryEN2Qt16InputMethodQueryE @ 3359 NONAME
+ _ZThn8_NK21QDeclarativeRectangle12boundingRectEv @ 3360 NONAME
+ _ZThn8_NK21QDeclarativeTextInput16inputMethodQueryEN2Qt16InputMethodQueryE @ 3361 NONAME
+ _ZThn8_NK24QDeclarativeParentChange8typeNameEv @ 3362 NONAME
+ _ZThn8_NK25QDeclarativeAnchorChanges8typeNameEv @ 3363 NONAME
+ _ZThn8_NK29QDeclarativeStateChangeScript8typeNameEv @ 3364 NONAME
+ _Zls6QDebugP16QDeclarativeItem @ 3365 NONAME
+ _Zls6QDebugRK17QDeclarativeError @ 3366 NONAME
+ _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 3367 NONAME
+ _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 3368 NONAME
+ _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 3369 NONAME
+ _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 3370 NONAME
diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def
index 7c91264..82c5128 100644
--- a/src/s60installs/eabi/QtGuiu.def
+++ b/src/s60installs/eabi/QtGuiu.def
@@ -1,7 +1,7 @@
EXPORTS
_Z11qFadeEffectP7QWidgeti @ 1 NONAME
_Z11qt_image_idRK6QImage @ 2 NONAME
- _Z12qDrawPixmapsP8QPainterPKN12QDrawPixmaps4DataEiRK7QPixmap6QFlagsINS1_11DrawingHintEE @ 3 NONAME ABSENT
+ _Z12qDrawPixmapsP8QPainterPKN12QDrawPixmaps4DataEiRK7QPixmap6QFlagsINS1_11DrawingHintEE @ 3 NONAME
_Z12qt_pixmap_idRK7QPixmap @ 4 NONAME
_Z13qDrawWinPanelP8QPainterRK5QRectRK8QPalettebPK6QBrush @ 5 NONAME
_Z13qDrawWinPanelP8QPainteriiiiRK8QPalettebPK6QBrush @ 6 NONAME
@@ -1818,7 +1818,7 @@ EXPORTS
_ZN12QLineControl17_q_deleteSelectedEv @ 1817 NONAME
_ZN12QLineControl17processMouseEventEP11QMouseEvent @ 1818 NONAME
_ZN12QLineControl17resetInputContextEv @ 1819 NONAME
- _ZN12QLineControl17updateDisplayTextEv @ 1820 NONAME
+ _ZN12QLineControl17updateDisplayTextEv @ 1820 NONAME ABSENT
_ZN12QLineControl18displayTextChangedERK7QString @ 1821 NONAME
_ZN12QLineControl18removeSelectedTextEv @ 1822 NONAME
_ZN12QLineControl19_q_clipboardChangedEv @ 1823 NONAME
@@ -1834,7 +1834,7 @@ EXPORTS
_ZN12QLineControl4initERK7QString @ 1833 NONAME
_ZN12QLineControl5clearEv @ 1834 NONAME
_ZN12QLineControl5fixupEv @ 1835 NONAME
- _ZN12QLineControl5pasteEv @ 1836 NONAME
+ _ZN12QLineControl5pasteEv @ 1836 NONAME ABSENT
_ZN12QLineControl6insertERK7QString @ 1837 NONAME
_ZN12QLineControl8acceptedEv @ 1838 NONAME
_ZN12QLineControl8completeEi @ 1839 NONAME
@@ -2148,7 +2148,7 @@ EXPORTS
_ZN12QTextControl4undoEv @ 2147 NONAME
_ZN12QTextControl5clearEv @ 2148 NONAME
_ZN12QTextControl5eventEP6QEvent @ 2149 NONAME
- _ZN12QTextControl5pasteEv @ 2150 NONAME
+ _ZN12QTextControl5pasteEv @ 2150 NONAME ABSENT
_ZN12QTextControl6appendERK7QString @ 2151 NONAME
_ZN12QTextControl7setHtmlERK7QString @ 2152 NONAME
_ZN12QTextControl8setFocusEbN2Qt11FocusReasonE @ 2153 NONAME
@@ -2906,7 +2906,7 @@ EXPORTS
_ZN14QPaintEngineEx10drawPointsEPK7QPointFi @ 2905 NONAME
_ZN14QPaintEngineEx11drawEllipseERK5QRect @ 2906 NONAME
_ZN14QPaintEngineEx11drawEllipseERK6QRectF @ 2907 NONAME
- _ZN14QPaintEngineEx11drawPixmapsEPKN12QDrawPixmaps4DataEiRK7QPixmap6QFlagsINS0_11DrawingHintEE @ 2908 NONAME ABSENT
+ _ZN14QPaintEngineEx11drawPixmapsEPKN12QDrawPixmaps4DataEiRK7QPixmap6QFlagsINS0_11DrawingHintEE @ 2908 NONAME
_ZN14QPaintEngineEx11drawPolygonEPK6QPointiN12QPaintEngine15PolygonDrawModeE @ 2909 NONAME
_ZN14QPaintEngineEx11drawPolygonEPK7QPointFiN12QPaintEngine15PolygonDrawModeE @ 2910 NONAME
_ZN14QPaintEngineEx11updateStateERK17QPaintEngineState @ 2911 NONAME
@@ -4223,7 +4223,7 @@ EXPORTS
_ZN18QTextBlockUserDataD0Ev @ 4222 NONAME
_ZN18QTextBlockUserDataD1Ev @ 4223 NONAME
_ZN18QTextBlockUserDataD2Ev @ 4224 NONAME
- _ZN18QTextureGlyphCache8populateERK12QTextItemIntRK15QVarLengthArrayIjLi256EERKS3_I11QFixedPointLi256EE @ 4225 NONAME ABSENT
+ _ZN18QTextureGlyphCache8populateERK12QTextItemIntRK15QVarLengthArrayIjLi256EERKS3_I11QFixedPointLi256EE @ 4225 NONAME
_ZN19QAbstractProxyModel11qt_metacallEN11QMetaObject4CallEiPPv @ 4226 NONAME
_ZN19QAbstractProxyModel11qt_metacastEPKc @ 4227 NONAME
_ZN19QAbstractProxyModel13setHeaderDataEiN2Qt11OrientationERK8QVarianti @ 4228 NONAME
@@ -11805,7 +11805,7 @@ EXPORTS
_ZN24QImagePixmapCleanupHooks34executePixmapDataModificationHooksEP11QPixmapData @ 11804 NONAME
_ZN9QS60Style10timerEventEP11QTimerEvent @ 11805 NONAME
_ZN9QS60Style11eventFilterEP7QObjectP6QEvent @ 11806 NONAME
- _Z14qt_draw_glyphsP8QPainterPKjPK7QPointFi @ 11807 NONAME
+ _ZN13QFontDatabase25removeAllApplicationFontsEv @ 11807 NONAME
_ZN10QZipReader5closeEv @ 11808 NONAME
_ZN10QZipReader8FileInfoC1ERKS0_ @ 11809 NONAME
_ZN10QZipReader8FileInfoC1Ev @ 11810 NONAME
@@ -11839,7 +11839,7 @@ EXPORTS
_ZN12QKeySequenceC1ERK7QStringNS_14SequenceFormatE @ 11838 NONAME
_ZN12QKeySequenceC2ERK7QStringNS_14SequenceFormatE @ 11839 NONAME
_ZN13QTextDocument19clearUndoRedoStacksENS_6StacksE @ 11840 NONAME
- _ZN14QPaintEngineEx19drawPixmapFragmentsEPKN8QPainter8FragmentEiRK7QPixmap6QFlagsINS0_12FragmentHintEE @ 11841 NONAME
+ _ZN14QPaintEngineEx19drawPixmapFragmentsEPKN8QPainter8FragmentEiRK7QPixmap6QFlagsINS0_12FragmentHintEE @ 11841 NONAME ABSENT
_ZN14QWidgetPrivate11inTabWidgetEP7QWidget @ 11842 NONAME
_ZN14QWidgetPrivate17canKeypadNavigateEN2Qt11OrientationE @ 11843 NONAME
_ZN14QWidgetPrivate6renderEP12QPaintDeviceRK6QPointRK7QRegion6QFlagsIN7QWidget10RenderFlagEEb @ 11844 NONAME
@@ -11882,8 +11882,8 @@ EXPORTS
_ZN6QLabel12setSelectionEii @ 11881 NONAME
_ZN7QPixmap16convertFromImageERK6QImage6QFlagsIN2Qt19ImageConversionFlagEE @ 11882 NONAME
_ZN8QPainter14drawStaticTextERK7QPointFRK11QStaticText @ 11883 NONAME
- _ZN8QPainter19drawPixmapFragmentsEPKNS_8FragmentEiRK7QPixmap6QFlagsINS_12FragmentHintEE @ 11884 NONAME
- _ZN8QPainter8Fragment6createERK7QPointFRK6QRectFffff @ 11885 NONAME
+ _ZN8QPainter19drawPixmapFragmentsEPKNS_8FragmentEiRK7QPixmap6QFlagsINS_12FragmentHintEE @ 11884 NONAME ABSENT
+ _ZN8QPainter8Fragment6createERK7QPointFRK6QRectFffff @ 11885 NONAME ABSENT
_ZN8QToolBar17visibilityChangedEb @ 11886 NONAME
_ZNK10QZipReader10extractAllERK7QString @ 11887 NONAME
_ZNK10QZipReader10isReadableEv @ 11888 NONAME
@@ -11926,4 +11926,38 @@ EXPORTS
_ZTI26QAbstractScrollAreaPrivate @ 11925 NONAME
_ZTV20QGraphicsViewPrivate @ 11926 NONAME
_ZTV26QAbstractScrollAreaPrivate @ 11927 NONAME
+ _Z14qt_draw_glyphsP8QPainterPKjPK7QPointFi @ 11928 NONAME
+ _ZN11QFontEngine16getGlyphBearingsEjPfS0_ @ 11929 NONAME
+ _ZN12QLineControl17updateDisplayTextEb @ 11930 NONAME
+ _ZN12QLineControl5pasteEN10QClipboard4ModeE @ 11931 NONAME
+ _ZN12QTextControl5pasteEN10QClipboard4ModeE @ 11932 NONAME
+ _ZN14QPaintEngineEx19drawPixmapFragmentsEPKN8QPainter14PixmapFragmentEiRK7QPixmap6QFlagsINS0_18PixmapFragmentHintEE @ 11933 NONAME
+ _ZN15QGraphicsObject12widthChangedEv @ 11934 NONAME
+ _ZN15QGraphicsObject13heightChangedEv @ 11935 NONAME
+ _ZN15QGraphicsObject15childrenChangedEv @ 11936 NONAME
+ _ZN15QGraphicsWidget15geometryChangedEv @ 11937 NONAME
+ _ZN15QSplitterHandle11resizeEventEP12QResizeEvent @ 11938 NONAME
+ _ZN20QGraphicsItemPrivate10resetWidthEv @ 11939 NONAME
+ _ZN20QGraphicsItemPrivate11resetHeightEv @ 11940 NONAME
+ _ZN20QGraphicsItemPrivate12childrenListEv @ 11941 NONAME
+ _ZN20QGraphicsItemPrivate14setFocusHelperEN2Qt11FocusReasonEbb @ 11942 NONAME
+ _ZN20QGraphicsItemPrivate16clearFocusHelperEb @ 11943 NONAME
+ _ZN20QGraphicsItemPrivate24prependGraphicsTransformEP18QGraphicsTransform @ 11944 NONAME
+ _ZN20QGraphicsItemPrivate6appendEP24QDeclarativeListPropertyI15QGraphicsObjectEPS1_ @ 11945 NONAME
+ _ZN20QGraphicsItemPrivate8setWidthEf @ 11946 NONAME
+ _ZN20QGraphicsItemPrivate9setHeightEf @ 11947 NONAME
+ _ZN7QWizard11pageRemovedEi @ 11948 NONAME
+ _ZN7QWizard13setSideWidgetEP7QWidget @ 11949 NONAME
+ _ZN7QWizard9pageAddedEi @ 11950 NONAME
+ _ZN8QPainter14PixmapFragment6createERK7QPointFRK6QRectFffff @ 11951 NONAME
+ _ZN8QPainter19drawPixmapFragmentsEPKNS_14PixmapFragmentEiRK7QPixmap6QFlagsINS_18PixmapFragmentHintEE @ 11952 NONAME
+ _ZN9QLineEdit18setPlaceholderTextERK7QString @ 11953 NONAME
+ _ZNK10QZipReader6deviceEv @ 11954 NONAME
+ _ZNK10QZipReader8FileInfo7isValidEv @ 11955 NONAME
+ _ZNK20QGraphicsItemPrivate5widthEv @ 11956 NONAME
+ _ZNK20QGraphicsItemPrivate6heightEv @ 11957 NONAME
+ _ZNK6QImage13bitPlaneCountEv @ 11958 NONAME
+ _ZNK7QWizard10sideWidgetEv @ 11959 NONAME
+ _ZNK9QLineEdit15placeholderTextEv @ 11960 NONAME
+ _ZNK9QTextLine17horizontalAdvanceEv @ 11961 NONAME
diff --git a/src/s60installs/eabi/QtMultimediau.def b/src/s60installs/eabi/QtMultimediau.def
index fbc5f7b..384796d 100644
--- a/src/s60installs/eabi/QtMultimediau.def
+++ b/src/s60installs/eabi/QtMultimediau.def
@@ -370,7 +370,7 @@ EXPORTS
_ZN12QVideoWidget17brightnessChangedEi @ 369 NONAME
_ZN12QVideoWidget17fullScreenChangedEb @ 370 NONAME
_ZN12QVideoWidget17saturationChangedEi @ 371 NONAME
- _ZN12QVideoWidget18setAspectRatioModeENS_15AspectRatioModeE @ 372 NONAME
+ _ZN12QVideoWidget18setAspectRatioModeENS_15AspectRatioModeE @ 372 NONAME ABSENT
_ZN12QVideoWidget19getStaticMetaObjectEv @ 373 NONAME
_ZN12QVideoWidget5eventEP6QEvent @ 374 NONAME
_ZN12QVideoWidget6setHueEi @ 375 NONAME
@@ -382,7 +382,7 @@ EXPORTS
_ZN12QVideoWidgetD0Ev @ 381 NONAME
_ZN12QVideoWidgetD1Ev @ 382 NONAME
_ZN12QVideoWidgetD2Ev @ 383 NONAME
- _ZN12QtMultimedia28qRegisterDeclarativeElementsEPKc @ 384 NONAME
+ _ZN12QtMultimedia28qRegisterDeclarativeElementsEPKc @ 384 NONAME ABSENT
_ZN13QMediaContentC1ERK14QMediaResource @ 385 NONAME
_ZN13QMediaContentC1ERK15QNetworkRequest @ 386 NONAME
_ZN13QMediaContentC1ERK4QUrl @ 387 NONAME
@@ -946,4 +946,30 @@ EXPORTS
_ZneRK15QMediaTimeRangeS1_ @ 945 NONAME
_ZneRK18QMediaTimeIntervalS1_ @ 946 NONAME
_ZplRK15QMediaTimeRangeS1_ @ 947 NONAME
+ _ZN12QSoundEffect11qt_metacallEN11QMetaObject4CallEiPPv @ 948 NONAME
+ _ZN12QSoundEffect11qt_metacastEPKc @ 949 NONAME
+ _ZN12QSoundEffect12loopsChangedEv @ 950 NONAME
+ _ZN12QSoundEffect12mutedChangedEv @ 951 NONAME
+ _ZN12QSoundEffect13sourceChangedEv @ 952 NONAME
+ _ZN12QSoundEffect13volumeChangedEv @ 953 NONAME
+ _ZN12QSoundEffect16staticMetaObjectE @ 954 NONAME DATA 16
+ _ZN12QSoundEffect19getStaticMetaObjectEv @ 955 NONAME
+ _ZN12QSoundEffect4playEv @ 956 NONAME
+ _ZN12QSoundEffect8setLoopsEi @ 957 NONAME
+ _ZN12QSoundEffect8setMutedEb @ 958 NONAME
+ _ZN12QSoundEffect9setSourceERK4QUrl @ 959 NONAME
+ _ZN12QSoundEffect9setVolumeEi @ 960 NONAME
+ _ZN12QSoundEffectC1EP7QObject @ 961 NONAME
+ _ZN12QSoundEffectC2EP7QObject @ 962 NONAME
+ _ZN12QSoundEffectD0Ev @ 963 NONAME
+ _ZN12QSoundEffectD1Ev @ 964 NONAME
+ _ZN12QSoundEffectD2Ev @ 965 NONAME
+ _ZN12QVideoWidget18setAspectRatioModeEN2Qt15AspectRatioModeE @ 966 NONAME
+ _ZNK12QSoundEffect10metaObjectEv @ 967 NONAME
+ _ZNK12QSoundEffect5loopsEv @ 968 NONAME
+ _ZNK12QSoundEffect6sourceEv @ 969 NONAME
+ _ZNK12QSoundEffect6volumeEv @ 970 NONAME
+ _ZNK12QSoundEffect7isMutedEv @ 971 NONAME
+ _ZTI12QSoundEffect @ 972 NONAME
+ _ZTV12QSoundEffect @ 973 NONAME
diff --git a/src/s60installs/eabi/QtNetworku.def b/src/s60installs/eabi/QtNetworku.def
index a27c4be..926a000 100644
--- a/src/s60installs/eabi/QtNetworku.def
+++ b/src/s60installs/eabi/QtNetworku.def
@@ -1043,9 +1043,9 @@ EXPORTS
_ZN19QBearerEnginePluginD2Ev @ 1042 NONAME
_ZN21QNetworkAccessManager16setConfigurationERK21QNetworkConfiguration @ 1043 NONAME
_ZN21QNetworkAccessManager17sendCustomRequestERK15QNetworkRequestRK10QByteArrayP9QIODevice @ 1044 NONAME
- _ZN21QNetworkAccessManager20networkAccessChangedEb @ 1045 NONAME
- _ZN21QNetworkAccessManager20networkSessionOnlineEv @ 1046 NONAME
- _ZN21QNetworkAccessManager23setNetworkAccessEnabledEb @ 1047 NONAME
+ _ZN21QNetworkAccessManager20networkAccessChangedEb @ 1045 NONAME ABSENT
+ _ZN21QNetworkAccessManager20networkSessionOnlineEv @ 1046 NONAME ABSENT
+ _ZN21QNetworkAccessManager23setNetworkAccessEnabledEb @ 1047 NONAME ABSENT
_ZN21QNetworkConfigurationC1ERKS_ @ 1048 NONAME
_ZN21QNetworkConfigurationC1Ev @ 1049 NONAME
_ZN21QNetworkConfigurationC2ERKS_ @ 1050 NONAME
@@ -1116,7 +1116,7 @@ EXPORTS
_ZNK19QBearerEnginePlugin10metaObjectEv @ 1115 NONAME
_ZNK21QNetworkAccessManager13configurationEv @ 1116 NONAME
_ZNK21QNetworkAccessManager19activeConfigurationEv @ 1117 NONAME
- _ZNK21QNetworkAccessManager20networkAccessEnabledEv @ 1118 NONAME
+ _ZNK21QNetworkAccessManager20networkAccessEnabledEv @ 1118 NONAME ABSENT
_ZNK21QNetworkConfiguration10bearerNameEv @ 1119 NONAME
_ZNK21QNetworkConfiguration10identifierEv @ 1120 NONAME
_ZNK21QNetworkConfiguration18isRoamingAvailableEv @ 1121 NONAME
@@ -1150,4 +1150,20 @@ EXPORTS
_ZTV35QNetworkConfigurationManagerPrivate @ 1149 NONAME
_ZThn8_N19QBearerEnginePluginD0Ev @ 1150 NONAME
_ZThn8_N19QBearerEnginePluginD1Ev @ 1151 NONAME
+ _Z19qt_qhostinfo_lookupRK7QStringP7QObjectPKcPbPi @ 1152 NONAME
+ _Z24qt_qhostinfo_clear_cachev @ 1153 NONAME
+ _ZN21QNetworkAccessManager20setNetworkAccessibleENS_20NetworkAccessibilityE @ 1154 NONAME
+ _ZN21QNetworkAccessManager23networkSessionConnectedEv @ 1155 NONAME
+ _ZN21QNetworkAccessManager24networkAccessibleChangedENS_20NetworkAccessibilityE @ 1156 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate11pollEnginesEv @ 1157 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate12startPollingEv @ 1158 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate13enablePollingEv @ 1159 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate14disablePollingEv @ 1160 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate17allConfigurationsE6QFlagsIN21QNetworkConfiguration9StateFlagEE @ 1161 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate20defaultConfigurationEv @ 1162 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate27configurationFromIdentifierERK7QString @ 1163 NONAME
+ _ZN35QNetworkConfigurationManagerPrivate8isOnlineEv @ 1164 NONAME
+ _ZNK13QBearerEngine15requiresPollingEv @ 1165 NONAME
+ _ZNK13QBearerEngine19configurationsInUseEv @ 1166 NONAME
+ _ZNK21QNetworkAccessManager17networkAccessibleEv @ 1167 NONAME
diff --git a/src/s60installs/eabi/QtScriptu.def b/src/s60installs/eabi/QtScriptu.def
index 6a70ed3..3269d97 100644
--- a/src/s60installs/eabi/QtScriptu.def
+++ b/src/s60installs/eabi/QtScriptu.def
@@ -192,13 +192,13 @@ EXPORTS
_ZN24QScriptSyntaxCheckResultD1Ev @ 191 NONAME
_ZN24QScriptSyntaxCheckResultD2Ev @ 192 NONAME
_ZN24QScriptSyntaxCheckResultaSERKS_ @ 193 NONAME
- _ZN25QScriptEngineAgentPrivate11atStatementERKN5QTJSC17DebuggerCallFrameEiii @ 194 NONAME
+ _ZN25QScriptEngineAgentPrivate11atStatementERKN5QTJSC17DebuggerCallFrameEiii @ 194 NONAME ABSENT
_ZN25QScriptEngineAgentPrivate11returnEventERKN5QTJSC17DebuggerCallFrameEii @ 195 NONAME
_ZN25QScriptEngineAgentPrivate12evaluateStopERKN5QTJSC7JSValueEi @ 196 NONAME
_ZN25QScriptEngineAgentPrivate12functionExitERKN5QTJSC7JSValueEi @ 197 NONAME
_ZN25QScriptEngineAgentPrivate14exceptionCatchERKN5QTJSC17DebuggerCallFrameEi @ 198 NONAME
_ZN25QScriptEngineAgentPrivate14exceptionThrowERKN5QTJSC17DebuggerCallFrameEib @ 199 NONAME
- _ZN25QScriptEngineAgentPrivate18didReachBreakpointERKN5QTJSC17DebuggerCallFrameEiii @ 200 NONAME
+ _ZN25QScriptEngineAgentPrivate18didReachBreakpointERKN5QTJSC17DebuggerCallFrameEiii @ 200 NONAME ABSENT
_ZN25QScriptEngineAgentPrivate6attachEv @ 201 NONAME
_ZN25QScriptEngineAgentPrivate6detachEv @ 202 NONAME
_ZN28QScriptClassPropertyIteratorC2ERK12QScriptValue @ 203 NONAME
@@ -435,4 +435,8 @@ EXPORTS
_ZN23QScriptDeclarativeClass5ValueD2Ev @ 434 NONAME
_ZNK23QScriptDeclarativeClass12supportsCallEv @ 435 NONAME
_ZNK23QScriptDeclarativeClass5Value13toScriptValueEP13QScriptEngine @ 436 NONAME
+ _ZN13QScriptEngine26reportAdditionalMemoryCostEi @ 437 NONAME
+ _ZN23QScriptDeclarativeClass7compareEPNS_6ObjectES1_ @ 438 NONAME
+ _ZN25QScriptEngineAgentPrivate11atStatementERKN5QTJSC17DebuggerCallFrameEii @ 439 NONAME
+ _ZN25QScriptEngineAgentPrivate18didReachBreakpointERKN5QTJSC17DebuggerCallFrameEii @ 440 NONAME
diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro
index db1ee4d..ffd15e6 100644
--- a/src/s60installs/s60installs.pro
+++ b/src/s60installs/s60installs.pro
@@ -13,9 +13,12 @@ symbian: {
TARGET.UID3 = 0x2001E61C
# sqlite3 is expected to be already found on phone if infixed configuration is built.
+ BLD_INF_RULES.prj_exports += \
+ "sqlite3.sis $${EPOCROOT}epoc32/data/qt/sis/sqlite3.sis" \
+ "sqlite3_selfsigned.sis $${EPOCROOT}epoc32/data/qt/sis/sqlite3_selfsigned.sis"
sqlitedeployment = \
"; Deploy sqlite onto phone that does not have it already" \
- "@\"$$PWD/sqlite3.sis\", (0x2002af5f)"
+ "@\"$${EPOCROOT}epoc32/data/qt/sis/sqlite3.sis\", (0x2002af5f)"
qtlibraries.pkg_postrules += sqlitedeployment
} else {
# Always use experimental UID for infixed configuration to avoid UID clash
diff --git a/src/s60main/qts60main_mcrt0.cpp b/src/s60main/qts60main_mcrt0.cpp
index 66ce8b6..0f0723e 100644
--- a/src/s60main/qts60main_mcrt0.cpp
+++ b/src/s60main/qts60main_mcrt0.cpp
@@ -40,7 +40,7 @@
// MCRT0.CPP
//
-// © Portions copyright (c) 2005-2006 Nokia Corporation. All rights reserved.
+// Portions copyright (c) 2005-2006 Nokia Corporation. All rights reserved.
// Copyright (c) Symbian Software Ltd 1997-2004. All rights reserved.
//
diff --git a/src/script/api/qscriptcontext.cpp b/src/script/api/qscriptcontext.cpp
index b1732ee..639af80 100644
--- a/src/script/api/qscriptcontext.cpp
+++ b/src/script/api/qscriptcontext.cpp
@@ -161,6 +161,7 @@ QScriptContext::QScriptContext()
QScriptValue QScriptContext::throwValue(const QScriptValue &value)
{
JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
+ QScript::APIShim shim(QScript::scriptEngineFromExec(frame));
JSC::JSValue jscValue = QScript::scriptEngineFromExec(frame)->scriptValueToJSCValue(value);
frame->setException(jscValue);
return value;
@@ -183,6 +184,7 @@ QScriptValue QScriptContext::throwValue(const QScriptValue &value)
QScriptValue QScriptContext::throwError(Error error, const QString &text)
{
JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
+ QScript::APIShim shim(QScript::scriptEngineFromExec(frame));
JSC::ErrorType jscError = JSC::GeneralError;
switch (error) {
case UnknownError:
@@ -218,6 +220,7 @@ QScriptValue QScriptContext::throwError(Error error, const QString &text)
QScriptValue QScriptContext::throwError(const QString &text)
{
JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
+ QScript::APIShim shim(QScript::scriptEngineFromExec(frame));
JSC::JSObject *result = JSC::throwError(frame, JSC::GeneralError, text);
return QScript::scriptEngineFromExec(frame)->scriptValueFromJSCValue(result);
}
@@ -265,6 +268,7 @@ QScriptValue QScriptContext::argument(int index) const
QScriptValue QScriptContext::callee() const
{
const JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
+ QScript::APIShim shim(QScript::scriptEngineFromExec(frame));
return QScript::scriptEngineFromExec(frame)->scriptValueFromJSCValue(frame->callee());
}
@@ -286,6 +290,7 @@ QScriptValue QScriptContext::callee() const
QScriptValue QScriptContext::argumentsObject() const
{
JSC::CallFrame *frame = const_cast<JSC::ExecState*>(QScriptEnginePrivate::frameForContext(this));
+ QScript::APIShim shim(QScript::scriptEngineFromExec(frame));
if (frame == frame->lexicalGlobalObject()->globalExec()) {
// <global> context doesn't have arguments. return an empty object
@@ -322,6 +327,7 @@ QScriptValue QScriptContext::argumentsObject() const
bool QScriptContext::isCalledAsConstructor() const
{
JSC::CallFrame *frame = const_cast<JSC::ExecState*>(QScriptEnginePrivate::frameForContext(this));
+ QScript::APIShim shim(QScript::scriptEngineFromExec(frame));
//For native functions, look up flags.
uint flags = QScriptEnginePrivate::contextFlags(frame);
@@ -355,6 +361,7 @@ bool QScriptContext::isCalledAsConstructor() const
QScriptContext *QScriptContext::parentContext() const
{
const JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
+ QScript::APIShim shim(QScript::scriptEngineFromExec(frame));
JSC::CallFrame *callerFrame = frame->callerFrame()->removeHostCallFrameFlag();
return QScriptEnginePrivate::contextForFrame(callerFrame);
}
@@ -412,6 +419,7 @@ void QScriptContext::setReturnValue(const QScriptValue &result)
QScriptValue QScriptContext::activationObject() const
{
JSC::CallFrame *frame = const_cast<JSC::ExecState*>(QScriptEnginePrivate::frameForContext(this));
+ QScript::APIShim shim(QScript::scriptEngineFromExec(frame));
JSC::JSObject *result = 0;
uint flags = QScriptEnginePrivate::contextFlags(frame);
@@ -477,6 +485,7 @@ void QScriptContext::setActivationObject(const QScriptValue &activation)
}
JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
QScriptEnginePrivate *engine = QScript::scriptEngineFromExec(frame);
+ QScript::APIShim shim(engine);
JSC::JSObject *object = JSC::asObject(engine->scriptValueToJSCValue(activation));
if (object == engine->originalGlobalObjectProxy)
object = engine->originalGlobalObject();
@@ -521,6 +530,7 @@ QScriptValue QScriptContext::thisObject() const
{
JSC::CallFrame *frame = const_cast<JSC::ExecState*>(QScriptEnginePrivate::frameForContext(this));
QScriptEnginePrivate *engine = QScript::scriptEngineFromExec(frame);
+ QScript::APIShim shim(engine);
JSC::JSValue result = engine->thisForContext(frame);
if (!result || result.isNull())
result = frame->globalThisValue();
@@ -536,6 +546,7 @@ QScriptValue QScriptContext::thisObject() const
void QScriptContext::setThisObject(const QScriptValue &thisObject)
{
JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
+ QScript::APIShim shim(QScript::scriptEngineFromExec(frame));
if (!thisObject.isObject())
return;
if (thisObject.engine() != engine()) {
@@ -662,6 +673,7 @@ QScriptValueList QScriptContext::scopeChain() const
activationObject(); //ensure the creation of the normal scope for native context
const JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
QScriptEnginePrivate *engine = QScript::scriptEngineFromExec(frame);
+ QScript::APIShim shim(engine);
QScriptValueList result;
JSC::ScopeChainNode *node = frame->scopeChain();
JSC::ScopeChainIterator it(node);
@@ -700,6 +712,7 @@ void QScriptContext::pushScope(const QScriptValue &object)
}
JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(this);
QScriptEnginePrivate *engine = QScript::scriptEngineFromExec(frame);
+ QScript::APIShim shim(engine);
JSC::JSObject *jscObject = JSC::asObject(engine->scriptValueToJSCValue(object));
if (jscObject == engine->originalGlobalObjectProxy)
jscObject = engine->originalGlobalObject();
@@ -733,6 +746,7 @@ QScriptValue QScriptContext::popScope()
JSC::ScopeChainNode *scope = frame->scopeChain();
Q_ASSERT(scope != 0);
QScriptEnginePrivate *engine = QScript::scriptEngineFromExec(frame);
+ QScript::APIShim shim(engine);
QScriptValue result = engine->scriptValueFromJSCValue(scope->object);
if (!scope->next) {
// We cannot have a null scope chain, so just zap the object pointer.
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index b322523..13b8e7c 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -875,7 +875,7 @@ QScriptEnginePrivate::QScriptEnginePrivate()
return;
}
JSC::initializeThreading();
-
+ JSC::IdentifierTable *oldTable = JSC::currentIdentifierTable();
globalData = JSC::JSGlobalData::create().releaseRef();
globalData->clientData = new QScript::GlobalClientData(this);
JSC::JSGlobalObject *globalObject = new (globalData)QScript::GlobalObject();
@@ -911,11 +911,12 @@ QScriptEnginePrivate::QScriptEnginePrivate()
activeAgent = 0;
agentLineNumber = -1;
processEventsInterval = -1;
+ JSC::setCurrentIdentifierTable(oldTable);
}
QScriptEnginePrivate::~QScriptEnginePrivate()
{
- JSC::setCurrentIdentifierTable(globalData->identifierTable);
+ QScript::APIShim shim(this);
//disconnect all loadedScripts and generate all jsc::debugger::scriptUnload events
QHash<intptr_t,QScript::UStringSourceProviderWithFeedback*>::const_iterator it;
@@ -1899,6 +1900,7 @@ QScriptEngine::~QScriptEngine()
QScriptValue QScriptEngine::globalObject() const
{
Q_D(const QScriptEngine);
+ QScript::APIShim shim(const_cast<QScriptEnginePrivate*>(d));
JSC::JSObject *result = d->globalObject();
return const_cast<QScriptEnginePrivate*>(d)->scriptValueFromJSCValue(result);
}
@@ -1920,6 +1922,7 @@ void QScriptEngine::setGlobalObject(const QScriptValue &object)
Q_D(QScriptEngine);
if (!object.isObject())
return;
+ QScript::APIShim shim(d);
JSC::JSObject *jscObject = JSC::asObject(d->scriptValueToJSCValue(object));
d->setGlobalObject(jscObject);
}
@@ -1976,6 +1979,7 @@ QScriptValue QScriptEngine::newFunction(QScriptEngine::FunctionSignature fun,
int length)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
JSC::ExecState* exec = d->currentFrame;
JSC::JSValue function = new (exec)QScript::FunctionWrapper(exec, length, JSC::Identifier(exec, ""), fun);
QScriptValue result = d->scriptValueFromJSCValue(function);
@@ -1999,6 +2003,7 @@ extern QString qt_regexp_toCanonical(const QString &, QRegExp::PatternSyntax);
QScriptValue QScriptEngine::newRegExp(const QRegExp &regexp)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
return d->scriptValueFromJSCValue(d->newRegExp(d->currentFrame, regexp));
}
@@ -2017,6 +2022,7 @@ QScriptValue QScriptEngine::newRegExp(const QRegExp &regexp)
QScriptValue QScriptEngine::newVariant(const QVariant &value)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
return d->scriptValueFromJSCValue(d->newVariant(value));
}
@@ -2050,6 +2056,7 @@ QScriptValue QScriptEngine::newVariant(const QScriptValue &object,
const QVariant &value)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
JSC::JSValue jsObject = d->scriptValueToJSCValue(object);
return d->scriptValueFromJSCValue(d->newVariant(jsObject, value));
}
@@ -2081,6 +2088,7 @@ QScriptValue QScriptEngine::newQObject(QObject *object, ValueOwnership ownership
const QObjectWrapOptions &options)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
JSC::JSValue jscQObject = d->newQObject(object, ownership, options);
return d->scriptValueFromJSCValue(jscQObject);
}
@@ -2117,8 +2125,10 @@ QScriptValue QScriptEngine::newQObject(const QScriptValue &scriptObject,
ValueOwnership ownership,
const QObjectWrapOptions &options)
{
+ Q_D(QScriptEngine);
if (!scriptObject.isObject())
return newQObject(qtObject, ownership, options);
+ QScript::APIShim shim(d);
JSC::JSObject *jscObject = JSC::asObject(QScriptValuePrivate::get(scriptObject)->jscValue);
if (!jscObject->inherits(&QScriptObject::info)) {
qWarning("QScriptEngine::newQObject(): changing class of non-QScriptObject not supported");
@@ -2149,6 +2159,7 @@ QScriptValue QScriptEngine::newQObject(const QScriptValue &scriptObject,
QScriptValue QScriptEngine::newObject()
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
return d->scriptValueFromJSCValue(d->newObject());
}
@@ -2170,6 +2181,7 @@ QScriptValue QScriptEngine::newObject(QScriptClass *scriptClass,
const QScriptValue &data)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
JSC::ExecState* exec = d->currentFrame;
QScriptObject *result = new (exec) QScriptObject(d->scriptObjectStructure);
result->setDelegate(new QScript::ClassObjectDelegate(scriptClass));
@@ -2237,6 +2249,7 @@ QScriptValue QScriptEngine::newActivationObject()
QScriptValue QScriptEngine::newFunction(QScriptEngine::FunctionSignature fun, int length)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
JSC::ExecState* exec = d->currentFrame;
JSC::JSValue function = new (exec)QScript::FunctionWrapper(exec, length, JSC::Identifier(exec, ""), fun);
QScriptValue result = d->scriptValueFromJSCValue(function);
@@ -2254,6 +2267,7 @@ QScriptValue QScriptEngine::newFunction(QScriptEngine::FunctionSignature fun, in
QScriptValue QScriptEngine::newFunction(QScriptEngine::FunctionWithArgSignature fun, void *arg)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
JSC::ExecState* exec = d->currentFrame;
JSC::JSValue function = new (exec)QScript::FunctionWithArgWrapper(exec, /*length=*/0, JSC::Identifier(exec, ""), fun, arg);
QScriptValue result = d->scriptValueFromJSCValue(function);
@@ -2272,6 +2286,7 @@ QScriptValue QScriptEngine::newFunction(QScriptEngine::FunctionWithArgSignature
QScriptValue QScriptEngine::newArray(uint length)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
return d->scriptValueFromJSCValue(d->newArray(d->currentFrame, length));
}
@@ -2285,6 +2300,7 @@ QScriptValue QScriptEngine::newArray(uint length)
QScriptValue QScriptEngine::newRegExp(const QString &pattern, const QString &flags)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
return d->scriptValueFromJSCValue(d->newRegExp(d->currentFrame, pattern, flags));
}
@@ -2296,6 +2312,7 @@ QScriptValue QScriptEngine::newRegExp(const QString &pattern, const QString &fla
QScriptValue QScriptEngine::newDate(qsreal value)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
return d->scriptValueFromJSCValue(d->newDate(d->currentFrame, value));
}
@@ -2307,6 +2324,7 @@ QScriptValue QScriptEngine::newDate(qsreal value)
QScriptValue QScriptEngine::newDate(const QDateTime &value)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
return d->scriptValueFromJSCValue(d->newDate(d->currentFrame, value));
}
@@ -2330,6 +2348,7 @@ QScriptValue QScriptEngine::newQMetaObject(
const QMetaObject *metaObject, const QScriptValue &ctor)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
JSC::JSValue jscCtor = d->scriptValueToJSCValue(ctor);
JSC::JSValue jscQMetaObject = d->newQMetaObject(metaObject, jscCtor);
return d->scriptValueFromJSCValue(jscQMetaObject);
@@ -2582,6 +2601,7 @@ QScriptContext *QScriptEngine::currentContext() const
QScriptContext *QScriptEngine::pushContext()
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
JSC::CallFrame* newFrame = d->pushContext(d->currentFrame, d->currentFrame->globalData().dynamicGlobalObject,
JSC::ArgList(), /*callee = */0);
@@ -2673,6 +2693,7 @@ void QScriptEngine::popContext()
if (agent())
agent()->contextPop();
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
if (d->currentFrame->returnPC() != 0 || d->currentFrame->codeBlock() != 0
|| !currentContext()->parentContext()) {
qWarning("QScriptEngine::popContext() doesn't match with pushContext()");
@@ -2868,6 +2889,7 @@ void QScriptEngine::setDefaultPrototype(int metaTypeId, const QScriptValue &prot
QScriptValue QScriptEngine::create(int type, const void *ptr)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
return d->scriptValueFromJSCValue(d->create(d->currentFrame, type, ptr));
}
@@ -3277,6 +3299,7 @@ bool QScriptEnginePrivate::hasDemarshalFunction(int type) const
bool QScriptEngine::convert(const QScriptValue &value, int type, void *ptr)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
return QScriptEnginePrivate::convertValue(d->currentFrame, d->scriptValueToJSCValue(value), type, ptr);
}
@@ -3289,8 +3312,12 @@ bool QScriptEngine::convertV2(const QScriptValue &value, int type, void *ptr)
if (vp) {
switch (vp->type) {
case QScriptValuePrivate::JavaScriptCore: {
- JSC::ExecState *exec = vp->engine ? vp->engine->currentFrame : 0;
- return QScriptEnginePrivate::convertValue(exec, vp->jscValue, type, ptr);
+ if (vp->engine) {
+ QScript::APIShim shim(vp->engine);
+ return QScriptEnginePrivate::convertValue(vp->engine->currentFrame, vp->jscValue, type, ptr);
+ } else {
+ return QScriptEnginePrivate::convertValue(0, vp->jscValue, type, ptr);
+ }
}
case QScriptValuePrivate::Number:
return QScriptEnginePrivate::convertNumber(vp->numberValue, type, ptr);
@@ -3309,6 +3336,7 @@ void QScriptEngine::registerCustomType(int type, MarshalFunction mf,
const QScriptValue &prototype)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
QScriptTypeInfo *info = d->m_typeInfos.value(type);
if (!info) {
info = new QScriptTypeInfo();
@@ -3341,6 +3369,7 @@ void QScriptEngine::registerCustomType(int type, MarshalFunction mf,
void QScriptEngine::installTranslatorFunctions(const QScriptValue &object)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
JSC::ExecState* exec = d->currentFrame;
JSC::JSValue jscObject = d->scriptValueToJSCValue(object);
JSC::JSGlobalObject *glob = d->originalGlobalObject();
@@ -3374,6 +3403,7 @@ QScriptValue QScriptEngine::importExtension(const QString &extension)
Q_UNUSED(extension);
#else
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
if (d->importedExtensions.contains(extension))
return undefinedValue(); // already imported
@@ -4014,6 +4044,7 @@ bool qScriptConnect(QObject *sender, const char *signal,
if (receiver.isObject() && (receiver.engine() != function.engine()))
return false;
QScriptEnginePrivate *engine = QScriptEnginePrivate::get(function.engine());
+ QScript::APIShim shim(engine);
JSC::JSValue jscReceiver = engine->scriptValueToJSCValue(receiver);
JSC::JSValue jscFunction = engine->scriptValueToJSCValue(function);
return engine->scriptConnect(sender, signal, jscReceiver, jscFunction,
@@ -4040,6 +4071,7 @@ bool qScriptDisconnect(QObject *sender, const char *signal,
if (receiver.isObject() && (receiver.engine() != function.engine()))
return false;
QScriptEnginePrivate *engine = QScriptEnginePrivate::get(function.engine());
+ QScript::APIShim shim(engine);
JSC::JSValue jscReceiver = engine->scriptValueToJSCValue(receiver);
JSC::JSValue jscFunction = engine->scriptValueToJSCValue(function);
return engine->scriptDisconnect(sender, signal, jscReceiver, jscFunction);
@@ -4145,6 +4177,7 @@ QScriptString QScriptEngine::toStringHandle(const QString &str)
QScriptValue QScriptEngine::toObject(const QScriptValue &value)
{
Q_D(QScriptEngine);
+ QScript::APIShim shim(d);
JSC::JSValue jscValue = d->scriptValueToJSCValue(value);
if (!jscValue || jscValue.isUndefined() || jscValue.isNull())
return QScriptValue();
diff --git a/src/script/api/qscriptengine_p.h b/src/script/api/qscriptengine_p.h
index 70ab7c9..5c2007f 100644
--- a/src/script/api/qscriptengine_p.h
+++ b/src/script/api/qscriptengine_p.h
@@ -798,7 +798,6 @@ inline void QScriptEnginePrivate::unregisterScriptString(QScriptStringPrivate *v
registeredScriptStrings = value->next;
value->prev = 0;
value->next = 0;
- JSC::setCurrentIdentifierTable(globalData->identifierTable);
}
inline QScriptContext *QScriptEnginePrivate::contextForFrame(JSC::ExecState *frame)
diff --git a/src/script/api/qscriptprogram.cpp b/src/script/api/qscriptprogram.cpp
index d4a32f4..8d4de11 100644
--- a/src/script/api/qscriptprogram.cpp
+++ b/src/script/api/qscriptprogram.cpp
@@ -120,7 +120,7 @@ QScriptProgram::QScriptProgram(const QScriptProgram &other)
*/
QScriptProgram::~QScriptProgram()
{
- Q_D(QScriptProgram);
+ // Q_D(QScriptProgram);
// if (d->engine && (d->ref == 1))
// d->engine->unregisterScriptProgram(d);
}
diff --git a/src/script/api/qscriptstring.cpp b/src/script/api/qscriptstring.cpp
index 7978b61..8c7c30c 100644
--- a/src/script/api/qscriptstring.cpp
+++ b/src/script/api/qscriptstring.cpp
@@ -92,8 +92,12 @@ QScriptString::~QScriptString()
d->ref.ref(); // avoid deletion
break;
case QScriptStringPrivate::HeapAllocated:
- if (d->engine && (d->ref == 1))
+ if (d->engine && (d->ref == 1)) {
+ // Make sure the identifier is removed from the correct engine.
+ QScript::APIShim shim(d->engine);
+ d->identifier = JSC::Identifier();
d->engine->unregisterScriptString(d);
+ }
break;
}
}
diff --git a/src/script/api/qscriptvalue.cpp b/src/script/api/qscriptvalue.cpp
index 4cd84a4..7469f9a 100644
--- a/src/script/api/qscriptvalue.cpp
+++ b/src/script/api/qscriptvalue.cpp
@@ -561,6 +561,7 @@ QScriptValue QScriptValue::scope() const
Q_D(const QScriptValue);
if (!d || !d->isObject())
return QScriptValue();
+ QScript::APIShim shim(d->engine);
// ### make hidden property
JSC::JSValue result = d->property("__qt_scope__", QScriptValue::ResolveLocal);
return d->engine->scriptValueFromJSCValue(result);
@@ -650,11 +651,12 @@ static Type type(const QScriptValue &v)
return Object;
}
-QScriptValue ToPrimitive(const QScriptValue &object, JSC::PreferredPrimitiveType hint = JSC::NoPreference)
+static QScriptValue ToPrimitive(const QScriptValue &object, JSC::PreferredPrimitiveType hint = JSC::NoPreference)
{
Q_ASSERT(object.isObject());
QScriptValuePrivate *pp = QScriptValuePrivate::get(object);
Q_ASSERT(pp->engine != 0);
+ QScript::APIShim shim(pp->engine);
JSC::ExecState *exec = pp->engine->currentFrame;
JSC::JSValue savedException;
QScriptEnginePrivate::saveException(exec, &savedException);
@@ -848,6 +850,7 @@ bool QScriptValue::equals(const QScriptValue &other) const
if (!eng_p)
eng_p = other.d_ptr->engine;
if (eng_p) {
+ QScript::APIShim shim(eng_p);
JSC::ExecState *exec = eng_p->currentFrame;
JSC::JSValue savedException;
QScriptEnginePrivate::saveException(exec, &savedException);
@@ -940,9 +943,12 @@ QString QScriptValue::toString() const
return QString();
switch (d->type) {
case QScriptValuePrivate::JavaScriptCore: {
- JSC::ExecState *exec = d->engine ? d->engine->currentFrame : 0;
- return QScriptEnginePrivate::toString(exec, d->jscValue);
- }
+ if (d->engine) {
+ QScript::APIShim shim(d->engine);
+ return QScriptEnginePrivate::toString(d->engine->currentFrame, d->jscValue);
+ } else {
+ return QScriptEnginePrivate::toString(0, d->jscValue);
+ } }
case QScriptValuePrivate::Number:
return QScript::ToString(d->numberValue);
case QScriptValuePrivate::String:
@@ -970,8 +976,12 @@ qsreal QScriptValue::toNumber() const
return 0;
switch (d->type) {
case QScriptValuePrivate::JavaScriptCore: {
- JSC::ExecState *exec = d->engine ? d->engine->currentFrame : 0;
- return QScriptEnginePrivate::toNumber(exec, d->jscValue);
+ if (d->engine) {
+ QScript::APIShim shim(d->engine);
+ return QScriptEnginePrivate::toNumber(d->engine->currentFrame, d->jscValue);
+ } else {
+ return QScriptEnginePrivate::toNumber(0, d->jscValue);
+ }
}
case QScriptValuePrivate::Number:
return d->numberValue;
@@ -993,8 +1003,12 @@ bool QScriptValue::toBoolean() const
return false;
switch (d->type) {
case QScriptValuePrivate::JavaScriptCore: {
- JSC::ExecState *exec = d->engine ? d->engine->currentFrame : 0;
- return QScriptEnginePrivate::toBool(exec, d->jscValue);
+ if (d->engine) {
+ QScript::APIShim shim(d->engine);
+ return QScriptEnginePrivate::toBool(d->engine->currentFrame, d->jscValue);
+ } else {
+ return QScriptEnginePrivate::toBool(0, d->jscValue);
+ }
}
case QScriptValuePrivate::Number:
return QScript::ToBool(d->numberValue);
@@ -1025,8 +1039,12 @@ bool QScriptValue::toBool() const
return false;
switch (d->type) {
case QScriptValuePrivate::JavaScriptCore: {
- JSC::ExecState *exec = d->engine ? d->engine->currentFrame : 0;
- return QScriptEnginePrivate::toBool(exec, d->jscValue);
+ if (d->engine) {
+ QScript::APIShim shim(d->engine);
+ return QScriptEnginePrivate::toBool(d->engine->currentFrame, d->jscValue);
+ } else {
+ return QScriptEnginePrivate::toBool(0, d->jscValue);
+ }
}
case QScriptValuePrivate::Number:
return QScript::ToBool(d->numberValue);
@@ -1055,8 +1073,12 @@ qint32 QScriptValue::toInt32() const
return 0;
switch (d->type) {
case QScriptValuePrivate::JavaScriptCore: {
- JSC::ExecState *exec = d->engine ? d->engine->currentFrame : 0;
- return QScriptEnginePrivate::toInt32(exec, d->jscValue);
+ if (d->engine) {
+ QScript::APIShim shim(d->engine);
+ return QScriptEnginePrivate::toInt32(d->engine->currentFrame, d->jscValue);
+ } else {
+ return QScriptEnginePrivate::toInt32(0, d->jscValue);
+ }
}
case QScriptValuePrivate::Number:
return QScript::ToInt32(d->numberValue);
@@ -1085,8 +1107,12 @@ quint32 QScriptValue::toUInt32() const
return 0;
switch (d->type) {
case QScriptValuePrivate::JavaScriptCore: {
- JSC::ExecState *exec = d->engine ? d->engine->currentFrame : 0;
- return QScriptEnginePrivate::toUInt32(exec, d->jscValue);
+ if (d->engine) {
+ QScript::APIShim shim(d->engine);
+ return QScriptEnginePrivate::toUInt32(d->engine->currentFrame, d->jscValue);
+ } else {
+ return QScriptEnginePrivate::toUInt32(0, d->jscValue);
+ }
}
case QScriptValuePrivate::Number:
return QScript::ToUInt32(d->numberValue);
@@ -1115,8 +1141,12 @@ quint16 QScriptValue::toUInt16() const
return 0;
switch (d->type) {
case QScriptValuePrivate::JavaScriptCore: {
- JSC::ExecState *exec = d->engine ? d->engine->currentFrame : 0;
- return QScriptEnginePrivate::toUInt16(exec, d->jscValue);
+ if (d->engine) {
+ QScript::APIShim shim(d->engine);
+ return QScriptEnginePrivate::toUInt16(d->engine->currentFrame, d->jscValue);
+ } else {
+ return QScriptEnginePrivate::toUInt16(0, d->jscValue);
+ }
}
case QScriptValuePrivate::Number:
return QScript::ToUInt16(d->numberValue);
@@ -1145,8 +1175,12 @@ qsreal QScriptValue::toInteger() const
return 0;
switch (d->type) {
case QScriptValuePrivate::JavaScriptCore: {
- JSC::ExecState *exec = d->engine ? d->engine->currentFrame : 0;
- return QScriptEnginePrivate::toInteger(exec, d->jscValue);
+ if (d->engine) {
+ QScript::APIShim shim(d->engine);
+ return QScriptEnginePrivate::toInteger(d->engine->currentFrame, d->jscValue);
+ } else {
+ return QScriptEnginePrivate::toInteger(0, d->jscValue);
+ }
}
case QScriptValuePrivate::Number:
return QScript::ToInteger(d->numberValue);
@@ -1185,8 +1219,12 @@ QVariant QScriptValue::toVariant() const
return QVariant();
switch (d->type) {
case QScriptValuePrivate::JavaScriptCore: {
- JSC::ExecState *exec = d->engine ? d->engine->currentFrame : 0;
- return QScriptEnginePrivate::toVariant(exec, d->jscValue);
+ if (d->engine) {
+ QScript::APIShim shim(d->engine);
+ return QScriptEnginePrivate::toVariant(d->engine->currentFrame, d->jscValue);
+ } else {
+ return QScriptEnginePrivate::toVariant(0, d->jscValue);
+ }
}
case QScriptValuePrivate::Number:
return QVariant(d->numberValue);
@@ -1409,6 +1447,7 @@ QScriptValue QScriptValue::property(const QScriptString &name,
Q_D(const QScriptValue);
if (!d || !d->isObject() || !QScriptStringPrivate::isValid(name))
return QScriptValue();
+ QScript::APIShim shim(d->engine);
return d->engine->scriptValueFromJSCValue(d->property(name.d_ptr->identifier, mode));
}
@@ -1439,6 +1478,7 @@ void QScriptValue::setProperty(const QScriptString &name,
qPrintable(name.toString()));
return;
}
+ QScript::APIShim shim(d->engine);
JSC::JSValue jsValue = d->engine->scriptValueToJSCValue(value);
d->setProperty(name.d_ptr->identifier, jsValue, flags);
}
diff --git a/src/script/api/qscriptvalueiterator.cpp b/src/script/api/qscriptvalueiterator.cpp
index 7fd7093..ecda5fc 100644
--- a/src/script/api/qscriptvalueiterator.cpp
+++ b/src/script/api/qscriptvalueiterator.cpp
@@ -85,6 +85,17 @@ public:
: initialized(false)
{}
+ ~QScriptValueIteratorPrivate()
+ {
+ if (!initialized)
+ return;
+ QScriptEnginePrivate *eng_p = engine();
+ if (!eng_p)
+ return;
+ QScript::APIShim shim(eng_p);
+ propertyNames.clear(); //destroying the identifiers need to be done under the APIShim guard
+ }
+
QScriptValuePrivate *object() const
{
return QScriptValuePrivate::get(objectValue);
@@ -281,6 +292,7 @@ QScriptValue QScriptValueIterator::value() const
Q_D(const QScriptValueIterator);
if (!d || !d->initialized || !d->engine())
return QScriptValue();
+ QScript::APIShim shim(d->engine());
JSC::JSValue jsValue = d->object()->property(*d->current);
return d->engine()->scriptValueFromJSCValue(jsValue);
}
@@ -296,6 +308,7 @@ void QScriptValueIterator::setValue(const QScriptValue &value)
Q_D(QScriptValueIterator);
if (!d || !d->initialized || !d->engine())
return;
+ QScript::APIShim shim(d->engine());
JSC::JSValue jsValue = d->engine()->scriptValueToJSCValue(value);
d->object()->setProperty(*d->current, jsValue);
}
@@ -311,6 +324,7 @@ QScriptValue::PropertyFlags QScriptValueIterator::flags() const
Q_D(const QScriptValueIterator);
if (!d || !d->initialized || !d->engine())
return 0;
+ QScript::APIShim shim(d->engine());
return d->object()->propertyFlags(*d->current);
}
@@ -325,6 +339,7 @@ void QScriptValueIterator::remove()
Q_D(QScriptValueIterator);
if (!d || !d->initialized || !d->engine())
return;
+ QScript::APIShim shim(d->engine());
d->object()->setProperty(*d->current, JSC::JSValue());
d->propertyNames.erase(d->current);
}
diff --git a/src/script/bridge/qscriptdeclarativeclass.cpp b/src/script/bridge/qscriptdeclarativeclass.cpp
index acfb2a4..1093448 100644
--- a/src/script/bridge/qscriptdeclarativeclass.cpp
+++ b/src/script/bridge/qscriptdeclarativeclass.cpp
@@ -70,9 +70,12 @@ QScriptDeclarativeClass::Value::Value(QScriptContext *ctxt, uint value)
new (this) JSC::JSValue(QScriptEnginePrivate::frameForContext(ctxt), value);
}
-QScriptDeclarativeClass::Value::Value(QScriptContext *ctxt, bool value)
+QScriptDeclarativeClass::Value::Value(QScriptContext *, bool value)
{
- new (this) JSC::JSValue(QScriptEnginePrivate::frameForContext(ctxt), value);
+ if (value)
+ new (this) JSC::JSValue(JSC::JSValue::JSTrue);
+ else
+ new (this) JSC::JSValue(JSC::JSValue::JSFalse);
}
QScriptDeclarativeClass::Value::Value(QScriptContext *ctxt, double value)
@@ -107,7 +110,10 @@ QScriptDeclarativeClass::Value::Value(QScriptEngine *eng, uint value)
QScriptDeclarativeClass::Value::Value(QScriptEngine *eng, bool value)
{
- new (this) JSC::JSValue(QScriptEnginePrivate::get(eng)->currentFrame, value);
+ if (value)
+ new (this) JSC::JSValue(JSC::JSValue::JSTrue);
+ else
+ new (this) JSC::JSValue(JSC::JSValue::JSFalse);
}
QScriptDeclarativeClass::Value::Value(QScriptEngine *eng, double value)
@@ -148,9 +154,12 @@ QScriptDeclarativeClass::PersistentIdentifier::PersistentIdentifier()
QScriptDeclarativeClass::PersistentIdentifier::~PersistentIdentifier()
{
- if (engine)
- JSC::setCurrentIdentifierTable(engine->globalData->identifierTable);
- ((JSC::Identifier &)d).JSC::Identifier::~Identifier();
+ if (engine) {
+ QScript::APIShim shim(engine);
+ ((JSC::Identifier &)d).JSC::Identifier::~Identifier();
+ } else {
+ ((JSC::Identifier &)d).JSC::Identifier::~Identifier();
+ }
}
QScriptDeclarativeClass::PersistentIdentifier::PersistentIdentifier(const PersistentIdentifier &other)
@@ -184,7 +193,8 @@ QScriptValue QScriptDeclarativeClass::newObject(QScriptEngine *engine,
Q_ASSERT(engine);
Q_ASSERT(scriptClass);
- QScriptEnginePrivate *p = static_cast<QScriptEnginePrivate *>(QObjectPrivate::get(engine));
+ QScriptEnginePrivate *p = static_cast<QScriptEnginePrivate *>(QObjectPrivate::get(engine));
+ QScript::APIShim shim(p);
JSC::ExecState* exec = p->currentFrame;
QScriptObject *result = new (exec) QScriptObject(p->scriptObjectStructure);
@@ -201,6 +211,7 @@ QScriptDeclarativeClass::newObjectValue(QScriptEngine *engine,
Q_ASSERT(scriptClass);
QScriptEnginePrivate *p = static_cast<QScriptEnginePrivate *>(QObjectPrivate::get(engine));
+ QScript::APIShim shim(p);
JSC::ExecState* exec = p->currentFrame;
QScriptObject *result = new (exec) QScriptObject(p->scriptObjectStructure);
@@ -231,6 +242,7 @@ QScriptValue QScriptDeclarativeClass::function(const QScriptValue &v, const Iden
if (!d->isObject())
return QScriptValue();
+ QScript::APIShim shim(d->engine);
JSC::ExecState *exec = d->engine->currentFrame;
JSC::JSObject *object = d->jscValue.getObject();
JSC::PropertySlot slot(const_cast<JSC::JSObject*>(object));
@@ -254,6 +266,7 @@ QScriptValue QScriptDeclarativeClass::property(const QScriptValue &v, const Iden
if (!d->isObject())
return QScriptValue();
+ QScript::APIShim shim(d->engine);
JSC::ExecState *exec = d->engine->currentFrame;
JSC::JSObject *object = d->jscValue.getObject();
JSC::PropertySlot slot(const_cast<JSC::JSObject*>(object));
@@ -277,6 +290,7 @@ QScriptDeclarativeClass::functionValue(const QScriptValue &v, const Identifier &
if (!d->isObject())
return Value();
+ QScript::APIShim shim(d->engine);
JSC::ExecState *exec = d->engine->currentFrame;
JSC::JSObject *object = d->jscValue.getObject();
JSC::PropertySlot slot(const_cast<JSC::JSObject*>(object));
@@ -301,6 +315,7 @@ QScriptDeclarativeClass::propertyValue(const QScriptValue &v, const Identifier &
if (!d->isObject())
return Value();
+ QScript::APIShim shim(d->engine);
JSC::ExecState *exec = d->engine->currentFrame;
JSC::JSObject *object = d->jscValue.getObject();
JSC::PropertySlot slot(const_cast<JSC::JSObject*>(object));
@@ -326,6 +341,7 @@ QScriptValue QScriptDeclarativeClass::scopeChainValue(QScriptContext *context, i
context->activationObject(); //ensure the creation of the normal scope for native context
const JSC::CallFrame *frame = QScriptEnginePrivate::frameForContext(context);
QScriptEnginePrivate *engine = QScript::scriptEngineFromExec(frame);
+ QScript::APIShim shim(engine);
JSC::ScopeChainNode *node = frame->scopeChain();
JSC::ScopeChainIterator it(node);
@@ -386,6 +402,7 @@ QScriptContext * QScriptDeclarativeClass::pushCleanContext(QScriptEngine *engine
return 0;
QScriptEnginePrivate *d = QScriptEnginePrivate::get(engine);
+ QScript::APIShim shim(d);
JSC::CallFrame* newFrame = d->pushContext(d->currentFrame,
d->currentFrame->globalData().dynamicGlobalObject,
@@ -421,6 +438,7 @@ QScriptDeclarativeClass::createPersistentIdentifier(const QString &str)
{
QScriptEnginePrivate *p =
static_cast<QScriptEnginePrivate *>(QObjectPrivate::get(d_ptr->engine));
+ QScript::APIShim shim(p);
JSC::ExecState* exec = p->currentFrame;
PersistentIdentifier rv(p);
@@ -434,6 +452,7 @@ QScriptDeclarativeClass::createPersistentIdentifier(const Identifier &id)
{
QScriptEnginePrivate *p =
static_cast<QScriptEnginePrivate *>(QObjectPrivate::get(d_ptr->engine));
+ QScript::APIShim shim(p);
JSC::ExecState* exec = p->currentFrame;
PersistentIdentifier rv(p);
diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp
index ee22bc3..6fd1725 100644
--- a/src/sql/drivers/odbc/qsql_odbc.cpp
+++ b/src/sql/drivers/odbc/qsql_odbc.cpp
@@ -124,11 +124,10 @@ class QODBCDriverPrivate
public:
enum DefaultCase{Lower, Mixed, Upper, Sensitive};
QODBCDriverPrivate()
- : hEnv(0), hDbc(0), useSchema(false), disconnectCount(0), isMySqlServer(false),
- isMSSqlServer(false), hasSQLFetchScroll(true), hasMultiResultSets(false),
- isQuoteInitialized(false), quote(QLatin1Char('"'))
+ : hEnv(0), hDbc(0), unicode(false), useSchema(false), disconnectCount(0), isMySqlServer(false),
+ isMSSqlServer(false), isFreeTDSDriver(false), hasSQLFetchScroll(true),
+ hasMultiResultSets(false), isQuoteInitialized(false), quote(QLatin1Char('"'))
{
- unicode = false;
}
SQLHANDLE hEnv;
@@ -139,6 +138,7 @@ public:
int disconnectCount;
bool isMySqlServer;
bool isMSSqlServer;
+ bool isFreeTDSDriver;
bool hasSQLFetchScroll;
bool hasMultiResultSets;
@@ -165,7 +165,10 @@ public:
QODBCPrivate(QODBCDriverPrivate *dpp)
: hStmt(0), useSchema(false), hasSQLFetchScroll(true), driverPrivate(dpp), userForwardOnly(false)
{
- unicode = false;
+ unicode = dpp->unicode;
+ useSchema = dpp->useSchema;
+ disconnectCount = dpp->disconnectCount;
+ hasSQLFetchScroll = dpp->hasSQLFetchScroll;
}
inline void clearValues()
@@ -340,7 +343,9 @@ static QVariant::Type qDecodeODBCType(SQLSMALLINT sqltype, const T* p, bool isSi
break;
case SQL_CHAR:
case SQL_VARCHAR:
+#if (ODBCVER >= 0x0350)
case SQL_GUID:
+#endif
case SQL_LONGVARCHAR:
type = QVariant::String;
break;
@@ -365,44 +370,88 @@ static QString qGetStringData(SQLHANDLE hStmt, int column, int colSize, bool uni
} else {
colSize++; // make sure there is room for more than the 0 termination
}
- r = SQLGetData(hStmt,
- column+1,
- SQL_C_TCHAR,
- NULL,
- 0,
- &lengthIndicator);
- if ((r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) && lengthIndicator > 0)
- colSize = lengthIndicator/sizeof(SQLTCHAR) + 1;
- QVarLengthArray<SQLTCHAR> buf(colSize);
- while (true) {
+ if(unicode) {
r = SQLGetData(hStmt,
column+1,
SQL_C_TCHAR,
- (SQLPOINTER)buf.data(),
- colSize*sizeof(SQLTCHAR),
+ NULL,
+ 0,
&lengthIndicator);
- if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) {
- if (lengthIndicator == SQL_NULL_DATA || lengthIndicator == SQL_NO_TOTAL) {
+ if ((r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) && lengthIndicator > 0)
+ colSize = lengthIndicator/sizeof(SQLTCHAR) + 1;
+ QVarLengthArray<SQLTCHAR> buf(colSize);
+ memset(buf.data(), 0, colSize*sizeof(SQLTCHAR));
+ while (true) {
+ r = SQLGetData(hStmt,
+ column+1,
+ SQL_C_TCHAR,
+ (SQLPOINTER)buf.data(),
+ colSize*sizeof(SQLTCHAR),
+ &lengthIndicator);
+ if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) {
+ if (lengthIndicator == SQL_NULL_DATA || lengthIndicator == SQL_NO_TOTAL) {
+ fieldVal.clear();
+ break;
+ }
+ // if SQL_SUCCESS_WITH_INFO is returned, indicating that
+ // more data can be fetched, the length indicator does NOT
+ // contain the number of bytes returned - it contains the
+ // total number of bytes that CAN be fetched
+ // colSize-1: remove 0 termination when there is more data to fetch
+ int rSize = (r == SQL_SUCCESS_WITH_INFO) ? colSize : lengthIndicator/sizeof(SQLTCHAR);
+ fieldVal += fromSQLTCHAR(buf, rSize);
+ if (lengthIndicator < (unsigned int)colSize*sizeof(SQLTCHAR)) {
+ // workaround for Drivermanagers that don't return SQL_NO_DATA
+ break;
+ }
+ } else if (r == SQL_NO_DATA) {
+ break;
+ } else {
+ qWarning() << "qGetStringData: Error while fetching data (" << qWarnODBCHandle(SQL_HANDLE_STMT, hStmt) << ')';
fieldVal.clear();
break;
}
- // if SQL_SUCCESS_WITH_INFO is returned, indicating that
- // more data can be fetched, the length indicator does NOT
- // contain the number of bytes returned - it contains the
- // total number of bytes that CAN be fetched
- // colSize-1: remove 0 termination when there is more data to fetch
- int rSize = (r == SQL_SUCCESS_WITH_INFO) ? colSize : lengthIndicator/sizeof(SQLTCHAR);
- fieldVal += fromSQLTCHAR(buf, rSize);
- if (lengthIndicator < (unsigned int)colSize*sizeof(SQLTCHAR)) {
- // workaround for Drivermanagers that don't return SQL_NO_DATA
+ }
+ } else {
+ r = SQLGetData(hStmt,
+ column+1,
+ SQL_C_CHAR,
+ NULL,
+ 0,
+ &lengthIndicator);
+ if ((r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) && lengthIndicator > 0)
+ colSize = lengthIndicator + 1;
+ QVarLengthArray<SQLCHAR> buf(colSize);
+ while (true) {
+ r = SQLGetData(hStmt,
+ column+1,
+ SQL_C_CHAR,
+ (SQLPOINTER)buf.data(),
+ colSize,
+ &lengthIndicator);
+ if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) {
+ if (lengthIndicator == SQL_NULL_DATA || lengthIndicator == SQL_NO_TOTAL) {
+ fieldVal.clear();
+ break;
+ }
+ // if SQL_SUCCESS_WITH_INFO is returned, indicating that
+ // more data can be fetched, the length indicator does NOT
+ // contain the number of bytes returned - it contains the
+ // total number of bytes that CAN be fetched
+ // colSize-1: remove 0 termination when there is more data to fetch
+ int rSize = (r == SQL_SUCCESS_WITH_INFO) ? colSize : lengthIndicator;
+ fieldVal += QString::fromUtf8((const char *)buf.constData(), rSize);
+ if (lengthIndicator < (unsigned int)colSize) {
+ // workaround for Drivermanagers that don't return SQL_NO_DATA
+ break;
+ }
+ } else if (r == SQL_NO_DATA) {
+ break;
+ } else {
+ qWarning() << "qGetStringData: Error while fetching data (" << qWarnODBCHandle(SQL_HANDLE_STMT, hStmt) << ')';
+ fieldVal.clear();
break;
}
- } else if (r == SQL_NO_DATA) {
- break;
- } else {
- qWarning() << "qGetStringData: Error while fetching data (" << qWarnODBCHandle(SQL_HANDLE_STMT, hStmt) << ')';
- fieldVal.clear();
- break;
}
}
return fieldVal;
@@ -847,10 +896,6 @@ QODBCResult::QODBCResult(const QODBCDriver * db, QODBCDriverPrivate* p)
: QSqlResult(db)
{
d = new QODBCPrivate(p);
- d->unicode = p->unicode;
- d->useSchema = p->useSchema;
- d->disconnectCount = p->disconnectCount;
- d->hasSQLFetchScroll = p->hasSQLFetchScroll;
}
QODBCResult::~QODBCResult()
@@ -1825,6 +1870,7 @@ bool QODBCDriver::open(const QString & db,
SQLSMALLINT cb;
QVarLengthArray<SQLTCHAR> connOut(1024);
+ memset(connOut.data(), 0, connOut.size() * sizeof(SQLTCHAR));
r = SQLDriverConnect(d->hDbc,
NULL,
#ifdef UNICODE
@@ -1917,6 +1963,7 @@ void QODBCDriverPrivate::checkUnicode()
NULL);
if ((r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) && (fFunc & SQL_CVT_WCHAR)) {
unicode = true;
+ return;
}
r = SQLGetInfo(hDbc,
@@ -1926,6 +1973,7 @@ void QODBCDriverPrivate::checkUnicode()
NULL);
if ((r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) && (fFunc & SQL_CVT_WVARCHAR)) {
unicode = true;
+ return;
}
r = SQLGetInfo(hDbc,
@@ -1935,7 +1983,25 @@ void QODBCDriverPrivate::checkUnicode()
NULL);
if ((r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) && (fFunc & SQL_CVT_WLONGVARCHAR)) {
unicode = true;
+ return;
+ }
+ SQLHANDLE hStmt;
+ r = SQLAllocHandle(SQL_HANDLE_STMT,
+ hDbc,
+ &hStmt);
+
+ r = SQLExecDirect(hStmt, toSQLTCHAR(QLatin1String("select 'test'")).data(), SQL_NTS);
+ if(r == SQL_SUCCESS) {
+ r = SQLFetch(hStmt);
+ if(r == SQL_SUCCESS) {
+ QVarLengthArray<SQLWCHAR> buffer(10);
+ r = SQLGetData(hStmt, 1, SQL_C_WCHAR, buffer.data(), buffer.size() * sizeof(SQLWCHAR), NULL);
+ if(r == SQL_SUCCESS && fromSQLTCHAR(buffer) == QLatin1String("test")) {
+ unicode = true;
+ }
+ }
}
+ r = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
}
bool QODBCDriverPrivate::checkDriver() const
@@ -2027,6 +2093,21 @@ void QODBCDriverPrivate::checkSqlServer()
isMySqlServer = serverType.contains(QLatin1String("mysql"), Qt::CaseInsensitive);
isMSSqlServer = serverType.contains(QLatin1String("Microsoft SQL Server"), Qt::CaseInsensitive);
}
+ r = SQLGetInfo(hDbc,
+ SQL_DRIVER_NAME,
+ serverString.data(),
+ serverString.size() * sizeof(SQLTCHAR),
+ &t);
+ if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) {
+ QString serverType;
+#ifdef UNICODE
+ serverType = fromSQLTCHAR(serverString, t/sizeof(SQLTCHAR));
+#else
+ serverType = QString::fromUtf8((const char *)serverString.constData(), t);
+#endif
+ isFreeTDSDriver = serverType.contains(QLatin1String("tdsodbc"), Qt::CaseInsensitive);
+ unicode = isFreeTDSDriver == false;
+ }
}
void QODBCDriverPrivate::checkHasSQLFetchScroll()
diff --git a/src/src.pro b/src/src.pro
index c2ed59d..6ccd955 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -14,10 +14,10 @@ wince*:{
SRC_SUBDIRS += src_corelib src_xml src_network src_gui src_sql src_testlib
!vxworks:contains(QT_CONFIG, qt3support): SRC_SUBDIRS += src_qt3support
include(tools/tools.pro)
- contains(QT_CONFIG, dbus):SRC_SUBDIRS += src_dbus
}
win32:SRC_SUBDIRS += src_activeqt
+!symbian:contains(QT_CONFIG, dbus):SRC_SUBDIRS += src_dbus
contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles1)|contains(QT_CONFIG, opengles2): SRC_SUBDIRS += src_opengl
contains(QT_CONFIG, openvg): SRC_SUBDIRS += src_openvg
contains(QT_CONFIG, xmlpatterns): SRC_SUBDIRS += src_xmlpatterns
diff --git a/src/tools/uic/cpp/cppextractimages.cpp b/src/tools/uic/cpp/cppextractimages.cpp
index d452168..52c1b9d 100644
--- a/src/tools/uic/cpp/cppextractimages.cpp
+++ b/src/tools/uic/cpp/cppextractimages.cpp
@@ -134,7 +134,7 @@ void ExtractImages::acceptImage(DomImage *image)
QTextStream *imageOut = new QTextStream(&f);
imageOut->setCodec(QTextCodec::codecForName("UTF-8"));
- CPP::WriteIconData::writeImage(*imageOut, QString(), image);
+ CPP::WriteIconData::writeImage(*imageOut, QString(), m_option.limitXPM_LineLength, image);
delete imageOut;
} else {
CPP::WriteIconData::writeImage(f, image);
diff --git a/src/tools/uic/cpp/cppwriteicondata.cpp b/src/tools/uic/cpp/cppwriteicondata.cpp
index 81ef56b..7e4b5c8 100644
--- a/src/tools/uic/cpp/cppwriteicondata.cpp
+++ b/src/tools/uic/cpp/cppwriteicondata.cpp
@@ -114,10 +114,12 @@ void WriteIconData::acceptImages(DomImages *images)
void WriteIconData::acceptImage(DomImage *image)
{
- writeImage(output, option.indent, image);
+ // Limit line length when writing code.
+ writeImage(output, option.indent, true, image);
}
-void WriteIconData::writeImage(QTextStream &output, const QString &indent, DomImage *image)
+void WriteIconData::writeImage(QTextStream &output, const QString &indent,
+ bool limitXPM_LineLength, const DomImage *image)
{
QString img = image->attributeName() + QLatin1String("_data");
QString data = image->elementData()->text();
@@ -133,7 +135,8 @@ void WriteIconData::writeImage(QTextStream &output, const QString &indent, DomIm
int a = 0;
int column = 0;
bool inQuote = false;
- output << indent << "static const char* const " << img << "[] = { \n";
+ output << indent << "/* XPM */\n"
+ << indent << "static const char* const " << img << "[] = { \n";
while (baunzip[a] != '\"')
a++;
for (; a < (int) length; a++) {
@@ -144,7 +147,8 @@ void WriteIconData::writeImage(QTextStream &output, const QString &indent, DomIm
inQuote = !inQuote;
}
- if (column++ >= 511 && inQuote) {
+ column++;
+ if (limitXPM_LineLength && column >= 512 && inQuote) {
output << "\"\n\""; // be nice with MSVC & Co.
column = 1;
}
diff --git a/src/tools/uic/cpp/cppwriteicondata.h b/src/tools/uic/cpp/cppwriteicondata.h
index 40d56bc..42cfab0 100644
--- a/src/tools/uic/cpp/cppwriteicondata.h
+++ b/src/tools/uic/cpp/cppwriteicondata.h
@@ -64,7 +64,8 @@ public:
void acceptImages(DomImages *images);
void acceptImage(DomImage *image);
- static void writeImage(QTextStream &output, const QString &indent, DomImage *image);
+ static void writeImage(QTextStream &output, const QString &indent,
+ bool limitXPM_LineLength, const DomImage *image);
static void writeImage(QIODevice &output, DomImage *image);
private:
diff --git a/src/tools/uic/option.h b/src/tools/uic/option.h
index f1198a0..8556728 100644
--- a/src/tools/uic/option.h
+++ b/src/tools/uic/option.h
@@ -61,6 +61,7 @@ struct Option
unsigned int autoConnection : 1;
unsigned int dependencies : 1;
unsigned int extractImages : 1;
+ unsigned int limitXPM_LineLength : 1;
unsigned int implicitIncludes: 1;
Generator generator;
@@ -85,6 +86,7 @@ struct Option
autoConnection(1),
dependencies(0),
extractImages(0),
+ limitXPM_LineLength(0),
implicitIncludes(1),
generator(CppGenerator),
prefix(QLatin1String("Ui_"))
diff --git a/src/tools/uic3/converter.cpp b/src/tools/uic3/converter.cpp
index e1b4b38..2ee939d 100644
--- a/src/tools/uic3/converter.cpp
+++ b/src/tools/uic3/converter.cpp
@@ -518,6 +518,7 @@ DomUI *Ui3Reader::generateUi4(const QDomElement &widget)
if (m_extractImages) {
Option opt;
opt.extractImages = m_extractImages;
+ opt.limitXPM_LineLength = (m_options & LimitXPM_LineLength) ? 1 : 0;
opt.qrcOutputFile = m_qrcOutputFile;
CPP::ExtractImages(opt).acceptUI(ui);
diff --git a/src/tools/uic3/form.cpp b/src/tools/uic3/form.cpp
index df1314f..9df644a 100644
--- a/src/tools/uic3/form.cpp
+++ b/src/tools/uic3/form.cpp
@@ -256,6 +256,7 @@ void Ui3Reader::createFormDecl(const QDomElement &e)
d.option().headerProtection = false;
d.option().copyrightHeader = false;
d.option().extractImages = m_extractImages;
+ d.option().limitXPM_LineLength = (m_options & LimitXPM_LineLength) ? 1 : 0;
d.option().qrcOutputFile = m_qrcOutputFile;
d.option().implicitIncludes = (m_options & ImplicitIncludes) ? 1 : 0;
if (trmacro.size())
diff --git a/src/tools/uic3/main.cpp b/src/tools/uic3/main.cpp
index 1ebb76a..d7657b1 100644
--- a/src/tools/uic3/main.cpp
+++ b/src/tools/uic3/main.cpp
@@ -149,6 +149,8 @@ int runUic3(int argc, char * argv[])
readerOptions &= ~Ui3Reader::CustomWidgetForwardDeclarations;
} else if (opt == "layout-names") {
readerOptions |= Ui3Reader::PreserveLayoutNames;
+ } else if (opt == "limit-xpm-linelength") {
+ readerOptions |= Ui3Reader::LimitXPM_LineLength;
} else if (opt == "nounload") {
// skip
} else if (opt == "convert") {
@@ -251,6 +253,7 @@ int runUic3(int argc, char * argv[])
"Options:\n"
"\t-o file Write output to file rather than stdout\n"
"\t-extract qrcFile Create resource file and extract embedded images into \"image\" dir\n"
+ "\t-limit-xpm-linelength Limit the line length of XPM files for -extract.\n"
"\t-pch file Add #include \"file\" as the first statement in implementation\n"
"\t-nofwd Omit forward declarations of custom classes\n"
"\t-layout-names Preserve layout names of Qt Designer 3\n"
diff --git a/src/tools/uic3/ui3reader.h b/src/tools/uic3/ui3reader.h
index 144ef05..abe323e 100644
--- a/src/tools/uic3/ui3reader.h
+++ b/src/tools/uic3/ui3reader.h
@@ -68,7 +68,8 @@ typedef QList<QPair<int, Color> > ColorGroup;
class Ui3Reader
{
public:
- enum Options { CustomWidgetForwardDeclarations = 0x1, ImplicitIncludes = 0x2, PreserveLayoutNames = 0x4 };
+ enum Options { CustomWidgetForwardDeclarations = 0x1, ImplicitIncludes = 0x2,
+ PreserveLayoutNames = 0x4, LimitXPM_LineLength = 0x8 };
explicit Ui3Reader(QTextStream &stream, unsigned options);
~Ui3Reader();
diff --git a/src/xmlpatterns/api/qxmlresultitems.cpp b/src/xmlpatterns/api/qxmlresultitems.cpp
index c474082..98c5bdc 100644
--- a/src/xmlpatterns/api/qxmlresultitems.cpp
+++ b/src/xmlpatterns/api/qxmlresultitems.cpp
@@ -70,6 +70,10 @@ QT_BEGIN_NAMESPACE
sequence and returns it, and current() always returns the QXmlItem
that next() returned the last time it was called.
+ \note When using the QXmlResultItems overload of QXmlQuery::evaluateTo()
+ to execute a query, it is advisable to create a new instance of this
+ class for each new set of results rather than reusing an old instance.
+
\sa QXmlItem::isNode(), QXmlItem::isAtomicValue(), QXmlNodeModelIndex
*/
diff --git a/tests/auto/declarative/declarative.pro b/tests/auto/declarative/declarative.pro
index eb74244..2d88058 100644
--- a/tests/auto/declarative/declarative.pro
+++ b/tests/auto/declarative/declarative.pro
@@ -13,7 +13,6 @@ SUBDIRS += \
qdeclarativedebugclient \ # Cover
qdeclarativedebugservice \ # Cover
qdeclarativedom \ # Cover
- qdeclarativeeasefollow \ # Cover
qdeclarativeecmascript \ # Cover
qdeclarativeengine \ # Cover
qdeclarativeerror \ # Cover
@@ -24,6 +23,7 @@ SUBDIRS += \
qdeclarativeborderimage \ # Cover
qdeclarativeflickable \ # Cover
qdeclarativeflipable \ # Cover
+ qdeclarativefocusscope \ # Cover
qdeclarativegridview \ # Cover
qdeclarativeitem \ # Cover
qdeclarativelistview \ # Cover
@@ -47,6 +47,7 @@ SUBDIRS += \
qdeclarativepixmapcache \ # Cover
qdeclarativepropertymap \ # Cover
qdeclarativeqt \ # Cover
+ qdeclarativesmoothedanimation \ # Cover
qdeclarativespringfollow \ # Cover
qdeclarativestates \ # Cover
qdeclarativesystempalette \ # Cover
@@ -59,7 +60,8 @@ SUBDIRS += \
qdeclarativexmlhttprequest \ # Cover
qdeclarativeimageprovider \ # Cover
qdeclarativestyledtext \ # Cover
- sql # Cover
+ sql \ # Cover
+ qmlvisual
contains(QT_CONFIG, webkit) {
SUBDIRS += \
diff --git a/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp b/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp
index 6b7d57f..16ae7fc 100644
--- a/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp
+++ b/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp
@@ -390,7 +390,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);
@@ -411,7 +411,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/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp b/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp
index 0bf0b81..26c8231 100644
--- a/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp
+++ b/tests/auto/declarative/qdeclarativebehaviors/tst_qdeclarativebehaviors.cpp
@@ -82,6 +82,8 @@ void tst_qdeclarativebehaviors::simpleBehavior()
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
+
+ delete rect;
}
void tst_qdeclarativebehaviors::scriptTriggered()
@@ -95,6 +97,8 @@ void tst_qdeclarativebehaviors::scriptTriggered()
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
+
+ delete rect;
}
void tst_qdeclarativebehaviors::cppTriggered()
@@ -111,6 +115,8 @@ void tst_qdeclarativebehaviors::cppTriggered()
QTest::qWait(200);
qreal x = innerRect->x();
QVERIFY(x > 0 && x < 200); //i.e. the behavior has been triggered
+
+ delete rect;
}
void tst_qdeclarativebehaviors::loop()
@@ -122,6 +128,8 @@ void tst_qdeclarativebehaviors::loop()
//don't crash
rect->setState("moved");
+
+ delete rect;
}
void tst_qdeclarativebehaviors::colorBehavior()
@@ -135,6 +143,8 @@ void tst_qdeclarativebehaviors::colorBehavior()
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
+
+ delete rect;
}
void tst_qdeclarativebehaviors::parentBehavior()
@@ -152,6 +162,8 @@ void tst_qdeclarativebehaviors::parentBehavior()
QTest::qWait(600);
parent = rect->findChild<QDeclarativeRectangle*>("MyRect")->parentItem();
QVERIFY(parent == newParent);
+
+ delete rect;
}
void tst_qdeclarativebehaviors::replaceBinding()
@@ -186,6 +198,8 @@ void tst_qdeclarativebehaviors::replaceBinding()
rect->setProperty("basex", 20);
QTest::qWait(600);
QCOMPARE(innerRect->x(), (qreal)20);
+
+ delete rect;
}
void tst_qdeclarativebehaviors::group()
@@ -200,6 +214,8 @@ void tst_qdeclarativebehaviors::group()
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
+
+ delete rect;
}
{
@@ -212,6 +228,8 @@ void tst_qdeclarativebehaviors::group()
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
+
+ delete rect;
}
}
@@ -225,6 +243,8 @@ void tst_qdeclarativebehaviors::emptyBehavior()
rect->setState("moved");
qreal x = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x();
QCOMPARE(x, qreal(200)); //should change immediately
+
+ delete rect;
}
void tst_qdeclarativebehaviors::explicitSelection()
@@ -239,6 +259,8 @@ void tst_qdeclarativebehaviors::explicitSelection()
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
+
+ delete rect;
}
}
@@ -253,6 +275,8 @@ void tst_qdeclarativebehaviors::nonSelectingBehavior()
rect->setState("moved");
qreal x = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x();
QCOMPARE(x, qreal(200)); //should change immediately
+
+ delete rect;
}
}
@@ -266,6 +290,8 @@ void tst_qdeclarativebehaviors::reassignedAnimation()
QCOMPARE(qobject_cast<QDeclarativeNumberAnimation*>(
qobject_cast<QDeclarativeBehavior*>(
rect->findChild<QDeclarativeBehavior*>("MyBehavior"))->animation())->duration(), 200);
+
+ delete rect;
}
void tst_qdeclarativebehaviors::disabled()
@@ -279,6 +305,8 @@ void tst_qdeclarativebehaviors::disabled()
rect->setState("moved");
qreal x = qobject_cast<QDeclarativeRectangle*>(rect->findChild<QDeclarativeRectangle*>("MyRect"))->x();
QCOMPARE(x, qreal(200)); //should change immediately
+
+ delete rect;
}
void tst_qdeclarativebehaviors::dontStart()
@@ -294,6 +322,8 @@ void tst_qdeclarativebehaviors::dontStart()
QDeclarativeAbstractAnimation *myAnim = rect->findChild<QDeclarativeAbstractAnimation*>("MyAnim");
QVERIFY(myAnim && myAnim->qtAnimation());
QVERIFY(myAnim->qtAnimation()->state() == QAbstractAnimation::Stopped);
+
+ 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/tst_qdeclarativebinding.cpp b/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp
index 483d588..8ab7b0b 100644
--- a/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp
+++ b/tests/auto/declarative/qdeclarativebinding/tst_qdeclarativebinding.cpp
@@ -69,14 +69,20 @@ 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(), qobject_cast<QObject*>(rect));
diff --git a/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp b/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp
index adea384..79b0c36 100644
--- a/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp
+++ b/tests/auto/declarative/qdeclarativedom/tst_qdeclarativedom.cpp
@@ -340,6 +340,7 @@ void tst_qdeclarativedom::loadImports()
"Item {}";
QDeclarativeEngine engine;
+ engine.addImportPath(SRCDIR "/data");
QDeclarativeDomDocument document;
QVERIFY(document.load(&engine, qml, QUrl::fromLocalFile(SRCDIR "/data/dummy.qml")));
@@ -450,8 +451,7 @@ void tst_qdeclarativedom::loadDynamicProperty()
" property color g\n"
" property date h\n"
" property var i\n"
- " property variant j\n"
- " property QtObject k\n"
+ " property QtObject j\n"
"}";
QDeclarativeDomDocument document;
@@ -460,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) \
{ \
@@ -482,10 +482,9 @@ 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(7, h, QVariant::DateTime, 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(9, j, -1, 207, 19, "QtObject");
}
{
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/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/compiled.qml b/tests/auto/declarative/qdeclarativeecmascript/data/compiled.qml
new file mode 100644
index 0000000..2fec9da
--- /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 var g: 6.7
+ property var h: "!"
+ property var i: true
+}
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/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/testtypes.h b/tests/auto/declarative/qdeclarativeecmascript/testtypes.h
index 72dc3bb..faad8b7 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/testtypes.h
+++ b/tests/auto/declarative/qdeclarativeecmascript/testtypes.h
@@ -90,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) {}
@@ -138,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 &regExp) { m_regExp = regExp; }
+
signals:
void basicSignal();
void argumentSignal(int a, QString b, qreal c);
@@ -162,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)
diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
index 87d73a0..77dd4b8 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
+++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
@@ -128,9 +128,12 @@ private slots:
void scriptDisconnect();
void ownership();
void qlistqobjectMethods();
+ void strictlyEquals();
+ void compiled();
void bug1();
void dynamicCreationCrash();
+ void regExpBug();
void callQtInvokables();
private:
@@ -1241,6 +1244,15 @@ void tst_qdeclarativeecmascript::dynamicCreationCrash()
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;
@@ -1995,6 +2007,64 @@ void tst_qdeclarativeecmascript::qlistqobjectMethods()
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;
+}
+
QTEST_MAIN(tst_qdeclarativeecmascript)
#include "tst_qdeclarativeecmascript.moc"
diff --git a/examples/declarative/focusscope/test.qml b/tests/auto/declarative/qdeclarativefocusscope/data/test.qml
index e4332e7..647e5bf 100644
--- a/examples/declarative/focusscope/test.qml
+++ b/tests/auto/declarative/qdeclarativefocusscope/data/test.qml
@@ -14,20 +14,21 @@ Rectangle {
Keys.onDigit9Pressed: console.log("Error - FocusScope")
Rectangle {
+ objectName: "item0"
height: 120
width: 420
color: "transparent"
border.width: 5
- border.color: myScope.wantsFocus?"blue":"black"
+ //border.color: myScope.wantsFocus?"blue":"black"
Rectangle {
- id: item1
+ 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("Top Left");
+ Keys.onDigit9Pressed: console.debug("Top Left");
KeyNavigation.right: item2
focus: true
@@ -38,7 +39,7 @@ Rectangle {
}
Rectangle {
- id: item2
+ id: item2; objectName: "item2"
x: 310; y: 10
width: 100; height: 100; color: "green"
border.width: 5
@@ -58,7 +59,7 @@ Rectangle {
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
+ id: item3; objectName: "item3"
x: 10; y: 300
width: 100; height: 100; color: "green"
border.width: 5
diff --git a/examples/declarative/focusscope/test2.qml b/tests/auto/declarative/qdeclarativefocusscope/data/test2.qml
index 5b6971a..277fda4 100644
--- a/examples/declarative/focusscope/test2.qml
+++ b/tests/auto/declarative/qdeclarativefocusscope/data/test2.qml
@@ -9,32 +9,31 @@ Rectangle {
FocusScope {
y: 100
- focus: true
+ focus: true; objectName: "item1"
Rectangle { width: 50; height: 50; color: parent.wantsFocus?"red":"blue" }
FocusScope {
y: 100
- focus: true
+ focus: true; objectName: "item2"
Rectangle { width: 50; height: 50; color: parent.wantsFocus?"red":"blue" }
FocusScope {
y: 100
- focus: true
+ focus: true; objectName: "item3"
Rectangle { width: 50; height: 50; color: parent.wantsFocus?"red":"blue" }
FocusScope {
y: 100
- focus: true
+ focus: true; objectName: "item4"
Rectangle { width: 50; height: 50; color: parent.wantsFocus?"red":"blue" }
FocusScope {
y: 100
- focus: true
+ focus: true; objectName: "item5"
Rectangle { width: 50; height: 50; color: parent.wantsFocus?"red":"blue" }
}
}
}
}
}
-
}
diff --git a/examples/declarative/focusscope/test3.qml b/tests/auto/declarative/qdeclarativefocusscope/data/test3.qml
index 9344d07..9344d07 100644
--- a/examples/declarative/focusscope/test3.qml
+++ b/tests/auto/declarative/qdeclarativefocusscope/data/test3.qml
diff --git a/examples/declarative/focusscope/test4.qml b/tests/auto/declarative/qdeclarativefocusscope/data/test4.qml
index cc96df9..d8bd390 100644
--- a/examples/declarative/focusscope/test4.qml
+++ b/tests/auto/declarative/qdeclarativefocusscope/data/test4.qml
@@ -13,15 +13,16 @@ Rectangle {
Keys.onDigit9Pressed: console.log("Error - FocusScope")
Rectangle {
+ objectName: "item0"
height: 120
width: 420
color: "transparent"
border.width: 5
- border.color: myScope.wantsFocus?"blue":"black"
+ //border.color: myScope.wantsFocus?"blue":"black"
Rectangle {
- id: item1
+ id: item1; objectName: "item1"
x: 10; y: 10
width: 100; height: 100; color: "green"
border.width: 5
@@ -37,7 +38,7 @@ Rectangle {
}
Rectangle {
- id: item2
+ id: item2; objectName: "item2"
x: 310; y: 10
width: 100; height: 100; color: "green"
border.width: 5
@@ -57,7 +58,7 @@ Rectangle {
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
+ id: item3; objectName: "item3"
x: 10; y: 300
width: 100; height: 100; color: "green"
border.width: 5
diff --git a/examples/declarative/focusscope/test5.qml b/tests/auto/declarative/qdeclarativefocusscope/data/test5.qml
index da98350..0b75ec4 100644
--- a/examples/declarative/focusscope/test5.qml
+++ b/tests/auto/declarative/qdeclarativefocusscope/data/test5.qml
@@ -14,12 +14,13 @@ Rectangle {
Keys.onReturnPressed: console.log("Error - FocusScope")
Rectangle {
+ objectName: "item0"
height: 120
width: 420
color: "transparent"
border.width: 5
- border.color: myScope.wantsFocus?"blue":"black"
+ //border.color: myScope.wantsFocus?"blue":"black"
Rectangle {
x: 10; y: 10
@@ -29,7 +30,7 @@ Rectangle {
}
TextEdit {
- id: item1
+ id: item1; objectName: "item1"
x: 20; y: 20
width: 90; height: 90
color: "white"
@@ -42,7 +43,7 @@ Rectangle {
}
Rectangle {
- id: item2
+ id: item2; objectName: "item2"
x: 310; y: 10
width: 100; height: 100; color: "green"
border.width: 5
@@ -69,7 +70,7 @@ Rectangle {
}
TextEdit {
- id: item3
+ id: item3; objectName: "item3"
x: 20; y: 310
width: 90; height: 90
color: "white"
diff --git a/tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro b/tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro
new file mode 100644
index 0000000..4d7a9b3
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativefocusscope/qdeclarativefocusscope.pro
@@ -0,0 +1,6 @@
+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/qdeclarativeimage/data/big.jpeg b/tests/auto/declarative/qdeclarativeimage/data/big.jpeg
new file mode 100644
index 0000000..bed7bd6
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeimage/data/big.jpeg
Binary files differ
diff --git a/tests/auto/declarative/qdeclarativeimage/data/big256.png b/tests/auto/declarative/qdeclarativeimage/data/big256.png
new file mode 100644
index 0000000..1dc1596
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeimage/data/big256.png
Binary files differ
diff --git a/tests/auto/declarative/qdeclarativeimage/data/heart-mac.png b/tests/auto/declarative/qdeclarativeimage/data/heart-mac.png
new file mode 100644
index 0000000..d7df0e4
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeimage/data/heart-mac.png
Binary files differ
diff --git a/tests/auto/declarative/qdeclarativeimage/data/heart-win32.png b/tests/auto/declarative/qdeclarativeimage/data/heart-win32.png
new file mode 100644
index 0000000..351da13
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeimage/data/heart-win32.png
Binary files differ
diff --git a/tests/auto/declarative/qdeclarativeimage/data/heart.png b/tests/auto/declarative/qdeclarativeimage/data/heart.png
new file mode 100644
index 0000000..372b224
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeimage/data/heart.png
Binary files differ
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
new file mode 100644
index 0000000..df22325
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeimage/data/heart200-mac.png
Binary files differ
diff --git a/tests/auto/declarative/qdeclarativeimage/data/heart200-win32.png b/tests/auto/declarative/qdeclarativeimage/data/heart200-win32.png
new file mode 100644
index 0000000..4976ff9
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeimage/data/heart200-win32.png
Binary files differ
diff --git a/tests/auto/declarative/qdeclarativeimage/data/heart200.png b/tests/auto/declarative/qdeclarativeimage/data/heart200.png
new file mode 100644
index 0000000..786e75d
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeimage/data/heart200.png
Binary files differ
diff --git a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
index ed2095b..ec9f4ec 100644
--- a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
+++ b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp
@@ -82,6 +82,8 @@ private slots:
void resized();
void smooth();
void pixmap();
+ void svg();
+ void big();
private:
QDeclarativeEngine engine;
@@ -111,24 +113,29 @@ 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
+ 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 << "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
+ QTest::newRow("local async not found") << QUrl::fromLocalFile(SRCDIR "/data/no-such-file-1.png").toString() << 0.0 << 0.0 << 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
+ 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
<< "\"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);
@@ -148,6 +155,9 @@ void tst_qdeclarativeimage::imageSource()
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 +166,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 {
@@ -248,6 +258,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.6\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.6\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/tst_qdeclarativeimageprovider.cpp b/tests/auto/declarative/qdeclarativeimageprovider/tst_qdeclarativeimageprovider.cpp
index c5bdfc8..fe5f5a2 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,35 @@ 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"
+ 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()
<< "\"Failed to get image from provider: image://test/no-such-file.png\" ";
- QTest::newRow("unknown provider") << "image://bogus/exists.png"
+ QTest::newRow("unknown provider") << "image://bogus/exists.png" << "" << QSize()
<< "\"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 +114,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.6\nImage { source: \"" + source + "\"; " + properties + " }";
QDeclarativeComponent component(&engine);
component.setData(componentStr.toLatin1(), QUrl::fromLocalFile(""));
QDeclarativeImage *obj = qobject_cast<QDeclarativeImage*>(component.create());
@@ -118,8 +126,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 {
diff --git a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
index ba69cd8..46f3517 100644
--- a/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
+++ b/tests/auto/declarative/qdeclarativeitem/tst_qdeclarativeitem.cpp
@@ -61,6 +61,8 @@ private slots:
void mapCoordinates();
void mapCoordinates_data();
void propertyChanges();
+ void transforms();
+ void transforms_data();
private:
template<typename T>
@@ -402,6 +404,31 @@ void tst_QDeclarativeItem::mapCoordinates_data()
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.6\nItem { transform: "+qml+"}", QUrl::fromLocalFile(""));
+ QDeclarativeItem *item = qobject_cast<QDeclarativeItem*>(component.create());
+ QVERIFY(item);
+ QCOMPARE(item->sceneMatrix(), matrix);
+}
+
void tst_QDeclarativeItem::propertyChanges()
{
QDeclarativeView *canvas = new QDeclarativeView(0);
@@ -421,8 +448,8 @@ void tst_QDeclarativeItem::propertyChanges()
QVERIFY(parentItem);
QSignalSpy parentSpy(item, SIGNAL(parentChanged(QDeclarativeItem *)));
- QSignalSpy widthSpy(item, SIGNAL(widthChanged(qreal)));
- QSignalSpy heightSpy(item, SIGNAL(heightChanged(qreal)));
+ 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)));
@@ -442,15 +469,9 @@ void tst_QDeclarativeItem::propertyChanges()
QCOMPARE(item->width(), 100.0);
QCOMPARE(widthSpy.count(),1);
- QList<QVariant> widthArguments = widthSpy.first();
- QVERIFY(widthArguments.count() == 1);
- QCOMPARE(item->width(), widthArguments.at(0).toReal());
QCOMPARE(item->height(), 200.0);
QCOMPARE(heightSpy.count(),1);
- QList<QVariant> heightArguments = heightSpy.first();
- QVERIFY(heightArguments.count() == 1);
- QCOMPARE(item->height(), heightArguments.at(0).toReal());
QCOMPARE(item->baselineOffset(), 10.0);
QCOMPARE(baselineOffsetSpy.count(),1);
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/dynamicProperties.qml b/tests/auto/declarative/qdeclarativelanguage/data/dynamicProperties.qml
index aef3269..bedab8c 100644
--- a/tests/auto/declarative/qdeclarativelanguage/data/dynamicProperties.qml
+++ b/tests/auto/declarative/qdeclarativelanguage/data/dynamicProperties.qml
@@ -10,5 +10,4 @@ QtObject {
property url urlProperty: "main.qml"
property date dateProperty: "1945-09-02"
property var varProperty: "Hello World!"
- property variant variantProperty: 12
}
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/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp
index eae78c4..722e161 100644
--- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp
+++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp
@@ -586,7 +586,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
@@ -1066,7 +1065,6 @@ void tst_qdeclarativelanguage::defaultPropertyListOrder()
void tst_qdeclarativelanguage::declaredPropertyValues()
{
QDeclarativeComponent component(&engine, TEST_FILE("declaredPropertyValues.qml"));
- QEXPECT_FAIL("", "QTBUG-7860", Abort);
VERIFY_ERRORS(0);
}
@@ -1359,6 +1357,13 @@ void tst_qdeclarativelanguage::importsOrder_data()
"import com.nokia.installedtest 1.5\n"
"Rectangle.Image {}"
<< "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()
diff --git a/tests/auto/declarative/qdeclarativelayouts/tst_qdeclarativelayouts.cpp b/tests/auto/declarative/qdeclarativelayouts/tst_qdeclarativelayouts.cpp
index 879047e..412c3b7 100644
--- a/tests/auto/declarative/qdeclarativelayouts/tst_qdeclarativelayouts.cpp
+++ b/tests/auto/declarative/qdeclarativelayouts/tst_qdeclarativelayouts.cpp
@@ -130,7 +130,7 @@ void tst_QDeclarativeLayouts::test_qml()
void tst_QDeclarativeLayouts::test_cpp()
{
- //TODO: Waiting on QT-2407 to write this test
+ //TODO: This test!
}
QDeclarativeView *tst_QDeclarativeLayouts::createView(const QString &filename)
diff --git a/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp b/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp
index fcb453c..d02f54f 100644
--- a/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp
+++ b/tests/auto/declarative/qdeclarativelistmodel/tst_qdeclarativelistmodel.cpp
@@ -41,6 +41,7 @@
#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>
@@ -77,6 +78,7 @@ private slots:
void convertNestedToFlat_ok_data();
void error_data();
void error();
+ void set();
};
QScriptValue tst_QDeclarativeListModel::nestedListValue(QScriptEngine *eng) const
@@ -193,7 +195,7 @@ 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 << "";
@@ -290,8 +292,6 @@ void tst_QDeclarativeListModel::dynamic_worker_data()
void tst_QDeclarativeListModel::dynamic_worker()
{
- QSKIP("", SkipAll);
-
QFETCH(QString, script);
QFETCH(int, result);
QFETCH(QString, warning);
@@ -324,6 +324,7 @@ void tst_QDeclarativeListModel::dynamic_worker()
// 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);
@@ -342,7 +343,6 @@ void tst_QDeclarativeListModel::dynamic_worker()
void tst_QDeclarativeListModel::convertNestedToFlat_fail()
{
- QSKIP("", SkipAll);
// If a model has nested data, it cannot be used at all from a worker script
QFETCH(QString, script);
@@ -368,7 +368,7 @@ void tst_QDeclarativeListModel::convertNestedToFlat_fail()
delete item;
QTest::ignoreMessage(QtWarningMsg, "QThread: Destroyed while thread is still running");
- qApp->processEvents();
+ qApp->processEvents();
}
void tst_QDeclarativeListModel::convertNestedToFlat_fail_data()
@@ -387,7 +387,6 @@ void tst_QDeclarativeListModel::convertNestedToFlat_fail_data()
void tst_QDeclarativeListModel::convertNestedToFlat_ok()
{
- QSKIP("", SkipAll);
// 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
@@ -429,7 +428,7 @@ void tst_QDeclarativeListModel::convertNestedToFlat_ok()
delete item;
QTest::ignoreMessage(QtWarningMsg, "QThread: Destroyed while thread is still running");
- qApp->processEvents();
+ qApp->processEvents();
}
void tst_QDeclarativeListModel::convertNestedToFlat_ok_data()
@@ -553,6 +552,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/qdeclarativelistview/data/listviewtest.qml b/tests/auto/declarative/qdeclarativelistview/data/listviewtest.qml
index 1c1b3f8..40fc436 100644
--- a/tests/auto/declarative/qdeclarativelistview/data/listviewtest.qml
+++ b/tests/auto/declarative/qdeclarativelistview/data/listviewtest.qml
@@ -85,12 +85,10 @@ Rectangle {
}
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 }
-*/
+
}
}
},
@@ -100,7 +98,7 @@ Rectangle {
},
Component {
id: invalidHl
- EaseFollow {}
+ SmoothedAnimation {}
}
]
ListView {
diff --git a/tests/auto/declarative/qdeclarativeloader/tst_qdeclarativeloader.cpp b/tests/auto/declarative/qdeclarativeloader/tst_qdeclarativeloader.cpp
index a745a24..05d968c 100644
--- a/tests/auto/declarative/qdeclarativeloader/tst_qdeclarativeloader.cpp
+++ b/tests/auto/declarative/qdeclarativeloader/tst_qdeclarativeloader.cpp
@@ -129,6 +129,10 @@ void tst_QDeclarativeLoader::component()
QCOMPARE(loader->status(), QDeclarativeLoader::Ready);
QCOMPARE(static_cast<QGraphicsItem*>(loader)->children().count(), 1);
+ QDeclarativeComponent *c = qobject_cast<QDeclarativeComponent*>(item->QGraphicsObject::children().at(0));
+ QVERIFY(c);
+ QCOMPARE(loader->sourceComponent(), c);
+
delete loader;
}
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/tst_qdeclarativemousearea.cpp b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
index 769cf32..9b664e5 100644
--- a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
+++ b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
@@ -42,6 +42,7 @@
#include <QtTest/QtTest>
#include <QtTest/QSignalSpy>
#include <private/qdeclarativemousearea_p.h>
+#include <private/qdeclarativerectangle_p.h>
#include <QtDeclarative/qdeclarativeview.h>
class tst_QDeclarativeMouseArea: public QObject
@@ -49,6 +50,7 @@ class tst_QDeclarativeMouseArea: public QObject
Q_OBJECT
private slots:
void dragProperties();
+ void updateMouseAreaPosOnClick();
private:
QDeclarativeView *createView(const QString &filename);
};
@@ -121,6 +123,8 @@ void tst_QDeclarativeMouseArea::dragProperties()
QCOMPARE(xmaxSpy.count(),1);
QCOMPARE(yminSpy.count(),1);
QCOMPARE(ymaxSpy.count(),1);
+
+ delete canvas;
}
QDeclarativeView *tst_QDeclarativeMouseArea::createView(const QString &filename)
@@ -133,6 +137,38 @@ QDeclarativeView *tst_QDeclarativeMouseArea::createView(const QString &filename)
return canvas;
}
+void tst_QDeclarativeMouseArea::updateMouseAreaPosOnClick()
+{
+ QDeclarativeView *canvas = createView(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;
+}
+
QTEST_MAIN(tst_QDeclarativeMouseArea)
#include "tst_qdeclarativemousearea.moc"
diff --git a/tests/auto/declarative/qdeclarativepathview/data/displaypath.qml b/tests/auto/declarative/qdeclarativepathview/data/displaypath.qml
index ab1538b..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.0001
path: Path {
startY: 120
startX: 160
diff --git a/tests/auto/declarative/qdeclarativepathview/data/pathview0.qml b/tests/auto/declarative/qdeclarativepathview/data/pathview0.qml
index ae0c86a..1866875 100644
--- a/tests/auto/declarative/qdeclarativepathview/data/pathview0.qml
+++ b/tests/auto/declarative/qdeclarativepathview/data/pathview0.qml
@@ -48,7 +48,11 @@ Rectangle {
height: 320
model: testModel
delegate: delegate
- snapPosition: 0.0001
+ highlight: Rectangle {
+ width: 60
+ height: 20
+ color: "yellow"
+ }
path: Path {
startY: 120
startX: 160
diff --git a/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml b/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml
index 70cfbcd..b143294 100644
--- a/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml
+++ b/tests/auto/declarative/qdeclarativepathview/data/pathview3.qml
@@ -2,8 +2,10 @@ import Qt 4.6
PathView {
id: photoPathView
- y: 100; width: 800; height: 330; pathItemCount: 4; offset: 0.1
- dragMargin: 24; snapPosition: 0.50
+ 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
index db70b7b..1ae1ad2 100644
--- a/tests/auto/declarative/qdeclarativepathview/data/propertychanges.qml
+++ b/tests/auto/declarative/qdeclarativepathview/data/propertychanges.qml
@@ -17,7 +17,8 @@ Rectangle {
}
PathView {
- snapPosition: 0.1
+ preferredHighlightBegin: 0.1
+ preferredHighlightEnd: 0.1
dragMargin: 5.0
id: pathView
objectName: "pathView"
diff --git a/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp b/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp
index c16c46f..4d43c68 100644
--- a/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp
+++ b/tests/auto/declarative/qdeclarativepathview/tst_qdeclarativepathview.cpp
@@ -194,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);
@@ -219,7 +219,7 @@ void tst_QDeclarativePathView::items()
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);
@@ -230,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;
}
@@ -245,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);
@@ -262,8 +272,8 @@ void tst_QDeclarativePathView::pathview3()
QVERIFY(obj->delegate() != 0);
QVERIFY(obj->model() != QVariant());
QCOMPARE(obj->currentIndex(), 0);
- QCOMPARE(obj->offset(), 0.5); // ???
- 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);
@@ -422,14 +432,14 @@ void tst_QDeclarativePathView::pathMoved()
offset.setX(firstItem->width()/2);
offset.setY(firstItem->height()/2);
QCOMPARE(firstItem->pos() + offset, start);
- pathview->setOffset(0.1);
+ 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(1.0);
+ pathview->setOffset(0.0);
QCOMPARE(firstItem->pos() + offset, start);
delete canvas;
@@ -524,22 +534,25 @@ void tst_QDeclarativePathView::propertyChanges()
QDeclarativePathView *pathView = canvas->rootObject()->findChild<QDeclarativePathView*>("pathView");
QVERIFY(pathView);
- QSignalSpy snapPositionSpy(pathView, SIGNAL(snapPositionChanged()));
+ QSignalSpy snapPositionSpy(pathView, SIGNAL(preferredHighlightBeginChanged()));
QSignalSpy dragMarginSpy(pathView, SIGNAL(dragMarginChanged()));
- QCOMPARE(pathView->snapPosition(), 0.1);
+ QCOMPARE(pathView->preferredHighlightBegin(), 0.1);
QCOMPARE(pathView->dragMargin(), 5.0);
- pathView->setSnapPosition(0.4);
+ pathView->setPreferredHighlightBegin(0.4);
+ pathView->setPreferredHighlightEnd(0.4);
pathView->setDragMargin(20.0);
- QCOMPARE(pathView->snapPosition(), 0.4);
+ QCOMPARE(pathView->preferredHighlightBegin(), 0.4);
+ QCOMPARE(pathView->preferredHighlightEnd(), 0.4);
QCOMPARE(pathView->dragMargin(), 20.0);
QCOMPARE(snapPositionSpy.count(), 1);
QCOMPARE(dragMarginSpy.count(), 1);
- pathView->setSnapPosition(0.4);
+ pathView->setPreferredHighlightBegin(0.4);
+ pathView->setPreferredHighlightEnd(0.4);
pathView->setDragMargin(20.0);
QCOMPARE(snapPositionSpy.count(), 1);
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/gridtest.qml b/tests/auto/declarative/qdeclarativepositioners/data/gridtest.qml
index 830df6a..1d6f44e 100644
--- a/tests/auto/declarative/qdeclarativepositioners/data/gridtest.qml
+++ b/tests/auto/declarative/qdeclarativepositioners/data/gridtest.qml
@@ -4,6 +4,7 @@ Item {
width: 640
height: 480
Grid {
+ objectName: "grid"
columns: 3
Rectangle {
objectName: "one"
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/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/tst_qdeclarativepositioners.cpp b/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp
index 0e1fee2..08eac0a 100644
--- a/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp
+++ b/tests/auto/declarative/qdeclarativepositioners/tst_qdeclarativepositioners.cpp
@@ -65,6 +65,8 @@ private slots:
void test_grid_animated();
void test_propertychanges();
void test_repeater();
+ void test_flow();
+ void test_flow_resize();
private:
QDeclarativeView *createView(const QString &filename);
};
@@ -92,6 +94,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 +119,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 +143,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 +162,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 +194,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 +220,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 +243,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 +262,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);
@@ -262,6 +298,10 @@ 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_spacing()
@@ -289,6 +329,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 +365,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 +388,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);
@@ -441,6 +492,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/tst_qdeclarativeproperty.cpp b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp
index 56166f2..7d51bb6 100644
--- a/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp
+++ b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp
@@ -43,7 +43,6 @@
#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>
@@ -138,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;
@@ -169,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);
@@ -234,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;
@@ -265,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);
@@ -279,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;
@@ -312,11 +311,11 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object()
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);
@@ -333,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;
@@ -364,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);
@@ -378,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;
@@ -411,11 +410,11 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string()
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);
@@ -426,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;
@@ -458,12 +457,12 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string()
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);
@@ -473,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;
@@ -505,12 +504,12 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string()
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);
@@ -526,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;
@@ -557,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);
@@ -571,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;
@@ -604,11 +603,11 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_context()
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);
@@ -625,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;
@@ -656,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);
@@ -670,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;
@@ -703,11 +702,11 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string_context()
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);
@@ -718,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;
@@ -750,12 +749,12 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string_context()
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);
@@ -765,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;
@@ -797,12 +796,12 @@ void tst_qdeclarativeproperty::qmlmetaproperty_object_string_context()
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);
diff --git a/tests/auto/declarative/qdeclarativepropertymap/tst_qdeclarativepropertymap.cpp b/tests/auto/declarative/qdeclarativepropertymap/tst_qdeclarativepropertymap.cpp
index 22c5581..c996a14 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);
@@ -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.6\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/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/tst_qdeclarativeqt.cpp b/tests/auto/declarative/qdeclarativeqt/tst_qdeclarativeqt.cpp
index 4987557..48d5235 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>
@@ -261,10 +262,31 @@ void tst_qdeclarativeqt::tint()
delete object;
}
+class MyUrlHandler : public QObject
+{
+ Q_OBJECT
+public:
+ MyUrlHandler() : called(0) { }
+ int called;
+ QUrl last;
+
+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()
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/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..eb06344
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativesmoothedanimation/data/smoothedanimationBehavior.qml
@@ -0,0 +1,23 @@
+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;
+ Behavior on x { SmoothedAnimation { objectName: "easeX"; velocity: 400 } }
+ Behavior on y { SmoothedAnimation { 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/qdeclarativeeasefollow/qdeclarativeeasefollow.pro b/tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro
index 71df4f4..b41b23a 100644
--- a/tests/auto/declarative/qdeclarativeeasefollow/qdeclarativeeasefollow.pro
+++ b/tests/auto/declarative/qdeclarativesmoothedanimation/qdeclarativesmoothedanimation.pro
@@ -2,7 +2,7 @@ load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative gui
macx:CONFIG -= app_bundle
-SOURCES += tst_qdeclarativeeasefollow.cpp
+SOURCES += tst_qdeclarativesmoothedanimation.cpp
# Define SRCDIR equal to test's source directory
DEFINES += SRCDIR=\\\"$$PWD\\\"
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/qdeclarativestates/data/anchorChanges1.qml b/tests/auto/declarative/qdeclarativestates/data/anchorChanges1.qml
index 7dce889..5443e54 100644
--- a/tests/auto/declarative/qdeclarativestates/data/anchorChanges1.qml
+++ b/tests/auto/declarative/qdeclarativestates/data/anchorChanges1.qml
@@ -16,8 +16,8 @@ Rectangle {
AnchorChanges {
id: ancCh
target: myRect;
- reset: "left"
- right: container.right
+ 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/tst_qdeclarativestates.cpp b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
index 91883c9..2ab21a4 100644
--- a/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
+++ b/tests/auto/declarative/qdeclarativestates/tst_qdeclarativestates.cpp
@@ -564,10 +564,10 @@ void tst_qdeclarativestates::anchorChanges()
rect->setState("right");
QCOMPARE(innerRect->x(), qreal(150));
- QCOMPARE(aChanges->reset(), QString("left"));
+ 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->right().item, rect->right().item);
- QCOMPARE(aChanges->right().anchorLine, rect->right().anchorLine);
+ QCOMPARE(aChanges->anchors()->right().item, rect->right().item);
+ QCOMPARE(aChanges->anchors()->right().anchorLine, rect->right().anchorLine);
rect->setState("");
QCOMPARE(innerRect->x(), qreal(5));
@@ -623,14 +623,14 @@ void tst_qdeclarativestates::anchorChanges3()
rect->setState("reanchored");
QCOMPARE(aChanges->object(), qobject_cast<QDeclarativeItem*>(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->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));
@@ -673,10 +673,10 @@ void tst_qdeclarativestates::anchorChanges4()
rect->setState("reanchored");
QCOMPARE(aChanges->object(), qobject_cast<QDeclarativeItem*>(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->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;
}
@@ -708,10 +708,10 @@ void tst_qdeclarativestates::anchorChanges5()
rect->setState("reanchored");
QCOMPARE(aChanges->object(), qobject_cast<QDeclarativeItem*>(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->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;
}
diff --git a/tests/auto/declarative/qdeclarativetextinput/data/validators.qml b/tests/auto/declarative/qdeclarativetextinput/data/validators.qml
index 0c81548..531a232 100644
--- a/tests/auto/declarative/qdeclarativetextinput/data/validators.qml
+++ b/tests/auto/declarative/qdeclarativetextinput/data/validators.qml
@@ -9,14 +9,13 @@ Item {
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/tst_qdeclarativetextinput.cpp b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
index febcec3..b6f55dd 100644
--- a/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
+++ b/tests/auto/declarative/qdeclarativetextinput/tst_qdeclarativetextinput.cpp
@@ -463,7 +463,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);
@@ -524,7 +523,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());
diff --git a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp
index a5cb16f..4e254eb 100644
--- a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp
+++ b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp
@@ -432,7 +432,6 @@ void tst_qdeclarativevaluetypes::autoBindingRemoval()
object->setProperty("value", QVariant(92));
- //QEXPECT_FAIL("", "QT-2920", Continue);
QCOMPARE(object->rect().x(), 42);
delete object;
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/tst_qdeclarativexmllistmodel.cpp b/tests/auto/declarative/qdeclarativexmllistmodel/tst_qdeclarativexmllistmodel.cpp
index 81cc922..74da79e 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,6 +76,11 @@ 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();
@@ -181,7 +193,6 @@ void tst_qdeclarativexmllistmodel::attributes()
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 = model->data(2, roles);
@@ -247,6 +258,113 @@ void tst_qdeclarativexmllistmodel::uniqueRoleNames()
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);
+ QTRY_COMPARE(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
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/visual/ListView/basic3.qml b/tests/auto/declarative/qmlvisual/ListView/basic3.qml
index 05ac358..2d68c0a 100644
--- a/tests/auto/declarative/visual/ListView/basic3.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/basic3.qml
@@ -5,7 +5,7 @@ Rectangle {
width: 200
height: 300
id: page
- Listmodel {
+ ListModel {
id: model
ListElement {
name: "January"
diff --git a/tests/auto/declarative/visual/ListView/basic4.qml b/tests/auto/declarative/qmlvisual/ListView/basic4.qml
index 3628bd3..7c68df1 100644
--- a/tests/auto/declarative/visual/ListView/basic4.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/basic4.qml
@@ -5,7 +5,7 @@ Rectangle {
width: 200
height: 300
id: page
- Listmodel {
+ ListModel {
id: model
ListElement {
name: "January"
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.1.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.2.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.3.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.4.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.5.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.5.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/itemlist.6.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.6.png
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.1.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.10.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.10.png
index dcfca3f..dcfca3f 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.10.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.10.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.11.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.11.png
index 7cc4047..7cc4047 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.11.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.11.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.12.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.12.png
index a97f4ad..a97f4ad 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.12.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.12.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.13.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.13.png
index 7a8c6bd..7a8c6bd 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.13.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.13.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.14.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.14.png
index ae47356..ae47356 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.14.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.14.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.15.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.15.png
index b3a7260..b3a7260 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.15.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.15.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.16.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.16.png
index 581e824..581e824 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.16.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.16.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.17.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.17.png
index 581e824..581e824 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.17.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.17.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.18.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.18.png
index 581e824..581e824 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.18.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.18.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.19.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.19.png
index 581e824..581e824 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.19.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.19.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.2.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.3.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.4.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.5.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.5.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.6.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.6.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.7.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.7.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.8.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.8.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.9.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.9.png
index 581e824..581e824 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.9.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.9.png
Binary files differ
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
index a1947ca..a1947ca 100644
--- a/tests/auto/declarative/visual/ListView/data/itemlist.0.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.1.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.png
index d27b7fa..d27b7fa 100644
--- a/tests/auto/declarative/visual/ListView/data/itemlist.1.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.2.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.png
index fdab8c6..fdab8c6 100644
--- a/tests/auto/declarative/visual/ListView/data/itemlist.2.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.3.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.png
index dc321a8..dc321a8 100644
--- a/tests/auto/declarative/visual/ListView/data/itemlist.3.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.4.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.png
index fdab8c6..fdab8c6 100644
--- a/tests/auto/declarative/visual/ListView/data/itemlist.4.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.5.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.png
index 15b51cb..15b51cb 100644
--- a/tests/auto/declarative/visual/ListView/data/itemlist.5.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/itemlist.6.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.png
index a1947ca..a1947ca 100644
--- a/tests/auto/declarative/visual/ListView/data/itemlist.6.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.png
Binary files differ
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
index 581e824..581e824 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.0.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.1.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.1.png
index 581e824..581e824 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.1.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.10.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.10.png
index dcfca3f..dcfca3f 100644
--- a/tests/auto/declarative/visual/ListView/data-MAC/listview.10.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.10.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.11.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.11.png
index 7cc4047..7cc4047 100644
--- a/tests/auto/declarative/visual/ListView/data-MAC/listview.11.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.11.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.12.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.12.png
index a97f4ad..a97f4ad 100644
--- a/tests/auto/declarative/visual/ListView/data-MAC/listview.12.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.12.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.13.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.13.png
index 7a8c6bd..7a8c6bd 100644
--- a/tests/auto/declarative/visual/ListView/data-MAC/listview.13.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.13.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.14.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.14.png
index ae47356..ae47356 100644
--- a/tests/auto/declarative/visual/ListView/data-MAC/listview.14.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.14.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.15.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.15.png
index b3a7260..b3a7260 100644
--- a/tests/auto/declarative/visual/ListView/data-MAC/listview.15.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.15.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.16.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.16.png
index 581e824..581e824 100644
--- a/tests/auto/declarative/visual/ListView/data-MAC/listview.16.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.16.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.17.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.17.png
index 581e824..581e824 100644
--- a/tests/auto/declarative/visual/ListView/data-MAC/listview.17.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.17.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.18.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.18.png
index 581e824..581e824 100644
--- a/tests/auto/declarative/visual/ListView/data-MAC/listview.18.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.18.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.19.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.19.png
index 581e824..581e824 100644
--- a/tests/auto/declarative/visual/ListView/data-MAC/listview.19.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.19.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.2.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.2.png
index 579c68c..579c68c 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.2.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.3.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.3.png
index b3a7260..b3a7260 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.3.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.4.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.4.png
index 19758b0..19758b0 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.4.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.5.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png
index 581e824..581e824 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.5.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.6.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png
index 82cac48..82cac48 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.6.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.7.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.7.png
index 9277a82..9277a82 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.7.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.7.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data/listview.8.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.8.png
index 8c36da7..8c36da7 100644
--- a/tests/auto/declarative/visual/ListView/data/listview.8.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.8.png
Binary files differ
diff --git a/tests/auto/declarative/visual/ListView/data-MAC/listview.9.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.9.png
index 581e824..581e824 100644
--- a/tests/auto/declarative/visual/ListView/data-MAC/listview.9.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.9.png
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.1.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.10.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.10.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.11.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.11.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.12.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.12.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.13.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.13.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.14.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.14.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.15.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.15.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.16.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.16.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.17.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.17.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.18.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.18.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.19.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.19.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.2.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.20.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.20.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.21.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.21.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.22.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.22.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.3.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.4.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.5.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.5.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.6.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.6.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.7.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.7.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.8.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.8.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/Package_Views/data/packageviews.9.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.9.png
index 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
Binary files differ
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/visual/Package_Views/packageviews.qml b/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml
index cf3f9f7..f6c033f 100644
--- a/tests/auto/declarative/visual/Package_Views/packageviews.qml
+++ b/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml
@@ -6,9 +6,9 @@ Rectangle {
height: 200
color: "black"
- VisualDatamodel {
+ VisualDataModel {
id: model
- model: Listmodel {
+ model: ListModel {
ListElement { itemColor: "red" }
ListElement { itemColor: "green" }
ListElement { itemColor: "blue" }
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.1.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.2.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.3.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.4.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.5.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.5.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/bindinganimation/data/bindinganimation.6.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.6.png
index 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
Binary files differ
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.qml
index f205ae8..f205ae8 100644
--- a/tests/auto/declarative/visual/animation/colorAnimation/colorAnimation.qml
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/colorAnimation.qml
diff --git a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.0.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.0.png
index f4a6cfd..e6ea16d 100644
--- a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.1.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.1.png
new file mode 100644
index 0000000..b75ba61
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.2.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.2.png
index f4a6cfd..4320f6f 100644
--- a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.2.png
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.qml b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.qml
index 900bf5c..4d0959a 100644
--- a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.qml
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation.qml
@@ -170,91 +170,91 @@ VisualTest {
}
Frame {
msec: 608
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "acc736435c9f84aa82941ba561bc5dbc"
}
Frame {
msec: 624
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "e5bda0daf98288ce18db6ce06eda3ba0"
}
Frame {
msec: 640
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "d35008f75b8c992f80fb16ba7203649d"
}
Frame {
msec: 656
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "14f43e0784ddf42ea8550db88c501bf1"
}
Frame {
msec: 672
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "02276e158b5391480b1bdeaadf1fb903"
}
Frame {
msec: 688
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "35d9513eb97a2c482b7cd197de910934"
}
Frame {
msec: 704
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "faf0fd681e60bb2489099f5df772b6cd"
}
Frame {
msec: 720
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "a863d3e346f94785a3a392fdc91526eb"
}
Frame {
msec: 736
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "fdf328d3f6eb8410da59a91345e41a44"
}
Frame {
msec: 752
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "83514a3b10d5be8f6c3b128d0f3e0b1c"
}
Frame {
msec: 768
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "ead0eae76cd00189075964671effbaea"
}
Frame {
msec: 784
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "24d2457fcd51490fda23071bf9929d12"
}
Frame {
msec: 800
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "1478683446cf543dacbe31d0b76a98a6"
}
Frame {
msec: 816
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "99f7da1f31fe920f6c02add4042ae925"
}
Frame {
msec: 832
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "22def892006cf66667770b0f17baf6c0"
}
Frame {
msec: 848
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "6a36d5a77099bfd58baf285478ff04e4"
}
Frame {
msec: 864
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "6258150666b59b20ab476724c07fc20c"
}
Frame {
msec: 880
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "f1636315bc950a6dd400d9c7ed263b88"
}
Frame {
msec: 896
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "18447ea8dc2e8da956788e5b3cf3790a"
}
Frame {
msec: 912
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "1d2a6e65997a73e9e670356c8e8b63b2"
}
Frame {
msec: 928
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "bed0242c0f9ef229d1392835286d5782"
}
Frame {
msec: 944
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "88923c190e9e5beadef8a409c06df9d6"
}
Frame {
msec: 960
@@ -262,239 +262,239 @@ VisualTest {
}
Frame {
msec: 976
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "85b1821cc50f2a9f3ed6944f792b7a2f"
}
Frame {
msec: 992
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "395195716d76bc0be7b2033ed37a7a1c"
}
Frame {
msec: 1008
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "243dbffcf416926242bbcb7348974c4c"
}
Frame {
msec: 1024
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "a755068679616d8ac65c2aa7431f2a19"
}
Frame {
msec: 1040
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "e8249b35a47eb492cbdf2d91cc8426f0"
}
Frame {
msec: 1056
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "15f3da1c0e6f0779b96859d51171dd27"
}
Frame {
msec: 1072
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "258c0c756aac3de743b43051f2aace6b"
}
Frame {
msec: 1088
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "a58b9fdf301d72b2cc5c93934cc8927b"
}
Frame {
msec: 1104
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "a9181d30870d472521f8904818ce520f"
}
Frame {
msec: 1120
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "7f9e94069ccf3897c26a71bd7becd903"
}
Frame {
msec: 1136
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "bdf305c2f46cdb86dbf57b1e0cc5a65b"
}
Frame {
msec: 1152
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "fe5b6865d7e4fc7d1d42c1e74f8666f7"
}
Frame {
msec: 1168
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "734f0de45a6e34c9eab7ef606196f96a"
}
Frame {
msec: 1184
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "02a361c4534fdf7f286dc3e6dc23275c"
}
Frame {
msec: 1200
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "e649155ad69999c14b92f6561e4d1185"
}
Frame {
msec: 1216
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "01af177084fab755d622973f64b92018"
}
Frame {
msec: 1232
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "097cc4a082dfab995d213a3a73883c97"
}
Frame {
msec: 1248
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "d7b4239a3280b1eb8e885e3f422df8e9"
}
Frame {
msec: 1264
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "59893977994e34e83f91e7ce3ad65d6d"
}
Frame {
msec: 1280
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "b68e3fbb5cdcd6bd96df7dec558db42b"
}
Frame {
msec: 1296
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "94ad0580648f36a1e18a9ea7e249b04d"
}
Frame {
msec: 1312
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "750a4c01d2f5806a89a1c6cc6a9b9a68"
}
Frame {
msec: 1328
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "4f109f50f388f1bfa4bc6b03b3e6e514"
}
Frame {
msec: 1344
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "c6168d5cf27a533e8ee636637667be47"
}
Frame {
msec: 1360
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "f8120547bed987aa34c00da5a01a4d1e"
}
Frame {
msec: 1376
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "cbff526136fa2c128c8b898fbbef9e5c"
}
Frame {
msec: 1392
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "f29e52398fab1a239a63df4c32f2fc69"
}
Frame {
msec: 1408
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "7178bfe86fd2fd513218b33760460f8d"
}
Frame {
msec: 1424
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "ca83285bc8ac633403896fe976896eb0"
}
Frame {
msec: 1440
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "96ba486c09cc69d5aa38c46c00df1181"
}
Frame {
msec: 1456
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "b88eab335842787869f4a14824c19dd8"
}
Frame {
msec: 1472
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "065aa59012729e1e1a246a2083142690"
}
Frame {
msec: 1488
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "dd0e98c8398861002c5f178c5f9f612d"
}
Frame {
msec: 1504
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "04192c2b545948048eccf4d81bbde198"
}
Frame {
msec: 1520
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "bb7502c7208281ef9fd41714ab88a1a8"
}
Frame {
msec: 1536
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "5397195471890d08b703dca101e5bc7c"
}
Frame {
msec: 1552
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "4c678cdbebb2ffd2cbf012ca77800cde"
}
Frame {
msec: 1568
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "0d7a34ecd0c7f52b2c015037bf1902c6"
}
Frame {
msec: 1584
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "fd9d5048be749ac4369fda2d018b43ae"
}
Frame {
msec: 1600
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "93ee03795cd57ae6f7fe3a020b039ad4"
}
Frame {
msec: 1616
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "5e1118963f219c39761ca7fbf564a9ca"
}
Frame {
msec: 1632
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "8f40038741903150136170503649d941"
}
Frame {
msec: 1648
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "b087b7d0aa6224821f8e18718ff5e77d"
}
Frame {
msec: 1664
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "aa46b04a3c67dc772265ed2901955565"
}
Frame {
msec: 1680
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "ac024bf2aeb4becdf31a09fe0a6db8f3"
}
Frame {
msec: 1696
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "13745a174e4d06e2108a5bf125ba50cc"
}
Frame {
msec: 1712
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "bd972f0d8e230eca0b3fea1b8c960c08"
}
Frame {
msec: 1728
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "cbdbec802a58e7ced0cf45b3ab0bc0ba"
}
Frame {
msec: 1744
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "5128584c50305c7d218b81b8367fa3d5"
}
Frame {
msec: 1760
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "a71461d3593f3685620668916de870bd"
}
Frame {
msec: 1776
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "74ebac8f32cf044b58d9883dbcd9a722"
}
Frame {
msec: 1792
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "fedc5b638f339b90fe59b478721e65b7"
}
Frame {
msec: 1808
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "8593a81be812edf54ec94da8ae9c1314"
}
Frame {
msec: 1824
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "4e9b083075bc5e9287a8abc982778b56"
}
Frame {
msec: 1840
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "1d6f02aa99afa47d77fc49ab894b365a"
}
Frame {
msec: 1856
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "a204feec783b3b05de4c209c21745826"
}
Frame {
msec: 1872
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "665a2a8ff00b9663157802767f504754"
}
Frame {
msec: 1888
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "624fb09ebe60cb87d767faf8d2420b1e"
}
Frame {
msec: 1904
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "e5af0cdc33f3275a25abb09e9165f310"
}
Frame {
msec: 1920
@@ -502,171 +502,171 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "e7aa6374c73832e57ceb2427a1e258aa"
}
Frame {
msec: 1952
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "b5abd0dff1ab076faac7cc226e83f5d0"
}
Frame {
msec: 1968
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "b759acc35bccff8efc2e6fe276ddc0f7"
}
Frame {
msec: 1984
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "ce52e18c1f7732768779863b45314ff5"
}
Frame {
msec: 2000
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "99d30652559dd6931e0c95543eeaa149"
}
Frame {
msec: 2016
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "ffbd9a00e05e085b89296d19d5caec57"
}
Frame {
msec: 2032
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "9c9d658b9c25602816b8066bf19105db"
}
Frame {
msec: 2048
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "2b7fd058e6601e22a30bb7106b1c683b"
}
Frame {
msec: 2064
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "f4c7e26b19ee0a3e7c9688685eb7bd05"
}
Frame {
msec: 2080
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "0dc6d593bceff56b7f81f2a49d37fefb"
}
Frame {
msec: 2096
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "9bfd7ad5091ccbdde43c593e133a7b10"
}
Frame {
msec: 2112
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "2703b617937914a90ea42ebf249d79ee"
}
Frame {
msec: 2128
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "b77e2983138254016c4cca53100f46fa"
}
Frame {
msec: 2144
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "60c4dd24187d1281081479e586f02b37"
}
Frame {
msec: 2160
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "62f2511abd99ef1231c9fa4b91d4abfe"
}
Frame {
msec: 2176
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "e309b3353fd174e883d309571caddc98"
}
Frame {
msec: 2192
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "1e2d6a134c7b12dde551b148ef4f088c"
}
Frame {
msec: 2208
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "e5dc5450604a491cc24a0dcf5c278b58"
}
Frame {
msec: 2224
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "c8dae97c10e1962c1e6a51ab3ab8579e"
}
Frame {
msec: 2240
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "4e1b7e06f55fb084080689b474f1fe1d"
}
Frame {
msec: 2256
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "b4639c907fa937bf15fac62421170cd8"
}
Frame {
msec: 2272
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "c250208a0caeb5f6cb4d3aac3d7d350b"
}
Frame {
msec: 2288
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "a73351eabecf0d71149efe31f197413e"
}
Frame {
msec: 2304
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "479425f1b7aff79e4dfb7fca534af018"
}
Frame {
msec: 2320
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "046d0f0040a52d1f26ba9f7c5de06ef4"
}
Frame {
msec: 2336
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "655778bf13c6080903150b0eb43a7edc"
}
Frame {
msec: 2352
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "72da0bbe81514870655fdd3354adac60"
}
Frame {
msec: 2368
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "defe0bdf675c65fff55aaaced1e4dae7"
}
Frame {
msec: 2384
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "c988628b6c3d3780e9a865c7694926cd"
}
Frame {
msec: 2400
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "5ab17563655231089edd986ff13d6012"
}
Frame {
msec: 2416
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "c1adff1d2e5800ed466d1691d3b17382"
}
Frame {
msec: 2432
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "70129ba01fbb19592b9dc0d0a3b3e7df"
}
Frame {
msec: 2448
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "0000829ef7ed908bf430d42904d59cc2"
}
Frame {
msec: 2464
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "843d2927f50ab87b4a86b7a6aaeed91f"
}
Frame {
msec: 2480
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "da86d21756025e7de8050586d5e2a1f8"
}
Frame {
msec: 2496
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "48dd1bd6580133b0793fee327ea4f1e6"
}
Frame {
msec: 2512
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "f0618193dcd0ba2837249515a1898b1c"
}
Frame {
msec: 2528
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "a530184e57251065286c0cbba7301e9c"
}
Frame {
msec: 2544
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "64a1d7203973d65dd342793007a61c58"
}
Frame {
msec: 2560
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "5b830dfc6ba442772de87d75d5a578de"
}
Frame {
msec: 2576
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "5563b056b0409b65f60dd16dd0dd890e"
}
Frame {
msec: 2592
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ hash: "b8bcf9ad2ca8720c11563a23d8280804"
}
Frame {
msec: 2608
@@ -931,7 +931,7 @@ VisualTest {
Key {
type: 6
key: 16777249
- modifiers: 0
+ modifiers: 67108864
text: ""
autorep: false
count: 1
diff --git a/tests/auto/declarative/visual/animation/easing/data/easing.0.png b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.0.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/easing/data/easing.1.png b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/easing/data/easing.2.png b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/easing/data/easing.3.png b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.3.png
index 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
Binary files differ
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/webview/zooming/qtlogo.png b/tests/auto/declarative/qmlvisual/animation/easing/pics/qtlogo.png
index 399bd0b..399bd0b 100644
--- a/tests/auto/declarative/visual/webview/zooming/qtlogo.png
+++ b/tests/auto/declarative/qmlvisual/animation/easing/pics/qtlogo.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/loop/data/loop.0.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.0.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/loop/data/loop.1.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/loop/data/loop.2.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/loop/data/loop.3.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/loop/data/loop.4.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/loop/data/loop.5.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.5.png
index 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
Binary files differ
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/visual/animation/loop/loop.qml b/tests/auto/declarative/qmlvisual/animation/loop/loop.qml
index 927e103..5389b26 100644
--- a/tests/auto/declarative/visual/animation/loop/loop.qml
+++ b/tests/auto/declarative/qmlvisual/animation/loop/loop.qml
@@ -13,7 +13,7 @@ Rectangle {
to 100, jumps to 200, animates smoothly to 400, animates smoothly
back to 100, jumps to 200, and so on.
*/
- x: SequentialAnimation {
+ 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.0.png b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.0.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.1.png b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.2.png b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.qml b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.qml
index 5f5b8fc..5f5b8fc 100644
--- a/tests/auto/declarative/visual/animation/parallelAnimation/data/parallelAnimation.qml
+++ b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.qml
diff --git a/tests/auto/declarative/visual/animation/parallelAnimation/parallelAnimation.qml b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/parallelAnimation.qml
index 1980b91..1980b91 100644
--- a/tests/auto/declarative/visual/animation/parallelAnimation/parallelAnimation.qml
+++ b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/parallelAnimation.qml
diff --git a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.qml b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.qml
index 5718560..5718560 100644
--- a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.qml
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.qml
diff --git a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.0.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.0.png
index 7d41abc..7d41abc 100644
--- a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.1.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.1.png
index 16b95ab..16b95ab 100644
--- a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.1.png
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.2.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.2.png
index 7d41abc..7d41abc 100644
--- a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.2.png
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.3.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.3.png
index 800bf12..800bf12 100644
--- a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.3.png
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.4.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.4.png
index d0155bb..d0155bb 100644
--- a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.4.png
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.5.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.5.png
index 7d41abc..7d41abc 100644
--- a/tests/auto/declarative/visual/animation/parentAnimation/data/parentAnimation.5.png
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/parentAnimation/parentAnimation.qml b/tests/auto/declarative/qmlvisual/animation/parentAnimation/parentAnimation-visual.qml
index 5db2cc6..8d0b375 100644
--- a/tests/auto/declarative/visual/animation/parentAnimation/parentAnimation.qml
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/parentAnimation-visual.qml
@@ -1,4 +1,14 @@
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;
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.1.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.2.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.3.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.4.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/data/pauseAnimation.5.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation.5.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/pauseAnimation.qml b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/pauseAnimation-visual.qml
index 4562aa7..8830170 100644
--- a/tests/auto/declarative/visual/animation/pauseAnimation/pauseAnimation.qml
+++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/pauseAnimation-visual.qml
@@ -1,5 +1,12 @@
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
@@ -9,15 +16,15 @@ Rectangle {
id: img
source: "pics/qtlogo.png"
x: 60-width/2
- y: 200-height
- y: SequentialAnimation {
+ y: 100
+ SequentialAnimation on y {
loops: Animation.Infinite
NumberAnimation {
to: 0; duration: 500
easing.type: "InOutQuad"
}
NumberAnimation {
- to: 200-img.height
+ to: 100
easing.type: "OutBounce"
duration: 2000
}
diff --git a/tests/auto/declarative/visual/webview/settings/qtlogo.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/pics/qtlogo.png
index 399bd0b..399bd0b 100644
--- a/tests/auto/declarative/visual/webview/settings/qtlogo.png
+++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/pics/qtlogo.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.0.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.0.png
index 64d6b06..64d6b06 100644
--- a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.1.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.1.png
index f7fce15..f7fce15 100644
--- a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.1.png
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.2.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.2.png
index 3080df5..3080df5 100644
--- a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.2.png
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.qml b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.qml
index 7c8c233..7c8c233 100644
--- a/tests/auto/declarative/visual/animation/propertyAction/data/propertyAction.qml
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction.qml
diff --git a/tests/auto/declarative/visual/animation/propertyAction/propertyAction.qml b/tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction.qml
index e18e770..e18e770 100644
--- a/tests/auto/declarative/visual/animation/propertyAction/propertyAction.qml
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction.qml
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.0.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.0.png
index 454f6c1..454f6c1 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.1.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.1.png
index 9dde537..9dde537 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.1.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.2.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.2.png
index 454f6c1..454f6c1 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.2.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.3.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.3.png
index 454f6c1..454f6c1 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.3.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.4.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.4.png
index 043b487..043b487 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.4.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.5.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.5.png
index 79c791d..79c791d 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.5.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.6.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.6.png
index 454f6c1..454f6c1 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.6.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.6.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.7.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.7.png
index 454f6c1..454f6c1 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.7.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.7.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.8.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.8.png
index a7d6674..a7d6674 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.8.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.8.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.qml b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.qml
index a130b75..a130b75 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.qml
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.qml
diff --git a/tests/auto/declarative/visual/animation/reanchor/reanchor.qml b/tests/auto/declarative/qmlvisual/animation/reanchor/reanchor.qml
index e41a254..1d0495e 100644
--- a/tests/auto/declarative/visual/animation/reanchor/reanchor.qml
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/reanchor.qml
@@ -36,18 +36,19 @@ 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
}
}, State {
name: "reanchored2"
AnchorChanges {
target: myRect;
- reset: "left, right"
- top: topGuideline2.top
- bottom: bottomGuideline2.bottom
+ anchors.left: undefined
+ anchors.right: undefined
+ anchors.top: topGuideline2.top
+ anchors.bottom: bottomGuideline2.bottom
}
}]
diff --git a/tests/auto/declarative/visual/animation/scriptAction/data/scriptAction.0.png b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.0.png
index 64d6b06..64d6b06 100644
--- a/tests/auto/declarative/visual/animation/scriptAction/data/scriptAction.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/scriptAction/data/scriptAction.1.png b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/scriptAction/data/scriptAction.qml b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.qml
index 01da490..01da490 100644
--- a/tests/auto/declarative/visual/animation/scriptAction/data/scriptAction.qml
+++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.qml
diff --git a/tests/auto/declarative/visual/animation/scriptAction/scriptAction.qml b/tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction.qml
index fc9ccc8..fc9ccc8 100644
--- a/tests/auto/declarative/visual/animation/scriptAction/scriptAction.qml
+++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction.qml
diff --git a/tests/auto/declarative/visual/fillmode/data/fillmode.0.png b/tests/auto/declarative/qmlvisual/fillmode/data/fillmode.0.png
index 9c9ceae..9c9ceae 100644
--- a/tests/auto/declarative/visual/fillmode/data/fillmode.0.png
+++ b/tests/auto/declarative/qmlvisual/fillmode/data/fillmode.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/fillmode/data/fillmode.qml b/tests/auto/declarative/qmlvisual/fillmode/data/fillmode.qml
index 7ac6f51..7ac6f51 100644
--- a/tests/auto/declarative/visual/fillmode/data/fillmode.qml
+++ b/tests/auto/declarative/qmlvisual/fillmode/data/fillmode.qml
diff --git a/tests/auto/declarative/visual/fillmode/face.png b/tests/auto/declarative/qmlvisual/fillmode/face.png
index 9623b1a..9623b1a 100644
--- a/tests/auto/declarative/visual/fillmode/face.png
+++ b/tests/auto/declarative/qmlvisual/fillmode/face.png
Binary files differ
diff --git a/tests/auto/declarative/visual/fillmode/fillmode.qml b/tests/auto/declarative/qmlvisual/fillmode/fillmode.qml
index 8450bf2..8450bf2 100644
--- a/tests/auto/declarative/visual/fillmode/fillmode.qml
+++ b/tests/auto/declarative/qmlvisual/fillmode/fillmode.qml
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.0.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.5.png
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test2.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.1.png
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.5.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.6.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.6.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.7.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.7.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.8.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.8.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-MAC/test3.9.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.9.png
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.5.png
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test2.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.1.png
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.5.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.6.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.6.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.7.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.7.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.8.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.8.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data-X11/test3.9.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.9.png
index 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
Binary files differ
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
index 67b99e0..67b99e0 100644
--- a/tests/auto/declarative/visual/focusscope/data/test.0.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test.1.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.1.png
index 67b99e0..67b99e0 100644
--- a/tests/auto/declarative/visual/focusscope/data/test.1.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test.2.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.2.png
index 69f0366..69f0366 100644
--- a/tests/auto/declarative/visual/focusscope/data/test.2.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test.3.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.3.png
index afe0bd9..afe0bd9 100644
--- a/tests/auto/declarative/visual/focusscope/data/test.3.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test.4.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.4.png
index afe0bd9..afe0bd9 100644
--- a/tests/auto/declarative/visual/focusscope/data/test.4.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test.5.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.5.png
index afe0bd9..afe0bd9 100644
--- a/tests/auto/declarative/visual/focusscope/data/test.5.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.5.png
Binary files differ
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
index 555a968..555a968 100644
--- a/tests/auto/declarative/visual/focusscope/data/test2.0.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test2.1.png b/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png
index 555a968..555a968 100644
--- a/tests/auto/declarative/visual/focusscope/data/test2.1.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png
Binary files differ
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
index 374acf5..374acf5 100644
--- a/tests/auto/declarative/visual/focusscope/data/test3.0.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test3.1.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.1.png
index b75cb10..b75cb10 100644
--- a/tests/auto/declarative/visual/focusscope/data/test3.1.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test3.2.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.2.png
index 9b2f919..9b2f919 100644
--- a/tests/auto/declarative/visual/focusscope/data/test3.2.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test3.3.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.3.png
index bf63032..bf63032 100644
--- a/tests/auto/declarative/visual/focusscope/data/test3.3.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test3.4.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.4.png
index 6981a06..6981a06 100644
--- a/tests/auto/declarative/visual/focusscope/data/test3.4.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test3.5.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.5.png
index 5856325..5856325 100644
--- a/tests/auto/declarative/visual/focusscope/data/test3.5.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test3.6.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.6.png
index 9b2f919..9b2f919 100644
--- a/tests/auto/declarative/visual/focusscope/data/test3.6.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.6.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test3.7.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.7.png
index b75cb10..b75cb10 100644
--- a/tests/auto/declarative/visual/focusscope/data/test3.7.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.7.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test3.8.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.8.png
index 374acf5..374acf5 100644
--- a/tests/auto/declarative/visual/focusscope/data/test3.8.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.8.png
Binary files differ
diff --git a/tests/auto/declarative/visual/focusscope/data/test3.9.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.9.png
index 11a08bd..11a08bd 100644
--- a/tests/auto/declarative/visual/focusscope/data/test3.9.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.9.png
Binary files differ
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/visual/focusscope/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/test3.qml
index 855bdc5..a8bb523 100644
--- a/tests/auto/declarative/visual/focusscope/test3.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/test3.qml
@@ -5,7 +5,7 @@ Rectangle {
width: 800
height: 600
- Listmodel {
+ ListModel {
id: model
ListElement { name: "1" }
ListElement { name: "2" }
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/visual/qdeclarativeborderimage/content/MyBorderImage.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml
index c3006d5..58d03a6 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/content/MyBorderImage.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml
@@ -18,13 +18,13 @@ Item {
BorderImage {
id: image; x: container.width / 2 - width / 2; y: container.height / 2 - height / 2
- width: SequentialAnimation {
+ 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" }
}
- height: SequentialAnimation {
+ 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" }
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/content/bw.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/bw.png
index 486eaae..486eaae 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/content/bw.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/bw.png
Binary files differ
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
index dfb62f3..dfb62f3 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/content/colors.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.0.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png
index 1f960e5..1f960e5 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.5.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.6.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.6.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml
index 043f5e2..043f5e2 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated-smooth.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.png
index 99228f9..99228f9 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.png
index a2dcd00..a2dcd00 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.2.png
index 8a80020..8a80020 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.3.png
index 02b57ef..02b57ef 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.4.png
index df0f6cc..df0f6cc 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.5.png
index 0add64d..0add64d 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.6.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.6.png
index 0886207..0886207 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.6.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.7.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.7.png
index bc1a7b0..bc1a7b0 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/animated.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.7.png
Binary files differ
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
index 80cbd26..80cbd26 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.1.png
index 80cbd26..80cbd26 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.2.png
index 80cbd26..80cbd26 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.3.png
index 80cbd26..80cbd26 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.4.png
index 80cbd26..80cbd26 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.qml
index 16cd5e9..16cd5e9 100644
--- a/tests/auto/declarative/visual/qdeclarativeborderimage/data/borders.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.qml
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.0.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-horizontal.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.3.png
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.10.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.10.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.11.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.11.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.12.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.12.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.13.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.13.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.14.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.14.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.15.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.15.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.16.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.16.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.17.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.17.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.18.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.18.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.19.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.19.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.20.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.20.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.21.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.21.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.22.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.22.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.23.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.23.png
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.5.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.6.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.6.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.7.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.7.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.8.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.8.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflickable/data/flickable-vertical.9.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.9.png
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeflipable/data/test-flipable.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.5.png
index 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
Binary files differ
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
index 6c82777..6c82777 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.1.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.png
index 07b1f7c..07b1f7c 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.2.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.png
index f2f08c0..f2f08c0 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.3.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.png
index 08649f9..08649f9 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.4.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.png
index f9c2f17..f9c2f17 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.5.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.png
index 52ec0bd..52ec0bd 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.6.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.png
index 3fe25be..3fe25be 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.7.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.png
index 4cc12a6..4cc12a6 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.8.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.png
index 2267f23..2267f23 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.9.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.png
index 6c82777..6c82777 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview.9.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.png
Binary files differ
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
index 3021d58..3021d58 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.1.png
index baeb1a6..baeb1a6 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.10.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.10.png
index b0486e5..b0486e5 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.10.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.10.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.2.png
index 2d0c731..2d0c731 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.3.png
index af9ed05..af9ed05 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.4.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.4.png
index 0b0945d..0b0945d 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.5.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.5.png
index 618ae0c..618ae0c 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.6.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.6.png
index fc31262..fc31262 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.6.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.7.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.7.png
index 22291ac..22291ac 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.7.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.8.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.8.png
index 3021d58..3021d58 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.8.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.9.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.9.png
index 2f2f5b9..2f2f5b9 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/data/gridview2.9.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.9.png
Binary files differ
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/visual/qdeclarativegridview/gridview2.qml b/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml
index 81d06cf..d8512eb 100644
--- a/tests/auto/declarative/visual/qdeclarativegridview/gridview2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml
@@ -48,9 +48,12 @@ Rectangle {
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 }
+ 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/visual/qdeclarativemouseregion/data/drag.0.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.0.png
index cf36d60..cf36d60 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.1.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.1.png
index 6069df8..6069df8 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.2.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.2.png
index b8bd5f3..b8bd5f3 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.3.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.3.png
index cf36d60..cf36d60 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.4.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.4.png
index 831d6b4..831d6b4 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.5.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.5.png
index f7079dc..f7079dc 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.6.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.6.png
index a5f4451..a5f4451 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.6.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.7.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.7.png
index e1261d0..e1261d0 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.7.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.8.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.8.png
index 653905e..653905e 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.8.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.qml
index 5a131e9..5a131e9 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/drag.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.qml
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
index c249c21..c249c21 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.1.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.1.png
index a96bf1b..a96bf1b 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.10.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.10.png
index 7420ca7..7420ca7 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.10.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.10.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.11.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.11.png
index 7420ca7..7420ca7 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.11.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.11.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.12.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.12.png
index 7420ca7..7420ca7 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.12.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.12.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.13.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.13.png
index 7420ca7..7420ca7 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.13.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.13.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.14.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.14.png
index 7420ca7..7420ca7 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.14.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.14.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.15.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.15.png
index e797cc9..e797cc9 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.15.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.15.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.16.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.16.png
index 7951309..7951309 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.16.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.16.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.17.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.17.png
index 7951309..7951309 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.17.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.17.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.18.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.18.png
index 7951309..7951309 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.18.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.18.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.19.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.19.png
index 7951309..7951309 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.19.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.19.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.2.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.2.png
index a96bf1b..a96bf1b 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.20.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.20.png
index 7951309..7951309 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.20.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.20.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.21.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.21.png
index 7951309..7951309 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.21.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.21.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.22.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.22.png
index 7951309..7951309 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.22.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.22.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.3.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.3.png
index a96bf1b..a96bf1b 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.4.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.4.png
index 1fe365a..1fe365a 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.5.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.5.png
index 1fe365a..1fe365a 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.6.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.6.png
index 1fe365a..1fe365a 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.6.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.7.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.7.png
index 1fe365a..1fe365a 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.7.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.8.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.8.png
index 7420ca7..7420ca7 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.8.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.9.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.9.png
index 7420ca7..7420ca7 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/data/mouseregion.9.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mouseregion.9.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/drag.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/drag.qml
index dbb2a24..21c46d8 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/drag.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/drag.qml
@@ -1,5 +1,10 @@
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
diff --git a/tests/auto/declarative/visual/qdeclarativemouseregion/mouseregion.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/mousearea-visual.qml
index 3c722d0..3019006 100644
--- a/tests/auto/declarative/visual/qdeclarativemouseregion/mouseregion.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/mousearea-visual.qml
@@ -1,5 +1,16 @@
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
diff --git a/tests/auto/declarative/visual/qdeclarativeparticles/data/particles.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.png
index 7321d95..7321d95 100644
--- a/tests/auto/declarative/visual/qdeclarativeparticles/data/particles.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeparticles/data/particles.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.png
index 49d2a5a..49d2a5a 100644
--- a/tests/auto/declarative/visual/qdeclarativeparticles/data/particles.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeparticles/data/particles.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.png
index 6fe14b7..6fe14b7 100644
--- a/tests/auto/declarative/visual/qdeclarativeparticles/data/particles.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.png
Binary files differ
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/visual/qdeclarativeparticles/particles.qml b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml
index 2d481c9..2d481c9 100644
--- a/tests/auto/declarative/visual/qdeclarativeparticles/particles.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml
diff --git a/tests/auto/declarative/visual/qdeclarativeparticles/star.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/star.png
index defbde5..defbde5 100644
--- a/tests/auto/declarative/visual/qdeclarativeparticles/star.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/star.png
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.1.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.2.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.3.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativepathview/data/test-pathview.4.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.4.png
index 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
Binary files differ
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
index f474afe..f474afe 100644
--- a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.1.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.1.png
index 8b7ae74..8b7ae74 100644
--- a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.2.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.2.png
index 9088bb4..9088bb4 100644
--- a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.3.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.3.png
index 18cd429..18cd429 100644
--- a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.4.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.4.png
index 739afc1..739afc1 100644
--- a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.5.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.5.png
index 93f0682..93f0682 100644
--- a/tests/auto/declarative/visual/qdeclarativepositioners/data/dynamic.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.5.png
Binary files differ
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
index f7018fd..f7018fd 100644
--- a/tests/auto/declarative/visual/qdeclarativepositioners/data/repeater.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/repeater.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativepositioners/data/repeater.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/repeater.qml
index 1eb115d..1eb115d 100644
--- a/tests/auto/declarative/visual/qdeclarativepositioners/data/repeater.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/repeater.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/repeater.qml
index ff60365..ff60365 100644
--- a/tests/auto/declarative/visual/qdeclarativepositioners/repeater.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/repeater.qml
diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.0.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.0.png
index 21b6afb..21b6afb 100644
--- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.1.png
index bb8a02b..bb8a02b 100644
--- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.2.png
index da60237..da60237 100644
--- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.3.png
index 3e943e8..3e943e8 100644
--- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.4.png
index 4fbaf26..4fbaf26 100644
--- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.5.png
index c10d196..c10d196 100644
--- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.6.png
index a672c06..a672c06 100644
--- a/tests/auto/declarative/visual/qdeclarativeeasefollow/data/easefollow.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.6.png
Binary files differ
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/visual/qdeclarativeeasefollow/easefollow.qml b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedanimation.qml
index 99a9973..ee94857 100644
--- a/tests/auto/declarative/visual/qdeclarativeeasefollow/easefollow.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedanimation.qml
@@ -6,7 +6,7 @@ Rectangle {
Rectangle {
id: rect
width: 50; height: 20; y: 30; color: "black"
- x: SequentialAnimation {
+ SequentialAnimation on x {
loops: Animation.Infinite
NumberAnimation { from: 50; to: 700; duration: 2000 }
NumberAnimation { from: 700; to: 50; duration: 2000 }
@@ -15,26 +15,31 @@ Rectangle {
Rectangle {
width: 50; height: 20; y: 60; color: "red"
- x: EaseFollow { source: rect.x; velocity: 400 }
+ x: rect.x
+ Behavior on x { SmoothedAnimation { velocity: 400 } }
}
Rectangle {
width: 50; height: 20; y: 90; color: "yellow"
- x: EaseFollow { source: rect.x; velocity: 300; reversingMode: EaseFollow.Immediate }
+ x: rect.x
+ Behavior on x { SmoothedAnimation { velocity: 300; reversingMode: SmoothedAnimation.Immediate } }
}
Rectangle {
width: 50; height: 20; y: 120; color: "green"
- x: EaseFollow { source: rect.x; reversingMode: EaseFollow.Sync }
+ x: rect.x
+ Behavior on x { SmoothedAnimation { reversingMode: SmoothedAnimation.Sync } }
}
Rectangle {
width: 50; height: 20; y: 150; color: "purple"
- x: EaseFollow { source: rect.x; maximumEasingTime: 200 }
+ x: rect.x
+ Behavior on x { SmoothedAnimation { maximumEasingTime: 200 } }
}
Rectangle {
width: 50; height: 20; y: 180; color: "blue"
- x: EaseFollow { source: rect.x; duration: 300 }
+ x: rect.x
+ Behavior on x { SmoothedAnimation { duration: 300 } }
}
}
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/clock.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml
index 04bbabc..21bbc7f 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/clock.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml
@@ -23,7 +23,7 @@ Rectangle {
transform: Rotation {
id: hourRotation
origin.x: 7.5; origin.y: 73; angle: 0
- angle: SpringFollow {
+ SpringFollow on angle {
spring: 2; damping: 0.2; modulus: 360
source: (clock.hours * 30) + (clock.minutes * 0.5)
}
@@ -37,7 +37,7 @@ Rectangle {
transform: Rotation {
id: minuteRotation
origin.x: 6.5; origin.y: 83; angle: 0
- angle: SpringFollow {
+ SpringFollow on angle {
spring: 2; damping: 0.2; modulus: 360
source: clock.minutes * 6
}
@@ -51,7 +51,7 @@ Rectangle {
transform: Rotation {
id: secondRotation
origin.x: 2.5; origin.y: 80; angle: 0
- angle: SpringFollow {
+ SpringFollow on angle {
spring: 5; damping: 0.25; modulus: 360
source: clock.seconds * 6
}
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/content/background.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/background.png
index a885950..a885950 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/content/background.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/background.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/content/center.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/center.png
index 7fbd802..7fbd802 100755
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/content/center.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/center.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/content/clock.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/clock.png
index 462edac..462edac 100755
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/content/clock.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/clock.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/content/hour.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/hour.png
index f8061a1..f8061a1 100755
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/content/hour.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/hour.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/content/minute.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/minute.png
index 1297ec7..1297ec7 100755
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/content/minute.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/minute.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/content/second.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/second.png
index 4aa9fb5..4aa9fb5 100755
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/content/second.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/second.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.0.png
index baf1d45..baf1d45 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.1.png
index 932f63f..932f63f 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.2.png
index a5cb437..a5cb437 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.3.png
index 62e895c..62e895c 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/clock.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.3.png
Binary files differ
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
index 3f42e75..3f42e75 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.1.png
index d661df6..d661df6 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.10.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.10.png
index e8c96e1..e8c96e1 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.10.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.10.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.2.png
index 35bfa43..35bfa43 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.3.png
index 74141cf..74141cf 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.4.png
index 9544054..9544054 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.5.png
index 4b02c79..4b02c79 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.6.png
index 8ea8345..8ea8345 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.6.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.7.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.7.png
index 76a73e8..76a73e8 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.7.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.8.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.8.png
index 8824940..8824940 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.8.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.9.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.9.png
index f954cc5..f954cc5 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/data/follow.9.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.9.png
Binary files differ
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/visual/qdeclarativespringfollow/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml
index e9c94c7..1659bb7 100644
--- a/tests/auto/declarative/visual/qdeclarativespringfollow/follow.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml
@@ -7,7 +7,7 @@ Rectangle {
id: rect
color: "#00ff00"
y: 200; width: 60; height: 20
- y: SequentialAnimation {
+ SequentialAnimation on y {
loops: Animation.Infinite
NumberAnimation {
to: 20; duration: 500
@@ -26,7 +26,7 @@ Rectangle {
color: "#ff0000"
x: rect.width; width: rect.width; height: 20
y: 200
- y: SpringFollow { source: rect.y; velocity: 200 }
+ SpringFollow on y { source: rect.y; velocity: 200 }
}
// Spring
@@ -34,13 +34,13 @@ 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 }
+ SpringFollow on y { 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
+ SpringFollow on y { source: rect.y; spring: 1.0; damping: 0.2; mass: 3.0 } // "heavier" object
}
// Follow mouse
@@ -52,8 +52,8 @@ Rectangle {
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 }
+ SpringFollow on x { id: f1; source: mouseRegion.mouseX-10; spring: 1.0; damping: 0.05; epsilon: 0.25 }
+ SpringFollow on y { id: f2; source: mouseRegion.mouseY-10; spring: 1.0; damping: 0.05; epsilon: 0.25 }
states: [
State {
name: "following"
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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/visual/qdeclarativetext/elide/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml
index ecd9470..ecd9470 100644
--- a/tests/auto/declarative/visual/qdeclarativetext/elide/elide2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml
diff --git a/tests/auto/declarative/visual/qdeclarativetext/elide/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml
index ab6e1533..ab6e1533 100644
--- a/tests/auto/declarative/visual/qdeclarativetext/elide/multilength.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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/visual/qdeclarativetext/font/plaintext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml
index a3aa929..a3aa929 100644
--- a/tests/auto/declarative/visual/qdeclarativetext/font/plaintext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml
diff --git a/tests/auto/declarative/visual/qdeclarativetext/font/richtext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml
index 35aa232..35aa232 100644
--- a/tests/auto/declarative/visual/qdeclarativetext/font/richtext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml
index 5516fc9..5516fc9 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index ec65f49..ec65f49 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png
index ec65f49..ec65f49 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png
index ec65f49..ec65f49 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png
index ec65f49..ec65f49 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png
index ec65f49..ec65f49 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png
index ec65f49..ec65f49 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png
index ec65f49..ec65f49 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/wrap.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png
Binary files differ
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
index 555996a..555996a 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.png
index b705bad..b705bad 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.png
index 094cd2a..094cd2a 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.png
index 9c519c7..9c519c7 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.png
index 3ec77b5..3ec77b5 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.png
index 579a66e..579a66e 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.png
index 9e5ac90..9e5ac90 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.png
index 9f3acfc..9f3acfc 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.png
index f27518a..f27518a 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data/cursorDelegate.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.png
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data/qt-669.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/qt-669.3.png
index 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
Binary files differ
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
index ec65f49..ec65f49 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.1.png
index ec65f49..ec65f49 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.2.png
index ec65f49..ec65f49 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.3.png
index ec65f49..ec65f49 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.4.png
index ec65f49..ec65f49 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.5.png
index ec65f49..ec65f49 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.6.png
index ec65f49..ec65f49 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/data-X11/wrap.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/wrap.6.png
Binary files differ
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/visual/qdeclarativetextedit/wrap.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml
index f9fe025..f9fe025 100644
--- a/tests/auto/declarative/visual/qdeclarativetextedit/wrap.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml
index 199f71f..09f16ab 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml
@@ -3,17 +3,17 @@ import Qt 4.6
resources: [
Component { id: cursorA
Item { id: cPage;
- x: Behavior { NumberAnimation { } }
- y: Behavior { NumberAnimation { } }
- height: Behavior { NumberAnimation { duration: 200 } }
+ 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
- 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"}
- }
+ 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;
}
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.6.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.7.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-MAC/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.8.png
index 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
Binary files differ
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/visual/qdeclarativetextinput/data/echoMode.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png
index 2b45a06..2b45a06 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png
index 1f5bae0..1f5bae0 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png
index cb2b5a4..cb2b5a4 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png
index aa24805..aa24805 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.4.png
index aa24805..aa24805 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/echoMode.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml
index dd7b291..dd7b291 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/hAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png
index 87c2e07..87c2e07 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/hAlign.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png
Binary files differ
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/visual/qdeclarativetextinput/data/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.0.png
index f04f65e..f04f65e 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.1.png
index 46a703a..46a703a 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.2.png
index e4a3877..e4a3877 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.3.png
index 9ef842a..9ef842a 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.4.png
index 706e2b3..706e2b3 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.5.png
index bcc86cc..bcc86cc 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.6.png
index 51ddd44..51ddd44 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.6.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.7.png
index 0a2fdda..0a2fdda 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.7.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.8.png
index 9c88bff..9c88bff 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data/cursorDelegate.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.8.png
Binary files differ
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-X11/echoMode.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.0.png
index 2b45a06..2b45a06 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.1.png
index 1f5bae0..1f5bae0 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.2.png
index cb2b5a4..cb2b5a4 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.3.png
index aa24805..aa24805 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.4.png
index aa24805..aa24805 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/echoMode.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.4.png
Binary files differ
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
index 87c2e07..87c2e07 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/data-X11/hAlign.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.0.png
Binary files differ
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/visual/qdeclarativetextinput/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml
index b0b50e4..b0b50e4 100644
--- a/tests/auto/declarative/visual/qdeclarativetextinput/echoMode.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml
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/visual/qfxwebview/autosize/autosize.qml b/tests/auto/declarative/qmlvisual/qfxwebview/autosize/autosize.qml
index 3c00ee6..3c00ee6 100644
--- a/tests/auto/declarative/visual/qfxwebview/autosize/autosize.qml
+++ b/tests/auto/declarative/qmlvisual/qfxwebview/autosize/autosize.qml
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
index 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
Binary files differ
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
index 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
Binary files differ
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/visual/visual.pro b/tests/auto/declarative/qmlvisual/qmlvisual.pro
index 7ae2bed..f2b3bca 100644
--- a/tests/auto/declarative/visual/visual.pro
+++ b/tests/auto/declarative/qmlvisual/qmlvisual.pro
@@ -2,6 +2,6 @@ load(qttest_p4)
contains(QT_CONFIG,declarative): QT += declarative
macx:CONFIG -= app_bundle
-SOURCES += tst_visual.cpp
+SOURCES += tst_qmlvisual.cpp
DEFINES += QT_TEST_SOURCE_DIR=\"\\\"$$PWD\\\"\"
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
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
index aea0e98..aea0e98 100644
--- a/tests/auto/declarative/visual/repeater/data/basic1.0.png
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic1.0.png
Binary files differ
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
index aea0e98..aea0e98 100644
--- a/tests/auto/declarative/visual/repeater/data/basic2.0.png
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic2.0.png
Binary files differ
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
index aea0e98..aea0e98 100644
--- a/tests/auto/declarative/visual/repeater/data/basic3.0.png
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic3.0.png
Binary files differ
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
index aea0e98..aea0e98 100644
--- a/tests/auto/declarative/visual/repeater/data/basic4.0.png
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic4.0.png
Binary files differ
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/visual/tst_visual.cpp b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
index cd88e87..91f8486 100644
--- a/tests/auto/declarative/visual/tst_visual.cpp
+++ b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
@@ -50,11 +50,11 @@
enum Mode { Record, RecordNoVisuals, Play, TestVisuals, RemoveVisuals, UpdateVisuals, UpdatePlatformVisuals, Test };
static QString testdir;
-class tst_visual : public QObject
+class tst_qmlvisual : public QObject
{
Q_OBJECT
public:
- tst_visual();
+ tst_qmlvisual();
static QString toTestScript(const QString &, Mode=Test);
static QString viewer();
@@ -69,12 +69,12 @@ private:
};
-tst_visual::tst_visual()
+tst_qmlvisual::tst_qmlvisual()
{
qmlruntime = viewer();
}
-QString tst_visual::viewer()
+QString tst_qmlvisual::viewer()
{
QString binaries = QLibraryInfo::location(QLibraryInfo::BinariesPath);
@@ -91,24 +91,33 @@ QString tst_visual::viewer()
return qmlruntime;
}
-void tst_visual::visual_data()
+void tst_qmlvisual::visual_data()
{
QTest::addColumn<QString>("file");
QTest::addColumn<QString>("testdata");
QStringList files;
- files << findQmlFiles(QDir(QT_TEST_SOURCE_DIR));
+ if (qgetenv("QMLVISUAL_ALL") != "")
+ files << findQmlFiles(QDir(QT_TEST_SOURCE_DIR));
+ else {
+ //these are tests we think are stable and useful enough to be run by the CI system
+ files << QT_TEST_SOURCE_DIR "/qdeclarativemousearea/mousearea-visual.qml";
+ files << QT_TEST_SOURCE_DIR "/qdeclarativemousearea/drag.qml";
+ files << QT_TEST_SOURCE_DIR "/animation/pauseAnimation/pauseAnimation-visual.qml";
+ files << QT_TEST_SOURCE_DIR "/animation/parentAnimation/parentAnimation-visual.qml";
+ files << QT_TEST_SOURCE_DIR "/animation/reanchor/reanchor.qml";
+ }
foreach (const QString &file, files) {
QString testdata = toTestScript(file);
if (testdata.isEmpty())
continue;
-
+
QTest::newRow(file.toLatin1().constData()) << file << testdata;
}
}
-void tst_visual::visual()
+void tst_qmlvisual::visual()
{
QFETCH(QString, file);
QFETCH(QString, testdata);
@@ -116,7 +125,11 @@ void tst_visual::visual()
QStringList arguments;
arguments << "-script" << testdata
<< "-scriptopts" << "play,testimages,testerror,exitoncomplete,exitonfailure"
- << file;
+ << file << "-graphicssystem" << "raster";
+#ifdef Q_WS_QWS
+ arguments << "-qws";
+#endif
+
QProcess p;
p.start(qmlruntime, arguments);
QVERIFY(p.waitForFinished());
@@ -126,13 +139,15 @@ void tst_visual::visual()
QCOMPARE(p.exitCode(), 0);
}
-QString tst_visual::toTestScript(const QString &file, Mode mode)
+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
@@ -176,7 +191,7 @@ QString tst_visual::toTestScript(const QString &file, Mode mode)
return testdata;
}
-QStringList tst_visual::findQmlFiles(const QDir &d)
+QStringList tst_qmlvisual::findQmlFiles(const QDir &d)
{
QStringList rv;
@@ -206,7 +221,7 @@ void action(Mode mode, const QString &file)
{
Q_ASSERT(mode != Test);
- QString testdata = tst_visual::toTestScript(file,mode);
+ QString testdata = tst_qmlvisual::toTestScript(file,mode);
QStringList arguments;
switch (mode) {
@@ -248,7 +263,7 @@ void action(Mode mode, const QString &file)
if (!arguments.isEmpty()) {
QProcess p;
p.setProcessChannelMode(QProcess::ForwardedChannels);
- p.start(tst_visual::viewer(), arguments);
+ p.start(tst_qmlvisual::viewer(), arguments);
p.waitForFinished();
}
}
@@ -257,7 +272,7 @@ 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, " -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, " -play file : playback test data for file, printing errors\n");
@@ -268,12 +283,12 @@ void usage()
"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"
+ " 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_visual -play yourtestdir/yourtest.qml\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"
@@ -282,7 +297,7 @@ void usage()
"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"
+ " 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"
@@ -339,7 +354,7 @@ int main(int argc, char **argv)
}
if (arg == "-listtests") {
- QStringList list = tst_visual::findQmlFiles(QDir(QT_TEST_SOURCE_DIR));
+ QStringList list = tst_qmlvisual::findQmlFiles(QDir(QT_TEST_SOURCE_DIR));
foreach (QString test, list) {
qWarning() << qPrintable(test);
}
@@ -348,7 +363,7 @@ int main(int argc, char **argv)
}
if (mode == Test || showHelp) {
- tst_visual tc;
+ tst_qmlvisual tc;
return QTest::qExec(&tc, newArgc, newArgv);
} else {
if (!file.endsWith(QLatin1String(".qml"))) {
@@ -367,4 +382,4 @@ int main(int argc, char **argv)
}
}
-#include "tst_visual.moc"
+#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
index 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
Binary files differ
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/visual/webview/embedding/egg.qml b/tests/auto/declarative/qmlvisual/webview/embedding/egg.qml
index fe1bb70..fe1bb70 100644
--- a/tests/auto/declarative/visual/webview/embedding/egg.qml
+++ b/tests/auto/declarative/qmlvisual/webview/embedding/egg.qml
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/visual/webview/embedding/nesting.qml b/tests/auto/declarative/qmlvisual/webview/embedding/nesting.qml
index 5e35306..5e35306 100644
--- a/tests/auto/declarative/visual/webview/embedding/nesting.qml
+++ b/tests/auto/declarative/qmlvisual/webview/embedding/nesting.qml
diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.0.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.0.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.1.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.2.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.3.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.4.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.4.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.5.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.5.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.6.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.6.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.7.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.7.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/javascript/data/evaluateJavaScript.8.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/evaluateJavaScript.8.png
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.1.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.2.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.3.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/javascript/data/windowObjects.4.png b/tests/auto/declarative/qmlvisual/webview/javascript/data/windowObjects.4.png
index 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
Binary files differ
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/visual/webview/javascript/evaluateJavaScript.qml b/tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml
index 6c01382..6c01382 100644
--- a/tests/auto/declarative/visual/webview/javascript/evaluateJavaScript.qml
+++ b/tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml
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/visual/webview/javascript/windowObjects.qml b/tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml
index 8c52aff..8c52aff 100644
--- a/tests/auto/declarative/visual/webview/javascript/windowObjects.qml
+++ b/tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml
diff --git a/tests/auto/declarative/visual/webview/settings/data/fontFamily.0.png b/tests/auto/declarative/qmlvisual/webview/settings/data/fontFamily.0.png
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/settings/data/noAutoLoadImages.1.png b/tests/auto/declarative/qmlvisual/webview/settings/data/noAutoLoadImages.1.png
index 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
Binary files differ
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
index 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
Binary files differ
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/visual/webview/settings/fontFamily.qml b/tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml
index f547b0e..f547b0e 100644
--- a/tests/auto/declarative/visual/webview/settings/fontFamily.qml
+++ b/tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml
diff --git a/tests/auto/declarative/visual/webview/settings/fontSize.qml b/tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml
index 7eaa96b..7eaa96b 100644
--- a/tests/auto/declarative/visual/webview/settings/fontSize.qml
+++ b/tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml
diff --git a/tests/auto/declarative/visual/webview/settings/noAutoLoadImages.qml b/tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml
index 67f1633..67f1633 100644
--- a/tests/auto/declarative/visual/webview/settings/noAutoLoadImages.qml
+++ b/tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml
diff --git a/tests/auto/declarative/visual/animation/pauseAnimation/pics/qtlogo.png b/tests/auto/declarative/qmlvisual/webview/settings/qtlogo.png
index 399bd0b..399bd0b 100644
--- a/tests/auto/declarative/visual/animation/pauseAnimation/pics/qtlogo.png
+++ b/tests/auto/declarative/qmlvisual/webview/settings/qtlogo.png
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/settings/setFontFamily.qml b/tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml
index 823469f..823469f 100644
--- a/tests/auto/declarative/visual/webview/settings/setFontFamily.qml
+++ b/tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml
diff --git a/tests/auto/declarative/visual/webview/settings/tarzeau_ocr_a.ttf b/tests/auto/declarative/qmlvisual/webview/settings/tarzeau_ocr_a.ttf
index 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
Binary files differ
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
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/zooming/data/resolution.1.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/zooming/data/resolution.2.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/zooming/data/resolution.3.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.3.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/zooming/data/resolution.4.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/resolution.4.png
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/zooming/data/zoomTextOnly.1.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/zoomTextOnly.1.png
index 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
Binary files differ
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
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/zooming/data/zooming.1.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.1.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/zooming/data/zooming.2.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.2.png
index 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
Binary files differ
diff --git a/tests/auto/declarative/visual/webview/zooming/data/zooming.3.png b/tests/auto/declarative/qmlvisual/webview/zooming/data/zooming.3.png
index 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
Binary files differ
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/visual/webview/zooming/pageWidth.qml b/tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml
index 4a876dd..4a876dd 100644
--- a/tests/auto/declarative/visual/webview/zooming/pageWidth.qml
+++ b/tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml
diff --git a/tests/auto/declarative/visual/animation/easing/pics/qtlogo.png b/tests/auto/declarative/qmlvisual/webview/zooming/qtlogo.png
index 399bd0b..399bd0b 100644
--- a/tests/auto/declarative/visual/animation/easing/pics/qtlogo.png
+++ b/tests/auto/declarative/qmlvisual/webview/zooming/qtlogo.png
Binary files differ
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/visual/webview/zooming/renderControl.qml b/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml
index bcbcf5c..52a569e 100644
--- a/tests/auto/declarative/visual/webview/zooming/renderControl.qml
+++ b/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml
@@ -9,7 +9,7 @@ Rectangle {
id: webview
width: 400
url: "renderControl.html"
- x: SequentialAnimation {
+ SequentialAnimation on x {
loops: Animation.Infinite
NumberAnimation { from: 100; to: 0; duration: 200 }
PropertyAction { target: webview; property: "renderingEnabled"; value: false }
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/visual/webview/zooming/zooming.qml b/tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml
index 9f0b865..adbd7a5 100644
--- a/tests/auto/declarative/visual/webview/zooming/zooming.qml
+++ b/tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml
@@ -7,9 +7,9 @@ import org.webkit 1.0
WebView {
width: 200
height: 250
- x: Behavior { NumberAnimation { } }
- y: Behavior { NumberAnimation { } }
- scale: Behavior { NumberAnimation { } }
+ Behavior on x { NumberAnimation { } }
+ Behavior on y { NumberAnimation { } }
+ Behavior on scale { NumberAnimation { } }
url: "zooming.html"
preferredWidth: width
preferredHeight: height
diff --git a/tests/auto/declarative/sql/data/error-creation.js b/tests/auto/declarative/sql/data/error-creation.js
index 92245fd..0ab2a35 100644
--- a/tests/auto/declarative/sql/data/error-creation.js
+++ b/tests/auto/declarative/sql/data/error-creation.js
@@ -3,10 +3,12 @@ function test() {
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
+ 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/visual/animation/colorAnimation/data/colorAnimation.1.png b/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.1.png
deleted file mode 100644
index f4a6cfd..0000000
--- a/tests/auto/declarative/visual/animation/colorAnimation/data/colorAnimation.1.png
+++ /dev/null
Binary files differ
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 bce6744..0000000
--- a/tests/auto/declarative/visual/webview/zooming/resolution.qml
+++ /dev/null
@@ -1,17 +0,0 @@
-import Qt 4.6
-import org.webkit 1.0
-
-WebView {
- width: 200 * zoomFactor
- height: 250 * zoomFactor
- scale: 1/zoomFactor
- url: "resolution.html"
- zoomFactor:
- SequentialAnimation {
- 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.qml b/tests/auto/declarative/visual/webview/zooming/zoomTextOnly.qml
deleted file mode 100644
index 6d51c8a..0000000
--- a/tests/auto/declarative/visual/webview/zooming/zoomTextOnly.qml
+++ /dev/null
@@ -1,15 +0,0 @@
-import Qt 4.6
-import org.webkit 1.0
-
-WebView {
- width: 200
- height: 250
- url: "zoomTextOnly.html"
- settings.zoomTextOnly: true
- zoomFactor:
- SequentialAnimation {
- loops: Animation.Infinite
- NumberAnimation { from: 2; to: 0.25; duration: 1000 }
- NumberAnimation { from: 0.25; to: 2; duration: 1000 }
- }
-}
diff --git a/tests/auto/gui.pro b/tests/auto/gui.pro
index 10a760c..a8fd2b4 100644
--- a/tests/auto/gui.pro
+++ b/tests/auto/gui.pro
@@ -78,7 +78,6 @@ SUBDIRS=\
qgraphicswidget \
qgridlayout \
qgroupbox \
- qguard \
qguivariant \
qheaderview \
qhelpcontentmodel \
diff --git a/tests/auto/headers/headersclean.cpp b/tests/auto/headers/headersclean.cpp
index b932b9f..c98cd10 100644
--- a/tests/auto/headers/headersclean.cpp
+++ b/tests/auto/headers/headersclean.cpp
@@ -55,7 +55,7 @@
// extra
#include <QtDBus/QtDBus>
-//#include <QtDeclarative/QtDeclarative>
+#include <QtDeclarative/QtDeclarative>
#include <QtHelp/QtHelp>
#include <QtMultimedia/QtMultimedia>
#include <QtOpenGL/QtOpenGL>
diff --git a/tests/auto/linguist/lconvert/data/endless-po-loop.ts b/tests/auto/linguist/lconvert/data/endless-po-loop.ts
index 6212fbd..8aa7215 100644
--- a/tests/auto/linguist/lconvert/data/endless-po-loop.ts
+++ b/tests/auto/linguist/lconvert/data/endless-po-loop.ts
@@ -5,12 +5,12 @@
<name>Assistant</name>
<message>
<source>This is some text which introduces the DonauDampfSchifffahrtsKapitaensMuetzeMitKomischenUltraViolettenFransenUndEinemKnopf</source>
- <translation></translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="this/is/a/really/really/absurdly/no,/grotesquely/long/path/supposed/to/blow/up.cpp" line="20"/>
<source>%n document(s) found.</source>
- <translation></translation>
+ <translation type="unfinished"></translation>
</message>
</context>
</TS>
diff --git a/tests/auto/linguist/lconvert/data/makeplurals.pl b/tests/auto/linguist/lconvert/data/makeplurals.pl
index d933a3e..a2d1d700 100755
--- a/tests/auto/linguist/lconvert/data/makeplurals.pl
+++ b/tests/auto/linguist/lconvert/data/makeplurals.pl
@@ -57,14 +57,18 @@ sub makeit2($$$)
}
}
-sub makeit($$)
+sub makeit($$$)
{
open OUTFILE, ">${OUTDIR}plural-$_[0].po" || die "cannot write file in $OUTDIR";
print OUTFILE <<EOF;
msgid ""
msgstr ""
+"MIME-Version: 1.0\\n"
+"Content-Type: text/plain; charset=UTF-8\\n"
+"Content-Transfer-Encoding: 8bit\\n"
"X-FooBar: yup\\n"
"X-Language: $_[1]\\n"
+"Plural-Forms: $_[2]\\n"
EOF
makeit2($_[0], "one", "");
makeit2($_[0], "two", "#, fuzzy
@@ -77,6 +81,6 @@ EOF
}
$OUTDIR = $ARGV[0];
-makeit(1, "zh_CN");
-makeit(2, "de_DE");
-makeit(3, "pl_PL");
+makeit(1, "zh_CN", "nplurals=1; plural=0;");
+makeit(2, "de_DE", "nplurals=2; plural=(n != 1);");
+makeit(3, "pl_PL", "nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");
diff --git a/tests/auto/linguist/lconvert/data/msgid.ts b/tests/auto/linguist/lconvert/data/msgid.ts
index ab65845..39401d8 100644
--- a/tests/auto/linguist/lconvert/data/msgid.ts
+++ b/tests/auto/linguist/lconvert/data/msgid.ts
@@ -1,27 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.0" sourcelanguage="en">
+<TS version="2.0">
<context>
<name>Dialog2</name>
<message numerus="yes">
<source>%n files</source>
- <translation>
+ <translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message id="this_is_some_id" numerus="yes">
<source>%n cars</source>
- <translation>
+ <translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message>
<source>Age: %1</source>
- <translation></translation>
+ <translation type="unfinished"></translation>
</message>
<message id="this_is_another_id">
<source>func3</source>
- <translation></translation>
+ <translation type="unfinished"></translation>
</message>
</context>
</TS>
diff --git a/tests/auto/linguist/lconvert/data/singular.po b/tests/auto/linguist/lconvert/data/singular.po
index a0d4019..9a2c91c 100644
--- a/tests/auto/linguist/lconvert/data/singular.po
+++ b/tests/auto/linguist/lconvert/data/singular.po
@@ -1,5 +1,8 @@
msgid ""
msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
msgid "untranslated one"
msgstr "translated"
@@ -9,7 +12,6 @@ msgstr "translated"
msgid "untranslated two"
msgstr "translated"
-#, fuzzy
#| msgid "old untranslated"
msgid "untranslated two b"
msgstr ""
@@ -20,7 +22,6 @@ msgstr ""
msgid "untranslated three"
msgstr "translated"
-#, fuzzy
#| msgid "old untranslated"
#| msgid_plural "old untranslated plural"
msgid "untranslated three b"
@@ -31,7 +32,6 @@ msgstr ""
msgid "untranslated four"
msgstr "translated"
-#, fuzzy
#| msgid_plural "old untranslated only plural"
msgid "untranslated four b"
msgstr ""
diff --git a/tests/auto/linguist/lconvert/data/test-broken-utf8.po.out b/tests/auto/linguist/lconvert/data/test-broken-utf8.po.out
index 0a9f4c8..20fee33 100644
--- a/tests/auto/linguist/lconvert/data/test-broken-utf8.po.out
+++ b/tests/auto/linguist/lconvert/data/test-broken-utf8.po.out
@@ -1,6 +1,9 @@
# no comment
msgid ""
msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
msgid "this works"
msgstr "das geht: ä"
diff --git a/tests/auto/linguist/lconvert/data/test-escapes.po.out b/tests/auto/linguist/lconvert/data/test-escapes.po.out
index 10eefb2..055fa79 100644
--- a/tests/auto/linguist/lconvert/data/test-escapes.po.out
+++ b/tests/auto/linguist/lconvert/data/test-escapes.po.out
@@ -1,5 +1,8 @@
msgid ""
msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
msgid ""
"this comes\n"
diff --git a/tests/auto/linguist/lconvert/data/test-kde-fuzzy.po b/tests/auto/linguist/lconvert/data/test-kde-fuzzy.po
index b3f6e03..fc9ae77 100644
--- a/tests/auto/linguist/lconvert/data/test-kde-fuzzy.po
+++ b/tests/auto/linguist/lconvert/data/test-kde-fuzzy.po
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KAider 0.1\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: kgverify.cpp:459
#, fuzzy, kde-format
diff --git a/tests/auto/linguist/lconvert/data/test-kde-multiline.po b/tests/auto/linguist/lconvert/data/test-kde-multiline.po
index 0ca714c..662c02e 100644
--- a/tests/auto/linguist/lconvert/data/test-kde-multiline.po
+++ b/tests/auto/linguist/lconvert/data/test-kde-multiline.po
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KAider 0.1\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: kdmshutdown.cpp:706
#, kde-format
diff --git a/tests/auto/linguist/lconvert/data/test-kde-plurals.po b/tests/auto/linguist/lconvert/data/test-kde-plurals.po
index 6c85d74..9f74de0 100644
--- a/tests/auto/linguist/lconvert/data/test-kde-plurals.po
+++ b/tests/auto/linguist/lconvert/data/test-kde-plurals.po
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KAider 0.1\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Language: de_DE\n"
#: kgverify.cpp:505
diff --git a/tests/auto/linguist/lconvert/data/test-slurp.po.out b/tests/auto/linguist/lconvert/data/test-slurp.po.out
index 8859a70..11a874e 100644
--- a/tests/auto/linguist/lconvert/data/test-slurp.po.out
+++ b/tests/auto/linguist/lconvert/data/test-slurp.po.out
@@ -2,6 +2,9 @@ msgid ""
msgstr ""
"Project-Id-Version: kdmgreet\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
msgid "just a line"
msgstr "indeed"
diff --git a/tests/auto/linguist/lconvert/data/test1-de.po b/tests/auto/linguist/lconvert/data/test1-de.po
index 256b8e9..a4523bb 100644
--- a/tests/auto/linguist/lconvert/data/test1-de.po
+++ b/tests/auto/linguist/lconvert/data/test1-de.po
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KAider 0.1\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Language: de_DE\n"
#: lib/acl.c:107 lib/acl.c:121 lib/acl.c:138 lib/acl.c:165 lib/acl.c:174
diff --git a/tests/auto/linguist/lconvert/data/wrapping.po b/tests/auto/linguist/lconvert/data/wrapping.po
index 39b7fbe..9feb4a0 100644
--- a/tests/auto/linguist/lconvert/data/wrapping.po
+++ b/tests/auto/linguist/lconvert/data/wrapping.po
@@ -3,7 +3,6 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
@@ -13,7 +12,7 @@ msgstr ""
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#, no-wrap
diff --git a/tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp b/tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp
index f837564..f3c2c09 100644
--- a/tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp
+++ b/tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp
@@ -44,7 +44,7 @@
#include <q3sqlcursor.h>
#include <qsqlfield.h>
#include <qsqldriver.h>
-
+#include <QSet>
#include "../qsqldatabase/tst_databases.h"
@@ -122,7 +122,7 @@ void tst_Q3SqlCursor::generic_data(const QString &engine)
{
if ( dbs.fillTestTable(engine) == 0 ) {
if(engine.isEmpty())
- QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
+ QSKIP( "No database drivers are available in this Qt configuration", SkipAll );
else
QSKIP( (QString("No database drivers of type %1 are available in this Qt configuration").arg(engine)).toLocal8Bit(), SkipAll );
}
@@ -131,7 +131,7 @@ void tst_Q3SqlCursor::generic_data(const QString &engine)
void tst_Q3SqlCursor::createTestTables( QSqlDatabase db )
{
if ( !db.isValid() )
- return;
+ return;
QSqlQuery q( db );
if (tst_Databases::isSqlServer(db)) {
@@ -143,20 +143,20 @@ void tst_Q3SqlCursor::createTestTables( QSqlDatabase db )
// please never ever change this table; otherwise fix all tests ;)
if ( tst_Databases::isMSAccess( db ) ) {
- QVERIFY_SQL(q, exec( "create table " + qtest + " ( id int not null, t_varchar varchar(40) not null,"
- "t_char char(40), t_numeric number, primary key (id, t_varchar) )" ));
+ QVERIFY_SQL(q, exec( "create table " + qtest + " ( id int not null, t_varchar varchar(40) not null,"
+ "t_char char(40), t_numeric number, primary key (id, t_varchar) )" ));
} else {
- QVERIFY_SQL(q, exec( "create table " + qtest + " ( id int not null, t_varchar varchar(40) not null,"
- "t_char char(40), t_numeric numeric(6, 3), primary key (id, t_varchar) )" ));
+ QVERIFY_SQL(q, exec( "create table " + qtest + " ( id int not null, t_varchar varchar(40) not null,"
+ "t_char char(40), t_numeric numeric(6, 3), primary key (id, t_varchar) )" ));
}
if ( tst_Databases::isSqlServer( db ) ) {
- //workaround for SQL SERVER since he can store unicode only in nvarchar fields
- QVERIFY_SQL(q, exec("create table " + qTableName("qtest_unicode", __FILE__) + " (id int not null, "
- "t_varchar nvarchar(80) not null, t_char nchar(80) )" ));
+ //workaround for SQL SERVER since he can store unicode only in nvarchar fields
+ QVERIFY_SQL(q, exec("create table " + qTableName("qtest_unicode", __FILE__) + " (id int not null, "
+ "t_varchar nvarchar(80) not null, t_char nchar(80) )" ));
} else {
- QVERIFY_SQL(q, exec("create table " + qTableName("qtest_unicode", __FILE__) + " (id int not null, "
- "t_varchar varchar(100) not null," "t_char char(100))" ));
+ QVERIFY_SQL(q, exec("create table " + qTableName("qtest_unicode", __FILE__) + " (id int not null, "
+ "t_varchar varchar(100) not null," "t_char char(100))" ));
}
if (tst_Databases::isMSAccess(db)) {
@@ -169,7 +169,7 @@ void tst_Q3SqlCursor::createTestTables( QSqlDatabase db )
void tst_Q3SqlCursor::dropTestTables( QSqlDatabase db )
{
if ( !db.isValid() )
- return;
+ return;
QStringList tableNames;
tableNames << qtest
<< qTableName( "qtest_unicode", __FILE__ )
@@ -183,7 +183,7 @@ void tst_Q3SqlCursor::dropTestTables( QSqlDatabase db )
void tst_Q3SqlCursor::populateTestTables( QSqlDatabase db )
{
if (!db.isValid())
- return;
+ return;
QSqlQuery q( db );
q.exec( "delete from " + qtest ); //not fatal
@@ -200,21 +200,21 @@ void tst_Q3SqlCursor::initTestCase()
dbs.open();
for ( QStringList::ConstIterator it = dbs.dbNames.begin(); it != dbs.dbNames.end(); ++it ) {
- QSqlDatabase db = QSqlDatabase::database( (*it) );
- CHECK_DATABASE( db );
+ QSqlDatabase db = QSqlDatabase::database( (*it) );
+ CHECK_DATABASE( db );
- dropTestTables( db ); //in case of leftovers
- createTestTables( db );
- populateTestTables( db );
+ dropTestTables( db ); //in case of leftovers
+ createTestTables( db );
+ populateTestTables( db );
}
}
void tst_Q3SqlCursor::cleanupTestCase()
{
for ( QStringList::ConstIterator it = dbs.dbNames.begin(); it != dbs.dbNames.end(); ++it ) {
- QSqlDatabase db = QSqlDatabase::database( (*it) );
- CHECK_DATABASE( db );
- dropTestTables( db );
+ QSqlDatabase db = QSqlDatabase::database( (*it) );
+ CHECK_DATABASE( db );
+ dropTestTables( db );
}
dbs.close();
@@ -230,9 +230,9 @@ void tst_Q3SqlCursor::cleanup()
QSqlDatabase db = QSqlDatabase::database( dbName );
CHECK_DATABASE( db );
if ( QTest::currentTestFailed() ) {
- //since Oracle ODBC totally craps out on error, we init again
- db.close();
- db.open();
+ //since Oracle ODBC totally craps out on error, we init again
+ db.close();
+ db.open();
}
}
@@ -244,10 +244,10 @@ void tst_Q3SqlCursor::copyConstructor()
Q3SqlCursor cur2;
{
- Q3SqlCursor cur( qtest, true, db );
- QVERIFY_SQL(cur, select( cur.index( QString("id") ) ));
- cur2 = Q3SqlCursor( cur );
- // let "cur" run out of scope...
+ Q3SqlCursor cur( qtest, true, db );
+ QVERIFY_SQL(cur, select( cur.index( QString("id") ) ));
+ cur2 = Q3SqlCursor( cur );
+ // let "cur" run out of scope...
}
QSqlRecord* rec = cur2.primeUpdate();
@@ -256,8 +256,8 @@ void tst_Q3SqlCursor::copyConstructor()
int i = 0;
while ( cur2.next() ) {
- QVERIFY( cur2.value("id").toInt() == i );
- i++;
+ QVERIFY( cur2.value("id").toInt() == i );
+ i++;
}
}
@@ -271,8 +271,8 @@ void tst_Q3SqlCursor::value()
QVERIFY_SQL(cur, select( cur.index( QString("id") ) ));
int i = 0;
while ( cur.next() ) {
- QCOMPARE(cur.value("id").toInt(), i);
- i++;
+ QCOMPARE(cur.value("id").toInt(), i);
+ i++;
}
}
@@ -285,11 +285,11 @@ void tst_Q3SqlCursor::primaryIndex()
Q3SqlCursor cur( qtest, true, db );
QSqlIndex index = cur.primaryIndex();
if ( tst_Databases::isMSAccess( db ) ) {
- QCOMPARE( index.fieldName(1).upper(), QString( "ID" ) );
- QCOMPARE( index.fieldName(0).upper(), QString( "T_VARCHAR" ) );
+ QCOMPARE( index.fieldName(1).upper(), QString( "ID" ) );
+ QCOMPARE( index.fieldName(0).upper(), QString( "T_VARCHAR" ) );
} else {
- QCOMPARE( index.fieldName(0).upper(), QString( "ID" ) );
- QCOMPARE( index.fieldName(1).upper(), QString( "T_VARCHAR" ) );
+ QCOMPARE( index.fieldName(0).upper(), QString( "ID" ) );
+ QCOMPARE( index.fieldName(1).upper(), QString( "T_VARCHAR" ) );
}
QVERIFY(!index.isDescending(0));
QVERIFY(!index.isDescending(1));
@@ -308,10 +308,10 @@ void tst_Q3SqlCursor::insert()
// check that primeInsert returns a valid QSqlRecord
QCOMPARE( (int)irec->count(), 4 );
if ( ( irec->field( 0 ).type() != QVariant::Int ) &&
- ( irec->field( 0 ).type() != QVariant::String ) &&
+ ( irec->field( 0 ).type() != QVariant::String ) &&
( irec->field( 0 ).type() != QVariant::Double ) ) {
- QFAIL( QString( "Wrong datatype %1 for field 'ID'"
- " (expected Int or String)" ).arg( QVariant::typeToName( irec->field( 0 ).type() ) ) );
+ QFAIL( QString( "Wrong datatype %1 for field 'ID'"
+ " (expected Int or String)" ).arg( QVariant::typeToName( irec->field( 0 ).type() ) ) );
}
QCOMPARE( QVariant::typeToName( irec->field( 1 ).type() ), QVariant::typeToName( QVariant::String ) );
QCOMPARE( QVariant::typeToName( irec->field( 2 ).type() ), QVariant::typeToName( QVariant::String ) );
@@ -327,7 +327,9 @@ void tst_Q3SqlCursor::insert()
irec->setValue( "t_char", "SomeChar" );
irec->setValue( "t_numeric", 400.400 );
- QCOMPARE( cur.insert(), 1 );
+ QSet<int> validReturns(QSet<int>() << -1 << 1);
+
+ QVERIFY( validReturns.contains(cur.insert()) );
// restore old test-tables
populateTestTables( db );
@@ -338,6 +340,7 @@ void tst_Q3SqlCursor::insertSpecial()
QFETCH( QString, dbName );
QSqlDatabase db = QSqlDatabase::database( dbName );
CHECK_DATABASE( db );
+ QSet<int> validReturns(QSet<int>() << -1 << 1);
Q3SqlCursor cur( qtest, true, db );
QSqlRecord* irec = cur.primeInsert();
@@ -355,25 +358,25 @@ void tst_Q3SqlCursor::insertSpecial()
// INSERT the strings
QStringList::Iterator it;
for ( it = strings.begin(); it != strings.end(); ++it ) {
- QSqlRecord* irec = cur.primeInsert();
- QVERIFY( irec != 0 );
- irec->setValue( "id", i );
- irec->setValue( "t_varchar", (*it) );
- irec->setValue( "t_char", (*it) );
- irec->setValue( "t_numeric", (double)i );
- ++i;
- QCOMPARE( cur.insert(), 1 );
+ QSqlRecord* irec = cur.primeInsert();
+ QVERIFY( irec != 0 );
+ irec->setValue( "id", i );
+ irec->setValue( "t_varchar", (*it) );
+ irec->setValue( "t_char", (*it) );
+ irec->setValue( "t_numeric", (double)i );
+ ++i;
+ QVERIFY( validReturns.contains(cur.insert()) );
}
QVERIFY( cur.select( "id >= 800 and id < 900" ) );
int i2 = 800;
while( cur.next() ) {
- QCOMPARE( cur.value( "id" ).toInt(), i2 );
- QCOMPARE( cur.value( "t_varchar" ).toString().stripWhiteSpace(), strings.at( i2 - 800 ) );
- QCOMPARE( cur.value( "t_char" ).toString().stripWhiteSpace(), strings.at( i2 - 800 ) );
- QCOMPARE( cur.value( "t_numeric" ).toDouble(), (double)i2 );
- ++i2;
+ QCOMPARE( cur.value( "id" ).toInt(), i2 );
+ QCOMPARE( cur.value( "t_varchar" ).toString().stripWhiteSpace(), strings.at( i2 - 800 ) );
+ QCOMPARE( cur.value( "t_char" ).toString().stripWhiteSpace(), strings.at( i2 - 800 ) );
+ QCOMPARE( cur.value( "t_numeric" ).toDouble(), (double)i2 );
+ ++i2;
}
QCOMPARE( i, i2 );
@@ -385,6 +388,7 @@ void tst_Q3SqlCursor::batchInsert()
QFETCH( QString, dbName );
QSqlDatabase db = QSqlDatabase::database( dbName );
CHECK_DATABASE( db );
+ QSet<int> validReturns(QSet<int>() << -1 << 1);
QSqlQuery q( db );
q.exec( "delete from " + qtest );
@@ -393,16 +397,16 @@ void tst_Q3SqlCursor::batchInsert()
int i = 0;
for ( ; i < 100; ++i ) {
- QSqlRecord* irec = cur.primeInsert();
- Q_ASSERT( irec );
- irec->setValue( "id", i );
- irec->setValue( "t_varchar", "blah" );
- irec->setValue( "t_char", "blah" );
- irec->setValue( "t_numeric", 1.1 );
- if ( db.driverName().startsWith( "QSQLITE" ) ) {
- QVERIFY( cur.insert( true ) );
- } else {
- QCOMPARE( cur.insert( true ), 1 );
+ QSqlRecord* irec = cur.primeInsert();
+ Q_ASSERT( irec );
+ irec->setValue( "id", i );
+ irec->setValue( "t_varchar", "blah" );
+ irec->setValue( "t_char", "blah" );
+ irec->setValue( "t_numeric", 1.1 );
+ if ( db.driverName().startsWith( "QSQLITE" ) ) {
+ QVERIFY( cur.insert( true ) );
+ } else {
+ QVERIFY( validReturns.contains(cur.insert( true )) );
}
}
@@ -413,18 +417,18 @@ void tst_Q3SqlCursor::batchInsert()
irec->setValue( "t_varchar", "blah" );
irec->setValue( "t_char", "blah" );
irec->setValue( "t_numeric", 1.1 );
- if ( db.driverName().startsWith( "QSQLITE" ) ) {
- QVERIFY( cur.insert( false ) );
- } else {
- QCOMPARE( cur.insert( false ), 1 );
+ if ( db.driverName().startsWith( "QSQLITE" ) ) {
+ QVERIFY( cur.insert( false ) );
+ } else {
+ QVERIFY( validReturns.contains(cur.insert( false )) );
}
}
i = 0;
QVERIFY_SQL(q, exec( "select * from " + qtest + " order by id" ));
while ( q.next() ) {
- QCOMPARE( q.value( 0 ).toInt(), i );
- i++;
+ QCOMPARE( q.value( 0 ).toInt(), i );
+ i++;
}
QCOMPARE( i, 200 );
@@ -436,7 +440,7 @@ static QString dumpUtf8( const QString& str )
{
QString res;
for ( int i = 0; i < (int)str.length(); ++i ) {
- res += "0x" + QString::number( str[ i ].unicode(), 16 ) + ' ';
+ res += "0x" + QString::number( str[ i ].unicode(), 16 ) + ' ';
}
return res;
}
@@ -448,7 +452,7 @@ void tst_Q3SqlCursor::insertORA()
CHECK_DATABASE( db );
if (tst_Databases::getOraVersion(db) < 9)
- QSKIP("Need Oracle >= 9", SkipSingle);
+ QSKIP("Need Oracle >= 9", SkipSingle);
/****** CHARSET TEST ******/
@@ -466,8 +470,8 @@ void tst_Q3SqlCursor::insertORA()
QVERIFY_SQL(cur, select());
QVERIFY( cur.next() );
if ( cur.value( "t_char" ).toString() != val1 )
- qDebug( QString( "Wrong value for t_char: expected '%1', got '%2'" ).arg( val1 ).arg(
- cur.value( "t_char" ).toString() ) );
+ qDebug( QString( "Wrong value for t_char: expected '%1', got '%2'" ).arg( val1 ).arg(
+ cur.value( "t_char" ).toString() ) );
static const unsigned short utf8arr[] = { 0xd792,0xd79c,0xd792,0xd79c,0xd799,0x00 };
static const QString utf8str = QString::fromUcs2( utf8arr );
@@ -524,7 +528,7 @@ void tst_Q3SqlCursor::unicode()
static const QString utf8str = QString::fromUtf8( "ὕαλον ϕαγεῖν δύναμαι· τοῦτο οὔ με βλάπτει." );
if ( !db.driver()->hasFeature( QSqlDriver::Unicode ) ) {
- QSKIP( "DBMS not Unicode capable", SkipSingle );
+ QSKIP( "DBMS not Unicode capable", SkipSingle );
}
// ascii in the data storage, can't transliterate properly. invalid test.
if(db.driverName().startsWith("QIBASE") && (db.databaseName() == "silence.nokia.troll.no:c:\\ibase\\testdb_ascii" || db.databaseName() == "/opt/interbase/qttest.gdb"))
@@ -640,11 +644,11 @@ void tst_Q3SqlCursor::select()
QSqlIndex idx = cur4.primaryIndex( false );
QCOMPARE( (int)idx.count(), 2 );
if ( tst_Databases::isMSAccess( db ) ) {
- QCOMPARE( idx.field( 1 ).name().upper(), QString("ID") );
- QCOMPARE( idx.field( 0 ).name().upper(), QString("T_VARCHAR") );
+ QCOMPARE( idx.field( 1 ).name().upper(), QString("ID") );
+ QCOMPARE( idx.field( 0 ).name().upper(), QString("T_VARCHAR") );
} else {
- QCOMPARE( idx.field( 0 ).name().upper(), QString("ID") );
- QCOMPARE( idx.field( 1 ).name().upper(), QString("T_VARCHAR") );
+ QCOMPARE( idx.field( 0 ).name().upper(), QString("ID") );
+ QCOMPARE( idx.field( 1 ).name().upper(), QString("T_VARCHAR") );
}
#ifdef QT_DEBUG
@@ -688,17 +692,18 @@ void tst_Q3SqlCursor::updateNoPK()
QFETCH( QString, dbName );
QSqlDatabase db = QSqlDatabase::database( dbName );
CHECK_DATABASE( db );
-
+ QSet<int> validReturns(QSet<int>() << -1 << 1);
+
QSqlQuery q(db);
QVERIFY_SQL(q, exec("create table " + qTableName( "qtestPK", __FILE__ ) + " (id int, name varchar(20), num numeric)"));
-
+
Q3SqlCursor cur(qTableName("qtestPK", __FILE__), true, db);
QSqlRecord* rec = cur.primeInsert();
Q_ASSERT(rec);
rec->setNull(0);
rec->setNull(1);
rec->setNull(2);
- QVERIFY_SQL(cur, insert() == 1);
+ QVERIFY(validReturns.contains(cur.insert()));
if (!db.driver()->hasFeature(QSqlDriver::PreparedQueries)) {
// Only QPSQL, QMYSQL, QODBC and QOCI drivers currently use escape identifiers for column names
@@ -713,8 +718,8 @@ void tst_Q3SqlCursor::updateNoPK()
+ " values (NULL,NULL,NULL)");
QCOMPARE(cur.lastQuery(), query);
} else {
- QCOMPARE(cur.lastQuery(), QString::fromLatin1("insert into " + qTableName("qtestPK", __FILE__) +
- " (\"id\",\"name\",\"num\") values (NULL,NULL,NULL)"));
+ QCOMPARE(cur.lastQuery(), QString::fromLatin1("insert into " + qTableName("qtestPK", __FILE__) +
+ " (\"id\",\"name\",\"num\") values (NULL,NULL,NULL)"));
}
}
@@ -733,7 +738,7 @@ void tst_Q3SqlCursor::updateNoPK()
qTableName("qtestPK", __FILE__) + ".num IS NULL";
if (!db.driver()->hasFeature(QSqlDriver::PreparedQueries)) {
if (!db.driverName().startsWith("QSQLITE")) {
- QCOMPARE(cur.lastQuery(), expect);
+ QCOMPARE(cur.lastQuery(), expect);
}
}
QVERIFY(cur.select(cur.index(QString("id"))));
@@ -750,6 +755,7 @@ void tst_Q3SqlCursor::insertFieldNameContainsWS() {
QFETCH( QString, dbName );
QSqlDatabase db = QSqlDatabase::database( dbName );
CHECK_DATABASE( db );
+ QSet<int> validReturns(QSet<int>() << -1 << 1);
// The bugfix (and this test) depends on QSqlDriver::escapeIdentifier(...)
// to be implemented, which is currently only the case for the
@@ -778,7 +784,7 @@ void tst_Q3SqlCursor::insertFieldNameContainsWS() {
r->setValue("firsT NaMe", "Kong");
r->setValue("lastNaMe", "Harald");
- QVERIFY(cur.insert() == 1);
+ QVERIFY(validReturns.contains(cur.insert()));
cur.select();
cur.next();
diff --git a/tests/auto/qdate/tst_qdate.cpp b/tests/auto/qdate/tst_qdate.cpp
index 7223291..60772eb 100644
--- a/tests/auto/qdate/tst_qdate.cpp
+++ b/tests/auto/qdate/tst_qdate.cpp
@@ -99,6 +99,7 @@ private slots:
void standaloneShortMonthName() const;
void longMonthName() const;
void standaloneLongMonthName() const;
+ void roundtrip() const;
};
Q_DECLARE_METATYPE(QDate)
@@ -668,17 +669,18 @@ void tst_QDate::toString_format()
void tst_QDate::isLeapYear()
{
- QVERIFY(QDate::isLeapYear(-4444));
- QVERIFY(!QDate::isLeapYear(-4443));
- QVERIFY(QDate::isLeapYear(-8));
- QVERIFY(!QDate::isLeapYear(-7));
- QVERIFY(QDate::isLeapYear(-4));
+ QVERIFY(QDate::isLeapYear(-4445));
+ QVERIFY(!QDate::isLeapYear(-4444));
+ QVERIFY(!QDate::isLeapYear(-6));
+ QVERIFY(QDate::isLeapYear(-5));
+ QVERIFY(!QDate::isLeapYear(-4));
QVERIFY(!QDate::isLeapYear(-3));
QVERIFY(!QDate::isLeapYear(-2));
- QVERIFY(!QDate::isLeapYear(-1));
- QVERIFY(!QDate::isLeapYear(1));
- QVERIFY(!QDate::isLeapYear(1));
+ QVERIFY(QDate::isLeapYear(-1));
+ QVERIFY(!QDate::isLeapYear(0)); // Doesn't exist
QVERIFY(!QDate::isLeapYear(1));
+ QVERIFY(!QDate::isLeapYear(2));
+ QVERIFY(!QDate::isLeapYear(3));
QVERIFY(QDate::isLeapYear(4));
QVERIFY(!QDate::isLeapYear(7));
QVERIFY(QDate::isLeapYear(8));
@@ -910,5 +912,37 @@ void tst_QDate::standaloneLongMonthName() const
}
}
+void tst_QDate::roundtrip() const
+{
+ // Test round trip, this exercises setDate(), isValid(), isLeapYear(),
+ // year(), month(), day(), julianDayFromDate(), and getDateFromJulianDay()
+ // to ensure they are internally consistent (but doesn't guarantee correct)
+
+ // Test Julian round trip in both BC and AD
+ QDate testDate;
+ QDate loopDate = QDate::fromJulianDay(1684899); // 1 Jan 100 BC
+ while ( loopDate.toJulianDay() <= 1757948 ) { // 31 Dec 100 AD
+ testDate.setDate( loopDate.year(), loopDate.month(), loopDate.day() );
+ QCOMPARE( loopDate.toJulianDay(), testDate.toJulianDay() );
+ loopDate = loopDate.addDays(1);
+ }
+
+ // Test Julian and Gregorian round trip during changeover period
+ loopDate = QDate::fromJulianDay(2298153); // 1 Jan 1580 AD
+ while ( loopDate.toJulianDay() <= 2300334 ) { // 31 Dec 1585 AD
+ testDate.setDate( loopDate.year(), loopDate.month(), loopDate.day() );
+ QCOMPARE( loopDate.toJulianDay(), testDate.toJulianDay() );
+ loopDate = loopDate.addDays(1);
+ }
+
+ // Test Gregorian round trip during current useful period
+ loopDate = QDate::fromJulianDay(2378497); // 1 Jan 1900 AD
+ while ( loopDate.toJulianDay() <= 2488433 ) { // 31 Dec 2100 AD
+ testDate.setDate( loopDate.year(), loopDate.month(), loopDate.day() );
+ QCOMPARE( loopDate.toJulianDay(), testDate.toJulianDay() );
+ loopDate = loopDate.addDays(1);
+ }
+}
+
QTEST_APPLESS_MAIN(tst_QDate)
#include "tst_qdate.moc"
diff --git a/tests/auto/qdatetime/tst_qdatetime.cpp b/tests/auto/qdatetime/tst_qdatetime.cpp
index a6b9a5f..6aca996 100644
--- a/tests/auto/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/qdatetime/tst_qdatetime.cpp
@@ -83,6 +83,8 @@ private slots:
void setTime();
void setTimeSpec();
void setTime_t();
+ void setMSecsSinceEpoch_data();
+ void setMSecsSinceEpoch();
void toString_enumformat();
void toString_strformat_data();
void toString_strformat();
@@ -437,6 +439,71 @@ void tst_QDateTime::setTime_t()
}
}
+void tst_QDateTime::setMSecsSinceEpoch_data()
+{
+ QTest::addColumn<qint64>("msecs");
+ QTest::addColumn<QDateTime>("utc");
+ QTest::addColumn<QDateTime>("european");
+
+ QTest::newRow("zero")
+ << Q_INT64_C(0)
+ << QDateTime(QDate(1970, 1, 1), QTime(), Qt::UTC)
+ << QDateTime(QDate(1970, 1, 1), QTime(1, 0));
+ QTest::newRow("-1")
+ << Q_INT64_C(-1)
+ << QDateTime(QDate(1969, 12, 31), QTime(23, 59, 59, 999), Qt::UTC)
+ << QDateTime(QDate(1970, 1, 1), QTime(0, 59, 59, 999));
+ QTest::newRow("123456789")
+ << Q_INT64_C(123456789)
+ << QDateTime(QDate(1970, 1, 2), QTime(10, 17, 36, 789), Qt::UTC)
+ << QDateTime(QDate(1970, 1, 2), QTime(11, 17, 36, 789), Qt::LocalTime);
+ QTest::newRow("-123456789")
+ << Q_INT64_C(-123456789)
+ << QDateTime(QDate(1969, 12, 30), QTime(13, 42, 23, 211), Qt::UTC)
+ << QDateTime(QDate(1969, 12, 30), QTime(14, 42, 23, 211), Qt::LocalTime);
+ QTest::newRow("non-time_t")
+ << (Q_INT64_C(1000) << 32)
+ << QDateTime(QDate(2106, 2, 7), QTime(6, 28, 16), Qt::UTC)
+ << QDateTime(QDate(2106, 2, 7), QTime(7, 28, 16));
+ QTest::newRow("very-large")
+ << (Q_INT64_C(123456) << 32)
+ << QDateTime(QDate(18772, 8, 15), QTime(1, 8, 14, 976), Qt::UTC)
+ << QDateTime(QDate(18772, 8, 15), QTime(3, 8, 14, 976));
+ QTest::newRow("min_date") // julian day 0 is an invalid date for QDate
+ << Q_INT64_C(-210866716800000)
+ << QDateTime(QDate::fromJulianDay(1), QTime(), Qt::UTC)
+ << QDateTime(QDate::fromJulianDay(1), QTime(1, 0));
+ QTest::newRow("max_date") // technically jd is unsigned, but fromJulianDay takes int
+ << Q_INT64_C(185331720376799999)
+ << QDateTime(QDate::fromJulianDay(0x7fffffff), QTime(21, 59, 59, 999), Qt::UTC)
+ << QDateTime(QDate::fromJulianDay(0x7fffffff), QTime(23, 59, 59, 999));
+}
+
+void tst_QDateTime::setMSecsSinceEpoch()
+{
+ QFETCH(qint64, msecs);
+ QFETCH(QDateTime, utc);
+ QFETCH(QDateTime, european);
+
+ QDateTime dt;
+ dt.setTimeSpec(Qt::UTC);
+ dt.setMSecsSinceEpoch(msecs);
+
+ QCOMPARE(dt, utc);
+ if (europeanTimeZone) {
+ QCOMPARE(dt.toLocalTime(), european);
+ }
+
+ QCOMPARE(dt.toMSecsSinceEpoch(), msecs);
+
+ if (quint64(msecs / 1000) < 0xFFFFFFFF) {
+ QCOMPARE(qint64(dt.toTime_t()), msecs / 1000);
+ }
+
+ QDateTime reference(QDate(1970, 1, 1), QTime(), Qt::UTC);
+ QCOMPARE(dt, reference.addMSecs(msecs));
+}
+
void tst_QDateTime::toString_enumformat()
{
QDateTime dt1(QDate(1995, 5, 20), QTime(12, 34, 56));
@@ -932,7 +999,7 @@ void tst_QDateTime::currentDateTimeUtc2()
do {
local = QDateTime::currentDateTime();
utc = QDateTime::currentDateTimeUtc();
- msec = QDateTime::currentMsecsSinceEpoch();
+ msec = QDateTime::currentMSecsSinceEpoch();
ok = local.time().msec() == utc.time().msec()
&& utc.time().msec() == (msec % 1000);
} while (--i && !ok);
@@ -953,6 +1020,8 @@ void tst_QDateTime::currentDateTimeUtc2()
// and finally, the time_t should equal our number
QCOMPARE(qint64(utc.toTime_t()), msec / 1000);
QCOMPARE(qint64(local.toTime_t()), msec / 1000);
+ QCOMPARE(utc.toMSecsSinceEpoch(), msec);
+ QCOMPARE(local.toMSecsSinceEpoch(), msec);
}
void tst_QDateTime::toTime_t_data()
diff --git a/tests/auto/qdir/tst_qdir.cpp b/tests/auto/qdir/tst_qdir.cpp
index ba18bbb..c8c835f 100644
--- a/tests/auto/qdir/tst_qdir.cpp
+++ b/tests/auto/qdir/tst_qdir.cpp
@@ -1470,9 +1470,16 @@ void tst_QDir::updateFileLists()
QDir dir("update-file-lists");
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE)
+ //no . and .. on these OS.
+ QCOMPARE(dir.count(), uint(4));
+ QCOMPARE(dir.entryList().size(), 4);
+ QCOMPARE(dir.entryInfoList().size(), 4);
+#else
QCOMPARE(dir.count(), uint(6));
QCOMPARE(dir.entryList().size(), 6);
QCOMPARE(dir.entryInfoList().size(), 6);
+#endif
dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot);
diff --git a/tests/auto/qfiledialog/tst_qfiledialog.cpp b/tests/auto/qfiledialog/tst_qfiledialog.cpp
index f246750..9adb4fc 100644
--- a/tests/auto/qfiledialog/tst_qfiledialog.cpp
+++ b/tests/auto/qfiledialog/tst_qfiledialog.cpp
@@ -547,6 +547,9 @@ void tst_QFiledialog::completer()
// ### FIXME: This will fail on Symbian on some tests and some environments until the file engine and QFileSystemModel
// are fixed to properly capitalize paths, so that some folders are not duplicated in QFileSystemModel.
+#if defined(Q_OS_SYMBIAN)
+ QSKIP("This will fail on Symbian on some tests and some environments until the file engine and QFileSystemModel are fixed to properly capitalize paths")
+#endif
QTRY_COMPARE(cModel->rowCount(), expected);
} QT_CATCH(...) {
qDeleteAll(files);
diff --git a/tests/auto/qgl/qgl.pro b/tests/auto/qgl/qgl.pro
index 5f058f9..20f8018 100644
--- a/tests/auto/qgl/qgl.pro
+++ b/tests/auto/qgl/qgl.pro
@@ -7,6 +7,7 @@ requires(contains(QT_CONFIG,opengl))
QT += opengl
contains(QT_CONFIG,egl):DEFINES += QGL_EGL
+win32:!wince*: DEFINES += QT_NO_EGL
SOURCES += tst_qgl.cpp
RESOURCES = qgl.qrc
diff --git a/tests/auto/qglbuffer/qglbuffer.pro b/tests/auto/qglbuffer/qglbuffer.pro
index 07d05bb..5627d2d 100644
--- a/tests/auto/qglbuffer/qglbuffer.pro
+++ b/tests/auto/qglbuffer/qglbuffer.pro
@@ -6,4 +6,6 @@ load(qttest_p4)
requires(contains(QT_CONFIG,opengl))
QT += opengl
+win32:!wince*: DEFINES += QT_NO_EGL
+
SOURCES += tst_qglbuffer.cpp
diff --git a/tests/auto/qglthreads/qglthreads.pro b/tests/auto/qglthreads/qglthreads.pro
index 73b75d4..883eef2 100644
--- a/tests/auto/qglthreads/qglthreads.pro
+++ b/tests/auto/qglthreads/qglthreads.pro
@@ -2,6 +2,8 @@ load(qttest_p4)
requires(contains(QT_CONFIG,opengl))
QT += opengl
+win32:!wince*: DEFINES += QT_NO_EGL
+
HEADERS += tst_qglthreads.h
SOURCES += tst_qglthreads.cpp
diff --git a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp
index 1007d61..49b840f 100644
--- a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp
+++ b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp
@@ -46,6 +46,7 @@
#include <QtGui/qgraphicsview.h>
#include <QtGui/qgraphicsscene.h>
#include <QtGui/qgraphicsitem.h>
+#include <QtGui/qgraphicswidget.h>
#include <QtGui/qstyleoption.h>
#include "../../shared/util.h"
@@ -73,6 +74,7 @@ private slots:
void deviceCoordinateTranslateCaching();
void inheritOpacity();
void dropShadowClipping();
+ void childrenVisibilityShouldInvalidateCache();
};
void tst_QGraphicsEffect::initTestCase()
@@ -510,6 +512,7 @@ void tst_QGraphicsEffect::drawPixmapItem()
QGraphicsView view(&scene);
view.show();
QTest::qWaitForWindowShown(&view);
+ QTRY_VERIFY(effect->repaints >= 1);
item->rotate(180);
QTest::qWait(50);
@@ -613,6 +616,47 @@ void tst_QGraphicsEffect::dropShadowClipping()
QCOMPARE(img.pixel(x, y), img.pixel(x, y-1));
}
+class MyGraphicsItem : public QGraphicsWidget
+{
+public:
+ MyGraphicsItem(QGraphicsItem *parent = 0) :
+ QGraphicsWidget(parent), nbPaint(0)
+ {}
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+ {
+ nbPaint++;
+ QGraphicsWidget::paint(painter, option, widget);
+ }
+ int nbPaint;
+};
+
+void tst_QGraphicsEffect::childrenVisibilityShouldInvalidateCache()
+{
+ QGraphicsScene scene;
+ MyGraphicsItem parent;
+ parent.resize(200, 200);
+ QGraphicsWidget child(&parent);
+ child.resize(200, 200);
+ child.setVisible(false);
+ scene.addItem(&parent);
+ QGraphicsView view(&scene);
+ view.show();
+ QApplication::setActiveWindow(&view);
+ QTest::qWaitForWindowShown(&view);
+ QTRY_COMPARE(parent.nbPaint, 1);
+ //we set an effect on the parent
+ parent.setGraphicsEffect(new QGraphicsDropShadowEffect(&parent));
+ //flush the events
+ QApplication::processEvents();
+ //new effect applied->repaint
+ QCOMPARE(parent.nbPaint, 2);
+ child.setVisible(true);
+ //flush the events
+ QApplication::processEvents();
+ //a new child appears we need to redraw the effect.
+ QCOMPARE(parent.nbPaint, 3);
+}
+
QTEST_MAIN(tst_QGraphicsEffect)
#include "tst_qgraphicseffect.moc"
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index b408ba2..89d5958 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -61,6 +61,7 @@
#include <QScrollBar>
#include <QVBoxLayout>
#include <QGraphicsEffect>
+#include <QInputContext>
#include "../../shared/util.h"
@@ -384,6 +385,7 @@ private slots:
void tabChangesFocus();
void tabChangesFocus_data();
void cacheMode();
+ void cacheMode2();
void updateCachedItemAfterMove();
void deviceTransform_data();
void deviceTransform();
@@ -423,6 +425,7 @@ private slots:
void modality_keyEvents();
void itemIsInFront();
void scenePosChange();
+ void updateMicroFocus();
// task specific tests below me
void task141694_textItemEnsureVisible();
@@ -439,6 +442,7 @@ private slots:
void QTBUG_7714_fullUpdateDiscardingOpacityUpdate2();
void QT_2653_fullUpdateDiscardingOpacityUpdate();
void QT_2649_focusScope();
+ void sortItemsWhileAdding();
private:
QList<QGraphicsItem *> paintedItems;
@@ -6880,6 +6884,9 @@ void tst_QGraphicsItem::cacheMode()
QTRY_COMPARE(tester->repaints, 4);
QCOMPARE(testerChild->repaints, 4);
QCOMPARE(testerChild2->repaints, 3);
+ tester->resetTransform();
+ testerChild->resetTransform();
+ testerChild2->resetTransform();
// Explicit update causes a repaint.
tester->update(0, 0, 5, 5);
@@ -6953,23 +6960,24 @@ void tst_QGraphicsItem::cacheMode()
// because the parent is rotated with a perspective.
testerChild->setPos(1, 1);
QTest::qWait(25);
- QTRY_COMPARE(tester->repaints, 10);
+ QTRY_COMPARE(tester->repaints, 11);
QCOMPARE(testerChild->repaints, 10);
QCOMPARE(testerChild2->repaints, 5);
+ tester->resetTransform();
// Make a huge item
tester->setGeometry(QRectF(-4000, -4000, 8000, 8000));
QTest::qWait(25);
- QTRY_COMPARE(tester->repaints, 11);
- QCOMPARE(testerChild->repaints, 10);
+ QTRY_COMPARE(tester->repaints, 12);
+ QCOMPARE(testerChild->repaints, 11);
QCOMPARE(testerChild2->repaints, 5);
// Move the large item - will cause a repaint as the
// cache is clipped.
tester->setPos(5, 0);
QTest::qWait(25);
- QTRY_COMPARE(tester->repaints, 12);
- QCOMPARE(testerChild->repaints, 10);
+ QTRY_COMPARE(tester->repaints, 13);
+ QCOMPARE(testerChild->repaints, 11);
QCOMPARE(testerChild2->repaints, 5);
// Hiding and showing should invalidate the cache
@@ -6977,11 +6985,83 @@ void tst_QGraphicsItem::cacheMode()
QTest::qWait(25);
tester->show();
QTest::qWait(25);
- QTRY_COMPARE(tester->repaints, 13);
- QCOMPARE(testerChild->repaints, 11);
+ QTRY_COMPARE(tester->repaints, 14);
+ QCOMPARE(testerChild->repaints, 12);
QCOMPARE(testerChild2->repaints, 6);
}
+void tst_QGraphicsItem::cacheMode2()
+{
+ QGraphicsScene scene(0, 0, 100, 100);
+ QGraphicsView view(&scene);
+ view.resize(150, 150);
+ view.show();
+ QApplication::setActiveWindow(&view);
+ QTest::qWaitForWindowShown(&view);
+
+ // Increase the probability of window activation
+ // not causing another repaint of test items.
+ QTest::qWait(50);
+
+ EventTester *tester = new EventTester;
+ scene.addItem(tester);
+ QTest::qWait(10);
+ QTRY_COMPARE(tester->repaints, 1);
+
+ // Switching from NoCache to NoCache (no repaint)
+ tester->setCacheMode(QGraphicsItem::NoCache);
+ QTest::qWait(50);
+ QTRY_COMPARE(tester->repaints, 1);
+
+ // Switching from NoCache to DeviceCoordinateCache (no repaint)
+ tester->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
+ QTest::qWait(50);
+ QTRY_COMPARE(tester->repaints, 1);
+
+ // Switching from DeviceCoordinateCache to DeviceCoordinateCache (no repaint)
+ tester->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
+ QTest::qWait(50);
+ QTRY_COMPARE(tester->repaints, 1);
+
+ // Switching from DeviceCoordinateCache to NoCache (no repaint)
+ tester->setCacheMode(QGraphicsItem::NoCache);
+ QTest::qWait(50);
+ QTRY_COMPARE(tester->repaints, 1);
+
+ // Switching from NoCache to ItemCoordinateCache (repaint)
+ tester->setCacheMode(QGraphicsItem::ItemCoordinateCache);
+ QTest::qWait(50);
+ QTRY_COMPARE(tester->repaints, 2);
+
+ // Switching from ItemCoordinateCache to ItemCoordinateCache (no repaint)
+ tester->setCacheMode(QGraphicsItem::ItemCoordinateCache);
+ QTest::qWait(50);
+ QTRY_COMPARE(tester->repaints, 2);
+
+ // Switching from ItemCoordinateCache to ItemCoordinateCache with different size (repaint)
+ tester->setCacheMode(QGraphicsItem::ItemCoordinateCache, QSize(100, 100));
+ QTest::qWait(50);
+ QTRY_COMPARE(tester->repaints, 3);
+
+ // Switching from ItemCoordinateCache to NoCache (repaint)
+ tester->setCacheMode(QGraphicsItem::NoCache);
+ QTest::qWait(50);
+ QTRY_COMPARE(tester->repaints, 4);
+
+ // Switching from DeviceCoordinateCache to ItemCoordinateCache (repaint)
+ tester->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
+ QTest::qWait(50);
+ QTRY_COMPARE(tester->repaints, 4);
+ tester->setCacheMode(QGraphicsItem::ItemCoordinateCache);
+ QTest::qWait(50);
+ QTRY_COMPARE(tester->repaints, 5);
+
+ // Switching from ItemCoordinateCache to DeviceCoordinateCache (repaint)
+ tester->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
+ QTest::qWait(50);
+ QTRY_COMPARE(tester->repaints, 6);
+}
+
void tst_QGraphicsItem::updateCachedItemAfterMove()
{
// A simple item that uses ItemCoordinateCache
@@ -9910,6 +9990,79 @@ void tst_QGraphicsItem::scenePosChange()
QCOMPARE(child2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 0);
}
+class MyInputContext : public QInputContext
+{
+public:
+ MyInputContext() : nbUpdates(0) {}
+ ~MyInputContext() {}
+
+ QString identifierName() { return QString(); }
+ QString language() { return QString(); }
+
+ void reset() {}
+
+ bool isComposing() const { return false; }
+
+ void update() { nbUpdates++; }
+
+ bool nbUpdates;
+};
+
+class MyInputWidget : public QGraphicsWidget
+{
+public:
+ MyInputWidget()
+ {
+ setFlag(QGraphicsItem::ItemIsFocusable, true);
+ setFlag(QGraphicsItem::ItemAcceptsInputMethod, true);
+ }
+ void mousePressEvent(QGraphicsSceneMouseEvent *event)
+ {
+ event->accept();
+ }
+
+ void doUpdateMicroFocus()
+ {
+ updateMicroFocus();
+ }
+};
+
+void tst_QGraphicsItem::updateMicroFocus()
+{
+#if defined Q_OS_WIN || defined Q_OS_MAC
+ QSKIP("QTBUG-9578", SkipAll);
+ return;
+#endif
+ QGraphicsScene scene;
+ QWidget parent;
+ QGridLayout layout;
+ parent.setLayout(&layout);
+ QGraphicsView view(&scene);
+ QGraphicsView view2(&scene);
+ layout.addWidget(&view, 0, 0);
+ layout.addWidget(&view2, 0, 1);
+ MyInputContext ic2;
+ view2.setInputContext(&ic2);
+ MyInputContext ic;
+ view.setInputContext(&ic);
+ MyInputWidget input;
+ input.setPos(0, 0);
+ input.resize(150, 150);
+ scene.addItem(&input);
+ input.setFocus();
+ parent.show();
+ view.setFocus();
+ qApp->setAutoSipEnabled(true);
+ QApplication::setActiveWindow(&parent);
+ QTest::qWaitForWindowShown(&parent);
+ QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&parent));
+ input.doUpdateMicroFocus();
+ QApplication::processEvents();
+ QTRY_COMPARE(ic.nbUpdates, 1);
+ //No update since view2 does not have the focus.
+ QTRY_COMPARE(ic2.nbUpdates, 0);
+}
+
void tst_QGraphicsItem::QTBUG_5418_textItemSetDefaultColor()
{
struct Item : public QGraphicsTextItem
@@ -10162,5 +10315,38 @@ void tst_QGraphicsItem::QT_2649_focusScope()
delete scene;
}
+class MyGraphicsItemWithItemChange : public QGraphicsWidget
+{
+public:
+ MyGraphicsItemWithItemChange(QGraphicsItem *parent = 0) : QGraphicsWidget(parent)
+ {}
+
+ QVariant itemChange(GraphicsItemChange change, const QVariant &value)
+ {
+ if (change == QGraphicsItem::ItemSceneHasChanged) {
+ foreach (QGraphicsView *view, scene()->views()) {
+ //We trigger a sort of unindexed items in the BSP
+ view->sceneRect();
+ }
+ }
+ return QGraphicsWidget::itemChange(change, value);
+ }
+};
+
+void tst_QGraphicsItem::sortItemsWhileAdding()
+{
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ QGraphicsWidget grandGrandParent;
+ grandGrandParent.resize(200, 200);
+ scene.addItem(&grandGrandParent);
+ QGraphicsWidget grandParent;
+ grandParent.resize(200, 200);
+ QGraphicsWidget parent(&grandParent);
+ parent.resize(200, 200);
+ MyGraphicsItemWithItemChange item(&parent);
+ grandParent.setParentItem(&grandGrandParent);
+}
+
QTEST_MAIN(tst_QGraphicsItem)
#include "tst_qgraphicsitem.moc"
diff --git a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
index 587b7d5..3313240 100644
--- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -111,6 +111,8 @@ private slots:
void fontPropagationSceneChange();
void geometry_data();
void geometry();
+ void width();
+ void height();
void getContentsMargins_data();
void getContentsMargins();
void initStyleOption_data();
@@ -776,6 +778,32 @@ void tst_QGraphicsWidget::geometry()
QCOMPARE(widget.geometry(), QRectF(pos, size));
}
+void tst_QGraphicsWidget::width()
+{
+ QGraphicsWidget w;
+ QCOMPARE(w.property("width").toReal(), qreal(0));
+ QSignalSpy spy(&w, SIGNAL(widthChanged()));
+ w.setProperty("width", qreal(50));
+ QCOMPARE(w.property("width").toReal(), qreal(50));
+ QCOMPARE(spy.count(), 1);
+ //calling old school setGeometry should work too
+ w.setGeometry(0, 0, 200, 200);
+ QCOMPARE(spy.count(), 2);
+}
+
+void tst_QGraphicsWidget::height()
+{
+ QGraphicsWidget w;
+ QCOMPARE(w.property("height").toReal(), qreal(0));
+ QSignalSpy spy(&w, SIGNAL(heightChanged()));
+ w.setProperty("height", qreal(50));
+ QCOMPARE(w.property("height").toReal(), qreal(50));
+ QCOMPARE(spy.count(), 1);
+ //calling old school setGeometry should work too
+ w.setGeometry(0, 0, 200, 200);
+ QCOMPARE(spy.count(), 2);
+}
+
void tst_QGraphicsWidget::getContentsMargins_data()
{
QTest::addColumn<qreal>("left");
@@ -915,6 +943,7 @@ void tst_QGraphicsWidget::layout()
layout->addItem(item);
children.append(item);
}
+ QSignalSpy spy(&widget, SIGNAL(layoutChanged()));
widget.setLayout(layout);
QTRY_COMPARE(widget.layout(), static_cast<QGraphicsLayout*>(layout));
@@ -923,7 +952,7 @@ void tst_QGraphicsWidget::layout()
QCOMPARE(item->parentWidget(), (QGraphicsWidget *)&widget);
QVERIFY(item->geometry() != QRectF(0, 0, -1, -1));
}
-
+ QCOMPARE(spy.count(), 1);
// don't crash
widget.setLayout(0);
}
diff --git a/tests/auto/qguard/qguard.pro b/tests/auto/qguard/qguard.pro
deleted file mode 100644
index f249dde..0000000
--- a/tests/auto/qguard/qguard.pro
+++ /dev/null
@@ -1,2 +0,0 @@
-load(qttest_p4)
-SOURCES += tst_qguard.cpp
diff --git a/tests/auto/qguard/tst_qguard.cpp b/tests/auto/qguard/tst_qguard.cpp
deleted file mode 100644
index 465ad0e..0000000
--- a/tests/auto/qguard/tst_qguard.cpp
+++ /dev/null
@@ -1,350 +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$
-**
-****************************************************************************/
-
-// NOTE: This is identical to the QPointer autotest
-
-#include <QtTest/QtTest>
-
-#include <QApplication>
-#include <QDebug>
-#include <QWidget>
-#include <private/qguard_p.h>
-
-class tst_QGuard : public QObject
-{
- Q_OBJECT
-public:
- tst_QGuard();
- ~tst_QGuard();
-
- inline tst_QGuard *me() const
- { return const_cast<tst_QGuard *>(this); }
-
-public slots:
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
-private slots:
- void constructors();
- void destructor();
- void assignment_operators();
- void equality_operators();
- void isNull();
- void dereference_operators();
- void disconnect();
- void castDuringDestruction();
- void data() const;
- void dataSignature() const;
-};
-
-tst_QGuard::tst_QGuard()
-{ }
-
-tst_QGuard::~tst_QGuard()
-{ }
-
-void tst_QGuard::initTestCase()
-{ }
-
-void tst_QGuard::cleanupTestCase()
-{ }
-
-void tst_QGuard::init()
-{ }
-
-void tst_QGuard::cleanup()
-{ }
-
-void tst_QGuard::constructors()
-{
- QGuard<QObject> p1;
- QGuard<QObject> p2(this);
- QGuard<QObject> p3(p2);
- QCOMPARE(p1, QGuard<QObject>(0));
- QCOMPARE(p2, QGuard<QObject>(this));
- QCOMPARE(p3, QGuard<QObject>(this));
-}
-
-void tst_QGuard::destructor()
-{
- QObject *object = new QObject;
- QGuard<QObject> p = object;
- QCOMPARE(p, QGuard<QObject>(object));
- delete object;
- QCOMPARE(p, QGuard<QObject>(0));
-}
-
-void tst_QGuard::assignment_operators()
-{
- QGuard<QObject> p1;
- QGuard<QObject> p2;
-
- p1 = this;
- p2 = p1;
-
- QCOMPARE(p1, QGuard<QObject>(this));
- QCOMPARE(p2, QGuard<QObject>(this));
- QCOMPARE(p1, QGuard<QObject>(p2));
-
- p1 = 0;
- p2 = p1;
- QCOMPARE(p1, QGuard<QObject>(0));
- QCOMPARE(p2, QGuard<QObject>(0));
- QCOMPARE(p1, QGuard<QObject>(p2));
-
- QObject *object = new QObject;
-
- p1 = object;
- p2 = p1;
- QCOMPARE(p1, QGuard<QObject>(object));
- QCOMPARE(p2, QGuard<QObject>(object));
- QCOMPARE(p1, QGuard<QObject>(p2));
-
- delete object;
- QCOMPARE(p1, QGuard<QObject>(0));
- QCOMPARE(p2, QGuard<QObject>(0));
- QCOMPARE(p1, QGuard<QObject>(p2));
-}
-
-void tst_QGuard::equality_operators()
-{
- QGuard<QObject> p1;
- QGuard<QObject> p2;
-
- QVERIFY(p1 == p2);
-
- QObject *object = 0;
- QWidget *widget = 0;
-
- p1 = object;
- QVERIFY(p1 == p2);
- QVERIFY(p1 == object);
- p2 = object;
- QVERIFY(p2 == p1);
- QVERIFY(p2 == object);
-
- p1 = this;
- QVERIFY(p1 != p2);
- p2 = p1;
- QVERIFY(p1 == p2);
-
- // compare to zero
- p1 = 0;
- QVERIFY(p1 == 0);
- QVERIFY(0 == p1);
- QVERIFY(p2 != 0);
- QVERIFY(0 != p2);
- QVERIFY(p1 == object);
- QVERIFY(object == p1);
- QVERIFY(p2 != object);
- QVERIFY(object != p2);
- QVERIFY(p1 == widget);
- QVERIFY(widget == p1);
- QVERIFY(p2 != widget);
- QVERIFY(widget != p2);
-}
-
-void tst_QGuard::isNull()
-{
- QGuard<QObject> p1;
- QVERIFY(p1.isNull());
- p1 = this;
- QVERIFY(!p1.isNull());
- p1 = 0;
- QVERIFY(p1.isNull());
-}
-
-void tst_QGuard::dereference_operators()
-{
- QGuard<tst_QGuard> p1 = this;
-
- QObject *object = p1->me();
- QVERIFY(object == this);
-
- QObject &ref = *p1;
- QVERIFY(&ref == this);
-
- object = static_cast<QObject *>(p1);
- QVERIFY(object == this);
-}
-
-void tst_QGuard::disconnect()
-{
- QGuard<QObject> p1 = new QObject;
- QVERIFY(!p1.isNull());
- p1->disconnect();
- QVERIFY(!p1.isNull());
- delete static_cast<QObject *>(p1);
- QVERIFY(p1.isNull());
-}
-
-class ChildObject : public QObject
-{
- QGuard<QObject> guardedPointer;
-
-public:
- ChildObject(QObject *parent)
- : QObject(parent), guardedPointer(parent)
- { }
- ~ChildObject();
-};
-
-ChildObject::~ChildObject()
-{
- QCOMPARE(static_cast<QObject *>(guardedPointer), static_cast<QObject *>(0));
- QCOMPARE(qobject_cast<QObject *>(guardedPointer), static_cast<QObject *>(0));
-}
-
-class ChildWidget : public QWidget
-{
- QGuard<QWidget> guardedPointer;
-
-public:
- ChildWidget(QWidget *parent)
- : QWidget(parent), guardedPointer(parent)
- { }
- ~ChildWidget();
-};
-
-ChildWidget::~ChildWidget()
-{
- QCOMPARE(static_cast<QWidget *>(guardedPointer), static_cast<QWidget *>(0));
- QCOMPARE(qobject_cast<QWidget *>(guardedPointer), static_cast<QWidget *>(0));
-}
-
-class DerivedChild;
-
-class DerivedParent : public QObject
-{
- Q_OBJECT
-
- DerivedChild *derivedChild;
-
-public:
- DerivedParent();
- ~DerivedParent();
-};
-
-class DerivedChild : public QObject
-{
- Q_OBJECT
-
- DerivedParent *parentPointer;
- QGuard<DerivedParent> guardedParentPointer;
-
-public:
- DerivedChild(DerivedParent *parent)
- : QObject(parent), parentPointer(parent), guardedParentPointer(parent)
- { }
- ~DerivedChild();
-};
-
-DerivedParent::DerivedParent()
- : QObject()
-{
- derivedChild = new DerivedChild(this);
-}
-
-DerivedParent::~DerivedParent()
-{
- delete derivedChild;
-}
-
-DerivedChild::~DerivedChild()
-{
- QCOMPARE(static_cast<DerivedParent *>(guardedParentPointer), parentPointer);
- QCOMPARE(qobject_cast<DerivedParent *>(guardedParentPointer), parentPointer);
-}
-
-void tst_QGuard::castDuringDestruction()
-{
- {
- QObject *parentObject = new QObject();
- (void) new ChildObject(parentObject);
- delete parentObject;
- }
-
- {
- QWidget *parentWidget = new QWidget();
- (void) new ChildWidget(parentWidget);
- delete parentWidget;
- }
-
- {
- delete new DerivedParent();
- }
-}
-
-void tst_QGuard::data() const
-{
- /* Check value of a default constructed object. */
- {
- QGuard<QObject> p;
- QCOMPARE(p.data(), static_cast<QObject *>(0));
- }
-
- /* Check value of a default constructed object. */
- {
- QObject *const object = new QObject();
- QGuard<QObject> p(object);
- QCOMPARE(p.data(), object);
- }
-}
-
-void tst_QGuard::dataSignature() const
-{
- /* data() should be const. */
- {
- const QGuard<QObject> p;
- p.data();
- }
-
- /* The return type should be T. */
- {
- const QGuard<QWidget> p;
- /* If the types differs, the QCOMPARE will fail to instansiate. */
- QCOMPARE(p.data(), static_cast<QWidget *>(0));
- }
-}
-
-QTEST_MAIN(tst_QGuard)
-#include "tst_qguard.moc"
diff --git a/tests/auto/qimagereader/images/corrupt.svg b/tests/auto/qimagereader/images/corrupt.svg
new file mode 100644
index 0000000..8747df0
--- /dev/null
+++ b/tests/auto/qimagereader/images/corrupt.svg
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="40px"
+ height="5px"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="test.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ inkscape:window-height="1005"
+ \ No newline at end of file
diff --git a/tests/auto/qimagereader/images/corrupt.svgz b/tests/auto/qimagereader/images/corrupt.svgz
new file mode 100644
index 0000000..67fdcee
--- /dev/null
+++ b/tests/auto/qimagereader/images/corrupt.svgz
Binary files differ
diff --git a/tests/auto/qimagereader/images/rect.svg b/tests/auto/qimagereader/images/rect.svg
new file mode 100644
index 0000000..c56549a
--- /dev/null
+++ b/tests/auto/qimagereader/images/rect.svg
@@ -0,0 +1,462 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="128"
+ height="128"
+ viewBox="0 0 105.427 137.439"
+ id="Livello_1"
+ xml:space="preserve"
+ style="overflow:visible"><defs
+ id="defs2727"><linearGradient
+ x1="26.294399"
+ y1="11.6704"
+ x2="71.901901"
+ y2="133.0273"
+ id="linearGradient3352"
+ xlink:href="#XMLID_34_"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ x1="36.838902"
+ y1="7.7075"
+ x2="82.446297"
+ y2="129.0645"
+ id="linearGradient3354"
+ xlink:href="#XMLID_34_"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ x1="33.882301"
+ y1="23.583"
+ x2="39.972198"
+ y2="23.583"
+ id="XMLID_34_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ id="stop2672"
+ style="stop-color:#ff5d5d;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop2674"
+ style="stop-color:#e20800;stop-opacity:1"
+ offset="1" />
+ </linearGradient><linearGradient
+ x1="33.882301"
+ y1="23.583"
+ x2="39.972198"
+ y2="23.583"
+ id="linearGradient3368"
+ xlink:href="#XMLID_34_"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ x1="54.356899"
+ y1="1.124"
+ x2="99.964401"
+ y2="122.481"
+ id="linearGradient3370"
+ xlink:href="#XMLID_34_"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ x1="15.8457"
+ y1="15.5972"
+ x2="61.453098"
+ y2="136.9541"
+ id="linearGradient3376"
+ xlink:href="#XMLID_34_"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ x1="43.438"
+ y1="5.2275"
+ x2="89.045403"
+ y2="126.5845"
+ id="linearGradient3382"
+ xlink:href="#XMLID_34_"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ x1="8.1176996"
+ y1="14.9019"
+ x2="70.759598"
+ y2="117.2331"
+ id="linearGradient3792"
+ xlink:href="#XMLID_30_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9991,-4.18e-2,4.18e-2,0.9991,-2.4309,1.195)" /><linearGradient
+ x1="10.5708"
+ y1="10.1548"
+ x2="73.2117"
+ y2="112.4844"
+ id="linearGradient3794"
+ xlink:href="#XMLID_30_"
+ gradientUnits="userSpaceOnUse" /><linearGradient
+ x1="6.2178001"
+ y1="72.223602"
+ x2="79.360802"
+ y2="72.223602"
+ id="XMLID_26_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,2.1512354)">
+ <stop
+ id="stop2578"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop2580"
+ style="stop-color:#eeeeec;stop-opacity:1"
+ offset="1" />
+ </linearGradient><filter
+ id="filter5869"><feGaussianBlur
+ id="feGaussianBlur5871"
+ stdDeviation="1.2254964"
+ inkscape:collect="always" /></filter><filter
+ id="filter5873"><feGaussianBlur
+ id="feGaussianBlur5875"
+ stdDeviation="1.3615922"
+ inkscape:collect="always" /></filter><filter
+ id="filter2854"><feGaussianBlur
+ id="feGaussianBlur2856"
+ stdDeviation="0.8944793"
+ inkscape:collect="always" /></filter></defs>
+<filter
+ id="AI_Sfocatura_1">
+ <feGaussianBlur
+ id="feGaussianBlur2545"
+ stdDeviation="1" />
+</filter>
+<g
+ transform="translate(-3.2052027,3.2058836)"
+ id="g2547">
+ <g
+ transform="matrix(0.9982563,0,0,0.9982563,-1.5492234e-2,0.2232388)"
+ id="g2549">
+ <g
+ id="g2551">
+ <linearGradient
+ x1="6.2178001"
+ y1="68.029297"
+ x2="79.360802"
+ y2="68.029297"
+ id="XMLID_24_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ id="stop2554"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop2556"
+ style="stop-color:#eeeeec;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <path
+ d="M 9.542,121.224 C 7.713,121.224 6.217,119.728 6.217,117.9 L 6.217,18.16 C 6.217,16.331 7.713,14.835 9.542,14.835 L 76.036,14.835 C 77.864,14.835 79.36,16.331 79.36,18.16 L 79.36,117.9 C 79.36,119.728 77.864,121.224 76.036,121.224 L 9.542,121.224 z"
+ id="path2558"
+ style="fill:url(#XMLID_24_)" />
+ </g>
+ <g
+ id="g2560">
+ <linearGradient
+ x1="10.5718"
+ y1="15.3989"
+ x2="73.212097"
+ y2="117.7277"
+ id="XMLID_25_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ id="stop2563"
+ style="stop-color:#77b753;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop2565"
+ style="stop-color:#00892c;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <path
+ d="M 11.204,18.159 C 10.29,18.159 9.542,18.907 9.542,19.821 L 9.542,116.237 C 9.542,117.151 10.29,117.899 11.204,117.899 L 74.375,117.899 C 75.289,117.899 76.037,117.151 76.037,116.237 L 76.037,19.821 C 76.037,18.907 75.289,18.159 74.375,18.159 L 11.204,18.159 z"
+ id="path2567"
+ style="fill:url(#XMLID_25_)" />
+ </g>
+ </g>
+ <g
+ transform="matrix(0.9982563,0,0,0.9982563,1.05825,0.2232388)"
+ id="g2569">
+ <path
+ d="M 11.639,126.468 C 9.811,126.468 8.314,124.972 8.314,123.143 L 8.314,23.403 C 8.314,21.574 9.811,20.078 11.639,20.078 L 78.134,20.078 C 79.962,20.078 81.458,21.574 81.458,23.403 L 81.458,123.143 C 81.458,124.972 79.962,126.468 78.134,126.468 L 23.696022,126.468 L 11.639,126.468 z"
+ transform="matrix(1.041449,0,0,1,-4.451967,3.1512354)"
+ id="path2575"
+ style="opacity:0.6;filter:url(#filter2854)" /><path
+ d="M 9.542,127.56924 C 7.714,127.56924 6.218,126.07324 6.218,124.24624 L 6.218,24.505236 C 6.218,22.677236 7.714,21.181236 9.542,21.181236 L 76.037,21.181236 C 77.865,21.181236 79.361,22.677236 79.361,24.505236 L 79.361,124.24624 C 79.361,126.07324 77.865,127.56924 76.037,127.56924 L 9.542,127.56924 z"
+ id="path2582"
+ style="fill:url(#XMLID_26_)" />
+ <g
+ transform="translate(0,2.1512354)"
+ id="g2584">
+ <g
+ transform="matrix(1.0276326,0,0,1,-2.2508995,0)"
+ id="g2586"
+ style="opacity:0.5;filter:url(#AI_Sfocatura_1)">
+ <path
+ d="M 11.639,123.321 C 9.811,123.321 8.314,121.824 8.314,119.997 L 81.458,119.997 C 81.458,121.824 79.962,123.321 78.134,123.321 L 11.639,123.321 z"
+ id="path2588" />
+ </g>
+ <linearGradient
+ x1="6.2178001"
+ y1="69.078102"
+ x2="79.360802"
+ y2="69.078102"
+ id="XMLID_27_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ id="stop2591"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop2593"
+ style="stop-color:#eeeeec;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <path
+ d="M 9.542,122.272 C 7.714,122.272 6.218,120.776 6.218,118.947 L 6.218,19.207 C 6.218,17.378 7.714,15.882 9.542,15.882 L 76.037,15.882 C 77.865,15.882 79.361,17.378 79.361,19.207 L 79.361,118.947 C 79.361,120.776 77.865,122.272 76.037,122.272 L 9.542,122.272 z"
+ id="path2595"
+ style="fill:url(#XMLID_27_)" />
+ </g>
+ <g
+ transform="translate(0,3.2268531)"
+ id="g2597">
+ <g
+ transform="matrix(1.0368435,0,0,1,-3.0011994,-1.0756177)"
+ id="g2599"
+ style="opacity:0.5;filter:url(#AI_Sfocatura_1)">
+ <path
+ d="M 11.639,120.175 C 9.811,120.175 8.314,118.679 8.314,116.85 L 81.458,116.85 C 81.458,118.679 79.962,120.175 78.134,120.175 L 11.639,120.175 z"
+ id="path2601" />
+ </g>
+ <linearGradient
+ x1="6.2178001"
+ y1="65.931602"
+ x2="79.360802"
+ y2="65.931602"
+ id="XMLID_28_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(0,-1.0756177)">
+ <stop
+ id="stop2604"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop2606"
+ style="stop-color:#eeeeec;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <path
+ d="M 9.542,118.05038 C 7.714,118.05038 6.218,116.55438 6.218,114.72638 L 6.218,14.986382 C 6.218,13.157382 7.714,11.661382 9.542,11.661382 L 76.037,11.661382 C 77.865,11.661382 79.361,13.157382 79.361,14.986382 L 79.361,114.72638 C 79.361,116.55438 77.865,118.05038 76.037,118.05038 L 9.542,118.05038 z"
+ id="path2608"
+ style="fill:url(#XMLID_28_)" />
+ </g>
+ <g
+ transform="translate(0,1.8317954)"
+ id="g2610">
+ <g
+ transform="matrix(1.0184218,0,0,1.0158314,-1.4821779,-1.8527316)"
+ id="g2612"
+ style="opacity:0.5;filter:url(#AI_Sfocatura_1)">
+ <path
+ d="M 10.639,117.029 C 8.811,117.029 7.314,115.532 7.314,113.704 L 7.314,13.964 C 7.314,12.135 8.811,10.639 10.639,10.639 L 77.134,10.639 C 78.962,10.639 80.458,12.135 80.458,13.964 L 80.458,113.704 C 80.458,115.532 78.962,117.029 77.134,117.029 L 10.639,117.029 z"
+ id="path2614" />
+ </g>
+ <linearGradient
+ x1="6.2178001"
+ y1="62.785599"
+ x2="79.360802"
+ y2="62.785599"
+ id="XMLID_29_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ id="stop2617"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop2619"
+ style="stop-color:#eeeeec;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <path
+ d="M 9.542,115.98 C 7.714,115.98 6.218,114.483 6.218,112.656 L 6.218,12.916 C 6.218,11.087 7.714,9.591 9.542,9.591 L 76.037,9.591 C 77.865,9.591 79.361,11.087 79.361,12.916 L 79.361,112.657 C 79.361,114.484 77.865,115.981 76.037,115.981 L 9.542,115.981 L 9.542,115.98 z"
+ id="path2621"
+ style="fill:url(#XMLID_29_)" />
+ <linearGradient
+ x1="10.5708"
+ y1="10.1548"
+ x2="73.2117"
+ y2="112.4844"
+ id="XMLID_30_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ id="stop2624"
+ style="stop-color:#73bdf2;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop2626"
+ style="stop-color:#3592ee;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <path
+ d="M 11.204,12.916 C 10.289,12.916 9.541,13.664 9.541,14.578 L 9.541,110.994 C 9.541,111.909 10.289,112.657 11.204,112.657 L 74.373,112.657 C 75.288,112.657 76.036,111.909 76.036,110.994 L 76.036,14.578 C 76.036,13.664 75.288,12.916 74.373,12.916 L 11.204,12.916 L 11.204,12.916 z"
+ id="path2628"
+ style="fill:url(#linearGradient3794)" />
+ </g>
+ </g>
+ <g
+ transform="matrix(0.9961334,-6.5068755e-2,6.5068755e-2,0.9961334,-5.7493275,-6.3015051)"
+ id="g2630">
+ <g
+ transform="matrix(1.0311837,0,0,1.0154411,-2.8218065,-1.9088007)"
+ id="g2632"
+ style="opacity:0.6;filter:url(#filter5869)">
+ <path
+ d="M 10.744,123.615 C 8.917,123.691 7.36,122.259 7.283,120.432 L 3.118,20.779 C 3.042,18.952 4.474,17.395 6.301,17.319 L 72.737,14.542 C 74.563,14.465 76.121,15.898 76.198,17.725 L 80.363,117.377 C 80.439,119.204 79.007,120.761 77.181,120.839 L 10.744,123.615 z"
+ id="path2634" />
+ </g>
+ <g
+ id="g2636">
+
+ <linearGradient
+ x1="3.7607"
+ y1="67.532204"
+ x2="76.909698"
+ y2="67.532204"
+ id="XMLID_31_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9991,-4.18e-2,4.18e-2,0.9991,-2.4309,1.195)">
+ <stop
+ id="stop2639"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop2641"
+ style="stop-color:#eeeeec;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <path
+ d="M 9.695,121.518 C 7.868,121.595 6.311,120.163 6.234,118.335 L 2.069,18.682 C 1.993,16.855 3.425,15.298 5.252,15.222 L 71.688,12.444 C 73.514,12.368 75.072,13.8 75.149,15.627 L 79.314,115.28 C 79.391,117.106 77.959,118.663 76.131,118.741 L 9.695,121.518 z"
+ id="path2643"
+ style="fill:url(#XMLID_31_)" />
+ </g>
+ <path
+ d="M 7.051,18.474 C 6.138,18.513 5.422,19.291 5.46,20.204 L 9.486,116.535 C 9.525,117.448 10.303,118.164 11.217,118.126 L 74.331,115.489 C 75.244,115.451 75.96,114.672 75.922,113.759 L 71.897,17.427 C 71.859,16.513 71.08,15.797 70.167,15.836 L 7.051,18.474 z"
+ id="path2652"
+ style="fill:url(#linearGradient3792);fill-opacity:1" />
+ <path
+ d="M 9.5625,22.375 C 10.84375,52.927083 12.125,83.479167 13.40625,114.03125 C 32.885417,113.21875 52.364583,112.40625 71.84375,111.59375 C 70.5625,81.041667 69.28125,50.489583 68,19.9375 C 48.520833,20.75 29.041667,21.5625 9.5625,22.375 z"
+ id="path4189"
+ style="opacity:0.6;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:1.00000001, 1.00000001;stroke-dashoffset:0;stroke-opacity:1" /></g>
+ <g
+ transform="matrix(0.9982563,0,0,0.9982563,10.72193,-5.1454722)"
+ id="g2654">
+ <g
+ transform="translate(-4.2156998e-8,1.0756177)"
+ id="g2656"
+ style="opacity:0.6;filter:url(#filter5873)">
+ <path
+ d="M 10.854785,112.52047 C 9.0174891,112.09656 7.8676311,110.2731 8.2990859,108.46891 L 31.839177,9.9940152 C 32.271664,8.1888112 34.127539,7.0580233 35.964835,7.481942 L 102.78149,22.901224 C 104.61776,23.325142 105.76865,25.149615 105.33616,26.954819 L 81.79607,125.42768 C 81.364615,127.23289 79.507708,128.36368 77.671444,127.93976 L 10.854785,112.52047 z"
+ id="path2658" />
+ </g>
+ <g
+ id="g2660">
+
+ <linearGradient
+ x1="16.688499"
+ y1="-8.9546003"
+ x2="94.108398"
+ y2="105.6356"
+ id="XMLID_33_"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.9735,0.2287,-0.2287,0.9735,14.4454,7.996)">
+ <stop
+ id="stop2663"
+ style="stop-color:#ffffff;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop2665"
+ style="stop-color:#eeeeec;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <path
+ d="M 12.707,111.688 C 10.927,111.271 9.813,109.472 10.231,107.692 L 33.037,10.593 C 33.455,8.813 35.254,7.698 37.034,8.116 L 101.767,23.32 C 103.546,23.738 104.661,25.537 104.243,27.317 L 81.436,124.415 C 81.019,126.195 79.219,127.31 77.44,126.892 L 12.707,111.688 z"
+ id="path2667"
+ style="fill:url(#XMLID_33_)" />
+ </g>
+ <path
+ d="M 33.925,25.17 L 35.435,25.3 C 35.369,25.76 35.413,26.134 35.567,26.422 C 35.721,26.71 35.941,26.887 36.226,26.954 C 36.538,27.027 36.832,26.947 37.114,26.715 C 37.396,26.483 37.594,26.116 37.712,25.615 C 37.821,25.149 37.805,24.759 37.661,24.445 C 37.517,24.132 37.298,23.939 37.004,23.87 C 36.811,23.825 36.571,23.817 36.281,23.846 L 36.797,22.386 C 37.187,22.487 37.522,22.455 37.801,22.292 C 38.076,22.127 38.26,21.847 38.353,21.451 C 38.431,21.12 38.41,20.843 38.291,20.618 C 38.172,20.392 37.984,20.25 37.729,20.19 C 37.473,20.13 37.226,20.187 36.987,20.358 C 36.749,20.531 36.562,20.825 36.427,21.24 L 35.104,20.624 C 35.455,19.78 35.886,19.208 36.401,18.909 C 36.915,18.61 37.492,18.536 38.131,18.686 C 38.85,18.855 39.36,19.244 39.663,19.853 C 39.967,20.462 40.045,21.076 39.9,21.695 C 39.802,22.113 39.618,22.468 39.35,22.758 C 39.081,23.049 38.726,23.276 38.287,23.439 C 38.699,23.661 38.996,24.004 39.18,24.471 C 39.362,24.937 39.383,25.471 39.242,26.073 C 39.036,26.949 38.604,27.613 37.948,28.064 C 37.29,28.515 36.601,28.655 35.88,28.486 C 35.189,28.323 34.661,27.944 34.297,27.347 C 33.931,26.751 33.808,26.025 33.925,25.17 z"
+ id="path2676"
+ style="fill:url(#linearGradient3368);fill-opacity:1" />
+ <linearGradient
+ x1="26.294399"
+ y1="11.6704"
+ x2="71.901901"
+ y2="133.0273"
+ id="XMLID_35_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ id="stop2679"
+ style="stop-color:#ff8080;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop2681"
+ style="stop-color:#e20800;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <path
+ d="M 32.977,38.964 C 33.619,37.58 34.903,36.55 35.811,35.945 C 36.752,35.319 37.49,34.55 37.729,33.53 C 38.094,31.979 36.471,30.257 34.621,31.997 C 33.74,29.616 31.507,30.433 31.143,31.984 C 30.903,33.003 31.223,34.019 31.786,35 C 32.329,35.946 33.021,37.439 32.977,38.964 z"
+ id="path2683"
+ style="fill:url(#linearGradient3352);fill-opacity:1" />
+ <path
+ d="M 80.223,109.559 L 78.711,109.43 C 78.779,108.969 78.734,108.595 78.58,108.308 C 78.426,108.02 78.205,107.842 77.922,107.776 C 77.61,107.703 77.315,107.782 77.033,108.014 C 76.751,108.246 76.553,108.614 76.433,109.114 C 76.324,109.581 76.341,109.97 76.484,110.284 C 76.629,110.598 76.849,110.79 77.142,110.859 C 77.335,110.904 77.576,110.913 77.865,110.883 L 77.349,112.343 C 76.958,112.242 76.624,112.274 76.345,112.439 C 76.07,112.603 75.886,112.883 75.792,113.279 C 75.714,113.609 75.735,113.887 75.854,114.112 C 75.973,114.339 76.161,114.481 76.416,114.541 C 76.672,114.602 76.918,114.545 77.156,114.372 C 77.394,114.2 77.582,113.906 77.717,113.49 L 79.039,114.106 C 78.689,114.95 78.258,115.521 77.742,115.82 C 77.228,116.119 76.652,116.193 76.013,116.043 C 75.294,115.874 74.783,115.486 74.48,114.876 C 74.175,114.268 74.097,113.653 74.244,113.034 C 74.342,112.616 74.525,112.262 74.795,111.971 C 75.063,111.681 75.418,111.453 75.857,111.289 C 75.445,111.069 75.146,110.725 74.964,110.259 C 74.78,109.793 74.761,109.259 74.902,108.657 C 75.109,107.78 75.541,107.117 76.197,106.666 C 76.855,106.216 77.543,106.075 78.265,106.244 C 78.956,106.406 79.484,106.786 79.849,107.382 C 80.217,107.978 80.34,108.704 80.223,109.559 z"
+ id="path2694"
+ style="fill:#e20800;fill-opacity:1" /><path
+ d="M 81.063,95.83 C 80.422,97.214 79.138,98.244 78.23,98.85 C 77.29,99.477 76.55,100.246 76.311,101.264 C 75.947,102.815 77.57,104.536 79.419,102.797 C 80.301,105.178 82.533,104.361 82.898,102.811 C 83.138,101.791 82.819,100.776 82.255,99.795 C 81.711,98.849 81.021,97.355 81.063,95.83 z"
+ id="path2701"
+ style="fill:url(#linearGradient3382);fill-opacity:1" />
+ <linearGradient
+ x1="54.356899"
+ y1="1.124"
+ x2="99.964401"
+ y2="122.481"
+ id="XMLID_39_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ id="stop2704"
+ style="stop-color:#ff8080;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop2706"
+ style="stop-color:#e20800;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <path
+ d="M 63.174,42.222 C 64.361,39.656 66.742,37.748 68.427,36.625 C 70.171,35.463 71.54,34.04 71.985,32.15 C 72.66,29.274 69.651,26.081 66.22,29.307 C 64.585,24.892 60.448,26.406 59.772,29.281 C 59.329,31.172 59.921,33.055 60.965,34.873 C 61.97,36.628 63.253,39.396 63.174,42.222 z"
+ id="path2708"
+ style="fill:url(#linearGradient3370);fill-opacity:1" />
+ <linearGradient
+ x1="36.838902"
+ y1="7.7075"
+ x2="82.446297"
+ y2="129.0645"
+ id="XMLID_40_"
+ xlink:href="#XMLID_39_"
+ gradientUnits="userSpaceOnUse">
+ <stop
+ id="stop2711"
+ style="stop-color:#ff8080;stop-opacity:1"
+ offset="0" />
+ <stop
+ id="stop2713"
+ style="stop-color:#e20800;stop-opacity:1"
+ offset="1" />
+ </linearGradient>
+ <path
+ d="M 55.486,74.959 C 56.672,72.393 59.054,70.485 60.737,69.362 C 62.481,68.2 63.851,66.777 64.296,64.886 C 64.97,62.01 61.962,58.818 58.532,62.043 C 56.897,57.628 52.759,59.142 52.082,62.018 C 51.638,63.908 52.23,65.792 53.275,67.609 C 54.281,69.364 55.565,72.132 55.486,74.959 z"
+ id="path2715"
+ style="fill:url(#linearGradient3354);fill-opacity:1" />
+ <path
+ d="M 51.37,92.488 C 50.182,95.054 47.801,96.961 46.117,98.084 C 44.373,99.246 43.004,100.67 42.559,102.561 C 41.884,105.436 44.893,108.627 48.323,105.404 C 49.958,109.82 54.096,108.304 54.772,105.428 C 55.217,103.538 54.623,101.655 53.579,99.836 C 52.573,98.082 51.291,95.314 51.37,92.488 z"
+ id="path2724"
+ style="fill:url(#linearGradient3376);fill-opacity:1" />
+ </g>
+</g>
+</svg> \ No newline at end of file
diff --git a/tests/auto/qimagereader/images/rect.svgz b/tests/auto/qimagereader/images/rect.svgz
new file mode 100644
index 0000000..c2e193b
--- /dev/null
+++ b/tests/auto/qimagereader/images/rect.svgz
Binary files differ
diff --git a/tests/auto/qimagereader/qimagereader.pro b/tests/auto/qimagereader/qimagereader.pro
index 5b061b0..402e94b 100644
--- a/tests/auto/qimagereader/qimagereader.pro
+++ b/tests/auto/qimagereader/qimagereader.pro
@@ -9,6 +9,7 @@ RESOURCES += qimagereader.qrc
!contains(QT_CONFIG, no-jpeg):DEFINES += QTEST_HAVE_JPEG
!contains(QT_CONFIG, no-mng):DEFINES += QTEST_HAVE_MNG
!contains(QT_CONFIG, no-tiff):DEFINES += QTEST_HAVE_TIFF
+!contains(QT_CONFIG, no-svg):DEFINES += QTEST_HAVE_SVG
win32-msvc:QMAKE_CXXFLAGS -= -Zm200
win32-msvc:QMAKE_CXXFLAGS += -Zm800
diff --git a/tests/auto/qimagereader/qimagereader.qrc b/tests/auto/qimagereader/qimagereader.qrc
index bc48244..278427b 100644
--- a/tests/auto/qimagereader/qimagereader.qrc
+++ b/tests/auto/qimagereader/qimagereader.qrc
@@ -61,5 +61,9 @@
<file>images/four-frames.gif</file>
<file>images/qt-gif-anim.gif</file>
<file>images/qt-gif-noanim.gif</file>
+ <file>images/rect.svg</file>
+ <file>images/rect.svgz</file>
+ <file>images/corrupt.svg</file>
+ <file>images/corrupt.svgz</file>
</qresource>
</RCC>
diff --git a/tests/auto/qimagereader/tst_qimagereader.cpp b/tests/auto/qimagereader/tst_qimagereader.cpp
index 99244c2..1b4c502 100644
--- a/tests/auto/qimagereader/tst_qimagereader.cpp
+++ b/tests/auto/qimagereader/tst_qimagereader.cpp
@@ -245,6 +245,10 @@ void tst_QImageReader::readImage_data()
QTest::newRow("MNG: ball") << QString("ball.mng") << true << QByteArray("mng");
QTest::newRow("MNG: fire") << QString("fire.mng") << true << QByteArray("mng");
#endif
+#if defined QTEST_HAVE_SVG
+ QTest::newRow("SVG: rect") << QString("rect.svg") << true << QByteArray("svg");
+ QTest::newRow("SVGZ: rect") << QString("rect.svgz") << true << QByteArray("svgz");
+#endif
}
void tst_QImageReader::readImage()
@@ -294,7 +298,6 @@ void tst_QImageReader::readImage()
QVERIFY(!image2Reader.format().isEmpty());
}
QCOMPARE(image, image2);
-
do {
QVERIFY2(!image.isNull(), io.errorString().toLatin1().constData());
} while (!(image = io.read()).isNull());
@@ -342,6 +345,10 @@ void tst_QImageReader::setScaledSize_data()
QTest::newRow("MNG: ball") << "ball" << QSize(200, 200) << QByteArray("mng");
QTest::newRow("MNG: fire") << "fire" << QSize(200, 200) << QByteArray("mng");
#endif // QTEST_HAVE_MNG
+#if defined QTEST_HAVE_SVG
+ QTest::newRow("SVG: rect") << "rect" << QSize(200, 200) << QByteArray("svg");
+ QTest::newRow("SVGZ: rect") << "rect" << QSize(200, 200) << QByteArray("svgz");
+#endif
}
void tst_QImageReader::setScaledSize()
@@ -409,6 +416,10 @@ void tst_QImageReader::setClipRect_data()
QTest::newRow("MNG: ball") << "ball" << QRect(0, 0, 50, 50) << QByteArray("mng");
QTest::newRow("MNG: fire") << "fire" << QRect(0, 0, 50, 50) << QByteArray("mng");
#endif // QTEST_HAVE_MNG
+#if defined QTEST_HAVE_SVG
+ QTest::newRow("SVG: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svg");
+ QTest::newRow("SVGZ: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svgz");
+#endif
}
void tst_QImageReader::setClipRect()
@@ -456,6 +467,10 @@ void tst_QImageReader::setScaledClipRect_data()
QTest::newRow("MNG: ball") << "ball" << QRect(0, 0, 50, 50) << QByteArray("mng");
QTest::newRow("MNG: fire") << "fire" << QRect(0, 0, 50, 50) << QByteArray("mng");
#endif // QTEST_HAVE_MNG
+#if defined QTEST_HAVE_SVG
+ QTest::newRow("SVG: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svg");
+ QTest::newRow("SVGZ: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svgz");
+#endif
}
void tst_QImageReader::setScaledClipRect()
@@ -509,6 +524,8 @@ void tst_QImageReader::imageFormat_data()
QTest::newRow("png-2") << QString("YCbCr_cmyk.png") << QByteArray("png") << QImage::Format_RGB32;
QTest::newRow("mng-1") << QString("ball.mng") << QByteArray("mng") << QImage::Format_Invalid;
QTest::newRow("mng-2") << QString("fire.mng") << QByteArray("mng") << QImage::Format_Invalid;
+ QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg") << QImage::Format_ARGB32_Premultiplied;
+ QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz") << QImage::Format_ARGB32_Premultiplied;
}
void tst_QImageReader::imageFormat()
@@ -530,6 +547,10 @@ void tst_QImageReader::imageFormat()
#ifndef QTEST_HAVE_MNG
return;
#endif // !QTEST_HAVE_MNG
+ if (QByteArray("svg") == format || QByteArray("svgz") == format)
+#ifndef QTEST_HAVE_SVG
+ return;
+#endif // !QTEST_HAVE_SVG
QSKIP(("Qt does not support the " + format + " format.").constData(), SkipSingle);
} else {
QCOMPARE(QImageReader::imageFormat(prefix + fileName), format);
@@ -604,6 +625,10 @@ void tst_QImageReader::setBackgroundColor_data()
QTest::newRow("MNG: ball") << QString("ball.mng") << QColor(Qt::yellow);
QTest::newRow("MNG: fire") << QString("fire.mng") << QColor(Qt::gray);
#endif
+#if defined QTEST_HAVE_SVG
+ QTest::newRow("SVG: rect") << QString("rect.svg") << QColor(Qt::darkGreen);
+ QTest::newRow("SVGZ: rect") << QString("rect.svgz") << QColor(Qt::darkGreen);
+#endif
}
void tst_QImageReader::setBackgroundColor()
@@ -641,6 +666,10 @@ void tst_QImageReader::supportsAnimation_data()
QTest::newRow("MNG: ball") << QString("ball.mng") << true;
QTest::newRow("MNG: fire") << QString("fire.mng") << true;
#endif
+#if defined QTEST_HAVE_SVG
+ QTest::newRow("SVG: rect") << QString("rect.svg") << false;
+ QTest::newRow("SVGZ: rect") << QString("rect.svgz") << false;
+#endif
}
void tst_QImageReader::supportsAnimation()
@@ -979,6 +1008,10 @@ void tst_QImageReader::readFromDevice_data()
QTest::newRow("mng-1") << QString("ball.mng") << QByteArray("mng");
QTest::newRow("mng-2") << QString("fire.mng") << QByteArray("mng");
#endif // QTEST_HAVE_MNG
+#if defined QTEST_HAVE_SVG
+ QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg");
+ QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz");
+#endif
}
void tst_QImageReader::readFromDevice()
@@ -1059,6 +1092,10 @@ void tst_QImageReader::readFromFileAfterJunk_data()
QTest::newRow("png") << QString("kollada.png") << QByteArray("png");
// QTest::newRow("mng-1") << QString("images/ball.mng") << QByteArray("mng");
// QTest::newRow("mng-2") << QString("images/fire.mng") << QByteArray("mng");
+#if defined QTEST_HAVE_SVG
+ QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg");
+ QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz");
+#endif
}
void tst_QImageReader::readFromFileAfterJunk()
@@ -1081,7 +1118,7 @@ void tst_QImageReader::readFromFileAfterJunk()
QVERIFY(!imageData.isNull());
int iterations = 10;
- if (format == "ppm" || format == "pbm" || format == "pgm")
+ if (format == "ppm" || format == "pbm" || format == "pgm" || format == "svg" || format == "svgz")
iterations = 1;
if (format == "mng" || !QImageWriter::supportedImageFormats().contains(format)) {
@@ -1233,6 +1270,20 @@ void tst_QImageReader::readFromResources_data()
<< QByteArray("mng") << QSize(32, 32)
<< QString("");
#endif
+#ifdef QTEST_HAVE_SVG
+ QTest::newRow("rect.svg") << QString("rect.svg")
+ << QByteArray("svg") << QSize(105, 137)
+ << QString("");
+ QTest::newRow("rect.svgz") << QString("rect.svgz")
+ << QByteArray("svgz") << QSize(105, 137)
+ << QString("");
+ QTest::newRow("corrupt.svg") << QString("corrupt.svg")
+ << QByteArray("svg") << QSize(0, 0)
+ << QString("");
+ QTest::newRow("corrupt.svgz") << QString("corrupt.svgz")
+ << QByteArray("svgz") << QSize(0, 0)
+ << QString("");
+#endif
QTest::newRow("image.pbm") << QString("image.pbm")
<< QByteArray("pbm") << QSize(16, 6)
<< QString("");
@@ -1405,6 +1456,10 @@ void tst_QImageReader::readCorruptImage_data()
#if defined QTEST_HAVE_TIFF
QTest::newRow("corrupt tiff") << QString("corrupt-data.tif") << true << QString("");
#endif
+#if defined QTEST_HAVE_SVG
+ QTest::newRow("corrupt svg") << QString("corrupt.svg") << true << QString("");
+ QTest::newRow("corrupt svgz") << QString("corrupt.svgz") << true << QString("");
+#endif
}
void tst_QImageReader::readCorruptImage()
@@ -1753,6 +1808,11 @@ void tst_QImageReader::testIgnoresFormatAndExtension_data()
#if defined QTEST_HAVE_TIFF
QTest::newRow("image_100dpi.tif") << "image_100dpi" << "tif" << "tiff";
#endif
+
+#if defined QTEST_HAVE_SVG
+ QTest::newRow("rect.svg") << "rect" << "svg" << "svg";
+ QTest::newRow("rect.svgz") << "rect" << "svgz" << "svgz";
+#endif
}
diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
index 4922a89..e269092 100644
--- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
@@ -283,6 +283,9 @@ private Q_SLOTS:
void ignoreSslErrorsListWithSlot_data();
void ignoreSslErrorsListWithSlot();
#endif
+
+ // NOTE: This test must be last!
+ void parentingRepliesToTheApp();
};
QT_BEGIN_NAMESPACE
@@ -3931,7 +3934,7 @@ void tst_QNetworkReply::httpConnectionCount()
for (int i = 0; i < 10; i++) {
QNetworkRequest request (QUrl("http://127.0.0.1:" + QString::number(server.serverPort()) + "/" + QString::number(i)));
QNetworkReply* reply = manager.get(request);
- reply->setParent(this);
+ reply->setParent(&server);
}
int pendingConnectionCount = 0;
@@ -4205,5 +4208,13 @@ void tst_QNetworkReply::ignoreSslErrorsListWithSlot()
#endif // QT_NO_OPENSSL
+// NOTE: This test must be last testcase in tst_qnetworkreply!
+void tst_QNetworkReply::parentingRepliesToTheApp()
+{
+ QNetworkRequest request (QUrl("http://" + QtNetworkSettings::serverName()));
+ manager.get(request)->setParent(this); // parent to this object
+ manager.get(request)->setParent(qApp); // parent to the app
+}
+
QTEST_MAIN(tst_QNetworkReply)
#include "tst_qnetworkreply.moc"
diff --git a/tests/auto/qscriptengine/tst_qscriptengine.cpp b/tests/auto/qscriptengine/tst_qscriptengine.cpp
index 0615b63..3c6c7b2 100644
--- a/tests/auto/qscriptengine/tst_qscriptengine.cpp
+++ b/tests/auto/qscriptengine/tst_qscriptengine.cpp
@@ -161,6 +161,7 @@ private slots:
void qRegExpInport_data();
void qRegExpInport();
+ void reentrency();
};
tst_QScriptEngine::tst_QScriptEngine()
@@ -4577,5 +4578,25 @@ void tst_QScriptEngine::qRegExpInport()
}
}
+static QScriptValue createAnotherEngine(QScriptContext *, QScriptEngine *)
+{
+ QScriptEngine eng;
+ eng.evaluate("function foo(x, y) { return x + y; }" );
+ eng.evaluate("hello = 5; world = 6" );
+ return eng.evaluate("foo(hello,world)").toInt32();
+}
+
+
+void tst_QScriptEngine::reentrency()
+{
+ QScriptEngine eng;
+ eng.globalObject().setProperty("foo", eng.newFunction(createAnotherEngine));
+ eng.evaluate("function bar() { return foo(); } hello = 9; function getHello() { return hello; }");
+ QCOMPARE(eng.evaluate("foo() + getHello() + foo()").toInt32(), 5+6 + 9 + 5+6);
+ QCOMPARE(eng.evaluate("foo").call().toInt32(), 5+6);
+ QCOMPARE(eng.evaluate("hello").toInt32(), 9);
+ QCOMPARE(eng.evaluate("foo() + hello").toInt32(), 5+6+9);
+}
+
QTEST_MAIN(tst_QScriptEngine)
#include "tst_qscriptengine.moc"
diff --git a/tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp b/tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp
index a3dfd6c..5f9a578 100644
--- a/tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp
+++ b/tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp
@@ -255,10 +255,6 @@ tst_Suite::tst_Suite()
addTestExclusion("string-case", "V8-specific behavior? (Doesn't pass on SpiderMonkey either)");
-#ifdef Q_CC_MINGW
- addTestExclusion("date$", "QTBUG-7698: Date.prototype.setMonth() crashes on win32-g++");
-#endif
-
#ifdef Q_OS_WINCE
addTestExclusion("deep-recursion", "Demands too much memory on WinCE");
addTestExclusion("nested-repetition-count-overflow", "Demands too much memory on WinCE");
diff --git a/tests/auto/qsharedpointer/externaltests.cpp b/tests/auto/qsharedpointer/externaltests.cpp
index 7eae3c1..e685cd3 100644
--- a/tests/auto/qsharedpointer/externaltests.cpp
+++ b/tests/auto/qsharedpointer/externaltests.cpp
@@ -140,7 +140,6 @@ namespace QTest {
QExternalTestPrivate()
: qtModules(QExternalTest::QtCore | QExternalTest::QtGui | QExternalTest::QtTest),
appType(QExternalTest::AutoApplication),
- debugMode(true),
exitCode(-1)
{
}
@@ -156,7 +155,6 @@ namespace QTest {
QByteArray programHeader;
QExternalTest::QtModules qtModules;
QExternalTest::ApplicationType appType;
- bool debugMode;
QString temporaryDir;
QByteArray sourceCode;
@@ -190,16 +188,6 @@ namespace QTest {
delete d;
}
- bool QExternalTest::isDebugMode() const
- {
- return d->debugMode;
- }
-
- void QExternalTest::setDebugMode(bool enable)
- {
- d->debugMode = enable;
- }
-
QList<QByteArray> QExternalTest::qmakeSettings() const
{
return d->qmakeLines;
@@ -524,10 +512,11 @@ namespace QTest {
"INCLUDEPATH += . ");
projectFile.write(QFile::encodeName(QDir::currentPath()));
- if (debugMode)
+#ifndef QT_NO_DEBUG
projectFile.write("\nCONFIG += debug\n");
- else
+#else
projectFile.write("\nCONFIG += release\n");
+#endif
QByteArray extraSources = QFile::encodeName(extraProgramSources.join(" "));
if (!extraSources.isEmpty()) {
diff --git a/tests/auto/qsharedpointer/externaltests.h b/tests/auto/qsharedpointer/externaltests.h
index 5e79a7d..1170cd5 100644
--- a/tests/auto/qsharedpointer/externaltests.h
+++ b/tests/auto/qsharedpointer/externaltests.h
@@ -91,9 +91,6 @@ namespace QTest {
QApplicationGuiServer
};
- bool isDebugMode() const;
- void setDebugMode(bool enable);
-
QList<QByteArray> qmakeSettings() const;
void setQmakeSettings(const QList<QByteArray> &settings);
diff --git a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
index 07df707..4e23cb1 100644
--- a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
+++ b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
@@ -1817,11 +1817,11 @@ void tst_QSharedPointer::invalidConstructs()
#endif
QTest::QExternalTest test;
- test.setDebugMode(true);
test.setQtModules(QTest::QExternalTest::QtCore);
test.setExtraProgramSources(QStringList() << SRCDIR "forwarddeclared.cpp");
test.setProgramHeader(
"#define QT_SHAREDPOINTER_TRACK_POINTERS\n"
+ "#define QT_DEBUG\n"
"#include <QtCore/qsharedpointer.h>\n"
"#include <QtCore/qcoreapplication.h>\n"
"\n"
diff --git a/tests/auto/qsqlquery/tst_qsqlquery.cpp b/tests/auto/qsqlquery/tst_qsqlquery.cpp
index b9ab73f..db3a929 100644
--- a/tests/auto/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/qsqlquery/tst_qsqlquery.cpp
@@ -1137,17 +1137,14 @@ void tst_QSqlQuery::last()
QVERIFY( q.last() );
- if ( !tst_Databases::isMSAccess( db ) )
- // Access doesn't return the correct position
- QCOMPARE( q.at(), ( i-1 ) );
+ QSet<int> validReturns(QSet<int>() << -1 << i-1);
+ QVERIFY( validReturns.contains(q.at()) );
QSqlQuery q2( "select * from " + qtest, db );
QVERIFY( q2.last() );
- if ( !tst_Databases::isMSAccess( db ) )
- // Access doesn't return the correct position
- QCOMPARE( q.at(), ( i-1 ) );
+ QVERIFY( validReturns.contains(q.at()) );
}
void tst_QSqlQuery::seek()
diff --git a/tests/auto/qstatemachine/tst_qstatemachine.cpp b/tests/auto/qstatemachine/tst_qstatemachine.cpp
index 90b5a22..2bf76e7 100644
--- a/tests/auto/qstatemachine/tst_qstatemachine.cpp
+++ b/tests/auto/qstatemachine/tst_qstatemachine.cpp
@@ -155,6 +155,7 @@ private slots:
void clearError();
void historyStateHasNowhereToGo();
void historyStateAsInitialState();
+ void historyStateAfterRestart();
void brokenStateIsNeverEntered();
void customErrorStateNotInGraph();
void transitionToStateNotInGraph();
@@ -906,6 +907,64 @@ void tst_QStateMachine::historyStateHasNowhereToGo()
QCOMPARE(machine.errorString(), QString::fromLatin1("Missing default state in history state 'historyState'"));
}
+void tst_QStateMachine::historyStateAfterRestart()
+{
+ // QTBUG-8842
+ QStateMachine machine;
+
+ QState *s1 = new QState(&machine);
+ machine.setInitialState(s1);
+ QState *s2 = new QState(&machine);
+ QState *s21 = new QState(s2);
+ QState *s22 = new QState(s2);
+ QHistoryState *s2h = new QHistoryState(s2);
+ s2h->setDefaultState(s21);
+ s1->addTransition(new EventTransition(QEvent::User, s2h));
+ s21->addTransition(new EventTransition(QEvent::User, s22));
+ s2->addTransition(new EventTransition(QEvent::User, s1));
+
+ for (int x = 0; x < 2; ++x) {
+ QSignalSpy startedSpy(&machine, SIGNAL(started()));
+ machine.start();
+ QTRY_COMPARE(startedSpy.count(), 1);
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ // s1 -> s2h -> s21 (default state)
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ // This used to fail on the 2nd run because the
+ // history had not been cleared.
+ QVERIFY(machine.configuration().contains(s21));
+
+ // s21 -> s22
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s22));
+
+ // s2 -> s1 (s22 saved in s2h)
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 1);
+ QVERIFY(machine.configuration().contains(s1));
+
+ // s1 -> s2h -> s22 (saved state)
+ machine.postEvent(new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(machine.configuration().count(), 2);
+ QVERIFY(machine.configuration().contains(s2));
+ QVERIFY(machine.configuration().contains(s22));
+
+ QSignalSpy stoppedSpy(&machine, SIGNAL(stopped()));
+ machine.stop();
+ QTRY_COMPARE(stoppedSpy.count(), 1);
+ }
+}
+
void tst_QStateMachine::brokenStateIsNeverEntered()
{
QStateMachine machine;
diff --git a/tests/auto/qstatictext/tst_qstatictext.cpp b/tests/auto/qstatictext/tst_qstatictext.cpp
index a038878..c7801ac 100644
--- a/tests/auto/qstatictext/tst_qstatictext.cpp
+++ b/tests/auto/qstatictext/tst_qstatictext.cpp
@@ -69,7 +69,7 @@ private slots:
void drawToRect_data();
void drawToRect();
void setFont();
- void setMaximumSize();
+ void setTextWidth();
void prepareToCorrectData();
void prepareToWrongData();
@@ -81,6 +81,10 @@ private slots:
void transformationChanged();
void plainTextVsRichText();
+
+ void setPenPlainText();
+ void setPenRichText();
+ void richTextOverridesPen();
};
void tst_QStaticText::init()
@@ -123,7 +127,7 @@ void tst_QStaticText::drawToPoint()
QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
text.setTextFormat(Qt::PlainText);
text.setPerformanceHint(performanceHint);
- p.drawStaticText(QPointF(11, 12), text);
+ p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
}
QCOMPARE(imageDrawStaticText, imageDrawText);
@@ -152,12 +156,19 @@ void tst_QStaticText::drawToRect()
imageDrawStaticText.fill(Qt::white);
{
QPainter p(&imageDrawStaticText);
- QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", QSizeF(10, 500));
+ QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ text.setTextWidth(10),
+ p.setClipRect(QRectF(11, 12, 10, 500));
text.setPerformanceHint(performanceHint);
text.setTextFormat(Qt::PlainText);
p.drawStaticText(QPointF(11, 12), text);
}
+#if defined(DEBUG_SAVE_IMAGE)
+ imageDrawText.save("drawToRect_imageDrawText.png");
+ imageDrawStaticText.save("drawToRect_imageDrawStaticText.png");
+#endif
+
QCOMPARE(imageDrawStaticText, imageDrawText);
}
@@ -183,7 +194,7 @@ void tst_QStaticText::prepareToCorrectData()
QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
text.prepare(transform, p.font());
text.setTextFormat(Qt::PlainText);
- p.drawStaticText(QPointF(11, 12), text);
+ p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
}
if (!supportsTransformations())
@@ -211,7 +222,7 @@ void tst_QStaticText::prepareToWrongData()
QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
text.prepare(transform, p.font());
text.setTextFormat(Qt::PlainText);
- p.drawStaticText(QPointF(11, 12), text);
+ p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
}
QCOMPARE(imageDrawStaticText, imageDrawText);
@@ -228,10 +239,10 @@ void tst_QStaticText::setFont()
imageDrawText.fill(Qt::white);
{
QPainter p(&imageDrawText);
- p.drawText(0, 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
p.setFont(font);
- p.drawText(11, 120, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ p.drawText(QRectF(11, 120, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
}
QPixmap imageDrawStaticText(1000, 1000);
@@ -249,10 +260,15 @@ void tst_QStaticText::setFont()
p.drawStaticText(11, 120, text);
}
+#if defined(DEBUG_SAVE_IMAGE)
+ imageDrawText.save("setFont_imageDrawText.png");
+ imageDrawStaticText.save("setFont_imageDrawStaticText.png");
+#endif
+
QCOMPARE(imageDrawStaticText, imageDrawText);
}
-void tst_QStaticText::setMaximumSize()
+void tst_QStaticText::setTextWidth()
{
QPixmap imageDrawText(1000, 1000);
imageDrawText.fill(Qt::white);
@@ -266,7 +282,8 @@ void tst_QStaticText::setMaximumSize()
{
QPainter p(&imageDrawStaticText);
QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
- text.setMaximumSize(QSizeF(10, 500));
+ text.setTextWidth(10);
+ p.setClipRect(QRectF(11, 12, 10, 500));
p.drawStaticText(QPointF(11, 12), text);
}
@@ -293,7 +310,7 @@ void tst_QStaticText::translatedPainter()
QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
text.setTextFormat(Qt::PlainText);
- p.drawStaticText(QPointF(11, 12), text);
+ p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
}
QCOMPARE(imageDrawStaticText, imageDrawText);
@@ -325,7 +342,7 @@ void tst_QStaticText::rotatedPainter()
{
QPainter p(&imageDrawText);
p.rotate(30.0);
- p.drawText(0, 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ p.drawText(QRectF(0, 0, 1000, 100), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
}
QPixmap imageDrawStaticText(1000, 1000);
@@ -369,7 +386,7 @@ void tst_QStaticText::scaledPainter()
QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
text.setTextFormat(Qt::PlainText);
- p.drawStaticText(QPointF(11, 12), text);
+ p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
}
if (!supportsTransformations())
@@ -400,7 +417,7 @@ void tst_QStaticText::projectedPainter()
QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
text.setTextFormat(Qt::PlainText);
- p.drawStaticText(QPointF(11, 12), text);
+ p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
}
QCOMPARE(imageDrawStaticText, imageDrawText);
@@ -430,7 +447,7 @@ void tst_QStaticText::rotatedScaledAndTranslatedPainter()
QStaticText text("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
text.setTextFormat(Qt::PlainText);
- p.drawStaticText(QPointF(11, 12), text);
+ p.drawStaticText(QPointF(11, 12 - QFontMetricsF(p.font()).ascent()), text);
}
#if defined(DEBUG_SAVE_IMAGE)
@@ -452,10 +469,10 @@ void tst_QStaticText::transformationChanged()
p.rotate(33.0);
p.scale(0.5, 0.7);
- p.drawText(0, 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
p.scale(7.0, 5.0);
- p.drawText(0, 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
+ p.drawText(QRectF(0, 0, 1000, 1000), 0, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
}
QPixmap imageDrawStaticText(1000, 1000);
@@ -518,5 +535,91 @@ void tst_QStaticText::plainTextVsRichText()
QCOMPARE(imagePlainText, imageRichText);
}
+void tst_QStaticText::setPenPlainText()
+{
+ QFont font = QApplication::font();
+ font.setStyleStrategy(QFont::NoAntialias);
+
+ QFontMetricsF fm(font);
+ QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
+ image.fill(Qt::white);
+ {
+ QPainter p(&image);
+ p.setFont(font);
+ p.setPen(Qt::green);
+
+ QStaticText staticText("XXXXX");
+ staticText.setTextFormat(Qt::PlainText);
+ p.drawStaticText(0, fm.ascent(), staticText);
+ }
+
+ QImage img = image.toImage();
+ for (int x=0; x<img.width(); ++x) {
+ for (int y=0; y<img.height(); ++y) {
+ QRgb pixel = img.pixel(x, y);
+ QVERIFY(pixel == QColor(Qt::white).rgba()
+ || pixel == QColor(Qt::green).rgba());
+ }
+ }
+}
+
+void tst_QStaticText::setPenRichText()
+{
+ QFont font = QApplication::font();
+ font.setStyleStrategy(QFont::NoAntialias);
+
+ QFontMetricsF fm(font);
+ QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
+ image.fill(Qt::white);
+ {
+ QPainter p(&image);
+ p.setFont(font);
+ p.setPen(Qt::green);
+
+ QStaticText staticText;
+ staticText.setText("<html><body>XXXXX</body></html>");
+ staticText.setTextFormat(Qt::RichText);
+ p.drawStaticText(0, 0, staticText);
+ }
+
+ QImage img = image.toImage();
+ for (int x=0; x<img.width(); ++x) {
+ for (int y=0; y<img.height(); ++y) {
+ QRgb pixel = img.pixel(x, y);
+ QVERIFY(pixel == QColor(Qt::white).rgba()
+ || pixel == QColor(Qt::green).rgba());
+ }
+ }
+}
+
+void tst_QStaticText::richTextOverridesPen()
+{
+ QFont font = QApplication::font();
+ font.setStyleStrategy(QFont::NoAntialias);
+
+ QFontMetricsF fm(font);
+ QPixmap image(qCeil(fm.width("XXXXX")), qCeil(fm.height()));
+ image.fill(Qt::white);
+ {
+ QPainter p(&image);
+ p.setFont(font);
+ p.setPen(Qt::green);
+
+ QStaticText staticText;
+ staticText.setText("<html><body><font color=\"#ff0000\">XXXXX</font></body></html>");
+ staticText.setTextFormat(Qt::RichText);
+ p.drawStaticText(0, 0, staticText);
+ }
+
+ QImage img = image.toImage();
+ for (int x=0; x<img.width(); ++x) {
+ for (int y=0; y<img.height(); ++y) {
+ QRgb pixel = img.pixel(x, y);
+ QVERIFY(pixel == QColor(Qt::white).rgba()
+ || pixel == QColor(Qt::red).rgba());
+ }
+ }
+}
+
QTEST_MAIN(tst_QStaticText)
#include "tst_qstatictext.moc"
diff --git a/tests/auto/qtextcodec/tst_qtextcodec.cpp b/tests/auto/qtextcodec/tst_qtextcodec.cpp
index 1c64ade..4e7123f 100644
--- a/tests/auto/qtextcodec/tst_qtextcodec.cpp
+++ b/tests/auto/qtextcodec/tst_qtextcodec.cpp
@@ -2178,6 +2178,45 @@ void tst_QTextCodec::moreToFromUnicode_data() {
koi8_u_ba.append(x);
}
QTest::newRow("KOI8-U") << QByteArray("KOI8-U") << koi8_u_ba;
+
+
+ QByteArray big5_ba;
+ for (unsigned char u=0xa1; u<=0xf9; u++) {
+ if (u==0xc8) {
+ continue;
+ }
+ for (unsigned char v=0x40; v<=0x7e; v++) {
+ big5_ba.append(u);
+ big5_ba.append(v);
+ }
+ unsigned char v_up;
+ switch (u) {
+ case 0xa3: v_up=0xbf; break;
+ case 0xc7: v_up=0xfc; break;
+ case 0xf9: v_up=0xd5; break;
+ default: v_up=0xfe;
+ }
+
+ for (unsigned char v=0xa1; v<=v_up; v++) {
+ if (u==0xa2 && (v==0xcc || v==0xce)) {
+ continue;
+ }
+ big5_ba.append(u);
+ big5_ba.append(v);
+ }
+ }
+
+ QTest::newRow("BIG5") << QByteArray("BIG5") << big5_ba;
+
+ QByteArray gb2312_ba;
+ for (unsigned char u=0xa1; u<=0xf7; u++) {
+ for (unsigned char v=0xa1; v<=0xfe; v++) {
+ gb2312_ba.append(u);
+ gb2312_ba.append(v);
+ }
+ }
+
+ QTest::newRow("GB2312") << QByteArray("GB2312") << gb2312_ba;
}
void tst_QTextCodec::moreToFromUnicode()
diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp
index 2de189d..75a4c62 100644
--- a/tests/auto/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/qtreeview/tst_qtreeview.cpp
@@ -215,6 +215,7 @@ private slots:
void addRowsWhileSectionsAreHidden();
void filterProxyModelCrash();
void styleOptionViewItem();
+ void keyboardNavigationWithDisabled();
// task-specific tests:
void task174627_moveLeftToRoot();
@@ -3753,5 +3754,36 @@ void tst_QTreeView::taskQTBUG_9216_setSizeAndUniformRowHeightsWrongRepaint()
QTRY_VERIFY(view.painted > 0);
}
+void tst_QTreeView::keyboardNavigationWithDisabled()
+{
+ QTreeView view;
+ QStandardItemModel model(90, 0);
+ for (int i = 0; i < 90; i ++) {
+ model.setItem(i, new QStandardItem(QString::number(i)));
+ model.item(i)->setEnabled(i%6 == 0);
+ }
+ view.setModel(&model);
+
+ view.resize(200, view.visualRect(model.index(0,0)).height()*10);
+ view.show();
+ QApplication::setActiveWindow(&view);
+ QTest::qWaitForWindowShown(&view);
+ QTRY_VERIFY(view.isActiveWindow());
+
+ view.setCurrentIndex(model.index(1, 0));
+ QTest::keyClick(view.viewport(), Qt::Key_Up);
+ QCOMPARE(view.currentIndex(), model.index(0, 0));
+ QTest::keyClick(view.viewport(), Qt::Key_Down);
+ QCOMPARE(view.currentIndex(), model.index(6, 0));
+ QTest::keyClick(view.viewport(), Qt::Key_PageDown);
+ QCOMPARE(view.currentIndex(), model.index(18, 0));
+ QTest::keyClick(view.viewport(), Qt::Key_Down);
+ QCOMPARE(view.currentIndex(), model.index(24, 0));
+ QTest::keyClick(view.viewport(), Qt::Key_PageUp);
+ QCOMPARE(view.currentIndex(), model.index(12, 0));
+ QTest::keyClick(view.viewport(), Qt::Key_Up);
+ QCOMPARE(view.currentIndex(), model.index(6, 0));
+}
+
QTEST_MAIN(tst_QTreeView)
#include "tst_qtreeview.moc"
diff --git a/tests/auto/qvarlengtharray/tst_qvarlengtharray.cpp b/tests/auto/qvarlengtharray/tst_qvarlengtharray.cpp
index 1c43069..5708726 100644
--- a/tests/auto/qvarlengtharray/tst_qvarlengtharray.cpp
+++ b/tests/auto/qvarlengtharray/tst_qvarlengtharray.cpp
@@ -133,6 +133,12 @@ void tst_QVarLengthArray::oldTests()
QVERIFY(sa.data() == &sa[0]);
QVERIFY(sa[0] == 0xfee);
QVERIFY(sa[10] == 0xff);
+ QVERIFY(sa.at(0) == 0xfee);
+ QVERIFY(sa.at(10) == 0xff);
+ QVERIFY(sa.value(0) == 0xfee);
+ QVERIFY(sa.value(10) == 0xff);
+ QVERIFY(sa.value(1000) == 0);
+ QVERIFY(sa.value(1000, 12) == 12);
QVERIFY(sa.size() == 512);
sa.reserve(1024);
QVERIFY(sa.capacity() == 1024);
@@ -168,6 +174,13 @@ void tst_QVarLengthArray::oldTests()
QCOMPARE(sa.size(), 12);
QCOMPARE(sa[10], QString("hello"));
QCOMPARE(sa[11], QString("world"));
+ QCOMPARE(sa.at(10), QString("hello"));
+ QCOMPARE(sa.at(11), QString("world"));
+ QCOMPARE(sa.value(10), QString("hello"));
+ QCOMPARE(sa.value(11), QString("world"));
+ QCOMPARE(sa.value(10000), QString());
+ QCOMPARE(sa.value(1212112, QString("none")), QString("none"));
+ QCOMPARE(sa.value(-12, QString("neg")), QString("neg"));
sa.append(arr, 1);
QCOMPARE(sa.size(), 13);
diff --git a/tests/auto/uic/baseline/config_fromuic3.ui.h b/tests/auto/uic/baseline/config_fromuic3.ui.h
index c77b303..7e0189e 100644
--- a/tests/auto/uic/baseline/config_fromuic3.ui.h
+++ b/tests/auto/uic/baseline/config_fromuic3.ui.h
@@ -670,6 +670,7 @@ protected:
};
static QPixmap qt_get_icon(IconID id)
{
+ /* XPM */
static const char* const image0_data[] = {
"22 22 2 1",
". c None",
diff --git a/tests/auto/uic/baseline/paletteeditoradvancedbase.ui.h b/tests/auto/uic/baseline/paletteeditoradvancedbase.ui.h
index 50cc4c8..40485ac 100644
--- a/tests/auto/uic/baseline/paletteeditoradvancedbase.ui.h
+++ b/tests/auto/uic/baseline/paletteeditoradvancedbase.ui.h
@@ -439,6 +439,7 @@ protected:
};
static QPixmap qt_get_icon(IconID id)
{
+ /* XPM */
static const char* const image0_data[] = {
"22 22 2 1",
". c None",
diff --git a/tests/benchmarks/declarative/declarative.pro b/tests/benchmarks/declarative/declarative.pro
index 38ea6c4..a7d426c 100644
--- a/tests/benchmarks/declarative/declarative.pro
+++ b/tests/benchmarks/declarative/declarative.pro
@@ -8,4 +8,4 @@ SUBDIRS += \
qdeclarativeimage \
qdeclarativemetaproperty \
script \
- qdeclarativetime
+ qmltime
diff --git a/tests/benchmarks/declarative/qdeclarativetime/example.qml b/tests/benchmarks/declarative/qmltime/example.qml
index dd6185d..68889f0 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/example.qml
+++ b/tests/benchmarks/declarative/qmltime/example.qml
@@ -1,11 +1,11 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
property string name: "Bob Smith"
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Item {
Text { text: name }
}
diff --git a/tests/benchmarks/declarative/qdeclarativetime/qdeclarativetime.cpp b/tests/benchmarks/declarative/qmltime/qmltime.cpp
index 20f0d93d..3932e01 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/qdeclarativetime.cpp
+++ b/tests/benchmarks/declarative/qmltime/qmltime.cpp
@@ -156,7 +156,7 @@ int main(int argc, char ** argv)
{
QApplication app(argc, argv);
- qmlRegisterType<Timer>("QDeclarativeTime", 1, 0, "Timer");
+ qmlRegisterType<Timer>("QmlTime", 1, 0, "Timer");
uint iterations = 1024;
QString filename;
@@ -228,4 +228,4 @@ int main(int argc, char ** argv)
return 0;
}
-#include "qdeclarativetime.moc"
+#include "qmltime.moc"
diff --git a/tests/benchmarks/declarative/qdeclarativetime/qdeclarativetime.pro b/tests/benchmarks/declarative/qmltime/qmltime.pro
index 7902ee1..9352f3b 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/qdeclarativetime.pro
+++ b/tests/benchmarks/declarative/qmltime/qmltime.pro
@@ -1,10 +1,10 @@
load(qttest_p4)
TEMPLATE = app
-TARGET = qdeclarativetime
+TARGET = qmltime
QT += declarative
macx:CONFIG -= app_bundle
-SOURCES += qdeclarativetime.cpp
+SOURCES += qmltime.cpp
symbian* {
TARGET.CAPABILITY = "All -TCB"
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/anchors/empty.qml b/tests/benchmarks/declarative/qmltime/tests/anchors/empty.qml
index 8d93594..31c879b 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/anchors/empty.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/anchors/empty.qml
@@ -1,9 +1,9 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
Item {
Item {
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/anchors/fill.qml b/tests/benchmarks/declarative/qmltime/tests/anchors/fill.qml
index 918c48a..23fe78e 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/anchors/fill.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/anchors/fill.qml
@@ -1,9 +1,9 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
Item {
Item {
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/anchors/null.qml b/tests/benchmarks/declarative/qmltime/tests/anchors/null.qml
index bb84538..bc447ef 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/anchors/null.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/anchors/null.qml
@@ -1,9 +1,9 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
Item {
Item {
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/animation/large.qml b/tests/benchmarks/declarative/qmltime/tests/animation/large.qml
index 978e3bf..c1cdb68 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/animation/large.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/animation/large.qml
@@ -1,9 +1,9 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
ParallelAnimation {
NumberAnimation { duration: 500 }
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/animation/largeNoProps.qml b/tests/benchmarks/declarative/qmltime/tests/animation/largeNoProps.qml
index cceb3f4..3db9f08 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/animation/largeNoProps.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/animation/largeNoProps.qml
@@ -1,9 +1,9 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
ParallelAnimation {
NumberAnimation { }
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/item_creation/children.qml b/tests/benchmarks/declarative/qmltime/tests/item_creation/children.qml
index 3387a32..996602c 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/item_creation/children.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/item_creation/children.qml
@@ -1,9 +1,9 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
Item {
children: [
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/item_creation/data.qml b/tests/benchmarks/declarative/qmltime/tests/item_creation/data.qml
index a8b653c..9f79c34 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/item_creation/data.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/item_creation/data.qml
@@ -1,9 +1,9 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
Item {
data: [
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/item_creation/no_creation.qml b/tests/benchmarks/declarative/qmltime/tests/item_creation/no_creation.qml
index 0a507d4..f228c2a 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/item_creation/no_creation.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/item_creation/no_creation.qml
@@ -1,9 +1,9 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
Item {
}
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/item_creation/resources.qml b/tests/benchmarks/declarative/qmltime/tests/item_creation/resources.qml
index 227d8ad..335aeb8 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/item_creation/resources.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/item_creation/resources.qml
@@ -1,9 +1,9 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
Item {
resources: [
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/loader/Loaded.qml b/tests/benchmarks/declarative/qmltime/tests/loader/Loaded.qml
index 6f8d849..6f8d849 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/loader/Loaded.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/loader/Loaded.qml
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/loader/component_loader.qml b/tests/benchmarks/declarative/qmltime/tests/loader/component_loader.qml
index 270add4..65d5010 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/loader/component_loader.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/loader/component_loader.qml
@@ -1,9 +1,9 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
Item {
Loader {
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/loader/empty_loader.qml b/tests/benchmarks/declarative/qmltime/tests/loader/empty_loader.qml
index d3b84cc..2dfe922 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/loader/empty_loader.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/loader/empty_loader.qml
@@ -1,9 +1,9 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
Item {
Loader {}
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/loader/no_loader.qml b/tests/benchmarks/declarative/qmltime/tests/loader/no_loader.qml
index a94a12a..1fa0d3b 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/loader/no_loader.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/loader/no_loader.qml
@@ -1,9 +1,9 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
Item {
Loaded {}
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/loader/source_loader.qml b/tests/benchmarks/declarative/qmltime/tests/loader/source_loader.qml
index 39ed1a6..33bb91c 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/loader/source_loader.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/loader/source_loader.qml
@@ -1,9 +1,9 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
Item {
Loader {
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/positioner_creation/no_positioner.qml b/tests/benchmarks/declarative/qmltime/tests/positioner_creation/no_positioner.qml
index c1f54a4..97bad47 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/positioner_creation/no_positioner.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/positioner_creation/no_positioner.qml
@@ -1,8 +1,8 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
Item {
Rectangle { }
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/positioner_creation/null_positioner.qml b/tests/benchmarks/declarative/qmltime/tests/positioner_creation/null_positioner.qml
index d49ff78..36dda15 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/positioner_creation/null_positioner.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/positioner_creation/null_positioner.qml
@@ -1,8 +1,8 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
Item {
Rectangle { }
diff --git a/tests/benchmarks/declarative/qdeclarativetime/tests/positioner_creation/positioner.qml b/tests/benchmarks/declarative/qmltime/tests/positioner_creation/positioner.qml
index 05ca804..396e27d 100644
--- a/tests/benchmarks/declarative/qdeclarativetime/tests/positioner_creation/positioner.qml
+++ b/tests/benchmarks/declarative/qmltime/tests/positioner_creation/positioner.qml
@@ -1,8 +1,8 @@
import Qt 4.6
-import QDeclarativeTime 1.0 as QDeclarativeTime
+import QmlTime 1.0 as QmlTime
Item {
- QDeclarativeTime.Timer {
+ QmlTime.Timer {
component: Component {
Item {
Rectangle { }
diff --git a/tests/benchmarks/declarative/qmltime/tests/vmemetaobject/null.qml b/tests/benchmarks/declarative/qmltime/tests/vmemetaobject/null.qml
new file mode 100644
index 0000000..a31af5a
--- /dev/null
+++ b/tests/benchmarks/declarative/qmltime/tests/vmemetaobject/null.qml
@@ -0,0 +1,13 @@
+import Qt 4.6
+import QmlTime 1.0 as QmlTime
+
+Item {
+
+ QmlTime.Timer {
+ component: Component {
+ QtObject {
+ }
+ }
+ }
+
+}
diff --git a/tests/benchmarks/declarative/qmltime/tests/vmemetaobject/property.qml b/tests/benchmarks/declarative/qmltime/tests/vmemetaobject/property.qml
new file mode 100644
index 0000000..007d12a
--- /dev/null
+++ b/tests/benchmarks/declarative/qmltime/tests/vmemetaobject/property.qml
@@ -0,0 +1,18 @@
+import Qt 4.6
+import QmlTime 1.0 as QmlTime
+
+Item {
+
+ QmlTime.Timer {
+ component: Component {
+ QtObject {
+ property string s
+ property string s2
+ property string s3
+ property string s4
+ }
+ }
+ }
+
+}
+
diff --git a/tests/benchmarks/declarative/typeimports/data/QmlTestType1.qml b/tests/benchmarks/declarative/typeimports/data/QmlTestType1.qml
new file mode 100644
index 0000000..f359b85
--- /dev/null
+++ b/tests/benchmarks/declarative/typeimports/data/QmlTestType1.qml
@@ -0,0 +1,2 @@
+import Qt.test 2.0
+TestType1 { }
diff --git a/tests/benchmarks/declarative/typeimports/data/QmlTestType2.qml b/tests/benchmarks/declarative/typeimports/data/QmlTestType2.qml
new file mode 100644
index 0000000..b6fabe6
--- /dev/null
+++ b/tests/benchmarks/declarative/typeimports/data/QmlTestType2.qml
@@ -0,0 +1,2 @@
+import Qt.test 2.0
+TestType2 { }
diff --git a/tests/benchmarks/declarative/typeimports/data/QmlTestType3.qml b/tests/benchmarks/declarative/typeimports/data/QmlTestType3.qml
new file mode 100644
index 0000000..6a30887
--- /dev/null
+++ b/tests/benchmarks/declarative/typeimports/data/QmlTestType3.qml
@@ -0,0 +1,2 @@
+import Qt.test 2.0
+TestType3 { }
diff --git a/tests/benchmarks/declarative/typeimports/data/QmlTestType4.qml b/tests/benchmarks/declarative/typeimports/data/QmlTestType4.qml
new file mode 100644
index 0000000..5cc8a6b
--- /dev/null
+++ b/tests/benchmarks/declarative/typeimports/data/QmlTestType4.qml
@@ -0,0 +1,2 @@
+import Qt.test 2.0
+TestType4 { }
diff --git a/tests/benchmarks/declarative/typeimports/data/cpp.qml b/tests/benchmarks/declarative/typeimports/data/cpp.qml
new file mode 100644
index 0000000..11ee4e6
--- /dev/null
+++ b/tests/benchmarks/declarative/typeimports/data/cpp.qml
@@ -0,0 +1,15 @@
+import Qt.test 2.0
+
+TestType1 {
+ TestType1 { } TestType2 { } TestType3 { } TestType4 { }
+ TestType1 { } TestType2 { } TestType3 { } TestType4 { }
+ TestType1 { } TestType2 { } TestType3 { } TestType4 { }
+ TestType1 { } TestType2 { } TestType3 { } TestType4 { }
+ TestType1 { } TestType2 { } TestType3 { } TestType4 { }
+
+ TestType1 { } TestType2 { } TestType3 { } TestType4 { }
+ TestType1 { } TestType2 { } TestType3 { } TestType4 { }
+ TestType1 { } TestType2 { } TestType3 { } TestType4 { }
+ TestType1 { } TestType2 { } TestType3 { } TestType4 { }
+ TestType1 { } TestType2 { } TestType3 { } TestType4 { }
+}
diff --git a/tests/benchmarks/declarative/typeimports/data/qml.qml b/tests/benchmarks/declarative/typeimports/data/qml.qml
new file mode 100644
index 0000000..d776bcf
--- /dev/null
+++ b/tests/benchmarks/declarative/typeimports/data/qml.qml
@@ -0,0 +1,13 @@
+QmlTestType1 {
+ QmlTestType1 { } QmlTestType2 { } QmlTestType3 { } QmlTestType4 { }
+ QmlTestType1 { } QmlTestType2 { } QmlTestType3 { } QmlTestType4 { }
+ QmlTestType1 { } QmlTestType2 { } QmlTestType3 { } QmlTestType4 { }
+ QmlTestType1 { } QmlTestType2 { } QmlTestType3 { } QmlTestType4 { }
+ QmlTestType1 { } QmlTestType2 { } QmlTestType3 { } QmlTestType4 { }
+
+ QmlTestType1 { } QmlTestType2 { } QmlTestType3 { } QmlTestType4 { }
+ QmlTestType1 { } QmlTestType2 { } QmlTestType3 { } QmlTestType4 { }
+ QmlTestType1 { } QmlTestType2 { } QmlTestType3 { } QmlTestType4 { }
+ QmlTestType1 { } QmlTestType2 { } QmlTestType3 { } QmlTestType4 { }
+ QmlTestType1 { } QmlTestType2 { } QmlTestType3 { } QmlTestType4 { }
+}
diff --git a/tests/benchmarks/declarative/typeimports/tst_typeimports.cpp b/tests/benchmarks/declarative/typeimports/tst_typeimports.cpp
new file mode 100644
index 0000000..b92ab46
--- /dev/null
+++ b/tests/benchmarks/declarative/typeimports/tst_typeimports.cpp
@@ -0,0 +1,138 @@
+/****************************************************************************
+**
+** 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 <QDeclarativeEngine>
+#include <QDeclarativeComponent>
+#include <QDebug>
+
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+// Application private dir is default serach path for files, so SRCDIR can be set to empty
+#define SRCDIR ""
+#endif
+
+class tst_typeimports : public QObject
+{
+ Q_OBJECT
+public:
+ tst_typeimports();
+
+private slots:
+ void cpp();
+ void qml();
+
+private:
+ QDeclarativeEngine engine;
+};
+
+class TestType1 : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QDeclarativeListProperty<QObject> resources READ resources);
+ Q_CLASSINFO("DefaultProperty", "resources");
+public:
+ TestType1(QObject *parent = 0) : QObject(parent) {}
+
+ QDeclarativeListProperty<QObject> resources() {
+ return QDeclarativeListProperty<QObject>(this, 0, resources_append);
+ }
+
+ static void resources_append(QDeclarativeListProperty<QObject> *p, QObject *o) {
+ o->setParent(p->object);
+ }
+};
+
+class TestType2 : public TestType1
+{
+ Q_OBJECT
+public:
+ TestType2(QObject *parent = 0) : TestType1(parent) {}
+};
+
+
+class TestType3 : public TestType1
+{
+ Q_OBJECT
+public:
+ TestType3(QObject *parent = 0) : TestType1(parent) {}
+};
+
+class TestType4 : public TestType1
+{
+ Q_OBJECT
+public:
+ TestType4(QObject *parent = 0) : TestType1(parent) {}
+};
+
+
+tst_typeimports::tst_typeimports()
+{
+ qmlRegisterType<TestType1>("Qt.test", 1, 0, "TestType1");
+ qmlRegisterType<TestType2>("Qt.test", 1, 0, "TestType2");
+ qmlRegisterType<TestType3>("Qt.test", 2, 0, "TestType3");
+ qmlRegisterType<TestType4>("Qt.test", 2, 0, "TestType4");
+}
+
+inline QUrl TEST_FILE(const QString &filename)
+{
+ return QUrl::fromLocalFile(QLatin1String(SRCDIR) + QLatin1String("/data/") + filename);
+}
+
+void tst_typeimports::cpp()
+{
+ QBENCHMARK {
+ QDeclarativeComponent component(&engine, TEST_FILE("cpp.qml"));
+ QVERIFY(component.isReady());
+ }
+}
+
+void tst_typeimports::qml()
+{
+ QBENCHMARK {
+ QDeclarativeComponent component(&engine, TEST_FILE("qml.qml"));
+ QVERIFY(component.isReady());
+ }
+}
+
+QTEST_MAIN(tst_typeimports)
+
+#include "tst_typeimports.moc"
diff --git a/tests/benchmarks/declarative/typeimports/typeimports.pro b/tests/benchmarks/declarative/typeimports/typeimports.pro
new file mode 100644
index 0000000..8a74e0d
--- /dev/null
+++ b/tests/benchmarks/declarative/typeimports/typeimports.pro
@@ -0,0 +1,15 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_typeimports
+QT += declarative
+macx:CONFIG -= app_bundle
+
+SOURCES += tst_typeimports.cpp
+
+symbian* {
+ data.sources = data/*
+ data.path = data
+ DEPLOYMENT += addFiles
+} else {
+ DEFINES += SRCDIR=\\\"$$PWD\\\"
+} \ No newline at end of file
diff --git a/tools/linguist/linguist.pro b/tools/linguist/linguist.pro
index e1c8a63..85ecd5a 100644
--- a/tools/linguist/linguist.pro
+++ b/tools/linguist/linguist.pro
@@ -4,5 +4,3 @@ SUBDIRS = \
lrelease \
lupdate \
lconvert
-CONFIG += ordered
-
diff --git a/tools/linguist/linguist/mainwindow.cpp b/tools/linguist/linguist/mainwindow.cpp
index 7d73596..1611699 100644
--- a/tools/linguist/linguist/mainwindow.cpp
+++ b/tools/linguist/linguist/mainwindow.cpp
@@ -2392,7 +2392,7 @@ static bool haveMnemonic(const QString &str)
// because we get a lot of false positives.
if (c != '&' && c != ' ' && QChar(c).isPrint()) {
const ushort *pp = p;
- for (; *p < 256 && ::isalpha(*p); p++) ;
+ for (; *p < 256 && isalpha(*p); p++) ;
if (pp == p || *p != ';')
return true;
// This looks like a HTML &entity;, so ignore it. As a HTML string
diff --git a/tools/linguist/linguist/messagemodel.cpp b/tools/linguist/linguist/messagemodel.cpp
index 4e2b473..39ba9fd 100644
--- a/tools/linguist/linguist/messagemodel.cpp
+++ b/tools/linguist/linguist/messagemodel.cpp
@@ -402,7 +402,7 @@ bool DataModel::setLanguageAndCountry(QLocale::Language lang, QLocale::Country c
if (lang == QLocale::C || uint(lang) > uint(QLocale::LastLanguage)) // XXX does this make any sense?
lang = QLocale::English;
QByteArray rules;
- bool ok = getNumerusInfo(lang, country, &rules, &m_numerusForms);
+ bool ok = getNumerusInfo(lang, country, &rules, &m_numerusForms, 0);
m_localizedLanguage = QCoreApplication::translate("MessageEditor", QLocale::languageToString(lang).toAscii());
m_countRefNeeds.clear();
for (int i = 0; i < rules.size(); ++i) {
diff --git a/tools/linguist/lupdate/lupdate.pro b/tools/linguist/lupdate/lupdate.pro
index 1f88931..3ed909a 100644
--- a/tools/linguist/lupdate/lupdate.pro
+++ b/tools/linguist/lupdate/lupdate.pro
@@ -16,7 +16,7 @@ include(../shared/formats.pri)
include(../shared/proparser.pri)
include($$QT_SOURCE_TREE/src/declarative/qml/parser/parser.pri)
-INCLUDEPATH += $$QT_SOURCE_TREE/src/declarative/qml
+INCLUDEPATH += $$QT_SOURCE_TREE/src/declarative/qml $$QT_BUILD_TREE/include/QtDeclarative
SOURCES += \
main.cpp \
diff --git a/tools/linguist/lupdate/main.cpp b/tools/linguist/lupdate/main.cpp
index 0003baa..6c9157a 100644
--- a/tools/linguist/lupdate/main.cpp
+++ b/tools/linguist/lupdate/main.cpp
@@ -409,7 +409,7 @@ static void processProjects(
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
- m_defaultExtensions = QLatin1String("ui,c,c++,cc,cpp,cxx,ch,h,h++,hh,hpp,hxx");
+ m_defaultExtensions = QLatin1String("java,jui,ui,c,c++,cc,cpp,cxx,ch,h,h++,hh,hpp,hxx,js,qs,qml");
QStringList args = app.arguments();
QStringList tsFileNames;
@@ -634,6 +634,7 @@ int main(int argc, char **argv)
sourceFiles << fn;
if (!fn.endsWith(QLatin1String(".java"))
+ && !fn.endsWith(QLatin1String(".jui"))
&& !fn.endsWith(QLatin1String(".ui"))
&& !fn.endsWith(QLatin1String(".js"))
&& !fn.endsWith(QLatin1String(".qs"))
diff --git a/tools/linguist/shared/numerus.cpp b/tools/linguist/shared/numerus.cpp
index d45dfed..6066732 100644
--- a/tools/linguist/shared/numerus.cpp
+++ b/tools/linguist/shared/numerus.cpp
@@ -64,7 +64,7 @@ static const uchar icelandicRules[] =
static const uchar irishStyleRules[] =
{ Q_EQ, 1, Q_NEWRULE,
Q_EQ, 2 };
-static const uchar slovakRules[] =
+static const uchar slovakStyleRules[] =
{ Q_EQ, 1, Q_NEWRULE,
Q_BETWEEN, 2, 4 };
static const uchar macedonianRules[] =
@@ -100,7 +100,7 @@ static const uchar arabicRules[] =
Q_EQ, 1, Q_NEWRULE,
Q_EQ, 2, Q_NEWRULE,
Q_MOD_100 | Q_BETWEEN, 3, 10, Q_NEWRULE,
- Q_MOD_100 | Q_NOT | Q_BETWEEN, 0, 2 };
+ Q_MOD_100 | Q_GEQ, 11 };
static const uchar tagalogRules[] =
{ Q_LEQ, 1, Q_NEWRULE,
Q_MOD_10 | Q_EQ, 4, Q_OR, Q_MOD_10 | Q_EQ, 6, Q_OR, Q_MOD_10 | Q_EQ, 9 };
@@ -114,7 +114,7 @@ static const char * const frenchStyleForms[] = { "Singular", "Plural", 0 };
static const char * const icelandicForms[] = { "Singular", "Plural", 0 };
static const char * const latvianForms[] = { "Singular", "Plural", "Nullar", 0 };
static const char * const irishStyleForms[] = { "Singular", "Dual", "Plural", 0 };
-static const char * const slovakForms[] = { "Singular", "Paucal", "Plural", 0 };
+static const char * const slovakStyleForms[] = { "Singular", "Paucal", "Plural", 0 };
static const char * const macedonianForms[] = { "Singular", "Dual", "Plural", 0 };
static const char * const lithuanianForms[] = { "Singular", "Paucal", "Plural", 0 };
static const char * const russianStyleForms[] = { "Singular", "Dual", "Plural", 0 };
@@ -279,7 +279,7 @@ static const QLocale::Language irishStyleLanguages[] = {
QLocale::Sanskrit,
EOL
};
-static const QLocale::Language slovakLanguages[] = { QLocale::Slovak, QLocale::Czech, EOL };
+static const QLocale::Language slovakStyleLanguages[] = { QLocale::Slovak, QLocale::Czech, EOL };
static const QLocale::Language macedonianLanguage[] = { QLocale::Macedonian, EOL };
static const QLocale::Language lithuanianLanguage[] = { QLocale::Lithuanian, EOL };
static const QLocale::Language russianStyleLanguages[] = {
@@ -318,28 +318,45 @@ struct NumerusTableEntry {
const char * const *forms;
const QLocale::Language *languages;
const QLocale::Country *countries;
+ const char * const gettextRules;
};
static const NumerusTableEntry numerusTable[] = {
- { 0, 0, japaneseStyleForms, japaneseStyleLanguages, 0 },
- { englishStyleRules, sizeof(englishStyleRules), englishStyleForms, englishStyleLanguages, 0 },
+ { 0, 0, japaneseStyleForms, japaneseStyleLanguages, 0, "nplurals=1; plural=0;" },
+ { englishStyleRules, sizeof(englishStyleRules), englishStyleForms, englishStyleLanguages, 0,
+ "nplurals=2; plural=(n != 1);" },
{ frenchStyleRules, sizeof(frenchStyleRules), frenchStyleForms, frenchStyleLanguages,
- frenchStyleCountries },
- { latvianRules, sizeof(latvianRules), latvianForms, latvianLanguage, 0 },
- { icelandicRules, sizeof(icelandicRules), icelandicForms, icelandicLanguage, 0 },
- { irishStyleRules, sizeof(irishStyleRules), irishStyleForms, irishStyleLanguages, 0 },
- { slovakRules, sizeof(slovakRules), slovakForms, slovakLanguages, 0 },
- { macedonianRules, sizeof(macedonianRules), macedonianForms, macedonianLanguage, 0 },
- { lithuanianRules, sizeof(lithuanianRules), lithuanianForms, lithuanianLanguage, 0 },
- { russianStyleRules, sizeof(russianStyleRules), russianStyleForms, russianStyleLanguages, 0 },
- { polishRules, sizeof(polishRules), polishForms, polishLanguage, 0 },
- { romanianRules, sizeof(romanianRules), romanianForms, romanianLanguages, 0 },
- { slovenianRules, sizeof(slovenianRules), slovenianForms, slovenianLanguage, 0 },
- { malteseRules, sizeof(malteseRules), malteseForms, malteseLanguage, 0 },
- { welshRules, sizeof(welshRules), welshForms, welshLanguage, 0 },
- { arabicRules, sizeof(arabicRules), arabicForms, arabicLanguage, 0 },
- { tagalogRules, sizeof(tagalogRules), tagalogForms, tagalogLanguage, 0 },
- { catalanRules, sizeof(catalanRules), catalanForms, catalanLanguage, 0 }
+ frenchStyleCountries, "nplurals=2; plural=(n > 1);" },
+ { latvianRules, sizeof(latvianRules), latvianForms, latvianLanguage, 0,
+ "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);" },
+ { icelandicRules, sizeof(icelandicRules), icelandicForms, icelandicLanguage, 0,
+ "nplurals=2; plural=(n%10==1 && n%100!=11 ? 0 : 1);" },
+ { irishStyleRules, sizeof(irishStyleRules), irishStyleForms, irishStyleLanguages, 0,
+ "nplurals=3; plural=(n==1 ? 0 : n==2 ? 1 : 2);" },
+ { slovakStyleRules, sizeof(slovakStyleRules), slovakStyleForms, slovakStyleLanguages, 0,
+ "nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);" },
+ { macedonianRules, sizeof(macedonianRules), macedonianForms, macedonianLanguage, 0,
+ "nplurals=3; plural=(n%100==1 ? 0 : n%100==2 ? 1 : 2);" },
+ { lithuanianRules, sizeof(lithuanianRules), lithuanianForms, lithuanianLanguage, 0,
+ "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);" },
+ { russianStyleRules, sizeof(russianStyleRules), russianStyleForms, russianStyleLanguages, 0,
+ "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" },
+ { polishRules, sizeof(polishRules), polishForms, polishLanguage, 0,
+ "nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" },
+ { romanianRules, sizeof(romanianRules), romanianForms, romanianLanguages, 0,
+ "nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2);" },
+ { slovenianRules, sizeof(slovenianRules), slovenianForms, slovenianLanguage, 0,
+ "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" },
+ { malteseRules, sizeof(malteseRules), malteseForms, malteseLanguage, 0,
+ "nplurals=4; plural=(n==1 ? 0 : (n==0 || (n%100>=1 && n%100<=10)) ? 1 : (n%100>=11 && n%100<=19) ? 2 : 3);" },
+ { welshRules, sizeof(welshRules), welshForms, welshLanguage, 0,
+ "nplurals=5; plural=(n==0 ? 0 : n==1 ? 1 : (n>=2 && n<=5) ? 2 : n==6 ? 3 : 4);" },
+ { arabicRules, sizeof(arabicRules), arabicForms, arabicLanguage, 0,
+ "nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : (n%100>=3 && n%100<=10) ? 3 : n%100>=11 ? 4 : 5);" },
+ { tagalogRules, sizeof(tagalogRules), tagalogForms, tagalogLanguage, 0,
+ "nplurals=3; plural=(n==1 ? 0 : (n%10==4 || n%10==6 || n%10== 9) ? 1 : 2);" },
+ { catalanRules, sizeof(catalanRules), catalanForms, catalanLanguage, 0,
+ "nplurals=3; plural=(n==1 ? 0 : (n==11 || n/1000==11 || n/1000000==11 || n/1000000000==11) ? 1 : 2);" },
};
static const int NumerusTableSize = sizeof(numerusTable) / sizeof(numerusTable[0]);
@@ -352,7 +369,7 @@ static const uchar magic[MagicLength] = {
};
bool getNumerusInfo(QLocale::Language language, QLocale::Country country,
- QByteArray *rules, QStringList *forms)
+ QByteArray *rules, QStringList *forms, const char **gettextRules)
{
while (true) {
for (int i = 0; i < NumerusTableSize; ++i) {
@@ -365,6 +382,8 @@ bool getNumerusInfo(QLocale::Language language, QLocale::Country country,
*rules = QByteArray::fromRawData(reinterpret_cast<const char *>(entry.rules),
entry.rulesSize);
}
+ if (gettextRules)
+ *gettextRules = entry.gettextRules;
if (forms) {
forms->clear();
for (int k = 0; entry.forms[k]; ++k)
diff --git a/tools/linguist/shared/po.cpp b/tools/linguist/shared/po.cpp
index 3354d61..99a8751 100644
--- a/tools/linguist/shared/po.cpp
+++ b/tools/linguist/shared/po.cpp
@@ -45,6 +45,7 @@
#include <QtCore/QIODevice>
#include <QtCore/QHash>
#include <QtCore/QString>
+#include <QtCore/QTextCodec>
#include <QtCore/QTextStream>
#include <ctype.h>
@@ -201,55 +202,54 @@ public:
public:
- QString id;
- QString context;
- QString tscomment;
- QString oldTscomment;
- QString lineNumber;
- QString fileName;
- QString references;
- QString translatorComments;
- QString automaticComments;
- QString msgId;
- QString oldMsgId;
- QStringList msgStr;
+ QByteArray id;
+ QByteArray context;
+ QByteArray tscomment;
+ QByteArray oldTscomment;
+ QByteArray lineNumber;
+ QByteArray fileName;
+ QByteArray references;
+ QByteArray translatorComments;
+ QByteArray automaticComments;
+ QByteArray msgId;
+ QByteArray oldMsgId;
+ QList<QByteArray> msgStr;
bool isPlural;
bool isFuzzy;
QHash<QString, QString> extra;
};
-static bool isTranslationLine(const QString &line)
+static bool isTranslationLine(const QByteArray &line)
{
- return line.startsWith(QLatin1String("#~ msgstr"))
- || line.startsWith(QLatin1String("msgstr"));
+ return line.startsWith("#~ msgstr") || line.startsWith("msgstr");
}
-static QString slurpEscapedString(const QStringList &lines, int & l,
- int offset, const QString &prefix, ConversionData &cd)
+static QByteArray slurpEscapedString(const QList<QByteArray> &lines, int &l,
+ int offset, const QByteArray &prefix, ConversionData &cd)
{
- QString msg;
+ QByteArray msg;
int stoff;
for (; l < lines.size(); ++l) {
- const QString &line = lines.at(l);
+ const QByteArray &line = lines.at(l);
if (line.isEmpty() || !line.startsWith(prefix))
break;
- while (line[offset].isSpace()) // No length check, as string has no trailing spaces.
+ while (isspace(line[offset])) // No length check, as string has no trailing spaces.
offset++;
- if (line[offset].unicode() != '"')
+ if (line[offset] != '"')
break;
offset++;
forever {
if (offset == line.length())
goto premature_eol;
- ushort c = line[offset++].unicode();
+ uchar c = line[offset++];
if (c == '"') {
if (offset == line.length())
break;
- while (line[offset].isSpace())
+ while (isspace(line[offset]))
offset++;
- if (line[offset++].unicode() != '"') {
+ if (line[offset++] != '"') {
cd.appendError(QString::fromLatin1(
"PO parsing error: extra characters on line %1.")
.arg(l + 1));
@@ -260,34 +260,34 @@ static QString slurpEscapedString(const QStringList &lines, int & l,
if (c == '\\') {
if (offset == line.length())
goto premature_eol;
- c = line[offset++].unicode();
+ c = line[offset++];
switch (c) {
case 'r':
- msg += QLatin1Char('\r'); // Maybe just throw it away?
+ msg += '\r'; // Maybe just throw it away?
break;
case 'n':
- msg += QLatin1Char('\n');
+ msg += '\n';
break;
case 't':
- msg += QLatin1Char('\t');
+ msg += '\t';
break;
case 'v':
- msg += QLatin1Char('\v');
+ msg += '\v';
break;
case 'a':
- msg += QLatin1Char('\a');
+ msg += '\a';
break;
case 'b':
- msg += QLatin1Char('\b');
+ msg += '\b';
break;
case 'f':
- msg += QLatin1Char('\f');
+ msg += '\f';
break;
case '"':
- msg += QLatin1Char('"');
+ msg += '"';
break;
case '\\':
- msg += QLatin1Char('\\');
+ msg += '\\';
break;
case '0':
case '1':
@@ -298,28 +298,28 @@ static QString slurpEscapedString(const QStringList &lines, int & l,
case '6':
case '7':
stoff = offset - 1;
- while ((c = line[offset].unicode()) >= '0' && c <= '7')
+ while ((c = line[offset]) >= '0' && c <= '7')
if (++offset == line.length())
goto premature_eol;
- msg += QChar(line.mid(stoff, offset - stoff).toUInt(0, 8));
+ msg += line.mid(stoff, offset - stoff).toUInt(0, 8);
break;
case 'x':
stoff = offset;
- while (isxdigit(line[offset].unicode()))
+ while (isxdigit(line[offset]))
if (++offset == line.length())
goto premature_eol;
- msg += QChar(line.mid(stoff, offset - stoff).toUInt(0, 16));
+ msg += line.mid(stoff, offset - stoff).toUInt(0, 16);
break;
default:
cd.appendError(QString::fromLatin1(
"PO parsing error: invalid escape '\\%1' (line %2).")
- .arg(QChar(c)).arg(l + 1));
- msg += QLatin1Char('\\');
- msg += QChar(c);
+ .arg(QChar((uint)c)).arg(l + 1));
+ msg += '\\';
+ msg += c;
break;
}
} else {
- msg += QChar(c);
+ msg += c;
}
}
offset = prefix.size();
@@ -330,36 +330,61 @@ static QString slurpEscapedString(const QStringList &lines, int & l,
premature_eol:
cd.appendError(QString::fromLatin1(
"PO parsing error: premature end of line %1.").arg(l + 1));
- return QString();
+ return QByteArray();
}
-static void slurpComment(QString &msg, const QStringList &lines, int & l)
+static void slurpComment(QByteArray &msg, const QList<QByteArray> &lines, int & l)
{
- const QChar newline = QLatin1Char('\n');
- QString prefix = lines.at(l);
+ QByteArray prefix = lines.at(l);
for (int i = 1; ; i++) {
- if (prefix.at(i).unicode() != ' ') {
+ if (prefix.at(i) != ' ') {
prefix.truncate(i);
break;
}
}
for (; l < lines.size(); ++l) {
- const QString &line = lines.at(l);
+ const QByteArray &line = lines.at(l);
if (line.startsWith(prefix))
msg += line.mid(prefix.size());
- else if (line != QLatin1String("#"))
+ else if (line != "#")
break;
- msg += newline;
+ msg += '\n';
}
--l;
}
+static QString makePoHeader(const QString &str)
+{
+ return QLatin1String("po-header-") + str.toLower().replace(QLatin1Char('-'), QLatin1Char('_'));
+}
+
+static QByteArray QByteArrayList_join(const QList<QByteArray> &that, char sep)
+{
+ int totalLength = 0;
+ const int size = that.size();
+
+ for (int i = 0; i < size; ++i)
+ totalLength += that.at(i).size();
+
+ if (size > 0)
+ totalLength += size - 1;
+
+ QByteArray res;
+ if (totalLength == 0)
+ return res;
+ res.reserve(totalLength);
+ for (int i = 0; i < that.size(); ++i) {
+ if (i)
+ res += sep;
+ res += that.at(i);
+ }
+ return res;
+}
+
bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
{
- const QChar quote = QLatin1Char('"');
- const QChar newline = QLatin1Char('\n');
- QTextStream in(&dev);
- in.setCodec(cd.m_codecForSource.isEmpty() ? QByteArray("UTF-8") : cd.m_codecForSource);
+ QTextCodec *codec = QTextCodec::codecForName(
+ cd.m_codecForSource.isEmpty() ? QByteArray("UTF-8") : cd.m_codecForSource);
bool error = false;
// format of a .po file entry:
@@ -380,25 +405,23 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
// ...
// we need line based lookahead below.
- QStringList lines;
- while (!in.atEnd())
- lines.append(in.readLine().trimmed());
- lines.append(QString());
+ QList<QByteArray> lines;
+ while (!dev.atEnd())
+ lines.append(dev.readLine().trimmed());
+ lines.append(QByteArray());
- int l = 0;
+ int l = 0, lastCmtLine = -1;
PoItem item;
for (; l != lines.size(); ++l) {
- QString line = lines.at(l);
+ QByteArray line = lines.at(l);
if (line.isEmpty())
continue;
if (isTranslationLine(line)) {
- bool isObsolete = line.startsWith(QLatin1String("#~ msgstr"));
- const QString prefix = QLatin1String(isObsolete ? "#~ " : "");
+ bool isObsolete = line.startsWith("#~ msgstr");
+ const QByteArray prefix = isObsolete ? "#~ " : "";
while (true) {
- int idx = line.indexOf(QLatin1Char(' '), prefix.length());
- QString str = slurpEscapedString(lines, l, idx, prefix, cd);
- str.replace(QChar(Translator::TextVariantSeparator),
- QChar(Translator::BinaryVariantSeparator));
+ int idx = line.indexOf(' ', prefix.length());
+ QByteArray str = slurpEscapedString(lines, l, idx, prefix, cd);
item.msgStr.append(str);
if (l + 1 >= lines.size() || !isTranslationLine(lines.at(l + 1)))
break;
@@ -406,31 +429,109 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
line = lines.at(l);
}
if (item.msgId.isEmpty()) {
- QRegExp rx(QLatin1String("\\bX-Language: ([^\n]*)\n"));
- int idx = rx.indexIn(item.msgStr.first());
- if (idx >= 0) {
- translator.setLanguageCode(rx.cap(1));
- item.msgStr.first().remove(idx, rx.matchedLength());
+ QHash<QString, QByteArray> extras;
+ QList<QByteArray> hdrOrder;
+ QByteArray pluralForms;
+ foreach (const QByteArray &hdr, item.msgStr.first().split('\n')) {
+ if (hdr.isEmpty())
+ continue;
+ int idx = hdr.indexOf(':');
+ if (idx < 0) {
+ cd.appendError(QString::fromLatin1("Unexpected PO header format '%1'\n")
+ .arg(QString::fromLatin1(hdr)));
+ error = true;
+ break;
+ }
+ QByteArray hdrName = hdr.left(idx).trimmed();
+ QByteArray hdrValue = hdr.mid(idx + 1).trimmed();
+ hdrOrder << hdrName;
+ if (hdrName == "X-Language") {
+ translator.setLanguageCode(QString::fromLatin1(hdrValue));
+ } else if (hdrName == "X-Source-Language") {
+ translator.setSourceLanguageCode(QString::fromLatin1(hdrValue));
+ } else if (hdrName == "Plural-Forms") {
+ pluralForms = hdrValue;
+ } else if (hdrName == "MIME-Version") {
+ // just assume it is 1.0
+ } else if (hdrName == "Content-Type") {
+ if (cd.m_codecForSource.isEmpty()) {
+ if (!hdrValue.startsWith("text/plain; charset=")) {
+ cd.appendError(QString::fromLatin1("Unexpected Content-Type header '%1'\n")
+ .arg(QString::fromLatin1(hdrValue)));
+ error = true;
+ // This will avoid a flood of conversion errors.
+ codec = QTextCodec::codecForName("latin1");
+ } else {
+ QByteArray cod = hdrValue.mid(20);
+ QTextCodec *cdc = QTextCodec::codecForName(cod);
+ if (!cdc) {
+ cd.appendError(QString::fromLatin1("Unsupported codec '%1'\n")
+ .arg(QString::fromLatin1(cod)));
+ error = true;
+ // This will avoid a flood of conversion errors.
+ codec = QTextCodec::codecForName("latin1");
+ } else {
+ codec = cdc;
+ }
+ }
+ }
+ } else if (hdrName == "Content-Transfer-Encoding") {
+ if (hdrValue != "8bit") {
+ cd.appendError(QString::fromLatin1("Unexpected Content-Transfer-Encoding '%1'\n")
+ .arg(QString::fromLatin1(hdrValue)));
+ return false;
+ }
+ } else if (hdrName == "X-Virgin-Header") {
+ // legacy
+ } else {
+ extras[makePoHeader(QString::fromLatin1(hdrName))] = hdrValue;
+ }
}
- QRegExp rx2(QLatin1String("\\bX-Source-Language: ([^\n]*)\n"));
- int idx2 = rx2.indexIn(item.msgStr.first());
- if (idx2 >= 0) {
- translator.setSourceLanguageCode(rx2.cap(1));
- item.msgStr.first().remove(idx2, rx2.matchedLength());
+ if (!pluralForms.isEmpty()) {
+ if (translator.languageCode().isEmpty()) {
+ extras[makePoHeader(QLatin1String("Plural-Forms"))] = pluralForms;
+ } else {
+ // FIXME: have fun with making a consistency check ...
+ }
}
- if (item.msgStr.first().indexOf(
- QRegExp(QLatin1String("\\bX-Virgin-Header:[^\n]*\n"))) >= 0) {
- item = PoItem();
- continue;
+ // Eliminate the field if only headers we added are present in standard order.
+ // Keep in sync with savePO
+ static const char * const dfltHdrs[] = {
+ "MIME-Version", "Content-Type", "Content-Transfer-Encoding",
+ "Plural-Forms", "X-Language", "X-Source-Language"
+ };
+ uint cdh = 0;
+ for (int cho = 0; cho < hdrOrder.length(); cho++) {
+ for (;; cdh++) {
+ if (cdh == sizeof(dfltHdrs)/sizeof(dfltHdrs[0])) {
+ extras[QLatin1String("po-headers")] =
+ QByteArrayList_join(hdrOrder, ',');
+ goto doneho;
+ }
+ if (hdrOrder.at(cho) == dfltHdrs[cdh]) {
+ cdh++;
+ break;
+ }
+ }
}
+ doneho:
+ if (lastCmtLine != -1)
+ extras[QLatin1String("po-header_comment")] =
+ QByteArrayList_join(lines.mid(0, lastCmtLine + 1), '\n');
+ for (QHash<QString, QByteArray>::ConstIterator it = extras.constBegin(),
+ end = extras.constEnd();
+ it != end; ++it)
+ translator.setExtra(it.key(), codec->toUnicode(it.value()));
+ item = PoItem();
+ continue;
}
// build translator message
TranslatorMessage msg;
- msg.setContext(item.context);
+ msg.setContext(codec->toUnicode(item.context));
if (!item.references.isEmpty()) {
foreach (const QString &ref,
- item.references.split(QRegExp(QLatin1String("\\s")),
- QString::SkipEmptyParts)) {
+ codec->toUnicode(item.references).split(
+ QRegExp(QLatin1String("\\s")), QString::SkipEmptyParts)) {
int pos = ref.lastIndexOf(QLatin1Char(':'));
if (pos != -1)
msg.addReference(ref.left(pos), ref.mid(pos + 1).toInt());
@@ -438,18 +539,25 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
} else if (isObsolete) {
msg.setFileName(QLatin1String(MAGIC_OBSOLETE_REFERENCE));
}
- msg.setId(item.id);
- msg.setSourceText(item.msgId);
- msg.setOldSourceText(item.oldMsgId);
- msg.setComment(item.tscomment);
- msg.setOldComment(item.oldTscomment);
- msg.setExtraComment(item.automaticComments);
- msg.setTranslatorComment(item.translatorComments);
+ msg.setId(codec->toUnicode(item.id));
+ msg.setSourceText(codec->toUnicode(item.msgId));
+ msg.setOldSourceText(codec->toUnicode(item.oldMsgId));
+ msg.setComment(codec->toUnicode(item.tscomment));
+ msg.setOldComment(codec->toUnicode(item.oldTscomment));
+ msg.setExtraComment(codec->toUnicode(item.automaticComments));
+ msg.setTranslatorComment(codec->toUnicode(item.translatorComments));
msg.setPlural(item.isPlural || item.msgStr.size() > 1);
- msg.setTranslations(item.msgStr);
+ QStringList translations;
+ foreach (const QByteArray &bstr, item.msgStr) {
+ QString str = codec->toUnicode(bstr);
+ str.replace(QChar(Translator::TextVariantSeparator),
+ QChar(Translator::BinaryVariantSeparator));
+ translations << str;
+ }
+ msg.setTranslations(translations);
if (isObsolete)
msg.setType(TranslatorMessage::Obsolete);
- else if (item.isFuzzy)
+ else if (item.isFuzzy || (!msg.sourceText().isEmpty() && !msg.isTranslated()))
msg.setType(TranslatorMessage::Unfinished);
else
msg.setType(TranslatorMessage::Finished);
@@ -460,18 +568,19 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
//qDebug() << flags << msg.m_extra;
translator.append(msg);
item = PoItem();
- } else if (line.startsWith(QLatin1Char('#'))) {
- switch(line.size() < 2 ? 0 : line.at(1).unicode()) {
+ } else if (line.startsWith('#')) {
+ switch (line.size() < 2 ? 0 : line.at(1)) {
case ':':
item.references += line.mid(3);
- item.references += newline;
+ item.references += '\n';
break;
case ',': {
QStringList flags =
- line.mid(2).split(QRegExp(QLatin1String("[, ]")),
- QString::SkipEmptyParts);
+ QString::fromLatin1(line.mid(2)).split(
+ QRegExp(QLatin1String("[, ]")), QString::SkipEmptyParts);
if (flags.removeOne(QLatin1String("fuzzy")))
item.isFuzzy = true;
+ flags.removeOne(QLatin1String("qt-format"));
TranslatorMessage::ExtraData::const_iterator it =
item.extra.find(QLatin1String("po-flags"));
if (it != item.extra.end())
@@ -481,103 +590,130 @@ bool loadPO(Translator &translator, QIODevice &dev, ConversionData &cd)
break;
}
case 0:
- item.translatorComments += newline;
+ item.translatorComments += '\n';
break;
case ' ':
slurpComment(item.translatorComments, lines, l);
break;
case '.':
- if (line.startsWith(QLatin1String("#. ts-context "))) {
+ if (line.startsWith("#. ts-context ")) {
item.context = line.mid(14);
- } else if (line.startsWith(QLatin1String("#. ts-id "))) {
+ } else if (line.startsWith("#. ts-id ")) {
item.id = line.mid(9);
} else {
item.automaticComments += line.mid(3);
- item.automaticComments += newline;
+ item.automaticComments += '\n';
}
break;
case '|':
- if (line.startsWith(QLatin1String("#| msgid "))) {
- item.oldMsgId = slurpEscapedString(lines, l, 9, QLatin1String("#| "), cd);
- } else if (line.startsWith(QLatin1String("#| msgid_plural "))) {
- QString extra = slurpEscapedString(lines, l, 16, QLatin1String("#| "), cd);
+ if (line.startsWith("#| msgid ")) {
+ item.oldMsgId = slurpEscapedString(lines, l, 9, "#| ", cd);
+ } else if (line.startsWith("#| msgid_plural ")) {
+ QByteArray extra = slurpEscapedString(lines, l, 16, "#| ", cd);
if (extra != item.oldMsgId)
- item.extra[QLatin1String("po-old_msgid_plural")] = extra;
- } else if (line.startsWith(QLatin1String("#| msgctxt "))) {
- item.oldTscomment = slurpEscapedString(lines, l, 11, QLatin1String("#| "), cd);
+ item.extra[QLatin1String("po-old_msgid_plural")] =
+ codec->toUnicode(extra);
+ } else if (line.startsWith("#| msgctxt ")) {
+ item.oldTscomment = slurpEscapedString(lines, l, 11, "#| ", cd);
} else {
cd.appendError(QString(QLatin1String("PO-format parse error in line %1: '%2'\n"))
- .arg(l + 1).arg(lines[l]));
+ .arg(l + 1).arg(codec->toUnicode(lines[l])));
error = true;
}
break;
case '~':
- if (line.startsWith(QLatin1String("#~ msgid "))) {
- item.msgId = slurpEscapedString(lines, l, 9, QLatin1String("#~ "), cd);
- } else if (line.startsWith(QLatin1String("#~ msgid_plural "))) {
- QString extra = slurpEscapedString(lines, l, 16, QLatin1String("#~ "), cd);
+ if (line.startsWith("#~ msgid ")) {
+ item.msgId = slurpEscapedString(lines, l, 9, "#~ ", cd);
+ } else if (line.startsWith("#~ msgid_plural ")) {
+ QByteArray extra = slurpEscapedString(lines, l, 16, "#~ ", cd);
if (extra != item.msgId)
- item.extra[QLatin1String("po-msgid_plural")] = extra;
+ item.extra[QLatin1String("po-msgid_plural")] =
+ codec->toUnicode(extra);
item.isPlural = true;
- } else if (line.startsWith(QLatin1String("#~ msgctxt "))) {
- item.tscomment = slurpEscapedString(lines, l, 11, QLatin1String("#~ "), cd);
+ } else if (line.startsWith("#~ msgctxt ")) {
+ item.tscomment = slurpEscapedString(lines, l, 11, "#~ ", cd);
} else {
cd.appendError(QString(QLatin1String("PO-format parse error in line %1: '%2'\n"))
- .arg(l + 1).arg(lines[l]));
+ .arg(l + 1).arg(codec->toUnicode(lines[l])));
error = true;
}
break;
default:
cd.appendError(QString(QLatin1String("PO-format parse error in line %1: '%2'\n"))
- .arg(l + 1).arg(lines[l]));
+ .arg(l + 1).arg(codec->toUnicode(lines[l])));
error = true;
break;
}
- } else if (line.startsWith(QLatin1String("msgctxt "))) {
- item.tscomment = slurpEscapedString(lines, l, 8, QString(), cd);
- } else if (line.startsWith(QLatin1String("msgid "))) {
- item.msgId = slurpEscapedString(lines, l, 6, QString(), cd);
- } else if (line.startsWith(QLatin1String("msgid_plural "))) {
- QString extra = slurpEscapedString(lines, l, 13, QString(), cd);
+ lastCmtLine = l;
+ } else if (line.startsWith("msgctxt ")) {
+ item.tscomment = slurpEscapedString(lines, l, 8, QByteArray(), cd);
+ } else if (line.startsWith("msgid ")) {
+ item.msgId = slurpEscapedString(lines, l, 6, QByteArray(), cd);
+ } else if (line.startsWith("msgid_plural ")) {
+ QByteArray extra = slurpEscapedString(lines, l, 13, QByteArray(), cd);
if (extra != item.msgId)
- item.extra[QLatin1String("po-msgid_plural")] = extra;
+ item.extra[QLatin1String("po-msgid_plural")] = codec->toUnicode(extra);
item.isPlural = true;
} else {
cd.appendError(QString(QLatin1String("PO-format error in line %1: '%2'\n"))
- .arg(l + 1).arg(lines[l]));
+ .arg(l + 1).arg(codec->toUnicode(lines[l])));
error = true;
}
}
return !error && cd.errors().isEmpty();
}
+static void addPoHeader(Translator::ExtraData &headers, QStringList &hdrOrder,
+ const char *name, const QString &value)
+{
+ QString qName = QLatin1String(name);
+ if (!hdrOrder.contains(qName))
+ hdrOrder << qName;
+ headers[makePoHeader(qName)] = value;
+}
+
bool savePO(const Translator &translator, QIODevice &dev, ConversionData &cd)
{
+ QString str_format = QLatin1String("-format");
+
bool ok = true;
QTextStream out(&dev);
out.setCodec(cd.m_outputCodec.isEmpty() ? QByteArray("UTF-8") : cd.m_outputCodec);
- bool first = true;
- if (translator.messages().isEmpty() || !translator.messages().first().sourceText().isEmpty()) {
- out <<
- "# SOME DESCRIPTIVE TITLE.\n"
- "# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n"
- "# This file is distributed under the same license as the PACKAGE package.\n"
- "# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\n"
- "#\n"
- "#, fuzzy\n"
- "msgid \"\"\n"
- "msgstr \"\"\n"
- "\"X-Virgin-Header: remove this line if you change anything in the header.\\n\"\n";
- if (!translator.languageCode().isEmpty())
- out << "\"X-Language: " << translator.languageCode() << "\\n\"\n";
- if (!translator.sourceLanguageCode().isEmpty())
- out << "\"X-Source-Language: " << translator.sourceLanguageCode() << "\\n\"\n";
- first = false;
+ QString cmt = translator.extra(QLatin1String("po-header_comment"));
+ if (!cmt.isEmpty())
+ out << cmt << '\n';
+ out << "msgid \"\"\n";
+ Translator::ExtraData headers = translator.extras();
+ QStringList hdrOrder = translator.extra(QLatin1String("po-headers")).split(
+ QLatin1Char(','), QString::SkipEmptyParts);
+ // Keep in sync with loadPO
+ addPoHeader(headers, hdrOrder, "MIME-Version", QLatin1String("1.0"));
+ addPoHeader(headers, hdrOrder, "Content-Type",
+ QLatin1String("text/plain; charset=" + out.codec()->name()));
+ addPoHeader(headers, hdrOrder, "Content-Transfer-Encoding", QLatin1String("8bit"));
+ if (!translator.languageCode().isEmpty()) {
+ QLocale::Language l;
+ QLocale::Country c;
+ Translator::languageAndCountry(translator.languageCode(), &l, &c);
+ const char *gettextRules;
+ if (getNumerusInfo(l, c, 0, 0, &gettextRules))
+ addPoHeader(headers, hdrOrder, "Plural-Forms", QLatin1String(gettextRules));
+ addPoHeader(headers, hdrOrder, "X-Language", translator.languageCode());
}
+ if (!translator.sourceLanguageCode().isEmpty())
+ addPoHeader(headers, hdrOrder, "X-Source-Language", translator.sourceLanguageCode());
+ QString hdrStr;
+ foreach (const QString &hdr, hdrOrder) {
+ hdrStr += hdr;
+ hdrStr += QLatin1String(": ");
+ hdrStr += headers.value(makePoHeader(hdr));
+ hdrStr += QLatin1Char('\n');
+ }
+ out << poEscapedString(QString(), QString::fromLatin1("msgstr"), true, hdrStr);
+
foreach (const TranslatorMessage &msg, translator.messages()) {
- if (!first)
- out << endl;
+ out << endl;
if (!msg.translatorComment().isEmpty())
out << poEscapedLines(QLatin1String("#"), true, msg.translatorComment());
@@ -599,16 +735,36 @@ bool savePO(const Translator &translator, QIODevice &dev, ConversionData &cd)
}
bool noWrap = false;
+ bool skipFormat = false;
QStringList flags;
- if (msg.type() == TranslatorMessage::Unfinished)
+ if (msg.type() == TranslatorMessage::Unfinished && msg.isTranslated())
flags.append(QLatin1String("fuzzy"));
TranslatorMessage::ExtraData::const_iterator itr =
msg.extras().find(QLatin1String("po-flags"));
if (itr != msg.extras().end()) {
- if (itr->split(QLatin1String(", ")).contains(QLatin1String("no-wrap")))
+ QStringList atoms = itr->split(QLatin1String(", "));
+ foreach (const QString &atom, atoms)
+ if (atom.endsWith(str_format)) {
+ skipFormat = true;
+ break;
+ }
+ if (atoms.contains(QLatin1String("no-wrap")))
noWrap = true;
flags.append(*itr);
}
+ if (!skipFormat) {
+ QString source = msg.sourceText();
+ // This is fuzzy logic, as we don't know whether the string is
+ // actually used with QString::arg().
+ for (int off = 0; (off = source.indexOf(QLatin1Char('%'), off)) >= 0; ) {
+ if (++off >= source.length())
+ break;
+ if (source.at(off) == QLatin1Char('n') || source.at(off).isDigit()) {
+ flags.append(QLatin1String("qt-format"));
+ break;
+ }
+ }
+ }
if (!flags.isEmpty())
out << "#, " << flags.join(QLatin1String(", ")) << '\n';
@@ -626,11 +782,8 @@ bool savePO(const Translator &translator, QIODevice &dev, ConversionData &cd)
out << poEscapedString(prefix, QLatin1String("msgid"), noWrap, msg.sourceText());
if (!msg.isPlural()) {
QString transl = msg.translation();
- if (first) {
- transl.remove(QRegExp(QLatin1String("\\bX-Language:[^\n]*\n")));
- if (!translator.languageCode().isEmpty())
- transl += QLatin1String("X-Language: ") + translator.languageCode() + QLatin1Char('\n');
- }
+ transl.replace(QChar(Translator::BinaryVariantSeparator),
+ QChar(Translator::TextVariantSeparator));
out << poEscapedString(prefix, QLatin1String("msgstr"), noWrap, transl);
} else {
QString plural = msg.extra(QLatin1String("po-msgid_plural"));
@@ -646,11 +799,17 @@ bool savePO(const Translator &translator, QIODevice &dev, ConversionData &cd)
str);
}
}
- first = false;
}
return ok;
}
+static bool savePOT(const Translator &translator, QIODevice &dev, ConversionData &cd)
+{
+ Translator ttor = translator;
+ ttor.dropTranslations();
+ return savePO(ttor, dev, cd);
+}
+
int initPO()
{
Translator::FileFormat format;
@@ -661,6 +820,13 @@ int initPO()
format.fileType = Translator::FileFormat::TranslationSource;
format.priority = 1;
Translator::registerFileFormat(format);
+ format.extension = QLatin1String("pot");
+ format.description = QObject::tr("GNU Gettext localization template files");
+ format.loader = &loadPO;
+ format.saver = &savePOT;
+ format.fileType = Translator::FileFormat::TranslationSource;
+ format.priority = -1;
+ Translator::registerFileFormat(format);
return 1;
}
diff --git a/tools/linguist/shared/qm.cpp b/tools/linguist/shared/qm.cpp
index de1284f..e2c4f4a 100644
--- a/tools/linguist/shared/qm.cpp
+++ b/tools/linguist/shared/qm.cpp
@@ -564,7 +564,7 @@ bool loadQM(Translator &translator, QIODevice &dev, ConversionData &cd)
Translator::languageAndCountry(translator.languageCode(), &l, &c);
QStringList numerusForms;
bool guessPlurals = true;
- if (getNumerusInfo(l, c, 0, &numerusForms))
+ if (getNumerusInfo(l, c, 0, &numerusForms, 0))
guessPlurals = (numerusForms.count() == 1);
QString context, contextUtf8;
@@ -704,7 +704,7 @@ static bool saveQM(const Translator &translator, QIODevice &dev, ConversionData
QLocale::Country c;
Translator::languageAndCountry(translator.languageCode(), &l, &c);
QByteArray rules;
- if (getNumerusInfo(l, c, &rules, 0))
+ if (getNumerusInfo(l, c, &rules, 0, 0))
releaser.setNumerusRules(rules);
releaser.setCodecName(translator.codecName());
diff --git a/tools/linguist/shared/translator.cpp b/tools/linguist/shared/translator.cpp
index 4331ce6..465355d 100644
--- a/tools/linguist/shared/translator.cpp
+++ b/tools/linguist/shared/translator.cpp
@@ -652,7 +652,7 @@ void Translator::normalizeTranslations(ConversionData &cd)
int numPlurals = 1;
if (l != QLocale::C) {
QStringList forms;
- if (getNumerusInfo(l, c, 0, &forms))
+ if (getNumerusInfo(l, c, 0, &forms, 0))
numPlurals = forms.count(); // includes singular
}
for (int i = 0; i < m_messages.count(); ++i) {
diff --git a/tools/linguist/shared/translator.h b/tools/linguist/shared/translator.h
index 0b88c07..bb199f0 100644
--- a/tools/linguist/shared/translator.h
+++ b/tools/linguist/shared/translator.h
@@ -233,7 +233,7 @@ private:
};
bool getNumerusInfo(QLocale::Language language, QLocale::Country country,
- QByteArray *rules, QStringList *forms);
+ QByteArray *rules, QStringList *forms, const char **gettextRules);
/*
This is a quick hack. The proper way to handle this would be
diff --git a/tools/linguist/shared/xliff.cpp b/tools/linguist/shared/xliff.cpp
index 20303ec..6411426 100644
--- a/tools/linguist/shared/xliff.cpp
+++ b/tools/linguist/shared/xliff.cpp
@@ -503,6 +503,8 @@ bool XLIFFHandler::startElement(const QString& namespaceURI,
m_language.replace(QLatin1Char('-'), QLatin1Char('_'));
m_sourceLanguage = atts.value(QLatin1String("source-language"));
m_sourceLanguage.replace(QLatin1Char('-'), QLatin1Char('_'));
+ if (m_sourceLanguage == QLatin1String("en"))
+ m_sourceLanguage.clear();
} else if (localName == QLatin1String("group")) {
if (atts.value(QLatin1String("restype")) == QLatin1String(restypeContext)) {
m_context = atts.value(QLatin1String("resname"));
diff --git a/tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp b/tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp
index 8251e2c..d9343e3 100644
--- a/tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp
+++ b/tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp
@@ -53,14 +53,9 @@
#include "private/qdbusmetaobject_p.h"
#include "private/qdbusintrospection_p.h"
-#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
-#ifdef Q_WS_WIN
-#include <process.h>
-#endif
-
#define PROGRAMNAME "qdbusxml2cpp"
#define PROGRAMVERSION "0.7"
#define PROGRAMCOPYRIGHT "Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)."
diff --git a/tools/qdoc3/codemarker.cpp b/tools/qdoc3/codemarker.cpp
index 15f2c2d..818a91f 100644
--- a/tools/qdoc3/codemarker.cpp
+++ b/tools/qdoc3/codemarker.cpp
@@ -457,7 +457,7 @@ bool CodeMarker::insertReimpFunc(FastSection& fs, Node* node, Status status)
void CodeMarker::append(QList<Section>& sectionList, const FastSection& fs)
{
if (!fs.isEmpty()) {
- Section section(fs.name,fs.singularMember,fs.pluralMember);
+ Section section(fs.name,fs.divClass,fs.singularMember,fs.pluralMember);
section.members = fs.memberMap.values();
section.reimpMembers = fs.reimpMemberMap.values();
section.inherited = fs.inherited;
diff --git a/tools/qdoc3/codemarker.h b/tools/qdoc3/codemarker.h
index 1b21753..aab8a9c 100644
--- a/tools/qdoc3/codemarker.h
+++ b/tools/qdoc3/codemarker.h
@@ -58,6 +58,7 @@ class Tree;
struct Section
{
QString name;
+ QString divClass;
QString singularMember;
QString pluralMember;
NodeList members;
@@ -66,9 +67,11 @@ struct Section
Section() { }
Section(const QString& name0,
+ const QString& divClass0,
const QString& singularMember0,
const QString& pluralMember0)
- : name(name0),
+ : name(name0),
+ divClass(divClass0),
singularMember(singularMember0),
pluralMember(pluralMember0) { }
void appendMember(Node* node) { members.append(node); }
@@ -79,6 +82,7 @@ struct FastSection
{
const InnerNode *innerNode;
QString name;
+ QString divClass;
QString singularMember;
QString pluralMember;
QMap<QString, Node *> memberMap;
@@ -86,20 +90,30 @@ struct FastSection
QList<QPair<ClassNode *, int> > inherited;
FastSection(const InnerNode *innerNode0,
- const QString& name0 = "",
- const QString& singularMember0 = "member",
- const QString& pluralMember0 = "members")
+ const QString& name0,
+ const QString& divClass0,
+ const QString& singularMember0,
+ const QString& pluralMember0)
: innerNode(innerNode0),
name(name0),
+ divClass(divClass0),
singularMember(singularMember0),
pluralMember(pluralMember0) { }
bool isEmpty() const {
- return (memberMap.isEmpty() && inherited.isEmpty() &&
+ return (memberMap.isEmpty() &&
+ inherited.isEmpty() &&
reimpMemberMap.isEmpty());
}
};
+#if 0
+ const QString& name0 = "",
+ const QString& divClass0 = "",
+ const QString& singularMember0 = "member",
+ const QString& pluralMember0 = "members")
+#endif
+
class CodeMarker
{
public:
diff --git a/tools/qdoc3/cppcodemarker.cpp b/tools/qdoc3/cppcodemarker.cpp
index 3ff6ebe..c4ee054 100644
--- a/tools/qdoc3/cppcodemarker.cpp
+++ b/tools/qdoc3/cppcodemarker.cpp
@@ -482,55 +482,66 @@ QList<Section> CppCodeMarker::sections(const InnerNode *inner,
if (style == Summary) {
FastSection privateFunctions(classe,
"Private Functions",
+ "",
"private function",
"private functions");
- FastSection privateSlots(classe, "Private Slots", "private slot", "private slots");
- FastSection privateTypes(classe, "Private Types", "private type", "private types");
+ FastSection privateSlots(classe, "Private Slots", "", "private slot", "private slots");
+ FastSection privateTypes(classe, "Private Types", "", "private type", "private types");
FastSection protectedFunctions(classe,
"Protected Functions",
+ "",
"protected function",
"protected functions");
FastSection protectedSlots(classe,
"Protected Slots",
+ "",
"protected slot",
"protected slots");
FastSection protectedTypes(classe,
"Protected Types",
+ "",
"protected type",
"protected types");
FastSection protectedVariables(classe,
"Protected Variables",
+ "",
"protected type",
"protected variables");
FastSection publicFunctions(classe,
"Public Functions",
+ "",
"public function",
"public functions");
- FastSection publicSignals(classe, "Signals", "signal", "signals");
- FastSection publicSlots(classe, "Public Slots", "public slot", "public slots");
- FastSection publicTypes(classe, "Public Types", "public type", "public types");
+ FastSection publicSignals(classe, "Signals", "", "signal", "signals");
+ FastSection publicSlots(classe, "Public Slots", "", "public slot", "public slots");
+ FastSection publicTypes(classe, "Public Types", "", "public type", "public types");
FastSection publicVariables(classe,
"Public Variables",
- "public type",
+ "",
+ "public variable",
"public variables");
- FastSection properties(classe, "Properties", "property", "properties");
+ FastSection properties(classe, "Properties", "", "property", "properties");
FastSection relatedNonMembers(classe,
"Related Non-Members",
+ "",
"related non-member",
"related non-members");
FastSection staticPrivateMembers(classe,
"Static Private Members",
+ "",
"static private member",
"static private members");
FastSection staticProtectedMembers(classe,
"Static Protected Members",
+ "",
"static protected member",
"static protected members");
FastSection staticPublicMembers(classe,
"Static Public Members",
+ "",
"static public member",
"static public members");
- FastSection macros(inner, "Macros", "macro", "macros");
+ FastSection macros(inner, "Macros", "", "macro", "macros");
NodeList::ConstIterator r = classe->relatedNodes().begin();
while (r != classe->relatedNodes().end()) {
@@ -666,12 +677,12 @@ QList<Section> CppCodeMarker::sections(const InnerNode *inner,
append(sections, macros);
}
else if (style == Detailed) {
- FastSection memberFunctions(classe,"Member Function Documentation");
- FastSection memberTypes(classe,"Member Type Documentation");
- FastSection memberVariables(classe,"Member Variable Documentation");
- FastSection properties(classe,"Property Documentation");
- FastSection relatedNonMembers(classe,"Related Non-Members");
- FastSection macros(classe,"Macro Documentation");
+ FastSection memberFunctions(classe,"Member Function Documentation","func","member","members");
+ FastSection memberTypes(classe,"Member Type Documentation","types","member","members");
+ FastSection memberVariables(classe,"Member Variable Documentation","vars","member","members");
+ FastSection properties(classe,"Property Documentation","prop","member","members");
+ FastSection relatedNonMembers(classe,"Related Non-Members","relnonmem","member","members");
+ FastSection macros(classe,"Macro Documentation","macros","member","members");
NodeList::ConstIterator r = classe->relatedNodes().begin();
while (r != classe->relatedNodes().end()) {
@@ -717,7 +728,7 @@ QList<Section> CppCodeMarker::sections(const InnerNode *inner,
append(sections, macros);
}
else {
- FastSection all(classe);
+ FastSection all(classe,"","","member","members");
QStack<const ClassNode *> stack;
stack.push(classe);
@@ -747,25 +758,29 @@ QList<Section> CppCodeMarker::sections(const InnerNode *inner,
if (style == Summary || style == Detailed) {
FastSection namespaces(inner,
"Namespaces",
+ style == Detailed ? "nmspace" : "",
"namespace",
"namespaces");
FastSection classes(inner,
"Classes",
+ style == Detailed ? "classes" : "",
"class",
"classes");
FastSection types(inner,
- style == Summary ?
- "Types" : "Type Documentation",
+ style == Summary ? "Types" : "Type Documentation",
+ style == Detailed ? "types" : "",
"type",
"types");
FastSection functions(inner,
style == Summary ?
"Functions" : "Function Documentation",
+ style == Detailed ? "func" : "",
"function",
"functions");
FastSection macros(inner,
style == Summary ?
"Macros" : "Macro Documentation",
+ style == Detailed ? "macros" : "",
"macro",
"macros");
@@ -1116,26 +1131,32 @@ QList<Section> CppCodeMarker::qmlSections(const QmlClassNode* qmlClassNode,
if (style == Summary) {
FastSection qmlproperties(qmlClassNode,
"Properties",
+ "",
"property",
"properties");
FastSection qmlattachedproperties(qmlClassNode,
"Attached Properties",
+ "",
"property",
"properties");
FastSection qmlsignals(qmlClassNode,
- "Signals",
- "signal",
- "signals");
+ "Signals",
+ "",
+ "signal",
+ "signals");
FastSection qmlattachedsignals(qmlClassNode,
"Attached Signals",
+ "",
"signal",
"signals");
FastSection qmlmethods(qmlClassNode,
"Methods",
+ "",
"method",
"methods");
FastSection qmlattachedmethods(qmlClassNode,
"Attached Methods",
+ "",
"method",
"methods");
@@ -1179,12 +1200,15 @@ QList<Section> CppCodeMarker::qmlSections(const QmlClassNode* qmlClassNode,
append(sections,qmlattachedmethods);
}
else if (style == Detailed) {
- FastSection qmlproperties(qmlClassNode, "Property Documentation");
- FastSection qmlattachedproperties(qmlClassNode,"Attached Property Documentation");
- FastSection qmlsignals(qmlClassNode,"Signal Documentation");
- FastSection qmlattachedsignals(qmlClassNode,"Attached Signal Documentation");
- FastSection qmlmethods(qmlClassNode,"Method Documentation");
- FastSection qmlattachedmethods(qmlClassNode,"Attached Method Documentation");
+ FastSection qmlproperties(qmlClassNode, "Property Documentation","qmlprop","member","members");
+ FastSection qmlattachedproperties(qmlClassNode,"Attached Property Documentation","qmlattprop",
+ "member","members");
+ FastSection qmlsignals(qmlClassNode,"Signal Documentation","qmlsig","member","members");
+ FastSection qmlattachedsignals(qmlClassNode,"Attached Signal Documentation","qmlattsig",
+ "member","members");
+ FastSection qmlmethods(qmlClassNode,"Method Documentation","qmlmeth","member","members");
+ FastSection qmlattachedmethods(qmlClassNode,"Attached Method Documentation","qmlattmeth",
+ "member","members");
NodeList::ConstIterator c = qmlClassNode->childNodes().begin();
while (c != qmlClassNode->childNodes().end()) {
if ((*c)->subType() == Node::QmlPropertyGroup) {
diff --git a/tools/qdoc3/doc/examples/main.cpp b/tools/qdoc3/doc/examples/main.cpp
index e2cf6c5..e439d3e 100644
--- a/tools/qdoc3/doc/examples/main.cpp
+++ b/tools/qdoc3/doc/examples/main.cpp
@@ -46,7 +46,7 @@ int main(int argc, char *argv[])
{
QApplication app(argc, argv);
- QPushButton *hello("Hello world!");
+ QPushButton hello("Hello world!");
hello.resize(100, 30);
hello.show();
diff --git a/tools/qdoc3/doc/qdoc-manual.qdoc b/tools/qdoc3/doc/qdoc-manual.qdoc
index e2f670c..482af46 100644
--- a/tools/qdoc3/doc/qdoc-manual.qdoc
+++ b/tools/qdoc3/doc/qdoc-manual.qdoc
@@ -78,10 +78,10 @@
\endlist
\o \l{QDoc Configuration}
\list
- \o \l{General Variables}
+ \o \l{General Configuration Variables}
\o \l{Creating Help Project Files}
- \o \l{C++ Specific Variables}
- \o \l{HTML Specific Variables}
+ \o \l{C++ Specific Configuration Variables}
+ \o \l{HTML Specific Configuration Variables}
\o \l{Supporting Derived Projects}
\o \l{QDoc Compatibility}
\o \l{qt.qdocconf}
@@ -1425,6 +1425,7 @@
\quotefromfile examples/main.cpp
+ \skipto QApplication
\printline QApplication
This line includes the QApplication class
@@ -1652,6 +1653,7 @@
can press and release.
\quotefromfile examples/main.cpp
+ \skipto QApplication
\skipline QApplication
\printline QPushButton
@@ -6974,7 +6976,7 @@
\page 21-0-qdoc-configuration.html
\previouspage Title Commands
\contentspage QDoc Manual - Table of Contents
- \nextpage General Variables
+ \nextpage General Configuration Variables
\title QDoc Configuration
@@ -7094,9 +7096,9 @@
\section2 Categories
\list
- \o \l {General Variables}
- \o \l {C++ Specific Variables}
- \o \l {HTML Specific Variables}
+ \o \l {General Configuration Variables}
+ \o \l {C++ Specific Configuration Variables}
+ \o \l {HTML Specific Configuration Variables}
\endlist
\section1 Configuration File Examples
@@ -7133,7 +7135,7 @@
\contentspage QDoc Manual - Table of Contents
\nextpage Creating Help Project Files
- \title General Variables
+ \title General Configuration Variables
With the general QDoc configuration variables, you can define
where QDoc will find the various source files it needs to generate
@@ -7215,7 +7217,7 @@
QDoc originally used a hard-coded value of four spaces for
code indentation to ensure that code snippets could be easily
distinguished from surrounding text. Since we can use
- \l{HTML Specific Variables#HTML.stylesheets}{stylesheets} to
+ \l{HTML Specific Configuration Variables#HTML.stylesheets}{stylesheets} to
adjust the appearance of certain types of HTML elements, this
level of indentation is not always required.
@@ -7572,7 +7574,7 @@
\code
header.fileextensions += *.H
\endcode
-
+
\warning The above assignment may not work as described.
See also \l headerdirs.
@@ -7730,6 +7732,27 @@
bold font, and that \\raisedaster renders a '*'.
\row
+ \o \bold naturallanguage \target naturallanguage
+ \o \bold {The \c naturallanguage variable specifies the natural
+ language used for the documentation generated by qdoc.}
+
+ For example:
+
+ \code
+ naturallanguage = zh-Hans
+ \endcode
+
+ By default, the natural language is \c en for compatibility
+ with legacy documentation.
+
+ qdoc will add the natural language information to the HTML
+ it generates, using the \c lang and \c xml:lang attributes.
+
+ See also \l sourceencoding, \l outputencoding,
+ \l{http://www.w3.org/TR/xhtml1/#C_7}{C.7. The lang and xml:lang Attributes} and
+ \l{http://www.w3.org/TR/i18n-html-tech-lang/#ri20040429.113217290}{Best Practice 13: Using Hans and Hant codes}.
+
+ \row
\o \bold outputdir \target outputdir
\o \bold {The \c outputdir variable specifies the directory
where QDoc will put the generated documentation.}
@@ -7754,6 +7777,31 @@
directory, all files from the previous run will be lost.
\row
+ \o \bold outputencoding \target outputencoding
+ \o \bold {The \c outputencoding variable specifies the encoding
+ used for the documentation generated by qdoc.}
+
+ For example:
+
+ \code
+ outputencoding = UTF-8
+ \endcode
+
+ By default, the output encoding is \c ISO-8859-1 (Latin1) for
+ compatibility with legacy documentation. When generating
+ documentation for some languages, particularly non-European
+ languages, this is not sufficient and an encoding such as UTF-8
+ is required.
+
+ qdoc will encode HTML using this encoding and generate the
+ correct declarations to indicate to browsers which encoding
+ is being used. The \l naturallanguage configuration variable
+ should also be specified to provide browsers with a complete
+ set of character encoding and language information.
+
+ See also \l outputencoding and \l naturallanguage.
+
+ \row
\o \bold outputformats \target outputformats
\o \bold {The \c outputformats variable specifies the format of
the generated documentation.}
@@ -7831,6 +7879,30 @@
See also \l sources and \l sources.fileextensions.
\row
+ \o \bold sourceencoding \target sourceencoding
+ \o \bold {The \c sourceencoding variable specifies the encoding
+ used for the source code and documentation.}
+
+ For example:
+
+ \code
+ sourceencoding = UTF-8
+ \endcode
+
+ By default, the source encoding is \c ISO-8859-1 (Latin1) for
+ compatibility with legacy documentation. For some languages,
+ particularly non-European languages, this is not sufficient
+ and an encoding such as UTF-8 is required.
+
+ Although qdoc will use the encoding to read source and
+ documentation files, limitations of C++ compilers may prevent
+ you from using non-ASCII characters in source code comments.
+ In cases like these, it is possible to write API documentation
+ completely in documentation files.
+
+ See also \l naturallanguage and \l outputencoding.
+
+ \row
\o \bold sources \target sources
\o \bold {The \c sources variable allows you to specify
individual source files in addition to those located in the
@@ -7973,9 +8045,9 @@
/*!
\page 22-creating-help-project-files.html
- \previouspage General Variables
+ \previouspage General Configuration Variables
\contentspage QDoc Manual - Table of Contents
- \nextpage C++ Specific Variables
+ \nextpage C++ Specific Configuration Variables
\title Creating Help Project Files
@@ -8023,9 +8095,9 @@
\page 23-qdoc-configuration-cppvariables.html
\previouspage Creating Help Project Files
\contentspage QDoc Manual - Table of Contents
- \nextpage HTML Specific Variables
+ \nextpage HTML Specific Configuration Variables
- \title C++ Specific Variables
+ \title C++ Specific Configuration Variables
The C++ specific configuration variables are provided to avoid
erroneous documentation due to non-standard C++ constructs.
@@ -8159,11 +8231,11 @@
/*!
\page 24-qdoc-configuration-htmlvariables.html
- \previouspage C++ Specific Variables
+ \previouspage C++ Specific Configuration Variables
\contentspage QDoc Manual - Table of Contents
\nextpage Supporting Derived Projects
- \title HTML Specific Variables
+ \title HTML Specific Configuration Variables
The HTML specific configuration variables define the generated
documentation's style, or define the contents of the
@@ -8289,7 +8361,7 @@
/*!
\page 25-qdoc-configuration-derivedprojects.html
- \previouspage HTML Specific Variables
+ \previouspage HTML Specific Configuration Variables
\contentspage QDoc Manual - Table of Contents
\nextpage QDoc Compatibility
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index cd3da3e..fb9fa95 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -696,7 +696,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
QList<Section> sections;
QList<Section>::ConstIterator s;
for (int i=0; i<LastSinceType; ++i)
- sections.append(Section(sinceTitle(i),QString(),QString()));
+ sections.append(Section(sinceTitle(i),QString(),QString(),QString()));
NodeMultiMap::const_iterator n = nsmap.value().constBegin();
while (n != nsmap.value().constEnd()) {
@@ -1356,8 +1356,10 @@ void HtmlGenerator::generateClassLikeNode(const InnerNode *inner,
if (!inner->doc().isEmpty()) {
out() << "<hr />\n"
+ << "<div class=\"descr\"/>\n"
<< "<h2>" << "Detailed Description" << "</h2>\n";
generateBody(inner, marker);
+ out() << "</div>\n";
generateAlsoList(inner, marker);
}
@@ -1365,6 +1367,8 @@ void HtmlGenerator::generateClassLikeNode(const InnerNode *inner,
s = sections.begin();
while (s != sections.end()) {
out() << "<hr />\n";
+ if (!(*s).divClass.isEmpty())
+ out() << "<div class=\"" << (*s).divClass << "\"/>\n";
out() << "<h2>" << protectEnc((*s).name) << "</h2>\n";
NodeList::ConstIterator m = (*s).members.begin();
@@ -1414,6 +1418,8 @@ void HtmlGenerator::generateClassLikeNode(const InnerNode *inner,
}
++m;
}
+ if (!(*s).divClass.isEmpty())
+ out() << "</div>\n";
++s;
}
generateFooter(inner);
diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp
index 37d6b31..a2bd948 100644
--- a/tools/qdoc3/node.cpp
+++ b/tools/qdoc3/node.cpp
@@ -1334,7 +1334,7 @@ QString QmlClassNode::fileBase() const
void QmlClassNode::addInheritedBy(const QString& base, Node* sub)
{
inheritedBy.insert(base,sub);
-#ifdef DEBUG_MULTIPLE-QDOCCONF_FILES
+#ifdef DEBUG_MULTIPLE_QDOCCONF_FILES
qDebug() << "QmlClassNode::addInheritedBy(): insert" << base << sub->name() << inheritedBy.size();
#endif
}
diff --git a/tools/qdoc3/qscodemarker.cpp b/tools/qdoc3/qscodemarker.cpp
index 89c9c5c..d4b8e80 100644
--- a/tools/qdoc3/qscodemarker.cpp
+++ b/tools/qdoc3/qscodemarker.cpp
@@ -279,11 +279,11 @@ QList<Section> QsCodeMarker::sections( const InnerNode *inner, SynopsisStyle sty
const ClassNode *classe = static_cast<const ClassNode *>(inner);
if ( style == Summary ) {
- FastSection enums(classe, "Enums", "enum", "enums");
- FastSection functions(classe, "Functions", "function", "functions");
- FastSection readOnlyProperties(classe, "Read-Only Properties", "property", "properties");
- FastSection signalz(classe, "Signals", "signal", "signals");
- FastSection writableProperties(classe, "Writable Properties", "property", "properties");
+ FastSection enums(classe, "Enums", "", "enum", "enums");
+ FastSection functions(classe, "Functions", "", "function", "functions");
+ FastSection readOnlyProperties(classe, "", "Read-Only Properties", "property", "properties");
+ FastSection signalz(classe, "Signals", "", "signal", "signals");
+ FastSection writableProperties(classe, "", "Writable Properties", "property", "properties");
QStack<const ClassNode *> stack;
stack.push( classe );
@@ -328,9 +328,9 @@ QList<Section> QsCodeMarker::sections( const InnerNode *inner, SynopsisStyle sty
append( sections, functions );
append( sections, signalz );
} else if ( style == Detailed ) {
- FastSection enums( classe, "Enum Documentation" );
- FastSection functionsAndSignals( classe, "Function and Signal Documentation" );
- FastSection properties( classe, "Property Documentation" );
+ FastSection enums( classe, "Enum Documentation", "", "member", "members");
+ FastSection functionsAndSignals( classe, "Function and Signal Documentation", "", "member", "members");
+ FastSection properties( classe, "Property Documentation", "", "member", "members");
NodeList::ConstIterator c = classe->childNodes().begin();
while ( c != classe->childNodes().end() ) {
@@ -349,7 +349,7 @@ QList<Section> QsCodeMarker::sections( const InnerNode *inner, SynopsisStyle sty
append( sections, properties );
append( sections, functionsAndSignals );
} else { // ( style == SeparateList )
- FastSection all( classe );
+ FastSection all(classe, "", "", "member", "members");
QStack<const ClassNode *> stack;
stack.push( classe );
diff --git a/tools/qml/main.cpp b/tools/qml/main.cpp
index a4de339..5099e49 100644
--- a/tools/qml/main.cpp
+++ b/tools/qml/main.cpp
@@ -41,12 +41,13 @@
#include "qdeclarative.h"
#include "qmlruntime.h"
+#include "qdeclarativeengine.h"
#include <QWidget>
#include <QDir>
#include <QApplication>
#include <QTranslator>
#include <QDebug>
-#include "qfxtester.h"
+#include "qdeclarativetester.h"
#include "qdeclarativefolderlistmodel.h"
QT_USE_NAMESPACE
@@ -100,7 +101,8 @@ void usage()
qWarning(" -dragthreshold <size> .................... set mouse drag threshold size");
qWarning(" -netcache <size> ......................... set disk cache to size bytes");
qWarning(" -translation <translationfile> ........... set the language to run in");
- qWarning(" -L <directory> ........................... prepend to the library search path");
+ qWarning(" -L <directory> ........................... prepend to the library search path,");
+ qWarning(" display path if <directory> is empty");
qWarning(" -opengl .................................. use a QGLWidget for the viewport");
qWarning(" -script <path> ........................... set the script to use");
qWarning(" -scriptopts <options>|help ............... set the script options to use");
@@ -238,7 +240,12 @@ int main(int argc, char ** argv)
} else if (arg == "-qmlbrowser") {
useNativeFileBrowser = false;
} else if (arg == "-L") {
- if (lastArg) usage();
+ if (lastArg) {
+ QDeclarativeEngine tmpEngine;
+ QString paths = tmpEngine.importPathList().join(QLatin1String(":"));
+ fprintf(stderr, "Current search path: %s\n", paths.toLocal8Bit().constData());
+ return 0;
+ }
libraries << QString(argv[++i]);
} else if (arg == "-script") {
if (lastArg) usage();
diff --git a/tools/qml/qfxtester.cpp b/tools/qml/qdeclarativetester.cpp
index 28bbf5e..6245124 100644
--- a/tools/qml/qfxtester.cpp
+++ b/tools/qml/qdeclarativetester.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include <qfxtester.h>
+#include <qdeclarativetester.h>
#include <QDebug>
#include <QApplication>
#include <qdeclarativeview.h>
@@ -311,9 +311,9 @@ void QDeclarativeTester::updateCurrentTime(int msec)
} else if (frame->msec() == msec) {
if (!frame->hash().isEmpty() && frame->hash().toUtf8() != fe.hash.toHex()) {
if (options & QDeclarativeViewer::TestImages && !(options & QDeclarativeViewer::Record)) {
- qWarning() << "QDeclarativeTester: Mismatched frame hash. Seen:"
- << fe.hash.toHex() << "Expected:"
- << frame->hash().toUtf8();
+ qWarning() << "QDeclarativeTester: Mismatched frame hash at" << msec
+ << ". Seen:" << fe.hash.toHex()
+ << "Expected:" << frame->hash().toUtf8();
imagefailure();
}
}
diff --git a/tools/qml/qfxtester.h b/tools/qml/qdeclarativetester.h
index 6521409..d49c9b8 100644
--- a/tools/qml/qfxtester.h
+++ b/tools/qml/qdeclarativetester.h
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#ifndef QFXTESTER_H
-#define QFXTESTER_H
+#ifndef QDECLARATIVETESTER_H
+#define QDECLARATIVETESTER_H
#include <QEvent>
#include <QMouseEvent>
@@ -283,4 +283,4 @@ private:
QT_END_NAMESPACE
-#endif // QFXTESTER_H
+#endif // QDECLARATIVETESTER_H
diff --git a/tools/qml/qml.pro b/tools/qml/qml.pro
index a7eb6f5..ba283b6 100644
--- a/tools/qml/qml.pro
+++ b/tools/qml/qml.pro
@@ -15,13 +15,13 @@ contains(QT_CONFIG, opengl) {
# Input
HEADERS += qmlruntime.h \
proxysettings.h \
- qfxtester.h \
+ qdeclarativetester.h \
deviceorientation.h \
qdeclarativefolderlistmodel.h
SOURCES += main.cpp \
qmlruntime.cpp \
proxysettings.cpp \
- qfxtester.cpp \
+ qdeclarativetester.cpp \
qdeclarativefolderlistmodel.cpp
RESOURCES = qmlruntime.qrc
maemo5 {
diff --git a/tools/qml/qmlruntime.cpp b/tools/qml/qmlruntime.cpp
index d4ceb0b..1ab528e 100644
--- a/tools/qml/qmlruntime.cpp
+++ b/tools/qml/qmlruntime.cpp
@@ -95,7 +95,7 @@
#include <QGLWidget>
#endif
-#include <qfxtester.h>
+#include <qdeclarativetester.h>
#if defined (Q_OS_SYMBIAN)
#define SYMBIAN_NETWORK_INIT
@@ -995,8 +995,22 @@ void QDeclarativeViewer::statusChanged()
if (canvas->status() == QDeclarativeView::Error && tester)
tester->executefailure();
- if (canvas->status() == QDeclarativeView::Ready)
- resize(sizeHint());
+ if (canvas->status() == QDeclarativeView::Ready) {
+ if (!skin) {
+ canvas->updateGeometry();
+ if (mb)
+ mb->updateGeometry();
+ if (!isFullScreen() && !isMaximized())
+ resize(sizeHint());
+ } else {
+ if (scaleSkin)
+ canvas->resize(canvas->sizeHint());
+ else {
+ canvas->setFixedSize(skin->standardScreenSize());
+ canvas->resize(skin->standardScreenSize());
+ }
+ }
+ }
}
void QDeclarativeViewer::launch(const QString& file_or_url)
@@ -1077,21 +1091,6 @@ void QDeclarativeViewer::openQml(const QString& file_or_url)
qWarning() << "Wall startup time:" << t.elapsed();
- if (!skin) {
- canvas->updateGeometry();
- if (mb)
- mb->updateGeometry();
- if (!isFullScreen() && !isMaximized())
- resize(sizeHint());
- } else {
- if (scaleSkin)
- canvas->resize(canvas->sizeHint());
- else {
- canvas->setFixedSize(skin->standardScreenSize());
- canvas->resize(skin->standardScreenSize());
- }
- }
-
#ifdef QTOPIA
show();
#endif
diff --git a/util/s60pixelmetrics/pixel_metrics.cpp b/util/s60pixelmetrics/pixel_metrics.cpp
index beb785e..814e185 100644
--- a/util/s60pixelmetrics/pixel_metrics.cpp
+++ b/util/s60pixelmetrics/pixel_metrics.cpp
@@ -50,7 +50,7 @@
// so that we can keep dynamic and static values inline.
// Please adjust version data if correcting dynamic PM calculations.
const TInt KPMMajorVersion = 1;
-const TInt KPMMinorVersion = 16;
+const TInt KPMMinorVersion = 17;
TPixelMetricsVersion PixelMetrics::Version()
{
@@ -869,7 +869,7 @@ TInt PixelMetrics::PixelMetricValue(QStyle::PixelMetric metric)
// The difference of center piece from border tell the frame width.
if ( value == QStyle::PM_FocusFrameHMargin)
{
- //use topleft for horizontal as S60 uses different values for right and left borders
+ //use topleft for horizontal as S60 uses different values for right and left borders
value = listSinglePaneText.TextRect().iTl.iX - highlightRect.Rect().iTl.iX;
}
else
@@ -1003,6 +1003,13 @@ TInt PixelMetrics::PixelMetricValue(QStyle::PixelMetric metric)
case QStyle::PM_Custom_ThinLineWidth:
value = 1;
break;
+ case QStyle::PM_Custom_MessageBoxHeight:
+ {
+ TAknLayoutRect popupRect;
+ popupRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::popup_window_general(0));
+ value = popupRect.Rect().Height();
+ }
+ break;
case QStyle::PM_ButtonShiftHorizontal:
case QStyle::PM_ButtonShiftVertical:
value = 0;
diff --git a/util/s60pixelmetrics/pixel_metrics.h b/util/s60pixelmetrics/pixel_metrics.h
index 3536c0e..4b0f57e 100644
--- a/util/s60pixelmetrics/pixel_metrics.h
+++ b/util/s60pixelmetrics/pixel_metrics.h
@@ -185,7 +185,9 @@ NONSHARABLE_CLASS( QStyle )
// Bold line width
PM_Custom_BoldLineWidth,
// Thin line width
- PM_Custom_ThinLineWidth
+ PM_Custom_ThinLineWidth,
+ // Height of a popup info messagebox
+ PM_Custom_MessageBoxHeight
};
};
diff --git a/util/s60pixelmetrics/pm_mapperapp.cpp b/util/s60pixelmetrics/pm_mapperapp.cpp
index acc6137..a88499d 100644
--- a/util/s60pixelmetrics/pm_mapperapp.cpp
+++ b/util/s60pixelmetrics/pm_mapperapp.cpp
@@ -155,7 +155,7 @@ void CPixelMetricsMapperAppUi::HandleCommandL( TInt aCommand )
Exit();
break;
case ECmdSwitchOutput:
- {
+ {
HBufC* buffer = HBufC::NewLC( 100 );
TPtr bufferPtr = buffer->Des();
TBool last = ETrue;
@@ -166,7 +166,7 @@ void CPixelMetricsMapperAppUi::HandleCommandL( TInt aCommand )
else
bufferPtr.Append(_L("screen."));
ShowL( *buffer, last );
- }
+ }
break;
case ECmdStatus:
{
@@ -323,7 +323,7 @@ void CPixelMetricsMapperAppUi::HandleCommandL( TInt aCommand )
TInt myValue = KErrNotFound;
for (;;)
{
- if (index==QStyle::PM_Custom_ThinLineWidth)
+ if (index==QStyle::PM_Custom_MessageBoxHeight)
{
last = ETrue;
}
@@ -656,6 +656,9 @@ void CPixelMetricsMapperAppUi::ShowSingleValueL(TInt& aPixelMetric, TInt& aValue
case QStyle::PM_Custom_BoldLineWidth:
bufferPtr.Append(_L("C_BoldLineWidth: "));
break;
+ case QStyle::PM_Custom_MessageBoxHeight:
+ bufferPtr.Append(_L("C_MsgBoxHeight: "));
+ break;
default:
bufferPtr.Append(_L("Default: "));
break;