Revision: 201007 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 12 Mar 2010 15:46:37 +0200
branchRCL_3
changeset 5 d3bac044e0f0
parent 4 3b1da2848fc7
child 6 dee5afe5301f
Revision: 201007 Kit: 201008
bin/patch_capabilities.bat
bin/patch_capabilities.pl
configure
configure.exe
content/apps/qt.sisx
demos/embedded/anomaly/src/AddressBar.cpp
demos/embedded/anomaly/src/BrowserView.cpp
demos/embedded/anomaly/src/BrowserWindow.cpp
demos/embedded/anomaly/src/ControlStrip.cpp
demos/embedded/anomaly/src/ControlStrip.h
demos/embedded/anomaly/src/HomeView.cpp
demos/embedded/anomaly/src/anomaly.qrc
demos/embedded/anomaly/src/images/button-close.png
demos/embedded/fluidlauncher/backup_registration.xml
demos/embedded/fluidlauncher/fluidlauncher.pro
dist/changes-4.6.1
dist/changes-4.6.2
examples/assistant/simpletextviewer/findfiledialog.cpp
examples/designer/taskmenuextension/tictactoedialog.h
examples/network/googlesuggest/googlesuggest.cpp
examples/network/googlesuggest/searchbox.cpp
examples/network/network-chat/chatdialog.cpp
examples/network/network-chat/client.cpp
examples/network/network-chat/connection.cpp
examples/network/network-chat/peermanager.cpp
examples/network/qftp/ftpwindow.cpp
examples/network/qftp/sym_iap_util.h
examples/network/securesocketclient/sslclient.cpp
examples/network/torrent/trackerclient.cpp
examples/tools/customtype/message.cpp
examples/tools/customtype/message.h
examples/uitools/textfinder/textfinder.cpp
examples/webkit/framecapture/framecapture.pro
examples/webkit/simpleselector/simpleselector.pro
layers.sysdef.xml
mkspecs/common/symbian/symbian.conf
mkspecs/features/symbian/def_files.prf
mkspecs/features/symbian/def_files_disabled.prf
mkspecs/features/symbian/qt.prf
mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm
mkspecs/symbian-sbsv2/flm/qt/ts2qm.flm
qmake/generators/makefile.cpp
qmake/generators/makefiledeps.cpp
qmake/generators/symbian/symmake.cpp
qmake/generators/symbian/symmake.h
qmake/generators/symbian/symmake_abld.cpp
qmake/generators/symbian/symmake_sbsv2.cpp
qmake/generators/win32/winmakefile.cpp
qmake/meta.cpp
qmake/option.cpp
qmake/project.cpp
src/3rdparty/phonon/mmf/environmentalreverb.cpp
src/3rdparty/phonon/mmf/utils.h
src/3rdparty/webkit/VERSION
src/3rdparty/webkit/WebCore/ChangeLog
src/3rdparty/webkit/WebCore/WebCore.pro
src/3rdparty/webkit/WebCore/bridge/qt/qt_class.cpp
src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp
src/3rdparty/webkit/WebCore/generated/JSDOMWindow.cpp
src/3rdparty/webkit/WebCore/generated/JSDOMWindow.h
src/3rdparty/webkit/WebCore/platform/PopupMenu.h
src/3rdparty/webkit/WebCore/platform/ScrollView.cpp
src/3rdparty/webkit/WebCore/platform/ScrollView.h
src/3rdparty/webkit/WebCore/platform/qt/PopupMenuQt.cpp
src/3rdparty/webkit/WebCore/platform/qt/QWebPopup.cpp
src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp
src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h
src/3rdparty/webkit/WebCore/platform/qt/ScrollViewQt.cpp
src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp
src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp
src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp
src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp
src/3rdparty/webkit/WebKit/qt/ChangeLog
src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp
src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp
src/3rdparty/webkit/WebKit/qt/symbian/backup_registration.xml
src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
src/corelib/animation/qabstractanimation.cpp
src/corelib/codecs/qutfcodec.cpp
src/corelib/corelib.pro
src/corelib/global/qglobal.h
src/corelib/global/qnamespace.h
src/corelib/global/qnamespace.qdoc
src/corelib/io/qdebug.h
src/corelib/io/qfsfileengine_unix.cpp
src/corelib/io/qprocess_symbian.cpp
src/corelib/io/qprocess_unix.cpp
src/corelib/io/qsettings.cpp
src/corelib/io/qurl.cpp
src/corelib/kernel/qabstractitemmodel.cpp
src/corelib/kernel/qcore_symbian_p.cpp
src/corelib/kernel/qcoreapplication.cpp
src/corelib/kernel/qcoreevent.cpp
src/corelib/kernel/qtranslator.cpp
src/corelib/plugin/qlibrary.cpp
src/corelib/thread/qthread_win.cpp
src/corelib/tools/qbytearray.cpp
src/corelib/tools/qdatetime.cpp
src/corelib/tools/qeasingcurve.cpp
src/corelib/tools/qhash.cpp
src/corelib/tools/qlist.cpp
src/corelib/tools/qsharedpointer.cpp
src/corelib/tools/qstring.cpp
src/dbus/qdbusargument.cpp
src/dbus/qdbusintegrator.cpp
src/dbus/qdbusmarshaller.cpp
src/gui/dialogs/qdialog.cpp
src/gui/dialogs/qfiledialog.cpp
src/gui/dialogs/qprintdialog.h
src/gui/dialogs/qprintpreviewdialog.cpp
src/gui/effects/qgraphicseffect.cpp
src/gui/graphicsview/qgraphicsitem.cpp
src/gui/graphicsview/qgraphicsitem_p.h
src/gui/graphicsview/qgraphicsscene.cpp
src/gui/graphicsview/qgraphicsscene_p.h
src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp
src/gui/graphicsview/qgraphicsscenebsptreeindex_p.h
src/gui/graphicsview/qgraphicssceneindex.cpp
src/gui/graphicsview/qgraphicssceneindex_p.h
src/gui/gui.pro
src/gui/image/qbmphandler.cpp
src/gui/inputmethod/qcoefepinputcontext_p.h
src/gui/inputmethod/qcoefepinputcontext_s60.cpp
src/gui/itemviews/qfileiconprovider.cpp
src/gui/itemviews/qitemdelegate.cpp
src/gui/itemviews/qtableview.cpp
src/gui/kernel/kernel.pri
src/gui/kernel/qaction.cpp
src/gui/kernel/qapplication.cpp
src/gui/kernel/qapplication_mac.mm
src/gui/kernel/qapplication_s60.cpp
src/gui/kernel/qclipboard_s60.cpp
src/gui/kernel/qcocoamenuloader_mac.mm
src/gui/kernel/qcocoamenuloader_mac_p.h
src/gui/kernel/qcocoaview_mac.mm
src/gui/kernel/qdnd_x11.cpp
src/gui/kernel/qeventdispatcher_mac.mm
src/gui/kernel/qmime_mac.cpp
src/gui/kernel/qsoftkeymanager.cpp
src/gui/kernel/qsoftkeymanager_common_p.h
src/gui/kernel/qsoftkeymanager_p.h
src/gui/kernel/qsoftkeymanager_s60.cpp
src/gui/kernel/qsoftkeymanager_s60_p.h
src/gui/kernel/qt_cocoa_helpers_mac.mm
src/gui/kernel/qt_s60_p.h
src/gui/kernel/qwidget.cpp
src/gui/kernel/qwidget_mac.mm
src/gui/painting/qcolor.cpp
src/gui/painting/qpaintengine_raster.cpp
src/gui/painting/qpaintengine_raster_p.h
src/gui/painting/qpainter.cpp
src/gui/styles/qcommonstyle.cpp
src/gui/styles/qgtkstyle.cpp
src/gui/styles/qmacstyle_mac.mm
src/gui/styles/qs60style.cpp
src/gui/styles/qs60style.h
src/gui/styles/qs60style_p.h
src/gui/styles/qs60style_s60.cpp
src/gui/styles/qs60style_simulated.cpp
src/gui/styles/qstyle_s60.qrc
src/gui/styles/styles.pri
src/gui/text/qfontengine.cpp
src/gui/text/qfontengine_s60.cpp
src/gui/text/qfontengine_s60_p.h
src/gui/text/qtextoption.cpp
src/gui/text/qzipreader_p.h
src/gui/text/qzipwriter_p.h
src/gui/util/qsystemtrayicon_mac.mm
src/gui/util/util.pri
src/gui/widgets/qdialogbuttonbox.cpp
src/gui/widgets/qlinecontrol.cpp
src/gui/widgets/qlinecontrol_p.h
src/gui/widgets/qmainwindow.cpp
src/gui/widgets/qmainwindowlayout_mac.mm
src/gui/widgets/qmenu.cpp
src/gui/widgets/qmenu_mac.mm
src/gui/widgets/qmenu_p.h
src/gui/widgets/qmenu_symbian.cpp
src/gui/widgets/qmenubar.cpp
src/gui/widgets/qprintpreviewwidget.cpp
src/gui/widgets/qtoolbar.cpp
src/network/access/qfilenetworkreply.cpp
src/network/access/qfilenetworkreply_p.h
src/network/access/qhttpnetworkconnection.cpp
src/network/access/qhttpnetworkconnection_p.h
src/network/access/qhttpnetworkconnectionchannel.cpp
src/network/access/qhttpnetworkconnectionchannel_p.h
src/network/access/qhttpnetworkheader.cpp
src/network/access/qnetworkaccesshttpbackend.cpp
src/network/access/qnetworkrequest.cpp
src/network/kernel/qauthenticator.cpp
src/network/kernel/qnetworkinterface.cpp
src/network/socket/qlocalserver.cpp
src/network/socket/qlocalsocket_tcp.cpp
src/network/socket/qlocalsocket_unix.cpp
src/network/socket/qnativesocketengine.cpp
src/network/socket/qnativesocketengine_unix.cpp
src/network/socket/qnativesocketengine_win.cpp
src/network/socket/qtcpserver.cpp
src/network/ssl/qsslcertificate.cpp
src/network/ssl/qsslsocket.cpp
src/network/ssl/qsslsocket_openssl.cpp
src/opengl/gl2paintengineex/qglengineshadermanager.cpp
src/opengl/gl2paintengineex/qglengineshadermanager_p.h
src/opengl/gl2paintengineex/qglengineshadersource_p.h
src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
src/opengl/qgl.cpp
src/opengl/qglshaderprogram.cpp
src/opengl/qpixmapdata_gl.cpp
src/openvg/qpixmapdata_vg.cpp
src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h
src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
src/plugins/imageformats/ico/qicohandler.cpp
src/plugins/phonon/mmf/mmf.pro
src/plugins/s60/3_2/3_2.pro
src/plugins/s60/5_0/5_0.pro
src/plugins/s60/s60pluginbase.pri
src/qbase.pri
src/s60installs/backup_registration.xml
src/s60installs/bwins/QtCoreu.def
src/s60installs/bwins/QtGuiu.def
src/s60installs/bwins/QtScriptu.def
src/s60installs/deviceconfiguration/bld.inf
src/s60installs/deviceconfiguration/cmaker/config/export.mk
src/s60installs/deviceconfiguration/cmaker/makefile
src/s60installs/deviceconfiguration/qtconfig.flm
src/s60installs/deviceconfiguration/qtconfig.meta
src/s60installs/deviceconfiguration/qtconfig.mk
src/s60installs/deviceconfiguration/qtconfig.xml
src/s60installs/deviceconfiguration/wrappers/moc
src/s60installs/deviceconfiguration/wrappers/moc.bat
src/s60installs/deviceconfiguration/wrappers/qmake
src/s60installs/deviceconfiguration/wrappers/qmake.bat
src/s60installs/deviceconfiguration/wrappers/qmake_abld
src/s60installs/deviceconfiguration/wrappers/qmake_abld.bat
src/s60installs/deviceconfiguration/wrappers/qt.conf
src/s60installs/deviceconfiguration/wrappers/rcc
src/s60installs/deviceconfiguration/wrappers/rcc.bat
src/s60installs/deviceconfiguration/wrappers/uic
src/s60installs/deviceconfiguration/wrappers/uic.bat
src/s60installs/eabi/QtGuiu.def
src/s60installs/eabi/QtScriptu.def
src/s60installs/s60installs.pro
src/s60installs/sqlite3.sis
src/s60installs/sqlite3_selfsigned.sis
src/script/api/qscriptvalue.cpp
src/sql/drivers/sqlite/qsql_sqlite.cpp
src/sql/kernel/qsqlresult.cpp
src/src.pro
src/tools/rcc/rcc.cpp
src/tools/uic/cpp/cppwriteinitialization.cpp
src/tools/uic3/converter.cpp
src/tools/uic3/form.cpp
src/tools/uic3/main.cpp
src/tools/uic3/ui3reader.cpp
src/tools/uic3/ui3reader.h
src/xml/dom/qdom.cpp
tests/auto/linguist/lupdate/testdata/good/cmdline_deeppath/lupdatecmd
tests/auto/linguist/lupdate/testdata/good/cmdline_deeppath/project.ts.result
tests/auto/linguist/lupdate/testdata/good/cmdline_recurse/lupdatecmd
tests/auto/linguist/lupdate/testdata/good/cmdline_recurse/project.ts.result
tests/auto/linguist/lupdate/testdata/good/codecfortr3/expectedoutput.txt
tests/auto/linguist/lupdate/testdata/good/codecfortr3/main.cpp
tests/auto/linguist/lupdate/testdata/good/codecfortr3/project.pro
tests/auto/linguist/lupdate/testdata/good/codecfortr3/project.ts.before
tests/auto/linguist/lupdate/testdata/good/codecfortr3/project.ts.result
tests/auto/linguist/lupdate/testdata/good/codecfortr4/expectedoutput.txt
tests/auto/linguist/lupdate/testdata/good/codecfortr4/main.cpp
tests/auto/linguist/lupdate/testdata/good/codecfortr4/project.pro
tests/auto/linguist/lupdate/testdata/good/codecfortr4/project.ts.before
tests/auto/linguist/lupdate/testdata/good/codecfortr4/project.ts.result
tests/auto/linguist/lupdate/testdata/good/from_subdir/lupdatecmd
tests/auto/linguist/lupdate/testdata/good/from_subdir/project.ts.result
tests/auto/linguist/lupdate/testdata/good/from_subdir/src/main.cpp
tests/auto/linguist/lupdate/testdata/good/from_subdir/src/main.h
tests/auto/linguist/lupdate/testdata/good/from_subdir/translations/translations.pro
tests/auto/linguist/lupdate/testdata/good/recurse_full/expectedoutput.txt
tests/auto/linguist/lupdate/testdata/good/recurse_full/lupdatecmd
tests/auto/linguist/lupdate/testdata/good/recurse_full/project.ts.result
tests/auto/linguist/lupdate/testdata/good/recurse_full/project_sub.ts.result
tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/expectedoutput.txt
tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/lupdatecmd
tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/project.ts.result
tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/project_sub.ts.before
tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/project_sub.ts.result
tests/auto/linguist/lupdate/testdata/good/recurse_full_ts_join/expectedoutput.txt
tests/auto/linguist/lupdate/testdata/good/recurse_full_ts_join/lupdatecmd
tests/auto/linguist/lupdate/testdata/good/recurse_full_ts_join/project.ts.result
tests/auto/linguist/lupdate/testdata/good/recurse_part/expectedoutput.txt
tests/auto/linguist/lupdate/testdata/good/recurse_part/lupdatecmd
tests/auto/linguist/lupdate/testdata/good/recurse_part/project.ts.before
tests/auto/linguist/lupdate/testdata/good/recurse_part/project.ts.result
tests/auto/linguist/lupdate/testdata/good/recurse_part/project_sub.ts.result
tests/auto/linguist/lupdate/testdata/good/recurse_part_ts/expectedoutput.txt
tests/auto/linguist/lupdate/testdata/good/recurse_part_ts/lupdatecmd
tests/auto/linguist/lupdate/testdata/good/recurse_part_ts/project.ts.result
tests/auto/linguist/lupdate/testdata/good/recurse_part_ts/project_sub.ts.before
tests/auto/linguist/lupdate/testdata/good/recurse_part_ts/project_sub.ts.result
tests/auto/linguist/lupdate/testdata/good/reloutput/lupdatecmd
tests/auto/linguist/lupdate/testdata/subdirs_full/project.pro
tests/auto/linguist/lupdate/testdata/subdirs_full/subdir1/main.cpp
tests/auto/linguist/lupdate/testdata/subdirs_full/subdir1/subdir1.pro
tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subdir2.pro
tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subsub1/main.cpp
tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subsub1/subsub1.pro
tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subsub2/main.cpp
tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subsub2/subsub2.pro
tests/auto/linguist/lupdate/testdata/subdirs_part/project.pro
tests/auto/linguist/lupdate/testdata/subdirs_part/subdir1/main.cpp
tests/auto/linguist/lupdate/testdata/subdirs_part/subdir1/subdir1.pro
tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subdir2.pro
tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subsub1/main.cpp
tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subsub1/subsub1.pro
tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subsub2/main.cpp
tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subsub2/subsub2.pro
tests/auto/linguist/lupdate/tst_lupdate.cpp
tests/auto/maketestselftest/tst_maketestselftest.cpp
tests/auto/qbytearray/tst_qbytearray.cpp
tests/auto/qdatetime/tst_qdatetime.cpp
tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp
tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
tests/auto/qimagereader/baseline/35floppy.png
tests/auto/qimagereader/baseline/connect.png
tests/auto/qimagereader/baseline/kde_favicon.png
tests/auto/qimagereader/baseline/semitransparent.png
tests/auto/qimagereader/tst_qimagereader.cpp
tests/auto/qpixmap/tst_qpixmap.cpp
tests/auto/qscriptvalue/qscriptvalue.pro
tests/auto/qscriptvalue/testgen/data.txt
tests/auto/qscriptvalue/testgen/gen.py
tests/auto/qscriptvalue/testgen/main.cpp
tests/auto/qscriptvalue/testgen/testgen.pro
tests/auto/qscriptvalue/testgen/testgenerator.cpp
tests/auto/qscriptvalue/testgen/testgenerator.h
tests/auto/qscriptvalue/tst_qscriptvalue.cpp
tests/auto/qscriptvalue/tst_qscriptvalue.h
tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp
tests/auto/qsslcertificate/more-certificates/malformed-just-begin-no-newline.pem
tests/auto/qsslcertificate/more-certificates/malformed-just-begin.pem
tests/auto/qsslcertificate/more-certificates/no-ending-newline.pem
tests/auto/qsslcertificate/tst_qsslcertificate.cpp
tests/auto/qstyle/tst_qstyle.cpp
tests/auto/qtableview/tst_qtableview.cpp
tests/auto/qurl/tst_qurl.cpp
tests/auto/qwidget/tst_qwidget.cpp
tests/auto/selftests/expected_xunit.txt
tests/auto/selftests/tst_selftests.cpp
tests/auto/xmlpatternsxqts/xmlpatternsxqts.pro
tests/benchmarks/benchmarks.pro
tests/benchmarks/qfontmetrics/main.cpp
tests/benchmarks/qfontmetrics/qfontmetrics.pro
tests/benchmarks/qhostinfo/qhostinfo.pro
tests/benchmarks/qpainter/tst_qpainter.cpp
tests/benchmarks/qscriptengine/qscriptengine.pro
tests/benchmarks/qscriptengine/tst_qscriptengine.cpp
tests/benchmarks/qstring/main.cpp
tests/benchmarks/qstring/qstring.pro
tests/benchmarks/qtext/main.cpp
tests/benchmarks/qtext/qtext.pro
tests/benchmarks/uimodels/GraphicsViewBenchmark/tests/itemrecyclinglist/listitemcontainer.cpp
tools/assistant/lib/fulltextsearch/qclucene-config_p.h
tools/assistant/lib/qhelpcollectionhandler.cpp
tools/assistant/lib/qhelpcontentwidget.cpp
tools/assistant/lib/qhelpdbreader.cpp
tools/assistant/lib/qhelpenginecore.cpp
tools/assistant/lib/qhelpgenerator.cpp
tools/assistant/lib/qhelpindexwidget.cpp
tools/assistant/lib/qhelpsearchengine.cpp
tools/assistant/lib/qhelpsearchindexreader_default.cpp
tools/assistant/lib/qhelpsearchindexwriter_default.cpp
tools/assistant/lib/qhelpsearchquerywidget.cpp
tools/assistant/lib/qhelpsearchquerywidget.h
tools/assistant/lib/qhelpsearchresultwidget.cpp
tools/assistant/lib/qhelpsearchresultwidget.h
tools/assistant/tools/assistant/centralwidget.cpp
tools/assistant/tools/assistant/centralwidget.h
tools/assistant/tools/assistant/helpviewer.cpp
tools/assistant/translations/qt_help.pro
tools/assistant/translations/translations.pro
tools/configure/configureapp.cpp
tools/designer/src/components/formeditor/formwindow.cpp
tools/designer/src/components/formeditor/formwindow.h
tools/designer/src/components/formeditor/qdesigner_resource.cpp
tools/designer/src/components/propertyeditor/designerpropertymanager.h
tools/designer/src/designer/qdesigner_actions.cpp
tools/designer/src/designer/qdesigner_server.cpp
tools/designer/src/designer/qdesigner_server.h
tools/designer/src/designer/versiondialog.cpp
tools/designer/src/lib/shared/actioneditor.cpp
tools/designer/src/lib/shared/actionrepository.cpp
tools/designer/src/lib/shared/connectionedit_p.h
tools/designer/src/lib/shared/filterwidget_p.h
tools/designer/src/lib/shared/iconloader.cpp
tools/designer/src/lib/shared/iconselector_p.h
tools/designer/src/lib/shared/plugindialog.cpp
tools/designer/src/lib/shared/qdesigner_introspection.cpp
tools/designer/src/lib/shared/qdesigner_objectinspector_p.h
tools/designer/src/lib/shared/qdesigner_promotiondialog_p.h
tools/designer/src/lib/shared/qdesigner_propertyeditor_p.h
tools/designer/src/lib/shared/qdesigner_taskmenu.cpp
tools/designer/src/lib/shared/qdesigner_toolbar.cpp
tools/designer/src/lib/shared/qdesigner_utils_p.h
tools/designer/src/lib/shared/qdesigner_widgetbox_p.h
tools/designer/src/lib/shared/qtresourceview_p.h
tools/designer/src/lib/shared/richtexteditor_p.h
tools/designer/src/lib/shared/shared_settings.cpp
tools/designer/src/lib/shared/textpropertyeditor_p.h
tools/designer/src/lib/shared/widgetdatabase_p.h
tools/designer/src/lib/shared/widgetfactory.cpp
tools/designer/src/lib/uilib/abstractformbuilder.cpp
tools/designer/src/lib/uilib/formbuilder.cpp
tools/designer/src/plugins/activeqt/qaxwidgetextrainfo.h
tools/designer/src/plugins/activeqt/qdesigneraxwidget.h
tools/designer/src/plugins/widgets/q3iconview/q3iconview_extrainfo.h
tools/designer/src/plugins/widgets/q3iconview/q3iconview_plugin.h
tools/designer/src/plugins/widgets/q3listbox/q3listbox_extrainfo.h
tools/designer/src/plugins/widgets/q3listbox/q3listbox_plugin.h
tools/designer/src/plugins/widgets/q3listview/q3listview_extrainfo.h
tools/designer/src/plugins/widgets/q3listview/q3listview_plugin.h
tools/designer/src/plugins/widgets/q3mainwindow/q3mainwindow_plugin.h
tools/designer/src/plugins/widgets/q3table/q3table_extrainfo.h
tools/designer/src/plugins/widgets/q3table/q3table_plugin.h
tools/designer/src/plugins/widgets/q3textedit/q3textedit_extrainfo.h
tools/designer/src/plugins/widgets/q3textedit/q3textedit_plugin.h
tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_extrainfo.h
tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_plugin.h
tools/designer/src/plugins/widgets/q3widgets/q3widget_plugins.h
tools/designer/src/plugins/widgets/q3widgetstack/q3widgetstack_plugin.h
tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.h
tools/designer/src/plugins/widgets/q3wizard/q3wizard_plugin.h
tools/designer/src/src.pro
tools/designer/translations/translations.pro
tools/linguist/linguist/linguist.pro
tools/linguist/lrelease/main.cpp
tools/linguist/lupdate/main.cpp
tools/linguist/shared/proparser.pri
tools/linguist/shared/qm.cpp
tools/linguist/shared/translator.h
tools/qttracereplay/main.cpp
tools/runonphone/main.cpp
tools/runonphone/runonphone.pro
tools/runonphone/trk/launcher.cpp
tools/runonphone/trk/launcher.h
tools/runonphone/trk/trkdevice.cpp
tools/runonphone/trk/trkutils.h
tools/shared/findwidget/abstractfindwidget.h
tools/shared/findwidget/itemviewfindwidget.h
tools/shared/findwidget/texteditfindwidget.h
tools/shared/fontpanel/fontpanel.cpp
tools/shared/qtgradienteditor/qtgradientutils.cpp
tools/shared/qttoolbardialog/qttoolbardialog.h
translations/assistant_cs.ts
translations/designer_cs.ts
translations/linguist_cs.ts
translations/qt_cs.ts
translations/qt_help_cs.ts
translations/translations.pri
util/s60pixelmetrics/pixel_metrics.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/patch_capabilities.bat	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+@perl.exe -S %~dp0patch_capabilities.pl %*
--- a/bin/patch_capabilities.pl	Fri Feb 19 23:40:16 2010 +0200
+++ b/bin/patch_capabilities.pl	Fri Mar 12 15:46:37 2010 +0200
@@ -108,15 +108,57 @@
         open (NEW_PKG, ">>".$tempPkgFileName);
         open (PKG, "<".$pkgFileName);
 
+        my $manufacturerElseBlock = 0;
+
         # Parse each line.
         while (<PKG>)
         {
+            # Patch pkg UID
             my $line = $_;
             my $newLine = $line;
-            if ( $line =~ m/^\#.*\(0x[0-9|a-f|A-F]*\).*$/)
+            if ($line =~ m/^\#.*\(0x[0-9|a-f|A-F]*\).*$/)
             {
                 $newLine =~ s/\(0x./\(0xE/;
             }
+
+            # Patch embedded sis name and UID
+            if ($line =~ m/^@.*\.sis.*\(0x[0-9|a-f|A-F]*\).*$/)
+            {
+                $newLine =~ s/\(0x./\(0xE/;
+                if ($line !~ m/^.*_selfsigned.sis.*$/)
+                {
+                    $newLine =~ s/\.sis/_selfsigned\.sis/i;
+                }
+            }
+
+            # Remove all dependencies to other packages to reduce unnecessary error messages
+            # from depended packages that are also patched and therefore have different UID.
+            if ($line =~ m/^\(0x[0-9|a-f|A-F]*\).*\{.*\}$/)
+            {
+                $newLine = "\n"
+            }
+
+            # Remove manufacturer ifdef
+            if ($line =~ m/^.*\(MANUFACTURER\)\=\(.*\).*$/)
+            {
+                $newLine = "\n";
+            }
+
+            if ($line =~ m/^ELSEIF.*MANUFACTURER$/)
+            {
+                $manufacturerElseBlock = 1;
+            }
+
+            if ($manufacturerElseBlock eq 1)
+            {
+                $newLine = "\n";
+            }
+
+            if ($line =~ m/^ENDIF.*MANUFACTURER$/)
+            {
+                $manufacturerElseBlock = 0;
+            }
+
             print NEW_PKG $newLine;
 
             chomp ($line);
--- a/configure	Fri Feb 19 23:40:16 2010 +0200
+++ b/configure	Fri Mar 12 15:46:37 2010 +0200
@@ -115,7 +115,7 @@
 	    inc_file=`echo "$line" | sed -n -e "/^include.*(.*)/s/include.*(\(.*\)).*$/\1/p"`
 	    current_dir=`dirname "$1"`
 	    conf_file="$current_dir/$inc_file"
-	    if [ ! -e  "$conf_file" ]; then
+	    if [ ! -f  "$conf_file" ]; then
                 echo "WARNING: Unable to find file $conf_file" >&2
                 continue
             fi
@@ -2305,7 +2305,7 @@
 fi
 
 # symlink fonts to be able to run application from build directory
-if [ "$PLATFORM_QWS" = "yes" ] && [ ! -e "${outpath}/lib/fonts" ]; then
+if [ "$PLATFORM_QWS" = "yes" ] && [ ! -d "${outpath}/lib/fonts" ]; then
     if [ "$PLATFORM" = "$XPLATFORM" ]; then
         mkdir -p "${outpath}/lib"
         ln -s "${relpath}/lib/fonts" "${outpath}/lib/fonts"
@@ -7606,6 +7606,8 @@
     OPENSSL_LINKAGE="(linked)"
 fi
 echo "OpenSSL support ..... $CFG_OPENSSL $OPENSSL_LINKAGE"
+echo "Alsa support ........ $CFG_ALSA"
+echo
 
 [ "$CFG_PTMALLOC" != "no" ] && echo "Use ptmalloc ........ $CFG_PTMALLOC"
 
@@ -7630,8 +7632,6 @@
     echo "NOTE: Mac OS X frameworks implicitly build debug and release Qt libraries."
     echo
 fi
-echo "alsa support ........ $CFG_ALSA"
-echo
 
 sepath=`echo "$relpath" | sed -e 's/\\./\\\\./g'`
 PROCS=1
Binary file configure.exe has changed
Binary file content/apps/qt.sisx has changed
--- a/demos/embedded/anomaly/src/AddressBar.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/anomaly/src/AddressBar.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -64,9 +64,9 @@
 AddressBar::AddressBar(QWidget *parent)
     : QWidget(parent)
 {
-    m_lineEdit = new LineEdit(parent);
+    m_lineEdit = new LineEdit(this);
     connect(m_lineEdit, SIGNAL(returnPressed()), SLOT(processAddress()));
-    m_toolButton = new QToolButton(parent);
+    m_toolButton = new QToolButton(this);
     m_toolButton->setText("Go");
     connect(m_toolButton, SIGNAL(clicked()), SLOT(processAddress()));
 }
--- a/demos/embedded/anomaly/src/BrowserView.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/anomaly/src/BrowserView.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -71,7 +71,7 @@
     m_zoomLevels << 100;
     m_zoomLevels << 110 << 120 << 133 << 150 << 170 << 200 << 240 << 300;
 
-    QTimer::singleShot(0, this, SLOT(initialize()));
+    initialize();
 }
 
 void BrowserView::initialize()
@@ -82,6 +82,7 @@
     connect(m_controlStrip, SIGNAL(menuClicked()), SIGNAL(menuButtonClicked()));
     connect(m_controlStrip, SIGNAL(backClicked()), m_webView, SLOT(back()));
     connect(m_controlStrip, SIGNAL(forwardClicked()), m_webView, SLOT(forward()));
+    connect(m_controlStrip, SIGNAL(closeClicked()), qApp, SLOT(quit()));
 
     QPalette pal = m_webView->palette();
     pal.setBrush(QPalette::Base, Qt::white);
--- a/demos/embedded/anomaly/src/BrowserWindow.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/anomaly/src/BrowserWindow.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -93,12 +93,12 @@
 {
     // we use a ratio to handle resize corectly
     const int pos = -qRound(slideRatio * width());
-    m_slidingSurface->scroll(pos - m_homeView->x(), 0);
+    m_slidingSurface->scroll(pos - m_browserView->x(), 0);
 
-    if (qFuzzyCompare(slideRatio, static_cast<qreal>(1.0f))) {
+    if (qFuzzyCompare(slideRatio, static_cast<qreal>(0.0f))) {
         m_browserView->show();
         m_homeView->hide();
-    } else if (qFuzzyCompare(slideRatio, static_cast<qreal>(0.0f))) {
+    } else if (qFuzzyCompare(slideRatio, static_cast<qreal>(1.0f))) {
         m_homeView->show();
         m_browserView->hide();
     } else {
@@ -110,13 +110,13 @@
 qreal BrowserWindow::slideValue() const
 {
     Q_ASSERT(m_slidingSurface->x() < width());
-    return static_cast<qreal>(qAbs(m_homeView->x())) / width();
+    return static_cast<qreal>(qAbs(m_browserView->x())) / width();
 }
 
 void BrowserWindow::showHomeView()
 {
     m_animation->setStartValue(slideValue());
-    m_animation->setEndValue(0.0f);
+    m_animation->setEndValue(1.0f);
     m_animation->start();
     m_homeView->setFocus();
 }
@@ -124,7 +124,7 @@
 void BrowserWindow::showBrowserView()
 {
     m_animation->setStartValue(slideValue());
-    m_animation->setEndValue(1.0f);
+    m_animation->setEndValue(0.0f);
     m_animation->start();
 
     m_browserView->setFocus();
@@ -140,7 +140,7 @@
                                                              ? QAbstractAnimation::Forward
                                                                  : QAbstractAnimation::Backward;
             m_animation->setDirection(direction);
-        } else if (qFuzzyCompare(slideValue(), static_cast<qreal>(1.0f)))
+        } else if (qFuzzyCompare(slideValue(), static_cast<qreal>(0.0f)))
             showHomeView();
         else
             showBrowserView();
@@ -151,16 +151,16 @@
 void BrowserWindow::resizeEvent(QResizeEvent *event)
 {
     const QSize oldSize = event->oldSize();
-    const qreal oldSlidingRatio = static_cast<qreal>(qAbs(m_homeView->x())) / oldSize.width();
+    const qreal oldSlidingRatio = static_cast<qreal>(qAbs(m_browserView->x())) / oldSize.width();
 
     const QSize newSize = event->size();
     m_slidingSurface->resize(newSize.width() * 2, newSize.height());
 
     m_homeView->resize(newSize);
-    m_homeView->move(0, 0);
+    m_homeView->move(newSize.width(), 0);
 
     m_browserView->resize(newSize);
-    m_browserView->move(newSize.width(), 0);
+    m_browserView->move(0, 0);
 
     setSlideValue(oldSlidingRatio);
 }
--- a/demos/embedded/anomaly/src/ControlStrip.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/anomaly/src/ControlStrip.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -50,6 +50,7 @@
     menuPixmap.load(":/images/edit-find.png");
     backPixmap.load(":/images/go-previous.png");
     forwardPixmap.load(":/images/go-next.png");
+    closePixmap.load(":/images/button-close.png");
 }
 
 QSize ControlStrip::sizeHint() const
@@ -74,16 +75,23 @@
     }
 
     if (x > width() - h) {
-        emit forwardClicked();
-        event->accept();
-        return;
-    }
+    		emit closeClicked();    		
+    		event->accept();
+    		return;
+            
+        }
 
     if ((x < width() - 2 * h) && (x > width() - 3 * h)) {
-        emit backClicked();
-        event->accept();
-        return;
-    }
+    		emit forwardClicked();
+    		event->accept();
+    		return;
+        }
+
+    if ((x < width() - 3 * h) && (x > width() - 5 * h)) {
+    		emit backClicked();
+    		event->accept();
+    		return;
+        }
 }
 
 void ControlStrip::paintEvent(QPaintEvent *event)
@@ -91,11 +99,14 @@
     int h = height();
     int s = (h - menuPixmap.height()) / 2;
 
-    QPainter p(this);
-    p.fillRect(event->rect(), QColor(32, 32, 32, 192));
-    p.setCompositionMode(QPainter::CompositionMode_SourceOver);
-    p.drawPixmap(s, s, menuPixmap);
-    p.drawPixmap(width() - 3 * h + s, s, backPixmap);
-    p.drawPixmap(width() - h + s, s, forwardPixmap);
-    p.end();
+
+	QPainter p(this);
+	p.fillRect(event->rect(), QColor(32, 32, 32, 192));
+	p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+	p.drawPixmap(s, s, menuPixmap);
+	p.drawPixmap(width() - h + s, s, closePixmap);	    
+	p.drawPixmap(width() - 3 * h + s, s, forwardPixmap);
+	p.drawPixmap(width() - 5 * h + s, s, backPixmap);
+	    
+	p.end();
 }
--- a/demos/embedded/anomaly/src/ControlStrip.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/anomaly/src/ControlStrip.h	Fri Mar 12 15:46:37 2010 +0200
@@ -58,6 +58,7 @@
     void menuClicked();
     void backClicked();
     void forwardClicked();
+    void closeClicked ();
 
 protected:
     void paintEvent(QPaintEvent *event);
@@ -67,6 +68,7 @@
     QPixmap menuPixmap;
     QPixmap backPixmap;
     QPixmap forwardPixmap;
+    QPixmap closePixmap;
 };
 
 #endif // CONTROLSTRIP_H
--- a/demos/embedded/anomaly/src/HomeView.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/anomaly/src/HomeView.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -51,12 +51,16 @@
     : QWidget(parent)
     , m_addressBar(0)
 {
-    m_addressBar = new AddressBar(parent);
+    m_addressBar = new AddressBar(this);
     connect(m_addressBar, SIGNAL(addressEntered(QString)), SLOT(gotoAddress(QString)));
 
-    m_bookmarks = new BookmarksView(parent);
+    m_bookmarks = new BookmarksView(this);
     connect(m_bookmarks, SIGNAL(urlSelected(QUrl)), SIGNAL(urlActivated(QUrl)));
 
+    QPalette pal =  m_bookmarks->palette();
+    pal.setBrush(QPalette::Base, Qt::white);
+    m_bookmarks->setPalette(pal);
+     
     QVBoxLayout *layout = new QVBoxLayout(this);
     layout->setMargin(4);
     layout->setSpacing(4);
--- a/demos/embedded/anomaly/src/anomaly.qrc	Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/anomaly/src/anomaly.qrc	Fri Mar 12 15:46:37 2010 +0200
@@ -5,5 +5,6 @@
         <file>images/edit-find.png</file>
         <file>images/list-add.png</file>
         <file>images/list-remove.png</file>
+        <file>images/button-close.png</file>        
     </qresource>
 </RCC>
Binary file demos/embedded/anomaly/src/images/button-close.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/demos/embedded/fluidlauncher/backup_registration.xml	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration>
+    <passive_backup>
+        <include_directory name = "\" />
+    </passive_backup>
+    <system_backup/>
+    <restore requires_reboot = "no"/>
+</backup_registration>
--- a/demos/embedded/fluidlauncher/fluidlauncher.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/demos/embedded/fluidlauncher/fluidlauncher.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -207,8 +207,11 @@
     saxbookmarks.sources += $$PWD/../../../examples/xml/saxbookmarks/jennifer.xbel
     saxbookmarks.path = /data/qt/saxbookmarks
 
+    fluidbackup.sources = backup_registration.xml
+    fluidbackup.path = /private/$$replace(TARGET.UID3, 0x,)
+
     DEPLOYMENT += config files executables viewerimages saxbookmarks reg_resource resource \
-        mifs desktopservices_music desktopservices_images
+        mifs desktopservices_music desktopservices_images fluidbackup
 
     TARGET.EPOCHEAPSIZE = 100000 20000000
 }
--- a/dist/changes-4.6.1	Fri Feb 19 23:40:16 2010 +0200
+++ b/dist/changes-4.6.1	Fri Mar 12 15:46:37 2010 +0200
@@ -247,6 +247,8 @@
     * [QTBUG-6867] Fixed regression in the parsing of paths with relative
       offsets.
     * [QTBUG-6899] Fixed crash when parsing invalid coordinate list.
+ - QtXmlPatterns
+    * [QTBUG-6771] Fixed static builds.
 
 Qt Plugins
 ----------
--- a/dist/changes-4.6.2	Fri Feb 19 23:40:16 2010 +0200
+++ b/dist/changes-4.6.2	Fri Mar 12 15:46:37 2010 +0200
@@ -40,8 +40,8 @@
 QtCore
 ------
 
- - foo
-    * bar
+ - QXmlStreamWriter
+    * [QTBUG-6893] Fixed adding extra Byte Order Marks when writing to a xml file.
 
 QtGui
 -----
@@ -49,6 +49,9 @@
  - foo
     * bar
 
+ * [QTBUG-7029] Fixed a crash when re-creating QApplication object due to a
+   dangling gesture manager pointer.
+
 QtDBus
 ------
 
@@ -85,6 +88,12 @@
  - foo
     * bar
 
+QtMultimedia
+------------
+
+ - QAudioInput
+    * [QTBUG-7044]: QAudioInput stopped working correctly after suspend()/resume() on linux.
+
 Qt Plugins
 ----------
 
@@ -110,8 +119,11 @@
 
 Qt for Linux/X11
 ----------------
+  * Fix a bug where QPixmap::serialNumber was not set on a transformed pixmap
+    in Qt/X11.
 
- -
+  * Fixed a crash when an input method tries to create a widget after the
+    application is destroyed.
 
 Qt for Windows
 --------------
@@ -121,7 +133,10 @@
 Qt for Mac OS X
 ---------------
 
- -
+ - [QTBUG-7312]: Menubar and dock disappear after hiding a fullscreen widget on Cocoa.
+ - [QTBUG-7522]: Drawing fake buttons using QMacStyle+QStyleOptionViewItemV4 lead to crash.
+ - [QTBUG-7625]: Calling showFullScreen() then showNormal() on a widget results in top menu hiding.
+
 
 Qt for Embedded Linux
 ---------------------
@@ -130,7 +145,13 @@
 
 DirectFB
 --------
-
+  * Fix a bug where QPixmap::serialNumber was not set on a transformed pixmap
+    in DirectFB.
+  * Reimplement QPixmapData::scroll for QDirectFBPixmapData which optimizes
+    QPixmap::scroll
+  * Fix a rendering issue for semi-transparent top level windows in DirectFB.
+  * Make it possible to fall back to the raster engine for stretch blits in
+    DirectFB using QT_NO_DIRECTFB_STRETCHBLIT
  -
 
 Qt for Windows CE
@@ -143,7 +164,12 @@
 ****************************************************************************
 
  - Designer
-   * foo
+   * [QTBUG-6965] Enabled editing seconds of QDateTime-type properties
+   * [QTBUG-6757] Fixed bug where selection handles would be affected by
+     a style sheet set on the main form.
+
+ - uic3
+   * [QTBUG-7404] Added option to preserve layout names set by Qt 3 Designer.
 
  - qdoc3
    * bar
--- a/examples/assistant/simpletextviewer/findfiledialog.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/assistant/simpletextviewer/findfiledialog.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -102,7 +102,7 @@
     if (file.open(QIODevice::ReadOnly)) {
         QString data(file.readAll());
 
-        if (fileName.endsWith(".html"))
+        if (fileName.endsWith(QLatin1String(".html")))
             currentEditor->setHtml(data);
         else
             currentEditor->setPlainText(data);
@@ -119,7 +119,7 @@
 
 void FindFileDialog::findFiles()
 {
-    QRegExp filePattern(fileNameComboBox->currentText() + "*");
+    QRegExp filePattern(fileNameComboBox->currentText() + '*');
     filePattern.setPatternSyntax(QRegExp::Wildcard);
 
     QDir directory(directoryComboBox->currentText());
@@ -127,7 +127,7 @@
     QStringList allFiles = directory.entryList(QDir::Files | QDir::NoSymLinks);
     QStringList matchingFiles;
 
-    foreach (QString file, allFiles) {
+    foreach (const QString &file, allFiles) {
         if (filePattern.exactMatch(file))
             matchingFiles << file;
     }
--- a/examples/designer/taskmenuextension/tictactoedialog.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/designer/taskmenuextension/tictactoedialog.h	Fri Mar 12 15:46:37 2010 +0200
@@ -55,7 +55,7 @@
     Q_OBJECT
 
 public:
-    TicTacToeDialog(TicTacToe *plugin = 0, QWidget *parent = 0);
+    explicit TicTacToeDialog(TicTacToe *plugin = 0, QWidget *parent = 0);
 
     QSize sizeHint() const;
 
--- a/examples/network/googlesuggest/googlesuggest.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/googlesuggest/googlesuggest.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -231,4 +231,5 @@
 
     networkReply->deleteLater();
 }
-//! [9]
\ No newline at end of file
+//! [9]
+
--- a/examples/network/googlesuggest/searchbox.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/googlesuggest/searchbox.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -69,4 +69,5 @@
     QString url = QString(GSEARCH_URL).arg(text());
     QDesktopServices::openUrl(QUrl(url));
 }
-//! [2]
\ No newline at end of file
+//! [2]
+
--- a/examples/network/network-chat/chatdialog.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/network-chat/chatdialog.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -79,7 +79,7 @@
     QTextCursor cursor(textEdit->textCursor());
     cursor.movePosition(QTextCursor::End);
     QTextTable *table = cursor.insertTable(1, 2, tableFormat);
-    table->cellAt(0, 0).firstCursorPosition().insertText("<" + from + "> ");
+    table->cellAt(0, 0).firstCursorPosition().insertText('<' + from + "> ");
     table->cellAt(0, 1).firstCursorPosition().insertText(message);
     QScrollBar *bar = textEdit->verticalScrollBar();
     bar->setValue(bar->maximum());
--- a/examples/network/network-chat/client.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/network-chat/client.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -69,8 +69,8 @@
 
 QString Client::nickName() const
 {
-    return QString(peerManager->userName()) + "@" + QHostInfo::localHostName()
-           + ":" + QString::number(server.serverPort());
+    return QString(peerManager->userName()) + '@' + QHostInfo::localHostName()
+           + ':' + QString::number(server.serverPort());
 }
 
 bool Client::hasConnection(const QHostAddress &senderIp, int senderPort) const
--- a/examples/network/network-chat/connection.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/network-chat/connection.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -83,7 +83,7 @@
         return false;
 
     QByteArray msg = message.toUtf8();
-    QByteArray data = "MESSAGE " + QByteArray::number(msg.size()) + " " + msg;
+    QByteArray data = "MESSAGE " + QByteArray::number(msg.size()) + ' ' + msg;
     return write(data) == data.size();
 }
 
@@ -118,7 +118,7 @@
             return;
         }
 
-        username = QString(buffer) + "@" + peerAddress().toString() + ":"
+        username = QString(buffer) + '@' + peerAddress().toString() + ':'
                    + QString::number(peerPort());
         currentDataType = Undefined;
         numBytesForCurrentDataType = 0;
@@ -162,7 +162,7 @@
 void Connection::sendGreetingMessage()
 {
     QByteArray greeting = greetingMessage.toUtf8();
-    QByteArray data = "GREETING " + QByteArray::number(greeting.size()) + " " + greeting;
+    QByteArray data = "GREETING " + QByteArray::number(greeting.size()) + ' ' + greeting;
     if (write(data) == data.size())
         isGreetingMessageSent = true;
 }
--- a/examples/network/network-chat/peermanager.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/network-chat/peermanager.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -61,7 +61,7 @@
     foreach (QString string, envVariables) {
         int index = environment.indexOf(QRegExp(string));
         if (index != -1) {
-            QStringList stringList = environment.at(index).split("=");
+            QStringList stringList = environment.at(index).split('=');
             if (stringList.size() == 2) {
                 username = stringList.at(1).toUtf8();
                 break;
--- a/examples/network/qftp/ftpwindow.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/qftp/ftpwindow.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -324,7 +324,8 @@
     if (isDirectory.value(name)) {
         fileList->clear();
         isDirectory.clear();
-        currentPath += "/" + name;
+        currentPath += '/';
+        currentPath += name;
         ftp->cd(name);
         ftp->list();
         cdToParentButton->setEnabled(true);
--- a/examples/network/qftp/sym_iap_util.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/qftp/sym_iap_util.h	Fri Mar 12 15:46:37 2010 +0200
@@ -298,7 +298,7 @@
 #ifdef QT_NO_UNICODE
     return QString::fromLocal8Bit(aDescriptor.Ptr(), aDescriptor.Length());
 #else
-    return QString::fromUtf16(aDescriptor.Ptr(), aDescriptor.Length());
+    return QString((const QChar *)aDescriptor.Ptr(), aDescriptor.Length());
 #endif
 }
 
--- a/examples/network/securesocketclient/sslclient.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/securesocketclient/sslclient.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -177,7 +177,7 @@
 void SslClient::sendData()
 {
     QString input = form->sessionInput->text();
-    appendString(input + "\n");
+    appendString(input + '\n');
     socket->write(input.toUtf8() + "\r\n");
     form->sessionInput->clear();
 }
--- a/examples/network/torrent/trackerclient.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/network/torrent/trackerclient.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -105,7 +105,7 @@
     QString passkey = "?";
     if (fullUrl.contains("?passkey")) {
         passkey = metaInfo.announceUrl().mid(fullUrl.indexOf("?passkey"), -1);
-        passkey += "&";
+        passkey += '&';
     }
 
     // Percent encode the hash
--- a/examples/tools/customtype/message.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/tools/customtype/message.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -64,7 +64,7 @@
 }
 
 //! [custom type streaming operator]
-QDebug &operator<<(QDebug &dbg, const Message &message)
+QDebug operator<<(QDebug dbg, const Message &message)
 {
     QStringList pieces = message.body().split("\r\n", QString::SkipEmptyParts);
     if (pieces.isEmpty())
--- a/examples/tools/customtype/message.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/tools/customtype/message.h	Fri Mar 12 15:46:37 2010 +0200
@@ -70,7 +70,7 @@
 //! [custom type meta-type declaration]
 
 //! [custom type streaming operator]
-QDebug &operator<<(QDebug &dbg, const Message &message);
+QDebug operator<<(QDebug dbg, const Message &message);
 //! [custom type streaming operator]
 
 #endif
--- a/examples/uitools/textfinder/textfinder.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/uitools/textfinder/textfinder.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -116,7 +116,7 @@
     if (isFirstTime == false)
         document->undo();
 
-    if (searchString == "") {
+    if (searchString.isEmpty()) {
         QMessageBox::information(this, tr("Empty Search Field"),
                 "The search field is empty. Please enter a word and click Find.");
     } else {
--- a/examples/webkit/framecapture/framecapture.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/webkit/framecapture/framecapture.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -1,4 +1,4 @@
-QT      += webkit
+QT      += webkit network
 
 HEADERS = framecapture.h
 SOURCES = main.cpp \
--- a/examples/webkit/simpleselector/simpleselector.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/examples/webkit/simpleselector/simpleselector.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -1,4 +1,4 @@
-QT       += webkit
+QT       += webkit network
 FORMS     = window.ui
 HEADERS   = window.h
 SOURCES   = main.cpp \
--- a/layers.sysdef.xml	Fri Feb 19 23:40:16 2010 +0200
+++ b/layers.sysdef.xml	Fri Mar 12 15:46:37 2010 +0200
@@ -7,12 +7,12 @@
     <systemModel>
         <layer name="tools_layer">
             <module name="qtconf">
-                <unit unitID="qtdo.qt.qtconf" mrp="" bldFile="&layer_real_source_path;/group" name="qtconf" />
+                <unit unitID="qtdo.qt.qtconf" mrp="" bldFile="&layer_real_source_path;/src/s60installs/deviceconfiguration" name="qtconf" />
             </module>
         </layer>
         <layer name="mw_layer">
             <module name="qt">
-                <unit unitID="qtdo.qt" mrp="" bldFile="&layer_real_source_path;" name="qt" proFile="projects.pro" qmakeArgs="&quot;QMAKE_MOC=/epoc32/tools/qt/moc.exe&quot; &quot;QMAKE_RCC=/epoc32/tools/qt/rcc.exe&quot; &quot;QMAKE_UIC=/epoc32/tools/qt/uic.exe&quot; -r"/>
+                <unit unitID="qtdo.qt" mrp="" bldFile="&layer_real_source_path;" name="qt" proFile="projects.pro" qmakeArgs="&quot;CONFIG+=headerexport symbian_no_export_sqlite&quot; &quot;QMAKE_MOC=/epoc32/tools/qt/moc.exe&quot; &quot;QMAKE_RCC=/epoc32/tools/qt/rcc.exe&quot; &quot;QMAKE_UIC=/epoc32/tools/qt/uic.exe&quot; -r"/>
             </module>
         </layer>
         <layer name="app_layer">
--- a/mkspecs/common/symbian/symbian.conf	Fri Feb 19 23:40:16 2010 +0200
+++ b/mkspecs/common/symbian/symbian.conf	Fri Mar 12 15:46:37 2010 +0200
@@ -30,6 +30,7 @@
 QMAKE_CXXFLAGS		= $$QMAKE_CFLAGS
 QMAKE_CXXFLAGS.CW	= 
 QMAKE_CXXFLAGS.ARMCC	= --visibility_inlines_hidden
+QMAKE_CXXFLAGS.GCCE	= -fvisibility-inlines-hidden
 QMAKE_CXXFLAGS_DEPS	= $$QMAKE_CFLAGS_DEPS
 QMAKE_CXXFLAGS_WARN_ON	= $$QMAKE_CFLAGS_WARN_ON
 QMAKE_CXXFLAGS_WARN_OFF	= $$QMAKE_CFLAGS_WARN_OFF
@@ -64,12 +65,12 @@
 QMAKE_LINK_OBJECT_SCRIPT=
 
 QMAKE_LIBS              = -llibc -llibm -leuser -llibdl -lcone -leikcore -lmediaclientaudio -leikcoctl -leiksrv -lapparc -lavkon -lefsrv -lcharconv -lws32 -lhal -lgdi -lapgrfx
-QMAKE_LIBS_CORE         = $$QMAKE_LIBS -llibpthread -lefsrv -lcharconv
-QMAKE_LIBS_GUI          = $$QMAKE_LIBS_CORE -lfbscli -lbitgdi -lhal -lgdi -lws32 -lapgrfx -lcone -leikcore -lmediaclientaudio -leikcoctl -leiksrv -lapparc
+QMAKE_LIBS_CORE         = $$QMAKE_LIBS -llibpthread -lefsrv
+QMAKE_LIBS_GUI          = $$QMAKE_LIBS_CORE -lfbscli -lbitgdi -lhal -lgdi -lws32 -lapgrfx -lcone -leikcore -lmediaclientaudio -leikcoctl -leiksrv -lapparc -lcentralrepository
 QMAKE_LIBS_NETWORK      = 
 QMAKE_LIBS_EGL          = -llibEGL
 QMAKE_LIBS_OPENGL       = 
-QMAKE_LIBS_OPENVG       = -llibOpenVG -lgraphicsresource
+QMAKE_LIBS_OPENVG       = -llibOpenVG -lgraphicsresource -lfbscli -lbitgdi -lgdi
 QMAKE_LIBS_COMPAT       = 
 QMAKE_LIBS_QT_ENTRY     = -llibcrt0.lib
 QMAKE_LIBS_S60          = -lavkon
@@ -92,9 +93,9 @@
     QMAKE_CHK_DIR_EXISTS = if not exist
 }
 
-QMAKE_MOC		= /epoc32/tools/qt/moc.exe
-QMAKE_UIC		= /epoc32/tools/qt/uic.exe
-QMAKE_IDC		= /epoc32/tools/qt/idc.exe
+QMAKE_MOC		= /epoc32/tools/qt/moc$$(DOTEXE)
+QMAKE_UIC		= /epoc32/tools/qt/uic$$(DOTEXE)
+QMAKE_IDC		= /epoc32/tools/qt/idc$$(DOTEXE)
 
 QMAKE_IDL		= midl
 QMAKE_LIB		= /epoc32/gcc_mingw/bin/ar -ru
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mkspecs/features/symbian/def_files.prf	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,34 @@
+# With DEF files enabled, removed exported symbols are treated as errors
+# and there is binary compatibility between successive builds.
+
+CONFIG -= def_files_disabled
+
+# Firstly, if the MMP_RULES already contain a defBlock variable, don't generate another one
+# (this bit is slightly magic, because it depends upon everyone creating their DEFFILE statements
+# in a defBlock variable; but otherwise we have to expand MMP_RULES then scan for the DEFFILE keyword)
+!contains(MMP_RULES, defBlock) {
+    # Apps are executables on Symbian, so don't have exports, and therefore don't have DEF files
+    # Plugins use standard DEF files, which qmake generates, so shouldn't be using these DEFFILE
+    # statements - they use the qmake generated statements instead
+    # Static libraries obviously don't have DEF files, as they don't take part in dynamic linkage
+    !contains(TEMPLATE, app):!contains(CONFIG, plugin):!contains(CONFIG, staticlib): {
+        !isEmpty(defFilePath) {
+            defBlock = \
+            "$${LITERAL_HASH}ifdef WINSCW" \
+            "DEFFILE $$defFilePath/bwins/$${TARGET}.def" \
+            "$${LITERAL_HASH}elif defined EABI" \
+            "DEFFILE $$defFilePath/eabi/$${TARGET}.def" \
+            "$${LITERAL_HASH}endif"
+        } else {
+            # If defFilePath is not defined, then put the folders containing the DEF files at the
+            # same level as the .pro (and generated MMP) file(s)
+            defBlock = \
+            "$${LITERAL_HASH}ifdef WINSCW" \
+            "DEFFILE ./bwins/$${TARGET}.def" \
+            "$${LITERAL_HASH}elif defined EABI" \
+            "DEFFILE ./eabi/$${TARGET}.def" \
+            "$${LITERAL_HASH}endif"
+        }
+        MMP_RULES += defBlock
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mkspecs/features/symbian/def_files_disabled.prf	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+# With DEF files disabled, binary compatibility is broken every time you build
+
+CONFIG -= def_files
+
+# See def_files.prf for reasoning on the slight nastiness of this
+!contains(MMP_RULES, defBlock) {
+    # See def_files.prf for reasoning for excluding target types and configs below
+    !contains(TEMPLATE, app):!contains(CONFIG, plugin):!contains(CONFIG, staticlib): {
+        # with EXPORTUNFROZEN enabled, new exports are included in the dll and dso/lib without
+        # needing to run abld/sbs freeze
+        MMP_RULES += EXPORTUNFROZEN
+    }
+}
--- a/mkspecs/features/symbian/qt.prf	Fri Feb 19 23:40:16 2010 +0200
+++ b/mkspecs/features/symbian/qt.prf	Fri Mar 12 15:46:37 2010 +0200
@@ -41,12 +41,14 @@
 isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x020000 0x800000
 
 INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
-for(QTLIB, $$list($$lower($$unique(QT)))) {
-    unset(qlib)
-    isEqual(QTLIB, phonon):qlib = phonon
-    else:qlib = qt$$QTLIB
-    INCLUDEPATH += $$MW_LAYER_PUBLIC_EXPORT_PATH($$qlib)
-}
+#QTP: qtAddLibrary function adds the same includes. Following strins duplicate 
+#Qt includes in incorrect lower case in the generated mmp files. 
+#for(QTLIB, $$list($$lower($$unique(QT)))) {
+#    unset(qlib)
+#    isEqual(QTLIB, phonon):qlib = phonon
+#    else:qlib = qt$$QTLIB
+#    INCLUDEPATH += $$MW_LAYER_PUBLIC_EXPORT_PATH($$qlib)
+#}
 
 #QTP: add userinclude 
 MMP_RULES+="USERINCLUDE  ."
\ No newline at end of file
--- a/mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm	Fri Feb 19 23:40:16 2010 +0200
+++ b/mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm	Fri Mar 12 15:46:37 2010 +0200
@@ -15,7 +15,12 @@
 ifeq ($(findstring :,$(firstword $(COMMAND))), :)
 	MY_CMD:=$(COMMAND)
 else
+#Additional checking is necessary for the Linux compilation
+    ifeq ($(findstring $(EPOCROOT), $(firstword $(COMMAND))), $(EPOCROOT))
+	MY_CMD:=$(COMMAND)
+    else
 	MY_CMD:=$(EPOCROOT)$(COMMAND)
+    endif
 endif
 
 define qmake_extra_pre_targetdep
--- a/mkspecs/symbian-sbsv2/flm/qt/ts2qm.flm	Fri Feb 19 23:40:16 2010 +0200
+++ b/mkspecs/symbian-sbsv2/flm/qt/ts2qm.flm	Fri Mar 12 15:46:37 2010 +0200
@@ -10,8 +10,8 @@
 # Make sure that EPOCROOT ends in /
 EPOCROOT:=$(patsubst %/,%,$(EPOCROOT))/
 LRELEASE:=$(EPOCROOT)epoc32/tools/qt/lrelease$(DOTEXE)
-TSFILE:=$(EPOCROOT)$(TSFILE)
-QMFILE:=$(EPOCROOT)$(QMFILE)
+#TSFILE:=$(EPOCROOT)$(TSFILE)
+#QMFILE:=$(EPOCROOT)$(QMFILE)
 
 define ts2qm
 $(QMFILE): $(TSFILE)
--- a/qmake/generators/makefile.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/generators/makefile.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1830,11 +1830,12 @@
                             cleans.append(files);
                     }
                 }
-                if(!cleans.isEmpty())
+                if(!cleans.isEmpty()) {
                     if (isForSymbian())
                         t << valGlue(cleans, "\n\t" + del_statement, " 2> NUL\n\t" + del_statement, " 2> NUL");
                     else
                         t << valGlue(cleans, "\n\t" + del_statement, "\n\t" + del_statement, "");
+                }
                 if(!wrote_clean_cmds) {
                     for(QStringList::ConstIterator input = tmp_inputs.begin(); input != tmp_inputs.end(); ++input) {
                         t << "\n\t" << replaceExtraCompilerVariables(tmp_clean_cmds, (*input),
@@ -2541,6 +2542,7 @@
             QString ofile = Option::fixPathToTargetOS(fileFixify(Option::output.fileName()));
             if(!ofile.isEmpty())
                 t << "\t-$(DEL_FILE) " << ofile << endl;
+            t << varGlue("QMAKE_DISTCLEAN","\t-$(DEL_FILE) "," ","\n");
         } else if(project->isActiveConfig("no_empty_targets")) {
             t << "\t" << "@cd ." << endl;
         }
--- a/qmake/generators/makefiledeps.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/generators/makefiledeps.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -397,7 +397,7 @@
         buffer = getBuffer(fst.st_size);
         for(int have_read = 0;
             (have_read = QT_READ(fd, buffer + buffer_len, fst.st_size - buffer_len));
-            buffer_len += have_read);
+            buffer_len += have_read) ;
         QT_CLOSE(fd);
     }
     if(!buffer)
@@ -418,22 +418,22 @@
                 ++x;
                 if(buffer_len >= x + 12 && !strncmp(buffer + x, "includehint", 11) &&
                    (*(buffer + x + 11) == ' ' || *(buffer + x + 11) == '>')) {
-                    for(x += 11; *(buffer + x) != '>'; ++x);
+                    for(x += 11; *(buffer + x) != '>'; ++x) ;
                     int inc_len = 0;
-                    for(x += 1 ; *(buffer + x + inc_len) != '<'; ++inc_len);
+                    for(x += 1 ; *(buffer + x + inc_len) != '<'; ++inc_len) ;
                     *(buffer + x + inc_len) = '\0';
                     inc = buffer + x;
                 } else if(buffer_len >= x + 13 && !strncmp(buffer + x, "customwidget", 12) &&
                           (*(buffer + x + 12) == ' ' || *(buffer + x + 12) == '>')) {
-                    for(x += 13; *(buffer + x) != '>'; ++x); //skip up to >
+                    for(x += 13; *(buffer + x) != '>'; ++x) ; //skip up to >
                     while(x < buffer_len) {
-                        for(x++; *(buffer + x) != '<'; ++x); //skip up to <
+                        for(x++; *(buffer + x) != '<'; ++x) ; //skip up to <
                         x++;
                         if(buffer_len >= x + 7 && !strncmp(buffer+x, "header", 6) &&
                            (*(buffer + x + 6) == ' ' || *(buffer + x + 6) == '>')) {
-                            for(x += 7; *(buffer + x) != '>'; ++x); //skip up to >
+                            for(x += 7; *(buffer + x) != '>'; ++x) ; //skip up to >
                             int inc_len = 0;
-                            for(x += 1 ; *(buffer + x + inc_len) != '<'; ++inc_len);
+                            for(x += 1 ; *(buffer + x + inc_len) != '<'; ++inc_len) ;
                             *(buffer + x + inc_len) = '\0';
                             inc = buffer + x;
                             break;
@@ -448,10 +448,10 @@
                     for(x += 8; *(buffer + x) != '>'; ++x) {
                         if(buffer_len >= x + 9 && *(buffer + x) == 'i' &&
                            !strncmp(buffer + x, "impldecl", 8)) {
-                            for(x += 8; *(buffer + x) != '='; ++x);
+                            for(x += 8; *(buffer + x) != '='; ++x) ;
                             if(*(buffer + x) != '=')
                                 continue;
-                            for(++x; *(buffer+x) == '\t' || *(buffer+x) == ' '; ++x);
+                            for(++x; *(buffer+x) == '\t' || *(buffer+x) == ' '; ++x) ;
                             char quote = 0;
                             if(*(buffer+x) == '\'' || *(buffer+x) == '"') {
                                 quote = *(buffer + x);
@@ -475,13 +475,13 @@
                         }
                     }
                     int inc_len = 0;
-                    for(x += 1 ; *(buffer + x + inc_len) != '<'; ++inc_len);
+                    for(x += 1 ; *(buffer + x + inc_len) != '<'; ++inc_len) ;
                     *(buffer + x + inc_len) = '\0';
                     inc = buffer + x;
                 }
             }
             //read past new line now..
-            for(; x < buffer_len && !qmake_endOfLine(*(buffer + x)); ++x);
+            for(; x < buffer_len && !qmake_endOfLine(*(buffer + x)); ++x) ;
             ++line_count;
         } else if(file->type == QMakeSourceFileInfo::TYPE_QRC) {
         } else if(file->type == QMakeSourceFileInfo::TYPE_C) {
@@ -494,7 +494,7 @@
                         ++x;
                         if(buffer_len >= x) {
                             if(*(buffer+x) == '/') { //c++ style comment
-                                for(; x < buffer_len && !qmake_endOfLine(*(buffer + x)); ++x);
+                                for(; x < buffer_len && !qmake_endOfLine(*(buffer + x)); ++x) ;
                                 beginning = 1;
                             } else if(*(buffer+x) == '*') { //c style comment
                                 for(++x; x < buffer_len; ++x) {
@@ -558,7 +558,7 @@
                    *(buffer+x+keyword_len) != '_') {
                     for(x+=keyword_len; //skip spaces after keyword
                         x < buffer_len && (*(buffer+x) == ' ' || *(buffer+x) == '\t');
-                        x++);
+                        x++) ;
                     break;
                 } else if(qmake_endOfLine(*(buffer+x+keyword_len))) {
                     x += keyword_len-1;
@@ -579,7 +579,7 @@
                 x++;
 
                 int inc_len;
-                for(inc_len = 0; *(buffer + x + inc_len) != term && !qmake_endOfLine(*(buffer + x + inc_len)); ++inc_len);
+                for(inc_len = 0; *(buffer + x + inc_len) != term && !qmake_endOfLine(*(buffer + x + inc_len)); ++inc_len) ;
                 *(buffer + x + inc_len) = '\0';
                 inc = buffer + x;
                 x += inc_len;
@@ -594,7 +594,7 @@
 
                 int msg_len;
                 for(msg_len = 0; (term && *(buffer + x + msg_len) != term) &&
-                              !qmake_endOfLine(*(buffer + x + msg_len)); ++msg_len);
+                              !qmake_endOfLine(*(buffer + x + msg_len)); ++msg_len) ;
                 *(buffer + x + msg_len) = '\0';
                 debug_msg(0, "%s:%d %s -- %s", file->file.local().toLatin1().constData(), line_count, keyword, buffer+x);
                 x += msg_len;
@@ -706,7 +706,7 @@
         buffer = getBuffer(fst.st_size);
         for(int have_read = buffer_len = 0;
             (have_read = QT_READ(fd, buffer + buffer_len, fst.st_size - buffer_len));
-            buffer_len += have_read);
+            buffer_len += have_read) ;
         QT_CLOSE(fd);
     }
 
@@ -720,7 +720,7 @@
             ++x;
             if(buffer_len >= x) {
                 if(*(buffer + x) == '/') { //c++ style comment
-                    for(;x < buffer_len && !qmake_endOfLine(*(buffer + x)); ++x);
+                    for(;x < buffer_len && !qmake_endOfLine(*(buffer + x)); ++x) ;
                 } else if(*(buffer + x) == '*') { //c style comment
                     for(++x; x < buffer_len; ++x) {
                         if(*(buffer + x) == 't' || *(buffer + x) == 'q') { //ignore
--- a/qmake/generators/symbian/symmake.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/generators/symbian/symmake.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -56,7 +56,6 @@
 #define REGISTRATION_RESOURCE_DIRECTORY_HW "/private/10003a3f/import/apps"
 #define PLUGIN_COMMON_DEF_FILE_FOR_MMP "./plugin_common.def"
 #define PLUGIN_COMMON_DEF_FILE_ACTUAL "plugin_commonU.def"
-#define BLD_INF_FILENAME_LEN (sizeof(BLD_INF_FILENAME) - 1)
 
 #define BLD_INF_RULES_BASE "BLD_INF_RULES."
 #define BLD_INF_TAG_PLATFORMS "prj_platforms"
@@ -96,6 +95,11 @@
 
 #define PRINT_FILE_CREATE_ERROR(filename) fprintf(stderr, "Error: Could not create '%s'\n", qPrintable(filename));
 
+#define MANUFACTURER_NOTE_FILE "manufacturer_note.txt"
+#define DEFAULT_MANUFACTURER_NOTE \
+    "The package is not supported for devices from this manufacturer. Please try the selfsigned " \
+    "version of the package instead."
+
 QString SymbianMakefileGenerator::fixPathForMmp(const QString& origPath, const QDir& parentDir)
 {
     static QString epocRootStr;
@@ -249,7 +253,9 @@
     QString wrapperFileName("Makefile");
     QString outputFileName = fileInfo(Option::output.fileName()).fileName();
     if (outputFileName != BLD_INF_FILENAME) {
-        wrapperFileName.append(".").append((outputFileName.size() > BLD_INF_FILENAME_LEN && outputFileName.left(BLD_INF_FILENAME_LEN) == BLD_INF_FILENAME) ? outputFileName.mid(8) : outputFileName);
+        wrapperFileName.append(".").append(outputFileName.startsWith(BLD_INF_FILENAME)
+                                           ? outputFileName.mid(sizeof(BLD_INF_FILENAME))
+                                           : outputFileName);
         isPrimaryMakefile = false;
     }
 
@@ -287,7 +293,7 @@
     writeMmpFile(mmpFilename, symbianLangCodes);
 
     if (targetType == TypeExe) {
-        if (!project->values("CONFIG").contains("no_icon", Qt::CaseInsensitive)) {
+        if (!project->isActiveConfig("no_icon")) {
             writeRegRssFile(userRssRules);
             writeRssFile(numberOfIcons, iconFile);
             writeLocFile(symbianLangCodes);
@@ -384,6 +390,17 @@
         t << endl;
     }
 
+    // Begin Manufacturer block
+    if (!project->values("DEPLOYMENT.manufacturers").isEmpty()) {
+        QString manufacturerStr("IF ");
+        foreach(QString manufacturer, project->values("DEPLOYMENT.manufacturers")) {
+            manufacturerStr.append(QString("(MANUFACTURER)=(%1) OR \n   ").arg(manufacturer));
+        }
+        // Remove the final OR
+        manufacturerStr.chop(8);
+        t << manufacturerStr << endl;
+    }
+
     // Install paths on the phone *** should be dynamic at some point
     QString installPathBin = "!:\\sys\\bin";
     QString installPathResource = "!:\\resource\\apps";
@@ -405,7 +422,7 @@
              .arg(exeFile) << endl;
 
         // deploy rsc & reg_rsc file
-        if (!project->values("CONFIG").contains("no_icon", Qt::CaseInsensitive)) {
+        if (!project->isActiveConfig("no_icon")) {
             t << QString("\"%1epoc32/data/z/resource/apps/%2\"    - \"%3\\%4\"")
                  .arg(epocRoot())
                  .arg(fixedTarget + ".rsc")
@@ -458,6 +475,30 @@
             t << endl;
         }
     }
+
+    // Close Manufacturer block
+    if (!project->values("DEPLOYMENT.manufacturers").isEmpty()) {
+        QString manufacturerFailNoteFile;
+        if (project->values("DEPLOYMENT.manufacturers.fail_note").isEmpty()) {
+            manufacturerFailNoteFile = QString("%1_" MANUFACTURER_NOTE_FILE).arg(uid3);
+            QFile ft(manufacturerFailNoteFile);
+            if (ft.open(QIODevice::WriteOnly)) {
+                generatedFiles << ft.fileName();
+                QTextStream t2(&ft);
+
+                t2 << QString(DEFAULT_MANUFACTURER_NOTE) << endl;
+            } else {
+                PRINT_FILE_CREATE_ERROR(manufacturerFailNoteFile)
+            }
+        } else {
+            manufacturerFailNoteFile = project->values("DEPLOYMENT.manufacturers.fail_note").join("");
+        }
+
+        t << "ELSEIF NOT(0) ; MANUFACTURER" << endl
+          << "\"" << fileInfo(manufacturerFailNoteFile).absoluteFilePath() << "\""
+          << " - \"\", FILETEXT, TEXTEXIT" << endl
+          << "ENDIF ; MANUFACTURER" << endl;
+    }
 }
 
 bool SymbianMakefileGenerator::containsStartWithItem(const QChar &c, const QStringList& src)
@@ -474,7 +515,7 @@
 
 void SymbianMakefileGenerator::writeCustomDefFile()
 {
-    if (targetType == TypePlugin && !project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive)) {
+    if (targetType == TypePlugin && !project->isActiveConfig("stdbinary")) {
         // Create custom def file for plugin
         QFile ft(QLatin1String(PLUGIN_COMMON_DEF_FILE_ACTUAL));
 
@@ -515,6 +556,15 @@
     fixedTarget = escapeFilePath(fileFixify(project->first("TARGET")));
     fixedTarget = removePathSeparators(fixedTarget);
     removeSpecialCharacters(fixedTarget);
+    
+ 		translationFileName = escapeFilePath(fileFixify(project->first("TRANSLATIONS")));
+ 		if (!translationFileName.isEmpty()){
+ 		 		translationFileName.chop(3);
+ 				translationFileName = removePathSeparators(translationFileName);
+ 				removeSpecialCharacters(translationFileName);
+ 			}
+ 			else
+ 				translationFileName = fixedTarget;
 
     if (0 != project->values("QMAKE_PLATFORM").size())
         platform = varGlue("QMAKE_PLATFORM", "", " ", "");
@@ -542,9 +592,9 @@
         targetType = TypeExe;
     else if ((project->values("TEMPLATE")).contains("lib")) {
         // Check CONFIG to see if we are to build staticlib or dll
-        if (project->values("CONFIG").contains("staticlib") || project->values("CONFIG").contains("static"))
+        if (project->isActiveConfig("staticlib") || project->isActiveConfig("static"))
             targetType = TypeLib;
-        else if (project->values("CONFIG").contains("plugin"))
+        else if (project->isActiveConfig("plugin"))
             targetType = TypePlugin;
         else
             targetType = TypeDll;
@@ -554,7 +604,7 @@
 
     if (0 != project->values("TARGET.UID2").size()) {
         uid2 = project->first("TARGET.UID2");
-    } else if (project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive)) {
+    } else if (project->isActiveConfig("stdbinary")) {
         uid2 = "0x20004C45";
     } else {
         if (targetType == TypeExe) {
@@ -825,7 +875,7 @@
         }
         t << endl;
 
-        if (!project->values("CONFIG").contains("static") && !project->values("CONFIG").contains("staticlib")) {
+        if (!project->isActiveConfig("static") && !project->isActiveConfig("staticlib")) {
             writeMmpFileLibraryPart(t);
         }
 
@@ -878,7 +928,7 @@
     if (targetType == TypeExe) {
         t << MMP_TARGET "\t\t" << fixedTarget << ".exe" << endl;
         if (!skipTargetType) {
-            if (project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive))
+            if (project->isActiveConfig("stdbinary"))
                 t << MMP_TARGETTYPE "\t\tSTDEXE" << endl;
             else
                 t << MMP_TARGETTYPE "\t\tEXE" << endl;
@@ -886,7 +936,7 @@
     } else if (targetType == TypeDll || targetType == TypePlugin) {
         t << MMP_TARGET "\t\t" << fixedTarget << ".dll" << endl;
         if (!skipTargetType) {
-            if (project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive))
+            if (project->isActiveConfig("stdbinary"))
                 t << MMP_TARGETTYPE "\t\tSTDDLL" << endl;
             else
                 t << MMP_TARGETTYPE "\t\tDLL" << endl;
@@ -894,7 +944,7 @@
     } else if (targetType == TypeLib) {
         t << MMP_TARGET "\t\t" << fixedTarget << ".lib" << endl;
         if (!skipTargetType) {
-            if (project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive))
+            if (project->isActiveConfig("stdbinary"))
                 t << MMP_TARGETTYPE "\t\tSTDLIB" << endl;
             else
                 t << MMP_TARGETTYPE "\t\tLIB" << endl;
@@ -930,7 +980,7 @@
     if (0 != project->values("TARGET.EPOCALLOWDLLDATA").size())
         t << MMP_EPOCALLOWDLLDATA << endl;
 
-    if (targetType == TypePlugin && !project->values("CONFIG").contains("stdbinary", Qt::CaseInsensitive)) {
+    if (targetType == TypePlugin && !project->isActiveConfig("stdbinary")) {
         // Use custom def file for Qt plugins
         t << "DEFFILE " PLUGIN_COMMON_DEF_FILE_FOR_MMP << endl;
     }
@@ -946,7 +996,7 @@
 void SymbianMakefileGenerator::writeMmpFileResourcePart(QTextStream& t, QStringList &symbianLangCodes)
 {
     if ((targetType == TypeExe) &&
-            !project->values("CONFIG").contains("no_icon", Qt::CaseInsensitive)) {
+            !project->isActiveConfig("no_icon")) {
 
         QString locTarget = fixedTarget;
         locTarget.append(".rss");
@@ -1313,7 +1363,7 @@
     // Add project mmps and old style extension makefiles
 
     QString mmpTag;
-    if (project->values("CONFIG").contains("symbian_test", Qt::CaseInsensitive))
+    if (project->isActiveConfig("symbian_test"))
         mmpTag = QLatin1String(BLD_INF_TAG_TESTMMPFILES);
     else
         mmpTag = QLatin1String(BLD_INF_TAG_MMPFILES);
@@ -1484,10 +1534,7 @@
         t << "// ============================================================================" << endl;
         t << endl;
         t << "#include <appinfo.rh>" << endl;
-        if (!project->values("SYMBIANTRANSLATIONS").isEmpty())
-            t << "#include <" << fixedTarget << ".loc>" << endl;
-        else
-            t << "#include \"" << fixedTarget << ".loc\"" << endl;
+        t << "#include <" << translationFileName << ".loc>" << endl;
         t << endl;
         t << "RESOURCE LOCALISABLE_APP_INFO r_localisable_app_info" << endl;
         t << "\t{" << endl;
@@ -1519,14 +1566,14 @@
 
 void SymbianMakefileGenerator::writeLocFile(QStringList &symbianLangCodes)
 {
-    QString filename(fixedTarget);
+    QString filename(translationFileName);
     if (project->values("SYMBIANTRANSLATIONS").isEmpty()) {
         filename.append(".loc");
     } else { 
         if (!project->first("SYMBIANLOCFILESDIR").isEmpty()) { 
             filename.insert(0,project->first("SYMBIANLOCFILESDIR"));         
         } else {	
-            filename.insert(0,"/epoc32/include/platform/app/loc/");    
+            filename.insert(0,"/epoc32/include/platform/mw/loc/");    
         }
         filename.append(".loc");
     }
@@ -1560,11 +1607,11 @@
         t << "#endif" << endl;
     } else {
             t << "#if LANGUAGE_01" << endl;    
-            t << "#include <" << "01/" << fixedTarget  << "_01.loc>" << endl;
+            t << "#include <" << "01/" << translationFileName  << "_01.loc>" << endl;
             foreach(QString lang, symbianLangCodes) {
                 if (lang.localeAwareCompare("01") != 0) {
                     t << "#elif LANGUAGE_" << lang << endl;
-                    t << "#include <" << lang << "/" << fixedTarget  << "_" << lang << ".loc>" << ">" << endl;
+                    t << "#include <" << lang << "/" << translationFileName  << "_" << lang << ".loc" << ">" << endl;
                 }
             }
             t << "#endif" << endl;
@@ -1576,13 +1623,14 @@
 
 void SymbianMakefileGenerator::writeSymbianLocFile(QStringList &symbianLangCodes)
 {	
-	QString filename(fixedTarget); 
+	QString filename(translationFileName); 
 	foreach(QString lang, symbianLangCodes) {
         
 		QString tsFilename(filename);  
 		QString language = qt2S60LangMapTable.key(lang, QString("en"));
 		tsFilename.append("_"+language+".ts");
-		tsFilename.insert(0,project->first("SYMBIANTRANSLATIONDIR")); 	
+	
+		tsFilename.insert(0,project->first("SYMBIANTRANSLATIONSRCDIR")); 	
 		
         QString locFilename(filename); 
         locFilename.append("_"+lang+".loc");
@@ -1590,7 +1638,7 @@
             locFilename.insert(0,lang+"/");
             locFilename.insert(0,project->first("SYMBIANLOCFILESDIR"));
         } else {	
-            locFilename.insert(0,"/epoc32/include/platform/app/loc/"+lang+"/");
+            locFilename.insert(0,"/epoc32/include/platform/mw/loc/"+lang+"/");
         }
                 
         QString shortCaption;
@@ -1633,17 +1681,22 @@
                         }
                     }         
                 }
-                if (shortCaption.isEmpty())
+                if (shortCaption.isEmpty()){
                     fprintf(stderr, "Warning: STRING_r_short_caption not generated from file '%s'.\n", qPrintable(tsFilename));
-                if (longCaption.isEmpty())
+                    fprintf(stderr, "       : short caption generated from target name '#%s'.\n", qPrintable(fixedTarget));
+                  }
+                if (longCaption.isEmpty()){
                     fprintf(stderr, "Warning: STRING_r_caption not generated from file '%s'.\n", qPrintable(tsFilename));
+                    fprintf(stderr, "       : caption generated from target name '#%s'.\n", qPrintable(fixedTarget));
+                  }
                 if (xml.hasError())
                     fprintf(stderr, "ERROR: \"%s\" when parsing ts file\n", qPrintable(xml.errorString()));
             } else {
                 fprintf(stderr, "Could not open ts file (%s)\n", qPrintable(tsFilename));
             }
         } else {
-            fprintf(stderr, "ts file does not exist: (%s)\n", qPrintable(tsFilename));
+            fprintf(stderr, "Warning: ts file does not exist: (%s)\n", qPrintable(tsFilename));
+            fprintf(stderr, "       : short and long caption generated from target name '#%s'.\n", qPrintable(fixedTarget));
         }
 
         // generate language specific caption loc file
@@ -1661,12 +1714,12 @@
             if (!shortCaption.isEmpty()) {
                 t << "#define STRING_r_short_caption \"" << shortCaption  << "\"" << endl;    
             } else {
-                t << "#define STRING_r_short_caption \"" << fixedTarget  << "\"" << endl;
+                t << "#define STRING_r_short_caption \"" "#"<< fixedTarget  << "\"" << endl;
             }    
             if (!longCaption.isEmpty()) {
                 t << "#define STRING_r_caption \"" << longCaption  << "\"" << endl;  
             } else {    
-                t << "#define STRING_r_caption \"" << fixedTarget  << "\"" << endl;
+                t << "#define STRING_r_caption \"" "#"<< fixedTarget  << "\"" << endl;
             }
             ft.close();
         } else {
@@ -1747,7 +1800,7 @@
     if (!numberOfIcons.isEmpty()) {
         bool ok;
         numberOfIcons = numberOfIcons.simplified();
-        int tmp = numberOfIcons.toInt(&ok);
+        numberOfIcons.toInt(&ok);
         if (!ok) {
             numberOfIcons.clear();
             iconFile.clear();
--- a/qmake/generators/symbian/symmake.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/generators/symbian/symmake.h	Fri Mar 12 15:46:37 2010 +0200
@@ -81,7 +81,8 @@
     QHash<QString, QString> qt2S60LangMapTable;
 
     QString fixedTarget;
-
+	QString translationFileName; 
+		
     void removeSpecialCharacters(QString& str);
     QString fixPathForMmp(const QString& origPath, const QDir& parentDir);
     QString canonizePath(const QString& origPath);
--- a/qmake/generators/symbian/symmake_abld.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/generators/symbian/symmake_abld.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -155,39 +155,79 @@
         t << "endif" << endl << endl;
         t << "CLEANLIB: " DO_NOTHING_TARGET << endl << endl;
 
-        QStringList qmFileNames;
-        QString translationFilename = project->first("TRANSLATIONS");
-        if (!project->values("SYMBIANTRANSLATIONS").isEmpty() && !translationFilename.isEmpty()) {
-            QStringList symbianTranslations = project->values("SYMBIANTRANSLATIONS");
-            QString symbianTrPath = project->first("SYMBIANTRANSLATIONDIR");
-            t << "RESOURCE: create_qm" << endl << endl;
-            t << "create_qm : " << endl;
-            foreach (const QString &symbianTrans, symbianTranslations) {
-                QString translationTsFilename(translationFilename);
-                translationTsFilename.chop(3);
-                translationTsFilename.insert(0,symbianTrPath);
-                translationTsFilename.append(QString::fromLatin1("_"));
-                translationTsFilename.append(symbianTrans);
-                QString translationQmFilename(translationTsFilename);
-                translationTsFilename.append(QString::fromLatin1(".ts"));
-                translationQmFilename.append(QString::fromLatin1(".qm"));
-                t << "\t$(EPOCROOT)epoc32\\tools\\qt\\lrelease -silent -idbased " << translationTsFilename << " -qm " << translationQmFilename << endl;
-                // qmFileNames are needed in RELEASABLES: part
-                qmFileNames.append(translationQmFilename);
+        QStringList trFileNames;
+        if (!project->values("SYMBIANTRANSLATIONS").isEmpty()) {
+            QString translationFilename = project->first("TRANSLATIONS");
+            if (!translationFilename.isEmpty()) {
+                QStringList symbianTranslations = project->values("SYMBIANTRANSLATIONS");
+                QString symbianTrPath = project->first("SYMBIANTRANSLATIONDIR");
+                QString symbianTrSrcPath = project->first("SYMBIANTRANSLATIONSRCDIR");    	
+                QString symbianWinscwUdebQmPath = project->first("SYMBIANWINSCWUDEBTRANSLATIONDIR");  
+                QString symbianWinscwUrelQmPath = project->first("SYMBIANWINSCWURELTRANSLATIONDIR");  
+                t << "RESOURCE: create_qm" << endl << endl;
+                t << "create_qm : " << endl;
+                foreach (const QString &symbianTrans, symbianTranslations) {
+                    QString translationTsFilename(translationFilename);
+                    translationTsFilename.chop(3);
+                    translationTsFilename.insert(0,symbianTrPath);
+                    translationTsFilename.append(QString::fromLatin1("_"));
+                    translationTsFilename.append(symbianTrans);
+                    QString translationQmFilename(translationTsFilename);
+
+                    translationTsFilename.append(QString::fromLatin1(".ts"));
+                    // output path for armv5 qm files./epoc32/data/z/resource/qt/translations/
+                    translationQmFilename.append(QString::fromLatin1(".qm"));
+
+										// input path for ts files. /epoc32/include/platform/qt/translations/
+                    QString translationTsSrcFilename(translationFilename);
+                    translationTsSrcFilename.chop(3);
+                    translationTsSrcFilename.insert(0,symbianTrSrcPath);
+                    translationTsSrcFilename.append(QString::fromLatin1("_"));
+                    translationTsSrcFilename.append(symbianTrans);	
+                    translationTsSrcFilename.append(QString::fromLatin1(".ts"));
+                    	
+										// output path for winscw qm files. /epoc32/release/winscw/udeb/z/resource/qt/translations/
+                    QString translationQmWinscwUdebFilename(translationFilename);
+                    translationQmWinscwUdebFilename.chop(3);
+                    translationQmWinscwUdebFilename.insert(0,symbianWinscwUdebQmPath);
+                    translationQmWinscwUdebFilename.append(QString::fromLatin1("_"));
+                    translationQmWinscwUdebFilename.append(symbianTrans);
+                    translationQmWinscwUdebFilename.append(QString::fromLatin1(".qm"));                    	
+
+										// output path for winscw qm files. /epoc32/release/winscw/urel/z/resource/qt/translations/
+                    QString translationQmWinscwUrelFilename(translationFilename);
+                    translationQmWinscwUrelFilename.chop(3);
+                    translationQmWinscwUrelFilename.insert(0,symbianWinscwUrelQmPath);
+                    translationQmWinscwUrelFilename.append(QString::fromLatin1("_"));
+                    translationQmWinscwUrelFilename.append(symbianTrans);	
+                    translationQmWinscwUrelFilename.append(QString::fromLatin1(".qm"));  
+                    
+                    //these get generated to component mk file.	 
+                    t << "\tlrelease -silent -idbased " << translationTsSrcFilename << " -qm " << translationQmFilename << endl;
+                    t << "\tlrelease -silent -idbased " << translationTsSrcFilename << " -qm " << translationQmWinscwUdebFilename << endl;
+                    t << "\tlrelease -silent -idbased " << translationTsSrcFilename << " -qm " << translationQmWinscwUrelFilename << endl;
+                    
+                    // trFileNames QStringList needed in RELEASABLES part
+                    trFileNames.append(translationQmFilename);
+                    trFileNames.append(translationQmWinscwUdebFilename);
+                    trFileNames.append(translationQmWinscwUrelFilename);
+                }
+                t << endl;
             }
-            t << endl;
+            else
+            t << "RESOURCE: " DO_NOTHING_TARGET << endl << endl;
         } else {
             t << "RESOURCE: " DO_NOTHING_TARGET << endl << endl;
         }
         t << "FREEZE: " DO_NOTHING_TARGET << endl << endl;
         t << "SAVESPACE: " DO_NOTHING_TARGET << endl << endl;
 
-        if (!project->values("SYMBIANTRANSLATIONS").isEmpty() && !qmFileNames.isEmpty()) {
+        if (!project->values("SYMBIANTRANSLATIONS").isEmpty()) {
             t << "RELEASABLES: list_qm" << endl << endl;
             t << "list_qm : " << endl;
-            foreach (const QString &qmFilename, qmFileNames) {
-                t << "\t@echo " << qmFilename << endl;
-            }
+            foreach (const QString &trFilename, trFileNames) {
+                t << "\t@echo " << trFilename << endl;
+              }
             t << endl;
         } else {
             t << "RELEASABLES: " DO_NOTHING_TARGET << endl << endl;
@@ -220,7 +260,7 @@
     releasePlatforms.removeAll("winscw"); // No release for emulator
 
     QString testClause;
-    if (project->values("CONFIG").contains("symbian_test", Qt::CaseInsensitive))
+    if (project->isActiveConfig("symbian_test"))
         testClause = QLatin1String(" test");
     else
         testClause = QLatin1String("");
--- a/qmake/generators/symbian/symmake_sbsv2.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/generators/symbian/symmake_sbsv2.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -110,7 +110,7 @@
     releasePlatforms.removeAll("winscw"); // No release for emulator
 
     QString testClause;
-    if (project->values("CONFIG").contains("symbian_test", Qt::CaseInsensitive))
+    if (project->isActiveConfig("symbian_test"))
         testClause = QLatin1String(".test");
     else
         testClause = QLatin1String("");
@@ -370,20 +370,63 @@
     if (!project->values("SYMBIANTRANSLATIONS").isEmpty() && !translationFilename.isEmpty()) {
         QStringList symbianTranslations = project->values("SYMBIANTRANSLATIONS");
         QString symbianTrPath = project->first("SYMBIANTRANSLATIONDIR");
+        QString symbianTrSrcPath = project->first("SYMBIANTRANSLATIONSRCDIR");    	
+        QString symbianWinscwUdebQmPath = project->first("SYMBIANWINSCWUDEBTRANSLATIONDIR");  
+        QString symbianWinscwUrelQmPath = project->first("SYMBIANWINSCWURELTRANSLATIONDIR");  
         foreach (const QString &symbianTrans, symbianTranslations) {
-            QString translationTsFilename(translationFilename);
-            translationTsFilename.chop(3);
-            translationTsFilename.insert(0,symbianTrPath);
-            translationTsFilename.append(QString::fromLatin1("_"));
-            translationTsFilename.append(symbianTrans);
-            QString translationQmFilename(translationTsFilename);
-            translationTsFilename.append(QString::fromLatin1(".ts"));
-            translationQmFilename.append(QString::fromLatin1(".qm"));
+                    QString translationTsFilename(translationFilename);
+                    translationTsFilename.chop(3);
+                    translationTsFilename.insert(0,symbianTrPath);
+                    translationTsFilename.append(QString::fromLatin1("_"));
+                    translationTsFilename.append(symbianTrans);
+                    QString translationQmFilename(translationTsFilename);
+
+                    translationTsFilename.append(QString::fromLatin1(".ts"));
+                    // output path for armv5 qm files./epoc32/data/z/resource/qt/translations/
+                    translationQmFilename.append(QString::fromLatin1(".qm"));
+
+										// input path for ts files. /epoc32/include/platform/qt/translations/
+                    QString translationTsSrcFilename(translationFilename);
+                    translationTsSrcFilename.chop(3);
+                    translationTsSrcFilename.insert(0,symbianTrSrcPath);
+                    translationTsSrcFilename.append(QString::fromLatin1("_"));
+                    translationTsSrcFilename.append(symbianTrans);	
+                    translationTsSrcFilename.append(QString::fromLatin1(".ts"));
+                    	
+										// output path for winscw qm files. /epoc32/release/winscw/udeb/z/resource/qt/translations/
+                    QString translationQmWinscwUdebFilename(translationFilename);
+                    translationQmWinscwUdebFilename.chop(3);
+                    translationQmWinscwUdebFilename.insert(0,symbianWinscwUdebQmPath);
+                    translationQmWinscwUdebFilename.append(QString::fromLatin1("_"));
+                    translationQmWinscwUdebFilename.append(symbianTrans);
+                    translationQmWinscwUdebFilename.append(QString::fromLatin1(".qm"));                    	
+
+										// output path for winscw qm files. /epoc32/release/winscw/urel/z/resource/qt/translations/
+                    QString translationQmWinscwUrelFilename(translationFilename);
+                    translationQmWinscwUrelFilename.chop(3);
+                    translationQmWinscwUrelFilename.insert(0,symbianWinscwUrelQmPath);
+                    translationQmWinscwUrelFilename.append(QString::fromLatin1("_"));
+                    translationQmWinscwUrelFilename.append(symbianTrans);	
+                    translationQmWinscwUrelFilename.append(QString::fromLatin1(".qm")); 
+            
             t << "START EXTENSION qt/ts2qm" << endl;
-            t << "OPTION TSFILE " << translationTsFilename << endl;
+            t << "OPTION TSFILE " << translationTsSrcFilename << endl;
             t << "OPTION QMFILE " << translationQmFilename << endl;
             t << "END" << endl;
             t << endl;
+            
+            //winscw udeb  
+            t << "START EXTENSION qt/ts2qm" << endl;
+            t << "OPTION TSFILE " << translationTsSrcFilename << endl;
+            t << "OPTION QMFILE " << translationQmWinscwUdebFilename << endl;
+            t << "END" << endl;
+            t << endl;
+            //winscw urel
+            t << "START EXTENSION qt/ts2qm" << endl;
+            t << "OPTION TSFILE " << translationTsSrcFilename << endl;
+            t << "OPTION QMFILE " << translationQmWinscwUrelFilename << endl;
+            t << "END" << endl;
+            t << endl;
         }
     }
 
--- a/qmake/generators/win32/winmakefile.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/generators/win32/winmakefile.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -470,11 +470,12 @@
 
         resFile.replace(".rc", Option::res_ext);
         project->values("RES_FILE").prepend(fileInfo(resFile).fileName());
-        if (!project->values("OBJECTS_DIR").isEmpty())
+        if (!project->values("OBJECTS_DIR").isEmpty()) {
             if(project->isActiveConfig("staticlib"))
                 project->values("RES_FILE").first().prepend(fileInfo(project->values("DESTDIR").first()).absoluteFilePath() + Option::dir_sep);
             else
               project->values("RES_FILE").first().prepend(project->values("OBJECTS_DIR").first() + Option::dir_sep);
+        }
         project->values("RES_FILE").first() = Option::fixPathToTargetOS(project->values("RES_FILE").first(), false, false);
 	project->values("POST_TARGETDEPS") += project->values("RES_FILE");
         project->values("CLEAN_FILES") += project->values("RES_FILE");
--- a/qmake/meta.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/meta.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -119,10 +119,11 @@
             }
         }
     }
-    if(ret.isNull())
+    if(ret.isNull()) {
         debug_msg(2, "QMakeMetaInfo: Cannot find info file for %s", lib.toLatin1().constData());
-    else
+    } else {
         debug_msg(2, "QMakeMetaInfo: Found info file %s for %s", ret.toLatin1().constData(), lib.toLatin1().constData());
+    }
     return ret;
 }
 
--- a/qmake/option.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/option.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -634,8 +634,8 @@
         string = string.replace('/', Option::dir_sep).replace('\\', Option::dir_sep);
     }
 
-    if (string.startsWith("\"") && string.endsWith("\"") ||
-        string.startsWith("\'") && string.endsWith("\'"))
+    if ((string.startsWith("\"") && string.endsWith("\"")) ||
+        (string.startsWith("\'") && string.endsWith("\'")))
         string = string.mid(1, string.length()-2);
 
     //cache
--- a/qmake/project.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/qmake/project.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -3067,7 +3067,7 @@
         place[var] = QStringList(pfile);
     } else if(var == QLatin1String("_PRO_FILE_PWD_")) {
         var = ".BUILTIN." + var;
-        place[var] =  QStringList(QFileInfo(pfile).absolutePath());
+        place[var] = QStringList(pfile.isEmpty() ? qmake_getpwd() : QFileInfo(pfile).absolutePath());
     } else if(var == QLatin1String("_QMAKE_CACHE_")) {
         var = ".BUILTIN." + var;
         if(Option::mkfile::do_cache)
--- a/src/3rdparty/phonon/mmf/environmentalreverb.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/phonon/mmf/environmentalreverb.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -139,57 +139,68 @@
         TInt32 min, max;
         TUint32 umin, umax;
 
-        // DecayHFRatio
         effect->DecayHFRatioRange(umin, umax);
+        //: DecayHFRatio: Ratio of high-frequency decay time to the value specified by
+        //: DecayTime.
         parameters.append(createParameter(
             DecayHFRatio, tr("Decay HF ratio (%)"), effect->DecayHFRatio(),
             umin, umax));
 
-        // DecayTime
         effect->DecayTimeRange(umin, umax);
+        //: DecayTime: Time over which reverberation is diminished.
         parameters.append(createParameter(
             DecayTime, tr("Decay time (ms)"), effect->DecayTime(),
             umin, umax));
 
-        // Density
+        //: Density Delay between first and subsequent reflections.
+        //: Note that the S60 platform documentation does not make clear
+        //: the distinction between this value and the Diffusion value.
         parameters.append(createParameter(
             Density, tr("Density (%)"), effect->Density(), 0, 100));
 
-        // Diffusion
+        //: Diffusion: Delay between first and subsequent reflections.
+        //: Note that the S60 platform documentation does not make clear
+        //: the distinction between this value and the Density value.
         parameters.append(createParameter(
             Diffusion, tr("Diffusion (%)"), effect->Diffusion(), 0, 100));
 
-        // ReflectionsDelay
+        //: ReflectionsDelay: Amount of delay between the arrival the direct
+        //: path from the source and the arrival of the first reflection.
         parameters.append(createParameter(
             ReflectionsDelay, tr("Reflections delay (ms)"),
             effect->ReflectionsDelay(), 0, effect->ReflectionsDelayMax()));
 
-        // ReflectionsLevel
         effect->ReflectionLevelRange(min, max);
+        //: ReflectionsLevel: Amplitude of reflections. This value is
+        //: corrected by the RoomLevel to give the final reflection amplitude.
         parameters.append(createParameter(
             ReflectionsLevel, tr("Reflections level (mB)"),
             effect->ReflectionsLevel(),
             min, max, EffectParameter::LogarithmicHint));
 
-        // ReverbDelay
+        //: ReverbDelay: Amount of time between arrival of the first
+        //: reflection and start of the late reverberation.
         parameters.append(createParameter(
             ReverbDelay, tr("Reverb delay (ms)"), effect->ReverbDelay(),
             0, effect->ReverbDelayMax()));
 
-        // ReverbLevel
         effect->ReverbLevelRange(min, max);
+        //: ReverbLevel Amplitude of reverberations.  This value is
+        //: corrected by the RoomLevel to give the final reverberation
+        //: amplitude.
         parameters.append(createParameter(
             ReverbLevel, tr("Reverb level (mB)"), effect->ReverbLevel(),
             min, max, EffectParameter::LogarithmicHint));
 
-        // RoomHFLevel
         effect->RoomHFLevelRange(min, max);
+        //: RoomHFLevel: Amplitude of low-pass filter used to attenuate the
+        //: high frequency component of reflected sound.
         parameters.append(createParameter(
             RoomHFLevel, tr("Room HF level"), effect->RoomHFLevel(),
             min, max));
 
-        // RoomLevel
         effect->RoomLevelRange(min, max);
+        //: RoomLevel: Master volume control for all reflected sound.
         parameters.append(createParameter(
             RoomLevel, tr("Room level (mB)"), effect->RoomLevel(),
             min, max, EffectParameter::LogarithmicHint));
--- a/src/3rdparty/phonon/mmf/utils.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/phonon/mmf/utils.h	Fri Mar 12 15:46:37 2010 +0200
@@ -44,7 +44,7 @@
 
 class Utils
 {
-    Q_DECLARE_TR_FUNCTIONS(Utils)
+    Q_DECLARE_TR_FUNCTIONS(Phonon::MMF)
 
 public:
 /**
--- a/src/3rdparty/webkit/VERSION	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/VERSION	Fri Mar 12 15:46:37 2010 +0200
@@ -8,4 +8,4 @@
 
 and has the sha1 checksum
 
-        e15bd5454732bab9ffff4e1e5a755f41fd4e2eff
+        69dd29fbeb12d076741dce70ac6bc155101ccd6f
--- a/src/3rdparty/webkit/WebCore/ChangeLog	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/ChangeLog	Fri Mar 12 15:46:37 2010 +0200
@@ -1,3 +1,97 @@
+2010-02-01  Andreas Kling  <andreas.kling@nokia.com>
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        [Qt] Use the fallback style on Maemo 5
+
+        https://bugs.webkit.org/show_bug.cgi?id=34376
+
+        * platform/qt/RenderThemeQt.cpp:
+        (WebCore::RenderThemeQt::RenderThemeQt):
+        (WebCore::RenderThemeQt::fallbackStyle):
+        (WebCore::RenderThemeQt::qStyle):
+        (WebCore::RenderThemeQt::setPaletteFromPageClientIfExists):
+        * platform/qt/RenderThemeQt.h:
+
+2010-01-29  Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
+
+        Reviewed by Simon Hausmann.
+
+        [Qt] Speed up the WebCore::String -> QString conversion
+
+        Use QString(const QChar *, int len) constructor instead of QString::fromUtf16 to
+        avoid BOM checks and byteswapping.
+
+        * bridge/qt/qt_class.cpp:
+        (JSC::Bindings::QtClass::fieldNamed):
+        * bridge/qt/qt_runtime.cpp:
+        (JSC::Bindings::convertValueToQVariant):
+
+2010-01-14  Andreas Kling  <andreas.kling@nokia.com>
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        [Qt] Enable scrolling optimization for pages with embedded widgets
+
+        https://bugs.webkit.org/show_bug.cgi?id=33373
+
+        Added a basic manual test for scrolling of embedded QWidgets.
+
+        * manual-tests/qt/qtplugin-scrolling.html: Added.
+        * platform/ScrollView.cpp:
+        (WebCore::ScrollView::scrollContents):
+        (WebCore::ScrollView::setParent):
+        * platform/ScrollView.h:
+        * platform/qt/ScrollViewQt.cpp:
+        (WebCore::ScrollView::platformInit):
+        (WebCore::ScrollView::platformAddChild):
+        (WebCore::ScrollView::platformRemoveChild):
+        * plugins/qt/PluginViewQt.cpp:
+        (WebCore::PluginView::updatePluginWidget):
+        (WebCore::PluginView::invalidateRect):
+
+2010-01-29  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
+
+        Reviewed by Simon Hausmann.
+
+        [Qt] Turn off websocket support by default for Qt 4.6.x
+        https://bugs.webkit.org/show_bug.cgi?id=34284
+
+        * WebCore.pro:
+
+2010-01-26  Holger Hans Peter Freyther  <zecke@selfish.org>
+
+        Reviewed by Simon Hausmann.
+
+        [Qt] JavaScript prompt is currently broken.
+        https://bugs.webkit.org/show_bug.cgi?id=30914
+
+        Remove the manual test case in favor of an automated
+        test case in WebKit/qt/tests/qwebpage.
+
+        * manual-tests/qt/java-script-prompt.html: Removed.
+
+2010-01-25  Janne Koskinen  <janne.p.koskinen@digia.com>
+
+        Reviewed by Simon Hausmann.
+
+        [Qt] Phone backup support for QtWebkit for Symbian devices.
+        https://bugs.webkit.org/show_bug.cgi?id=34077
+
+        * WebCore.pro:
+
+2010-01-21  Thiago Macieira  <thiago.macieira@nokia.com>
+
+        Reviewed by Simon Hausmann.
+
+        [Qt] Fix incorrect dependency to QtXmlPatterns in generated include/QtWebKit/QtWebKit header
+
+        The generated file includes QtXmlPatterns/QtXmlPatterns, which is neither used/required by
+        the public QtWebKit API nor will it be available if Qt is configured with -no-xmlpatterns.
+
+        * WebCore.pro: Trick syncqt to believe that xmlpatterns is not a dependency, so that it's not
+        included in the generated file. It'll still be used and linked to with this trick.
+
 2010-01-17  Srinidhi Shreedhara  <srinidhi.shreedhara@nokia.com>
 
         Reviewed by Simon Hausmann.
--- a/src/3rdparty/webkit/WebCore/WebCore.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/WebCore.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -6,6 +6,7 @@
     TARGET.EPOCALLOWDLLDATA=1
     TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 // Min 128kB, Max 32MB
     TARGET.CAPABILITY = All -Tcb
+    TARGET.UID3 = 0x200267C2
 
     webkitlibs.sources = QtWebKit.dll
     webkitlibs.path = /sys/bin
@@ -18,12 +19,15 @@
         " "
     webkitlibs.pkg_prerules = vendorinfo
 
-    DEPLOYMENT += webkitlibs
+    webkitbackup.sources = ../WebKit/qt/symbian/backup_registration.xml
+    webkitbackup.path = /private/10202D56/import/packages/$$replace(TARGET.UID3, 0x,)
 
-    TARGET.UID3 = 0x200267C2
+    DEPLOYMENT += webkitlibs webkitbackup
+
     # RO text (code) section in qtwebkit.dll exceeds allocated space for gcce udeb target.
     # Move RW-section base address to start from 0xE00000 instead of the toolchain default 0x400000.
     MMP_RULES += "LINKEROPTION  armcc --rw-base 0xE00000"
+    MMP_RULES += BYTEPAIRCOMPRESSTARGET # :QTP:QT-2698
     MMP_RULES += ALWAYS_BUILD_AS_ARM
     QMAKE_CXXFLAGS.ARMCC += -OTime -O3
 }
@@ -183,7 +187,7 @@
 }
 
 # Web Socket support.
-!contains(DEFINES, ENABLE_WEB_SOCKETS=.): DEFINES += ENABLE_WEB_SOCKETS=1
+!contains(DEFINES, ENABLE_WEB_SOCKETS=.): DEFINES += ENABLE_WEB_SOCKETS=0
 
 # XSLT support with QtXmlPatterns
 !contains(DEFINES, ENABLE_XSLT=.) {
@@ -2780,7 +2784,7 @@
 contains(DEFINES, ENABLE_XSLT=1) {
     FEATURE_DEFINES_JAVASCRIPT += ENABLE_XSLT=1
 
-    QT += xmlpatterns
+    tobe|!tobe: QT += xmlpatterns
 
     SOURCES += \
         bindings/js/JSXSLTProcessorConstructor.cpp \
@@ -3421,14 +3425,8 @@
 
 symbian {
     shared {
-        contains(MMP_RULES, defBlock) {
-            MMP_RULES -= defBlock
-
-            MMP_RULES += "$${LITERAL_HASH}ifdef WINSCW" \
-                    "DEFFILE ../WebKit/qt/symbian/bwins/$${TARGET}.def" \
-                    "$${LITERAL_HASH}elif defined EABI" \
-                    "DEFFILE ../WebKit/qt/symbian/eabi/$${TARGET}.def" \
-                    "$${LITERAL_HASH}endif"
+        contains(CONFIG, def_files) {
+            defFilePath=../WebKit/qt/symbian
         }
     }
 }
--- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_class.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_class.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -127,7 +127,7 @@
 
     QObject* obj = qtinst->getObject();
     UString ustring = identifier.ustring();
-    QString objName(QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size()));
+    QString objName((const QChar*)ustring.rep()->data(), ustring.size());
     QByteArray ba = objName.toAscii();
 
     // First check for a cached field
--- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -305,7 +305,7 @@
                 return QString();
             } else {
                 UString ustring = value.toString(exec);
-                ret = QVariant(QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size()));
+                ret = QVariant(QString((const QChar*)ustring.rep()->data(), ustring.size()));
                 if (type == String)
                     dist = 0;
                 else
@@ -329,7 +329,7 @@
                         QVariant v = convertValueToQVariant(exec, val, QMetaType::Void, &objdist, visitedObjects);
                         if (objdist >= 0) {
                             UString ustring = (*it).ustring();
-                            QString id = QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size());
+                            QString id = QString((const QChar*)ustring.rep()->data(), ustring.size());
                             result.insert(id, v);
                         }
                     }
@@ -404,7 +404,7 @@
                 for (int i = 0; i < len; ++i) {
                     JSValue val = rtarray->getConcreteArray()->valueAt(exec, i);
                     UString ustring = val.toString(exec);
-                    QString qstring = QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size());
+                    QString qstring = QString((const QChar*)ustring.rep()->data(), ustring.size());
 
                     result.append(qstring);
                 }
@@ -418,7 +418,7 @@
                 for (int i = 0; i < len; ++i) {
                     JSValue val = array->get(exec, i);
                     UString ustring = val.toString(exec);
-                    QString qstring = QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size());
+                    QString qstring = QString((const QChar*)ustring.rep()->data(), ustring.size());
 
                     result.append(qstring);
                 }
@@ -427,7 +427,7 @@
             } else {
                 // Make a single length array
                 UString ustring = value.toString(exec);
-                QString qstring = QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size());
+                QString qstring = QString((const QChar*)ustring.rep()->data(), ustring.size());
                 QStringList result;
                 result.append(qstring);
                 ret = QVariant(result);
@@ -443,7 +443,7 @@
                 dist = 0;
             } else {
                 UString ustring = value.toString(exec);
-                ret = QVariant(QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size()).toLatin1());
+                ret = QVariant(QString((const QChar*)ustring.rep()->data(), ustring.size()).toLatin1());
                 if (type == String)
                     dist = 5;
                 else
@@ -485,7 +485,7 @@
                 }
             } else if (type == String) {
                 UString ustring = value.toString(exec);
-                QString qstring = QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size());
+                QString qstring = QString((const QChar*)ustring.rep()->data(), ustring.size());
 
                 if (hint == QMetaType::QDateTime) {
                     QDateTime dt = QDateTime::fromString(qstring, Qt::ISODate);
@@ -534,7 +534,7 @@
 */
                 // Attempt to convert.. a bit risky
                 UString ustring = value.toString(exec);
-                QString qstring = QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size());
+                QString qstring = QString((const QChar*)ustring.rep()->data(), ustring.size());
 
                 // this is of the form '/xxxxxx/i'
                 int firstSlash = qstring.indexOf(QLatin1Char('/'));
@@ -554,7 +554,7 @@
                 }
             } else if (type == String) {
                 UString ustring = value.toString(exec);
-                QString qstring = QString::fromUtf16((const ushort*)ustring.rep()->data(),ustring.size());
+                QString qstring = QString((const QChar*)ustring.rep()->data(), ustring.size());
 
                 QRegExp re(qstring);
                 if (re.isValid()) {
--- a/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -216,7 +216,6 @@
 #include "JSWebKitCSSTransformValue.h"
 #include "JSWebKitPoint.h"
 #include "JSWebKitTransitionEvent.h"
-#include "JSWebSocket.h"
 #include "JSWheelEvent.h"
 #include "JSWorker.h"
 #include "JSXMLHttpRequest.h"
@@ -247,7 +246,7 @@
 
 /* Hash table */
 
-static const HashTableValue JSDOMWindowTableValues[297] =
+static const HashTableValue JSDOMWindowTableValues[296] =
 {
     { "screen", DontDelete|ReadOnly, (intptr_t)jsDOMWindowScreen, (intptr_t)0 },
     { "history", DontDelete|ReadOnly, (intptr_t)jsDOMWindowHistory, (intptr_t)0 },
@@ -540,7 +539,6 @@
     { "MessageChannel", DontDelete, (intptr_t)jsDOMWindowMessageChannelConstructor, (intptr_t)setJSDOMWindowMessageChannelConstructor },
     { "Worker", DontDelete, (intptr_t)jsDOMWindowWorkerConstructor, (intptr_t)setJSDOMWindowWorkerConstructor },
     { "SharedWorker", DontDelete, (intptr_t)jsDOMWindowSharedWorkerConstructor, (intptr_t)setJSDOMWindowSharedWorkerConstructor },
-    { "WebSocket", DontDelete, (intptr_t)jsDOMWindowWebSocketConstructor, (intptr_t)setJSDOMWindowWebSocketConstructor },
     { "Plugin", DontDelete, (intptr_t)jsDOMWindowPluginConstructor, (intptr_t)setJSDOMWindowPluginConstructor },
     { "PluginArray", DontDelete, (intptr_t)jsDOMWindowPluginArrayConstructor, (intptr_t)setJSDOMWindowPluginArrayConstructor },
     { "MimeType", DontDelete, (intptr_t)jsDOMWindowMimeTypeConstructor, (intptr_t)setJSDOMWindowMimeTypeConstructor },
@@ -588,7 +586,7 @@
 #if ENABLE(PERFECT_HASH_SIZE)
     { 65535, JSDOMWindowTableValues, 0 };
 #else
-    { 1068, 1023, JSDOMWindowTableValues, 0 };
+    { 1067, 1023, JSDOMWindowTableValues, 0 };
 #endif
 
 /* Hash table for prototype */
@@ -3275,14 +3273,6 @@
     return castedThis->sharedWorker(exec);
 }
 
-JSValue jsDOMWindowWebSocketConstructor(ExecState* exec, const Identifier&, const PropertySlot& slot)
-{
-    JSDOMWindow* castedThis = static_cast<JSDOMWindow*>(asObject(slot.slotBase()));
-    if (!castedThis->allowsAccessFrom(exec))
-        return jsUndefined();
-    return castedThis->webSocket(exec);
-}
-
 JSValue jsDOMWindowPluginConstructor(ExecState* exec, const Identifier&, const PropertySlot& slot)
 {
     JSDOMWindow* castedThis = static_cast<JSDOMWindow*>(asObject(slot.slotBase()));
@@ -5678,14 +5668,6 @@
     static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "SharedWorker"), value);
 }
 
-void setJSDOMWindowWebSocketConstructor(ExecState* exec, JSObject* thisObject, JSValue value)
-{
-    if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec))
-        return;
-    // Shadowing a built-in constructor
-    static_cast<JSDOMWindow*>(thisObject)->putDirect(Identifier(exec, "WebSocket"), value);
-}
-
 void setJSDOMWindowPluginConstructor(ExecState* exec, JSObject* thisObject, JSValue value)
 {
     if (!static_cast<JSDOMWindow*>(thisObject)->allowsAccessFrom(exec))
--- a/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/generated/JSDOMWindow.h	Fri Mar 12 15:46:37 2010 +0200
@@ -82,7 +82,6 @@
     JSC::JSValue messageChannel(JSC::ExecState*) const;
     JSC::JSValue worker(JSC::ExecState*) const;
     JSC::JSValue sharedWorker(JSC::ExecState*) const;
-    JSC::JSValue webSocket(JSC::ExecState*) const;
     JSC::JSValue audio(JSC::ExecState*) const;
 
     // Custom functions
@@ -679,8 +678,6 @@
 void setJSDOMWindowWorkerConstructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
 JSC::JSValue jsDOMWindowSharedWorkerConstructor(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
 void setJSDOMWindowSharedWorkerConstructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
-JSC::JSValue jsDOMWindowWebSocketConstructor(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
-void setJSDOMWindowWebSocketConstructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
 JSC::JSValue jsDOMWindowPluginConstructor(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
 void setJSDOMWindowPluginConstructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
 JSC::JSValue jsDOMWindowPluginArrayConstructor(JSC::ExecState*, const JSC::Identifier&, const JSC::PropertySlot&);
--- a/src/3rdparty/webkit/WebCore/platform/PopupMenu.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/PopupMenu.h	Fri Mar 12 15:46:37 2010 +0200
@@ -44,6 +44,9 @@
 namespace WebCore {
     class QWebPopup;
 }
+QT_BEGIN_NAMESPACE
+class QGraphicsProxyWidget;
+QT_END_NAMESPACE
 #elif PLATFORM(GTK)
 typedef struct _GtkMenu GtkMenu;
 typedef struct _GtkMenuItem GtkMenuItem;
@@ -147,6 +150,7 @@
     void clear();
     void populate(const IntRect&);
     QWebPopup* m_popup;
+    QGraphicsProxyWidget* m_proxy;
 #elif PLATFORM(WIN)
     // ScrollBarClient
     virtual void valueChanged(Scrollbar*);
--- a/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/ScrollView.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -507,7 +507,7 @@
         hostWindow()->repaint(panScrollIconDirtyRect, true);
     }
 
-    if (canBlitOnScroll() && !rootPreventsBlitting()) { // The main frame can just blit the WebView window
+    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);
     } else { 
@@ -597,14 +597,6 @@
     if (m_scrollbarsAvoidingResizer && parent())
         parent()->adjustScrollbarsAvoidingResizerCount(-m_scrollbarsAvoidingResizer);
 
-#if PLATFORM(QT)
-    if (m_widgetsPreventingBlitting && parent())
-        parent()->adjustWidgetsPreventingBlittingCount(-m_widgetsPreventingBlitting);
-
-    if (m_widgetsPreventingBlitting && parentView)
-        parentView->adjustWidgetsPreventingBlittingCount(m_widgetsPreventingBlitting);
-#endif
-
     Widget::setParent(parentView);
 
     if (m_scrollbarsAvoidingResizer && parent())
--- a/src/3rdparty/webkit/WebCore/platform/ScrollView.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/ScrollView.h	Fri Mar 12 15:46:37 2010 +0200
@@ -305,16 +305,6 @@
     NSScrollView<WebCoreFrameScrollView>* scrollView() const;
 #endif
 
-#if PLATFORM(QT)
-public:
-    void adjustWidgetsPreventingBlittingCount(int delta);
-private:
-    bool rootPreventsBlitting() const { return root()->m_widgetsPreventingBlitting > 0; }
-    unsigned m_widgetsPreventingBlitting;
-#else
-    bool rootPreventsBlitting() const { return false; }
-#endif
-
 #if PLATFORM(GTK)
 public:
     void setGtkAdjustments(GtkAdjustment* hadj, GtkAdjustment* vadj);
--- a/src/3rdparty/webkit/WebCore/platform/qt/PopupMenuQt.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/qt/PopupMenuQt.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1,6 +1,7 @@
 /*
  * This file is part of the popup menu implementation for <select> elements in WebCore.
  *
+ * Copyright (C) 2009 Girish Ramakrishnan <girish@forwardbias.in>
  * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
  * Copyright (C) 2006 Apple Computer, Inc.
  * Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com 
@@ -35,6 +36,10 @@
 
 #include <QAction>
 #include <QDebug>
+#include <QGraphicsProxyWidget>
+#include <QGraphicsScene>
+#include <QGraphicsView>
+#include <QGraphicsWebView>
 #include <QListWidget>
 #include <QListWidgetItem>
 #include <QMenu>
@@ -46,13 +51,17 @@
 
 PopupMenu::PopupMenu(PopupMenuClient* client)
     : m_popupClient(client)
+    , m_proxy(0)
 {
     m_popup = new QWebPopup(client);
 }
 
 PopupMenu::~PopupMenu()
 {
-    delete m_popup;
+    // If we create a proxy, then the deletion of the proxy and the
+    // combo will be done by the proxy's parent (QGraphicsWebView)
+    if (!m_proxy)
+        delete m_popup;
 }
 
 void PopupMenu::clear()
@@ -92,8 +101,18 @@
     rect.moveTopLeft(v->contentsToWindow(r.topLeft()));
     rect.setHeight(m_popup->sizeHint().height());
 
-    m_popup->setParent(client->ownerWidget());
-    m_popup->setGeometry(rect);
+    if (QGraphicsView* view = qobject_cast<QGraphicsView*>(client->ownerWidget())) {
+        if (!m_proxy) {
+            m_proxy = new QGraphicsProxyWidget(qobject_cast<QGraphicsWebView*>(client->pluginParent()));
+            m_proxy->setWidget(m_popup);
+        } else
+            m_proxy->setVisible(true);
+        m_proxy->setGeometry(rect);
+    } else {
+        m_popup->setParent(client->ownerWidget());
+        m_popup->setGeometry(rect);
+    }
+
     m_popup->setCurrentIndex(index);
     m_popup->exec();
 }
--- a/src/3rdparty/webkit/WebCore/platform/qt/QWebPopup.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/qt/QWebPopup.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -26,6 +26,7 @@
 #include <QApplication>
 #include <QInputContext>
 #include <QMouseEvent>
+#include <QGraphicsProxyWidget>
 
 namespace WebCore {
 
@@ -35,7 +36,9 @@
 {
     Q_ASSERT(m_client);
 
+#if !defined(Q_WS_S60) && !defined(Q_WS_MAEMO_5)
     setFont(m_client->menuStyle().font().font());
+#endif
     connect(this, SIGNAL(activated(int)),
             SLOT(activeChanged(int)), Qt::QueuedConnection);
 }
@@ -43,9 +46,16 @@
 
 void QWebPopup::exec()
 {
+    // QCursor::pos() is not a great idea for a touch screen, but we don't need the coordinates
+    // as comboboxes with Qt on Maemo 5 come up in their full width on the screen.
+    // On the other platforms it's okay to use QCursor::pos().
+#if defined(Q_WS_MAEMO_5)
+    showPopup();
+#else
     QMouseEvent event(QEvent::MouseButtonPress, QCursor::pos(), Qt::LeftButton,
                       Qt::LeftButton, Qt::NoModifier);
     QCoreApplication::sendEvent(this, &event);
+#endif
 }
 
 void QWebPopup::showPopup()
@@ -67,6 +77,10 @@
     }
 
     QComboBox::hidePopup();
+    
+    if (QGraphicsProxyWidget* proxy = graphicsProxyWidget())
+        proxy->setVisible(false);
+
     if (!m_popupVisible)
         return;
 
--- a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -125,7 +125,6 @@
 RenderThemeQt::RenderThemeQt(Page* page)
     : RenderTheme()
     , m_page(page)
-    , m_fallbackStyle(0)
 {
     QPushButton button;
     button.setAttribute(Qt::WA_MacSmallSize);
@@ -135,6 +134,8 @@
 #ifdef Q_WS_MAC
     m_buttonFontPixelSize = fontInfo.pixelSize();
 #endif
+
+    m_fallbackStyle = QStyleFactory::create(QLatin1String("windows"));
 }
 
 RenderThemeQt::~RenderThemeQt()
@@ -143,19 +144,17 @@
 }
 
 // for some widget painting, we need to fallback to Windows style
-QStyle* RenderThemeQt::fallbackStyle()
+QStyle* RenderThemeQt::fallbackStyle() const
 {
-    if (!m_fallbackStyle)
-        m_fallbackStyle = QStyleFactory::create(QLatin1String("windows"));
-
-    if (!m_fallbackStyle)
-        m_fallbackStyle = QApplication::style();
-
-    return m_fallbackStyle;
+    return (m_fallbackStyle) ? m_fallbackStyle : QApplication::style();
 }
 
 QStyle* RenderThemeQt::qStyle() const
 {
+#ifdef Q_WS_MAEMO_5
+    return fallbackStyle();
+#endif
+
     if (m_page) {
         ChromeClientQt* client = static_cast<ChromeClientQt*>(m_page->chrome()->client());
 
@@ -758,6 +757,10 @@
     if (result == RadioPart || result == CheckboxPart)
         option.state |= (isChecked(o) ? QStyle::State_On : QStyle::State_Off);
 
+#ifdef Q_WS_MAEMO_5
+    static QPalette lightGrayPalette(Qt::lightGray);
+    option.palette = lightGrayPalette;
+#else
     // If the owner widget has a custom palette, use it
     Page* page = o->document()->page();
     if (page) {
@@ -766,6 +769,7 @@
         if (pageClient)
             option.palette = pageClient->palette();
     }
+#endif
 
     return result;
 }
--- a/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.h	Fri Mar 12 15:46:37 2010 +0200
@@ -138,7 +138,7 @@
     void setPopupPadding(RenderStyle*) const;
 
     QStyle* qStyle() const;
-    QStyle* fallbackStyle();
+    QStyle* fallbackStyle() const;
 
     Page* m_page;
 
--- a/src/3rdparty/webkit/WebCore/platform/qt/ScrollViewQt.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/platform/qt/ScrollViewQt.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -36,32 +36,19 @@
 
 void ScrollView::platformInit()
 {
-    m_widgetsPreventingBlitting = 0;
 }
 
 void ScrollView::platformDestroy()
 {
 }
 
-// Windowed plugins are using native windows and are thus preventing
-// us from doing any kind of scrolling optimization.
-
-void ScrollView::adjustWidgetsPreventingBlittingCount(int delta)
-{
-    m_widgetsPreventingBlitting += delta;
-    if (parent())
-        parent()->adjustWidgetsPreventingBlittingCount(delta);
-}
-
 void ScrollView::platformAddChild(Widget*)
 {
-    adjustWidgetsPreventingBlittingCount(1);
 }
 
 void ScrollView::platformRemoveChild(Widget* child)
 {
     child->hide();
-    adjustWidgetsPreventingBlittingCount(-1);
 }
 
 }
--- a/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -126,6 +126,10 @@
     // scroll, we need to move/resize immediately.
     if (!m_windowRect.intersects(frameView->frameRect()))
         setNPWindowIfNeeded();
+
+    // Make sure we get repainted afterwards. This is necessary for downward
+    // scrolling to move the plugin widget properly.
+    invalidate();
 }
 
 void PluginView::setFocus()
@@ -657,7 +661,8 @@
 void PluginView::invalidateRect(const IntRect& rect)
 {
     if (m_isWindowed) {
-        platformWidget()->update(rect);
+        if (platformWidget())
+            platformWidget()->update(rect);
         return;
     }
 
--- a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -53,7 +53,7 @@
 #include "runtime_root.h"
 #include "QWebPageClient.h"
 #include <QKeyEvent>
-#include <QPixmap>
+#include <QPixmap.h>
 #include <QRegion>
 #include <QVector>
 #include <QWidget>
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1369,6 +1369,11 @@
     // paranoia check
     fromPage = qMax(1, fromPage);
     toPage = qMin(printContext.pageCount(), toPage);
+    if (toPage < fromPage) {
+        // if the user entered a page range outside the actual number
+        // of printable pages, just return
+        return;
+    }
 
     if (printer->pageOrder() == QPrinter::LastPageFirst) {
         int tmp = fromPage;
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -57,6 +57,106 @@
     view->setPage(0);
 }
 
+#ifdef Q_WS_MAEMO_5
+#include "qabstractkineticscroller.h"
+
+class QWebViewKineticScroller : public QAbstractKineticScroller {
+public:
+    QWebViewKineticScroller() : QAbstractKineticScroller() {}
+    // remember the frame where the button was pressed
+    bool eventFilter(QObject* o, QEvent* ev)
+    {
+        switch (ev->type()) {
+        case QEvent::MouseButtonPress: {
+            QWebFrame* hitFrame = scrollingFrameAt(static_cast<QMouseEvent*>(ev)->pos());
+            if (hitFrame)
+                m_frame = hitFrame;
+            break;
+        }
+        default:
+            break;
+        }
+        return QAbstractKineticScroller::eventFilter(o, ev);
+    }
+
+protected:
+    QWebFrame* currentFrame() const
+    {
+        if (!m_frame.isNull())
+            return m_frame.data();
+
+        QWebView* view = static_cast<QWebView*>(widget());
+        QWebFrame* frame = view->page()->mainFrame();
+        return frame;
+    }
+
+    // Returns the innermost frame at the given position that can scroll.
+    QWebFrame* scrollingFrameAt(const QPoint& pos) const
+    {
+        QWebView* view = static_cast<QWebView*>(widget());
+        QWebFrame* mainFrame = view->page()->mainFrame();
+        QWebFrame* hitFrame = mainFrame->hitTestContent(pos).frame();
+        QSize range = hitFrame->contentsSize() - hitFrame->geometry().size();
+
+        while (hitFrame && range.width() <= 1 && range.height() <= 1)
+            hitFrame = hitFrame->parentFrame();
+
+        return hitFrame;
+    }
+
+    void attachToWidget()
+    {
+        QWebView* view = static_cast<QWebView*>(widget());
+        QWebFrame* mainFrame = view->page()->mainFrame();
+        m_oldHorizontalScrollBarPolicy = mainFrame->scrollBarPolicy(Qt::Horizontal);
+        m_oldVerticalScrollBarPolicy = mainFrame->scrollBarPolicy(Qt::Vertical);
+        mainFrame->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff);
+        mainFrame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff);
+        view->installEventFilter(this);
+    }
+
+    void removeFromWidget()
+    {
+        QWebView* view = static_cast<QWebView*>(widget());
+        view->removeEventFilter(this);
+        QWebFrame* mainFrame = view->page()->mainFrame();
+        mainFrame->setScrollBarPolicy(Qt::Vertical, m_oldVerticalScrollBarPolicy);
+        mainFrame->setScrollBarPolicy(Qt::Horizontal, m_oldHorizontalScrollBarPolicy);
+    }
+
+    QRect positionRange() const
+    {
+        QRect r;
+        QWebFrame* frame = currentFrame();
+        r.setSize(frame->contentsSize() - frame->geometry().size());
+        return r;
+    }
+
+    QPoint position() const
+    {
+        QWebFrame* frame = currentFrame();
+        return frame->scrollPosition();
+    }
+
+    QSize viewportSize() const
+    {
+        return static_cast<QWebView*>(widget())->page()->viewportSize();
+    }
+
+    void setPosition(const QPoint& point, const QPoint& /* overShootDelta */)
+    {
+        QWebFrame* frame = currentFrame();
+        frame->setScrollPosition(point);
+    }
+
+    QPointer<QWebFrame> m_frame;
+    Qt::ScrollBarPolicy m_oldVerticalScrollBarPolicy;
+    Qt::ScrollBarPolicy m_oldHorizontalScrollBarPolicy;
+};
+
+#endif // Q_WS_MAEMO_5
+
+
 /*!
     \class QWebView
     \since 4.4
@@ -153,6 +253,10 @@
     setAttribute(Qt::WA_InputMethodEnabled);
 #endif
 
+#if defined(Q_WS_MAEMO_5)
+    QAbstractKineticScroller* scroller = new QWebViewKineticScroller();
+    scroller->setWidget(this);
+#endif
     setAcceptDrops(true);
 
     setMouseTracking(true);
--- a/src/3rdparty/webkit/WebKit/qt/ChangeLog	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog	Fri Mar 12 15:46:37 2010 +0200
@@ -1,3 +1,107 @@
+2010-01-28  Kenneth Rohde Christiansen  <kenneth@webkit.org>
+
+        Reviewed by Simon Hausmann.
+
+        Do not set the combobox font on Maemo5 and S60; use the
+        default instead.
+
+        * WebCoreSupport/QtFallbackWebPopup.cpp:
+        (WebCore::QtFallbackWebPopup::populate):
+
+2010-01-28  Andreas Kling  <andreas.kling@nokia.com>
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        [Qt] Support kinetic scrolling on Maemo 5
+
+        https://bugs.webkit.org/show_bug.cgi?id=34267
+
+        Patch by Ralf Engels <ralf.engels@nokia.com> and
+        Robert Griebl <rgriebl@trolltech.com>
+
+        * Api/qwebview.cpp:
+        (QWebViewKineticScroller::QWebViewKineticScroller):
+        (QWebViewKineticScroller::eventFilter):
+        (QWebViewKineticScroller::currentFrame):
+        (QWebViewKineticScroller::scrollingFrameAt):
+        (QWebViewKineticScroller::attachToWidget):
+        (QWebViewKineticScroller::removeFromWidget):
+        (QWebViewKineticScroller::positionRange):
+        (QWebViewKineticScroller::position):
+        (QWebViewKineticScroller::viewportSize):
+        (QWebViewKineticScroller::setPosition):
+        (QWebView::QWebView):
+
+2010-01-29  Kenneth Rohde Christiansen  <kenneth@webkit.org>
+
+        Reviewed by Simon Hausmann
+
+        Disable auto-uppercase and predictive text on Maemo5, just like the
+        build-in MicroB Browser.
+
+        * WebCoreSupport/EditorClientQt.cpp:
+        (WebCore::EditorClientQt::setInputMethodState):
+
+2010-01-28  Trond Kjernåsen <trond@trolltech.com>
+
+        Reviewed by Simon Hausmann.
+
+        [Qt] Fix for endless print loop when printing web pages
+
+        * Api/qwebframe.cpp:
+        (QWebFrame::print):
+
+2010-01-26  Simon Hausmann  <simon.hausmann@nokia.com>
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        [Qt] Show comboboxes on Maemo 5
+        https://bugs.webkit.org/show_bug.cgi?id=34088
+
+        Don't try to show the combobox by simulating a mouse event from QCursor::pos() to
+        get the combobox position right. The position on Maemo 5 is independent from the mouse
+        and there's no QCursor::pos().
+
+        * WebCoreSupport/QtFallbackWebPopup.cpp:
+        (WebCore::QtFallbackWebPopup::show):
+
+2010-01-26  Holger Hans Peter Freyther  <zecke@selfish.org>
+
+        Reviewed by Simon Hausmann.
+
+        [Qt] JavaScript prompt is currently broken
+        https://bugs.webkit.org/show_bug.cgi?id=30914
+
+        In r52152 a patch was landed to convert a null QString
+        to an empty WebCore::String in case the prompt was accepted
+        but the default implementation returned the null QString.
+
+        The patch tried to avoid assign to result twice and
+        was not checking the QString if it is null but the default
+        value. This lead to always returning an empty string on
+        successful prompts. Fix it by checking the variable 'x'
+        for isNull.
+
+        The manual test case used didn't cover the case of non
+        empty input, replace it with an automatic test case that
+        should cover all cases.
+
+        * WebCoreSupport/ChromeClientQt.cpp:
+        (WebCore::ChromeClientQt::runJavaScriptPrompt): Fix the bug.
+        * tests/qwebpage/tst_qwebpage.cpp: Add automatic test case
+        (JSPromptPage::JSPromptPage):
+        (JSPromptPage::javaScriptPrompt):
+        (tst_QWebPage::testJSPrompt):
+
+2010-01-25  Janne Koskinen  <janne.p.koskinen@digia.com>
+
+        Reviewed by Simon Hausmann.
+
+        [Qt] Phone backup support for QtWebkit for Symbian devices.
+        https://bugs.webkit.org/show_bug.cgi?id=34077
+
+        * symbian/backup_registration.xml: Added.
+
 2009-11-19  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
 
         Reviewed by Kenneth Rohde Christiansen.
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -281,7 +281,7 @@
 
     // Fix up a quirk in the QInputDialog class. If no input happened the string should be empty
     // but it is null. See https://bugs.webkit.org/show_bug.cgi?id=30914.
-    if (rc && result.isNull())
+    if (rc && x.isNull())
         result = String("");
     else
         result = x;
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -615,7 +615,12 @@
             }
         }
         webPageClient->setInputMethodHint(Qt::ImhHiddenText, isPasswordField);
-#endif
+#ifdef Q_WS_MAEMO_5
+        // Maemo 5 MicroB Browser disables auto-uppercase and predictive text, thus, so do we.
+        webPageClient->setInputMethodHint(Qt::ImhNoAutoUppercase, true);
+        webPageClient->setInputMethodHint(Qt::ImhNoPredictiveText, true);
+#endif // Q_WS_MAEMO_5
+#endif // QT_VERSION check
         webPageClient->setInputMethodEnabled(active);
     }
     emit m_page->microFocusChanged();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/3rdparty/webkit/WebKit/qt/symbian/backup_registration.xml	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration>
+    <system_backup/>
+    <restore requires_reboot = "no"/>
+</backup_registration>
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1,6 +1,7 @@
 /*
     Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
     Copyright (C) 2009 Girish Ramakrishnan <girish@forwardbias.in>
+    Copyright (C) 2010 Holger Hans Peter Freyther
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
@@ -154,6 +155,7 @@
     void screenshot();
 
     void originatingObjectInNetworkRequests();
+    void testJSPrompt();
 
 private:
     QWebView* m_view;
@@ -1781,5 +1783,72 @@
 #endif
 }
 
+/**
+ * Test fixups for https://bugs.webkit.org/show_bug.cgi?id=30914
+ *
+ * From JS we test the following conditions.
+ *
+ *   OK     + QString() => SUCCESS, empty string (but not null)
+ *   OK     + "text"    => SUCCESS, "text"
+ *   CANCEL + QString() => CANCEL, null string
+ *   CANCEL + "text"    => CANCEL, null string
+ */
+class JSPromptPage : public QWebPage {
+    Q_OBJECT
+public:
+    JSPromptPage()
+    {}
+
+    bool javaScriptPrompt(QWebFrame* frame, const QString& msg, const QString& defaultValue, QString* result)
+    {
+        if (msg == QLatin1String("test1")) {
+            *result = QString();
+            return true;
+        } else if (msg == QLatin1String("test2")) {
+            *result = QLatin1String("text");
+            return true;
+        } else if (msg == QLatin1String("test3")) {
+            *result = QString();
+            return false;
+        } else if (msg == QLatin1String("test4")) {
+            *result = QLatin1String("text");
+            return false;
+        }
+
+        qFatal("Unknown msg.");
+        return QWebPage::javaScriptPrompt(frame, msg, defaultValue, result);
+    }
+};
+
+void tst_QWebPage::testJSPrompt()
+{
+    JSPromptPage page;
+    bool res;
+
+    // OK + QString()
+    res = page.mainFrame()->evaluateJavaScript(
+            "var retval = prompt('test1');"
+            "retval=='' && retval.length == 0;").toBool();
+    QVERIFY(res);
+
+    // OK + "text"
+    res = page.mainFrame()->evaluateJavaScript(
+            "var retval = prompt('test2');"
+            "retval=='text' && retval.length == 4;").toBool();
+    QVERIFY(res);
+
+    // Cancel + QString()
+    res = page.mainFrame()->evaluateJavaScript(
+            "var retval = prompt('test3');"
+            "retval===null;").toBool();
+    QVERIFY(res);
+
+    // Cancel + "text"
+    res = page.mainFrame()->evaluateJavaScript(
+            "var retval = prompt('test4');"
+            "retval===null;").toBool();
+    QVERIFY(res);
+}
+
 QTEST_MAIN(tst_QWebPage)
 #include "tst_qwebpage.moc"
--- a/src/corelib/animation/qabstractanimation.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/animation/qabstractanimation.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -299,8 +299,6 @@
         return;
 
     if (QAbstractAnimationPrivate::get(animation)->isPause) {
-        if (animation->duration() == -1)
-            qDebug() << "toto";
         runningPauseAnimations << animation;
     } else
         runningLeafAnimations++;
--- a/src/corelib/codecs/qutfcodec.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/codecs/qutfcodec.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -326,11 +326,11 @@
                 ch.setCell(*chars++);
             }
             if (!headerdone) {
+                headerdone = true;
                 if (endian == DetectEndianness) {
-                    if (ch == QChar::ByteOrderSwapped && endian != BigEndianness) {
+                    if (ch == QChar::ByteOrderSwapped) {
                         endian = LittleEndianness;
-                    } else if (ch == QChar::ByteOrderMark && endian != LittleEndianness) {
-                        // ignore BOM
+                    } else if (ch == QChar::ByteOrderMark) {
                         endian = BigEndianness;
                     } else {
                         if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
@@ -344,7 +344,6 @@
                 } else if (ch != QChar::ByteOrderMark) {
                     *qch++ = ch;
                 }
-                headerdone = true;
             } else {
                 *qch++ = ch;
             }
--- a/src/corelib/corelib.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/corelib.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -36,4 +36,6 @@
     MMP_RULES -= PAGED
     MMP_RULES *= UNPAGED
     LIBS += -lflogger
+    # Timezone server
+    LIBS += -ltzclient
 }
--- a/src/corelib/global/qglobal.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/global/qglobal.h	Fri Mar 12 15:46:37 2010 +0200
@@ -2412,7 +2412,7 @@
 
 #if defined(Q_OS_SYMBIAN)
 
-#ifdef SYMBIAN_GRAPHICS_USE_GCE
+#ifdef SYMBIAN_BUILD_GCE
 //RWsPointerCursor is fixed, so don't use low performance sprites
 #define Q_SYMBIAN_FIXED_POINTER_CURSORS
 #define Q_SYMBIAN_HAS_EXTENDED_BITMAP_TYPE
--- a/src/corelib/global/qnamespace.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/global/qnamespace.h	Fri Mar 12 15:46:37 2010 +0200
@@ -497,6 +497,9 @@
         WA_WState_AcceptedTouchBeginEvent = 122,
         WA_TouchPadAcceptSingleTouchEvents = 123,
 
+        WA_MergeSoftkeys =  124,
+        WA_MergeSoftkeysRecursively =  125,
+
         // Add new attributes before this line
         WA_AttributeCount
     };
--- a/src/corelib/global/qnamespace.qdoc	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/global/qnamespace.qdoc	Fri Mar 12 15:46:37 2010 +0200
@@ -524,11 +524,11 @@
        	   receiver are in the same thread. Same as QueuedConnection,
        	   if the emitter and receiver are in different threads.
 
-    \value DirectConnection  
+    \value DirectConnection
 	   The slot is invoked immediately, when the signal is
        	   emitted.
 
-    \value QueuedConnection  
+    \value QueuedConnection
     	   The slot is invoked when control returns to the event loop
        	   of the receiver's thread. The slot is executed in the
        	   receiver's thread.
@@ -1243,6 +1243,17 @@
     \value WA_TouchPadAcceptSingleTouchEvents Allows touchpad single
     touch events to be sent to the widget.
 
+    \value WA_MergeSoftkeys Allows widget to merge softkeys with parent widget,
+    i.e. widget can set only one softkeys and request softkey implementation
+    to take rest of the softkeys from the parent. Note parents are traversed until
+    WA_MergeSoftkeys is not set. See also Qt::WA_MergeSoftkeysRecursively
+    This attribute currently has effect only on Symbian platforms
+
+    \value WA_MergeSoftkeysRecursively Allows widget to merge softkeys recursively
+    with all parents. If this attribute is set, the widget parents are traversed until
+    window boundary (widget without parent or dialog) is found.
+    This attribute currently has effect only on Symbian platforms
+
     \omitvalue WA_SetLayoutDirection
     \omitvalue WA_InputMethodTransparent
     \omitvalue WA_WState_CompressKeys
--- a/src/corelib/io/qdebug.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/io/qdebug.h	Fri Mar 12 15:46:37 2010 +0200
@@ -83,7 +83,7 @@
             if(stream->message_output) {
                 QT_TRY {
                     qt_message_output(stream->type, stream->buffer.toLocal8Bit().data());
-                } QT_CATCH(std::bad_alloc) { /* We're out of memory - give up. */ }
+                } QT_CATCH(std::bad_alloc&) { /* We're out of memory - give up. */ }
             }
             delete stream;
         }
--- a/src/corelib/io/qfsfileengine_unix.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/io/qfsfileengine_unix.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -98,7 +98,7 @@
             if (!fileName.isEmpty()
                 && QT_STAT(QFile::encodeName(fileName), &statBuf) == 0
                 && (statBuf.st_mode & S_IFMT) == S_IFREG) {
-                mode += "+";
+                mode += '+';
             } else {
                 mode = "wb+";
             }
--- a/src/corelib/io/qprocess_symbian.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/io/qprocess_symbian.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -919,34 +919,41 @@
     Q_Q(QProcess);
     QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished(%d)", msecs);
 
-    TRequestStatus timerStatus = 0;
-    TRequestStatus logonStatus = 0;
+    TRequestStatus timerStatus = KErrNone;
+    TRequestStatus logonStatus = KErrNone;
     bool timeoutOccurred = false;
 
     // Logon to process to observe its death
     if (qt_rprocess_running(symbianProcess)) {
         symbianProcess->Logon(logonStatus);
 
-        // Create timer
-        RTimer timer;
-        timer.CreateLocal();
-        TTimeIntervalMicroSeconds32 interval(msecs*1000);
-        timer.After(timerStatus, interval);
-
-        QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished() - Waiting...");
-        User::WaitForRequest(logonStatus, timerStatus);
-        QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished() - Wait completed");
+        if (msecs < 0) {
+            // If timeout is negative, there is no timeout
+            QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished() - Waiting (just logon)...");
+            User::WaitForRequest(logonStatus);
+            QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished() - Wait completed");
+        } else {
+            // Create timer
+            RTimer timer;
+            timer.CreateLocal();
+            TTimeIntervalMicroSeconds32 interval(msecs*1000);
+            timer.After(timerStatus, interval);
 
-        if (timerStatus == KErrNone)
-            timeoutOccurred = true;
+            QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished() - Waiting (logon + timer)...");
+            User::WaitForRequest(logonStatus, timerStatus);
+            QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished() - Wait completed");
+
+            if (timerStatus == KErrNone)
+                timeoutOccurred = true;
 
-        timer.Cancel();
-        timer.Close();
+            timer.Cancel();
+            timer.Close();
 
-        symbianProcess->LogonCancel(logonStatus);
+            symbianProcess->LogonCancel(logonStatus);
 
-        // Eat cancel request completion so that it won't mess up main thread scheduling later
-        User::WaitForRequest(logonStatus, timerStatus);
+            // Eat cancel request completion so that it won't mess up main thread scheduling later
+            User::WaitForRequest(logonStatus, timerStatus);
+        }
     } else {
         QPROCESS_DEBUG_PRINT("QProcessPrivate::waitForFinished(), qt_rprocess_running returned false");
     }
--- a/src/corelib/io/qprocess_unix.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/io/qprocess_unix.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -783,7 +783,7 @@
 
     // did we read an error message?
     if (i > 0)
-        q_func()->setErrorString(QString::fromUtf16(buf, i / sizeof(QChar)));
+        q_func()->setErrorString(QString((const QChar *)buf, i / sizeof(QChar)));
 
     return i <= 0;
 }
--- a/src/corelib/io/qsettings.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/io/qsettings.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1091,30 +1091,23 @@
     return int((uint(format) << 1) | uint(scope == QSettings::SystemScope));
 }
 
-static QString getPath(QSettings::Format format, QSettings::Scope scope)
+static void initDefaultPaths(QMutexLocker *locker)
 {
-    Q_ASSERT((int)QSettings::NativeFormat == 0);
-    Q_ASSERT((int)QSettings::IniFormat == 1);
-
+    PathHash *pathHash = pathHashFunc();
     QString homePath = QDir::homePath();
     QString systemPath;
 
-    QMutexLocker locker(globalMutex());
-    PathHash *pathHash = pathHashFunc();
-    bool loadSystemPath = pathHash->isEmpty();
-    locker.unlock();
-
-    if (loadSystemPath) {
-        /*
-           QLibraryInfo::location() uses QSettings, so in order to
-           avoid a dead-lock, we can't hold the global mutex while
-           calling it.
-       */
-        systemPath = QLibraryInfo::location(QLibraryInfo::SettingsPath);
-        systemPath += QLatin1Char('/');
-    }
-
-    locker.relock();
+    locker->unlock();
+	
+    /*
+       QLibraryInfo::location() uses QSettings, so in order to
+       avoid a dead-lock, we can't hold the global mutex while
+       calling it.
+    */
+    systemPath = QLibraryInfo::location(QLibraryInfo::SettingsPath);
+    systemPath += QLatin1Char('/');
+
+    locker->relock();
     if (pathHash->isEmpty()) {
         /*
            Lazy initialization of pathHash. We initialize the
@@ -1155,6 +1148,17 @@
 #endif
 #endif
     }
+}
+
+static QString getPath(QSettings::Format format, QSettings::Scope scope)
+{
+    Q_ASSERT((int)QSettings::NativeFormat == 0);
+    Q_ASSERT((int)QSettings::IniFormat == 1);
+
+    QMutexLocker locker(globalMutex());
+    PathHash *pathHash = pathHashFunc();
+    if (pathHash->isEmpty())
+        initDefaultPaths(&locker);
 
     QString result = pathHash->value(pathHashKey(format, scope));
     if (!result.isEmpty())
@@ -3455,6 +3459,8 @@
 {
     QMutexLocker locker(globalMutex());
     PathHash *pathHash = pathHashFunc();
+    if (pathHash->isEmpty())
+        initDefaultPaths(&locker);
     pathHash->insert(pathHashKey(format, scope), path + QDir::separator());
 }
 
--- a/src/corelib/io/qurl.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/io/qurl.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -3241,8 +3241,11 @@
     while (1) {
         int idx = nextDotDelimiter(domain, lastIdx);
         int labelLength = idx - lastIdx;
-        if (labelLength == 0)
+        if (labelLength == 0) {
+            if (idx == domain.length())
+                break;
             return QString(); // two delimiters in a row -- empty label not allowed
+        }
 
         // RFC 3490 says, about the ToASCII operation:
         //   3. If the UseSTD3ASCIIRules flag is set, then perform these checks:
@@ -5932,7 +5935,7 @@
 */
 bool QUrl::isDetached() const
 {
-    return d && d->ref == 1;
+    return !d || d->ref == 1;
 }
 
 
--- a/src/corelib/kernel/qabstractitemmodel.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/kernel/qabstractitemmodel.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1006,6 +1006,9 @@
     Returns the child of the model index that is stored in the given \a row and
     \a column.
 
+    \note This function does not work for an invalid model index which is often
+    used as the root index.
+
     \sa parent(), sibling()
 */
 
--- a/src/corelib/kernel/qcore_symbian_p.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/kernel/qcore_symbian_p.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -71,7 +71,7 @@
 #ifdef QT_NO_UNICODE
     return QString::fromLocal8Bit(aDescriptor.Ptr(), aDescriptor.Length());
 #else
-    return QString::fromUtf16(aDescriptor.Ptr(), aDescriptor.Length());
+    return QString(reinterpret_cast<const QChar *>(aDescriptor.Ptr()), aDescriptor.Length());
 #endif
 }
 
--- a/src/corelib/kernel/qcoreapplication.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/kernel/qcoreapplication.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -2219,7 +2219,8 @@
             TFindFile finder(fs);
             TInt err = finder.FindByDir(tempPathPtr, tempPathPtr);
             while (err == KErrNone) {
-                QString foundDir = QString::fromUtf16(finder.File().Ptr(), finder.File().Length());
+                QString foundDir(reinterpret_cast<const QChar *>(finder.File().Ptr()),
+                                 finder.File().Length());
                 foundDir = QDir(foundDir).canonicalPath();
                 if (!app_libpaths->contains(foundDir))
                     app_libpaths->append(foundDir);
@@ -2267,6 +2268,10 @@
     \a paths. All existing paths will be deleted and the path list
     will consist of the paths given in \a paths.
 
+    In Symbian this function is only useful for setting paths for
+    finding Qt extension plugin stubs, since the OS can only
+    load libraries from the \c{/sys/bin} directory.
+
     \sa libraryPaths(), addLibraryPath(), removeLibraryPath(), QLibrary
  */
 void QCoreApplication::setLibraryPaths(const QStringList &paths)
@@ -2290,6 +2295,10 @@
   is \c INSTALL/plugins, where \c INSTALL is the directory where Qt was
   installed.
 
+  In Symbian this function is only useful for adding paths for
+  finding Qt extension plugin stubs, since the OS can only
+  load libraries from the \c{/sys/bin} directory.
+
   \sa removeLibraryPath(), libraryPaths(), setLibraryPaths()
  */
 void QCoreApplication::addLibraryPath(const QString &path)
--- a/src/corelib/kernel/qcoreevent.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/kernel/qcoreevent.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -133,10 +133,10 @@
     \value GrabKeyboard                     Item gains keyboard grab (QGraphicsItem only).
     \value GrabMouse                        Item gains mouse grab (QGraphicsItem only).
     \value GraphicsSceneContextMenu         Context popup menu over a graphics scene (QGraphicsSceneContextMenuEvent).
-    \value GraphicsSceneDragEnter           The cursor enters a graphics scene during a drag and drop operation.
-    \value GraphicsSceneDragLeave           The cursor leaves a graphics scene during a drag and drop operation.
-    \value GraphicsSceneDragMove            A drag and drop operation is in progress over a scene.
-    \value GraphicsSceneDrop                A drag and drop operation is completed over a scene.
+    \value GraphicsSceneDragEnter           The cursor enters a graphics scene during a drag and drop operation (QGraphicsSceneDragDropEvent).
+    \value GraphicsSceneDragLeave           The cursor leaves a graphics scene during a drag and drop operation (QGraphicsSceneDragDropEvent).
+    \value GraphicsSceneDragMove            A drag and drop operation is in progress over a scene (QGraphicsSceneDragDropEvent).
+    \value GraphicsSceneDrop                A drag and drop operation is completed over a scene (QGraphicsSceneDragDropEvent).
     \value GraphicsSceneHelp                The user requests help for a graphics scene (QHelpEvent).
     \value GraphicsSceneHoverEnter          The mouse cursor enters a hover item in a graphics scene (QGraphicsSceneHoverEvent).
     \value GraphicsSceneHoverLeave          The mouse cursor leaves a hover item in a graphics scene (QGraphicsSceneHoverEvent).
--- a/src/corelib/kernel/qtranslator.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/kernel/qtranslator.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -633,7 +633,7 @@
 end:
     if (!tn)
         return QString();
-    QString str = QString::fromUtf16((const ushort *)tn, tn_length/2);
+    QString str = QString((const QChar *)tn, tn_length/2);
     if (QSysInfo::ByteOrder == QSysInfo::LittleEndian) {
         for (int i = 0; i < str.length(); ++i)
             str[i] = QChar((str.at(i).unicode() >> 8) + ((str.at(i).unicode() << 8) & 0xff00));
--- a/src/corelib/plugin/qlibrary.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/plugin/qlibrary.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -539,6 +539,7 @@
     \row \i AIX  \i \c .a
     \row \i HP-UX       \i \c .sl, \c .so (HP-UXi)
     \row \i Mac OS X    \i \c .dylib, \c .bundle, \c .so
+    \row \i Symbian     \i \c .dll
     \endtable
 
     Trailing versioning numbers on Unix are ignored.
--- a/src/corelib/thread/qthread_win.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/thread/qthread_win.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -40,7 +40,9 @@
 ****************************************************************************/
 
 //#define WINVER 0x0500
+#if _WIN32_WINNT < 0x0400
 #define _WIN32_WINNT 0x0400
+#endif
 
 
 #include "qthread.h"
--- a/src/corelib/tools/qbytearray.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/tools/qbytearray.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -561,6 +561,7 @@
             d->ref = 1;
             d->alloc = d->size = len;
             d->data = d->array;
+            d->array[len] = 0;
 
             return QByteArray(d.take(), 0, 0);
 
--- a/src/corelib/tools/qdatetime.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/tools/qdatetime.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -75,6 +75,7 @@
 
 #if defined(Q_OS_SYMBIAN)
 #include <e32std.h>
+#include <tz.h>
 #endif
 
 QT_BEGIN_NAMESPACE
@@ -3721,23 +3722,32 @@
 #elif defined(Q_OS_SYMBIAN)
     // months and days are zero index based
     _LIT(KUnixEpoch, "19700000:000000.000000");
-    TTimeIntervalSeconds utcOffset = User::UTCOffset();
     TTimeIntervalSeconds tTimeIntervalSecsSince1Jan1970UTC(secsSince1Jan1970UTC);
     TTime epochTTime;
     TInt err = epochTTime.Set(KUnixEpoch);
     tm res;
     if(err == KErrNone) {
         TTime utcTTime = epochTTime + tTimeIntervalSecsSince1Jan1970UTC;
-        utcTTime = utcTTime + utcOffset;
-        TDateTime utcDateTime = utcTTime.DateTime();
-        res.tm_sec = utcDateTime.Second();
-        res.tm_min = utcDateTime.Minute();
-        res.tm_hour = utcDateTime.Hour();
-        res.tm_mday = utcDateTime.Day() + 1; // non-zero based index for tm struct
-        res.tm_mon = utcDateTime.Month();
-        res.tm_year = utcDateTime.Year() - 1900;
-        res.tm_isdst = 0;
-        brokenDown = &res;
+        TRAP(err,
+            RTz tz;
+            User::LeaveIfError(tz.Connect());
+            CleanupClosePushL(tz);
+            res.tm_isdst = tz.IsDaylightSavingOnL(*tz.GetTimeZoneIdL(),utcTTime);
+            User::LeaveIfError(tz.ConvertToLocalTime(utcTTime));
+            CleanupStack::PopAndDestroy(&tz));
+        if (KErrNone == err) {
+            TDateTime localDateTime = utcTTime.DateTime();
+            res.tm_sec = localDateTime.Second();
+            res.tm_min = localDateTime.Minute();
+            res.tm_hour = localDateTime.Hour();
+            res.tm_mday = localDateTime.Day() + 1; // non-zero based index for tm struct
+            res.tm_mon = localDateTime.Month();
+            res.tm_year = localDateTime.Year() - 1900;
+            // Symbian's timezone server doesn't know how to handle DST before year 1997
+            if (res.tm_year < 97)
+                res.tm_isdst = -1;
+            brokenDown = &res;
+        }
     }
 #elif !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS)
     // use the reentrant version of localtime() where available
@@ -3812,23 +3822,27 @@
 #elif defined(Q_OS_SYMBIAN)
     // months and days are zero index based
     _LIT(KUnixEpoch, "19700000:000000.000000");
-    TTimeIntervalSeconds utcOffset = TTimeIntervalSeconds(0 - User::UTCOffset().Int());
     TTimeIntervalSeconds tTimeIntervalSecsSince1Jan1970UTC(secsSince1Jan1970UTC);
     TTime epochTTime;
     TInt err = epochTTime.Set(KUnixEpoch);
     tm res;
     if(err == KErrNone) {
-        TTime utcTTime = epochTTime + tTimeIntervalSecsSince1Jan1970UTC;
-        utcTTime = utcTTime + utcOffset;
-        TDateTime utcDateTime = utcTTime.DateTime();
-        res.tm_sec = utcDateTime.Second();
-        res.tm_min = utcDateTime.Minute();
-        res.tm_hour = utcDateTime.Hour();
-        res.tm_mday = utcDateTime.Day() + 1; // non-zero based index for tm struct
-        res.tm_mon = utcDateTime.Month();
-        res.tm_year = utcDateTime.Year() - 1900;
-        res.tm_isdst = (int)isdst;
-        brokenDown = &res;
+        TTime localTTime = epochTTime + tTimeIntervalSecsSince1Jan1970UTC;
+        RTz tz;
+        if (KErrNone == tz.Connect()) {
+            if (KErrNone == tz.ConvertToUniversalTime(localTTime)) {
+                TDateTime utcDateTime = localTTime.DateTime();
+                res.tm_sec = utcDateTime.Second();
+                res.tm_min = utcDateTime.Minute();
+                res.tm_hour = utcDateTime.Hour();
+                res.tm_mday = utcDateTime.Day() + 1; // non-zero based index for tm struct
+                res.tm_mon = utcDateTime.Month();
+                res.tm_year = utcDateTime.Year() - 1900;
+                res.tm_isdst = (int)isdst;
+                brokenDown = &res;
+            }
+        tz.Close();
+        }
     }
 #elif !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS)
     // use the reentrant version of gmtime() where available
--- a/src/corelib/tools/qeasingcurve.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/tools/qeasingcurve.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -125,7 +125,7 @@
     \value OutCubic     \inlineimage qeasingcurve-outcubic.png
                         \br
                         Easing curve for a cubic (t^3) function:
-                        decelerating from zero velocity.
+                        decelerating to zero velocity.
     \value InOutCubic   \inlineimage qeasingcurve-inoutcubic.png
                         \br
                         Easing curve for a cubic (t^3) function:
@@ -141,7 +141,7 @@
     \value OutQuart     \inlineimage qeasingcurve-outquart.png
                         \br
                         Easing curve for a cubic (t^4) function:
-                        decelerating from zero velocity.
+                        decelerating to zero velocity.
     \value InOutQuart   \inlineimage qeasingcurve-inoutquart.png
                         \br
                         Easing curve for a cubic (t^4) function:
@@ -157,7 +157,7 @@
     \value OutQuint     \inlineimage qeasingcurve-outquint.png
                         \br
                         Easing curve for a cubic (t^5) function:
-                        decelerating from zero velocity.
+                        decelerating to zero velocity.
     \value InOutQuint   \inlineimage qeasingcurve-inoutquint.png
                         \br
                         Easing curve for a cubic (t^5) function:
--- a/src/corelib/tools/qhash.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/tools/qhash.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -68,8 +68,8 @@
 
     while (n--) {
         h = (h << 4) + *p++;
-        if ((g = (h & 0xf0000000)) != 0)
-            h ^= g >> 23;
+        g = h & 0xf0000000;
+        h ^= g >> 23;
         h &= ~g;
     }
     return h;
@@ -82,8 +82,8 @@
 
     while (n--) {
         h = (h << 4) + (*p++).unicode();
-        if ((g = (h & 0xf0000000)) != 0)
-            h ^= g >> 23;
+        g = h & 0xf0000000;
+        h ^= g >> 23;
         h &= ~g;
     }
     return h;
--- a/src/corelib/tools/qlist.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/tools/qlist.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -208,7 +208,7 @@
     int n = l.d->end - l.d->begin;
     if (n) {
         if (e + n > d->alloc)
-            realloc(grow(e + l.d->end - l.d->begin));
+            realloc(grow(e + n));
         d->end += n;
     }
     return d->array + e;
--- a/src/corelib/tools/qsharedpointer.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/tools/qsharedpointer.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -130,7 +130,7 @@
     multiple- or virtual-inheritance (that is, in cases where two different
     pointer addresses can refer to the same object). In that case, if a
     pointer is cast to a different type and its value changes,
-    QSharedPointer's pointer tracking mechanism mail fail to detect that the
+    QSharedPointer's pointer tracking mechanism may fail to detect that the
     object being tracked is the same.
 
     \omit
--- a/src/corelib/tools/qstring.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/corelib/tools/qstring.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -885,7 +885,7 @@
 QString QString::fromWCharArray(const wchar_t *string, int size)
 {
     if (sizeof(wchar_t) == sizeof(QChar)) {
-        return fromUtf16((ushort *)string, size);
+        return fromUtf16((const ushort *)string, size);
     } else {
         return fromUcs4((uint *)string, size);
     }
@@ -3857,6 +3857,12 @@
     If \a size is -1 (default), \a unicode must be terminated
     with a 0.
 
+    This function checks for a Byte Order Mark (BOM). If it is missing,
+    host byte order is assumed.
+
+    This function is comparatively slow.
+    Use QString(const ushort *, int) if possible.
+
     QString makes a deep copy of the Unicode data.
 
     \sa utf16(), setUtf16()
@@ -3923,6 +3929,9 @@
     If \a unicode is 0, nothing is copied, but the string is still
     resized to \a size.
 
+    Note that unlike fromUtf16(), this function does not consider BOMs and
+    possibly differing byte ordering.
+
     \sa utf16(), setUnicode()
 */
 
@@ -4669,6 +4678,8 @@
     Returns the QString as a '\\0\'-terminated array of unsigned
     shorts. The result remains valid until the string is modified.
 
+    The returned string is in host byte order.
+
     \sa unicode()
 */
 
@@ -7740,7 +7751,7 @@
         return QString();
     if (m_size && m_position == 0 && m_size == m_string->size())
         return *m_string;
-    return QString::fromUtf16(reinterpret_cast<const ushort*>(m_string->unicode() + m_position), m_size);
+    return QString(m_string->unicode() + m_position, m_size);
 }
 
 
--- a/src/dbus/qdbusargument.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/dbus/qdbusargument.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -535,7 +535,6 @@
 
 /*!
     \internal
-    Returns the type signature of the D-Bus type this QDBusArgument
     \since 4.5
 
     Appends the variant \a v.
--- a/src/dbus/qdbusintegrator.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/dbus/qdbusintegrator.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1660,9 +1660,6 @@
     }
 
     QString busService = QLatin1String(DBUS_SERVICE_DBUS);
-    WatchedServicesHash::mapped_type &bus = watchedServices[busService];
-    bus.refcount = 1;
-    bus.owner = getNameOwnerNoCache(busService);
     connectSignal(busService, QString(), QString(), QLatin1String("NameAcquired"), QStringList(), QString(),
                   this, SLOT(registerService(QString)));
     connectSignal(busService, QString(), QString(), QLatin1String("NameLost"), QStringList(), QString(),
@@ -2004,7 +2001,8 @@
             entry.path == hook.path &&
             entry.signature == hook.signature &&
             entry.obj == hook.obj &&
-            entry.midx == hook.midx) {
+            entry.midx == hook.midx &&
+            entry.argumentMatch == hook.argumentMatch) {
             // no need to compare the parameters if it's the same slot
             return true;        // already there
         }
@@ -2046,10 +2044,7 @@
             // Do we need to watch for this name?
             if (shouldWatchService(hook.service)) {
                 WatchedServicesHash::mapped_type &data = watchedServices[hook.service];
-                if (data.refcount) {
-                    // already watching
-                    ++data.refcount;
-                } else {
+                if (++data.refcount == 1) {
                     // we need to watch for this service changing
                     QString dbusServerService = QLatin1String(DBUS_SERVICE_DBUS);
                     connectSignal(dbusServerService, QString(), QLatin1String(DBUS_INTERFACE_DBUS),
@@ -2089,7 +2084,8 @@
             entry.path == hook.path &&
             entry.signature == hook.signature &&
             entry.obj == hook.obj &&
-            entry.midx == hook.midx) {
+            entry.midx == hook.midx &&
+            entry.argumentMatch == hook.argumentMatch) {
             // no need to compare the parameters if it's the same slot
             disconnectSignal(it);
             return true;        // it was there
@@ -2105,19 +2101,6 @@
 {
     const SignalHook &hook = it.value();
 
-    WatchedServicesHash::Iterator sit = watchedServices.find(hook.service);
-    if (sit != watchedServices.end()) {
-        if (sit.value().refcount == 1) {
-            watchedServices.erase(sit);
-            QString dbusServerService = QLatin1String(DBUS_SERVICE_DBUS);
-            disconnectSignal(dbusServerService, QString(), QLatin1String(DBUS_INTERFACE_DBUS),
-                          QLatin1String("NameOwnerChanged"), QStringList() << hook.service, QString(),
-                          this, SLOT(_q_serviceOwnerChanged(QString,QString,QString)));
-        } else {
-            --sit.value().refcount;
-        }
-    }
-
     bool erase = false;
     MatchRefCountHash::iterator i = matchRefCounts.find(hook.matchRule);
     if (i == matchRefCounts.end()) {
@@ -2136,6 +2119,20 @@
     if (connection && erase) {
         qDBusDebug("Removing rule: %s", hook.matchRule.constData());
         q_dbus_bus_remove_match(connection, hook.matchRule, NULL);
+
+        // Successfully disconnected the signal
+        // Were we watching for this name?
+        WatchedServicesHash::Iterator sit = watchedServices.find(hook.service);
+        if (sit != watchedServices.end()) {
+            if (--sit.value().refcount == 0) {
+                watchedServices.erase(sit);
+                QString dbusServerService = QLatin1String(DBUS_SERVICE_DBUS);
+                disconnectSignal(dbusServerService, QString(), QLatin1String(DBUS_INTERFACE_DBUS),
+                              QLatin1String("NameOwnerChanged"), QStringList() << hook.service, QString(),
+                              this, SLOT(_q_serviceOwnerChanged(QString,QString,QString)));
+            }
+        }
+
     }
 
     return signalHooks.erase(it);
--- a/src/dbus/qdbusmarshaller.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/dbus/qdbusmarshaller.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -40,6 +40,7 @@
 ****************************************************************************/
 
 #include "qdbusargument_p.h"
+#include "qdbusmetatype_p.h"
 #include "qdbusutil_p.h"
 
 QT_BEGIN_NAMESPACE
@@ -167,7 +168,7 @@
 
     QByteArray tmpSignature;
     const char *signature = 0;
-    if (int(id) == qMetaTypeId<QDBusArgument>()) {
+    if (int(id) == QDBusMetaTypeId::argument) {
         // take the signature from the QDBusArgument object we're marshalling
         tmpSignature =
             qvariant_cast<QDBusArgument>(value).currentSignature().toLatin1();
@@ -353,7 +354,7 @@
     }
 
     // intercept QDBusArgument parameters here
-    if (id == qMetaTypeId<QDBusArgument>()) {
+    if (id == QDBusMetaTypeId::argument) {
         QDBusArgument dbusargument = qvariant_cast<QDBusArgument>(arg);
         QDBusArgumentPrivate *d = QDBusArgumentPrivate::d(dbusargument);
         if (!d->message)
--- a/src/gui/dialogs/qdialog.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/dialogs/qdialog.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -265,6 +265,14 @@
     if (!qt_wince_is_smartphone())
         setWindowFlags(windowFlags() | Qt::WindowOkButtonHint | QFlag(qt_wince_is_mobile() ? 0 : Qt::WindowCancelButtonHint));
 #endif
+
+#ifdef Q_WS_S60
+    if (S60->avkonComponentsSupportTransparency) {
+        bool noSystemBackground = testAttribute(Qt::WA_NoSystemBackground);
+        setAttribute(Qt::WA_TranslucentBackground); // also sets WA_NoSystemBackground
+        setAttribute(Qt::WA_NoSystemBackground, noSystemBackground); // restore system background attribute
+    }
+#endif
 }
 
 #ifdef QT3_SUPPORT
@@ -294,6 +302,14 @@
     if (!qt_wince_is_smartphone())
         setWindowFlags(windowFlags() | Qt::WindowOkButtonHint | QFlag(qt_wince_is_mobile() ? 0 : Qt::WindowCancelButtonHint));
 #endif
+
+#ifdef Q_WS_S60
+    if (S60->avkonComponentsSupportTransparency) {
+        bool noSystemBackground = testAttribute(Qt::WA_NoSystemBackground);
+        setAttribute(Qt::WA_TranslucentBackground); // also sets WA_NoSystemBackground
+        setAttribute(Qt::WA_NoSystemBackground, noSystemBackground); // restore system background attribute
+    }
+#endif
 }
 
 /*!
--- a/src/gui/dialogs/qfiledialog.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/dialogs/qfiledialog.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -229,11 +229,10 @@
     \value ReadOnly Indicates that the model is readonly.
 
     \value HideNameFilterDetails Indicates if the is hidden or not.
-    This value is obsolete and does nothing since Qt 4.5:
 
     \value DontUseSheet In previous versions of Qt, the static
     functions would create a sheet by default if the static function
-    was given a parent. This is no longer supported in Qt 4.5, The
+    was given a parent. This is no longer supported and does nothing in Qt 4.5, The
     static functions will always be an application modal dialog. If
     you want to use sheets, use QFileDialog::open() instead.
 
--- a/src/gui/dialogs/qprintdialog.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/dialogs/qprintdialog.h	Fri Mar 12 15:46:37 2010 +0200
@@ -97,9 +97,9 @@
     void done(int result);
 
 #if defined (Q_OS_UNIX) && defined (QT3_SUPPORT)
-    void setPrinter(QPrinter *, bool = false);
-    QPrinter *printer() const;
-    void addButton(QPushButton *button);
+    QT3_SUPPORT void setPrinter(QPrinter *, bool = false);
+    QT3_SUPPORT QPrinter *printer() const;
+    QT3_SUPPORT void addButton(QPushButton *button);
 #endif
 
     void setOption(PrintDialogOption option, bool on = true);
--- a/src/gui/dialogs/qprintpreviewdialog.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/dialogs/qprintpreviewdialog.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -207,6 +207,9 @@
     QActionGroup *printerGroup;
     QAction *printAction;
     QAction *pageSetupAction;
+#if defined(Q_WS_MAC) && !defined(QT_MAC_USE_COCOA)
+    QAction *closeAction;
+#endif
 
     QPointer<QObject> receiverToDisconnectOnClose;
     QByteArray memberToDisconnectOnClose;
@@ -287,6 +290,9 @@
     toolbar->addSeparator();
     toolbar->addAction(pageSetupAction);
     toolbar->addAction(printAction);
+#if defined(Q_WS_MAC) && !defined(QT_MAC_USE_COCOA)
+    toolbar->addAction(closeAction);
+#endif
 
     // Cannot use the actions' triggered signal here, since it doesn't autorepeat
     QToolButton *zoomInButton = static_cast<QToolButton *>(toolbar->widgetForAction(zoomInAction));
@@ -406,6 +412,10 @@
     qt_setupActionIcon(pageSetupAction, QLatin1String("page-setup"));
     QObject::connect(printAction, SIGNAL(triggered(bool)), q, SLOT(_q_print()));
     QObject::connect(pageSetupAction, SIGNAL(triggered(bool)), q, SLOT(_q_pageSetup()));
+#if defined(Q_WS_MAC) && !defined(QT_MAC_USE_COCOA)
+    closeAction = printerGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Close"));
+    QObject::connect(closeAction, SIGNAL(triggered(bool)), q, SLOT(reject()));
+#endif
 
     // Initial state:
     fitPageAction->setChecked(true);
--- a/src/gui/effects/qgraphicseffect.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/effects/qgraphicseffect.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -383,9 +383,9 @@
 {
     if (m_cachedMode != QGraphicsEffect::PadToEffectiveBoundingRect
         && (reason == EffectRectChanged
-            || reason == TransformChanged
-               && m_cachedSystem == Qt::LogicalCoordinates))
+            || (reason == TransformChanged && m_cachedSystem == Qt::LogicalCoordinates))) {
         return;
+    }
 
     QPixmapCache::remove(m_cacheKey);
 }
--- a/src/gui/graphicsview/qgraphicsitem.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicsitem.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -268,6 +268,17 @@
 */
 
 /*!
+    \variable QGraphicsItem::Type
+
+    The type value returned by the virtual type() function in standard
+    graphics item classes in Qt. All such standard graphics item
+    classes in Qt are associated with a unique value for Type,
+    e.g. the value returned by QGraphicsPathItem::type() is 2.
+
+    \snippet doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp 18
+*/
+
+/*!
     \variable QGraphicsItem::UserType
 
     The lowest permitted type value for custom items (subclasses
@@ -276,6 +287,8 @@
     and declaring a Type enum value. Example:
 
     \snippet doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp 1
+
+    \note UserType = 65536
 */
 
 /*!
@@ -798,8 +811,36 @@
             return;
     }
 
-    foreach (QGraphicsItem *child, children)
-        child->d_ptr->updateAncestorFlag(childFlag, flag, enabled, false);
+    for (int i = 0; i < children.size(); ++i)
+        children.at(i)->d_ptr->updateAncestorFlag(childFlag, flag, enabled, false);
+}
+
+void QGraphicsItemPrivate::updateAncestorFlags()
+{
+    int flags = 0;
+    if (parent) {
+        // Inherit the parent's ancestor flags.
+        QGraphicsItemPrivate *pd = parent->d_ptr.data();
+        flags = pd->ancestorFlags;
+
+        // Add in flags from the parent.
+        if (pd->filtersDescendantEvents)
+            flags |= AncestorFiltersChildEvents;
+        if (pd->handlesChildEvents)
+            flags |= AncestorHandlesChildEvents;
+        if (pd->flags & QGraphicsItem::ItemClipsChildrenToShape)
+            flags |= AncestorClipsChildren;
+        if (pd->flags & QGraphicsItem::ItemIgnoresTransformations)
+            flags |= AncestorIgnoresTransformations;
+    }
+
+    if (ancestorFlags == flags)
+        return; // No change; stop propagation.
+    ancestorFlags = flags;
+
+    // Propagate to children recursively.
+    for (int i = 0; i < children.size(); ++i)
+        children.at(i)->d_ptr->updateAncestorFlags();
 }
 
 /*!
@@ -984,25 +1025,17 @@
     prepareGeometryChange) if the item is in its destructor, i.e.
     inDestructor is 1.
 */
-void QGraphicsItemPrivate::setParentItemHelper(QGraphicsItem *newParent)
+void QGraphicsItemPrivate::setParentItemHelper(QGraphicsItem *newParent, const QVariant *newParentVariant,
+                                               const QVariant *thisPointerVariant)
 {
     Q_Q(QGraphicsItem);
-    if (newParent == q) {
-        qWarning("QGraphicsItem::setParentItem: cannot assign %p as a parent of itself", this);
-        return;
-    }
-    if (newParent == parent)
-        return;
-
-    const QVariant newParentVariant(q->itemChange(QGraphicsItem::ItemParentChange,
-                                                  qVariantFromValue<QGraphicsItem *>(newParent)));
-    newParent = qVariantValue<QGraphicsItem *>(newParentVariant);
     if (newParent == parent)
         return;
 
     if (scene) {
         // Deliver the change to the index
-        scene->d_func()->index->itemChange(q, QGraphicsItem::ItemParentChange, newParentVariant);
+        if (scene->d_func()->indexMethod != QGraphicsScene::NoIndex)
+            scene->d_func()->index->itemChange(q, QGraphicsItem::ItemParentChange, newParent);
 
         // Disable scene pos notifications for old ancestors
         if (scenePosDescendants || (flags & QGraphicsItem::ItemSendsScenePositionChanges))
@@ -1020,11 +1053,11 @@
     if (!inDestructor)
         q_ptr->prepareGeometryChange();
 
-    const QVariant thisPointerVariant(qVariantFromValue<QGraphicsItem *>(q));
     if (parent) {
         // Remove from current parent
         parent->d_ptr->removeChild(q);
-        parent->itemChange(QGraphicsItem::ItemChildRemovedChange, thisPointerVariant);
+        if (thisPointerVariant)
+            parent->itemChange(QGraphicsItem::ItemChildRemovedChange, *thisPointerVariant);
     }
 
     // Update toplevelitem list. If this item is being deleted, its parent
@@ -1042,7 +1075,7 @@
     QGraphicsItem *p = parent;
     QGraphicsItem *parentFocusScopeItem = 0;
     while (p) {
-        if (p->flags() & QGraphicsItem::ItemIsFocusScope) {
+        if (p->d_ptr->flags & QGraphicsItem::ItemIsFocusScope) {
             // If this item's focus scope's focus scope item points
             // to this item or a descendent, then clear it.
             QGraphicsItem *fsi = p->d_ptr->focusScopeItem;
@@ -1055,6 +1088,10 @@
         p = p->d_ptr->parent;
     }
 
+    // Update graphics effect optimization flag
+    if (newParent && (graphicsEffect || mayHaveChildWithGraphicsEffect))
+        newParent->d_ptr->updateChildWithGraphicsEffectFlagRecursively();
+
     // Update focus scope item ptr in new scope.
     QGraphicsItem *newFocusScopeItem = subFocusItem ? subFocusItem : parentFocusScopeItem;
     if (newFocusScopeItem && newParent) {
@@ -1063,11 +1100,11 @@
             QGraphicsItem *ancestorScope = 0;
             QGraphicsItem *p = subFocusItem->d_ptr->parent;
             while (p) {
-                if (p->flags() & QGraphicsItem::ItemIsFocusScope)
+                if (p->d_ptr->flags & QGraphicsItem::ItemIsFocusScope)
                     ancestorScope = p;
-                if (p->isPanel())
+                if (p->d_ptr->flags & QGraphicsItem::ItemIsPanel)
                     break;
-                p = p->parentItem();
+                p = p->d_ptr->parent;
             }
             if (ancestorScope)
                 newFocusScopeItem = ancestorScope;
@@ -1075,7 +1112,7 @@
 
         QGraphicsItem *p = newParent;
         while (p) {
-            if (p->flags() & QGraphicsItem::ItemIsFocusScope) {
+            if (p->d_ptr->flags & QGraphicsItem::ItemIsFocusScope) {
                 p->d_ptr->focusScopeItem = newFocusScopeItem;
                 // Ensure the new item is no longer the subFocusItem. The
                 // only way to set focus on a child of a focus scope is
@@ -1089,52 +1126,45 @@
     }
 
     if ((parent = newParent)) {
-        bool implicitUpdate = false;
         if (parent->d_func()->scene && parent->d_func()->scene != scene) {
             // Move this item to its new parent's scene
             parent->d_func()->scene->addItem(q);
-            implicitUpdate = true;
         } else if (!parent->d_func()->scene && scene) {
             // Remove this item from its former scene
             scene->removeItem(q);
         }
 
         parent->d_ptr->addChild(q);
-        parent->itemChange(QGraphicsItem::ItemChildAddedChange, thisPointerVariant);
+        if (thisPointerVariant)
+            parent->itemChange(QGraphicsItem::ItemChildAddedChange, *thisPointerVariant);
         if (scene) {
-            if (!implicitUpdate)
-                scene->d_func()->markDirty(q_ptr);
-
             // Re-enable scene pos notifications for new ancestors
             if (scenePosDescendants || (flags & QGraphicsItem::ItemSendsScenePositionChanges))
                 scene->d_func()->setScenePosItemEnabled(q, true);
         }
 
+        // Propagate dirty flags to the new parent
+        markParentDirty(/*updateBoundingRect=*/true);
+
         // Inherit ancestor flags from the new parent.
-        updateAncestorFlag(QGraphicsItem::GraphicsItemFlag(-2));
-        updateAncestorFlag(QGraphicsItem::GraphicsItemFlag(-1));
-        updateAncestorFlag(QGraphicsItem::ItemClipsChildrenToShape);
-        updateAncestorFlag(QGraphicsItem::ItemIgnoresTransformations);
+        updateAncestorFlags();
 
         // Update item visible / enabled.
-        if (parent->isVisible() != visible) {
-            if (!parent->isVisible() || !explicitlyHidden)
-                setVisibleHelper(parent->isVisible(), /* explicit = */ false, /* update = */ !implicitUpdate);
+        if (parent->d_ptr->visible != visible) {
+            if (!parent->d_ptr->visible || !explicitlyHidden)
+                setVisibleHelper(parent->d_ptr->visible, /* explicit = */ false, /* update = */ false);
         }
         if (parent->isEnabled() != enabled) {
-            if (!parent->isEnabled() || !explicitlyDisabled)
-                setEnabledHelper(parent->isEnabled(), /* explicit = */ false, /* update = */ !implicitUpdate);
+            if (!parent->d_ptr->enabled || !explicitlyDisabled)
+                setEnabledHelper(parent->d_ptr->enabled, /* explicit = */ false, /* update = */ false);
         }
 
         // Auto-activate if visible and the parent is active.
-        if (q->isVisible() && parent->isActive())
+        if (visible && parent->isActive())
             q->setActive(true);
     } else {
         // Inherit ancestor flags from the new parent.
-        updateAncestorFlag(QGraphicsItem::GraphicsItemFlag(-2));
-        updateAncestorFlag(QGraphicsItem::GraphicsItemFlag(-1));
-        updateAncestorFlag(QGraphicsItem::ItemClipsChildrenToShape);
-        updateAncestorFlag(QGraphicsItem::ItemIgnoresTransformations);
+        updateAncestorFlags();
 
         if (!inDestructor) {
             // Update item visible / enabled.
@@ -1142,10 +1172,6 @@
                 setVisibleHelper(true, /* explicit = */ false);
             if (!enabled && !explicitlyDisabled)
                 setEnabledHelper(true, /* explicit = */ false);
-
-            // If the item is being deleted, the whole scene will be updated.
-            if (scene)
-                scene->d_func()->markDirty(q_ptr);
         }
     }
 
@@ -1161,7 +1187,8 @@
     }
 
     // Deliver post-change notification
-    q->itemChange(QGraphicsItem::ItemParentHasChanged, newParentVariant);
+    if (newParentVariant)
+        q->itemChange(QGraphicsItem::ItemParentHasChanged, *newParentVariant);
 
     if (isObject)
         emit static_cast<QGraphicsObject *>(q)->parentChanged();
@@ -1350,7 +1377,7 @@
         d_ptr->scene->d_func()->removeItemHelper(this);
     } else {
         d_ptr->resetFocusProxy();
-        d_ptr->setParentItemHelper(0);
+        setParentItem(0);
     }
 
 #ifndef QT_NO_GRAPHICSEFFECT
@@ -1543,21 +1570,36 @@
 }
 
 /*!
-    Sets this item's parent item to \a parent. If this item already has a
-    parent, it is first removed from the previous parent. If \a parent is 0,
-    this item will become a top-level item.
-
-    Note that this implicitly adds this graphics item to the scene of
-    the parent. You should not \l{QGraphicsScene::addItem()}{add} the
-    item to the scene yourself.
-
-    Calling this function on an item that is an ancestor of \a parent have undefined behaviour.
-
-    \sa parentItem(), childItems()
-*/
-void QGraphicsItem::setParentItem(QGraphicsItem *parent)
-{
-    d_ptr->setParentItemHelper(parent);
+  Sets this item's parent item to \a newParent. If this item already
+  has a parent, it is first removed from the previous parent. If \a
+  newParent is 0, this item will become a top-level item.
+
+  Note that this implicitly adds this graphics item to the scene of
+  the parent. You should not \l{QGraphicsScene::addItem()}{add} the
+  item to the scene yourself.
+
+  Calling this function on an item that is an ancestor of \a newParent
+  have undefined behaviour.
+
+  \sa parentItem(), childItems()
+*/
+void QGraphicsItem::setParentItem(QGraphicsItem *newParent)
+{
+    if (newParent == this) {
+        qWarning("QGraphicsItem::setParentItem: cannot assign %p as a parent of itself", this);
+        return;
+    }
+    if (newParent == d_ptr->parent)
+        return;
+
+    const QVariant newParentVariant(itemChange(QGraphicsItem::ItemParentChange,
+                                               qVariantFromValue<QGraphicsItem *>(newParent)));
+    newParent = qVariantValue<QGraphicsItem *>(newParentVariant);
+    if (newParent == d_ptr->parent)
+        return;
+
+    const QVariant thisPointerVariant(qVariantFromValue<QGraphicsItem *>(this));
+    d_ptr->setParentItemHelper(newParent, &newParentVariant, &thisPointerVariant);
 }
 
 /*!
@@ -1607,7 +1649,7 @@
 */
 bool QGraphicsItem::isWindow() const
 {
-    return isWidget() && (static_cast<const QGraphicsWidget *>(this)->windowType() & Qt::Window);
+    return d_ptr->isWidget && (static_cast<const QGraphicsWidget *>(this)->windowType() & Qt::Window);
 }
 
 /*!
@@ -1644,9 +1686,9 @@
 void QGraphicsItem::setFlag(GraphicsItemFlag flag, bool enabled)
 {
     if (enabled)
-        setFlags(flags() | flag);
+        setFlags(GraphicsItemFlags(d_ptr->flags) | flag);
     else
-        setFlags(flags() & ~flag);
+        setFlags(GraphicsItemFlags(d_ptr->flags) & ~flag);
 }
 
 /*!
@@ -1693,8 +1735,8 @@
     flags = GraphicsItemFlags(itemChange(ItemFlagsChange, quint32(flags)).toUInt());
     if (quint32(d_ptr->flags) == quint32(flags))
         return;
-    if (d_ptr->scene)
-        d_ptr->scene->d_func()->index->itemChange(this, ItemFlagsChange, quint32(flags));
+    if (d_ptr->scene && d_ptr->scene->d_func()->indexMethod != QGraphicsScene::NoIndex)
+        d_ptr->scene->d_func()->index->itemChange(this, ItemFlagsChange, &flags);
 
     // Flags that alter the geometry of the item (or its children).
     const quint32 geomChangeFlagsMask = (ItemClipsChildrenToShape | ItemClipsToShape | ItemIgnoresTransformations | ItemIsSelectable);
@@ -1703,7 +1745,7 @@
         d_ptr->paintedViewBoundingRectsNeedRepaint = 1;
 
     // Keep the old flags to compare the diff.
-    GraphicsItemFlags oldFlags = this->flags();
+    GraphicsItemFlags oldFlags = GraphicsItemFlags(d_ptr->flags);
 
     // Update flags.
     d_ptr->flags = flags;
@@ -1732,7 +1774,23 @@
         d_ptr->updateAncestorFlag(ItemIgnoresTransformations);
     }
 
+    if ((flags & ItemNegativeZStacksBehindParent) != (oldFlags & ItemNegativeZStacksBehindParent)) {
+        // NB! We change the flags directly here, so we must also update d_ptr->flags.
+        // Note that this has do be done before the ItemStacksBehindParent check
+        // below; otherwise we will loose the change.
+
+        // Update stack-behind.
+        if (d_ptr->z < qreal(0.0))
+            flags |= ItemStacksBehindParent;
+        else
+            flags &= ~ItemStacksBehindParent;
+        d_ptr->flags = flags;
+    }
+
     if ((flags & ItemStacksBehindParent) != (oldFlags & ItemStacksBehindParent)) {
+        // NB! This check has to come after the ItemNegativeZStacksBehindParent
+        // check above. Be careful.
+
         // Ensure child item sorting is up to date when toggling this flag.
         if (d_ptr->parent)
             d_ptr->parent->d_ptr->needSortChildren = 1;
@@ -1746,10 +1804,6 @@
             d_ptr->scene->d_func()->updateInputMethodSensitivityInViews();
     }
 
-    if ((flags & ItemNegativeZStacksBehindParent) != (oldFlags & ItemNegativeZStacksBehindParent)) {
-        // Update stack-behind.
-        setFlag(ItemStacksBehindParent, d_ptr->z < qreal(0.0));
-    }
 
     if ((d_ptr->panelModality != NonModal)
         && d_ptr->scene
@@ -2523,7 +2577,9 @@
     // Update.
     if (d_ptr->scene) {
 #ifndef QT_NO_GRAPHICSEFFECT
-        d_ptr->invalidateGraphicsEffectsRecursively();
+        d_ptr->invalidateParentGraphicsEffectsRecursively();
+        if (!(d_ptr->flags & ItemDoesntPropagateOpacityToChildren))
+            d_ptr->invalidateChildGraphicsEffectsRecursively(QGraphicsItemPrivate::OpacityChanged);
 #endif //QT_NO_GRAPHICSEFFECT
         d_ptr->scene->d_func()->markDirty(this, QRectF(),
                                           /*invalidateChildren=*/true,
@@ -2568,6 +2624,8 @@
     if (d_ptr->graphicsEffect) {
         delete d_ptr->graphicsEffect;
         d_ptr->graphicsEffect = 0;
+    } else if (d_ptr->parent) {
+        d_ptr->parent->d_ptr->updateChildWithGraphicsEffectFlagRecursively();
     }
 
     if (effect) {
@@ -2581,6 +2639,19 @@
 }
 #endif //QT_NO_GRAPHICSEFFECT
 
+void QGraphicsItemPrivate::updateChildWithGraphicsEffectFlagRecursively()
+{
+#ifndef QT_NO_GRAPHICSEFFECT
+    QGraphicsItemPrivate *itemPrivate = this;
+    do {
+        // parent chain already notified?
+        if (itemPrivate->mayHaveChildWithGraphicsEffect)
+            return;
+        itemPrivate->mayHaveChildWithGraphicsEffect = 1;
+    } while ((itemPrivate = itemPrivate->parent ? itemPrivate->parent->d_ptr.data() : 0));
+#endif
+}
+
 /*!
     \internal
     \since 4.6
@@ -4264,9 +4335,9 @@
     if (newZ == d_ptr->z)
         return;
 
-    if (d_ptr->scene) {
+    if (d_ptr->scene && d_ptr->scene->d_func()->indexMethod != QGraphicsScene::NoIndex) {
         // Z Value has changed, we have to notify the index.
-        d_ptr->scene->d_func()->index->itemChange(this, ItemZValueChange, newZVariant);
+        d_ptr->scene->d_func()->index->itemChange(this, ItemZValueChange, &newZ);
     }
 
     d_ptr->z = newZ;
@@ -5033,7 +5104,7 @@
     \internal
 */
 #ifndef QT_NO_GRAPHICSEFFECT
-void QGraphicsItemPrivate::invalidateGraphicsEffectsRecursively()
+void QGraphicsItemPrivate::invalidateParentGraphicsEffectsRecursively()
 {
     QGraphicsItemPrivate *itemPrivate = this;
     do {
@@ -5045,6 +5116,24 @@
         }
     } while ((itemPrivate = itemPrivate->parent ? itemPrivate->parent->d_ptr.data() : 0));
 }
+
+void QGraphicsItemPrivate::invalidateChildGraphicsEffectsRecursively(QGraphicsItemPrivate::InvalidateReason reason)
+{
+    if (!mayHaveChildWithGraphicsEffect)
+        return;
+
+    for (int i = 0; i < children.size(); ++i) {
+        QGraphicsItemPrivate *childPrivate = children.at(i)->d_ptr.data();
+        if (reason == OpacityChanged && (childPrivate->flags & QGraphicsItem::ItemIgnoresParentOpacity))
+            continue;
+        if (childPrivate->graphicsEffect) {
+            childPrivate->notifyInvalidated = 1;
+            static_cast<QGraphicsItemEffectSourcePrivate *>(childPrivate->graphicsEffect->d_func()->source->d_func())->invalidateCache();
+        }
+
+        childPrivate->invalidateChildGraphicsEffectsRecursively(reason);
+    }
+}
 #endif //QT_NO_GRAPHICSEFFECT
 
 /*!
@@ -5289,7 +5378,7 @@
 
     // Make sure we notify effects about invalidated source.
 #ifndef QT_NO_GRAPHICSEFFECT
-    d_ptr->invalidateGraphicsEffectsRecursively();
+    d_ptr->invalidateParentGraphicsEffectsRecursively();
 #endif //QT_NO_GRAPHICSEFFECT
 
     if (CacheMode(d_ptr->cacheMode) != NoCache) {
@@ -7165,7 +7254,9 @@
 
         QGraphicsScenePrivate *scenePrivate = d_ptr->scene->d_func();
         scenePrivate->index->prepareBoundingRectChange(this);
-        scenePrivate->markDirty(this, QRectF(), /*invalidateChildren=*/true);
+        scenePrivate->markDirty(this, QRectF(), /*invalidateChildren=*/true, /*force=*/false,
+                                /*ignoreOpacity=*/ false, /*removingItemFromScene=*/ false,
+                                /*updateBoundingRect=*/true);
 
         // For compatibility reasons, we have to update the item's old geometry
         // if someone is connected to the changed signal or the scene has no views.
@@ -7182,19 +7273,7 @@
         }
     }
 
-    QGraphicsItem *parent = this;
-    while ((parent = parent->d_ptr->parent)) {
-        QGraphicsItemPrivate *parentp = parent->d_ptr.data();
-        parentp->dirtyChildrenBoundingRect = 1;
-        // ### Only do this if the parent's effect applies to the entire subtree.
-        parentp->notifyBoundingRectChanged = 1;
-#ifndef QT_NO_GRAPHICSEFFECT
-        if (parentp->scene && parentp->graphicsEffect) {
-            parentp->notifyInvalidated = 1;
-            static_cast<QGraphicsItemEffectSourcePrivate *>(parentp->graphicsEffect->d_func()->source->d_func())->invalidateCache();
-        }
-#endif
-    }
+    d_ptr->markParentDirty(/*updateBoundingRect=*/true);
 }
 
 /*!
--- a/src/gui/graphicsview/qgraphicsitem_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicsitem_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -153,7 +153,7 @@
         dirtyChildren(0),
         localCollisionHack(0),
         inSetPosHelper(0),
-        needSortChildren(1), // ### can be 0 by default?
+        needSortChildren(0),
         allChildrenDirty(0),
         fullUpdatePending(0),
         flags(0),
@@ -178,6 +178,8 @@
         sequentialOrdering(1),
         updateDueToGraphicsEffect(0),
         scenePosDescendants(0),
+        pendingPolish(0),
+        mayHaveChildWithGraphicsEffect(0),
         globalStackingOrder(-1),
         q_ptr(0)
     {
@@ -195,8 +197,10 @@
         return item->d_ptr.data();
     }
 
+    void updateChildWithGraphicsEffectFlagRecursively();
     void updateAncestorFlag(QGraphicsItem::GraphicsItemFlag childFlag,
                             AncestorFlag flag = NoFlag, bool enabled = false, bool root = true);
+    void updateAncestorFlags();
     void setIsMemberOfGroup(bool enabled);
     void remapItemPos(QEvent *event, QGraphicsItem *item);
     QPointF genericMapFromScene(const QPointF &pos, const QWidget *viewport) const;
@@ -223,13 +227,18 @@
                               bool ignoreDirtyBit = false, bool ignoreOpacity = false) const;
     int depth() const;
 #ifndef QT_NO_GRAPHICSEFFECT
-    void invalidateGraphicsEffectsRecursively();
+    enum InvalidateReason {
+        OpacityChanged
+    };
+    void invalidateParentGraphicsEffectsRecursively();
+    void invalidateChildGraphicsEffectsRecursively(InvalidateReason reason);
 #endif //QT_NO_GRAPHICSEFFECT
     void invalidateDepthRecursively();
     void resolveDepth();
     void addChild(QGraphicsItem *child);
     void removeChild(QGraphicsItem *child);
-    void setParentItemHelper(QGraphicsItem *parent);
+    void setParentItemHelper(QGraphicsItem *parent, const QVariant *newParentVariant,
+                             const QVariant *thisPointerVariant);
     void childrenBoundingRectHelper(QTransform *x, QRectF *rect);
     void initStyleOption(QStyleOptionGraphicsItem *option, const QTransform &worldTransform,
                          const QRegion &exposedRegion, bool allItems = false) const;
@@ -397,6 +406,8 @@
         return !visible || (childrenCombineOpacity() && isFullyTransparent());
     }
 
+    inline void markParentDirty(bool updateBoundingRect = false);
+
     void setFocusHelper(Qt::FocusReason focusReason, bool climb);
     void setSubFocus(QGraphicsItem *rootItem = 0);
     void clearSubFocus(QGraphicsItem *rootItem = 0);
@@ -484,6 +495,8 @@
     quint32 sequentialOrdering : 1;
     quint32 updateDueToGraphicsEffect : 1;
     quint32 scenePosDescendants : 1;
+    quint32 pendingPolish : 1;
+    quint32 mayHaveChildWithGraphicsEffect : 1;
 
     // Optional stacking order
     int globalStackingOrder;
@@ -721,11 +734,13 @@
 inline void QGraphicsItemPrivate::ensureSortedChildren()
 {
     if (needSortChildren) {
-        qSort(children.begin(), children.end(), qt_notclosestLeaf);
         needSortChildren = 0;
         sequentialOrdering = 1;
+        if (children.isEmpty())
+            return;
+        qSort(children.begin(), children.end(), qt_notclosestLeaf);
         for (int i = 0; i < children.size(); ++i) {
-            if (children[i]->d_ptr->siblingIndex != i) {
+            if (children.at(i)->d_ptr->siblingIndex != i) {
                 sequentialOrdering = 0;
                 break;
             }
@@ -741,6 +756,37 @@
     return a->d_ptr->siblingIndex < b->d_ptr->siblingIndex;
 }
 
+/*!
+    \internal
+*/
+inline void QGraphicsItemPrivate::markParentDirty(bool updateBoundingRect)
+{
+    QGraphicsItemPrivate *parentp = this;
+    while (parentp->parent) {
+        parentp = parentp->parent->d_ptr.data();
+        parentp->dirtyChildren = 1;
+
+        if (updateBoundingRect) {
+            parentp->dirtyChildrenBoundingRect = 1;
+            // ### Only do this if the parent's effect applies to the entire subtree.
+            parentp->notifyBoundingRectChanged = 1;
+        }
+#ifndef QT_NO_GRAPHICSEFFECT
+        if (parentp->graphicsEffect) {
+            if (updateBoundingRect) {
+                parentp->notifyInvalidated = 1;
+                static_cast<QGraphicsItemEffectSourcePrivate *>(parentp->graphicsEffect->d_func()
+                                                                ->source->d_func())->invalidateCache();
+            }
+            if (parentp->graphicsEffect->isEnabled()) {
+                parentp->dirty = 1;
+                parentp->fullUpdatePending = 1;
+            }
+        }
+#endif
+    }
+}
+
 QT_END_NAMESPACE
 
 #endif // QT_NO_GRAPHICSVIEW
--- a/src/gui/graphicsview/qgraphicsscene.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicsscene.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -292,7 +292,6 @@
       processDirtyItemsEmitted(false),
       selectionChanging(0),
       needSortTopLevelItems(true),
-      unpolishedItemsModified(true),
       holesInTopLevelSiblingIndex(false),
       topLevelSequentialOrdering(true),
       scenePosDescendantsUpdatePending(false),
@@ -429,22 +428,38 @@
 */
 void QGraphicsScenePrivate::_q_polishItems()
 {
-    QSet<QGraphicsItem *>::Iterator it = unpolishedItems.begin();
+    if (unpolishedItems.isEmpty())
+        return;
+
     const QVariant booleanTrueVariant(true);
-    while (!unpolishedItems.isEmpty()) {
-        QGraphicsItem *item = *it;
-        it = unpolishedItems.erase(it);
-        unpolishedItemsModified = false;
-        if (!item->d_ptr->explicitlyHidden) {
+    QGraphicsItem *item = 0;
+    QGraphicsItemPrivate *itemd = 0;
+    const int oldUnpolishedCount = unpolishedItems.count();
+
+    for (int i = 0; i < oldUnpolishedCount; ++i) {
+        item = unpolishedItems.at(i);
+        if (!item)
+            continue;
+        itemd = item->d_ptr.data();
+        itemd->pendingPolish = false;
+        if (!itemd->explicitlyHidden) {
             item->itemChange(QGraphicsItem::ItemVisibleChange, booleanTrueVariant);
             item->itemChange(QGraphicsItem::ItemVisibleHasChanged, booleanTrueVariant);
         }
-        if (item->isWidget()) {
+        if (itemd->isWidget) {
             QEvent event(QEvent::Polish);
             QApplication::sendEvent((QGraphicsWidget *)item, &event);
         }
-        if (unpolishedItemsModified)
-            it = unpolishedItems.begin();
+    }
+
+    if (unpolishedItems.count() == oldUnpolishedCount) {
+        // No new items were added to the vector.
+        unpolishedItems.clear();
+    } else {
+        // New items were appended; keep them and remove the old ones.
+        unpolishedItems.remove(0, oldUnpolishedCount);
+        unpolishedItems.squeeze();
+        QMetaObject::invokeMethod(q_ptr, "_q_polishItems", Qt::QueuedConnection);
     }
 }
 
@@ -599,7 +614,7 @@
         if (parentItem->scene()) {
             Q_ASSERT_X(parentItem->scene() == q, "QGraphicsScene::removeItem",
                        "Parent item's scene is different from this item's scene");
-            item->d_ptr->setParentItemHelper(0);
+            item->setParentItem(0);
         }
     } else {
         unregisterTopLevelItem(item);
@@ -638,8 +653,12 @@
     selectedItems.remove(item);
     hoverItems.removeAll(item);
     cachedItemsUnderMouse.removeAll(item);
-    unpolishedItems.remove(item);
-    unpolishedItemsModified = true;
+    if (item->d_ptr->pendingPolish) {
+        const int unpolishedIndex = unpolishedItems.indexOf(item);
+        if (unpolishedIndex != -1)
+            unpolishedItems[unpolishedIndex] = 0;
+        item->d_ptr->pendingPolish = false;
+    }
     resetDirtyItem(item);
 
     //We remove all references of item from the sceneEventFilter arrays
@@ -1936,7 +1955,7 @@
     \since 4.3
 
     This convenience function is equivalent to calling items(QRectF(\a x, \a y, \a w, \a h), \a mode).
-    
+
     This function is deprecated and returns incorrect results if the scene
     contains items that ignore transformations. Use the overload that takes
     a QTransform instead.
@@ -2482,12 +2501,12 @@
         qWarning("QGraphicsScene::addItem: cannot add null item");
         return;
     }
-    if (item->scene() == this) {
+    if (item->d_ptr->scene == this) {
         qWarning("QGraphicsScene::addItem: item has already been added to this scene");
         return;
     }
     // Remove this item from its existing scene
-    if (QGraphicsScene *oldScene = item->scene())
+    if (QGraphicsScene *oldScene = item->d_ptr->scene)
         oldScene->removeItem(item);
 
     // Notify the item that its scene is changing, and allow the item to
@@ -2496,15 +2515,20 @@
                                                     qVariantFromValue<QGraphicsScene *>(this)));
     QGraphicsScene *targetScene = qVariantValue<QGraphicsScene *>(newSceneVariant);
     if (targetScene != this) {
-        if (targetScene && item->scene() != targetScene)
+        if (targetScene && item->d_ptr->scene != targetScene)
             targetScene->addItem(item);
         return;
     }
 
+    if (d->unpolishedItems.isEmpty())
+        QMetaObject::invokeMethod(this, "_q_polishItems", Qt::QueuedConnection);
+    d->unpolishedItems.append(item);
+    item->d_ptr->pendingPolish = true;
+
     // Detach this item from its parent if the parent's scene is different
     // from this scene.
-    if (QGraphicsItem *itemParent = item->parentItem()) {
-        if (itemParent->scene() != this)
+    if (QGraphicsItem *itemParent = item->d_ptr->parent) {
+        if (itemParent->d_ptr->scene != this)
             item->setParentItem(0);
     }
 
@@ -2534,7 +2558,7 @@
         d->enableMouseTrackingOnViews();
     }
 #ifndef QT_NO_CURSOR
-    if (d->allItemsUseDefaultCursor && item->hasCursor()) {
+    if (d->allItemsUseDefaultCursor && item->d_ptr->hasCursor) {
         d->allItemsUseDefaultCursor = false;
         if (d->allItemsIgnoreHoverEvents) // already enabled otherwise
             d->enableMouseTrackingOnViews();
@@ -2542,7 +2566,7 @@
 #endif //QT_NO_CURSOR
 
     // Enable touch events if the item accepts touch events.
-    if (d->allItemsIgnoreTouchEvents && item->acceptTouchEvents()) {
+    if (d->allItemsIgnoreTouchEvents && item->d_ptr->acceptTouchEvents) {
         d->allItemsIgnoreTouchEvents = false;
         d->enableTouchEventsOnViews();
     }
@@ -2575,17 +2599,14 @@
     }
 
     // Add all children recursively
-    foreach (QGraphicsItem *child, item->children())
-        addItem(child);
+    item->d_ptr->ensureSortedChildren();
+    for (int i = 0; i < item->d_ptr->children.size(); ++i)
+        addItem(item->d_ptr->children.at(i));
 
     // Resolve font and palette.
     item->d_ptr->resolveFont(d->font.resolve());
     item->d_ptr->resolvePalette(d->palette.resolve());
 
-    if (d->unpolishedItems.isEmpty())
-        QMetaObject::invokeMethod(this, "_q_polishItems", Qt::QueuedConnection);
-    d->unpolishedItems.insert(item);
-    d->unpolishedItemsModified = true;
 
     // Reenable selectionChanged() for individual items
     --d->selectionChanging;
@@ -2619,7 +2640,7 @@
         }
     }
 
-    if (item->flags() & QGraphicsItem::ItemSendsScenePositionChanges)
+    if (item->d_ptr->flags & QGraphicsItem::ItemSendsScenePositionChanges)
         d->registerScenePosItem(item);
 
     // Ensure that newly added items that have subfocus set, gain
@@ -3766,10 +3787,10 @@
 
 bool QGraphicsScenePrivate::itemAcceptsHoverEvents_helper(const QGraphicsItem *item) const
 {
-    return (!item->isBlockedByModalPanel() &&
-            (item->acceptHoverEvents()
-             || (item->isWidget()
-                 && static_cast<const QGraphicsWidget *>(item)->d_func()->hasDecoration())));
+    return (item->d_ptr->acceptsHover
+            || (item->d_ptr->isWidget
+                && static_cast<const QGraphicsWidget *>(item)->d_func()->hasDecoration()))
+           && !item->isBlockedByModalPanel();
 }
 
 /*!
@@ -4811,7 +4832,8 @@
 }
 
 void QGraphicsScenePrivate::markDirty(QGraphicsItem *item, const QRectF &rect, bool invalidateChildren,
-                                      bool force, bool ignoreOpacity, bool removingItemFromScene)
+                                      bool force, bool ignoreOpacity, bool removingItemFromScene,
+                                      bool updateBoundingRect)
 {
     Q_ASSERT(item);
     if (updateAll)
@@ -4882,17 +4904,8 @@
     if (ignoreOpacity)
         item->d_ptr->ignoreOpacity = 1;
 
-    QGraphicsItem *p = item->d_ptr->parent;
-    while (p) {
-        p->d_ptr->dirtyChildren = 1;
-#ifndef QT_NO_GRAPHICSEFFECT
-        if (p->d_ptr->graphicsEffect && p->d_ptr->graphicsEffect->isEnabled()) {
-            p->d_ptr->dirty = 1;
-            p->d_ptr->fullUpdatePending = 1;
-        }
-#endif //QT_NO_GRAPHICSEFFECT
-        p = p->d_ptr->parent;
-    }
+    if (!updateBoundingRect)
+        item->d_ptr->markParentDirty();
 }
 
 static inline bool updateHelper(QGraphicsViewPrivate *view, QGraphicsItemPrivate *item,
--- a/src/gui/graphicsview/qgraphicsscene_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicsscene_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -108,10 +108,9 @@
     QPainterPath selectionArea;
     int selectionChanging;
     QSet<QGraphicsItem *> selectedItems;
-    QSet<QGraphicsItem *> unpolishedItems;
+    QVector<QGraphicsItem *> unpolishedItems;
     QList<QGraphicsItem *> topLevelItems;
     bool needSortTopLevelItems;
-    bool unpolishedItemsModified;
     bool holesInTopLevelSiblingIndex;
     bool topLevelSequentialOrdering;
 
@@ -223,7 +222,8 @@
               QRegion *, QWidget *, qreal, const QTransform *const, bool, bool);
 
     void markDirty(QGraphicsItem *item, const QRectF &rect = QRectF(), bool invalidateChildren = false,
-                   bool force = false, bool ignoreOpacity = false, bool removingItemFromScene = false);
+                   bool force = false, bool ignoreOpacity = false, bool removingItemFromScene = false,
+                   bool updateBoundingRect = false);
     void processDirtyItemsRecursive(QGraphicsItem *item, bool dirtyAncestorContainsChildren = false,
                                     qreal parentOpacity = qreal(1.0));
 
--- a/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -635,16 +635,17 @@
     This method react to the \a change of the \a item and use the \a value to
     update the BSP tree if necessary.
 */
-void QGraphicsSceneBspTreeIndex::itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const QVariant &value)
+void QGraphicsSceneBspTreeIndex::itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const void *const value)
 {
     Q_D(QGraphicsSceneBspTreeIndex);
     switch (change) {
     case QGraphicsItem::ItemFlagsChange: {
         // Handle ItemIgnoresTransformations
+        QGraphicsItem::GraphicsItemFlags newFlags = *static_cast<const QGraphicsItem::GraphicsItemFlags *>(value);
         bool ignoredTransform = item->d_ptr->flags & QGraphicsItem::ItemIgnoresTransformations;
-        bool willIgnoreTransform = value.toUInt() & QGraphicsItem::ItemIgnoresTransformations;
+        bool willIgnoreTransform = newFlags & QGraphicsItem::ItemIgnoresTransformations;
         bool clipsChildren = item->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape;
-        bool willClipChildren = value.toUInt() & QGraphicsItem::ItemClipsChildrenToShape;
+        bool willClipChildren = newFlags & QGraphicsItem::ItemClipsChildrenToShape;
         if ((ignoredTransform != willIgnoreTransform) || (clipsChildren != willClipChildren)) {
             QGraphicsItem *thatItem = const_cast<QGraphicsItem *>(item);
             // Remove item and its descendants from the index and append
@@ -661,7 +662,7 @@
     case QGraphicsItem::ItemParentChange: {
         d->invalidateSortCache();
         // Handle ItemIgnoresTransformations
-        QGraphicsItem *newParent = qVariantValue<QGraphicsItem *>(value);
+        const QGraphicsItem *newParent = static_cast<const QGraphicsItem *>(value);
         bool ignoredTransform = item->d_ptr->itemIsUntransformable();
         bool willIgnoreTransform = (item->d_ptr->flags & QGraphicsItem::ItemIgnoresTransformations)
                                    || (newParent && newParent->d_ptr->itemIsUntransformable());
@@ -682,7 +683,6 @@
     default:
         break;
     }
-    return QGraphicsSceneIndex::itemChange(item, change, value);
 }
 /*!
     \reimp
--- a/src/gui/graphicsview/qgraphicsscenebsptreeindex_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicsscenebsptreeindex_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -97,7 +97,7 @@
     void removeItem(QGraphicsItem *item);
     void prepareBoundingRectChange(const QGraphicsItem *item);
 
-    void itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const QVariant &value);
+    void itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const void *const value);
 
 private :
     Q_DECLARE_PRIVATE(QGraphicsSceneBspTreeIndex)
--- a/src/gui/graphicsview/qgraphicssceneindex.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicssceneindex.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -624,7 +624,7 @@
 
     \sa QGraphicsItem::GraphicsItemChange
 */
-void QGraphicsSceneIndex::itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const QVariant &value)
+void QGraphicsSceneIndex::itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const void *const value)
 {
     Q_UNUSED(item);
     Q_UNUSED(change);
--- a/src/gui/graphicsview/qgraphicssceneindex_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/graphicsview/qgraphicssceneindex_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -110,7 +110,7 @@
     virtual void removeItem(QGraphicsItem *item) = 0;
     virtual void deleteItem(QGraphicsItem *item);
 
-    virtual void itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange, const QVariant &value);
+    virtual void itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange, const void *const value);
     virtual void prepareBoundingRectChange(const QGraphicsItem *item);
 
     QGraphicsSceneIndex(QGraphicsSceneIndexPrivate &dd, QGraphicsScene *scene);
--- a/src/gui/gui.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/gui.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -59,4 +59,5 @@
 symbian:TARGET.UID3=0x2001B2DD
 
 # ro-section in gui can exceed default allocated space, so more rw-section little further
-symbian-sbsv2: QMAKE_LFLAGS.ARMCC += --rw-base 0x800000"
+symbian-sbsv2: QMAKE_LFLAGS.ARMCC += --rw-base 0x800000
+symbian: QMAKE_LFLAGS.GCCE += -Tdata 0xC00000
--- a/src/gui/image/qbmphandler.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/image/qbmphandler.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -144,7 +144,7 @@
 static int calc_shift(int mask)
 {
     int result = 0;
-    while (!(mask & 1)) {
+    while (mask && !(mask & 1)) {
         result++;
         mask >>= 1;
     }
--- a/src/gui/inputmethod/qcoefepinputcontext_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/inputmethod/qcoefepinputcontext_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -57,6 +57,7 @@
 
 #include "qinputcontext.h"
 #include <qhash.h>
+#include <qtimer.h>
 #include <private/qcore_symbian_p.h>
 #include <private/qt_s60_p.h>
 
@@ -91,6 +92,9 @@
 
     TCoeInputCapabilities inputCapabilities();
 
+protected:
+    void timerEvent(QTimerEvent *timerEvent);
+
 private:
     void commitCurrentString(bool triggeredBySymbian);
     void updateHints(bool mustUpdateInputCapabilities);
@@ -98,6 +102,7 @@
     void applyFormat(QList<QInputMethodEvent::Attribute> *attributes);
     void queueInputCapabilitiesChanged();
     bool needsInputPanel();
+    void commitTemporaryPreeditString();
 
 private Q_SLOTS:
     void ensureInputCapabilitiesChanged();
@@ -148,6 +153,8 @@
     MFepPointerEventHandlerDuringInlineEdit *m_pointerHandler;
     int m_longPress;
     int m_cursorPos;
+    QBasicTimer m_tempPreeditStringTimeout;
+    bool m_hasTempPreeditString;
 };
 
 QT_END_NAMESPACE
--- a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -72,7 +72,8 @@
       m_formatRetriever(0),
       m_pointerHandler(0),
       m_longPress(0),
-      m_cursorPos(0)
+      m_cursorPos(0),
+      m_hasTempPreeditString(false)
 {
     m_fepState->SetObjectProvider(this);
     m_fepState->SetFlags(EAknEditorFlagDefault);
@@ -199,7 +200,11 @@
     if (!focusWidget())
         return false;
 
-    if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
+    switch (event->type()) {
+    case QEvent::KeyPress:
+        commitTemporaryPreeditString();
+        // fall through intended
+    case QEvent::KeyRelease:
         const QKeyEvent *keyEvent = static_cast<const QKeyEvent *>(event);
         switch (keyEvent->key()) {
         case Qt::Key_F20:
@@ -222,6 +227,21 @@
         default:
             break;
         }
+
+        if (keyEvent->type() == QEvent::KeyPress
+            && focusWidget()->inputMethodHints() & Qt::ImhHiddenText
+            && !keyEvent->text().isEmpty()) {
+            // Send some temporary preedit text in order to make text visible for a moment.
+            m_preeditString = keyEvent->text();
+            QList<QInputMethodEvent::Attribute> attributes;
+            QInputMethodEvent imEvent(m_preeditString, attributes);
+            QApplication::sendEvent(focusWidget(), &imEvent);
+            m_tempPreeditStringTimeout.start(1000, this);
+            m_hasTempPreeditString = true;
+            update();
+            return true;
+        }
+        break;
     }
 
     if (!needsInputPanel())
@@ -252,6 +272,23 @@
     return false;
 }
 
+void QCoeFepInputContext::timerEvent(QTimerEvent *timerEvent)
+{
+    if (timerEvent->timerId() == m_tempPreeditStringTimeout.timerId())
+        commitTemporaryPreeditString();
+}
+
+void QCoeFepInputContext::commitTemporaryPreeditString()
+{
+    if (m_tempPreeditStringTimeout.isActive())
+        m_tempPreeditStringTimeout.stop();
+
+    if (!m_hasTempPreeditString)
+        return;
+
+    commitCurrentString(false);
+}
+
 void QCoeFepInputContext::mouseHandler( int x, QMouseEvent *event)
 {
     Q_ASSERT(focusWidget());
@@ -309,6 +346,8 @@
 {
     using namespace Qt;
 
+    commitTemporaryPreeditString();
+
     bool numbersOnly = hints & ImhDigitsOnly || hints & ImhFormattedNumbersOnly
             || hints & ImhDialableCharactersOnly;
     bool noOnlys = !(numbersOnly || hints & ImhUppercaseOnly
@@ -500,6 +539,8 @@
     if (!w)
         return;
 
+    commitTemporaryPreeditString();
+
     m_cursorPos = w->inputMethodQuery(Qt::ImCursorPosition).toInt();
     
     QList<QInputMethodEvent::Attribute> attributes;
@@ -599,6 +640,8 @@
     if (!w)
         return;
 
+    commitTemporaryPreeditString();
+
     int pos = aCursorSelection.iAnchorPos;
     int length = aCursorSelection.iCursorPos - pos;
 
@@ -718,6 +761,7 @@
     m_preeditString.clear();
     sendEvent(event);
 
+    m_hasTempPreeditString = false;
     m_longPress = 0;
 
     if (!triggeredBySymbian) {
--- a/src/gui/itemviews/qfileiconprovider.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/itemviews/qfileiconprovider.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -65,6 +65,7 @@
 
 #ifndef SHGFI_ADDOVERLAYS
 #  define SHGFI_ADDOVERLAYS 0x000000020
+#  define SHGFI_OVERLAYINDEX 0x000000040
 #endif
 
 QT_BEGIN_NAMESPACE
@@ -248,7 +249,7 @@
     //Get the small icon
 #ifndef Q_OS_WINCE
     val = SHGetFileInfo((const wchar_t *)QDir::toNativeSeparators(fileInfo.filePath()).utf16(), 0, &info,
-                        sizeof(SHFILEINFO), SHGFI_ICON|SHGFI_SMALLICON|SHGFI_SYSICONINDEX|SHGFI_ADDOVERLAYS);
+                        sizeof(SHFILEINFO), SHGFI_ICON|SHGFI_SMALLICON|SHGFI_SYSICONINDEX|SHGFI_ADDOVERLAYS|SHGFI_OVERLAYINDEX);
 #else
     val = SHGetFileInfo((const wchar_t *)QDir::toNativeSeparators(fileInfo.filePath()).utf16(), 0, &info,
                         sizeof(SHFILEINFO), SHGFI_SMALLICON|SHGFI_SYSICONINDEX);
@@ -287,7 +288,7 @@
     //Get the big icon
 #ifndef Q_OS_WINCE
     val = SHGetFileInfo((const wchar_t *)QDir::toNativeSeparators(fileInfo.filePath()).utf16(), 0, &info,
-                        sizeof(SHFILEINFO), SHGFI_ICON|SHGFI_LARGEICON|SHGFI_SYSICONINDEX|SHGFI_ADDOVERLAYS);
+                        sizeof(SHFILEINFO), SHGFI_ICON|SHGFI_LARGEICON|SHGFI_SYSICONINDEX|SHGFI_ADDOVERLAYS|SHGFI_OVERLAYINDEX);
 #else
     val = SHGetFileInfo((const wchar_t *)QDir::toNativeSeparators(fileInfo.filePath()).utf16(), 0, &info,
                         sizeof(SHFILEINFO), SHGFI_LARGEICON|SHGFI_SYSICONINDEX);
--- a/src/gui/itemviews/qitemdelegate.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/itemviews/qitemdelegate.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1033,7 +1033,7 @@
         i >>= 4;
     }
 
-    return QString::fromUtf16(ptr, int(&arr[sizeof(arr) / sizeof(ushort)] - ptr));
+    return QString((const QChar *)ptr, int(&arr[sizeof(arr) / sizeof(ushort)] - ptr));
 }
 
 /*!
--- a/src/gui/itemviews/qtableview.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/itemviews/qtableview.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -114,7 +114,9 @@
         }
     } else if (old_height > span->height()) {
         //remove the span from all the subspans lists that intersect the columns not covered anymore
-        Index::iterator it_y = index.lowerBound(qMin(-span->bottom(), 0));
+        Index::iterator it_y = index.lowerBound(-span->bottom());
+        if (it_y == index.end())
+            it_y = index.find(-span->top());    // This is the only span remaining and we are deleting it.
         Q_ASSERT(it_y != index.end()); //it_y must exist since the span is in the list
         while (-it_y.key() <= span->top() + old_height -1) {
             if (-it_y.key() > span->bottom()) {
--- a/src/gui/kernel/kernel.pri	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/kernel.pri	Fri Mar 12 15:46:37 2010 +0200
@@ -7,7 +7,7 @@
 KERNEL_P= kernel
 HEADERS += \
 	kernel/qaction.h \
-        kernel/qaction_p.h \
+    kernel/qaction_p.h \
 	kernel/qactiongroup.h \
 	kernel/qapplication.h \
 	kernel/qapplication_p.h \
@@ -37,8 +37,8 @@
 	kernel/qstackedlayout.h \
 	kernel/qtooltip.h \
 	kernel/qwhatsthis.h \
-        kernel/qwidget.h \
-        kernel/qwidget_p.h \
+    kernel/qwidget.h \
+    kernel/qwidget_p.h \
 	kernel/qwidgetaction.h \
 	kernel/qwidgetaction_p.h \
 	kernel/qwindowdefs.h \
@@ -49,6 +49,7 @@
 	kernel/qgesturerecognizer.h \
 	kernel/qgesturemanager_p.h \
 	kernel/qsoftkeymanager_p.h \
+    kernel/qsoftkeymanager_common_p.h \
 	kernel/qguiplatformplugin_p.h
 
 SOURCES += \
@@ -84,14 +85,14 @@
 	kernel/qgesturerecognizer.cpp \
 	kernel/qgesturemanager.cpp \
 	kernel/qsoftkeymanager.cpp \
-        kernel/qdesktopwidget.cpp \
+    kernel/qdesktopwidget.cpp \
 	kernel/qguiplatformplugin.cpp
 
 win32 {
 	DEFINES += QT_NO_DIRECTDRAW
 
-        HEADERS += \
-                kernel/qwinnativepangesturerecognizer_win_p.h
+    HEADERS += \
+        kernel/qwinnativepangesturerecognizer_win_p.h
 
 	SOURCES += \
 		kernel/qapplication_win.cpp \
@@ -103,30 +104,34 @@
 		kernel/qsound_win.cpp \
 		kernel/qwidget_win.cpp \
 		kernel/qole_win.cpp \
-                kernel/qkeymapper_win.cpp \
-                kernel/qwinnativepangesturerecognizer_win.cpp
+        kernel/qkeymapper_win.cpp \
+        kernel/qwinnativepangesturerecognizer_win.cpp
 
-        !contains(DEFINES, QT_NO_DIRECTDRAW):LIBS += ddraw.lib
+    !contains(DEFINES, QT_NO_DIRECTDRAW):LIBS += ddraw.lib
 }
 
 symbian {
-        SOURCES += \
-                kernel/qapplication_s60.cpp \
-                kernel/qeventdispatcher_s60.cpp \
-                kernel/qwidget_s60.cpp \
-                kernel/qcursor_s60.cpp \
-                kernel/qdesktopwidget_s60.cpp \
-                kernel/qkeymapper_s60.cpp\
-                kernel/qclipboard_s60.cpp\
-                kernel/qdnd_s60.cpp \
-                kernel/qsound_s60.cpp
+    SOURCES += \
+        kernel/qapplication_s60.cpp \
+        kernel/qeventdispatcher_s60.cpp \
+        kernel/qwidget_s60.cpp \
+        kernel/qcursor_s60.cpp \
+        kernel/qdesktopwidget_s60.cpp \
+        kernel/qkeymapper_s60.cpp\
+        kernel/qclipboard_s60.cpp\
+        kernel/qdnd_s60.cpp \
+        kernel/qsound_s60.cpp \
+        kernel/qsoftkeymanager_s60.cpp
 
-        HEADERS += \
-                kernel/qt_s60_p.h \
-                kernel/qeventdispatcher_s60_p.h
-        LIBS += -lbafl -lestor
+    HEADERS += \
+        kernel/qt_s60_p.h \
+        kernel/qeventdispatcher_s60_p.h \
+        kernel/qsoftkeymanager_s60_p.h
 
-        INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    LIBS += -lbafl -lestor
+
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    INCLUDEPATH += ../3rdparty/s60
 }
 
 
--- a/src/gui/kernel/qaction.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qaction.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -715,6 +715,10 @@
     it is displayed to the left of the menu text. There is no default
     icon.
 
+    On Symbian the icons which are passed to softkeys, i.e. to actions with
+    softkey role, need to have pixmap alpha channel correctly set otherwise
+    drawing artifacts will appear when softkey is pressed down.
+
     If a null icon (QIcon::isNull() is passed into this function,
     the icon of the action is cleared.
 */
--- a/src/gui/kernel/qapplication.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qapplication.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -121,8 +121,10 @@
 
 static void initResources()
 {
-#ifdef Q_WS_WINCE
+#if defined(Q_WS_WINCE)
     Q_INIT_RESOURCE(qstyle_wince);
+#elif defined(Q_OS_SYMBIAN)
+    Q_INIT_RESOURCE(qstyle_s60);
 #else
     Q_INIT_RESOURCE(qstyle);
 #endif
--- a/src/gui/kernel/qapplication_mac.mm	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qapplication_mac.mm	Fri Mar 12 15:46:37 2010 +0200
@@ -227,8 +227,29 @@
 
 static void qt_mac_read_fontsmoothing_settings()
 {
-    NSInteger appleFontSmoothing = [[NSUserDefaults standardUserDefaults] integerForKey:@"AppleFontSmoothing"];
-    qt_applefontsmoothing_enabled = (appleFontSmoothing > 0);
+    qt_applefontsmoothing_enabled = true;
+    int w = 10, h = 10;
+    QImage image(w, h, QImage::Format_RGB32);
+    image.fill(0xffffffff);
+    QPainter p(&image);
+    p.drawText(0, h, "X\\");
+    p.end();
+
+    const int *bits = (const int *) ((const QImage &) image).bits();
+    int bpl = image.bytesPerLine() / 4;
+    for (int y=0; y<w; ++y) {
+        for (int x=0; x<h; ++x) {
+            int r = qRed(bits[x]);
+            int g = qGreen(bits[x]);
+            int b = qBlue(bits[x]);
+            if (r != g || r != b) {
+                qt_applefontsmoothing_enabled = true;
+                return;
+            }
+        }
+        bits += bpl;
+    }
+    qt_applefontsmoothing_enabled = false;
 }
 
 Q_GUI_EXPORT bool qt_mac_execute_apple_script(const char *script, long script_len, AEDesc *ret) {
@@ -772,11 +793,11 @@
             qt_post_window_change_event(glWidget);
             it->lastUpdateWidget = widget;
         } else if (it->lastUpdateWidget == widget) {
-            // Update the gl wigets that the widget intersected the last time around, 
-            // and that we are not intersecting now. This prevents paint errors when the 
+            // Update the gl wigets that the widget intersected the last time around,
+            // and that we are not intersecting now. This prevents paint errors when the
             // intersecting widget leaves a gl widget.
             qt_post_window_change_event(glWidget);
-            it->lastUpdateWidget = 0;            
+            it->lastUpdateWidget = 0;
         }
     }
 #else
@@ -808,8 +829,8 @@
     // Post a kEventQtRequestWindowChange event. This event is semi-public,
     // don't remove this line!
     qt_event_request_window_change();
-    
-    // Post update request on gl widgets unconditionally. 
+
+    // Post update request on gl widgets unconditionally.
     if (qt_widget_private(widget)->isGLWidget == true) {
         qt_post_window_change_event(widget);
         return;
@@ -1214,8 +1235,6 @@
     if (QApplication::desktopSettingsAware())
         QApplicationPrivate::qt_mac_apply_settings();
 
-    qt_mac_read_fontsmoothing_settings();
-
     // Cocoa application delegate
 #ifdef QT_MAC_USE_COCOA
     NSApplication *cocoaApp = [NSApplication sharedApplication];
@@ -1253,6 +1272,7 @@
     }
    priv->native_modal_dialog_active = false;
 
+   qt_mac_read_fontsmoothing_settings();
 }
 
 void qt_release_apple_event_handler()
@@ -1705,7 +1725,7 @@
             // kEventMouseWheelMoved events if we dont eat this event
             // (actually two events; one for horizontal and one for vertical).
             // As a results of this, and to make sure we dont't receive duplicate events,
-            // we try to detect when this happend by checking the 'compatibilityEvent'. 
+            // we try to detect when this happend by checking the 'compatibilityEvent'.
             SInt32 mdelt = 0;
             GetEventParameter(event, kEventParamMouseWheelSmoothHorizontalDelta, typeSInt32, 0,
                               sizeof(mdelt), 0, &mdelt);
@@ -2576,7 +2596,7 @@
     if (QApplicationPrivate::popupWidgets->isEmpty()) {  // this was the last popup
         delete QApplicationPrivate::popupWidgets;
         QApplicationPrivate::popupWidgets = 0;
-        
+
         // Special case for Tool windows: since they are activated and deactived together
         // with a normal window they never become the QApplicationPrivate::active_window.
         QWidget *appFocusWidget = QApplication::focusWidget();
--- a/src/gui/kernel/qapplication_s60.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qapplication_s60.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -71,6 +71,7 @@
 #  include <private/qcoefepinputcontext_p.h>
 # endif
 # include <private/qs60mainapplication_p.h>
+# include <centralrepository.h>
 #endif
 
 #include "private/qstylesheetstyle_p.h"
@@ -1204,6 +1205,24 @@
         S60->virtualMouseRequired = false;
     }
 
+    S60->avkonComponentsSupportTransparency = false;
+
+#ifdef Q_WS_S60
+    TUid KCRUidAvkon = { 0x101F876E };
+    TUint32 KAknAvkonTransparencyEnabled = 0x0000000D;
+
+    CRepository* repository = 0;
+    TRAP(err, repository = CRepository::NewL(KCRUidAvkon));
+
+    if(err == KErrNone) {
+        TInt value = 0;
+        err = repository->Get(KAknAvkonTransparencyEnabled, value);
+        if(err == KErrNone) {
+            S60->avkonComponentsSupportTransparency = (value==1) ? true : false;
+        }
+    }
+#endif    
+
     if (touch) {
         QApplicationPrivate::navigationMode = Qt::NavigationModeNone;
     } else {
--- a/src/gui/kernel/qclipboard_s60.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qclipboard_s60.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -164,7 +164,8 @@
         TCardinality mimeTypeSize;
         aStream >> mimeTypeSize;
         HBufC* mimeTypeBuf = HBufC::NewLC(aStream,mimeTypeSize);
-        QString mimeType = QString::fromUtf16(mimeTypeBuf->Des().Ptr(),mimeTypeBuf->Length());
+        QString mimeType = QString(reinterpret_cast<const QChar *>(mimeTypeBuf->Des().Ptr()),
+                                   mimeTypeBuf->Length());
         CleanupStack::PopAndDestroy(mimeTypeBuf);
         // mime data
         TCardinality dataSize;
--- a/src/gui/kernel/qcocoamenuloader_mac.mm	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qcocoamenuloader_mac.mm	Fri Mar 12 15:46:37 2010 +0200
@@ -110,6 +110,12 @@
     }
 }
 
+- (void)removeActionsFromAppMenu
+{
+    for (NSMenuItem *item in [appMenu itemArray])
+        [item setTag:nil];
+}
+
 - (void)dealloc
 {
     [lastAppSpecificItem release];
--- a/src/gui/kernel/qcocoamenuloader_mac_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qcocoamenuloader_mac_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -70,6 +70,7 @@
 
 }
 - (void)ensureAppMenuInMenu:(NSMenu *)menu;
+- (void)removeActionsFromAppMenu;
 - (NSMenu *)applicationMenu;
 - (NSMenu *)menu;
 - (NSMenuItem *)quitMenuItem;
--- a/src/gui/kernel/qcocoaview_mac.mm	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qcocoaview_mac.mm	Fri Mar 12 15:46:37 2010 +0200
@@ -644,6 +644,8 @@
 
 - (void)mouseEntered:(NSEvent *)event
 {
+    if (qwidgetprivate->data.in_destructor)
+        return;
     QEvent enterEvent(QEvent::Enter);
     NSPoint windowPoint = [event locationInWindow];
     NSPoint globalPoint = [[event window] convertBaseToScreen:windowPoint];
--- a/src/gui/kernel/qdnd_x11.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qdnd_x11.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -617,7 +617,7 @@
             // so it should be safe to check that the second char is 0
             // to verify that it is utf16
             if (data.size() > 1 && data.at(1) == 0)
-                return QString::fromUtf16(reinterpret_cast<const ushort *>(data.constData()),
+                return QString::fromRawData((const QChar *)data.constData(),
                                 data.size() / 2).split(QLatin1Char('\n')).first().toLatin1();
         }
     }
--- a/src/gui/kernel/qeventdispatcher_mac.mm	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qeventdispatcher_mac.mm	Fri Mar 12 15:46:37 2010 +0200
@@ -569,7 +569,7 @@
             // in cocoa. [NSApp run] should be called at least once for any cocoa app.
             if (NSModalSession session = d->currentModalSession()) {
                 QBoolBlocker execGuard(d->currentExecIsNSAppRun, false);
-                while (!d->interrupt && [NSApp runModalSession:session] == NSRunContinuesResponse)
+                while ([NSApp runModalSession:session] == NSRunContinuesResponse && !d->interrupt)
                     qt_mac_waitForMoreModalSessionEvents();
                 if (!d->interrupt && session == d->currentModalSessionCached) {
                     // INVARIANT: Someone called e.g. [NSApp stopModal:] from outside the event
--- a/src/gui/kernel/qmime_mac.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qmime_mac.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -431,8 +431,8 @@
                                              firstData.size(), CFStringGetSystemEncoding(), false));
         ret = QString(str);
     } else if (flavor == QLatin1String("public.utf16-plain-text")) {
-        ret = QString::fromUtf16(reinterpret_cast<const ushort *>(firstData.constData()),
-                                 firstData.size() / sizeof(ushort));
+        ret = QString(reinterpret_cast<const QChar *>(firstData.constData()),
+                      firstData.size() / sizeof(QChar));
     } else {
         qWarning("QMime::convertToMime: unhandled mimetype: %s", qPrintable(mimetype));
     }
--- a/src/gui/kernel/qsoftkeymanager.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qsoftkeymanager.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -41,34 +41,18 @@
 
 #include "qapplication.h"
 #include "qevent.h"
-#ifdef Q_WS_S60
-#include "qstyle.h"
-#include "private/qt_s60_p.h"
-#endif
+#include "qbitmap.h"
 #include "private/qsoftkeymanager_p.h"
 #include "private/qobject_p.h"
+#include "private/qsoftkeymanager_common_p.h"
+
+#ifdef Q_WS_S60
+#include "private/qsoftkeymanager_s60_p.h"
+#endif
 
 #ifndef QT_NO_SOFTKEYMANAGER
 QT_BEGIN_NAMESPACE
 
-#ifdef Q_WS_S60
-static const int s60CommandStart = 6000;
-#endif
-
-class QSoftKeyManagerPrivate : public QObjectPrivate
-{
-    Q_DECLARE_PUBLIC(QSoftKeyManager)
-
-public:
-    static void updateSoftKeys_sys(const QList<QAction*> &softKeys);
-
-private:
-    QHash<QAction*, Qt::Key> keyedActions;
-    static QSoftKeyManager *self;
-    static QWidget *softKeySource;
-};
-
-QWidget *QSoftKeyManagerPrivate::softKeySource = 0;
 QSoftKeyManager *QSoftKeyManagerPrivate::self = 0;
 
 const char *QSoftKeyManager::standardSoftKeyText(StandardSoftKey standardKey)
@@ -105,7 +89,12 @@
     return QSoftKeyManagerPrivate::self;
 }
 
-QSoftKeyManager::QSoftKeyManager() : QObject(*(new QSoftKeyManagerPrivate), 0)
+QSoftKeyManager::QSoftKeyManager() :
+#ifdef Q_WS_S60
+    QObject(*(new QSoftKeyManagerPrivateS60), 0)
+#else
+    QObject(*(new QSoftKeyManagerPrivate), 0)
+#endif
 {
 }
 
@@ -115,10 +104,11 @@
     QAction *action = new QAction(QSoftKeyManager::tr(text), actionWidget);
     QAction::SoftKeyRole softKeyRole = QAction::NoSoftKey;
     switch (standardKey) {
+    case MenuSoftKey: // FALL-THROUGH
+        action->setProperty(MENU_ACTION_PROPERTY, QVariant(true)); // TODO: can be refactored away to use _q_action_menubar
     case OkSoftKey:
     case SelectSoftKey:
     case DoneSoftKey:
-    case MenuSoftKey:
         softKeyRole = QAction::PositiveSoftKey;
         break;
     case CancelSoftKey:
@@ -147,7 +137,7 @@
 #endif //QT_NO_ACTION
 }
 
-void QSoftKeyManager::cleanupHash(QObject* obj)
+void QSoftKeyManager::cleanupHash(QObject *obj)
 {
     Q_D(QSoftKeyManager);
     QAction *action = qobject_cast<QAction*>(obj);
@@ -175,137 +165,78 @@
     QApplication::postEvent(QSoftKeyManager::instance(), event);
 }
 
+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));
+            ret = true;
+        }
+    }
+    return ret;
+}
+
+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();
+    } else {
+        // Softkey merging is based on four criterias
+        // 1. Implicit merging is used whenever focus widget does not specify any softkeys
+        bool implicitMerging = d->requestedSoftKeyActions.isEmpty();
+        // 2. Explicit merging with parent is used whenever WA_MergeSoftkeys widget attribute is set
+        bool explicitMerging = previousSource->testAttribute(Qt::WA_MergeSoftkeys);
+        // 3. Explicit merging with all parents
+        recursiveMerging |= previousSource->testAttribute(Qt::WA_MergeSoftkeysRecursively);
+        // 4. Implicit and explicit merging always stops at window boundary
+        bool merging = (implicitMerging || explicitMerging || recursiveMerging) && !previousSource->isWindow();
+
+        source = merging ? previousSource->parentWidget() : NULL;
+    }
+    return source;
+}
+
+bool QSoftKeyManager::handleUpdateSoftKeys()
+{
+    Q_D(QSoftKeyManager);
+    int level = 0;
+    d->requestedSoftKeyActions.clear();
+    bool recursiveMerging = false;
+    QWidget *source = softkeySource(NULL, recursiveMerging);
+    do {
+        if (source) {
+            bool added = appendSoftkeys(*source, level);
+            source = softkeySource(source, recursiveMerging);
+            level = added ? ++level : level;
+        }
+    } while (source);
+
+    d->updateSoftKeys_sys();
+    return true;
+}
+
 bool QSoftKeyManager::event(QEvent *e)
 {
 #ifndef QT_NO_ACTION
-    if (e->type() == QEvent::UpdateSoftKeys) {
-        QList<QAction*> softKeys;
-        QWidget *source = QApplication::focusWidget();
-        do {
-            if (source) {
-                QList<QAction*> actions = source->actions();
-                for (int i = 0; i < actions.count(); ++i) {
-                    if (actions.at(i)->softKeyRole() != QAction::NoSoftKey)
-                        softKeys.append(actions.at(i));
-                }
-
-                QWidget *parent = source->parentWidget();
-                if (parent && softKeys.isEmpty() && !source->isWindow())
-                    source = parent;
-                else
-                    break;
-            } else {
-                source = QApplication::activeWindow();
-            }
-        } while (source);
-
-        QSoftKeyManagerPrivate::softKeySource = source;
-        QSoftKeyManagerPrivate::updateSoftKeys_sys(softKeys);
-        return true;
-    }
+    if (e->type() == QEvent::UpdateSoftKeys)
+        return handleUpdateSoftKeys();
 #endif //QT_NO_ACTION
     return false;
 }
 
 #ifdef Q_WS_S60
-void QSoftKeyManagerPrivate::updateSoftKeys_sys(const QList<QAction*> &softkeys)
-{
-    // lets not update softkeys if s60 native dialog or menu is shown
-    if (QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes)
-            || CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog())
-        return;
-
-    CEikButtonGroupContainer* nativeContainer = S60->buttonGroupContainer();
-    nativeContainer->DrawableWindow()->SetOrdinalPosition(0);
-    nativeContainer->DrawableWindow()->SetPointerCapturePriority(1); //keep softkeys available in modal dialog
-    nativeContainer->DrawableWindow()->SetFaded(EFalse, RWindowTreeNode::EFadeIncludeChildren);
-
-    int position = -1;
-    bool needsExitButton = true;
-    QT_TRAP_THROWING(
-        //Using -1 instead of EAknSoftkeyEmpty to avoid flickering.
-        nativeContainer->SetCommandL(0, -1, KNullDesC);
-        nativeContainer->SetCommandL(2, -1, KNullDesC);
-    );
-
-    for (int index = 0; index < softkeys.count(); index++) {
-        const QAction* softKeyAction = softkeys.at(index);
-        switch (softKeyAction->softKeyRole()) {
-        // Positive Actions on the LSK
-        case QAction::PositiveSoftKey:
-            position = 0;
-            break;
-        case QAction::SelectSoftKey:
-            position = 0;
-            break;
-        // Negative Actions on the RSK
-        case QAction::NegativeSoftKey:
-            needsExitButton = false;
-            position = 2;
-            break;
-        default:
-            break;
-        }
-
-        int command = (softKeyAction->objectName().contains(QLatin1String("_q_menuSoftKeyAction")))
-                    ? EAknSoftkeyOptions
-                    : s60CommandStart + index;
-
-        // _q_menuSoftKeyAction action is set to "invisible" and all invisible actions are by default
-        // disabled. However we never want to dim options softkey, even it is set to "invisible"
-        bool dimmed = (command == EAknSoftkeyOptions) ? false : !softKeyAction->isEnabled();
-
-        if (position != -1) {
-            const int underlineShortCut = QApplication::style()->styleHint(QStyle::SH_UnderlineShortcut);
-            QString iconText = softKeyAction->iconText();
-            TPtrC text = qt_QString2TPtrC( underlineShortCut ? softKeyAction->text() : iconText);
-            QT_TRAP_THROWING(
-                nativeContainer->SetCommandL(position, command, text);
-                nativeContainer->DimCommand(command, dimmed);
-            );
-        }
-    }
-
-    const Qt::WindowType sourceWindowType = QSoftKeyManagerPrivate::softKeySource
-        ?   QSoftKeyManagerPrivate::softKeySource->window()->windowType()
-        :   Qt::Widget;
-
-    if (needsExitButton && sourceWindowType != Qt::Dialog && sourceWindowType != Qt::Popup)
-        QT_TRAP_THROWING(
-            nativeContainer->SetCommandL(2, EAknSoftkeyExit, qt_QString2TPtrC(QSoftKeyManager::tr("Exit"))));
-
-    nativeContainer->DrawDeferred(); // 3.1 needs an extra invitation
-}
-
 bool QSoftKeyManager::handleCommand(int command)
 {
-    if (command >= s60CommandStart && QSoftKeyManagerPrivate::softKeySource) {
-        int index = command - s60CommandStart;
-        const QList<QAction*>& softKeys = QSoftKeyManagerPrivate::softKeySource->actions();
-        for (int i = 0, j = 0; i < softKeys.count(); ++i) {
-            QAction *action = softKeys.at(i);
-            if (action->softKeyRole() != QAction::NoSoftKey) {
-                if (j == index) {
-                    QWidget *parent = action->parentWidget();
-                    if (parent && parent->isEnabled()) {
-                        action->activate(QAction::Trigger);
-                        return true;
-                    }
-                }
-                j++;
-            }
-        }
-    }
-
-    return false;
+    return static_cast<QSoftKeyManagerPrivateS60*>(QSoftKeyManager::instance()->d_func())->handleCommand(command);
 }
-
-#else
-
-void QSoftKeyManagerPrivate::updateSoftKeys_sys(const QList<QAction*> &)
-{
-}
-
 #endif
 
 QT_END_NAMESPACE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gui/kernel/qsoftkeymanager_common_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** 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 QtGui 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 QSOFTKEYMANAGER_COMMON_P_H
+#define QSOFTKEYMANAGER_COMMON_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.
+//
+
+QT_BEGIN_HEADER
+
+#ifndef QT_NO_SOFTKEYMANAGER
+
+QT_BEGIN_NAMESPACE
+
+class QSoftKeyManagerPrivate : public QObjectPrivate
+{
+    Q_DECLARE_PUBLIC(QSoftKeyManager)
+
+public:
+    virtual void updateSoftKeys_sys() {};
+
+protected:
+    static QSoftKeyManager *self;
+    QHash<QAction*, Qt::Key> keyedActions;
+    QMultiHash<int, QAction*> requestedSoftKeyActions;
+
+};
+
+QT_END_NAMESPACE
+
+#endif //QT_NO_SOFTKEYMANAGER
+
+QT_END_HEADER
+
+#endif // QSOFTKEYMANAGER_COMMON_P_H
\ No newline at end of file
--- a/src/gui/kernel/qsoftkeymanager_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qsoftkeymanager_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -63,6 +63,8 @@
 
 class QSoftKeyManagerPrivate;
 
+const char MENU_ACTION_PROPERTY[] = "_q_menuaction";
+
 class Q_AUTOTEST_EXPORT QSoftKeyManager : public QObject
 {
     Q_OBJECT
@@ -79,26 +81,30 @@
     };
 
     static void updateSoftKeys();
+#ifdef Q_WS_S60
+    static bool handleCommand(int);
+#endif
+
     static QAction *createAction(StandardSoftKey standardKey, QWidget *actionWidget);
     static QAction *createKeyedAction(StandardSoftKey standardKey, Qt::Key key, QWidget *actionWidget);
 
-#ifdef Q_WS_S60
-    static bool handleCommand(int);
-#endif
+protected:
+    bool event(QEvent *e);
 
 private:
     QSoftKeyManager();
     static QSoftKeyManager *instance();
     static const char *standardSoftKeyText(StandardSoftKey standardKey);
-
-protected:
-    bool event(QEvent *e);
-
-    Q_DISABLE_COPY(QSoftKeyManager)
+    bool appendSoftkeys(const QWidget &source, int level);
+    QWidget *softkeySource(QWidget *previousSource, bool& recursiveMerging);
+    bool handleUpdateSoftKeys();
 
 private Q_SLOTS:
     void cleanupHash(QObject* obj);
     void sendKeyEvent();
+
+private:
+    Q_DISABLE_COPY(QSoftKeyManager)
 };
 
 QT_END_NAMESPACE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gui/kernel/qsoftkeymanager_s60.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,366 @@
+/****************************************************************************
+**
+** 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 QtGui 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 "qapplication.h"
+#include "qevent.h"
+#include "qbitmap.h"
+#include "qstyle.h"
+#include "qmenubar.h"
+#include "private/qt_s60_p.h"
+#include "private/qmenu_p.h"
+#include "private/qsoftkeymanager_p.h"
+#include "private/qsoftkeymanager_s60_p.h"
+#include "private/qobject_p.h"
+//#include <eiksoftkeyimage.h>
+#include <eikcmbut.h>
+
+#ifndef QT_NO_SOFTKEYMANAGER
+QT_BEGIN_NAMESPACE
+
+const int S60_COMMAND_START = 6000;
+const int LSK_POSITION = 0;
+const int MSK_POSITION = 3;
+const int RSK_POSITION = 2;
+
+QSoftKeyManagerPrivateS60::QSoftKeyManagerPrivateS60()
+{
+    cachedCbaIconSize[0] = QSize(0,0);
+    cachedCbaIconSize[1] = QSize(0,0);
+    skipNextUpdate = false;
+}
+
+bool QSoftKeyManagerPrivateS60::skipCbaUpdate()
+{
+    // lets not update softkeys if
+    // 1. We don't have application panes, i.e. cba
+    // 2. S60 native dialog or menu is shown
+    if (QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes) ||
+        CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog() || skipNextUpdate) {
+        skipNextUpdate = false;
+        return true;
+    }
+    return false;
+}
+
+void QSoftKeyManagerPrivateS60::ensureCbaVisibilityAndResponsiviness(CEikButtonGroupContainer &cba)
+{
+    RDrawableWindow *cbaWindow = cba.DrawableWindow();
+    Q_ASSERT_X(cbaWindow, Q_FUNC_INFO, "Native CBA does not have window!");
+    // Make sure CBA is visible, i.e. CBA window is on top
+    cbaWindow->SetOrdinalPosition(0);
+    // Qt shares same CBA instance between top-level widgets,
+    // make sure we are not faded by underlying window.
+    cbaWindow->SetFaded(EFalse, RWindowTreeNode::EFadeIncludeChildren);
+    // Modal dialogs capture pointer events, but shared cba instance
+    // shall stay responsive. Raise pointer capture priority to keep
+    // softkeys responsive in modal dialogs
+    cbaWindow->SetPointerCapturePriority(1);
+}
+
+void QSoftKeyManagerPrivateS60::clearSoftkeys(CEikButtonGroupContainer &cba)
+{
+    QT_TRAP_THROWING(
+        //Using -1 instead of EAknSoftkeyEmpty to avoid flickering.
+        cba.SetCommandL(0, -1, KNullDesC);
+        // TODO: Should we clear also middle SK?
+        cba.SetCommandL(2, -1, KNullDesC);
+    );
+    realSoftKeyActions.clear();
+}
+
+QString QSoftKeyManagerPrivateS60::softkeyText(QAction &softkeyAction)
+{
+    // In S60 softkeys and menu items do not support key accelerators (i.e.
+    // CTRL+X). Therefore, removing the accelerator characters from both softkey
+    // and menu item texts.
+    const int underlineShortCut = QApplication::style()->styleHint(QStyle::SH_UnderlineShortcut);
+    QString iconText = softkeyAction.iconText();
+    return underlineShortCut ? softkeyAction.text() : iconText;
+}
+
+QAction *QSoftKeyManagerPrivateS60::highestPrioritySoftkey(QAction::SoftKeyRole role)
+{
+    QAction *ret = NULL;
+    // Priority look up is two level
+    // 1. First widget with softkeys always has highest priority
+    for (int level = 0; !ret; level++) {
+        // 2. Highest priority action within widget
+        QList<QAction*> actions = requestedSoftKeyActions.values(level);
+        if (actions.isEmpty())
+            break;
+        qSort(actions.begin(), actions.end(), QSoftKeyManagerPrivateS60::actionPriorityMoreThan);
+        foreach (QAction *action, actions) {
+            if (action->softKeyRole() == role) {
+                ret = action;
+                break;
+            }
+        }
+    }
+    return ret;
+}
+
+bool QSoftKeyManagerPrivateS60::actionPriorityMoreThan(const QAction *firstItem, const QAction *secondItem)
+{
+    return firstItem->priority() > secondItem->priority();
+}
+
+void QSoftKeyManagerPrivateS60::setNativeSoftkey(CEikButtonGroupContainer &cba,
+                                              TInt position, TInt command, const TDesC &text)
+{
+    // Calling SetCommandL causes CBA redraw
+    QT_TRAP_THROWING(cba.SetCommandL(position, command, text));
+}
+
+bool QSoftKeyManagerPrivateS60::isOrientationLandscape()
+{
+    // Hard to believe that there is no public API in S60 to
+    // get current orientation. This workaround works with currently supported resolutions
+    return  S60->screenHeightInPixels <  S60->screenWidthInPixels;
+}
+
+QSize QSoftKeyManagerPrivateS60::cbaIconSize(CEikButtonGroupContainer *cba, int position)
+{
+    Q_UNUSED(cba);
+    Q_UNUSED(position);
+
+    // Will be implemented when EikSoftkeyImage usage license wise is OK
+/*
+    const int index = isOrientationLandscape() ? 0 : 1;
+    if(cachedCbaIconSize[index].isNull()) {
+        // Only way I figured out to get CBA icon size without RnD SDK, was
+        // Only way I figured out to get CBA icon size without RnD SDK, was
+        // to set some dummy icon to CBA first and then ask CBA button CCoeControl::Size()
+        // The returned value is cached to avoid unnecessary icon setting every time.
+        const bool left = (position == LSK_POSITION);
+        if(position == LSK_POSITION || position == RSK_POSITION) {
+            CEikImage* tmpImage = NULL;
+            QT_TRAP_THROWING(tmpImage = new (ELeave) CEikImage);
+            EikSoftkeyImage::SetImage(cba, *tmpImage, left); // Takes myimage ownership
+            int command = S60_COMMAND_START + position;
+            setNativeSoftkey(*cba, position, command, KNullDesC());
+            cachedCbaIconSize[index] = qt_TSize2QSize(cba->ControlOrNull(command)->Size());
+            EikSoftkeyImage::SetLabel(cba, left);
+        }
+    }
+
+    return cachedCbaIconSize[index];
+*/
+    return QSize();
+}
+
+bool QSoftKeyManagerPrivateS60::setSoftkeyImage(CEikButtonGroupContainer *cba,
+                                            QAction &action, int position)
+{
+    bool ret = false;
+    Q_UNUSED(cba);
+    Q_UNUSED(action);
+    Q_UNUSED(position);
+
+    // Will be implemented when EikSoftkeyImage usage license wise is OK
+    /*
+    const bool left = (position == LSK_POSITION);
+    if(position == LSK_POSITION || position == RSK_POSITION) {
+        QIcon icon = action.icon();
+        if (!icon.isNull()) {
+            QPixmap pm = icon.pixmap(cbaIconSize(cba, position));
+            pm = pm.scaled(cbaIconSize(cba, position));
+            QBitmap mask = pm.mask();
+            if (mask.isNull()) {
+                mask = QBitmap(pm.size());
+                mask.fill(Qt::color1);
+            }
+
+            CFbsBitmap* nBitmap = pm.toSymbianCFbsBitmap();
+            CFbsBitmap* nMask = mask.toSymbianCFbsBitmap();
+
+            CEikImage* myimage = new (ELeave) CEikImage;
+            myimage->SetPicture( nBitmap, nMask ); // nBitmap and nMask ownership transfered
+
+            EikSoftkeyImage::SetImage(cba, *myimage, left); // Takes myimage ownership
+            ret = true;
+        } else {
+            // Restore softkey to text based
+            EikSoftkeyImage::SetLabel(cba, left);
+        }
+    }
+    */
+    return ret;
+}
+
+bool QSoftKeyManagerPrivateS60::setSoftkey(CEikButtonGroupContainer &cba,
+                                        QAction::SoftKeyRole role, int position)
+{
+    QAction *action = highestPrioritySoftkey(role);
+    if (action) {
+        setSoftkeyImage(&cba, *action, position);
+        QString text = softkeyText(*action);
+        TPtrC nativeText = qt_QString2TPtrC(text);
+        int command = S60_COMMAND_START + position;
+        setNativeSoftkey(cba, position, command, nativeText);
+        cba.DimCommand(command, !action->isEnabled());
+        realSoftKeyActions.insert(command, action);
+        return true;
+    }
+    return false;
+}
+
+bool QSoftKeyManagerPrivateS60::setLeftSoftkey(CEikButtonGroupContainer &cba)
+{
+    return setSoftkey(cba, QAction::PositiveSoftKey, LSK_POSITION);
+}
+
+bool QSoftKeyManagerPrivateS60::setMiddleSoftkey(CEikButtonGroupContainer &cba)
+{
+    // Note: In order to get MSK working, application has to have EAknEnableMSK flag set
+    // Currently it is not possible very easily)
+    // For more information see: http://wiki.forum.nokia.com/index.php/Middle_softkey_usage
+    return setSoftkey(cba, QAction::SelectSoftKey, MSK_POSITION);
+}
+
+bool QSoftKeyManagerPrivateS60::setRightSoftkey(CEikButtonGroupContainer &cba)
+{
+    if (!setSoftkey(cba, QAction::NegativeSoftKey, RSK_POSITION)) {
+        Qt::WindowType windowType = Qt::Window;
+        QAction *action = requestedSoftKeyActions.value(0);
+        if (action) {
+            QWidget *actionParent = action->parentWidget();
+            Q_ASSERT_X(actionParent, Q_FUNC_INFO, "No parent set for softkey action!");
+
+            QWidget *actionWindow = actionParent->window();
+            Q_ASSERT_X(actionWindow, Q_FUNC_INFO, "Softkey action does not have window!");
+            windowType = actionWindow->windowType();
+        }
+
+        if (windowType != Qt::Dialog && windowType != Qt::Popup) {
+            QString text(QSoftKeyManager::tr("Exit"));
+            TPtrC nativeText = qt_QString2TPtrC(text);
+            setNativeSoftkey(cba, RSK_POSITION, EAknSoftkeyExit, nativeText);
+            return true;
+        }
+    }
+    return false;
+}
+
+void QSoftKeyManagerPrivateS60::setSoftkeys(CEikButtonGroupContainer &cba)
+{
+    int requestedSoftkeyCount = requestedSoftKeyActions.count();
+    const int maxSoftkeyCount = 2; // TODO: differs based on orientation ans S60 versions (some have MSK)
+    if (requestedSoftkeyCount > maxSoftkeyCount) {
+        // We have more softkeys than available slots
+        // Put highest priority negative action to RSK and Options menu with rest of softkey actions to LSK
+        // TODO: Build menu
+        setLeftSoftkey(cba);
+        if(AknLayoutUtils::MSKEnabled())
+            setMiddleSoftkey(cba);
+        setRightSoftkey(cba);
+    } else {
+        // We have less softkeys than available slots
+        // Put softkeys to request slots based on role
+        setLeftSoftkey(cba);
+        if(AknLayoutUtils::MSKEnabled())
+            setMiddleSoftkey(cba);
+        setRightSoftkey(cba);
+    }
+}
+
+void QSoftKeyManagerPrivateS60::updateSoftKeys_sys()
+{
+    //bool status = CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog();
+    if (skipCbaUpdate())
+        return;
+
+    CEikButtonGroupContainer *nativeContainer = S60->buttonGroupContainer();
+    Q_ASSERT_X(nativeContainer, Q_FUNC_INFO, "Native CBA does not exist!");
+    ensureCbaVisibilityAndResponsiviness(*nativeContainer);
+    clearSoftkeys(*nativeContainer);
+    setSoftkeys(*nativeContainer);
+
+    nativeContainer->DrawDeferred(); // 3.1 needs an extra invitation
+}
+
+bool QSoftKeyManagerPrivateS60::handleCommand(int command)
+{
+    QAction *action = realSoftKeyActions.value(command);
+    if (action) {
+        QVariant property = action->property(MENU_ACTION_PROPERTY);
+        if (property.isValid() && property.toBool()) {
+            QT_TRAP_THROWING(S60->menuBar()->TryDisplayMenuBarL());
+        } else if (action->menu()) {
+            // TODO: This is hack, in order to use exising QMenuBar implementation for Symbian
+            // menubar needs to have widget to which it is associated. Since we want to associate
+            // menubar to action (which is inherited from QObejct), we create and associate QWidget
+            // to action and pass that for QMenuBar. This associates the menubar to action, and we
+            // can have own menubar for each action.
+            QWidget *actionContainer = action->property("_q_action_widget").value<QWidget*>();
+            if(!actionContainer) {
+                actionContainer = new QWidget(action->parentWidget());
+                QMenuBar *menuBar = new QMenuBar(actionContainer);
+                foreach(QAction *menuAction, action->menu()->actions()) {
+                    QMenu *menu = menuAction->menu();
+                    if(menu)
+                        menuBar->addMenu(action->menu());
+                    else
+                        menuBar->addAction(menuAction);
+                }
+                QVariant v;
+                v.setValue(actionContainer);
+                action->setProperty("_q_action_widget", v);
+            }
+            qt_symbian_next_menu_from_action(actionContainer);
+            QT_TRAP_THROWING(S60->menuBar()->TryDisplayMenuBarL());
+            // TODO: hack remove, it can happen that IsDisplayingMenuOrDialog return false
+            // in updateSoftKeys_sys, and we will override menu CBA with our own
+            skipNextUpdate = true;
+        } else {
+            Q_ASSERT(action->softKeyRole() != QAction::NoSoftKey);
+            QWidget *actionParent = action->parentWidget();
+            Q_ASSERT_X(actionParent, Q_FUNC_INFO, "No parent set for softkey action!");
+            if (actionParent->isEnabled()) {
+                action->activate(QAction::Trigger);
+                return true;
+            }
+        }
+    }
+    return false;
+}
+
+QT_END_NAMESPACE
+#endif //QT_NO_SOFTKEYMANAGER
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gui/kernel/qsoftkeymanager_s60_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** 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 QtGui 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 QSOFTKEYMANAGER_S60_P_H
+#define QSOFTKEYMANAGER_S60_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/qobject_p.h"
+#include "private/qsoftkeymanager_common_p.h"
+
+QT_BEGIN_HEADER
+
+#ifndef QT_NO_SOFTKEYMANAGER
+
+QT_BEGIN_NAMESPACE
+
+class CEikButtonGroupContainer;
+class QAction;
+
+class QSoftKeyManagerPrivateS60 : public QSoftKeyManagerPrivate
+{
+    Q_DECLARE_PUBLIC(QSoftKeyManager)
+
+public:
+    QSoftKeyManagerPrivateS60();
+
+public:
+    void updateSoftKeys_sys();
+    bool handleCommand(int command);
+
+private:
+    bool skipCbaUpdate();
+    void ensureCbaVisibilityAndResponsiviness(CEikButtonGroupContainer &cba);
+    void clearSoftkeys(CEikButtonGroupContainer &cba);
+    QString softkeyText(QAction &softkeyAction);
+    QAction *highestPrioritySoftkey(QAction::SoftKeyRole role);
+    static bool actionPriorityMoreThan(const QAction* item1, const QAction* item2);
+    void setNativeSoftkey(CEikButtonGroupContainer &cba, TInt position, TInt command, const TDesC& text);
+    bool isOrientationLandscape();
+    QSize cbaIconSize(CEikButtonGroupContainer *cba, int position);
+    bool setSoftkeyImage(CEikButtonGroupContainer *cba, QAction &action, int position);
+    bool setSoftkey(CEikButtonGroupContainer &cba, QAction::SoftKeyRole role, int position);
+    bool setLeftSoftkey(CEikButtonGroupContainer &cba);
+    bool setMiddleSoftkey(CEikButtonGroupContainer &cba);
+    bool setRightSoftkey(CEikButtonGroupContainer &cba);
+    void setSoftkeys(CEikButtonGroupContainer &cba);
+
+private:
+    QHash<int, QAction*> realSoftKeyActions;
+    QSize cachedCbaIconSize[2];
+    bool skipNextUpdate;
+};
+
+
+QT_END_NAMESPACE
+
+#endif //QT_NO_SOFTKEYMANAGER
+
+QT_END_HEADER
+
+#endif // QSOFTKEYMANAGER_S60_P_H
--- a/src/gui/kernel/qt_cocoa_helpers_mac.mm	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm	Fri Mar 12 15:46:37 2010 +0200
@@ -143,6 +143,9 @@
 
 void macWindowFade(void * /*OSWindowRef*/ window, float durationSeconds)
 {
+#ifdef QT_MAC_USE_COCOA
+    QMacCocoaAutoReleasePool pool;
+#endif
     OSWindowRef wnd = static_cast<OSWindowRef>(window);
     if (wnd) {
         QWidget *widget;
@@ -1278,4 +1281,17 @@
 }
 #endif
 
+QMacCocoaAutoReleasePool::QMacCocoaAutoReleasePool()
+{
+#ifndef QT_MAC_USE_COCOA
+    NSApplicationLoad();
+#endif
+    pool = (void*)[[NSAutoreleasePool alloc] init];
+}
+
+QMacCocoaAutoReleasePool::~QMacCocoaAutoReleasePool()
+{
+    [(NSAutoreleasePool*)pool release];
+}
+
 QT_END_NAMESPACE
--- a/src/gui/kernel/qt_s60_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qt_s60_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -121,12 +121,14 @@
     int virtualMouseRequired : 1;
     int qtOwnsS60Environment : 1;
     int supportsPremultipliedAlpha : 1;
+    int avkonComponentsSupportTransparency : 1;
     QApplication::QS60MainApplicationFactory s60ApplicationFactory; // typedef'ed pointer type
     static inline void updateScreenSize();
     static inline RWsSession& wsSession();
     static inline RWindowGroup& windowGroup();
     static inline CWsScreenDevice* screenDevice();
     static inline CCoeAppUi* appUi();
+    static inline CEikMenuBar* menuBar();
 #ifdef Q_WS_S60
     static inline CEikStatusPane* statusPane();
     static inline CCoeControl* statusPaneSubPane(TInt aPaneId);
@@ -269,6 +271,11 @@
     return CCoeEnv::Static()-> AppUi();
 }
 
+inline CEikMenuBar* QS60Data::menuBar()
+{
+    return CEikonEnv::Static()->AppUiFactory()->MenuBar();
+}
+
 #ifdef Q_WS_S60
 inline CEikStatusPane* QS60Data::statusPane()
 {
--- a/src/gui/kernel/qwidget.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qwidget.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -2026,6 +2026,14 @@
     }
 #endif
 
+#ifdef Q_WS_S60
+    if (q->windowType() == Qt::Dialog && q->testAttribute(Qt::WA_TranslucentBackground)
+                && S60->avkonComponentsSupportTransparency) {
+        setOpaque(false);
+        return;
+    }
+#endif
+
     if (q->testAttribute(Qt::WA_OpaquePaintEvent) || q->testAttribute(Qt::WA_PaintOnScreen)) {
         setOpaque(true);
         return;
@@ -3344,7 +3352,7 @@
     \note Setting the size to \c{QSize(0, 0)} will cause the widget to not
     appear on screen. This also applies to windows.
 
-    \sa pos, geometry, minimumSize, maximumSize, resizeEvent()
+    \sa pos, geometry, minimumSize, maximumSize, resizeEvent(), adjustSize()
 */
 
 /*!
--- a/src/gui/kernel/qwidget_mac.mm	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/kernel/qwidget_mac.mm	Fri Mar 12 15:46:37 2010 +0200
@@ -404,7 +404,7 @@
         return;
     qt_mac_app_fullscreen = b;
     if (b) {
-        SetSystemUIMode(kUIModeAllSuppressed, 0);
+        SetSystemUIMode(kUIModeAllHidden, kUIOptionAutoShowMenuBar);
     } else {
         SetSystemUIMode(kUIModeNormal, 0);
     }
@@ -3414,6 +3414,38 @@
             ShowHide(window, false);
 #else
             [window orderOut:window];
+            // Unfortunately it is not as easy as just hiding the window, we need
+            // to find out if we were in full screen mode. If we were and this is
+            // the last window in full screen mode then we need to unset the full screen
+            // mode. If this is not the last visible window in full screen mode then we
+            // don't change the full screen mode.
+            if(q->isFullScreen())
+            {
+                bool keepFullScreen = false;
+                QWidgetList windowList = qApp->topLevelWidgets();
+                int windowCount = windowList.count();
+                for(int i = 0; i < windowCount; i++)
+                {
+                    QWidget *w = windowList[i];
+                    // If it is the same window, we don't need to check :-)
+                    if(q == w)
+                        continue;
+                    // If they are not visible or if they are minimized then
+                    // we just ignore them.
+                    if(!w->isVisible() || w->isMinimized())
+                        continue;
+                    // Is it full screen?
+                    // Notice that if there is one window in full screen mode then we
+                    // cannot switch the full screen mode off, therefore we just abort.
+                    if(w->isFullScreen()) {
+                        keepFullScreen = true;
+                        break;
+                    }
+                }
+                // No windows in full screen mode, so let just unset that flag.
+                if(!keepFullScreen)
+                    qt_mac_set_fullscreen_mode(false);
+            }
 #endif
             toggleDrawers(false);
 #ifndef QT_MAC_USE_COCOA
@@ -3478,6 +3510,8 @@
 
     if (!QWidget::mouseGrabber()){
         QWidget *enterWidget = QApplication::widgetAt(QCursor::pos());
+        if (enterWidget && enterWidget->data->in_destructor)
+            enterWidget = 0;
         QApplicationPrivate::dispatchEnterLeave(enterWidget, qt_mouseover);
         qt_mouseover = enterWidget;
     }
--- a/src/gui/painting/qcolor.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/painting/qcolor.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -934,8 +934,7 @@
 /*!
     \fn QRgb QColor::rgba() const
 
-    Returns the RGB value of the color. Unlike rgb(), the alpha is not
-    stripped.
+    Returns the RGB value of the color, including its alpha.
 
     For an invalid color, the alpha value of the returned color is unspecified.
 
@@ -950,8 +949,7 @@
 }
 
 /*!
-    Sets the RGBA value to \a rgba. Unlike setRgb(QRgb rgb), this function does
-    not ignore the alpha.
+    Sets the RGB value to \a rgba, including its alpha.
 
     \sa rgba(), rgb()
 */
@@ -968,8 +966,7 @@
 /*!
     \fn QRgb QColor::rgb() const
 
-    Returns the RGB value of the color. The alpha is stripped for
-    compatibility.
+    Returns the RGB value of the color. The alpha value is opaque.
 
     \sa getRgb(), rgba()
 */
@@ -983,7 +980,7 @@
 /*!
     \overload
 
-    Sets the RGB value to \a rgb, ignoring the alpha.
+    Sets the RGB value to \a rgb. The alpha value is set to opaque.
 */
 void QColor::setRgb(QRgb rgb)
 {
--- a/src/gui/painting/qpaintengine_raster.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/painting/qpaintengine_raster.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -3081,6 +3081,8 @@
     QVarLengthArray<glyph_t> glyphs;
     QTransform matrix = s->matrix;
     matrix.translate(p.x(), p.y());
+    if (matrix.type() == QTransform::TxScale)
+        fe->setFontScale(matrix.m11());
     ti.fontEngine->getGlyphPositions(ti.glyphs, matrix, ti.flags, glyphs, positions);
 
     const QFixed aliasDelta = QFixed::fromReal(aliasedCoordinateDelta);
@@ -3097,6 +3099,9 @@
         alphaPenBlt(glyphBitmapBytes, glyphBitmapSize.iWidth, 8, x, y, glyphBitmapSize.iWidth, glyphBitmapSize.iHeight);
     }
 
+    if (matrix.type() == QTransform::TxScale)
+        fe->setFontScale(1.0);
+
     return;
 }
 #endif // Q_OS_SYMBIAN && QT_NO_FREETYPE
@@ -3269,7 +3274,9 @@
     }
 
 #elif defined (Q_OS_SYMBIAN) && defined(QT_NO_FREETYPE) // Q_WS_WIN || Q_WS_MAC
-    if (s->matrix.type() <= QTransform::TxTranslate) {
+    if (s->matrix.type() <= QTransform::TxTranslate
+        || (s->matrix.type() == QTransform::TxScale
+                && (qFuzzyCompare(s->matrix.m11(), s->matrix.m22())))) {
         drawGlyphsS60(p, ti);
         return;
     }
--- a/src/gui/painting/qpaintengine_raster_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/painting/qpaintengine_raster_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -264,13 +264,13 @@
 #endif // Q_OS_SYMBIAN && QT_NO_FREETYPE
 
     inline void ensureBrush(const QBrush &brush) {
-        if (!qbrush_fast_equals(state()->lastBrush, brush) || state()->fillFlags)
+        if (!qbrush_fast_equals(state()->lastBrush, brush) || (brush.style() != Qt::NoBrush && state()->fillFlags))
             updateBrush(brush);
     }
     inline void ensureBrush() { ensureBrush(state()->brush); }
 
     inline void ensurePen(const QPen &pen) {
-        if (!qpen_fast_equals(state()->lastPen, pen) || state()->strokeFlags)
+        if (!qpen_fast_equals(state()->lastPen, pen) || (pen.style() != Qt::NoPen && state()->strokeFlags))
             updatePen(pen);
     }
     inline void ensurePen() { ensurePen(state()->pen); }
--- a/src/gui/painting/qpainter.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/painting/qpainter.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -7382,10 +7382,15 @@
 typedef QList<QPaintDeviceRedirection> QPaintDeviceRedirectionList;
 Q_GLOBAL_STATIC(QPaintDeviceRedirectionList, globalRedirections)
 Q_GLOBAL_STATIC(QMutex, globalRedirectionsMutex)
+Q_GLOBAL_STATIC(QAtomicInt, globalRedirectionAtomic)
 
 /*!
     \threadsafe
 
+    \obsolete
+
+    Please use QWidget::render() instead.
+
     Redirects all paint commands for the given paint \a device, to the
     \a replacement device. The optional point \a offset defines an
     offset within the source device.
@@ -7395,9 +7400,10 @@
     device's painter (if any) before redirecting. Call
     restoreRedirected() to restore the previous redirection.
 
-    In general, you'll probably find that calling
-    QPixmap::grabWidget() or QPixmap::grabWindow() is an easier
-    solution.
+    \warning Making use of redirections in the QPainter API implies
+    that QPainter::begin() and QPaintDevice destructors need to hold
+    a mutex for a short period. This can impact performance. Use of
+    QWidget::render is strongly encouraged.
 
     \sa redirected(), restoreRedirected()
 */
@@ -7429,14 +7435,24 @@
     Q_ASSERT(redirections != 0);
     *redirections += QPaintDeviceRedirection(device, rdev ? rdev : replacement, offset + roffset,
                                              hadInternalWidgetRedirection ? redirections->size() - 1 : -1);
+    globalRedirectionAtomic()->ref();
 }
 
 /*!
     \threadsafe
 
+    \obsolete
+
+    Using QWidget::render() obsoletes the use of this function.
+
     Restores the previous redirection for the given \a device after a
     call to setRedirected().
 
+    \warning Making use of redirections in the QPainter API implies
+    that QPainter::begin() and QPaintDevice destructors need to hold
+    a mutex for a short period. This can impact performance. Use of
+    QWidget::render is strongly encouraged.
+
     \sa redirected()
  */
 void QPainter::restoreRedirected(const QPaintDevice *device)
@@ -7447,6 +7463,7 @@
     Q_ASSERT(redirections != 0);
     for (int i = redirections->size()-1; i >= 0; --i) {
         if (redirections->at(i) == device) {
+            globalRedirectionAtomic()->deref();
             const int internalWidgetRedirectionIndex = redirections->at(i).internalWidgetRedirectionIndex;
             redirections->removeAt(i);
             // Restore the internal widget redirection, i.e. remove it from the global
@@ -7468,9 +7485,18 @@
 /*!
     \threadsafe
 
+    \obsolete
+
+    Using QWidget::render() obsoletes the use of this function.
+
     Returns the replacement for given \a device. The optional out
     parameter \a offset returns the offset within the replaced device.
 
+    \warning Making use of redirections in the QPainter API implies
+    that QPainter::begin() and QPaintDevice destructors need to hold
+    a mutex for a short period. This can impact performance. Use of
+    QWidget::render is strongly encouraged.
+
     \sa setRedirected(), restoreRedirected()
 */
 QPaintDevice *QPainter::redirected(const QPaintDevice *device, QPoint *offset)
@@ -7483,6 +7509,9 @@
             return widgetPrivate->redirected(offset);
     }
 
+    if (*globalRedirectionAtomic() == 0)
+        return 0;
+
     QMutexLocker locker(globalRedirectionsMutex());
     QPaintDeviceRedirectionList *redirections = globalRedirections();
     Q_ASSERT(redirections != 0);
@@ -7500,6 +7529,9 @@
 
 void qt_painter_removePaintDevice(QPaintDevice *dev)
 {
+    if (*globalRedirectionAtomic() == 0)
+        return;
+
     QMutex *mutex = 0;
     QT_TRY {
         mutex = globalRedirectionsMutex();
--- a/src/gui/styles/qcommonstyle.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qcommonstyle.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1608,7 +1608,7 @@
 
                     if (toolbutton->toolButtonStyle == Qt::ToolButtonTextUnderIcon) {
                         pr.setHeight(pmSize.height() + 6);
-                        tr.adjust(0, pr.height() - 1, 0, -3);
+                        tr.adjust(0, pr.height() - 1, 0, -2);
                         pr.translate(shiftX, shiftY);
                         if (!hasArrow) {
                             proxy()->drawItemPixmap(p, pr, Qt::AlignCenter, pm);
--- a/src/gui/styles/qgtkstyle.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qgtkstyle.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1106,8 +1106,14 @@
         // ### Note: Ubuntulooks breaks when the proper widget is passed
         //           Murrine engine requires a widget not to get RGBA check - warnings
         GtkWidget *gtkCheckButton = d->gtkWidget(QLS("GtkCheckButton"));
-        gtkPainter.paintOption(gtkCheckButton , buttonRect, state, shadow, gtkRadioButton->style, QLS("radiobutton"));
-
+        QString key(QLS("radiobutton"));
+        if (option->state & State_HasFocus) { // Themes such as Nodoka check this flag
+            key += QLatin1Char('f');
+            GTK_WIDGET_SET_FLAGS(gtkCheckButton, GTK_HAS_FOCUS);
+        }
+        gtkPainter.paintOption(gtkCheckButton , buttonRect, state, shadow, gtkRadioButton->style, key);
+        if (option->state & State_HasFocus)
+            GTK_WIDGET_UNSET_FLAGS(gtkCheckButton, GTK_HAS_FOCUS);
     }
     break;
 
@@ -1128,6 +1134,11 @@
         int spacing;
 
         GtkWidget *gtkCheckButton = d->gtkWidget(QLS("GtkCheckButton"));
+        QString key(QLS("checkbutton"));
+        if (option->state & State_HasFocus) { // Themes such as Nodoka checks this flag
+            key += QLatin1Char('f');
+            GTK_WIDGET_SET_FLAGS(gtkCheckButton, GTK_HAS_FOCUS);
+        }
 
         // Some styles such as aero-clone assume they can paint in the spacing area
         gtkPainter.setClipRect(option->rect);
@@ -1137,7 +1148,10 @@
         QRect checkRect = option->rect.adjusted(spacing, spacing, -spacing, -spacing);
 
         gtkPainter.paintCheckbox(gtkCheckButton, checkRect, state, shadow, gtkCheckButton->style,
-                                 QLS("checkbutton"));
+                                 key);
+        if (option->state & State_HasFocus)
+            GTK_WIDGET_UNSET_FLAGS(gtkCheckButton, GTK_HAS_FOCUS);
+
     }
     break;
 
--- a/src/gui/styles/qmacstyle_mac.mm	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qmacstyle_mac.mm	Fri Mar 12 15:46:37 2010 +0200
@@ -667,32 +667,47 @@
 
     switch (ct) {
     case QStyle::CT_PushButton: {
-        const QPushButton *psh = static_cast<const QPushButton *>(widg);
-        QString buttonText = qt_mac_removeMnemonics(psh->text());
-        if (buttonText.contains(QLatin1Char('\n')))
-            ret = QSize(-1, -1);
-        else if (sz == QAquaSizeLarge)
-            ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricPushButtonHeight));
-        else if (sz == QAquaSizeSmall)
-            ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricSmallPushButtonHeight));
-        else if (sz == QAquaSizeMini)
-            ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricMiniPushButtonHeight));
-
-        if (!psh->icon().isNull()){
-            // If the button got an icon, and the icon is larger than the
-            // button, we can't decide on a default size
-            ret.setWidth(-1);
-            if (ret.height() < psh->iconSize().height())
-                ret.setHeight(-1);
-        }
-        else if (buttonText == QLatin1String("OK") || buttonText == QLatin1String("Cancel")){
-            // Aqua Style guidelines restrict the size of OK and Cancel buttons to 68 pixels.
-            // However, this doesn't work for German, therefore only do it for English,
-            // I suppose it would be better to do some sort of lookups for languages
-            // that like to have really long words.
-            ret.setWidth(77 - 8);
-        }
-
+        const QPushButton *psh = qobject_cast<const QPushButton *>(widg);
+        // If this comparison is false, then the widget was not a push button.
+        // This is bad and there's very little we can do since we were requested to find a
+        // sensible size for a widget that pretends to be a QPushButton but is not.
+        if(psh) {
+            QString buttonText = qt_mac_removeMnemonics(psh->text());
+            if (buttonText.contains(QLatin1Char('\n')))
+                ret = QSize(-1, -1);
+            else if (sz == QAquaSizeLarge)
+                ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricPushButtonHeight));
+            else if (sz == QAquaSizeSmall)
+                ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricSmallPushButtonHeight));
+            else if (sz == QAquaSizeMini)
+                ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricMiniPushButtonHeight));
+
+            if (!psh->icon().isNull()){
+                // If the button got an icon, and the icon is larger than the
+                // button, we can't decide on a default size
+                ret.setWidth(-1);
+                if (ret.height() < psh->iconSize().height())
+                    ret.setHeight(-1);
+            }
+            else if (buttonText == QLatin1String("OK") || buttonText == QLatin1String("Cancel")){
+                // Aqua Style guidelines restrict the size of OK and Cancel buttons to 68 pixels.
+                // However, this doesn't work for German, therefore only do it for English,
+                // I suppose it would be better to do some sort of lookups for languages
+                // that like to have really long words.
+                ret.setWidth(77 - 8);
+            }
+        } else {
+            // The only sensible thing to do is to return whatever the style suggests...
+            if (sz == QAquaSizeLarge)
+                ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricPushButtonHeight));
+            else if (sz == QAquaSizeSmall)
+                ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricSmallPushButtonHeight));
+            else if (sz == QAquaSizeMini)
+                ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricMiniPushButtonHeight));
+            else
+                // Since there's no default size we return the large size...
+                ret = QSize(-1, qt_mac_aqua_get_metric(kThemeMetricPushButtonHeight));
+         }
 #if 0 //Not sure we are applying the rules correctly for RadioButtons/CheckBoxes --Sam
     } else if (ct == QStyle::CT_RadioButton) {
         QRadioButton *rdo = static_cast<QRadioButton *>(widg);
@@ -749,23 +764,30 @@
         if (sz == QAquaSizeSmall) {
             int width = 0, height = 0;
             if (szHint == QSize(-1, -1)) { //just 'guess'..
-                const QToolButton *bt = static_cast<const QToolButton *>(widg);
-                if (!bt->icon().isNull()) {
-                    QSize iconSize = bt->iconSize();
-                    QSize pmSize = bt->icon().actualSize(QSize(32, 32), QIcon::Normal);
-                    width = qMax(width, qMax(iconSize.width(), pmSize.width()));
-                    height = qMax(height, qMax(iconSize.height(), pmSize.height()));
-                }
-                if (!bt->text().isNull() && bt->toolButtonStyle() != Qt::ToolButtonIconOnly) {
-                    int text_width = bt->fontMetrics().width(bt->text()),
-                       text_height = bt->fontMetrics().height();
-                    if (bt->toolButtonStyle() == Qt::ToolButtonTextUnderIcon) {
-                        width = qMax(width, text_width);
-                        height += text_height;
-                    } else {
-                        width += text_width;
-                        width = qMax(height, text_height);
+                const QToolButton *bt = qobject_cast<const QToolButton *>(widg);
+                // If this conversion fails then the widget was not what it claimed to be.
+                if(bt) {
+                    if (!bt->icon().isNull()) {
+                        QSize iconSize = bt->iconSize();
+                        QSize pmSize = bt->icon().actualSize(QSize(32, 32), QIcon::Normal);
+                        width = qMax(width, qMax(iconSize.width(), pmSize.width()));
+                        height = qMax(height, qMax(iconSize.height(), pmSize.height()));
                     }
+                    if (!bt->text().isNull() && bt->toolButtonStyle() != Qt::ToolButtonIconOnly) {
+                        int text_width = bt->fontMetrics().width(bt->text()),
+                           text_height = bt->fontMetrics().height();
+                        if (bt->toolButtonStyle() == Qt::ToolButtonTextUnderIcon) {
+                            width = qMax(width, text_width);
+                            height += text_height;
+                        } else {
+                            width += text_width;
+                            width = qMax(height, text_height);
+                        }
+                    }
+                } else {
+                    // Let's return the size hint...
+                    width = szHint.width();
+                    height = szHint.height();
                 }
             } else {
                 width = szHint.width();
@@ -778,37 +800,47 @@
         break;
     case QStyle::CT_Slider: {
         int w = -1;
-        const QSlider *sld = static_cast<const QSlider *>(widg);
-        if (sz == QAquaSizeLarge) {
-            if (sld->orientation() == Qt::Horizontal) {
-                w = qt_mac_aqua_get_metric(kThemeMetricHSliderHeight);
-                if (sld->tickPosition() != QSlider::NoTicks)
-                    w += qt_mac_aqua_get_metric(kThemeMetricHSliderTickHeight);
-            } else {
-                w = qt_mac_aqua_get_metric(kThemeMetricVSliderWidth);
-                if (sld->tickPosition() != QSlider::NoTicks)
-                    w += qt_mac_aqua_get_metric(kThemeMetricVSliderTickWidth);
+        const QSlider *sld = qobject_cast<const QSlider *>(widg);
+        // If this conversion fails then the widget was not what it claimed to be.
+        if(sld) {
+            if (sz == QAquaSizeLarge) {
+                if (sld->orientation() == Qt::Horizontal) {
+                    w = qt_mac_aqua_get_metric(kThemeMetricHSliderHeight);
+                    if (sld->tickPosition() != QSlider::NoTicks)
+                        w += qt_mac_aqua_get_metric(kThemeMetricHSliderTickHeight);
+                } else {
+                    w = qt_mac_aqua_get_metric(kThemeMetricVSliderWidth);
+                    if (sld->tickPosition() != QSlider::NoTicks)
+                        w += qt_mac_aqua_get_metric(kThemeMetricVSliderTickWidth);
+                }
+            } else if (sz == QAquaSizeSmall) {
+                if (sld->orientation() == Qt::Horizontal) {
+                    w = qt_mac_aqua_get_metric(kThemeMetricSmallHSliderHeight);
+                    if (sld->tickPosition() != QSlider::NoTicks)
+                        w += qt_mac_aqua_get_metric(kThemeMetricSmallHSliderTickHeight);
+                } else {
+                    w = qt_mac_aqua_get_metric(kThemeMetricSmallVSliderWidth);
+                    if (sld->tickPosition() != QSlider::NoTicks)
+                        w += qt_mac_aqua_get_metric(kThemeMetricSmallVSliderTickWidth);
+                }
+            } else if (sz == QAquaSizeMini) {
+                if (sld->orientation() == Qt::Horizontal) {
+                    w = qt_mac_aqua_get_metric(kThemeMetricMiniHSliderHeight);
+                    if (sld->tickPosition() != QSlider::NoTicks)
+                        w += qt_mac_aqua_get_metric(kThemeMetricMiniHSliderTickHeight);
+                } else {
+                    w = qt_mac_aqua_get_metric(kThemeMetricMiniVSliderWidth);
+                    if (sld->tickPosition() != QSlider::NoTicks)
+                        w += qt_mac_aqua_get_metric(kThemeMetricMiniVSliderTickWidth);
+                }
             }
-        } else if (sz == QAquaSizeSmall) {
-            if (sld->orientation() == Qt::Horizontal) {
-                w = qt_mac_aqua_get_metric(kThemeMetricSmallHSliderHeight);
-                if (sld->tickPosition() != QSlider::NoTicks)
-                    w += qt_mac_aqua_get_metric(kThemeMetricSmallHSliderTickHeight);
-            } else {
-                w = qt_mac_aqua_get_metric(kThemeMetricSmallVSliderWidth);
-                if (sld->tickPosition() != QSlider::NoTicks)
-                    w += qt_mac_aqua_get_metric(kThemeMetricSmallVSliderTickWidth);
-            }
-        } else if (sz == QAquaSizeMini) {
-            if (sld->orientation() == Qt::Horizontal) {
-                w = qt_mac_aqua_get_metric(kThemeMetricMiniHSliderHeight);
-                if (sld->tickPosition() != QSlider::NoTicks)
-                    w += qt_mac_aqua_get_metric(kThemeMetricMiniHSliderTickHeight);
-            } else {
-                w = qt_mac_aqua_get_metric(kThemeMetricMiniVSliderWidth);
-                if (sld->tickPosition() != QSlider::NoTicks)
-                    w += qt_mac_aqua_get_metric(kThemeMetricMiniVSliderTickWidth);
-            }
+        } else {
+            // This is tricky, we were requested to find a size for a slider which is not
+            // a slider. We don't know if this is vertical or horizontal or if we need to
+            // have tick marks or not.
+            // For this case we will return an horizontal slider without tick marks.
+            w = qt_mac_aqua_get_metric(kThemeMetricHSliderHeight);
+            w += qt_mac_aqua_get_metric(kThemeMetricHSliderTickHeight);
         }
         if (sld->orientation() == Qt::Horizontal)
             ret.setHeight(w);
@@ -2379,7 +2411,12 @@
         ret = 0;
         break;
     case PM_ToolBarFrameWidth:
-        ret = 0;
+        ret = 1;
+        if (widget) {
+            if (QMainWindow * mainWindow = qobject_cast<QMainWindow *>(widget->parent()))
+                if (mainWindow->unifiedTitleAndToolBarOnMac())
+                    ret = 0;
+        }
         break;
     default:
         ret = QWindowsStyle::pixelMetric(metric, opt, widget);
@@ -4309,8 +4346,6 @@
                 rect.setY(0);
                 rect.setHeight(widget->height());
             }
-            if (opt->direction == Qt::RightToLeft)
-                rect.adjust(15, 0, -20, 0);
         }
         break;
     case SE_ProgressBarGroove:
@@ -5685,12 +5720,16 @@
         break;
     case CT_ToolButton:
         if (widget && qobject_cast<const QToolBar *>(widget->parentWidget())) {
-            sz.rwidth() += 4;
-            if (sz.height() <= 32) {
-                // Workaround strange HIToolBar bug when getting constraints.
-                sz.rheight() += 1;
+            if (QMainWindow * mainWindow = qobject_cast<QMainWindow *>(widget->parent())) {
+                if (mainWindow->unifiedTitleAndToolBarOnMac()) {
+                    sz.rwidth() += 4;
+                    if (sz.height() <= 32) {
+                        // Workaround strange HIToolBar bug when getting constraints.
+                        sz.rheight() += 1;
+                    }
+                    return sz;
+                }
             }
-            return sz;
         }
         sz.rwidth() += 10;
         sz.rheight() += 10;
--- a/src/gui/styles/qs60style.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qs60style.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -68,6 +68,10 @@
 #include "qtoolbutton.h"
 #include "qfocusframe.h"
 #include "qformlayout.h"
+#include "qradiobutton.h"
+#include "qcheckbox.h"
+#include "qdesktopwidget.h"
+#include "qprogressbar.h"
 
 #include "private/qtoolbarextension_p.h"
 #include "private/qcombobox_p.h"
@@ -88,10 +92,10 @@
 
 const layoutHeader QS60StylePrivate::m_layoutHeaders[] = {
 // *** generated layout data ***
-{240,320,1,15,"QVGA Landscape"},
-{320,240,1,15,"QVGA Portrait"},
-{360,640,1,15,"NHD Landscape"},
-{640,360,1,15,"NHD Portrait"},
+{240,320,1,16,"QVGA Landscape"},
+{320,240,1,16,"QVGA Portrait"},
+{360,640,1,16,"NHD Landscape"},
+{640,360,1,16,"NHD Portrait"},
 {352,800,1,12,"E90 Landscape"}
 // *** End of generated data ***
 };
@@ -100,10 +104,10 @@
 
 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,-909,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,3,3,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,-909,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,4,4,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,-909,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,5,5,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,-909,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,5,5,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},
+{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,-909,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,-909,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,-909,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,-909,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,-909,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}
 // *** End of generated data ***
 };
@@ -564,9 +568,11 @@
     const QSize &size, QPainter *painter, SkinElementFlags flags)
 {
     QPixmap result;
+    const int animationFrame = (flags & SF_Animation) ? currentAnimationFrame(part) : 0;
+
     const QString cacheKey =
-        QString::fromLatin1("S60Style: SkinParts=%1 QSize=%2|%3 SkinPartFlags=%4")
-            .arg((int)part).arg(size.width()).arg(size.height()).arg((int)flags);
+        QString::fromLatin1("S60Style: SkinParts=%1 QSize=%2|%3 SkinPartFlags=%4 AnimationFrame=%5")
+            .arg((int)part).arg(size.width()).arg(size.height()).arg((int)flags).arg(animationFrame);
     if (!QPixmapCache::find(cacheKey, result)) {
         result = QS60StylePrivate::part(part, size, painter, flags);
         QPixmapCache::insert(cacheKey, result);
@@ -672,8 +678,7 @@
         s60Color(QS60StyleEnums::CL_QsnHighlightColors, 2, 0));
     // set background image as a texture brush
     palette->setBrush(QPalette::Window, backgroundTexture());
-    // set these as transparent so that styled full screen theme background is visible
-    palette->setColor(QPalette::AlternateBase, Qt::transparent);
+    // set as transparent so that styled full screen theme background is visible
     palette->setBrush(QPalette::Base, Qt::transparent);
     // set button and tooltipbase based on pixel colors
     const QColor buttonColor = colorFromFrameGraphics(SF_ButtonNormal);
@@ -685,6 +690,9 @@
     palette->setColor(QPalette::Midlight, palette->color(QPalette::Button).lighter(125));
     palette->setColor(QPalette::Mid, palette->color(QPalette::Button).darker(150));
     palette->setColor(QPalette::Shadow, Qt::black);
+    QColor alternateBase = palette->light().color();
+    alternateBase.setAlphaF(0.8);
+    palette->setColor(QPalette::AlternateBase, alternateBase);
 
     QApplication::setPalette(*palette); //calling QApplication::setPalette clears palette hash
     setThemePaletteHash(palette);
@@ -775,6 +783,11 @@
     QApplication::setPalette(widgetPalette, "QComboBox");
     widgetPalette = *palette;
 
+    widgetPalette.setColor(QPalette::WindowText, s60Color(QS60StyleEnums::CL_QsnTextColors, 7, 0));
+    QApplication::setPalette(widgetPalette, "QRadioButton");
+    QApplication::setPalette(widgetPalette, "QCheckBox");
+    widgetPalette = *palette;
+
     widgetPalette.setColor(QPalette::WindowText, mainAreaTextColor);
     widgetPalette.setColor(QPalette::Button, QApplication::palette().color(QPalette::Button));
     widgetPalette.setColor(QPalette::Dark, mainAreaTextColor.darker());
@@ -813,13 +826,13 @@
             //ratio of 1:2 for horizontal tab bars (and 2:1 for vertical ones).
             result.setWidth(result.height() >> 1);
             break;
-            
+
         case QS60StyleEnums::SP_QgnGrafNsliderEndLeft:
         case QS60StyleEnums::SP_QgnGrafNsliderEndRight:
         case QS60StyleEnums::SP_QgnGrafNsliderMiddle:
             result.setWidth(result.height() >> 1);
             break;
-            
+
         case QS60StyleEnums::SP_QgnGrafNsliderMarker:
         case QS60StyleEnums::SP_QgnGrafNsliderMarkerSelected:
             result.scale(pixelMetric(QStyle::PM_SliderLength),
@@ -922,10 +935,10 @@
                 horizontal ? QS60StylePrivate::SE_ScrollBarGrooveHorizontal : QS60StylePrivate::SE_ScrollBarGrooveVertical;
             QS60StylePrivate::drawSkinElement(grooveElement, painter, grooveRect, flags);
 
-            const QStyle::SubControls subControls = optionSlider->subControls;
+            const SubControls subControls = optionSlider->subControls;
 
             // select correct slider (horizontal/vertical/pressed)
-            const bool sliderPressed = ((optionSlider->state & QStyle::State_Sunken) && (subControls & SC_ScrollBarSlider));
+            const bool sliderPressed = ((optionSlider->state & State_Sunken) && (subControls & SC_ScrollBarSlider));
             const QS60StylePrivate::SkinElements handleElement =
                 horizontal ?
                     ( sliderPressed ?
@@ -946,13 +959,13 @@
             const bool horizontal = optionSlider->orientation == Qt::Horizontal;
 
             //Highlight
-/*            if (optionSlider->state & QStyle::State_HasFocus)
+/*            if (optionSlider->state & State_HasFocus)
                 drawPrimitive(PE_FrameFocusRect, optionSlider, painter, widget);*/
-            
+
             //Groove graphics
             if (QS60StylePrivate::hasSliderGrooveGraphic()) {
-                const QS60StylePrivate::SkinElements grooveElement = horizontal ? 
-                    QS60StylePrivate::SE_SliderGrooveHorizontal : 
+                const QS60StylePrivate::SkinElements grooveElement = horizontal ?
+                    QS60StylePrivate::SE_SliderGrooveHorizontal :
                     QS60StylePrivate::SE_SliderGrooveVertical;
                 QS60StylePrivate::drawSkinElement(grooveElement, painter, sliderGroove, flags);
             } else {
@@ -972,10 +985,10 @@
             //Handle graphics
             const QRect sliderHandle = subControlRect(control, optionSlider, SC_SliderHandle, widget);
             QS60StylePrivate::SkinElements handleElement;
-            if (optionSlider->state & QStyle::State_Sunken)
+            if (optionSlider->state & State_Sunken)
                 handleElement =
                         horizontal ? QS60StylePrivate::SE_SliderHandleSelectedHorizontal : QS60StylePrivate::SE_SliderHandleSelectedVertical;
-            else    
+            else
                 handleElement =
                     horizontal ? QS60StylePrivate::SE_SliderHandleHorizontal : QS60StylePrivate::SE_SliderHandleVertical;
             QS60StylePrivate::drawSkinElement(handleElement, painter, sliderHandle, flags);
@@ -994,7 +1007,7 @@
             buttonOption.QStyleOption::operator=(*cmb);
             const int maxHeight = cmbxFrame.height();
             const int maxWidth = cmbxFrame.width() - cmbxEditField.width();
-            const int topLeftPoint = direction ? 
+            const int topLeftPoint = direction ?
                 (cmbxEditField.right() + 1) : (cmbxEditField.left() + 1 - maxWidth);
             const QRect buttonRect(topLeftPoint, cmbxEditField.top(), maxWidth, maxHeight);
             buttonOption.rect = buttonRect;
@@ -1020,102 +1033,62 @@
 #ifndef QT_NO_TOOLBUTTON
     case CC_ToolButton:
         if (const QStyleOptionToolButton *toolBtn = qstyleoption_cast<const QStyleOptionToolButton *>(option)) {
-            const State bflags = toolBtn->state;
+            State bflags = toolBtn->state & ~State_Sunken;
+
+            if (bflags & State_AutoRaise) {
+                if (!(bflags & State_MouseOver) || !(bflags & State_Enabled)) {
+                    bflags &= ~State_Raised;
+                }
+            }
+            State mflags = bflags;
+            if (toolBtn->state & State_Sunken) {
+                if (toolBtn->activeSubControls & SC_ToolButton)
+                    bflags |= State_Sunken;
+                mflags |= State_Sunken;
+            }
+
             const QRect button(subControlRect(control, toolBtn, SC_ToolButton, widget));
             QRect menuRect = QRect();
             if (toolBtn->subControls & SC_ToolButtonMenu)
                 menuRect = subControlRect(control, toolBtn, SC_ToolButtonMenu, widget);
 
-            QStyleOptionToolButton toolButton = *toolBtn;
-
-            if (sub&SC_ToolButton) {
+            if (toolBtn->subControls & SC_ToolButton) {
                 QStyleOption tool(0);
                 tool.palette = toolBtn->palette;
 
-                // Check if toolbutton is in toolbar.
-                QToolBar *toolBar = 0;
-                if (widget)
-                    toolBar = qobject_cast<QToolBar *>(widget->parentWidget());
-
-                if (bflags & (State_Sunken | State_On | State_Raised)) {
+                if (bflags & (State_Sunken | State_On | State_Raised | State_Enabled)) {
                     tool.rect = button.unite(menuRect);
                     tool.state = bflags;
-
-                    // todo: I'd like to move extension button next to where last button is
-                    // however, the painter seems to want to clip the button rect even if I turn of the clipping.
-                    if (toolBar && (qobject_cast<const QToolBarExtension *>(widget))){
-                        /*QList<QAction *> actionList = toolBar->actions();
-                        const int actionCount = actionList.count();
-                        const int toolbarWidth = toolBar->width();
-                        const int extButtonWidth = pixelMetric(PM_ToolBarExtensionExtent, option, widget);
-                        const int toolBarButtonWidth = pixelMetric(PM_ToolBarIconSize, option, widget);
-                        const int frame = pixelMetric(PM_ToolBarFrameWidth, option, widget);
-                        const int margin = pixelMetric(PM_ToolBarItemMargin, option, widget);
-                        const int border = frame + margin;
-                        const int spacing = pixelMetric(PM_ToolBarItemSpacing, option, widget);
-                        const int toolBarButtonArea = toolbarWidth - extButtonWidth - spacing - 2*border;
-                        const int numberOfVisibleButtons = toolBarButtonArea / toolBarButtonWidth;
-                        // new extension button place is after border and all the other visible buttons (with spacings)
-                        const int newXForExtensionButton = numberOfVisibleButtons * toolBarButtonWidth + (numberOfVisibleButtons-1)*spacing + border;
-                        painter->save();
-                        painter->setClipping(false);
-                        tool.rect.translate(-newXForExtensionButton,0);
-                        painter->restore();*/
-                    }
-
-                    if (toolBar){
-                        /*if (toolBar->orientation() == Qt::Vertical){
-                            // todo: I'd like to make all vertical buttons the same size, but again the painter
-                            // prefers to use clipping for button rects, even though clipping has been set off.
-                            painter->save();
-                            painter->setClipping(false);
-
-                            const int origWidth = tool.rect.width();
-                            const int newWidth = toolBar->width()-2*pixelMetric(PM_ToolBarFrameWidth, option, widget);
-                            painter->translate(origWidth-newWidth,0);
-                            tool.rect.translate(origWidth-tool.rect.width(),0);
-                            tool.rect.setWidth(newWidth);
-
-                            if (option->state & QStyle::State_Sunken)
-                                QS60StylePrivate::drawSkinElement(QS60StylePrivate::SE_ToolBarButtonPressed, painter, tool.rect, flags);
-                            else
-                                QS60StylePrivate::drawSkinElement(QS60StylePrivate::SE_ToolBarButton, painter, tool.rect, flags);
-
-                        }*/
-                        if (option->state & QStyle::State_Sunken)
-                            QS60StylePrivate::drawSkinElement(QS60StylePrivate::SE_ToolBarButtonPressed, painter, tool.rect, flags);
-                        else
-                            QS60StylePrivate::drawSkinElement(QS60StylePrivate::SE_ToolBarButton, painter, tool.rect, flags);
-                        /*
-                        if (toolBar->orientation() == Qt::Vertical)
-                            painter->restore();
-                            */
-                    } else {
-                        drawPrimitive(PE_PanelButtonTool, &tool, painter, widget);
-                    }
-
-                    if (toolButton.subControls & SC_ToolButtonMenu) {
-                        tool.rect = menuRect;
-                        tool.state = bflags;
-                        drawPrimitive(PE_IndicatorArrowDown, &tool, painter, widget);
-                    }
+                    const QToolButton *toolButtonWidget = qobject_cast<const QToolButton *>(widget);
+                    QS60StylePrivate::SkinElements element;
+                    if (toolButtonWidget)
+                        element = (toolButtonWidget->isDown()) ? QS60StylePrivate::SE_ToolBarButtonPressed : QS60StylePrivate::SE_ToolBarButton;
+                    else
+                        element = (option->state & State_Sunken) ? QS60StylePrivate::SE_ToolBarButtonPressed : QS60StylePrivate::SE_ToolBarButton;
+                    QS60StylePrivate::drawSkinElement(element, painter, tool.rect, flags);
+                    drawPrimitive(PE_PanelButtonTool, &tool, painter, widget);
+                }
+                if (toolBtn->subControls & SC_ToolButtonMenu) {
+                    tool.rect = menuRect;
+                    tool.state = mflags;
+                    drawPrimitive(PE_IndicatorArrowDown, &tool, painter, widget);
                 }
             }
-
+            QStyleOptionToolButton toolButton = *toolBtn;
             if (toolBtn->features & QStyleOptionToolButton::Arrow) {
-                QStyle::PrimitiveElement pe;
+                PrimitiveElement pe;
                 switch (toolBtn->arrowType) {
                     case Qt::LeftArrow:
-                        pe = QStyle::PE_IndicatorArrowLeft;
+                        pe = PE_IndicatorArrowLeft;
                         break;
                     case Qt::RightArrow:
-                        pe = QStyle::PE_IndicatorArrowRight;
+                        pe = PE_IndicatorArrowRight;
                         break;
                     case Qt::UpArrow:
-                        pe = QStyle::PE_IndicatorArrowUp;
+                        pe = PE_IndicatorArrowUp;
                         break;
                     case Qt::DownArrow:
-                        pe = QStyle::PE_IndicatorArrowDown;
+                        pe = PE_IndicatorArrowDown;
                         break;
                     default:
                         break; }
@@ -1199,7 +1172,7 @@
             // Draw frame
             const QRect textRect = subControlRect(CC_GroupBox, option, SC_GroupBoxLabel, widget);
             const QRect checkBoxRect = subControlRect(CC_GroupBox, option, SC_GroupBoxCheckBox, widget);
-            if (groupBox->subControls & QStyle::SC_GroupBoxFrame) {
+            if (groupBox->subControls & SC_GroupBoxFrame) {
                 QStyleOptionFrameV2 frame;
                 frame.QStyleOption::operator=(*groupBox);
                 frame.features = groupBox->features;
@@ -1210,14 +1183,14 @@
             }
 
             // Draw title
-            if ((groupBox->subControls & QStyle::SC_GroupBoxLabel) && !groupBox->text.isEmpty()) {
+            if ((groupBox->subControls & SC_GroupBoxLabel) && !groupBox->text.isEmpty()) {
                 const QColor textColor = groupBox->textColor;
                 painter->save();
 
                 if (textColor.isValid())
                     painter->setPen(textColor);
                 int alignment = int(groupBox->textAlignment);
-                if (!styleHint(QStyle::SH_UnderlineShortcut, option, widget))
+                if (!styleHint(SH_UnderlineShortcut, option, widget))
                     alignment |= Qt::TextHideMnemonic;
 
                 drawItemText(painter, textRect,  Qt::TextShowMnemonic | Qt::AlignHCenter | Qt::AlignVCenter | alignment,
@@ -1249,6 +1222,31 @@
     Q_D(const QS60Style);
     const QS60StylePrivate::SkinElementFlags flags = (option->state & State_Enabled) ?  QS60StylePrivate::SF_StateEnabled : QS60StylePrivate::SF_StateDisabled;
     switch (element) {
+        case CE_CheckBox:
+        case CE_RadioButton:
+            if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(option)) {
+                bool isRadio = (element == CE_RadioButton);
+                // Highlight needs to be drawn first, as it goes "underneath" the text and indicator.
+                if (btn->state & State_HasFocus) {
+                    QStyleOptionFocusRect fropt;
+                    fropt.QStyleOption::operator=(*btn);
+                    fropt.rect = subElementRect(isRadio ? SE_RadioButtonFocusRect
+                                                        : SE_CheckBoxFocusRect, btn, widget);
+                    drawPrimitive(PE_FrameFocusRect, &fropt, painter, widget);
+                }
+                QStyleOptionButton subopt = *btn;
+
+                subopt.rect = subElementRect(isRadio ? SE_RadioButtonIndicator
+                                                     : SE_CheckBoxIndicator, btn, widget);
+                drawPrimitive(isRadio ? PE_IndicatorRadioButton : PE_IndicatorCheckBox,
+                              &subopt, painter, widget);
+                subopt.rect = subElementRect(isRadio ? SE_RadioButtonContents
+                                                     : SE_CheckBoxContents, btn, widget);
+
+                drawControl(isRadio ? CE_RadioButtonLabel : CE_CheckBoxLabel, &subopt, painter, widget);
+            }
+            break;
+
     case CE_PushButton:
         if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(option)) {
 
@@ -1261,13 +1259,13 @@
         break;
     case CE_PushButtonBevel:
         if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
-            const bool isDisabled = !(option->state & QStyle::State_Enabled);
+            const bool isDisabled = !(option->state & State_Enabled);
             const bool isFlat = button->features & QStyleOptionButton::Flat;
             QS60StyleEnums::SkinParts skinPart;
             QS60StylePrivate::SkinElements skinElement;
             if (!isDisabled) {
-                const bool isPressed = (option->state & QStyle::State_Sunken) ||
-                                       (option->state & QStyle::State_On);
+                const bool isPressed = (option->state & State_Sunken) ||
+                                       (option->state & State_On);
                 if (isFlat) {
                     skinPart =
                         isPressed ? QS60StyleEnums::SP_QsnFrButtonTbCenterPressed : QS60StyleEnums::SP_QsnFrButtonTbCenter;
@@ -1292,7 +1290,7 @@
         if (const QStyleOptionToolButton *toolBtn = qstyleoption_cast<const QStyleOptionToolButton *>(option)) {
             QStyleOptionToolButton optionToolButton = *toolBtn;
 
-            if (!optionToolButton.icon.isNull() && (optionToolButton.state & QStyle::State_Sunken)
+            if (!optionToolButton.icon.isNull() && (optionToolButton.state & State_Sunken)
                     && (optionToolButton.state & State_Enabled)) {
 
                     const QIcon::State state = optionToolButton.state & State_On ? QIcon::On : QIcon::Off;
@@ -1351,8 +1349,8 @@
             painter->save();
 
             painter->setClipRect(voptAdj.rect);
-            const bool isSelected = (vopt->state & QStyle::State_Selected);
-            const bool hasFocus = (vopt->state & QStyle::State_HasFocus);
+            const bool isSelected = (vopt->state & State_Selected);
+            const bool hasFocus = (vopt->state & State_HasFocus);
 
             bool isScrollBarVisible = false;
             int scrollBarWidth = 0;
@@ -1426,8 +1424,8 @@
             }
 
              // draw the icon
-             const QIcon::Mode mode = (voptAdj.state & QStyle::State_Enabled) ? QIcon::Normal : QIcon::Disabled;
-             const QIcon::State state = voptAdj.state & QStyle::State_Open ? QIcon::On : QIcon::Off;
+             const QIcon::Mode mode = (voptAdj.state & State_Enabled) ? QIcon::Normal : QIcon::Disabled;
+             const QIcon::State state = voptAdj.state & State_Open ? QIcon::On : QIcon::Off;
              voptAdj.icon.paint(painter, iconRect, voptAdj.decorationAlignment, mode, state);
 
              // Draw selection check mark. Show check mark only in multi selection modes.
@@ -1439,29 +1437,29 @@
 
                  QStyleOptionViewItemV4 checkMarkOption(voptAdj);
                  // Draw selection mark.
-                 if (voptAdj.state & QStyle::State_Selected && !singleSelection) {
+                 if (voptAdj.state & State_Selected && !singleSelection) {
                      checkMarkOption.rect = selectionRect;
-                     drawPrimitive(QStyle::PE_IndicatorViewItemCheck, &checkMarkOption, painter, widget);
+                     drawPrimitive(PE_IndicatorViewItemCheck, &checkMarkOption, painter, widget);
                      if ( textRect.right() > selectionRect.left() )
                          textRect.setRight(selectionRect.left());
                  } else if (singleSelection &&
                      voptAdj.features & QStyleOptionViewItemV2::HasCheckIndicator &&
                      selectionRect.isValid()) {
                      checkMarkOption.rect = selectionRect;
-                     checkMarkOption.state = checkMarkOption.state & ~QStyle::State_HasFocus;
+                     checkMarkOption.state = checkMarkOption.state & ~State_HasFocus;
 
                      switch (vopt->checkState) {
                      case Qt::Unchecked:
-                         checkMarkOption.state |= QStyle::State_Off;
+                         checkMarkOption.state |= State_Off;
                          break;
                      case Qt::PartiallyChecked:
-                         checkMarkOption.state |= QStyle::State_NoChange;
+                         checkMarkOption.state |= State_NoChange;
                          break;
                      case Qt::Checked:
-                         checkMarkOption.state |= QStyle::State_On;
+                         checkMarkOption.state |= State_On;
                          break;
                      }
-                     drawPrimitive(QStyle::PE_IndicatorViewItemCheck, &checkMarkOption, painter, widget);
+                     drawPrimitive(PE_IndicatorViewItemCheck, &checkMarkOption, painter, widget);
                  }
              }
 
@@ -1486,7 +1484,7 @@
     case CE_TabBarTabShape:
         if (const QStyleOptionTabV3 *optionTab = qstyleoption_cast<const QStyleOptionTabV3 *>(option)) {
             QStyleOptionTabV3 optionTabAdj = *optionTab;
-            const bool isSelected = optionTab->state & QStyle::State_Selected;
+            const bool isSelected = optionTab->state & State_Selected;
             const bool directionMirrored = (optionTab->direction == Qt::RightToLeft);
             QS60StylePrivate::SkinElements skinElement;
             switch (optionTab->shape) {
@@ -1521,9 +1519,9 @@
                     skinElement==QS60StylePrivate::SE_TabBarTabSouthActive||
                     skinElement==QS60StylePrivate::SE_TabBarTabWestActive) {
                 const int borderThickness =
-                    QS60StylePrivate::pixelMetric(QStyle::PM_DefaultFrameWidth);
+                    QS60StylePrivate::pixelMetric(PM_DefaultFrameWidth);
                 const int tabOverlap =
-                    QS60StylePrivate::pixelMetric(QStyle::PM_TabBarTabOverlap) - borderThickness;
+                    QS60StylePrivate::pixelMetric(PM_TabBarTabOverlap) - borderThickness;
                 //todo: draw navi wipe behind tabbar - must be drawn with first draw
 
                 if (skinElement==QS60StylePrivate::SE_TabBarTabEastInactive||
@@ -1546,9 +1544,9 @@
             QStyleOptionTabV3 optionTab = *tab;
             QRect tr = optionTab.rect;
             const bool directionMirrored = (optionTab.direction == Qt::RightToLeft);
-            const int borderThickness = QS60StylePrivate::pixelMetric(QStyle::PM_DefaultFrameWidth);
+            const int borderThickness = QS60StylePrivate::pixelMetric(PM_DefaultFrameWidth);
             const int tabOverlap =
-                QS60StylePrivate::pixelMetric(QStyle::PM_TabBarTabOverlap) - borderThickness;
+                QS60StylePrivate::pixelMetric(PM_TabBarTabOverlap) - borderThickness;
             const QRect windowRect = painter->window();
 
             switch (tab->shape) {
@@ -1602,12 +1600,12 @@
                 m.rotate(newRotation);
                 painter->setTransform(m, true);
             }
-            tr.adjust(0, 0, pixelMetric(QStyle::PM_TabBarTabShiftHorizontal, tab, widget),
-                            pixelMetric(QStyle::PM_TabBarTabShiftVertical, tab, widget));
+            tr.adjust(0, 0, pixelMetric(PM_TabBarTabShiftHorizontal, tab, widget),
+                            pixelMetric(PM_TabBarTabShiftVertical, tab, widget));
 
             if (selected) {
-                tr.setBottom(tr.bottom() - pixelMetric(QStyle::PM_TabBarTabShiftVertical, tab, widget));
-                tr.setRight(tr.right() - pixelMetric(QStyle::PM_TabBarTabShiftHorizontal, tab, widget));
+                tr.setBottom(tr.bottom() - pixelMetric(PM_TabBarTabShiftVertical, tab, widget));
+                tr.setRight(tr.right() - pixelMetric(PM_TabBarTabShiftHorizontal, tab, widget));
             }
 
             int alignment = Qt::AlignCenter | Qt::TextShowMnemonic;
@@ -1648,17 +1646,20 @@
                 // busy indicator
                 const QS60StylePrivate::SkinElementFlag orientationFlag = optionProgressBar->orientation == Qt::Horizontal ?
                     QS60StylePrivate::SF_PointNorth : QS60StylePrivate::SF_PointWest;
-                QS60StylePrivate::drawSkinPart(QS60StyleEnums::SP_QgnGrafBarWait, painter, progressRect, flags | orientationFlag);
+
+                QS60StylePrivate::drawSkinPart(QS60StyleEnums::SP_QgnGrafBarWaitAnim,
+                        painter, progressRect, flags | orientationFlag | QS60StylePrivate::SF_Animation );
             } else {
                 const qreal progressFactor = (optionProgressBar->minimum == optionProgressBar->maximum) ? 1.0
                     : (qreal)optionProgressBar->progress / optionProgressBar->maximum;
+                const int frameWidth = pixelMetric(PM_DefaultFrameWidth, option, widget);
                 if (optionProgressBar->orientation == Qt::Horizontal) {
                     progressRect.setWidth(int(progressRect.width() * progressFactor));
                     if(optionProgressBar->direction == Qt::RightToLeft)
-                        progressRect.translate(optionProgressBar->rect.width()-progressRect.width(), 0);
-                    progressRect.adjust(1, 0, -1, 0);
+                        progressRect.translate(optionProgressBar->rect.width() - progressRect.width(), 0);
+                    progressRect.adjust(frameWidth, 0, -frameWidth, 0);
                 } else {
-                    progressRect.adjust(0, 1, 0, -1);
+                    progressRect.adjust(0, frameWidth, 0, -frameWidth);
                     progressRect.setTop(progressRect.bottom() - int(progressRect.height() * progressFactor));
                 }
 
@@ -1714,9 +1715,9 @@
             QRect textRect = subElementRect(SE_ItemViewItemText, &optionMenuItem, widget);
 
             //todo: move the vertical spacing stuff into subElementRect
-            const int vSpacing = QS60StylePrivate::pixelMetric(QStyle::PM_LayoutVerticalSpacing);
+            const int vSpacing = QS60StylePrivate::pixelMetric(PM_LayoutVerticalSpacing);
             if (checkable){
-                const int hSpacing = QS60StylePrivate::pixelMetric(QStyle::PM_LayoutHorizontalSpacing);
+                const int hSpacing = QS60StylePrivate::pixelMetric(PM_LayoutHorizontalSpacing);
                 QStyleOptionMenuItem optionCheckBox;
                 optionCheckBox.QStyleOptionMenuItem::operator=(*menuItem);
                 optionCheckBox.rect.setWidth(pixelMetric(PM_IndicatorWidth));
@@ -1754,7 +1755,7 @@
                 QStyleOptionMenuItem arrowOptions;
                 arrowOptions.QStyleOption::operator=(*menuItem);
                 const int indicatorWidth = (pixelMetric(PM_ListViewIconSize, option, widget) >> 1) +
-                    pixelMetric(QStyle::PM_LayoutVerticalSpacing, option, widget);
+                    pixelMetric(PM_LayoutVerticalSpacing, option, widget);
                 if (optionMenuItem.direction == Qt::LeftToRight)
                     arrowOptions.rect.setLeft(textRect.right());
                 arrowOptions.rect.setWidth(indicatorWidth);
@@ -1925,8 +1926,7 @@
         break;
     case CE_MenuScroller:
         break;
-    case CE_FocusFrame:
-        {
+    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))
@@ -1985,11 +1985,21 @@
 */
 void QS60Style::drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
 {
-    Q_D(const QS60Style);
     const QS60StylePrivate::SkinElementFlags flags = (option->state & State_Enabled) ?  QS60StylePrivate::SF_StateEnabled : QS60StylePrivate::SF_StateDisabled;
     bool commonStyleDraws = false;
 
     switch (element) {
+        case PE_FrameFocusRect: {
+            //Draw themed highlight to radiobuttons and checkboxes.
+            //For other widgets skip, unless palette has been modified. In that case, draw with commonstyle.
+            if (option->palette.highlight().color() == QS60StylePrivate::themePalette()->highlight().color())
+                if ((qstyleoption_cast<const QStyleOptionFocusRect *>(option) &&
+                    (qobject_cast<const QRadioButton *>(widget) || qobject_cast<const QCheckBox *>(widget))))
+                        QS60StylePrivate::drawSkinElement(QS60StylePrivate::SE_ListHighlight, painter, option->rect, flags);
+            else
+                commonStyleDraws = true;
+            }
+        break;
 #ifndef QT_NO_LINEEDIT
     case PE_PanelLineEdit:
         if (const QStyleOptionFrame *lineEdit = qstyleoption_cast<const QStyleOptionFrame *>(option)) {
@@ -2004,15 +2014,14 @@
         }
     break;
 #endif // QT_NO_LINEEDIT
-    case PE_IndicatorCheckBox:
-        {
+    case PE_IndicatorCheckBox: {
             // Draw checkbox indicator as color skinned graphics.
-            const QS60StyleEnums::SkinParts skinPart = (option->state & QStyle::State_On) ?
+            const QS60StyleEnums::SkinParts skinPart = (option->state & State_On) ?
                 QS60StyleEnums::SP_QgnIndiCheckboxOn : QS60StyleEnums::SP_QgnIndiCheckboxOff;
             painter->save();
 
-            QColor themeColor = QS60StylePrivate::themePalette()->windowText().color();
-            QColor windowTextColor = option->palette.windowText().color();
+            const QColor themeColor = QS60StylePrivate::themePalette()->windowText().color();
+            const QColor windowTextColor = option->palette.windowText().color();
 
             if (themeColor != windowTextColor)
                 painter->setPen(windowTextColor);
@@ -2032,7 +2041,7 @@
                 if (checkBoxVisible && singleSelection) {
                     drawPrimitive(PE_IndicatorCheckBox, option, painter, widget);
                 // ... or normal "tick" selection at the end.
-                } else if (option->state & QStyle::State_Selected) {
+                } else if (option->state & State_Selected) {
                     QRect tickRect = option->rect;
                     const int frameBorderWidth = QS60StylePrivate::pixelMetric(PM_Custom_FrameCornerWidth);
                     // adjust tickmark rect to exclude frame border
@@ -2059,15 +2068,15 @@
             buttonRect.adjust(0, -newY, -1, -newY);
 
             painter->save();
-            QColor themeColor = d->s60Color(QS60StyleEnums::CL_QsnTextColors, 6, option);
-            QColor buttonTextColor = option->palette.buttonText().color();
+            const QColor themeColor = QS60StylePrivate::s60Color(QS60StyleEnums::CL_QsnTextColors, 6, option);
+            const QColor buttonTextColor = option->palette.buttonText().color();
             if (themeColor != buttonTextColor)
                 painter->setPen(buttonTextColor);
             else
                 painter->setPen(themeColor);
 
             // Draw radiobutton indicator as color skinned graphics.
-            QS60StyleEnums::SkinParts skinPart = (option->state & QStyle::State_On) ?
+            QS60StyleEnums::SkinParts skinPart = (option->state & State_On) ?
                 QS60StyleEnums::SP_QgnIndiRadiobuttOn : QS60StyleEnums::SP_QgnIndiRadiobuttOff;
             QS60StylePrivate::drawSkinPart(skinPart, painter, buttonRect,
                 (flags | QS60StylePrivate::SF_ColorSkinned));
@@ -2077,15 +2086,14 @@
     case PE_PanelButtonCommand:
     case PE_PanelButtonTool:
     case PE_PanelButtonBevel:
-    case PE_FrameButtonBevel: {
+    case PE_FrameButtonBevel:
         if (QS60StylePrivate::canDrawThemeBackground(option->palette.base())) {
-            const bool isPressed = option->state & QStyle::State_Sunken;
+            const bool isPressed = option->state & State_Sunken;
             const QS60StylePrivate::SkinElements skinElement =
                 isPressed ? QS60StylePrivate::SE_ButtonPressed : QS60StylePrivate::SE_ButtonNormal;
             QS60StylePrivate::drawSkinElement(skinElement, painter, option->rect, flags);
         } else {
             commonStyleDraws = true;
-            }
         }
         break;
 #ifndef QT_NO_TOOLBUTTON
@@ -2207,7 +2215,6 @@
         break;
 #ifndef QT_NO_ITEMVIEWS
     case PE_PanelItemViewItem:
-    case PE_PanelItemViewRow: // ### Qt 5: remove
         break;
 #endif //QT_NO_ITEMVIEWS
 
@@ -2276,7 +2283,23 @@
             }
         }
         break;
-
+    case PE_PanelItemViewRow: // ### Qt 5: remove
+#ifndef QT_NO_ITEMVIEWS
+        if (const QStyleOptionViewItemV4 *vopt = qstyleoption_cast<const QStyleOptionViewItemV4 *>(option)) {
+            if (vopt->palette.base().texture().cacheKey() != QS60StylePrivate::m_themePalette->base().texture().cacheKey()) {
+                //QPalette::Base has been changed, let commonstyle draw the item
+                commonStyleDraws = true;
+            } else {
+                QPalette::ColorGroup cg = vopt->state & State_Enabled ? QPalette::Normal : QPalette::Disabled;
+                if (cg == QPalette::Normal && !(vopt->state & State_Active))
+                    cg = QPalette::Inactive;
+                if (vopt->features & QStyleOptionViewItemV2::Alternate)
+                    painter->fillRect(vopt->rect, vopt->palette.brush(cg, QPalette::AlternateBase));
+                //apart from alternate base, no background for list item is drawn for S60Style
+            }
+        }
+#endif
+        break;
     case PE_PanelScrollAreaCorner:
         break;
 
@@ -2361,8 +2384,7 @@
             if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(opt))
                 sz += QSize(2 * f->lineWidth, 4 * f->lineWidth);
             break;
-        case CT_TabBarTab:
-            {
+        case CT_TabBarTab: {
                 const QSize naviPaneSize = QS60StylePrivate::naviPaneSize();
                 sz = QCommonStyle::sizeFromContents(ct, opt, csz, widget);
                 if (naviPaneSize.height() > sz.height())
@@ -2374,8 +2396,19 @@
             if (QS60StylePrivate::isTouchSupported())
                 //Make itemview easier to use in touch devices
                 //QCommonStyle does not adjust height with horizontal margin, it only adjusts width
-                sz.setHeight(sz.height() + 2 * pixelMetric(QStyle::PM_FocusFrameVMargin));
+                sz.setHeight(sz.height() + 2 * pixelMetric(PM_FocusFrameVMargin));
             break;
+#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.
+                const QSize desktopContentSize = QApplication::desktop()->availableGeometry().size()
+                        -QSize(pixelMetric(PM_LayoutLeftMargin) + pixelMetric(PM_LayoutRightMargin), 0);
+                sz = QCommonStyle::sizeFromContents(ct, opt, csz, widget).
+                        boundedTo(desktopContentSize);
+            }
+            break;
+#endif
         default:
             sz = QCommonStyle::sizeFromContents( ct, opt, csz, widget);
             break;
@@ -2414,7 +2447,7 @@
             retValue = QPalette::Base;
             break;
         case SH_ItemView_ActivateItemOnSingleClick:
-            retValue = true;
+            retValue = QS60StylePrivate::isSingleClickUi();
             break;
         case SH_ProgressDialog_TextLabelAlignment:
             retValue = (QApplication::layoutDirection() == Qt::LeftToRight) ?
@@ -2526,7 +2559,7 @@
         if (const QStyleOptionSpinBox *spinbox = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) {
             const int frameThickness = spinbox->frame ? pixelMetric(PM_SpinBoxFrameWidth, spinbox, widget) : 0;
             const int buttonMargin = spinbox->frame ? 2 : 0;
-            const int buttonWidth = QS60StylePrivate::pixelMetric(QStyle::PM_ButtonIconSize) + 2 * buttonMargin;
+            const int buttonWidth = QS60StylePrivate::pixelMetric(PM_ButtonIconSize) + 2 * buttonMargin;
             QSize buttonSize;
             buttonSize.setHeight(qMax(8, spinbox->rect.height() - frameThickness));
             //width should at least be equal to height
@@ -2575,34 +2608,36 @@
             ret = cmb->rect;
             const int width = cmb->rect.width();
             const int height = cmb->rect.height();
-            const int buttonIconSize = QS60StylePrivate::pixelMetric(QStyle::PM_ButtonIconSize);
+            const int buttonIconSize = QS60StylePrivate::pixelMetric(PM_ButtonIconSize);
             const int buttonMargin = cmb->frame ? 2 : 0;
             // lets use spinbox frame here as well, as no combobox specific value available.
             const int frameThickness = cmb->frame ? pixelMetric(PM_SpinBoxFrameWidth, cmb, widget) : 0;
             const int buttonWidth = qMax(cmb->rect.height(), buttonIconSize);
-            const int xposMod = (cmb->rect.x()) + width - buttonMargin - buttonWidth;
-            const int ypos = cmb->rect.y();
 
             QSize buttonSize;
             buttonSize.setWidth(buttonWidth + 2 * buttonMargin);
             buttonSize.setHeight(qMax(8, (cmb->rect.height() >> 1) - frameThickness)); //buttons should be squares
             buttonSize = buttonSize.expandedTo(QApplication::globalStrut());
             switch (scontrol) {
-                case SC_ComboBoxArrow:
+                case SC_ComboBoxArrow: {
+                    const int xposMod = cmb->rect.x() + width - buttonMargin - buttonWidth;
+                    const int ypos = cmb->rect.y();
                     ret.setRect(xposMod, ypos + buttonMargin, buttonWidth, height - 2 * buttonMargin);
+                    }
                     break;
                 case SC_ComboBoxEditField: {
-                    const int withFrameX = cmb->rect.x() + cmb->rect.width() - frameThickness - buttonSize.width();
+                    const int withFrameX = cmb->rect.x() + width - frameThickness - buttonSize.width();
                     ret = QRect(
                         frameThickness,
                         frameThickness,
                         withFrameX - frameThickness,
-                        cmb->rect.height() - 2 * frameThickness);
+                        height - 2 * frameThickness);
                     }
                 break;
             default:
                 break;
             }
+            ret = visualRect(cmb->direction, cmb->rect, ret);
         }
         break;
     case CC_GroupBox:
@@ -2613,7 +2648,7 @@
                 case SC_GroupBoxLabel: {
                     //slightly indent text and boxes, so that dialog border does not mess with them.
                     const int horizontalSpacing =
-                        QS60StylePrivate::pixelMetric(QStyle::PM_LayoutHorizontalSpacing);
+                        QS60StylePrivate::pixelMetric(PM_LayoutHorizontalSpacing);
                     ret.adjust(2, horizontalSpacing - 3, 0, 0);
                     }
                     break;
@@ -2668,6 +2703,9 @@
 {
     QRect ret;
     switch (element) {
+        case SE_RadioButtonFocusRect:
+            ret = opt->rect;
+            break;
         case SE_LineEditContents: {
                 // in S60 the input text box doesn't start from line Edit's TL, but
                 // a bit indented.
@@ -2686,9 +2724,9 @@
 
                 if (const QStyleOptionTabWidgetFrame *twf = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) {
                     const int tabOverlapNoBorder =
-                        QS60StylePrivate::pixelMetric(QStyle::PM_TabBarTabOverlap);
+                        QS60StylePrivate::pixelMetric(PM_TabBarTabOverlap);
                     const int tabOverlap =
-                        tabOverlapNoBorder-QS60StylePrivate::pixelMetric(QStyle::PM_DefaultFrameWidth);
+                        tabOverlapNoBorder-QS60StylePrivate::pixelMetric(PM_DefaultFrameWidth);
                     const QTabWidget *tab = qobject_cast<const QTabWidget *>(widget);
                     int gain = (tab) ? tabOverlap * tab->count() : 0;
                     switch (twf->shape) {
@@ -2737,8 +2775,8 @@
                     multiSelection &&
                     (vopt->features & QStyleOptionViewItemV2::HasCheckIndicator)) {
                     const int verticalSpacing =
-                        QS60StylePrivate::pixelMetric(QStyle::PM_LayoutVerticalSpacing);
-                    //const int horizontalSpacing = QS60StylePrivate::pixelMetric(QStyle::PM_LayoutHorizontalSpacing);
+                        QS60StylePrivate::pixelMetric(PM_LayoutVerticalSpacing);
+                    //const int horizontalSpacing = QS60StylePrivate::pixelMetric(PM_LayoutHorizontalSpacing);
                     const int checkBoxRectWidth = subElementRect(SE_ItemViewItemCheckIndicator, opt, widget).width();
                     ret.adjust(-checkBoxRectWidth - verticalSpacing, 0, -checkBoxRectWidth - verticalSpacing, 0);
                 }
@@ -2784,9 +2822,9 @@
                     singleSelection;
 
                 // Selection check mark rect.
-                const int indicatorWidth = QS60StylePrivate::pixelMetric(QStyle::PM_IndicatorWidth);
-                const int indicatorHeight = QS60StylePrivate::pixelMetric(QStyle::PM_IndicatorHeight);
-                const int spacing = QS60StylePrivate::pixelMetric(QStyle::PM_CheckBoxLabelSpacing);
+                const int indicatorWidth = QS60StylePrivate::pixelMetric(PM_IndicatorWidth);
+                const int indicatorHeight = QS60StylePrivate::pixelMetric(PM_IndicatorHeight);
+                const int spacing = QS60StylePrivate::pixelMetric(PM_CheckBoxLabelSpacing);
 
                 const int itemHeight = opt->rect.height();
                 int heightOffset = 0;
@@ -2818,6 +2856,25 @@
                 }
             ret = visualRect(opt->direction, opt->rect, ret);
             break;
+        case SE_RadioButtonIndicator: {
+                const int height = pixelMetric(PM_ExclusiveIndicatorHeight, opt, widget);
+                ret.setRect(opt->rect.x(), opt->rect.y() + ((opt->rect.height() - height) >> 1),
+                        pixelMetric(PM_ExclusiveIndicatorWidth, opt, widget), height);
+                ret.translate(2, 0); //move indicator slightly to avoid highlight crossing over it
+                ret = visualRect(opt->direction, opt->rect, ret);
+            }
+            break;
+        case SE_CheckBoxIndicator: {
+                const int height = pixelMetric(PM_IndicatorHeight, opt, widget);
+                ret.setRect(opt->rect.x(), opt->rect.y() + ((opt->rect.height() - height) >> 1),
+                          pixelMetric(PM_IndicatorWidth, opt, widget), height);
+                ret.translate(2, 0); //move indicator slightly to avoid highlight crossing over it
+                ret = visualRect(opt->direction, opt->rect, ret);
+            }
+            break;
+        case SE_CheckBoxFocusRect:
+            ret = opt->rect;
+            break;
         default:
             ret = QCommonStyle::subElementRect(element, opt, widget);
     }
@@ -2835,6 +2892,12 @@
     if (!widget)
         return;
 
+    //Currently we only support animations in QProgressBar.
+#ifndef QT_NO_PROGRESSBAR
+    if (qobject_cast<QProgressBar *>(widget))
+        widget->installEventFilter(this);
+#endif
+
     if (false
 #ifndef QT_NO_SCROLLBAR
         || qobject_cast<QScrollBar *>(widget)
@@ -2867,6 +2930,8 @@
  */
 void QS60Style::unpolish(QWidget *widget)
 {
+    Q_D(QS60Style);
+
     if (false
     #ifndef QT_NO_SCROLLBAR
         || qobject_cast<QScrollBar *>(widget)
@@ -2893,6 +2958,14 @@
     if (widget)
         widget->setPalette(QPalette());
 
+#if defined(Q_WS_S60) && !defined(QT_NO_PROGRESSBAR)
+    if (QProgressBar *bar = qobject_cast<QProgressBar *>(widget)) {
+        widget->removeEventFilter(this);
+        d->m_bars.removeAll(bar);
+    }
+#else
+    Q_UNUSED(d)
+#endif
     QCommonStyle::unpolish(widget);
 }
 
@@ -2924,10 +2997,23 @@
 bool QS60Style::event(QEvent *e)
 {
 #ifdef QT_KEYPAD_NAVIGATION
-    if (QS60StylePrivate::isTouchSupported())
-        return false;
     Q_D(QS60Style);
+    const QEvent::Type eventType = e->type();
+    if ((eventType == QEvent::FocusIn ||
+         eventType == QEvent::FocusOut ||
+         eventType == QEvent::EnterEditFocus ||
+         eventType == QEvent::LeaveEditFocus) &&
+        QS60StylePrivate::isTouchSupported())
+            return false;
+#endif
+
     switch (e->type()) {
+    case QEvent::Timer: {
+        QTimerEvent *te = static_cast<QTimerEvent*>(e);
+        timerEvent(te);
+        }
+        break;
+#ifdef QT_KEYPAD_NAVIGATION
     case QEvent::FocusIn:
         if (QWidget *focusWidget = QApplication::focusWidget()) {
             if (!d->m_focusFrame)
@@ -2946,12 +3032,10 @@
         if (d->m_focusFrame)
             d->m_focusFrame->update();
         break;
+#endif
     default:
         break;
     }
-#else
-    Q_UNUSED(e)
-#endif
     return false;
 }
 
@@ -2961,7 +3045,7 @@
 QIcon QS60Style::standardIconImplementation(StandardPixmap standardIcon,
     const QStyleOption *option, const QWidget *widget) const
 {
-    const int iconDimension = QS60StylePrivate::pixelMetric(QStyle::PM_ToolBarIconSize);
+    const int iconDimension = QS60StylePrivate::pixelMetric(PM_ToolBarIconSize);
     const QRect iconSize = (!option) ? QRect(0, 0, iconDimension, iconDimension) : option->rect;
     QS60StyleEnums::SkinParts part;
     QS60StylePrivate::SkinElementFlags adjustedFlags;
@@ -2971,67 +3055,67 @@
             QS60StylePrivate::SF_StateDisabled;
 
     switch(standardIcon) {
-        case QStyle::SP_MessageBoxWarning:
+        case SP_MessageBoxWarning:
             part = QS60StyleEnums::SP_QgnNoteWarning;
             break;
-        case QStyle::SP_MessageBoxInformation:
+        case SP_MessageBoxInformation:
             part = QS60StyleEnums::SP_QgnNoteInfo;
             break;
-        case QStyle::SP_MessageBoxCritical:
+        case SP_MessageBoxCritical:
             part = QS60StyleEnums::SP_QgnNoteError;
             break;
-        case QStyle::SP_MessageBoxQuestion:
+        case SP_MessageBoxQuestion:
             part = QS60StyleEnums::SP_QgnNoteQuery;
             break;
-        case QStyle::SP_ArrowRight:
+        case SP_ArrowRight:
             part = QS60StyleEnums::SP_QgnIndiNaviArrowRight;
             break;
-        case QStyle::SP_ArrowLeft:
+        case SP_ArrowLeft:
             part = QS60StyleEnums::SP_QgnIndiNaviArrowLeft;
             break;
-        case QStyle::SP_ArrowUp:
+        case SP_ArrowUp:
             part = QS60StyleEnums::SP_QgnIndiNaviArrowLeft;
             adjustedFlags |= QS60StylePrivate::SF_PointEast;
             break;
-        case QStyle::SP_ArrowDown:
+        case SP_ArrowDown:
             part = QS60StyleEnums::SP_QgnIndiNaviArrowLeft;
             adjustedFlags |= QS60StylePrivate::SF_PointWest;
             break;
-        case QStyle::SP_ArrowBack:
+        case SP_ArrowBack:
             if (QApplication::layoutDirection() == Qt::RightToLeft)
                 return QS60Style::standardIcon(SP_ArrowRight, option, widget);
             return QS60Style::standardIcon(SP_ArrowLeft, option, widget);
-        case QStyle::SP_ArrowForward:
+        case SP_ArrowForward:
             if (QApplication::layoutDirection() == Qt::RightToLeft)
                 return QS60Style::standardIcon(SP_ArrowLeft, option, widget);
             return QS60Style::standardIcon(SP_ArrowRight, option, widget);
-        case QStyle::SP_ComputerIcon:
+        case SP_ComputerIcon:
             part = QS60StyleEnums::SP_QgnPropPhoneMemcLarge;
             break;
-        case QStyle::SP_DirClosedIcon:
+        case SP_DirClosedIcon:
             part = QS60StyleEnums::SP_QgnPropFolderSmall;
             break;
-        case QStyle::SP_DirOpenIcon:
+        case SP_DirOpenIcon:
             part = QS60StyleEnums::SP_QgnPropFolderCurrent;
             break;
-        case QStyle::SP_DirIcon:
+        case SP_DirIcon:
             part = QS60StyleEnums::SP_QgnPropFolderSmall;
             break;
-        case QStyle::SP_FileDialogNewFolder:
+        case SP_FileDialogNewFolder:
             part = QS60StyleEnums::SP_QgnPropFolderSmallNew;
             break;
-        case QStyle::SP_FileIcon:
+        case SP_FileIcon:
             part = QS60StyleEnums::SP_QgnPropFileSmall;
             break;
-        case QStyle::SP_TrashIcon:
+        case SP_TrashIcon:
             part = QS60StyleEnums::SP_QgnNoteErased;
             break;
-        case QStyle::SP_ToolBarHorizontalExtensionButton:
+        case SP_ToolBarHorizontalExtensionButton:
             part = QS60StyleEnums::SP_QgnIndiSubMenu;
             if (QApplication::layoutDirection() == Qt::RightToLeft)
                 adjustedFlags |= QS60StylePrivate::SF_PointSouth;
             break;
-        case QStyle::SP_ToolBarVerticalExtensionButton:
+        case SP_ToolBarVerticalExtensionButton:
             adjustedFlags |= QS60StylePrivate::SF_PointEast;
             part = QS60StyleEnums::SP_QgnIndiSubMenu;
             break;
@@ -3045,6 +3129,72 @@
         QCommonStyle::standardIconImplementation(standardIcon, option, widget) : QIcon(cachedPixMap);
 }
 
+/*!
+    \internal
+    Animate indeterminate progress bars only when visible
+*/
+bool QS60Style::eventFilter(QObject *object, QEvent *event)
+{
+#ifdef Q_WS_S60
+#ifndef QT_NO_PROGRESSBAR
+    Q_D(QS60Style);
+    switch(event->type()) {
+    case QEvent::StyleChange:
+    case QEvent::Show:
+        if (QProgressBar *bar = qobject_cast<QProgressBar *>(object)) {
+            if (!d->m_bars.contains(bar))
+                d->m_bars << bar;
+            if (d->m_bars.size() == 1) //only start with first animated progressbar
+                d->startAnimation(QS60StyleEnums::SP_QgnGrafBarWaitAnim);
+        }
+        break;
+    case QEvent::Destroy:
+    case QEvent::Hide:
+        d->stopAnimation(QS60StyleEnums::SP_QgnGrafBarWaitAnim);
+        d->m_bars.removeAll(reinterpret_cast<QProgressBar *>(object));
+        break;
+    default:
+        break;
+    }
+#endif // QT_NO_PROGRESSBAR
+#endif // Q_WS_S60
+    return QStyle::eventFilter(object, event);
+}
+
+/*!
+    \internal
+    Handle the timer \a event. 
+*/
+void QS60Style::timerEvent(QTimerEvent *event)
+{
+#ifdef Q_WS_S60
+#ifndef QT_NO_PROGRESSBAR
+    Q_D(QS60Style);
+
+    QS60StyleAnimation *progressBarAnimation =
+        QS60StylePrivate::animationDefinition(QS60StyleEnums::SP_QgnGrafBarWaitAnim);
+
+    if (event->timerId() == progressBarAnimation->timerId()) {
+
+        Q_ASSERT(progressBarAnimation->interval() > 0);
+
+        if (progressBarAnimation->currentFrame() == progressBarAnimation->frameCount() )
+            if (progressBarAnimation->playMode() == QS60StyleEnums::AM_Looping)
+                progressBarAnimation->setCurrentFrame(0);
+            else
+                d->stopAnimation(progressBarAnimation->animationId());
+
+        foreach (QProgressBar *bar, d->m_bars) {
+            if ((bar->minimum() == 0 && bar->maximum() == 0))
+                bar->update();
+        }
+        progressBarAnimation->setCurrentFrame(progressBarAnimation->currentFrame() + 1);
+    }
+#endif // QT_NO_PROGRESSBAR
+#endif // Q_WS_S60
+    event->ignore();
+}
+
 extern QPoint qt_s60_fill_background_offset(const QWidget *targetWidget);
 
 bool qt_s60_fill_background(QPainter *painter, const QRegion &rgn, const QBrush &brush)
@@ -3056,11 +3206,13 @@
     const QPaintDevice *target = painter->device();
     if (target->devType() == QInternal::Widget) {
         const QWidget *widget = static_cast<const QWidget *>(target);
-        const QVector<QRect> &rects = rgn.rects();
-        for (int i = 0; i < rects.size(); ++i) {
-            const QRect rect(rects.at(i));
-            painter->drawPixmap(rect.topLeft(), backgroundTexture,
-                                rect.translated(qt_s60_fill_background_offset(widget)));
+        if (!widget->testAttribute(Qt::WA_TranslucentBackground)) {
+            const QVector<QRect> &rects = rgn.rects();
+            for (int i = 0; i < rects.size(); ++i) {
+                const QRect rect(rects.at(i));
+                painter->drawPixmap(rect.topLeft(), backgroundTexture,
+                                    rect.translated(qt_s60_fill_background_offset(widget)));
+            }
         }
     }
     return true;
--- a/src/gui/styles/qs60style.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qs60style.h	Fri Mar 12 15:46:37 2010 +0200
@@ -94,6 +94,9 @@
     QIcon standardIconImplementation(
             StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0 ) const;
 
+protected:
+    void timerEvent(QTimerEvent *event);
+    bool eventFilter(QObject *o, QEvent *e);
 private:
     Q_DISABLE_COPY(QS60Style)
     friend class QStyleFactory;
--- a/src/gui/styles/qs60style_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qs60style_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -74,7 +74,6 @@
     unsigned short width;
     int major_version;
     int minor_version;
-    bool mirroring; // TODO: (nice to have) Use Qt::LayoutDirection
     const char* layoutName;
 } layoutHeader;
 
@@ -93,6 +92,29 @@
 #endif // !Q_WS_S60
 
 public:
+
+    // S60 definitions within theme
+    enum ThemeDefinitions {
+        TD_AnimationData,
+    };
+
+    //Defines which values are contained within animation data (retrieved using TD_AnimationData).
+    //Additionally defines the order in which the items are given out in QList<QVariant>.
+    enum AnimationData {
+        AD_Interval = 0,
+        AD_NumberOfFrames,
+        AD_AnimationPlayMode,  //currently not used as themes seem to contain invalid data
+    };
+
+    // Animation modes
+    enum AnimationMode {
+        AM_PlayOnce = 0, //animation is played exactly once
+        AM_Looping,      //animation is repeated until stopped
+        AM_Bounce        //animation is played repeatedly until stopped,
+                         //but frames are played in reverse order every second time
+                         //(no support yet)
+    };
+
     // S60 look-and-feel font categories
     enum FontCategories {
         FC_Undefined,
@@ -104,7 +126,7 @@
     };
 
     enum SkinParts {
-        SP_QgnGrafBarWait,
+        SP_QgnGrafBarWaitAnim,
         SP_QgnGrafBarFrameCenter,
         SP_QgnGrafBarFrameSideL,
         SP_QgnGrafBarFrameSideR,
@@ -287,7 +309,70 @@
     };
 };
 
+#ifdef Q_WS_S60
+class CAknBitmapAnimation;
+NONSHARABLE_CLASS (AnimationData) : public QObject
+{
+public:
+    AnimationData(const QS60StyleEnums::SkinParts part, int frames, int interval);
+
+    const QS60StyleEnums::SkinParts m_id;
+    int m_frames;
+    int m_interval;
+    QS60StyleEnums::AnimationMode m_mode;
+};
+
+
+NONSHARABLE_CLASS (AnimationDataV2) : public AnimationData
+{
+public:
+    AnimationDataV2(const AnimationData &data);
+    ~AnimationDataV2();
+
+    CAknBitmapAnimation *m_animation;
+    int m_currentFrame;
+    bool m_resourceBased;
+    int m_timerId;
+};
+
+
+class QS60StyleAnimation : public QObject
+{
+public:
+    QS60StyleAnimation(const QS60StyleEnums::SkinParts part, int frames, int interval);
+    ~QS60StyleAnimation();
+
+public:
+    QS60StyleEnums::SkinParts animationId() const {return m_currentData->m_id;}
+    int frameCount() const { return m_currentData->m_frames;}
+    int interval() const {return m_currentData->m_interval;}
+    QS60StyleEnums::AnimationMode playMode() const {return m_currentData->m_mode;}
+    CAknBitmapAnimation* animationObject() const {return m_currentData->m_animation;}
+    bool isResourceBased() const {return m_currentData->m_resourceBased;}
+    int timerId() const {return m_currentData->m_timerId;}
+    int currentFrame() const {return m_currentData->m_currentFrame;}
+
+    void setFrameCount(int frameCount) {m_currentData->m_frames = frameCount;}
+    void setInterval(int interval) {m_currentData->m_interval = interval;}
+    void setAnimationObject(CAknBitmapAnimation* animation);
+    void setResourceBased(bool resourceBased) {m_currentData->m_resourceBased = resourceBased;}
+    void setTimerId(int timerId) {m_currentData->m_timerId = timerId;}
+    void setCurrentFrame(int currentFrame) {m_currentData->m_currentFrame = currentFrame;}
+
+    void resetToDefaults();
+
+private: //data members
+    //TODO: consider changing these to non-pointers as the classes are rather small anyway
+    AnimationData *m_defaultData;
+    AnimationDataV2 *m_currentData;
+};
+
+#endif //Q_WS_S60
+
+
 class QFocusFrame;
+class QProgressBar;
+class QS60StyleAnimation;
 
 // Private class
 #ifdef Q_OS_SYMBIAN
@@ -371,6 +456,7 @@
         SF_StateEnabled =     0x0010, // Enabled = the default
         SF_StateDisabled =    0x0020,
         SF_ColorSkinned =     0x0040, // pixmap is colored with foreground pen color
+        SF_Animation =        0x0080,
     };
 
     enum CacheClearReason {
@@ -412,6 +498,7 @@
     static bool isTouchSupported();
     static bool isToolBarBackground();
     static bool hasSliderGrooveGraphic();
+    static bool isSingleClickUi();
 
     // calculates average color based on button skin graphics (minus borders).
     QColor colorFromFrameGraphics(SkinFrameElements frame) const;
@@ -455,6 +542,16 @@
     //so that theme graphic background can be drawn.
     static bool canDrawThemeBackground(const QBrush &backgroundBrush);
 
+    static int currentAnimationFrame(QS60StyleEnums::SkinParts part);
+#ifdef Q_WS_S60
+
+    //No support for animations on emulated style
+    void startAnimation(QS60StyleEnums::SkinParts animation);
+    void stopAnimation(QS60StyleEnums::SkinParts animation);
+    static QS60StyleAnimation* animationDefinition(QS60StyleEnums::SkinParts part);
+
+#endif
+
 private:
     static void drawPart(QS60StyleEnums::SkinParts part, QPainter *painter,
         const QRect &rect, SkinElementFlags flags = KDefaultSkinElementFlags);
@@ -497,6 +594,12 @@
     QPalette m_originalPalette;
 
     QPointer<QFocusFrame> m_focusFrame;
+
+#ifdef Q_WS_S60
+    //list of progress bars having animation running
+    QList<QProgressBar *> m_bars;
+#endif
+
 };
 
 QT_END_NAMESPACE
--- a/src/gui/styles/qs60style_s60.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qs60style_s60.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -63,6 +63,7 @@
 #include <aknutils.h>
 #include <aknnavi.h>
 #include <gulicon.h>
+#include <AknBitmapAnimation.h>
 
 #if !defined(QT_NO_STYLE_S60) || defined(QT_PLUGIN)
 
@@ -72,6 +73,7 @@
     EDrawIcon,
     EDrawGulIcon,
     EDrawBackground,
+    EDrawAnimation,
     ENoDraw
 };
 
@@ -97,6 +99,47 @@
     int newMinorSkinId;
 } partMapEntry;
 
+AnimationData::AnimationData(const QS60StyleEnums::SkinParts part, int frames, int interval) : m_id(part),
+    m_frames(frames), m_interval(interval), m_mode(QS60StyleEnums::AM_Looping)
+{
+}
+
+AnimationDataV2::AnimationDataV2(const AnimationData &data) : AnimationData(data.m_id, data.m_frames, data.m_interval),
+    m_animation(0), m_currentFrame(0), m_resourceBased(false), m_timerId(0)
+{
+}
+AnimationDataV2::~AnimationDataV2()
+{
+    delete m_animation;
+}
+
+QS60StyleAnimation::QS60StyleAnimation(const QS60StyleEnums::SkinParts part, int frames, int interval)
+{
+    QT_TRAP_THROWING(m_defaultData = new (ELeave) AnimationData(part, frames, interval));
+    QT_TRAP_THROWING(m_currentData = new (ELeave) AnimationDataV2(*m_defaultData));
+}
+
+QS60StyleAnimation::~QS60StyleAnimation()
+{
+    delete m_currentData;
+    delete m_defaultData;
+}
+
+void QS60StyleAnimation::setAnimationObject(CAknBitmapAnimation* animation)
+{
+    Q_ASSERT(animation);
+    if (m_currentData->m_animation)
+        delete m_currentData->m_animation;
+    m_currentData->m_animation = animation;
+}
+
+void QS60StyleAnimation::resetToDefaults()
+{
+    delete m_currentData;
+    m_currentData = 0;
+    QT_TRAP_THROWING(m_currentData = new (ELeave) AnimationDataV2(*m_defaultData));
+}
+
 class QS60StyleModeSpecifics
 {
 public:
@@ -113,6 +156,8 @@
     static QSize naviPaneSize();
     static TAknsItemID partSpecificThemeId(int part);
 
+    static QVariant themeDefinition(QS60StyleEnums::ThemeDefinitions definition, QS60StyleEnums::SkinParts part);
+
 private:
     static QPixmap createSkinnedGraphicsLX(QS60StyleEnums::SkinParts part,
         const QSize &size, QS60StylePrivate::SkinElementFlags flags);
@@ -128,7 +173,7 @@
 };
 
 const partMapEntry QS60StyleModeSpecifics::m_partMap[] = {
-    /* SP_QgnGrafBarWait */                {KAknsIIDQgnGrafBarWaitAnim,            EDrawIcon,   ES60_All,    -1,-1},
+    /* SP_QgnGrafBarWaitAnim */            {KAknsIIDQgnGrafBarWaitAnim,       EDrawAnimation,   ES60_All,    -1,-1},
     /* SP_QgnGrafBarFrameCenter */         {KAknsIIDQgnGrafBarFrameCenter,         EDrawIcon,   ES60_All,    -1,-1},
     /* SP_QgnGrafBarFrameSideL */          {KAknsIIDQgnGrafBarFrameSideL,          EDrawIcon,   ES60_All,    -1,-1},
     /* SP_QgnGrafBarFrameSideR */          {KAknsIIDQgnGrafBarFrameSideR,          EDrawIcon,   ES60_All,    -1,-1},
@@ -371,7 +416,7 @@
 void QS60StyleModeSpecifics::fallbackInfo(const QS60StyleEnums::SkinParts &stylePart, TInt &fallbackIndex)
 {
     switch(stylePart) {
-        case QS60StyleEnums::SP_QgnGrafBarWait:
+        case QS60StyleEnums::SP_QgnGrafBarWaitAnim:
             fallbackIndex = EMbmAvkonQgn_graf_bar_wait_1;
             break;
         case QS60StyleEnums::SP_QgnGrafBarFrameCenter:
@@ -604,6 +649,11 @@
     return QSysInfo::s60Version() != QSysInfo::SV_S60_3_1;
 }
 
+bool QS60StylePrivate::isSingleClickUi()
+{
+    return (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0);
+}
+
 QPoint qt_s60_fill_background_offset(const QWidget *targetWidget)
 {
     CCoeControl *control = targetWidget->effectiveWinId();
@@ -709,6 +759,69 @@
     //        QS60WindowSurface::lockBitmapHeap();
             break;
         }
+        case EDrawAnimation: {
+            CFbsBitmap* animationFrame;
+            CFbsBitmap* frameMask;
+            CAknBitmapAnimation* aknAnimation = 0;
+            TBool constructedFromTheme = ETrue;
+
+            QS60StyleAnimation* animation = QS60StylePrivate::animationDefinition(part); //ownership is not passed
+            if (animation) {
+                if (!animation->animationObject() && !animation->isResourceBased()) {// no pre-made item exists, create new animation
+                    CAknBitmapAnimation* newAnimation = CAknBitmapAnimation::NewL();
+                    CleanupStack::PushL(newAnimation);
+                    if (newAnimation)
+                        constructedFromTheme = newAnimation->ConstructFromSkinL(skinId);
+                    if (constructedFromTheme && newAnimation->BitmapAnimData()->FrameArray().Count() > 0) {
+                        animation->setResourceBased(false);
+                        animation->setAnimationObject(newAnimation); //animation takes ownership
+                    }
+                    CleanupStack::Pop(newAnimation);
+                }
+                //fill-in stored information
+                aknAnimation = animation->animationObject();
+                constructedFromTheme = !animation->isResourceBased();
+            }
+
+            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
+                if(currentFrame >= aknAnimation->BitmapAnimData()->FrameArray().Count())
+                    User::Leave(KErrOverflow);
+                const CBitmapFrameData* frameData = aknAnimation->BitmapAnimData()->FrameArray().At(currentFrame);
+                if (frameData) {
+                    animationFrame = frameData->Bitmap();
+                    frameMask = frameData->Mask();
+                }
+            } else {
+                //Theme does not contain animation theming, create frames from resource file
+                TInt fallbackGraphicID = -1;
+                fallbackInfo(part, fallbackGraphicID);
+                fallbackGraphicID = fallbackGraphicID + (currentFrame * 2); //skip masks
+                TInt fallbackGraphicsMaskID =
+                    (fallbackGraphicID == KErrNotFound) ? KErrNotFound : fallbackGraphicID + 1; //masks are auto-generated as next in mif files
+                if (fallbackGraphicsMaskID != KErrNotFound)
+                    fallbackGraphicsMaskID = fallbackGraphicsMaskID + (currentFrame * 2); //skip actual graphics
+
+                //Then draw animation frame
+                AknsUtils::CreateIconL(
+                    skinInstance,
+                    KAknsIIDDefault, //animation is not themed, lets force fallback graphics
+                    animationFrame,
+                    frameMask,
+                    AknIconUtils::AvkonIconFileName(),
+                    fallbackGraphicID ,
+                    fallbackGraphicsMaskID);
+            }
+            result = fromFbsBitmap(animationFrame, frameMask, flags, targetSize);
+            if (!constructedFromTheme) {
+                delete animationFrame;
+                animationFrame = 0;
+                delete frameMask;
+                frameMask = 0;
+            }
+            break;
+        }
     }
     if (!result)
         result = QPixmap();
@@ -731,7 +844,6 @@
     MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
     QPixmap result;
 
-//        QS60WindowSurface::unlockBitmapHeap();
     static const TDisplayMode displayMode = S60->supportsPremultipliedAlpha ? Q_SYMBIAN_ECOLOR16MAP : EColor16MA;
     static const TInt drawParam = S60->supportsPremultipliedAlpha ? KAknsDrawParamDefault : KAknsDrawParamNoClearUnderImage|KAknsDrawParamRGBOnly;
 
@@ -985,8 +1097,13 @@
     m_pmPointer = data[activeLayoutIndex];
 }
 
+Q_GLOBAL_STATIC(QList<QS60StyleAnimation *>, m_animations)
+
 QS60StylePrivate::QS60StylePrivate()
 {
+    //Animation defaults need to be created when style is instantiated
+    QS60StyleAnimation* progressBarAnimation = new QS60StyleAnimation(QS60StyleEnums::SP_QgnGrafBarWaitAnim, 7, 100);
+    m_animations()->append(progressBarAnimation);
     // No need to set active layout, if dynamic metrics API is available
     setActiveLayout();
 }
@@ -1187,6 +1304,11 @@
         setThemePalette(topLevelWidget);
         topLevelWidget->ensurePolished();
     }
+#ifndef QT_NO_PROGRESSBAR
+    //re-start animation timer
+    stopAnimation(QS60StyleEnums::SP_QgnGrafBarWaitAnim); //todo: once we have more animations, we could say "stop all running ones"
+    startAnimation(QS60StyleEnums::SP_QgnGrafBarWaitAnim); //and "re-start all previously running ones"
+#endif
 }
 
 QSize QS60StylePrivate::naviPaneSize()
@@ -1206,6 +1328,121 @@
     return QSize(0,0);
 }
 
+int QS60StylePrivate::currentAnimationFrame(QS60StyleEnums::SkinParts part)
+{
+    QS60StyleAnimation *animation = animationDefinition(part);
+    // todo: looping could be done in QS60Style::timerEvent
+    if (animation->frameCount() == animation->currentFrame())
+        animation->setCurrentFrame(0);
+    return animation->currentFrame();
+}
+
+QS60StyleAnimation* QS60StylePrivate::animationDefinition(QS60StyleEnums::SkinParts part)
+{
+    int i = 0;
+    const int animationsCount = m_animations()->isEmpty() ? 0 : m_animations()->count();
+    for(; i < animationsCount; i++) {
+        if (part == m_animations()->at(i)->animationId())
+            break;
+    }
+    return m_animations()->at(i);
+}
+
+void QS60StylePrivate::startAnimation(QS60StyleEnums::SkinParts animationPart)
+{
+    Q_Q(QS60Style);
+
+    //Query animation data from theme and store values to local struct.
+    QVariant themeAnimationDataVariant = QS60StyleModeSpecifics::themeDefinition(
+        QS60StyleEnums::TD_AnimationData, animationPart);
+    QList<QVariant> themeAnimationData = themeAnimationDataVariant.toList();
+
+    QS60StyleAnimation *animation = QS60StylePrivate::animationDefinition(animationPart);
+    if (animation) {
+        if (themeAnimationData.at(QS60StyleEnums::AD_Interval).toInt() != 0)
+            animation->setInterval(themeAnimationData.at(QS60StyleEnums::AD_Interval).toInt());
+
+        if (themeAnimationData.at(QS60StyleEnums::AD_NumberOfFrames).toInt() != 0)
+            animation->setFrameCount(themeAnimationData.at(QS60StyleEnums::AD_NumberOfFrames).toInt());
+
+        //todo: playmode is ignored for now, since it seems to return invalid data on some themes
+        //lets use the table values for play mode
+
+        animation->setCurrentFrame(0); //always initialize
+        const int timerId = q->startTimer(animation->interval());
+        animation->setTimerId(timerId);
+    }
+}
+
+void QS60StylePrivate::stopAnimation(QS60StyleEnums::SkinParts animationPart)
+{
+    Q_Q(QS60Style);
+
+    QS60StyleAnimation *animation = QS60StylePrivate::animationDefinition(animationPart);
+    if (animation) {
+        animation->setCurrentFrame(0);
+        if (animation->timerId() != 0) {
+            q->killTimer(animation->timerId());
+            animation->setTimerId(0);
+        }
+        animation->resetToDefaults();
+    }
+}
+
+QVariant QS60StyleModeSpecifics::themeDefinition(
+    QS60StyleEnums::ThemeDefinitions definition, QS60StyleEnums::SkinParts part)
+{
+    MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
+
+    Q_ASSERT(skinInstance);
+
+    switch(definition) {
+    //Animation definitions
+    case QS60StyleEnums::TD_AnimationData:
+        {
+            CAknsBmpAnimItemData *animationData;
+            TAknsItemID animationSkinId = partSpecificThemeId(part);
+            QList<QVariant> list;
+
+            TRAPD( error, QT_TRYCATCH_LEAVING(
+                    animationData = static_cast<CAknsBmpAnimItemData*>(skinInstance->CreateUncachedItemDataL(
+                            animationSkinId, EAknsITBmpAnim))));
+            if (error)
+                return list;
+
+            if (animationData) {
+                list.append((int)animationData->FrameInterval());
+                list.append((int)animationData->NumberOfImages());
+
+                QS60StyleEnums::AnimationMode playMode;
+                switch(animationData->PlayMode()) {
+                    case CBitmapAnimClientData::EPlay:
+                        playMode = QS60StyleEnums::AM_PlayOnce;
+                        break;
+                    case CBitmapAnimClientData::ECycle:
+                        playMode = QS60StyleEnums::AM_Looping;
+                        break;
+                    case CBitmapAnimClientData::EBounce:
+                        playMode = QS60StyleEnums::AM_Bounce;
+                        break;
+                    default:
+                        break;
+                }
+                list.append(QVariant((int)playMode));
+                delete animationData;
+            } else {
+                list.append(0);
+                list.append(0);
+            }
+            return list;
+        }
+        break;
+    default:
+        break;
+    }
+    return QVariant();
+}
+
 #endif // Q_WS_S60
 
 QT_END_NAMESPACE
--- a/src/gui/styles/qs60style_simulated.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/qs60style_simulated.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -342,6 +342,11 @@
     return false;
 }
 
+bool QS60StylePrivate::isSingleClickUi()
+{
+    return false;
+}
+
 QFont QS60StylePrivate::s60Font_specific(
         QS60StyleEnums::FontCategories fontCategory,
         int pointSize, bool resolveFontSize)
@@ -364,6 +369,11 @@
     return result;
 }
 
+int QS60StylePrivate::currentAnimationFrame(QS60StyleEnums::SkinParts part)
+{
+    return 0;
+}
+
 /*!
   Constructs a QS60Style object.
 */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gui/styles/qstyle_s60.qrc	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,137 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/trolltech/styles/commonstyle">
+<!-- <file>images/filelink-16.png</file> -->
+<file>images/filelink-32.png</file>
+<!-- <file>images/filelink-128.png</file> -->
+<!-- <file>images/file-16.png</file> -->
+<file>images/file-32.png</file>
+<!-- <file>images/file-128.png</file> -->
+<!-- <file>images/newdirectory-16.png</file> -->
+<file>images/newdirectory-32.png</file>
+<!-- <file>images/newdirectory-128.png</file> -->
+<!-- <file>images/parentdir-16.png</file> -->
+<file>images/parentdir-32.png</file>
+<!-- <file>images/parentdir-128.png</file> -->
+<!-- <file>images/dvd-16.png</file> -->
+<!-- <file>images/dvd-32.png</file> -->
+<!-- <file>images/dvd-128.png</file> -->
+<!-- <file>images/cdr-16.png</file> -->
+<!-- <file>images/cdr-32.png</file> -->
+<!-- <file>images/cdr-128.png</file> -->
+<!-- <file>images/floppy-16.png</file> -->
+<!-- <file>images/floppy-32.png</file> -->
+<!-- <file>images/floppy-128.png</file> -->
+<!-- <file>images/harddrive-16.png</file> -->
+<file>images/harddrive-32.png</file>
+<!-- <file>images/harddrive-128.png</file> -->
+<!-- <file>images/trash-16.png</file> -->
+<!-- <file>images/trash-32.png</file> -->
+<!-- <file>images/trash-128.png</file> -->
+<!-- <file>images/networkdrive-16.png</file> -->
+<!-- <file>images/networkdrive-32.png</file> -->
+<!-- <file>images/networkdrive-128.png</file> -->
+<!-- <file>images/computer-16.png</file> -->
+<!-- <file>images/computer-32.png</file> -->
+<!-- <file>images/desktop-16.png</file> -->
+<file>images/desktop-32.png</file>
+<!-- <file>images/dirclosed-16.png</file> -->
+<file>images/dirclosed-32.png</file>
+<!-- <file>images/dirclosed-128.png</file> -->
+<!-- <file>images/dirlink-16.png</file> -->
+<file>images/dirlink-32.png</file>
+<!-- <file>images/dirlink-128.png</file> -->
+<!-- <file>images/diropen-16.png</file> -->
+<file>images/diropen-32.png</file>
+<!-- <file>images/diropen-128.png</file> -->
+<!-- <file>images/left-16.png</file> -->
+<file>images/left-32.png</file>
+<!-- <file>images/left-128.png</file> -->
+<!-- <file>images/right-16.png</file> -->
+<file>images/right-32.png</file>
+<!-- <file>images/right-128.png</file> -->
+<!-- <file>images/up-16.png</file> -->
+<file>images/up-32.png</file>
+<!-- <file>images/up-128.png</file> -->
+<!-- <file>images/down-16.png</file> -->
+<file>images/down-32.png</file>
+<!-- <file>images/down-128.png</file> -->
+<!-- <file>images/filecontents-16.png</file> -->
+<file>images/filecontents-32.png</file>
+<!-- <file>images/filecontents-128.png</file> -->
+<!-- <file>images/fileinfo-16.png</file> -->
+<file>images/fileinfo-32.png</file>
+<!-- <file>images/fileinfo-128.png</file> -->
+<!-- <file>images/viewdetailed-16.png</file> -->
+<file>images/viewdetailed-32.png</file>
+<!-- <file>images/viewdetailed-128.png</file> -->
+<!-- <file>images/viewlist-16.png</file> -->
+<file>images/viewlist-32.png</file>
+<!-- <file>images/viewlist-128.png</file> -->
+<file>images/fontbitmap-16.png</file>
+<file>images/fonttruetype-16.png</file>
+<!-- <file>images/standardbutton-apply-128.png</file> -->
+<!-- <file>images/standardbutton-apply-16.png</file> -->
+<file>images/standardbutton-apply-32.png</file>
+<!-- <file>images/standardbutton-cancel-128.png</file> -->
+<!-- <file>images/standardbutton-cancel-16.png</file> -->
+<file>images/standardbutton-cancel-32.png</file>
+<!-- <file>images/standardbutton-clear-128.png</file> -->
+<!-- <file>images/standardbutton-clear-16.png</file> -->
+<file>images/standardbutton-clear-32.png</file>
+<!-- <file>images/standardbutton-close-128.png</file> -->
+<!-- <file>images/standardbutton-close-16.png</file> -->
+<file>images/standardbutton-close-32.png</file>
+<!-- <file>images/standardbutton-delete-128.png</file> -->
+<!-- <file>images/standardbutton-delete-16.png</file> -->
+<file>images/standardbutton-delete-32.png</file>
+<!-- <file>images/standardbutton-help-128.png</file> -->
+<!-- <file>images/standardbutton-help-16.png</file> -->
+<file>images/standardbutton-help-32.png</file>
+<!-- <file>images/standardbutton-no-128.png</file> -->
+<!-- <file>images/standardbutton-no-16.png</file> -->
+<file>images/standardbutton-no-32.png</file>
+<!-- <file>images/standardbutton-ok-128.png</file> -->
+<!-- <file>images/standardbutton-ok-16.png</file> -->
+<file>images/standardbutton-ok-32.png</file>
+<!-- <file>images/standardbutton-open-128.png</file> -->
+<!-- <file>images/standardbutton-open-16.png</file> -->
+<file>images/standardbutton-open-32.png</file>
+<!-- <file>images/standardbutton-save-128.png</file> -->
+<!-- <file>images/standardbutton-save-16.png</file> -->
+<file>images/standardbutton-save-32.png</file>
+<!-- <file>images/standardbutton-yes-128.png</file> -->
+<!-- <file>images/standardbutton-yes-16.png</file> -->
+<file>images/standardbutton-yes-32.png</file>
+<file>images/standardbutton-closetab-16.png</file>
+<file>images/standardbutton-closetab-down-16.png</file>
+<file>images/standardbutton-closetab-hover-16.png</file>
+<!-- <file>images/refresh-24.png</file> -->
+<file>images/refresh-32.png</file>
+<!-- <file>images/stop-24.png</file> -->
+<file>images/stop-32.png</file>
+<!-- <file>images/media-stop-16.png</file> -->
+<file>images/media-stop-32.png</file>
+<!-- <file>images/media-play-16.png</file> -->
+<file>images/media-play-32.png</file>
+<!-- <file>images/media-pause-16.png</file> -->
+<file>images/media-pause-32.png</file>
+<!-- <file>images/media-seek-forward-16.png</file> -->
+<file>images/media-seek-forward-32.png</file>
+<!-- <file>images/media-seek-backward-16.png</file> -->
+<file>images/media-seek-backward-32.png</file>
+<!-- <file>images/media-skip-forward-16.png</file> -->
+<file>images/media-skip-forward-32.png</file>
+<!-- <file>images/media-skip-backward-16.png</file> -->
+<file>images/media-skip-backward-32.png</file>
+<file>images/media-volume-16.png</file>
+<file>images/media-volume-muted-16.png</file>
+</qresource>
+<!--
+<qresource prefix="/trolltech/styles/macstyle">
+<file>images/closedock-16.png</file>
+<file>images/closedock-down-16.png</file>
+<file>images/dockdock-16.png</file>
+<file>images/dockdock-down-16.png</file>
+</qresource>
+-->
+</RCC>
--- a/src/gui/styles/styles.pri	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/styles/styles.pri	Fri Mar 12 15:46:37 2010 +0200
@@ -23,10 +23,12 @@
         styles/qstylesheetstyle.cpp \
         styles/qstylesheetstyle_default.cpp
 
-!wince* {
-        RESOURCES += styles/qstyle.qrc
+wince* {
+    RESOURCES += styles/qstyle_wince.qrc
+} else:symbian {
+    RESOURCES += styles/qstyle_s60.qrc
 } else {
-        RESOURCES += styles/qstyle_wince.qrc
+    RESOURCES += styles/qstyle.qrc
 }
 
 contains( styles, all ) {
@@ -168,7 +170,7 @@
 	SOURCES += styles/qs60style.cpp
 	symbian {
 		SOURCES += styles/qs60style_s60.cpp
-		LIBS += -laknicon -laknskins -laknskinsrv -lfontutils -legul
+		LIBS += -laknicon -laknskins -laknskinsrv -lfontutils -legul -lbmpanim
 	} else {
 		SOURCES += styles/qs60style_simulated.cpp
 		RESOURCES += styles/qstyle_s60_simulated.qrc
--- a/src/gui/text/qfontengine.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/text/qfontengine.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -357,9 +357,6 @@
                 ++i;
             }
         } else {
-            positions.resize(glyphs.numGlyphs);
-            glyphs_out.resize(glyphs.numGlyphs);
-            int i = 0;
             while (i < glyphs.numGlyphs) {
                 if (!glyphs.attributes[i].dontPrint) {
                     QFixed gpos_x = xpos + glyphs.offsets[i].x;
--- a/src/gui/text/qfontengine_s60.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/text/qfontengine_s60.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -129,26 +129,62 @@
     return uc;
 }
 
+CFont *QFontEngineS60::fontWithSize(qreal size) const
+{
+    CFont *result = 0;
+    TFontSpec fontSpec(qt_QString2TPtrC(QFontEngine::fontDef.family), TInt(size));
+    fontSpec.iFontStyle.SetBitmapType(EAntiAliasedGlyphBitmap);
+    fontSpec.iFontStyle.SetPosture(QFontEngine::fontDef.style == QFont::StyleNormal?EPostureUpright:EPostureItalic);
+    fontSpec.iFontStyle.SetStrokeWeight(QFontEngine::fontDef.weight > QFont::Normal?EStrokeWeightBold:EStrokeWeightNormal);
+    const TInt errorCode = S60->screenDevice()->GetNearestFontToDesignHeightInPixels(result, fontSpec);
+    Q_ASSERT(result && (errorCode == 0));
+    return result;
+}
+
+void QFontEngineS60::setFontScale(qreal scale)
+{
+    if (qFuzzyCompare(scale, qreal(1))) {
+        if (!m_originalFont)
+            m_originalFont = fontWithSize(m_originalFontSizeInPixels);
+        m_activeFont = m_originalFont;
+    } else {
+        const qreal scaledFontSizeInPixels = m_originalFontSizeInPixels * scale;
+        if (!m_scaledFont ||
+                (TInt(scaledFontSizeInPixels) != TInt(m_scaledFontSizeInPixels))) {
+            releaseFont(m_scaledFont);
+            m_scaledFontSizeInPixels = scaledFontSizeInPixels;
+            m_scaledFont = fontWithSize(m_scaledFontSizeInPixels);
+        }
+        m_activeFont = m_scaledFont;
+    }
+}
+
+void QFontEngineS60::releaseFont(CFont *&font)
+{
+    if (font) {
+        S60->screenDevice()->ReleaseFont(font);
+        font = 0;
+    }
+}
+
 QFontEngineS60::QFontEngineS60(const QFontDef &request, const QFontEngineS60Extensions *extensions)
     : m_extensions(extensions)
+    , m_originalFont(0)
+    , m_originalFontSizeInPixels((request.pixelSize >= 0)?
+            request.pixelSize:pointsToPixels(request.pointSize))
+    , m_scaledFont(0)
+    , m_scaledFontSizeInPixels(0)
+    , m_activeFont(0)
 {
     QFontEngine::fontDef = request;
-    m_fontSizeInPixels = (request.pixelSize >= 0)?
-            request.pixelSize:pointsToPixels(request.pointSize);
-
-    TFontSpec fontSpec(qt_QString2TPtrC(request.family), m_fontSizeInPixels);
-    fontSpec.iFontStyle.SetBitmapType(EAntiAliasedGlyphBitmap);
-    fontSpec.iFontStyle.SetPosture(request.style == QFont::StyleNormal?EPostureUpright:EPostureItalic);
-    fontSpec.iFontStyle.SetStrokeWeight(request.weight > QFont::Normal?EStrokeWeightBold:EStrokeWeightNormal);
-    const TInt errorCode = S60->screenDevice()->GetNearestFontToDesignHeightInPixels(m_font, fontSpec);
-    Q_ASSERT(errorCode == 0);
-
+    setFontScale(1.0);
     cache_cost = sizeof(QFontEngineS60);
 }
 
 QFontEngineS60::~QFontEngineS60()
 {
-    S60->screenDevice()->ReleaseFont(m_font);
+    releaseFont(m_originalFont);
+    releaseFont(m_scaledFont);
 }
 
 bool QFontEngineS60::stringToCMap(const QChar *characters, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const
@@ -251,12 +287,12 @@
 
 QFixed QFontEngineS60::ascent() const
 {
-    return m_font->FontMaxAscent();
+    return m_originalFont->FontMaxAscent();
 }
 
 QFixed QFontEngineS60::descent() const
 {
-    return m_font->FontMaxDescent();
+    return m_originalFont->FontMaxDescent();
 }
 
 QFixed QFontEngineS60::leading() const
@@ -266,7 +302,7 @@
 
 qreal QFontEngineS60::maxCharWidth() const
 {
-    return m_font->MaxCharWidthInPixels();
+    return m_originalFont->MaxCharWidthInPixels();
 }
 
 const char *QFontEngineS60::name() const
@@ -302,11 +338,11 @@
     const TUint specialCode = (TUint)glyph | 0x80000000;
 
     const CFont::TCharacterDataAvailability availability =
-        m_font->GetCharacterData(specialCode, metrics, bitmap, bitmapSize);
+            m_activeFont->GetCharacterData(specialCode, metrics, bitmap, bitmapSize);
     const glyph_t fallbackGlyph = '?';
     if (availability != CFont::EAllCharacterData) {
         const CFont::TCharacterDataAvailability fallbackAvailability =
-            m_font->GetCharacterData(fallbackGlyph, metrics, bitmap, bitmapSize);
+                m_activeFont->GetCharacterData(fallbackGlyph, metrics, bitmap, bitmapSize);
         Q_ASSERT(fallbackAvailability == CFont::EAllCharacterData);
     }
 }
--- a/src/gui/text/qfontengine_s60_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/text/qfontengine_s60_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -58,9 +58,6 @@
 #include "qsize.h"
 #include <openfont.h>
 
-class CFbsBitmap;
-class CFbsBitmapDevice;
-class CFbsBitGc;
 class CFont;
 
 QT_BEGIN_NAMESPACE
@@ -120,15 +117,21 @@
     Type type() const;
 
     void getCharacterData(glyph_t glyph, TOpenFontCharMetrics& metrics, const TUint8*& bitmap, TSize& bitmapSize) const;
+    void setFontScale(qreal scale);
 
 private:
     friend class QFontPrivate;
 
     QFixed glyphAdvance(HB_Glyph glyph) const;
+    CFont *fontWithSize(qreal size) const;
+    static void releaseFont(CFont *&font);
 
-    CFont* m_font;
     const QFontEngineS60Extensions *m_extensions;
-    qreal m_fontSizeInPixels;
+    CFont* m_originalFont;
+    const qreal m_originalFontSizeInPixels;
+    CFont* m_scaledFont;
+    qreal m_scaledFontSizeInPixels;
+    CFont* m_activeFont;
 };
 
 class QFontEngineMultiS60 : public QFontEngineMulti
--- a/src/gui/text/qtextoption.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/text/qtextoption.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -52,6 +52,9 @@
 
 /*!
     Constructs a text option with default properties for text.
+    The text alignment property is set to Qt::AlignLeft. The
+    word wrap property is set to QTextOption::WordWrap. The
+    using of design metrics flag is set to false.
 */
 QTextOption::QTextOption()
     : align(Qt::AlignLeft),
@@ -67,6 +70,8 @@
 
 /*!
     Constructs a text option with the given \a alignment for text.
+    The word wrap property is set to QTextOption::WordWrap. The using
+    of design metrics flag is set to false.
 */
 QTextOption::QTextOption(Qt::Alignment alignment)
     : align(alignment),
--- a/src/gui/text/qzipreader_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/text/qzipreader_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -49,7 +49,7 @@
 //  -------------
 //
 // This file is not part of the Qt API.  It exists for the convenience
-// of the QLibrary class.  This header file may change from
+// of the QZipReader class.  This header file may change from
 // version to version without notice, or even be removed.
 //
 // We mean it.
--- a/src/gui/text/qzipwriter_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/text/qzipwriter_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -47,7 +47,7 @@
 //  -------------
 //
 // This file is not part of the Qt API.  It exists for the convenience
-// of the QLibrary class.  This header file may change from
+// of the QZipWriter class.  This header file may change from
 // version to version without notice, or even be removed.
 //
 // We mean it.
--- a/src/gui/util/qsystemtrayicon_mac.mm	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/util/qsystemtrayicon_mac.mm	Fri Mar 12 15:46:37 2010 +0200
@@ -569,16 +569,3 @@
 }
 @end
 
-
-/* Done here because this is the only .mm for now! -Sam */
-QMacCocoaAutoReleasePool::QMacCocoaAutoReleasePool()
-{
-    NSApplicationLoad();
-    pool = (void*)[[NSAutoreleasePool alloc] init];
-}
-
-QMacCocoaAutoReleasePool::~QMacCocoaAutoReleasePool()
-{
-    [(NSAutoreleasePool*)pool release];
-}
-
--- a/src/gui/util/util.pri	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/util/util.pri	Fri Mar 12 15:46:37 2010 +0200
@@ -41,5 +41,5 @@
 
 symbian {
     LIBS += -lsendas2 -letext -lapmime
-    contains(QT_CONFIG, s60): LIBS += -lplatformenv -lCommonUI
+    contains(QT_CONFIG, s60): LIBS += -lplatformenv -lcommonui
 }
--- a/src/gui/widgets/qdialogbuttonbox.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qdialogbuttonbox.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1017,6 +1017,8 @@
     If the button has already been added, it is removed and added again with the
     new role.
 
+    \note The button box takes ownership of the button.
+
     \sa removeButton(), clear()
 */
 void QDialogButtonBox::addButton(QAbstractButton *button, ButtonRole role)
--- a/src/gui/widgets/qlinecontrol.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qlinecontrol.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -524,8 +524,11 @@
         m_textLayout.draw(painter, offset, selections, clip);
 
     if (flags & DrawCursor){
+        int cursor = m_cursor;
+        if (m_preeditCursor != -1)
+            cursor += m_preeditCursor;
         if(!m_blinkPeriod || m_blinkStatus)
-            m_textLayout.drawCursor(painter, offset, m_cursor, m_cursorWidth);
+            m_textLayout.drawCursor(painter, offset, cursor, m_cursorWidth);
     }
 }
 
--- a/src/gui/widgets/qlinecontrol_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qlinecontrol_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -549,7 +549,10 @@
 
 inline qreal QLineControl::cursorToX() const
 {
-    return cursorToX(m_cursor);
+    int cursor = m_cursor;
+    if (m_preeditCursor != -1)
+        cursor += m_preeditCursor;
+    return cursorToX(cursor);
 }
 
 inline bool QLineControl::isReadOnly() const
--- a/src/gui/widgets/qmainwindow.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qmainwindow.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -119,8 +119,6 @@
     q->setAttribute(Qt::WA_Hover);
 #ifdef QT_SOFTKEYS_ENABLED
     menuBarAction = QSoftKeyManager::createAction(QSoftKeyManager::MenuSoftKey, q);
-    menuBarAction->setObjectName(QLatin1String("_q_menuSoftKeyAction"));
-    menuBarAction->setVisible(false);
 #endif
 }
 
--- a/src/gui/widgets/qmainwindowlayout_mac.mm	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qmainwindowlayout_mac.mm	Fri Mar 12 15:46:37 2010 +0200
@@ -472,14 +472,20 @@
 
 void QMainWindowLayout::cleanUpMacToolbarItems()
 {
-    for (int i = 0; i < toolbarItemsCopy.size(); ++i)
+#ifdef QT_MAC_USE_COCOA
+    QMacCocoaAutoReleasePool pool;
+#endif
+    for (int i = 0; i < toolbarItemsCopy.size(); ++i) {
+#ifdef QT_MAC_USE_COCOA
+        NSToolbarItem *item = static_cast<NSToolbarItem *>(toolbarItemsCopy.at(i));
+        [item setView:0];
+#endif
         CFRelease(toolbarItemsCopy.at(i));
+    }
     toolbarItemsCopy.clear();
     unifiedToolbarHash.clear();
 
 #ifdef QT_MAC_USE_COCOA
-    QMacCocoaAutoReleasePool pool;
-
     OSWindowRef window = qt_mac_window_for(layoutState.mainWindow);
     NSToolbar *macToolbar = [window toolbar];
     if (macToolbar) {
--- a/src/gui/widgets/qmenu.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qmenu.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1588,10 +1588,9 @@
 }
 
 /*!
-  This will set the default action to \a act. The default action may
-  have a visual queue depending on the current QStyle. A default
-  action is usually meant to indicate what will defaultly happen on a
-  drop, as shown in a context menu.
+  This sets the default action to \a act. The default action may have
+  a visual cue, depending on the current QStyle. A default action
+  usually indicates what will happen by default when a drop occurs.
 
   \sa defaultAction()
 */
--- a/src/gui/widgets/qmenu_mac.mm	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qmenu_mac.mm	Fri Mar 12 15:46:37 2010 +0200
@@ -175,6 +175,22 @@
     return ret;
 }
 
+static void cancelAllMenuTracking()
+{
+#ifdef QT_MAC_USE_COCOA
+    QMacCocoaAutoReleasePool pool;
+    NSMenu *mainMenu = [NSApp mainMenu];
+    [mainMenu cancelTracking];
+    for (NSMenuItem *item in [mainMenu itemArray]) {
+        if ([item submenu]) {
+            [[item submenu] cancelTracking];
+        }
+    }
+#else
+    CancelMenuTracking(AcquireRootMenu(), true, 0);
+#endif
+}
+
 static bool actualMenuItemVisibility(const QMenuBarPrivate::QMacMenuBarPrivate *mbp,
                                      const QMacMenuAction *action)
 {
@@ -1830,6 +1846,12 @@
     mac_menubar = 0;
 
     if (qt_mac_current_menubar.qmenubar == q) {
+#ifdef QT_MAC_USE_COCOA
+        QT_MANGLE_NAMESPACE(QCocoaMenuLoader) *loader = getMenuLoader();
+        [loader removeActionsFromAppMenu];
+#else
+        cancelAllMenuTracking();
+#endif
         extern void qt_event_request_menubarupdate(); //qapplication_mac.cpp
         qt_event_request_menubarupdate();
     }
@@ -1933,20 +1955,6 @@
     return qt_mac_is_ancestor(menuBar->parentWidget(), modalWidget);
 }
 
-static void cancelAllMenuTracking()
-{
-#ifdef QT_MAC_USE_COCOA
-    QMacCocoaAutoReleasePool pool;
-    NSMenu *mainMenu = [NSApp mainMenu];
-    [mainMenu cancelTracking];
-    for (NSMenuItem *item in [mainMenu itemArray]) {
-        if ([item submenu]) {
-            [[item submenu] cancelTracking];
-        }
-    }
-#endif
-}
-
 /*!
   \internal
 
--- a/src/gui/widgets/qmenu_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qmenu_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -71,6 +71,7 @@
 #ifndef QT_NO_MENU
 
 #ifdef Q_WS_S60
+void qt_symbian_next_menu_from_action(QWidget* actionContainer);
 void qt_symbian_show_toplevel(CEikMenuPane* menuPane);
 void qt_symbian_show_submenu(CEikMenuPane* menuPane, int id);
 #endif // Q_WS_S60
@@ -87,7 +88,7 @@
 typedef void NSMenuItem;
 #  endif //__OBJC__
 struct QMacMenuAction {
-    QMacMenuAction() 
+    QMacMenuAction()
 #ifndef QT_MAC_USE_COCOA
        : command(0)
 #else
@@ -124,7 +125,7 @@
 
 #ifdef Q_WS_WINCE
 struct QWceMenuAction {
-    uint command;    
+    uint command;
     QPointer<QAction> action;
     HMENU menuHandle;
     QWceMenuAction() : menuHandle(0), command(0) {}
@@ -340,7 +341,7 @@
         QList<QWceMenuAction*> actionItems;
         HMENU menuHandle;
         QWceMenuPrivate();
-        ~QWceMenuPrivate();        
+        ~QWceMenuPrivate();
         void addAction(QAction *, QWceMenuAction* =0);
         void addAction(QWceMenuAction *, QWceMenuAction* =0);
         void syncAction(QWceMenuAction *);
--- a/src/gui/widgets/qmenu_symbian.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qmenu_symbian.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -81,6 +81,7 @@
 static uint qt_symbian_menu_static_cmd_id = QT_SYMBIAN_FIRST_MENU_ITEM;
 static QPointer<QWidget> widgetWithContextMenu;
 static QList<QAction*> contextMenuActionList;
+static QWidget* actionMenu = NULL;
 static int contexMenuCommand=0;
 
 bool menuExists()
@@ -224,8 +225,26 @@
 }
 
 #ifdef Q_WS_S60
+void qt_symbian_next_menu_from_action(QWidget *actionContainer)
+{
+    actionMenu = actionContainer;
+}
+
 void qt_symbian_show_toplevel( CEikMenuPane* menuPane)
 {
+    if (actionMenu) {
+        QMenuBarPrivate *mb = 0;
+        mb = menubars()->value(actionMenu);
+        qt_symbian_menu_static_cmd_id = QT_SYMBIAN_FIRST_MENU_ITEM;
+        deleteAll( &symbianMenus );
+        Q_ASSERT(mb);
+        mb->symbian_menubar->rebuild();
+        for (int i = 0; i < symbianMenus.count(); ++i)
+            QT_TRAP_THROWING(menuPane->AddMenuItemL(symbianMenus.at(i)->menuItemData));
+        actionMenu = NULL;
+        return;
+    }
+
     if (!menuExists())
         return;
     rebuildMenu();
@@ -271,10 +290,16 @@
 void QMenuBarPrivate::symbianCreateMenuBar(QWidget *parent)
 {
     Q_Q(QMenuBar);
-    if (parent && parent->isWindow()){
-        menubars()->insert(q->window(), this);
-        symbian_menubar = new QSymbianMenuBarPrivate(this);
-        nativeMenuBars.append(q);
+    if (parent) {
+        if(parent->isWindow()) {
+            menubars()->insert(q->window(), this);
+            symbian_menubar = new QSymbianMenuBarPrivate(this);
+            nativeMenuBars.append(q);
+        } else {
+            menubars()->insert(q->parentWidget(), this);
+            symbian_menubar = new QSymbianMenuBarPrivate(this);
+            nativeMenuBars.append(q);
+        }
     }
 }
 
@@ -284,6 +309,7 @@
     int index = nativeMenuBars.indexOf(q);
     nativeMenuBars.removeAt(index);
     menubars()->remove(q->window(), this);
+    menubars()->remove(q->parentWidget(), this);
     rebuildMenu();
     if (symbian_menubar)
         delete symbian_menubar;
--- a/src/gui/widgets/qmenubar.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qmenubar.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -667,7 +667,7 @@
          \i Application Menu | About <application name>
          \i The application name is fetched from the \c {Info.plist} file
             (see note below). If this entry is not found no About item
-            will appear in the Application Menu. 
+            will appear in the Application Menu.
     \row \i config, options, setup, settings or preferences
          \i Application Menu | Preferences
          \i If this entry is not found the Settings item will be disabled
--- a/src/gui/widgets/qprintpreviewwidget.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qprintpreviewwidget.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -151,7 +151,11 @@
 public:
     GraphicsView(QWidget* parent = 0)
         : QGraphicsView(parent)
-        {}
+    {
+#ifdef Q_WS_MAC
+        setFrameStyle(QFrame::NoFrame);
+#endif
+    }
 signals:
     void resized();
 
--- a/src/gui/widgets/qtoolbar.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/gui/widgets/qtoolbar.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -441,8 +441,7 @@
     When a QToolBar is not a child of a QMainWindow, it looses the ability
     to populate the extension pop up with widgets added to the toolbar using
     addWidget(). Please use widget actions created by inheriting QWidgetAction
-    and implementing QWidgetAction::createWidget() instead. This is a known
-    issue which will be fixed in a future release.
+    and implementing QWidgetAction::createWidget() instead.
 
     \sa QToolButton, QMenu, QAction, {Application Example}
 */
--- a/src/network/access/qfilenetworkreply.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qfilenetworkreply.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -49,10 +49,15 @@
 QT_BEGIN_NAMESPACE
 
 QFileNetworkReplyPrivate::QFileNetworkReplyPrivate()
-    : QNetworkReplyPrivate(), realFileSize(0)
+    : QNetworkReplyPrivate(), fileEngine(0), fileSize(0), filePos(0)
 {
 }
 
+QFileNetworkReplyPrivate::~QFileNetworkReplyPrivate()
+{
+    delete fileEngine;
+}
+
 QFileNetworkReply::~QFileNetworkReply()
 {
 }
@@ -94,9 +99,8 @@
     if (fileName.isEmpty()) {
         fileName = url.toString(QUrl::RemoveAuthority | QUrl::RemoveFragment | QUrl::RemoveQuery);
     }
-    d->realFile.setFileName(fileName);
 
-    QFileInfo fi(d->realFile);
+    QFileInfo fi(fileName);
     if (fi.isDir()) {
         QString msg = QCoreApplication::translate("QNetworkAccessFileBackend", "Cannot open %1: Path is a directory").arg(url.toString());
         setError(QNetworkReply::ContentOperationNotPermittedError, msg);
@@ -106,14 +110,15 @@
         return;
     }
 
-    bool opened = d->realFile.open(QIODevice::ReadOnly | QIODevice::Unbuffered);
+    d->fileEngine = QAbstractFileEngine::create(fileName);
+    bool opened = d->fileEngine->open(QIODevice::ReadOnly | QIODevice::Unbuffered);
 
     // could we open the file?
     if (!opened) {
         QString msg = QCoreApplication::translate("QNetworkAccessFileBackend", "Error opening %1: %2")
-                      .arg(d->realFile.fileName(), d->realFile.errorString());
+                      .arg(fileName, d->fileEngine->errorString());
 
-        if (d->realFile.exists()) {
+        if (fi.exists()) {
             setError(QNetworkReply::ContentAccessDenied, msg);
             QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
                 Q_ARG(QNetworkReply::NetworkError, QNetworkReply::ContentAccessDenied));
@@ -126,13 +131,13 @@
         return;
     }
 
-    d->realFileSize = fi.size();
+    d->fileSize = fi.size();
     setHeader(QNetworkRequest::LastModifiedHeader, fi.lastModified());
-    setHeader(QNetworkRequest::ContentLengthHeader, d->realFileSize);
+    setHeader(QNetworkRequest::ContentLengthHeader, d->fileSize);
 
     QMetaObject::invokeMethod(this, "metaDataChanged", Qt::QueuedConnection);
     QMetaObject::invokeMethod(this, "downloadProgress", Qt::QueuedConnection,
-        Q_ARG(qint64, d->realFileSize), Q_ARG(qint64, d->realFileSize));
+        Q_ARG(qint64, d->fileSize), Q_ARG(qint64, d->fileSize));
     QMetaObject::invokeMethod(this, "readyRead", Qt::QueuedConnection);
     QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
 }
@@ -146,20 +151,25 @@
 {
     Q_D(QFileNetworkReply);
     QNetworkReply::close();
-    d->realFile.close();
+    if (d->fileEngine)
+        d->fileEngine->close();
 }
 
 void QFileNetworkReply::abort()
 {
     Q_D(QFileNetworkReply);
     QNetworkReply::close();
-    d->realFile.close();
+    if (d->fileEngine)
+        d->fileEngine->close();
 }
 
 qint64 QFileNetworkReply::bytesAvailable() const
 {
     Q_D(const QFileNetworkReply);
-    return QNetworkReply::bytesAvailable() + d->realFile.bytesAvailable();
+    if (!d->fileEngine)
+        return 0;
+
+    return QNetworkReply::bytesAvailable() + d->fileSize - d->filePos;
 }
 
 bool QFileNetworkReply::isSequential () const
@@ -170,7 +180,7 @@
 qint64 QFileNetworkReply::size() const
 {
     Q_D(const QFileNetworkReply);
-    return d->realFileSize;
+    return d->fileSize;
 }
 
 /*!
@@ -179,11 +189,17 @@
 qint64 QFileNetworkReply::readData(char *data, qint64 maxlen)
 {
     Q_D(QFileNetworkReply);
-    qint64 ret = d->realFile.read(data, maxlen);
-    if (ret == 0 && bytesAvailable() == 0)
+    if (!d->fileEngine)
+        return -1;
+
+    qint64 ret = d->fileEngine->read(data, maxlen);
+    if (ret == 0 && bytesAvailable() == 0) {
         return -1; // everything had been read
-    else
-        return ret;
+    } else if (ret > 0) {
+        d->filePos += ret;
+    }
+
+    return ret;
 }
 
 
--- a/src/network/access/qfilenetworkreply_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qfilenetworkreply_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -57,6 +57,7 @@
 #include "qnetworkreply_p.h"
 #include "qnetworkaccessmanager.h"
 #include <QFile>
+#include <QAbstractFileEngine>
 
 QT_BEGIN_NAMESPACE
 
@@ -85,9 +86,11 @@
 {
 public:
     QFileNetworkReplyPrivate();
+    ~QFileNetworkReplyPrivate();
 
-    QFile realFile;
-    qint64 realFileSize;
+    QAbstractFileEngine *fileEngine;
+    qint64 fileSize;
+    qint64 filePos;
 
     virtual bool isFinished() const;
 
--- a/src/network/access/qhttpnetworkconnection.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qhttpnetworkconnection.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -564,7 +564,8 @@
 }
 
 
-QString QHttpNetworkConnectionPrivate::errorDetail(QNetworkReply::NetworkError errorCode, QAbstractSocket* socket)
+QString QHttpNetworkConnectionPrivate::errorDetail(QNetworkReply::NetworkError errorCode, QAbstractSocket* socket,
+                                                   const QString &extraDetail)
 {
     Q_ASSERT(socket);
 
@@ -581,7 +582,7 @@
         errorString = QLatin1String(QT_TRANSLATE_NOOP("QHttp", "Connection closed"));
         break;
     case QNetworkReply::TimeoutError:
-        errorString = QLatin1String(QT_TRANSLATE_NOOP("QHttp", "HTTP request failed"));
+        errorString = QLatin1String(QT_TRANSLATE_NOOP("QAbstractSocket", "Socket operation timed out"));
         break;
     case QNetworkReply::ProxyAuthenticationRequiredError:
         errorString = QLatin1String(QT_TRANSLATE_NOOP("QHttp", "Proxy requires authentication"));
@@ -600,7 +601,7 @@
         break;
     default:
         // all other errors are treated as QNetworkReply::UnknownNetworkError
-        errorString = QLatin1String(QT_TRANSLATE_NOOP("QHttp", "HTTP request failed"));
+        errorString = extraDetail;
         break;
     }
     return errorString;
@@ -687,8 +688,14 @@
         if (channels[i].resendCurrent) {
             channels[i].resendCurrent = false;
             channels[i].state = QHttpNetworkConnectionChannel::IdleState;
-            if (channels[i].reply)
+            if (channels[i].reply) {
+
+                // if this is not possible, error will be emitted and connection terminated
+                if (!channels[i].resetUploadData())
+                    continue;
+
                 channels[i].sendRequest();
+            }
         }
     }
 
--- a/src/network/access/qhttpnetworkconnection_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qhttpnetworkconnection_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -185,7 +185,8 @@
 
     void createAuthorization(QAbstractSocket *socket, QHttpNetworkRequest &request);
 
-    QString errorDetail(QNetworkReply::NetworkError errorCode, QAbstractSocket *socket);
+    QString errorDetail(QNetworkReply::NetworkError errorCode, QAbstractSocket *socket,
+                        const QString &extraDetail = QString());
 
 #ifndef QT_NO_COMPRESS
     bool expand(QAbstractSocket *socket, QHttpNetworkReply *reply, bool dataComplete);
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -674,15 +674,8 @@
     case 407: // proxy auth required
         if (connection->d_func()->handleAuthenticateChallenge(socket, reply, (statusCode == 407), resend)) {
             if (resend) {
-                QNonContiguousByteDevice* uploadByteDevice = request.uploadByteDevice();
-                if (uploadByteDevice) {
-                    if (uploadByteDevice->reset()) {
-                        written = 0;
-                    } else {
-                        connection->d_func()->emitReplyError(socket, reply, QNetworkReply::ContentReSendError);
-                        break;
-                    }
-                }
+                if (!resetUploadData())
+                    break;
 
                 reply->d_func()->eraseData();
 
@@ -712,6 +705,22 @@
     }
 }
 
+bool QHttpNetworkConnectionChannel::resetUploadData()
+{
+    QNonContiguousByteDevice* uploadByteDevice = request.uploadByteDevice();
+    if (!uploadByteDevice)
+        return true;
+
+    if (uploadByteDevice->reset()) {
+        written = 0;
+        return true;
+    } else {
+        connection->d_func()->emitReplyError(socket, reply, QNetworkReply::ContentReSendError);
+        return false;
+    }
+}
+
+
 void  QHttpNetworkConnectionChannel::pipelineInto(HttpMessagePair &pair)
 {
     // this is only called for simple GET
@@ -872,7 +881,7 @@
         break;
     }
     QPointer<QObject> that = connection;
-    QString errorString = connection->d_func()->errorDetail(errorCode, socket);
+    QString errorString = connection->d_func()->errorDetail(errorCode, socket, socket->errorString());
     if (send2Reply) {
         if (reply) {
             reply->d_func()->errorString = errorString;
--- a/src/network/access/qhttpnetworkconnectionchannel_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qhttpnetworkconnectionchannel_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -151,6 +151,8 @@
     void allDone(); // reply header + body have been read
     void handleStatus(); // called from allDone()
 
+    bool resetUploadData(); // return true if resetting worked or there is no upload data
+
     void pipelineInto(HttpMessagePair &pair);
     void requeueCurrentlyPipelinedRequests();
     void detectPipeliningSupport();
--- a/src/network/access/qhttpnetworkheader.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qhttpnetworkheader.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -80,7 +80,7 @@
 
     QByteArray result;
     bool first = true;
-    foreach (QByteArray value, allValues) {
+    foreach (const QByteArray &value, allValues) {
         if (!first)
             result += ", ";
         first = false;
--- a/src/network/access/qnetworkaccesshttpbackend.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qnetworkaccesshttpbackend.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -753,7 +753,7 @@
         QByteArray value = rawHeader(it->first);
         if (!value.isEmpty()) {
             if (qstricmp(it->first.constData(), "set-cookie") == 0)
-                value += "\n";
+                value += '\n';
             else
                 value += ", ";
         }
--- a/src/network/access/qnetworkrequest.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/access/qnetworkrequest.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -649,7 +649,7 @@
 {
     QList<QNetworkCookie> result;
     QList<QByteArray> cookieList = raw.split(';');
-    foreach (QByteArray cookie, cookieList) {
+    foreach (const QByteArray &cookie, cookieList) {
         QList<QNetworkCookie> parsed = QNetworkCookie::parseCookies(cookie.trimmed());
         if (parsed.count() != 1)
             return QVariant();  // invalid Cookie: header
--- a/src/network/kernel/qauthenticator.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/kernel/qauthenticator.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -270,7 +270,7 @@
         break;
     case Ntlm:
         // #### extract from header
-        realm = QString();
+        realm.clear();
         break;
     case DigestMd5: {
         realm = QString::fromLatin1(options.value("realm"));
@@ -281,7 +281,7 @@
         break;
     }
     default:
-        realm = QString();
+        realm.clear();
         challenge = QByteArray();
         phase = Invalid;
     }
--- a/src/network/kernel/qnetworkinterface.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/kernel/qnetworkinterface.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -541,7 +541,7 @@
 {
     QList<QSharedDataPointer<QNetworkInterfacePrivate> > privs = manager()->allInterfaces();
     QList<QNetworkInterface> result;
-    foreach (QSharedDataPointer<QNetworkInterfacePrivate> p, privs) {
+    foreach (const QSharedDataPointer<QNetworkInterfacePrivate> &p, privs) {
         QNetworkInterface item;
         item.d = p;
         result << item;
@@ -560,7 +560,7 @@
 {
     QList<QSharedDataPointer<QNetworkInterfacePrivate> > privs = manager()->allInterfaces();
     QList<QHostAddress> result;
-    foreach (const QSharedDataPointer<QNetworkInterfacePrivate> p, privs) {
+    foreach (const QSharedDataPointer<QNetworkInterfacePrivate> &p, privs) {
         foreach (const QNetworkAddressEntry &entry, p->addressEntries)
             result += entry.ip();
     }
--- a/src/network/socket/qlocalserver.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/socket/qlocalserver.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -122,9 +122,9 @@
     qDeleteAll(d->pendingConnections);
     d->pendingConnections.clear();
     d->closeServer();
-    d->serverName = QString();
-    d->fullServerName = QString();
-    d->errorString = QString();
+    d->serverName.clear();
+    d->fullServerName.clear();
+    d->errorString.clear();
     d->error = QAbstractSocket::UnknownSocketError;
 }
 
@@ -226,8 +226,8 @@
     }
 
     if (!d->listen(name)) {
-        d->serverName = QString();
-        d->fullServerName = QString();
+        d->serverName.clear();
+        d->fullServerName.clear();
         return false;
     }
 
--- a/src/network/socket/qlocalsocket_tcp.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/socket/qlocalsocket_tcp.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -102,8 +102,8 @@
     switch(newState) {
     case QAbstractSocket::UnconnectedState:
         state = QLocalSocket::UnconnectedState;
-        serverName = QString();
-        fullServerName = QString();
+        serverName.clear();
+        fullServerName.clear();
         break;
     case QAbstractSocket::ConnectingState:
         state = QLocalSocket::ConnectingState;
@@ -218,7 +218,7 @@
         || state() == ConnectingState)
         return;
 
-    d->errorString = QString();
+    d->errorString.clear();
     d->state = ConnectingState;
     emit stateChanged(d->state);
 
@@ -333,8 +333,8 @@
 {
     Q_D(QLocalSocket);
     d->tcpSocket->close();
-    d->serverName = QString();
-    d->fullServerName = QString();
+    d->serverName.clear();
+    d->fullServerName.clear();
     QIODevice::close();
 }
 
--- a/src/network/socket/qlocalsocket_unix.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/socket/qlocalsocket_unix.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -109,8 +109,8 @@
     switch(newState) {
     case QAbstractSocket::UnconnectedState:
         state = QLocalSocket::UnconnectedState;
-        serverName = QString();
-        fullServerName = QString();
+        serverName.clear();
+        fullServerName.clear();
         break;
     case QAbstractSocket::ConnectingState:
         state = QLocalSocket::ConnectingState;
@@ -225,7 +225,7 @@
         || state() == ConnectingState)
         return;
 
-    d->errorString = QString();
+    d->errorString.clear();
     d->unixSocket.setSocketState(QAbstractSocket::ConnectingState);
     d->state = ConnectingState;
     emit stateChanged(d->state);
@@ -341,7 +341,7 @@
         errorOccurred(QLocalSocket::UnknownSocketError, function);
     }
     connectingSocket = -1;
-    connectingName = QString();
+    connectingName.clear();
     connectingOpenMode = 0;
 }
 
@@ -438,10 +438,10 @@
     if (d->connectingSocket != -1)
         ::close(d->connectingSocket);
     d->connectingSocket = -1;
-    d->connectingName = QString();
+    d->connectingName.clear();
     d->connectingOpenMode = 0;
-    d->serverName = QString();
-    d->fullServerName = QString();
+    d->serverName.clear();
+    d->fullServerName.clear();
     QIODevice::close();
 }
 
--- a/src/network/socket/qnativesocketengine.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/socket/qnativesocketengine.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -778,6 +778,14 @@
                     QNativeSocketEnginePrivate::RemoteHostClosedErrorString);
         close();
         return -1;
+    } else if (readBytes == -1) {
+        if (!d->hasSetSocketError) {
+            d->hasSetSocketError = true;
+            d->socketError = QAbstractSocket::NetworkError;
+            d->socketErrorString = qt_error_string();
+        }
+        close();
+        return -1;
     }
     return readBytes;
 }
--- a/src/network/socket/qnativesocketengine_unix.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/socket/qnativesocketengine_unix.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -903,7 +903,7 @@
         case EBADF:
         case EINVAL:
         case EIO:
-            setError(QAbstractSocket::NetworkError, ReadErrorString);
+            //error string is now set in read(), not here in nativeRead()
             break;
 #ifdef Q_OS_SYMBIAN
         case EPIPE:
--- a/src/network/socket/qnativesocketengine_win.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/socket/qnativesocketengine_win.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1068,7 +1068,7 @@
             break;
         case WSAEBADF:
         case WSAEINVAL:
-            setError(QAbstractSocket::NetworkError, ReadErrorString);
+            //error string is now set in read(), not here in nativeRead()
             break;
         case WSAECONNRESET:
         case WSAECONNABORTED:
@@ -1199,8 +1199,10 @@
 #if defined (QTCPSOCKETENGINE_DEBUG)
     qDebug("QNativeSocketEnginePrivate::nativeClose()");
 #endif
-    linger l = {1, 0};
-    ::setsockopt(socketDescriptor, SOL_SOCKET, SO_DONTLINGER, (char*)&l, sizeof(l));
+    // We were doing a setsockopt here before with SO_DONTLINGER. (However with kind of wrong
+    // usage of parameters, it wants a BOOL but we used a struct and pretended it to be bool).
+    // We don't think setting this option should be done here, if a user wants it she/he can
+     // do it manually with socketDescriptor()/setSocketDescriptor();
     ::closesocket(socketDescriptor);
 }
 
--- a/src/network/socket/qtcpserver.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/socket/qtcpserver.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -513,6 +513,10 @@
     0 is returned if this function is called when there are no pending
     connections.
 
+    \note The returned QTcpSocket object cannot be used from another
+    thread. If you want to use an incoming connection from another thread,
+    you need to override incomingConnection().
+
     \sa hasPendingConnections()
 */
 QTcpSocket *QTcpServer::nextPendingConnection()
@@ -543,6 +547,11 @@
     may not be usable with native socket functions, and should only be
     used with QTcpSocket::setSocketDescriptor().
 
+    \note If you want to handle an incoming connection as a new QTcpSocket
+    object in another thread you have to pass the socketDescriptor
+    to the other thread and create the QTcpSocket object there and
+    use its setSocketDescriptor() method.
+
     \sa newConnection(), nextPendingConnection()
 */
 void QTcpServer::incomingConnection(int socketDescriptor)
--- a/src/network/ssl/qsslcertificate.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/ssl/qsslcertificate.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -634,11 +634,11 @@
     QByteArray tmp;
     for (int i = 0; i <= array.size() - 64; i += 64) {
         tmp += QByteArray::fromRawData(array.data() + i, 64);
-        tmp += "\n";
+        tmp += '\n';
     }
     if (int remainder = array.size() % 64) {
         tmp += QByteArray::fromRawData(array.data() + array.size() - remainder, remainder);
-        tmp += "\n";
+        tmp += '\n';
     }
 
     return BEGINCERTSTRING "\n" + tmp + ENDCERTSTRING "\n";
@@ -696,11 +696,11 @@
 
 static bool matchLineFeed(const QByteArray &pem, int *offset)
 {
-    char ch = pem.at(*offset);
+    char ch;
 
     // ignore extra whitespace at the end of the line
-    while (ch == ' ' && *offset < pem.size())
-        ch = pem.at(++*offset);
+    while (*offset < pem.size() && (ch = pem.at(*offset)) == ' ')
+        ++*offset;
 
     if (ch == '\n') {
         *offset += 1;
@@ -732,7 +732,7 @@
             break;
 
         offset = endPos + sizeof(ENDCERTSTRING) - 1;
-        if (!matchLineFeed(pem, &offset))
+        if (offset < pem.size() && !matchLineFeed(pem, &offset))
             break;
 
         QByteArray decoded = QByteArray::fromBase64(
--- a/src/network/ssl/qsslsocket.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/ssl/qsslsocket.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1109,7 +1109,7 @@
 {
     Q_D(QSslSocket);
     d->configuration.ciphers.clear();
-    foreach (QString cipherName, ciphers.split(QLatin1String(":"),QString::SkipEmptyParts)) {
+    foreach (const QString &cipherName, ciphers.split(QLatin1String(":"),QString::SkipEmptyParts)) {
         for (int i = 0; i < 3; ++i) {
             // ### Crude
             QSslCipher cipher(cipherName, QSsl::SslProtocol(i));
--- a/src/network/ssl/qsslsocket_openssl.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/network/ssl/qsslsocket_openssl.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -553,6 +553,12 @@
 #endif
                 writeBuffer.free(writtenBytes);
                 totalBytesWritten += writtenBytes;
+
+                if (writtenBytes < nextDataBlockSize) {
+                    // break out of the writing loop and try again after we had read
+                    transmitting = true;
+                    break;
+                }
             }
 
             if (totalBytesWritten > 0) {
@@ -586,12 +592,26 @@
             while ((pendingBytes = plainSocket->bytesAvailable()) > 0) {
                 // Read encrypted data from the socket into a buffer.
                 data.resize(pendingBytes);
-                int decryptedBytesRead = plainSocket->read(data.data(), pendingBytes);
+                // just peek() here because q_BIO_write could write less data than expected
+                int encryptedBytesRead = plainSocket->peek(data.data(), pendingBytes);
 #ifdef QSSLSOCKET_DEBUG
-                qDebug() << "QSslSocketBackendPrivate::transmit: read" << decryptedBytesRead << "encrypted bytes from the socket";
+                qDebug() << "QSslSocketBackendPrivate::transmit: read" << encryptedBytesRead << "encrypted bytes from the socket";
 #endif
                 // Write encrypted data from the buffer into the read BIO.
-                q_BIO_write(readBio, data.constData(), decryptedBytesRead);
+                int writtenToBio = q_BIO_write(readBio, data.constData(), encryptedBytesRead);
+
+                // do the actual read() here and throw away the results.
+                if (writtenToBio > 0) {
+                    // ### TODO: make this cheaper by not making it memcpy. E.g. make it work with data=0x0 or make it work with seek
+                    plainSocket->read(data.data(), writtenToBio);
+                } else {
+                    // ### Better error handling.
+                    q->setErrorString(QSslSocket::tr("Unable to decrypt data: %1").arg(SSL_ERRORSTR()));
+                    q->setSocketError(QAbstractSocket::UnknownSocketError);
+                    emit q->error(QAbstractSocket::UnknownSocketError);
+                    return;
+                }
+
                 transmitting = true;
             }
 
@@ -798,7 +818,7 @@
             QRegExp regexp(commonName, Qt::CaseInsensitive, QRegExp::Wildcard);
             if (!regexp.exactMatch(peerName)) {
                 bool matched = false;
-                foreach (QString altName, configuration.peerCertificate
+                foreach (const QString &altName, configuration.peerCertificate
                          .alternateSubjectNames().values(QSsl::DnsEntry)) {
                     regexp.setPattern(altName);
                     if (regexp.exactMatch(peerName)) {
--- a/src/opengl/gl2paintengineex/qglengineshadermanager.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/gl2paintengineex/qglengineshadermanager.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -184,6 +184,9 @@
     simpleShaderProg->addShader(vertexShader);
     simpleShaderProg->addShader(fragShader);
     simpleShaderProg->bindAttributeLocation("vertexCoordsArray", QT_VERTEX_COORDS_ATTR);
+    simpleShaderProg->bindAttributeLocation("pmvMatrix1", QT_PMV_MATRIX_1_ATTR);
+    simpleShaderProg->bindAttributeLocation("pmvMatrix2", QT_PMV_MATRIX_2_ATTR);
+    simpleShaderProg->bindAttributeLocation("pmvMatrix3", QT_PMV_MATRIX_3_ATTR);
     simpleShaderProg->link();
     if (!simpleShaderProg->isLinked()) {
         qCritical() << "Errors linking simple shader:"
@@ -324,6 +327,11 @@
             newProg->program->bindAttributeLocation("textureCoordArray", QT_TEXTURE_COORDS_ATTR);
         if (newProg->useOpacityAttribute)
             newProg->program->bindAttributeLocation("opacityArray", QT_OPACITY_ATTR);
+        if (newProg->usePmvMatrix) {
+            newProg->program->bindAttributeLocation("pmvMatrix1", QT_PMV_MATRIX_1_ATTR);
+            newProg->program->bindAttributeLocation("pmvMatrix2", QT_PMV_MATRIX_2_ATTR);
+            newProg->program->bindAttributeLocation("pmvMatrix3", QT_PMV_MATRIX_3_ATTR);
+        }
 
         newProg->program->link();
         if (!newProg->program->isLinked()) {
@@ -424,7 +432,6 @@
         "patternColor",
         "globalOpacity",
         "depth",
-        "pmvMatrix",
         "maskTexture",
         "fragmentColor",
         "linearData",
@@ -743,6 +750,7 @@
     }
     requiredProgram.useTextureCoords = texCoords;
     requiredProgram.useOpacityAttribute = (opacityMode == AttributeOpacity);
+    requiredProgram.usePmvMatrix = true;
 
     // At this point, requiredProgram is fully populated so try to find the program in the cache
     currentShaderProg = sharedShaders->findProgramInCache(requiredProgram);
--- a/src/opengl/gl2paintengineex/qglengineshadermanager_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/gl2paintengineex/qglengineshadermanager_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -253,6 +253,9 @@
 static const GLuint QT_VERTEX_COORDS_ATTR  = 0;
 static const GLuint QT_TEXTURE_COORDS_ATTR = 1;
 static const GLuint QT_OPACITY_ATTR = 2;
+static const GLuint QT_PMV_MATRIX_1_ATTR = 3;
+static const GLuint QT_PMV_MATRIX_2_ATTR = 4;
+static const GLuint QT_PMV_MATRIX_3_ATTR = 5;
 
 class QGLEngineShaderProg;
 
@@ -397,6 +400,7 @@
 
     bool                useTextureCoords;
     bool                useOpacityAttribute;
+    bool                usePmvMatrix;
 
     bool operator==(const QGLEngineShaderProg& other) {
         // We don't care about the program
@@ -431,7 +435,6 @@
         PatternColor,
         GlobalOpacity,
         Depth,
-        PmvMatrix,
         MaskTexture,
         FragmentColor,
         LinearData,
--- a/src/opengl/gl2paintengineex/qglengineshadersource_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/gl2paintengineex/qglengineshadersource_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -63,210 +63,229 @@
 QT_MODULE(OpenGL)
 
 
-static const char* const qglslMainVertexShader = "\
-    uniform   highp float   depth;\
-    void setPosition();\
-    void main(void)\
-    {\
-            setPosition();\
-            gl_Position.z = depth * gl_Position.w;\
-    }";
+static const char* const qglslMainVertexShader = "\n\
+    void setPosition(); \n\
+    void main(void) \n\
+    { \n\
+        setPosition(); \n\
+    }\n";
 
-static const char* const qglslMainWithTexCoordsVertexShader = "\
-    attribute highp  vec2 textureCoordArray; \
-    varying   highp  vec2 textureCoords; \
-    uniform   highp float   depth;\
-    void setPosition();\
-    void main(void) \
-    {\
-            setPosition();\
-            gl_Position.z = depth * gl_Position.w;\
-            textureCoords = textureCoordArray; \
-    }";
+static const char* const qglslMainWithTexCoordsVertexShader = "\n\
+    attribute highp   vec2      textureCoordArray; \n\
+    varying   highp   vec2      textureCoords; \n\
+    void setPosition(); \n\
+    void main(void) \n\
+    { \n\
+        setPosition(); \n\
+        textureCoords = textureCoordArray; \n\
+    }\n";
 
-static const char* const qglslMainWithTexCoordsAndOpacityVertexShader = "\
-    attribute highp vec2  textureCoordArray; \
-    attribute lowp  float opacityArray; \
-    varying   highp vec2  textureCoords; \
-    varying   lowp  float opacity; \
-    uniform   highp float depth; \
-    void setPosition(); \
-    void main(void) \
-    { \
-            setPosition(); \
-            gl_Position.z = depth * gl_Position.w; \
-            textureCoords = textureCoordArray; \
-            opacity = opacityArray; \
-    }";
+static const char* const qglslMainWithTexCoordsAndOpacityVertexShader = "\n\
+    attribute highp   vec2      textureCoordArray; \n\
+    attribute lowp    float     opacityArray; \n\
+    varying   highp   vec2      textureCoords; \n\
+    varying   lowp    float     opacity; \n\
+    void setPosition(); \n\
+    void main(void) \n\
+    { \n\
+        setPosition(); \n\
+        textureCoords = textureCoordArray; \n\
+        opacity = opacityArray; \n\
+    }\n";
 
 // NOTE: We let GL do the perspective correction so texture lookups in the fragment
 //       shader are also perspective corrected.
-static const char* const qglslPositionOnlyVertexShader = "\
-    attribute highp vec2    vertexCoordsArray;\
-    uniform   highp mat3    pmvMatrix;\
-    void setPosition(void)\
-    {\
-        vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \
-        gl_Position = vec4(transformedPos.xy, 0.0, transformedPos.z); \
-    }";
+static const char* const qglslPositionOnlyVertexShader = "\n\
+    attribute highp   vec2      vertexCoordsArray; \n\
+    attribute highp   vec3      pmvMatrix1; \n\
+    attribute highp   vec3      pmvMatrix2; \n\
+    attribute highp   vec3      pmvMatrix3; \n\
+    void setPosition(void) \n\
+    { \n\
+        highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
+        vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
+        gl_Position = vec4(transformedPos.xy, 0.0, transformedPos.z); \n\
+    }\n";
 
-static const char* const qglslUntransformedPositionVertexShader = "\
-    attribute highp vec4    vertexCoordsArray;\
-    void setPosition(void)\
-    {\
-            gl_Position = vertexCoordsArray;\
-    }";
+static const char* const qglslUntransformedPositionVertexShader = "\n\
+    attribute highp   vec4      vertexCoordsArray; \n\
+    void setPosition(void) \n\
+    { \n\
+        gl_Position = vertexCoordsArray; \n\
+    }\n";
 
 // Pattern Brush - This assumes the texture size is 8x8 and thus, the inverted size is 0.125
-static const char* const qglslPositionWithPatternBrushVertexShader = "\
-    attribute highp   vec2  vertexCoordsArray; \
-    uniform   highp   mat3  pmvMatrix; \
-    uniform   mediump vec2  halfViewportSize; \
-    uniform   highp   vec2  invertedTextureSize; \
-    uniform   highp   mat3  brushTransform; \
-    varying   highp   vec2  patternTexCoords; \
-    void setPosition(void) { \
-            vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \
-            gl_Position.xy = transformedPos.xy / transformedPos.z; \
-            mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \
-            mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1.0); \
-            mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \
-            gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \
-            patternTexCoords.xy = (hTexCoords.xy * 0.125) * invertedHTexCoordsZ; \
-    }";
+static const char* const qglslPositionWithPatternBrushVertexShader = "\n\
+    attribute highp   vec2      vertexCoordsArray; \n\
+    attribute highp   vec3      pmvMatrix1; \n\
+    attribute highp   vec3      pmvMatrix2; \n\
+    attribute highp   vec3      pmvMatrix3; \n\
+    uniform   mediump vec2      halfViewportSize; \n\
+    uniform   highp   vec2      invertedTextureSize; \n\
+    uniform   highp   mat3      brushTransform; \n\
+    varying   highp   vec2      patternTexCoords; \n\
+    void setPosition(void) \n\
+    { \n\
+        highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
+        vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
+        gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
+        mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
+        mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1.0); \n\
+        mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
+        gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
+        patternTexCoords.xy = (hTexCoords.xy * 0.125) * invertedHTexCoordsZ; \n\
+    }\n";
 
 static const char* const qglslAffinePositionWithPatternBrushVertexShader
                  = qglslPositionWithPatternBrushVertexShader;
 
-static const char* const qglslPatternBrushSrcFragmentShader = "\
-    uniform lowp    sampler2D brushTexture;\
-    uniform lowp    vec4      patternColor; \
-    varying highp   vec2      patternTexCoords;\
-    lowp vec4 srcPixel() { \
-        return patternColor * (1.0 - texture2D(brushTexture, patternTexCoords).r); \
+static const char* const qglslPatternBrushSrcFragmentShader = "\n\
+    uniform   lowp    sampler2D brushTexture; \n\
+    uniform   lowp    vec4      patternColor; \n\
+    varying   highp   vec2      patternTexCoords;\n\
+    lowp vec4 srcPixel() \n\
+    { \n\
+        return patternColor * (1.0 - texture2D(brushTexture, patternTexCoords).r); \n\
     }\n";
 
 
 // Linear Gradient Brush
-static const char* const qglslPositionWithLinearGradientBrushVertexShader = "\
-    attribute highp   vec2  vertexCoordsArray; \
-    uniform   highp   mat3  pmvMatrix; \
-    uniform   mediump vec2  halfViewportSize; \
-    uniform   highp   vec3  linearData; \
-    uniform   highp   mat3  brushTransform; \
-    varying   mediump float index; \
-    void setPosition() { \
-        vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \
-        gl_Position.xy = transformedPos.xy / transformedPos.z; \
-        mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \
-        mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \
-        mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \
-        gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \
-        index = (dot(linearData.xy, hTexCoords.xy) * linearData.z) * invertedHTexCoordsZ; \
-    }";
+static const char* const qglslPositionWithLinearGradientBrushVertexShader = "\n\
+    attribute highp   vec2      vertexCoordsArray; \n\
+    attribute highp   vec3      pmvMatrix1; \n\
+    attribute highp   vec3      pmvMatrix2; \n\
+    attribute highp   vec3      pmvMatrix3; \n\
+    uniform   mediump vec2      halfViewportSize; \n\
+    uniform   highp   vec3      linearData; \n\
+    uniform   highp   mat3      brushTransform; \n\
+    varying   mediump float     index; \n\
+    void setPosition() \n\
+    { \n\
+        highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
+        vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
+        gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
+        mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
+        mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\
+        mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
+        gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
+        index = (dot(linearData.xy, hTexCoords.xy) * linearData.z) * invertedHTexCoordsZ; \n\
+    }\n";
 
 static const char* const qglslAffinePositionWithLinearGradientBrushVertexShader
                  = qglslPositionWithLinearGradientBrushVertexShader;
 
-static const char* const qglslLinearGradientBrushSrcFragmentShader = "\
-    uniform lowp    sampler2D   brushTexture; \
-    varying mediump float       index; \
-    lowp vec4 srcPixel() { \
-        mediump vec2 val = vec2(index, 0.5); \
-        return texture2D(brushTexture, val); \
+static const char* const qglslLinearGradientBrushSrcFragmentShader = "\n\
+    uniform   lowp    sampler2D brushTexture; \n\
+    varying   mediump float     index; \n\
+    lowp vec4 srcPixel() \n\
+    { \n\
+        mediump vec2 val = vec2(index, 0.5); \n\
+        return texture2D(brushTexture, val); \n\
     }\n";
 
 
 // Conical Gradient Brush
-static const char* const qglslPositionWithConicalGradientBrushVertexShader = "\
-    attribute highp   vec2  vertexCoordsArray;\
-    uniform   highp   mat3  pmvMatrix;\
-    uniform   mediump vec2  halfViewportSize; \
-    uniform   highp   mat3  brushTransform; \
-    varying   highp   vec2  A; \
-    void setPosition(void)\
-    {\
-        vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \
-        gl_Position.xy = transformedPos.xy / transformedPos.z; \
-        mediump vec2  viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \
-        mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \
-        mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \
-        gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \
-        A = hTexCoords.xy * invertedHTexCoordsZ; \
-    }";
+static const char* const qglslPositionWithConicalGradientBrushVertexShader = "\n\
+    attribute highp   vec2      vertexCoordsArray; \n\
+    attribute highp   vec3      pmvMatrix1; \n\
+    attribute highp   vec3      pmvMatrix2; \n\
+    attribute highp   vec3      pmvMatrix3; \n\
+    uniform   mediump vec2      halfViewportSize; \n\
+    uniform   highp   mat3      brushTransform; \n\
+    varying   highp   vec2      A; \n\
+    void setPosition(void) \n\
+    { \n\
+        highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
+        vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
+        gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
+        mediump vec2  viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
+        mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\
+        mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
+        gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
+        A = hTexCoords.xy * invertedHTexCoordsZ; \n\
+    }\n";
 
 static const char* const qglslAffinePositionWithConicalGradientBrushVertexShader
                  = qglslPositionWithConicalGradientBrushVertexShader;
 
 static const char* const qglslConicalGradientBrushSrcFragmentShader = "\n\
     #define INVERSE_2PI 0.1591549430918953358 \n\
-    uniform lowp    sampler2D   brushTexture; \n\
-    uniform mediump float       angle; \
-    varying highp   vec2        A; \
-    lowp vec4 srcPixel() { \
-        highp float t; \
-        if (abs(A.y) == abs(A.x)) \
-            t = (atan(-A.y + 0.002, A.x) + angle) * INVERSE_2PI; \
-        else \
-            t = (atan(-A.y, A.x) + angle) * INVERSE_2PI; \
-        return texture2D(brushTexture, vec2(t - floor(t), 0.5)); \
-    }";
+    uniform   lowp    sampler2D brushTexture; \n\
+    uniform   mediump float     angle; \n\
+    varying   highp   vec2      A; \n\
+    lowp vec4 srcPixel() \n\
+    { \n\
+        highp float t; \n\
+        if (abs(A.y) == abs(A.x)) \n\
+            t = (atan(-A.y + 0.002, A.x) + angle) * INVERSE_2PI; \n\
+        else \n\
+            t = (atan(-A.y, A.x) + angle) * INVERSE_2PI; \n\
+        return texture2D(brushTexture, vec2(t - floor(t), 0.5)); \n\
+    }\n";
 
 
 // Radial Gradient Brush
-static const char* const qglslPositionWithRadialGradientBrushVertexShader = "\
-    attribute highp   vec2 vertexCoordsArray;\
-    uniform   highp   mat3 pmvMatrix;\
-    uniform   mediump vec2 halfViewportSize; \
-    uniform   highp   mat3 brushTransform; \
-    uniform   highp   vec2 fmp; \
-    varying   highp   float b; \
-    varying   highp   vec2  A; \
-    void setPosition(void) \
-    {\
-        vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \
-        gl_Position.xy = transformedPos.xy / transformedPos.z; \
-        mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \
-        mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \
-        mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \
-        gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \
-        A = hTexCoords.xy * invertedHTexCoordsZ; \
-        b = 2.0 * dot(A, fmp); \
-    }";
+static const char* const qglslPositionWithRadialGradientBrushVertexShader = "\n\
+    attribute highp   vec2      vertexCoordsArray;\n\
+    attribute highp   vec3      pmvMatrix1; \n\
+    attribute highp   vec3      pmvMatrix2; \n\
+    attribute highp   vec3      pmvMatrix3; \n\
+    uniform   mediump vec2      halfViewportSize; \n\
+    uniform   highp   mat3      brushTransform; \n\
+    uniform   highp   vec2      fmp; \n\
+    varying   highp   float     b; \n\
+    varying   highp   vec2      A; \n\
+    void setPosition(void) \n\
+    {\n\
+        highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
+        vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
+        gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
+        mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
+        mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\
+        mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
+        gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
+        A = hTexCoords.xy * invertedHTexCoordsZ; \n\
+        b = 2.0 * dot(A, fmp); \n\
+    }\n";
 
 static const char* const qglslAffinePositionWithRadialGradientBrushVertexShader
                  = qglslPositionWithRadialGradientBrushVertexShader;
 
-static const char* const qglslRadialGradientBrushSrcFragmentShader = "\
-    uniform lowp    sampler2D   brushTexture; \
-    uniform highp   float       fmp2_m_radius2; \
-    uniform highp   float       inverse_2_fmp2_m_radius2; \
-    varying highp   float       b; \
-    varying highp   vec2        A; \
-    lowp vec4 srcPixel() { \
-        highp float c = -dot(A, A); \
-        highp vec2 val = vec2((-b + sqrt(b*b - 4.0*fmp2_m_radius2*c)) * inverse_2_fmp2_m_radius2, 0.5); \
-        return texture2D(brushTexture, val); \
-    }";
+static const char* const qglslRadialGradientBrushSrcFragmentShader = "\n\
+    uniform   lowp    sampler2D brushTexture; \n\
+    uniform   highp   float     fmp2_m_radius2; \n\
+    uniform   highp   float     inverse_2_fmp2_m_radius2; \n\
+    varying   highp   float     b; \n\
+    varying   highp   vec2      A; \n\
+    lowp vec4 srcPixel() \n\
+    { \n\
+        highp float c = -dot(A, A); \n\
+        highp vec2 val = vec2((-b + sqrt(b*b - 4.0*fmp2_m_radius2*c)) * inverse_2_fmp2_m_radius2, 0.5); \n\
+        return texture2D(brushTexture, val); \n\
+    }\n";
 
 
 // Texture Brush
-static const char* const qglslPositionWithTextureBrushVertexShader = "\
-    attribute highp   vec2 vertexCoordsArray; \
-    uniform   highp   mat3  pmvMatrix; \
-    uniform   mediump vec2  halfViewportSize; \
-    uniform   highp   vec2  invertedTextureSize; \
-    uniform   highp   mat3  brushTransform; \
-    varying   highp   vec2  textureCoords; \
-    void setPosition(void) { \
-            vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \
-            gl_Position.xy = transformedPos.xy / transformedPos.z; \
-            mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \
-            mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \
-            mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \
-            gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \
-            textureCoords.xy = (hTexCoords.xy * invertedTextureSize) * gl_Position.w; \
-    }";
+static const char* const qglslPositionWithTextureBrushVertexShader = "\n\
+    attribute highp   vec2      vertexCoordsArray; \n\
+    attribute highp   vec3      pmvMatrix1; \n\
+    attribute highp   vec3      pmvMatrix2; \n\
+    attribute highp   vec3      pmvMatrix3; \n\
+    uniform   mediump vec2      halfViewportSize; \n\
+    uniform   highp   vec2      invertedTextureSize; \n\
+    uniform   highp   mat3      brushTransform; \n\
+    varying   highp   vec2      textureCoords; \n\
+    void setPosition(void) \n\
+    { \n\
+        highp mat3 pmvMatrix = mat3(pmvMatrix1, pmvMatrix2, pmvMatrix3); \n\
+        vec3 transformedPos = pmvMatrix * vec3(vertexCoordsArray.xy, 1.0); \n\
+        gl_Position.xy = transformedPos.xy / transformedPos.z; \n\
+        mediump vec2 viewportCoords = (gl_Position.xy + 1.0) * halfViewportSize; \n\
+        mediump vec3 hTexCoords = brushTransform * vec3(viewportCoords, 1); \n\
+        mediump float invertedHTexCoordsZ = 1.0 / hTexCoords.z; \n\
+        gl_Position = vec4(gl_Position.xy * invertedHTexCoordsZ, 0.0, invertedHTexCoordsZ); \n\
+        textureCoords.xy = (hTexCoords.xy * invertedTextureSize) * gl_Position.w; \n\
+    }\n";
 
 static const char* const qglslAffinePositionWithTextureBrushVertexShader
                  = qglslPositionWithTextureBrushVertexShader;
@@ -275,148 +294,165 @@
 // OpenGL ES does not support GL_REPEAT wrap modes for NPOT textures. So instead,
 // we emulate GL_REPEAT by only taking the fractional part of the texture coords.
 // TODO: Special case POT textures which don't need this emulation
-static const char* const qglslTextureBrushSrcFragmentShader = "\
-    varying highp   vec2      textureCoords; \
-    uniform lowp    sampler2D brushTexture; \
-    lowp vec4 srcPixel() { \
-        return texture2D(brushTexture, fract(textureCoords)); \
-    }";
+static const char* const qglslTextureBrushSrcFragmentShader = "\n\
+    varying highp   vec2      textureCoords; \n\
+    uniform lowp    sampler2D brushTexture; \n\
+    lowp vec4 srcPixel() { \n\
+        return texture2D(brushTexture, fract(textureCoords)); \n\
+    }\n";
 #else
-static const char* const qglslTextureBrushSrcFragmentShader = "\
-    varying highp   vec2      textureCoords; \
-    uniform lowp    sampler2D brushTexture; \
-    lowp vec4 srcPixel() { \
-        return texture2D(brushTexture, textureCoords); \
-    }";
+static const char* const qglslTextureBrushSrcFragmentShader = "\n\
+    varying   highp   vec2      textureCoords; \n\
+    uniform   lowp    sampler2D brushTexture; \n\
+    lowp vec4 srcPixel() \n\
+    { \n\
+        return texture2D(brushTexture, textureCoords); \n\
+    }\n";
 #endif
 
-static const char* const qglslTextureBrushSrcWithPatternFragmentShader = "\
-    varying highp   vec2      textureCoords; \
-    uniform lowp    vec4      patternColor; \
-    uniform lowp    sampler2D brushTexture; \
-    lowp vec4 srcPixel() { \
-        return patternColor * (1.0 - texture2D(brushTexture, textureCoords).r); \
-    }";
+static const char* const qglslTextureBrushSrcWithPatternFragmentShader = "\n\
+    varying   highp   vec2      textureCoords; \n\
+    uniform   lowp    vec4      patternColor; \n\
+    uniform   lowp    sampler2D brushTexture; \n\
+    lowp vec4 srcPixel() \n\
+    { \n\
+        return patternColor * (1.0 - texture2D(brushTexture, textureCoords).r); \n\
+    }\n";
 
 // Solid Fill Brush
-static const char* const qglslSolidBrushSrcFragmentShader = "\
-    uniform lowp vec4 fragmentColor; \
-    lowp vec4 srcPixel() { \
-        return fragmentColor; \
-    }";
+static const char* const qglslSolidBrushSrcFragmentShader = "\n\
+    uniform   lowp    vec4      fragmentColor; \n\
+    lowp vec4 srcPixel() \n\
+    { \n\
+        return fragmentColor; \n\
+    }\n";
 
-static const char* const qglslImageSrcFragmentShader = "\
-    varying highp   vec2    textureCoords; \
-    uniform lowp  sampler2D imageTexture; \
-    lowp vec4 srcPixel() { \
-        return texture2D(imageTexture, textureCoords); \
-    }";
+static const char* const qglslImageSrcFragmentShader = "\n\
+    varying   highp   vec2      textureCoords; \n\
+    uniform   lowp    sampler2D imageTexture; \n\
+    lowp vec4 srcPixel() \n\
+    { \n\
+        return texture2D(imageTexture, textureCoords); \n\
+    }\n";
+
+static const char* const qglslCustomSrcFragmentShader = "\n\
+    varying   highp   vec2      textureCoords; \n\
+    uniform   lowp    sampler2D imageTexture; \n\
+    lowp vec4 customShader(lowp sampler2D texture, highp vec2 coords); \n\
+    lowp vec4 srcPixel() \n\
+    { \n\
+        return customShader(imageTexture, textureCoords); \n\
+    }\n";
 
-static const char* const qglslCustomSrcFragmentShader = "\
-    varying highp vec2      textureCoords; \
-    uniform lowp  sampler2D imageTexture; \
-    lowp vec4 customShader(lowp sampler2D texture, highp vec2 coords); \
-    lowp vec4 srcPixel() { \
-        return customShader(imageTexture, textureCoords); \
-    }";
+static const char* const qglslImageSrcWithPatternFragmentShader = "\n\
+    varying   highp   vec2      textureCoords; \n\
+    uniform   lowp    vec4      patternColor; \n\
+    uniform   lowp    sampler2D imageTexture; \n\
+    lowp vec4 srcPixel() \n\
+    { \n\
+        return patternColor * (1.0 - texture2D(imageTexture, textureCoords).r); \n\
+    }\n";
 
-static const char* const qglslImageSrcWithPatternFragmentShader = "\
-    varying highp vec2      textureCoords; \
-    uniform lowp  vec4      patternColor; \
-    uniform lowp  sampler2D imageTexture; \
-    lowp vec4 srcPixel() { \
-        return patternColor * (1.0 - texture2D(imageTexture, textureCoords).r); \
+static const char* const qglslNonPremultipliedImageSrcFragmentShader = "\n\
+    varying   highp   vec2      textureCoords; \n\
+    uniform   lowp    sampler2D imageTexture; \n\
+    lowp vec4 srcPixel() \n\
+    { \n\
+        lowp vec4 sample = texture2D(imageTexture, textureCoords); \n\
+        sample.rgb = sample.rgb * sample.a; \n\
+        return sample; \n\
+    }\n";
+
+static const char* const qglslShockingPinkSrcFragmentShader = "\n\
+    lowp vec4 srcPixel() \n\
+    { \n\
+        return vec4(0.98, 0.06, 0.75, 1.0); \n\
     }\n";
 
-static const char* const qglslNonPremultipliedImageSrcFragmentShader = "\
-    varying highp vec2      textureCoords; \
-    uniform lowp  sampler2D imageTexture; \
-    lowp vec4 srcPixel() { \
-        lowp vec4 sample = texture2D(imageTexture, textureCoords); \
-        sample.rgb = sample.rgb * sample.a; \
-        return sample; \
-    }";
+static const char* const qglslMainFragmentShader_ImageArrays = "\n\
+    varying   lowp    float     opacity; \n\
+    lowp vec4 srcPixel(); \n\
+    void main() \n\
+    { \n\
+        gl_FragColor = srcPixel() * opacity; \n\
+    }\n";
 
-static const char* const qglslShockingPinkSrcFragmentShader = "\
-    lowp vec4 srcPixel() { \
-        return vec4(0.98, 0.06, 0.75, 1.0); \
-    }";
+static const char* const qglslMainFragmentShader_CMO = "\n\
+    uniform   lowp    float     globalOpacity; \n\
+    lowp vec4 srcPixel(); \n\
+    lowp vec4 applyMask(lowp vec4); \n\
+    lowp vec4 compose(lowp vec4); \n\
+    void main() \n\
+    { \n\
+        gl_FragColor = applyMask(compose(srcPixel()*globalOpacity))); \n\
+    }\n";
 
-static const char* const qglslMainFragmentShader_ImageArrays = "\
-    varying lowp float opacity; \
-    lowp vec4 srcPixel(); \
-    void main() { \
-        gl_FragColor = srcPixel() * opacity; \
-    }";
+static const char* const qglslMainFragmentShader_CM = "\n\
+    lowp vec4 srcPixel(); \n\
+    lowp vec4 applyMask(lowp vec4); \n\
+    lowp vec4 compose(lowp vec4); \n\
+    void main() \n\
+    { \n\
+        gl_FragColor = applyMask(compose(srcPixel())); \n\
+    }\n";
 
-static const char* const qglslMainFragmentShader_CMO = "\
-    uniform lowp float globalOpacity; \
-    lowp vec4 srcPixel(); \
-    lowp vec4 applyMask(lowp vec4); \
-    lowp vec4 compose(lowp vec4); \
-    void main() { \
-        gl_FragColor = applyMask(compose(srcPixel()*globalOpacity))); \
-    }";
-
-static const char* const qglslMainFragmentShader_CM = "\
-    lowp vec4 srcPixel(); \
-    lowp vec4 applyMask(lowp vec4); \
-    lowp vec4 compose(lowp vec4); \
-    void main() { \
-        gl_FragColor = applyMask(compose(srcPixel())); \
-    }";
+static const char* const qglslMainFragmentShader_MO = "\n\
+    uniform   lowp    float     globalOpacity; \n\
+    lowp vec4 srcPixel(); \n\
+    lowp vec4 applyMask(lowp vec4); \n\
+    void main() \n\
+    { \n\
+        gl_FragColor = applyMask(srcPixel()*globalOpacity); \n\
+    }\n";
 
-static const char* const qglslMainFragmentShader_MO = "\
-    uniform lowp float globalOpacity; \
-    lowp vec4 srcPixel(); \
-    lowp vec4 applyMask(lowp vec4); \
-    void main() { \
-        gl_FragColor = applyMask(srcPixel()*globalOpacity); \
-    }";
+static const char* const qglslMainFragmentShader_M = "\n\
+    lowp vec4 srcPixel(); \n\
+    lowp vec4 applyMask(lowp vec4); \n\
+    void main() \n\
+    { \n\
+        gl_FragColor = applyMask(srcPixel()); \n\
+    }\n";
 
-static const char* const qglslMainFragmentShader_M = "\
-    lowp vec4 srcPixel(); \
-    lowp vec4 applyMask(lowp vec4); \
-    void main() { \
-        gl_FragColor = applyMask(srcPixel()); \
-    }";
-
-static const char* const qglslMainFragmentShader_CO = "\
-    uniform lowp float globalOpacity; \
-    lowp vec4 srcPixel(); \
-    lowp vec4 compose(lowp vec4); \
-    void main() { \
-        gl_FragColor = compose(srcPixel()*globalOpacity); \
-    }";
+static const char* const qglslMainFragmentShader_CO = "\n\
+    uniform   lowp    float     globalOpacity; \n\
+    lowp vec4 srcPixel(); \n\
+    lowp vec4 compose(lowp vec4); \n\
+    void main() \n\
+    { \n\
+        gl_FragColor = compose(srcPixel()*globalOpacity); \n\
+    }\n";
 
-static const char* const qglslMainFragmentShader_C = "\
-    lowp vec4 srcPixel(); \
-    lowp vec4 compose(lowp vec4); \
-    void main() { \
-        gl_FragColor = compose(srcPixel()); \
-    }";
+static const char* const qglslMainFragmentShader_C = "\n\
+    lowp vec4 srcPixel(); \n\
+    lowp vec4 compose(lowp vec4); \n\
+    void main() \n\
+    { \n\
+        gl_FragColor = compose(srcPixel()); \n\
+    }\n";
 
-static const char* const qglslMainFragmentShader_O = "\
-    uniform lowp float globalOpacity; \
-    lowp vec4 srcPixel(); \
-    void main() { \
-        gl_FragColor = srcPixel()*globalOpacity; \
-    }";
+static const char* const qglslMainFragmentShader_O = "\n\
+    uniform   lowp    float     globalOpacity; \n\
+    lowp vec4 srcPixel(); \n\
+    void main() \n\
+    { \n\
+        gl_FragColor = srcPixel()*globalOpacity; \n\
+    }\n";
 
-static const char* const qglslMainFragmentShader = "\
-    lowp vec4 srcPixel(); \
-    void main() { \
-        gl_FragColor = srcPixel(); \
-    }";
+static const char* const qglslMainFragmentShader = "\n\
+    lowp vec4 srcPixel(); \n\
+    void main() \n\
+    { \n\
+        gl_FragColor = srcPixel(); \n\
+    }\n";
 
-static const char* const qglslMaskFragmentShader = "\
-    varying highp   vec2      textureCoords;\
-    uniform lowp    sampler2D maskTexture;\
-    lowp vec4 applyMask(lowp vec4 src) \
-    {\
-        lowp vec4 mask = texture2D(maskTexture, textureCoords); \
-        return src * mask.a; \
-    }";
+static const char* const qglslMaskFragmentShader = "\n\
+    varying   highp   vec2      textureCoords;\n\
+    uniform   lowp    sampler2D maskTexture;\n\
+    lowp vec4 applyMask(lowp vec4 src) \n\
+    {\n\
+        lowp vec4 mask = texture2D(maskTexture, textureCoords); \n\
+        return src * mask.a; \n\
+    }\n";
 
 // For source over with subpixel antialiasing, the final color is calculated per component as follows
 // (.a is alpha component, .c is red, green or blue component):
@@ -433,23 +469,23 @@
 // dest.c = dest.c * (1 - mask.c) + src.c * alpha
 //
 
-static const char* const qglslRgbMaskFragmentShaderPass1 = "\
-    varying highp   vec2      textureCoords;\
-    uniform lowp    sampler2D maskTexture;\
-    lowp vec4 applyMask(lowp vec4 src) \
-    {\
-        lowp vec4 mask = texture2D(maskTexture, textureCoords); \
-        return src.a * mask; \
-    }";
+static const char* const qglslRgbMaskFragmentShaderPass1 = "\n\
+    varying   highp   vec2      textureCoords;\n\
+    uniform   lowp    sampler2D maskTexture;\n\
+    lowp vec4 applyMask(lowp vec4 src) \n\
+    { \n\
+        lowp vec4 mask = texture2D(maskTexture, textureCoords); \n\
+        return src.a * mask; \n\
+    }\n";
 
-static const char* const qglslRgbMaskFragmentShaderPass2 = "\
-    varying highp   vec2      textureCoords;\
-    uniform lowp    sampler2D maskTexture;\
-    lowp vec4 applyMask(lowp vec4 src) \
-    {\
-        lowp vec4 mask = texture2D(maskTexture, textureCoords); \
-        return src * mask; \
-    }";
+static const char* const qglslRgbMaskFragmentShaderPass2 = "\n\
+    varying   highp   vec2      textureCoords;\n\
+    uniform   lowp    sampler2D maskTexture;\n\
+    lowp vec4 applyMask(lowp vec4 src) \n\
+    { \n\
+        lowp vec4 mask = texture2D(maskTexture, textureCoords); \n\
+        return src * mask; \n\
+    }\n";
 
 /*
     Left to implement:
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -168,12 +168,6 @@
 
     if (matrixDirty)
         updateMatrix();
-
-    if (simpleShaderMatrixUniformDirty) {
-        const GLuint location = shaderManager->simpleProgram()->uniformLocation("pmvMatrix");
-        glUniformMatrix3fv(location, 1, GL_FALSE, (GLfloat*)pmvMatrix);
-        simpleShaderMatrixUniformDirty = false;
-    }
 }
 
 void QGL2PaintEngineExPrivate::updateBrushTexture()
@@ -392,9 +386,11 @@
 
     matrixDirty = false;
 
-    // The actual data has been updated so both shader program's uniforms need updating
-    simpleShaderMatrixUniformDirty = true;
-    shaderMatrixUniformDirty = true;
+    // Set the PMV matrix attribute. As we use an attributes rather than uniforms, we only
+    // need to do this once for every matrix change and persists across all shader programs.
+    glVertexAttrib3fv(QT_PMV_MATRIX_1_ATTR, pmvMatrix[0]);
+    glVertexAttrib3fv(QT_PMV_MATRIX_2_ATTR, pmvMatrix[1]);
+    glVertexAttrib3fv(QT_PMV_MATRIX_3_ATTR, pmvMatrix[2]);
 
     dasher.setInvScale(inverseScale);
     stroker.setInvScale(inverseScale);
@@ -932,18 +928,12 @@
     if (changed) {
         // The shader program has changed so mark all uniforms as dirty:
         brushUniformsDirty = true;
-        shaderMatrixUniformDirty = true;
         opacityUniformDirty = true;
     }
 
     if (brushUniformsDirty && mode != ImageDrawingMode && mode != ImageArrayDrawingMode)
         updateBrushUniforms();
 
-    if (shaderMatrixUniformDirty) {
-        glUniformMatrix3fv(location(QGLEngineShaderManager::PmvMatrix), 1, GL_FALSE, (GLfloat*)pmvMatrix);
-        shaderMatrixUniformDirty = false;
-    }
-
     if (opacityMode == QGLEngineShaderManager::UniformOpacity && opacityUniformDirty) {
         shaderManager->currentProgram()->setUniformValue(location(QGLEngineShaderManager::GlobalOpacity), (GLfloat)q->state()->opacity);
         opacityUniformDirty = false;
@@ -1955,11 +1945,8 @@
     if (old_state == s || old_state->renderHintsChanged)
         renderHintsChanged();
 
-    if (old_state == s || old_state->matrixChanged) {
+    if (old_state == s || old_state->matrixChanged)
         d->matrixDirty = true;
-        d->simpleShaderMatrixUniformDirty = true;
-        d->shaderMatrixUniformDirty = true;
-    }
 
     if (old_state == s || old_state->compositionModeChanged)
         d->compositionModeDirty = true;
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -252,8 +252,6 @@
     bool compositionModeDirty;
     bool brushTextureDirty;
     bool brushUniformsDirty;
-    bool simpleShaderMatrixUniformDirty;
-    bool shaderMatrixUniformDirty;
     bool opacityUniformDirty;
 
     bool stencilClean; // Has the stencil not been used for clipping so far?
--- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -42,6 +42,8 @@
 #include "qtextureglyphcache_gl_p.h"
 #include "qpaintengineex_opengl2_p.h"
 
+QT_BEGIN_NAMESPACE
+
 #ifdef Q_WS_WIN
 extern Q_GUI_EXPORT bool qt_cleartype_enabled;
 #endif
@@ -243,3 +245,5 @@
     return m_type == QFontEngineGlyphCache::Raster_RGBMask ? 2 : 0;
 #endif
 }
+
+QT_END_NAMESPACE
--- a/src/opengl/qgl.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/qgl.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -4393,6 +4393,13 @@
    \note This function temporarily disables depth-testing when the
    text is drawn.
 
+   \note This function can only be used inside a
+   QPainter::beginNativePainting()/QPainter::endNativePainting() block
+   if the default OpenGL paint engine is QPaintEngine::OpenGL. To make
+   QPaintEngine::OpenGL the default GL engine, call
+   QGL::setPreferredPaintEngine(QPaintEngine::OpenGL) before the
+   QApplication constructor.
+
    \l{Overpainting Example}{Overpaint} with QPainter::drawText() instead.
 */
 
@@ -4412,8 +4419,17 @@
     bool auto_swap = autoBufferSwap();
 
     QPaintEngine::Type oldEngineType = qgl_engine_selector()->preferredPaintEngine();
+
+    QPaintEngine *engine = paintEngine();
+    if (engine && (oldEngineType == QPaintEngine::OpenGL2) && engine->isActive()) {
+        qWarning("QGLWidget::renderText(): Calling renderText() while a GL 2 paint engine is"
+                 " active on the same device is not allowed.");
+        return;
+    }
+
+    // this changes what paintEngine() returns
     qgl_engine_selector()->setPreferredPaintEngine(QPaintEngine::OpenGL);
-    QPaintEngine *engine = paintEngine();
+    engine = paintEngine();
     QPainter *p;
     bool reuse_painter = false;
     if (engine->isActive()) {
@@ -4506,8 +4522,17 @@
     win_y = height - win_y; // y is inverted
 
     QPaintEngine::Type oldEngineType = qgl_engine_selector()->preferredPaintEngine();
+    QPaintEngine *engine = paintEngine();
+
+    if (engine && (oldEngineType == QPaintEngine::OpenGL2) && engine->isActive()) {
+        qWarning("QGLWidget::renderText(): Calling renderText() while a GL 2 paint engine is"
+                 " active on the same device is not allowed.");
+        return;
+    }
+
+    // this changes what paintEngine() returns
     qgl_engine_selector()->setPreferredPaintEngine(QPaintEngine::OpenGL);
-    QPaintEngine *engine = paintEngine();
+    engine = paintEngine();
     QPainter *p;
     bool reuse_painter = false;
     bool use_depth_testing = glIsEnabled(GL_DEPTH_TEST);
--- a/src/opengl/qglshaderprogram.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/qglshaderprogram.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -106,6 +106,19 @@
 
     \snippet doc/src/snippets/code/src_opengl_qglshaderprogram.cpp 2
 
+    \section1 Binary shaders and programs
+
+    Binary shaders may be specified using \c{glShaderBinary()} on
+    the return value from QGLShader::shaderId().  The QGLShader instance
+    containing the binary can then be added to the shader program with
+    addShader() and linked in the usual fashion with link().
+
+    Binary programs may be specified using \c{glProgramBinaryOES()}
+    on the return value from programId().  Then the application should
+    call link(), which will notice that the program has already been
+    specified and linked, allowing other operations to be performed
+    on the shader program.
+
     \sa QGLShader
 */
 
@@ -632,8 +645,6 @@
             qWarning("QGLShaderProgram::addShader: Program and shader are not associated with same context.");
             return false;
         }
-        if (!shader->d_func()->compiled)
-            return false;
         if (!shader->d_func()->shaderGuard.id())
             return false;
         glAttachShader(d->programGuard.id(), shader->d_func()->shaderGuard.id());
@@ -820,8 +831,20 @@
     GLuint program = d->programGuard.id();
     if (!program)
         return false;
+    GLint value;
+    if (d->shaders.isEmpty()) {
+        // If there are no explicit shaders, then it is possible that the
+        // application added a program binary with glProgramBinaryOES(),
+        // or otherwise populated the shaders itself.  Check to see if the
+        // program is already linked and bail out if so.
+        value = 0;
+        glGetProgramiv(program, GL_LINK_STATUS, &value);
+        d->linked = (value != 0);
+        if (d->linked)
+            return true;
+    }
     glLinkProgram(program);
-    GLint value = 0;
+    value = 0;
     glGetProgramiv(program, GL_LINK_STATUS, &value);
     d->linked = (value != 0);
     value = 0;
@@ -928,6 +951,15 @@
 GLuint QGLShaderProgram::programId() const
 {
     Q_D(const QGLShaderProgram);
+    GLuint id = d->programGuard.id();
+    if (id)
+        return id;
+
+    // Create the identifier if we don't have one yet.  This is for
+    // applications that want to create the attached shader configuration
+    // themselves, particularly those using program binaries.
+    if (!const_cast<QGLShaderProgram *>(this)->init())
+        return 0;
     return d->programGuard.id();
 }
 
--- a/src/opengl/qpixmapdata_gl.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/qpixmapdata_gl.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -252,10 +252,6 @@
 {
     setSerialNumber(++qt_gl_pixmap_serial);
     m_glDevice.setPixmapData(this);
-
-    // Set InteralBindOptions minus the memory managed, since this
-    // QGLTexture is not managed as part of the internal texture cache
-    m_texture.options = QGLContext::PremultipliedAlphaBindOption;
 }
 
 QGLPixmapData::~QGLPixmapData()
@@ -344,18 +340,18 @@
     }
 
     if (!m_source.isNull()) {
-        glBindTexture(target, m_texture.id);
         if (external_format == GL_RGB) {
-            const QImage tx = m_source.convertToFormat(QImage::Format_RGB888);
+            const QImage tx = m_source.convertToFormat(QImage::Format_RGB888).mirrored(false, true);
+
+            glBindTexture(target, m_texture.id);
             glTexSubImage2D(target, 0, 0, 0, w, h, external_format,
                             GL_UNSIGNED_BYTE, tx.bits());
         } else {
             const QImage tx = ctx->d_func()->convertToGLFormat(m_source, true, external_format);
+
+            glBindTexture(target, m_texture.id);
             glTexSubImage2D(target, 0, 0, 0, w, h, external_format,
                             GL_UNSIGNED_BYTE, tx.bits());
-            // convertToGLFormat will flip the Y axis, so it needs to
-            // be drawn upside down
-            m_texture.options |= QGLContext::InvertedYBindOption;
         }
 
         if (useFramebufferObjects())
--- a/src/openvg/qpixmapdata_vg.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/openvg/qpixmapdata_vg.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -46,11 +46,13 @@
 #include "qvgimagepool_p.h"
 
 #ifdef QT_SYMBIAN_SUPPORTS_SGIMAGE
+#include <private/qt_s60_p.h>
+#include <fbs.h>
 #include <graphics/sgimage.h>
 typedef EGLImageKHR (*pfnEglCreateImageKHR)(EGLDisplay, EGLContext, EGLenum, EGLClientBuffer, EGLint*);
 typedef EGLBoolean (*pfnEglDestroyImageKHR)(EGLDisplay, EGLImageKHR);
 typedef VGImage (*pfnVgCreateEGLImageTargetKHR)(VGeglImageKHR);
-#endif
+#endif // QT_SYMBIAN_SUPPORTS_SGIMAGE
 
 QT_BEGIN_NAMESPACE
 
@@ -425,6 +427,34 @@
 }
 
 #if defined(Q_OS_SYMBIAN)
+
+static CFbsBitmap* createBlitCopy(CFbsBitmap* bitmap)
+{
+      CFbsBitmap *copy = q_check_ptr(new CFbsBitmap);
+      if(!copy)
+        return 0;
+
+      if (copy->Create(bitmap->SizeInPixels(), bitmap->DisplayMode()) != KErrNone) {
+          delete copy;
+          copy = 0;
+
+          return 0;
+      }
+
+      CFbsBitmapDevice* bitmapDevice = 0;
+      CFbsBitGc *bitmapGc = 0;
+      QT_TRAP_THROWING(bitmapDevice = CFbsBitmapDevice::NewL(copy));
+      QT_TRAP_THROWING(bitmapGc = CFbsBitGc::NewL());
+      bitmapGc->Activate(bitmapDevice);
+
+      bitmapGc->BitBlt(TPoint(), bitmap);
+
+      delete bitmapGc;
+      delete bitmapDevice;
+
+      return copy;
+}
+
 void QVGPixmapData::cleanup()
 {
     is_null = w = h = 0;
@@ -510,7 +540,49 @@
         eglDestroyImageKHR(context->display(), eglImage);
         SgDriver::Close();
     } else if (type == QPixmapData::FbsBitmap) {
+        CFbsBitmap *bitmap = reinterpret_cast<CFbsBitmap*>(pixmap);
 
+        bool deleteSourceBitmap = false;
+
+#ifdef Q_SYMBIAN_HAS_EXTENDED_BITMAP_TYPE
+
+        // Rasterize extended bitmaps
+
+        TUid extendedBitmapType = bitmap->ExtendedBitmapType();
+        if (extendedBitmapType != KNullUid) {
+            bitmap = createBlitCopy(bitmap);
+            deleteSourceBitmap = true;
+        }
+#endif
+
+        if (bitmap->IsCompressedInRAM()) {
+            bitmap = createBlitCopy(bitmap);
+            deleteSourceBitmap = true;
+        }
+
+        TDisplayMode displayMode = bitmap->DisplayMode();
+        QImage::Format format = qt_TDisplayMode2Format(displayMode);
+
+        TSize size = bitmap->SizeInPixels();
+
+        bitmap->BeginDataAccess();
+        uchar *bytes = (uchar*)bitmap->DataAddress();
+        QImage img = QImage(bytes, size.iWidth, size.iHeight, format);
+        img = img.copy();
+        bitmap->EndDataAccess();
+
+        if(displayMode == EGray2) {
+            //Symbian thinks set pixels are white/transparent, Qt thinks they are foreground/solid
+            //So invert mono bitmaps so that masks work correctly.
+            img.invertPixels();
+        } else if(displayMode == EColor16M) {
+            img = img.rgbSwapped(); // EColor16M is BGR
+        }
+
+        fromImage(img, Qt::AutoColor);
+
+        if(deleteSourceBitmap)
+            delete bitmap;
     }
 #else
     Q_UNUSED(pixmap);
@@ -593,7 +665,25 @@
         SgDriver::Close();
         return reinterpret_cast<void*>(sgImage);
     } else if (type == QPixmapData::FbsBitmap) {
-        return 0;
+        CFbsBitmap *bitmap = q_check_ptr(new CFbsBitmap);
+
+        if (bitmap) {
+            if (bitmap->Create(TSize(source.width(), source.height()),
+                              EColor16MAP) == KErrNone) {
+                const uchar *sptr = qt_vg_imageBits(source);
+                bitmap->BeginDataAccess();
+
+                uchar *dptr = (uchar*)bitmap->DataAddress();
+                Mem::Copy(dptr, sptr, source.byteCount());
+
+                bitmap->EndDataAccess();
+            } else {
+                delete bitmap;
+                bitmap = 0;
+            }
+        }
+
+        return reinterpret_cast<void*>(bitmap);
     }
 #else
     Q_UNUSED(type);
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -552,6 +552,34 @@
     return &lockedImage;
 }
 
+
+bool QDirectFBPixmapData::scroll(int dx, int dy, const QRect &rect)
+{
+    if (!dfbSurface) {
+        return false;
+    }
+    unlockSurface();
+    DFBResult result = dfbSurface->SetBlittingFlags(dfbSurface, DSBLIT_NOFX);
+    if (result != DFB_OK) {
+        DirectFBError("QDirectFBPixmapData::scroll", result);
+        return false;
+    }
+    result = dfbSurface->SetPorterDuff(dfbSurface, DSPD_NONE);
+    if (result != DFB_OK) {
+        DirectFBError("QDirectFBPixmapData::scroll", result);
+        return false;
+    }
+
+    const DFBRectangle source = { rect.x(), rect.y(), rect.width(), rect.height() };
+    result = dfbSurface->Blit(dfbSurface, dfbSurface, &source, source.x + dx, source.y + dy);
+    if (result != DFB_OK) {
+        DirectFBError("QDirectFBPixmapData::scroll", result);
+        return false;
+    }
+
+    return true;
+}
+
 void QDirectFBPixmapData::invalidate()
 {
     if (dfbSurface) {
@@ -568,6 +596,3 @@
 QT_END_NAMESPACE
 
 #endif // QT_NO_QWS_DIRECTFB
-
-
-
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h	Fri Mar 12 15:46:37 2010 +0200
@@ -81,6 +81,7 @@
     virtual QImage toImage() const;
     virtual QPaintEngine *paintEngine() const;
     virtual QImage *buffer();
+    virtual bool scroll(int dx, int dy, const QRect &rect);
     // Pure virtual in QPixmapData, so re-implement here and delegate to QDirectFBPaintDevice
     virtual int metric(QPaintDevice::PaintDeviceMetric m) const { return QDirectFBPaintDevice::metric(m); }
 
--- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -378,9 +378,6 @@
         return;
     }
     screen->flipSurface(dfbSurface, flipFlags, region, offset);
-    if (noSystemBackground) {
-        dfbSurface->Clear(dfbSurface, 0, 0, 0, 0);
-    }
 #else
     setOpaque(windowOpacity != 0xff);
     if (mode == Offscreen) {
--- a/src/plugins/imageformats/ico/qicohandler.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/imageformats/ico/qicohandler.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -556,7 +556,11 @@
                 else                    // # colors used
                     icoAttrib.ncolors = header.biClrUsed ? header.biClrUsed : 1 << icoAttrib.nbits;
                 icoAttrib.w = iconEntry.bWidth;
+                if (icoAttrib.w == 0)
+                    icoAttrib.w = header.biWidth;
                 icoAttrib.h = iconEntry.bHeight;
+                if (icoAttrib.h == 0)
+                    icoAttrib.h = header.biHeight/2;
 
                 QImage::Format format = QImage::Format_ARGB32;
                 if (icoAttrib.nbits == 24)
--- a/src/plugins/phonon/mmf/mmf.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/phonon/mmf/mmf.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -92,7 +92,7 @@
 LIBS += -lmediaclientaudiostream  # For CMdaAudioOutputStream
 
 # These are for effects.
-LIBS += -lAudioEqualizerEffect -lBassBoostEffect -lDistanceAttenuationEffect -lDopplerbase -lEffectBase -lEnvironmentalReverbEffect -lListenerDopplerEffect -lListenerLocationEffect -lListenerOrientationEffect -lLocationBase -lLoudnessEffect -lOrientationBase -lSourceDopplerEffect -lSourceLocationEffect -lSourceOrientationEffect -lStereoWideningEffect
+LIBS += -lAudioEqualizerEffect -lBassBoostEffect -lDistanceAttenuationEffect -lDopplerBase -lEffectBase -lEnvironmentalReverbEffect -lListenerDopplerEffect -lListenerLocationEffect -lListenerOrientationEffect -lLocationBase -lLoudnessEffect -lOrientationBase -lSourceDopplerEffect -lSourceLocationEffect -lSourceOrientationEffect -lStereoWideningEffect
 
 # This is needed for having the .qtplugin file properly created on Symbian.
 QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/phonon_backend
--- a/src/plugins/s60/3_2/3_2.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/s60/3_2/3_2.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -10,7 +10,7 @@
     SOURCES += ../src/qlocale_3_2.cpp \
         ../src/qdesktopservices_3_2.cpp \
         ../src/qcoreapplication_3_2.cpp
-    LIBS += -lDirectoryLocalizer -lefsrv
+    LIBS += -ldirectorylocalizer -lefsrv
     INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 }
 
--- a/src/plugins/s60/5_0/5_0.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/s60/5_0/5_0.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -10,7 +10,7 @@
     SOURCES += ../src/qlocale_3_2.cpp \
         ../src/qdesktopservices_3_2.cpp \
         ../src/qcoreapplication_3_2.cpp
-    LIBS += -lDirectoryLocalizer -lefsrv
+    LIBS += -ldirectorylocalizer -lefsrv
     INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 }
 
--- a/src/plugins/s60/s60pluginbase.pri	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/plugins/s60/s60pluginbase.pri	Fri Mar 12 15:46:37 2010 +0200
@@ -6,11 +6,12 @@
 
 MMP_RULES += NOEXPORTLIBRARY
 
-defBlock = \
+# :QTP:QTPROD-479:defBlock name clashes with def_block.prf
+pluginDefBlock = \
     "$${LITERAL_HASH}ifdef WINSCW" \
     "DEFFILE ../bwins/qts60plugin.def" \
     "$${LITERAL_HASH}else" \
     "DEFFILE ../eabi/qts60plugin.def" \
     "$${LITERAL_HASH}endif"
 
-MMP_RULES += defBlock
\ No newline at end of file
+MMP_RULES += pluginDefBlock
\ No newline at end of file
--- a/src/qbase.pri	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/qbase.pri	Fri Mar 12 15:46:37 2010 +0200
@@ -95,31 +95,17 @@
         DEFINES+=QT_MAKEDLL
         TARGET.CAPABILITY = All -Tcb
 
-        defBlock = \
-        "$${LITERAL_HASH}ifdef WINSCW" \
-        "DEFFILE ../s60installs/bwins/$${TARGET}.def" \
-        "$${LITERAL_HASH}elif defined EABI" \
-        "DEFFILE ../s60installs/eabi/$${TARGET}.def" \
-        "$${LITERAL_HASH}endif"
-
-        contains(QT_CONFIG, private_tests) {
-            #When building autotest configuration, there are extra exports from
-            #the Qt DLLs, which we don't want in the frozen DEF files.
-            MMP_RULES += EXPORTUNFROZEN
-        } else {
-            #When building without autotests, DEF files are used by default.
-            #This is to maintain binary compatibility with previous releases.
-            
-            #with defBlock enabled, removed exported symbols are treated as errors
-            #and there is binary compatibility between successive builds.
-            #with defBlock disabled, binary compatibility is broken every time you build
-            MMP_RULES += defBlock
-
-            #with EXPORTUNFROZEN enabled, new exports are included in the dll without
-            #needing to run abld freeze, however binary compatibility is only maintained
-            #for symbols that are frozen (and only if defBlock is also enabled)
-            #the downside of EXPORTUNFROZEN is that the linker gets run twice
-            #MMP_RULES += EXPORTUNFROZEN
+        # When building without autotests, DEF files are used by default.
+        # This is to maintain binary compatibility with previous releases.
+        # To explicitly disable DEF files usage, eg. when lots of code churn is
+        # going on, and functions may be added and removed before shipping, 
+        # configure with -no-usedeffiles
+        # WARNING - disabling DEF files *will* break BC with previous released versions 
+        # of Qt, and the only compatibility will be between this build of Qt and anything 
+        # built in this exact environment.  *Never* use this when building a version 
+        # for release.
+        contains(CONFIG, def_files) {
+            defFilePath=../s60installs
         }
     }
     load(armcc_warnings)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/backup_registration.xml	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration>
+    <system_backup/>
+    <restore requires_reboot = "no"/>
+</backup_registration>
--- a/src/s60installs/bwins/QtCoreu.def	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/s60installs/bwins/QtCoreu.def	Fri Mar 12 15:46:37 2010 +0200
@@ -4400,4 +4400,3 @@
 	?signalIndex@SignalEvent@QStateMachine@@QBEHXZ @ 4399 NONAME ; int QStateMachine::SignalEvent::signalIndex(void) const
 	?disconnectOne@QMetaObject@@SA_NPBVQObject@@H0H@Z @ 4400 NONAME ; bool QMetaObject::disconnectOne(class QObject const *, int, class QObject const *, int)
 
-
--- a/src/s60installs/bwins/QtGuiu.def	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/s60installs/bwins/QtGuiu.def	Fri Mar 12 15:46:37 2010 +0200
@@ -5527,7 +5527,7 @@
 	?invalidateChildrenSceneTransform@QGraphicsItemPrivate@@QAEXXZ @ 5526 NONAME ; void QGraphicsItemPrivate::invalidateChildrenSceneTransform(void)
 	?invalidateDepthRecursively@QGraphicsItemPrivate@@QAEXXZ @ 5527 NONAME ; void QGraphicsItemPrivate::invalidateDepthRecursively(void)
 	?invalidateFilter@QSortFilterProxyModel@@IAEXXZ @ 5528 NONAME ; void QSortFilterProxyModel::invalidateFilter(void)
-	?invalidateGraphicsEffectsRecursively@QGraphicsItemPrivate@@QAEXXZ @ 5529 NONAME ; void QGraphicsItemPrivate::invalidateGraphicsEffectsRecursively(void)
+	?invalidateGraphicsEffectsRecursively@QGraphicsItemPrivate@@QAEXXZ @ 5529 NONAME ABSENT ; void QGraphicsItemPrivate::invalidateGraphicsEffectsRecursively(void)
 	?invalidateGraphicsEffectsRecursively@QWidgetPrivate@@QAEXXZ @ 5530 NONAME ; void QWidgetPrivate::invalidateGraphicsEffectsRecursively(void)
 	?invalidateScene@QGraphicsView@@QAEXABVQRectF@@V?$QFlags@W4SceneLayer@QGraphicsScene@@@@@Z @ 5531 NONAME ; void QGraphicsView::invalidateScene(class QRectF const &, class QFlags<enum QGraphicsScene::SceneLayer>)
 	?invalidateSizeCache@QWidgetItemV2@@AAEXXZ @ 5532 NONAME ; void QWidgetItemV2::invalidateSizeCache(void)
@@ -9555,7 +9555,7 @@
 	?setParent@QWidget@@QAEXPAV1@@Z @ 9554 NONAME ; void QWidget::setParent(class QWidget *)
 	?setParent@QWidget@@QAEXPAV1@V?$QFlags@W4WindowType@Qt@@@@@Z @ 9555 NONAME ; void QWidget::setParent(class QWidget *, class QFlags<enum Qt::WindowType>)
 	?setParentItem@QGraphicsItem@@QAEXPAV1@@Z @ 9556 NONAME ; void QGraphicsItem::setParentItem(class QGraphicsItem *)
-	?setParentItemHelper@QGraphicsItemPrivate@@QAEXPAVQGraphicsItem@@@Z @ 9557 NONAME ; void QGraphicsItemPrivate::setParentItemHelper(class QGraphicsItem *)
+	?setParentItemHelper@QGraphicsItemPrivate@@QAEXPAVQGraphicsItem@@@Z @ 9557 NONAME ABSENT ; void QGraphicsItemPrivate::setParentItemHelper(class QGraphicsItem *)
 	?setParentLayoutItem@QGraphicsLayoutItem@@QAEXPAV1@@Z @ 9558 NONAME ; void QGraphicsLayoutItem::setParentLayoutItem(class QGraphicsLayoutItem *)
 	?setParent_sys@QWidgetPrivate@@QAEXPAVQWidget@@V?$QFlags@W4WindowType@Qt@@@@@Z @ 9559 NONAME ; void QWidgetPrivate::setParent_sys(class QWidget *, class QFlags<enum Qt::WindowType>)
 	?setPasswordCharacter@QLineControl@@QAEXABVQChar@@@Z @ 9560 NONAME ; void QLineControl::setPasswordCharacter(class QChar const &)
@@ -12551,4 +12551,15 @@
 	??0Tab@QTextOption@@QAE@ABU01@@Z @ 12550 NONAME ; QTextOption::Tab::Tab(struct QTextOption::Tab const &)
 	?effectiveBoundingRect@QGraphicsItemPrivate@@QBE?AVQRectF@@ABV2@@Z @ 12551 NONAME ; class QRectF QGraphicsItemPrivate::effectiveBoundingRect(class QRectF const &) const
 	?glyphCache@QFontEngine@@QBEPAVQFontEngineGlyphCache@@PAXW4Type@2@ABVQTransform@@@Z @ 12552 NONAME ; class QFontEngineGlyphCache * QFontEngine::glyphCache(void *, enum QFontEngineGlyphCache::Type, class QTransform const &) const
+	??0Tab@QTextOption@@QAE@ABU01@@Z @ 12553 NONAME ABSENT ; QTextOption::Tab::Tab(struct QTextOption::Tab const &)
+	?effectiveBoundingRect@QGraphicsItemPrivate@@QBE?AVQRectF@@ABV2@@Z @ 12554 NONAME ABSENT ; class QRectF QGraphicsItemPrivate::effectiveBoundingRect(class QRectF const &) const
+	?glyphCache@QFontEngine@@QBEPAVQFontEngineGlyphCache@@PAXW4Type@2@ABVQTransform@@@Z @ 12555 NONAME ABSENT ; class QFontEngineGlyphCache * QFontEngine::glyphCache(void *, enum QFontEngineGlyphCache::Type, class QTransform const &) const
+	?qt_blurImage@@YAXAAVQImage@@M_NH@Z @ 12556 NONAME ; void qt_blurImage(class QImage &, float, bool, int)
+	?qt_blurImage@@YAXPAVQPainter@@AAVQImage@@M_N2H@Z @ 12557 NONAME ; void qt_blurImage(class QPainter *, class QImage &, float, bool, bool, int)
+	?qt_halfScaled@@YA?AVQImage@@ABV1@@Z @ 12558 NONAME ; class QImage qt_halfScaled(class QImage const &)
+	?qt_memrotate90@@YAXPBIHHHPAIH@Z @ 12559 NONAME ; void qt_memrotate90(unsigned int const *, int, int, int, unsigned int *, int)
+	?qt_memrotate90_gl@@YAXPBIHHHPAIH@Z @ 12560 NONAME ; void qt_memrotate90_gl(unsigned int const *, int, int, int, unsigned int *, int)
+	?symbianHandleCommand@QApplicationPrivate@@QAEHPBVQSymbianEvent@@@Z @ 12561 NONAME ; int QApplicationPrivate::symbianHandleCommand(class QSymbianEvent const *)
+	?symbianProcessWsEvent@QApplicationPrivate@@QAEHPBVQSymbianEvent@@@Z @ 12562 NONAME ; int QApplicationPrivate::symbianProcessWsEvent(class QSymbianEvent const *)
+	?symbianResourceChange@QApplicationPrivate@@QAEHPBVQSymbianEvent@@@Z @ 12563 NONAME ; int QApplicationPrivate::symbianResourceChange(class QSymbianEvent const *)
 
--- a/src/s60installs/bwins/QtScriptu.def	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/s60installs/bwins/QtScriptu.def	Fri Mar 12 15:46:37 2010 +0200
@@ -369,4 +369,5 @@
 	?willExecuteProgram@QScriptEngineAgentPrivate@@UAEXABVDebuggerCallFrame@QTJSC@@HH@Z @ 368 NONAME ; void QScriptEngineAgentPrivate::willExecuteProgram(class QTJSC::DebuggerCallFrame const &, int, int)
 	?staticMetaObject@QScriptExtensionPlugin@@2UQMetaObject@@B @ 369 NONAME ; struct QMetaObject const QScriptExtensionPlugin::staticMetaObject
 	?staticMetaObject@QScriptEngine@@2UQMetaObject@@B @ 370 NONAME ; struct QMetaObject const QScriptEngine::staticMetaObject
+	?isQObject@QScriptDeclarativeClass@@UBE_NXZ @ 371 NONAME ; bool QScriptDeclarativeClass::isQObject(void) const
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/bld.inf	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,108 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+*
+* Description:  Build information file for Qt configuration
+*
+*/
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+TOOLS2
+
+PRJ_EXPORTS
+qtconfig.xml /epoc32/tools/makefile_templates/qt/qtconfig.xml
+qtconfig.flm /epoc32/tools/makefile_templates/qt/qtconfig.flm
+qtconfig.mk /epoc32/tools/makefile_templates/qt/qtconfig.mk
+qtconfig.meta /epoc32/tools/makefile_templates/qt/qtconfig.meta
+
+#ifdef SBSV2
+wrappers/qmake.bat  /epoc32/tools/qmake.bat
+wrappers/qmake      /epoc32/tools/qmake
+#else
+wrappers/qmake_abld.bat  /epoc32/tools/qmake.bat
+wrappers/qmake_abld      /epoc32/tools/qmake
+#endif
+wrappers/moc.bat    /epoc32/tools/moc.bat
+wrappers/moc        /epoc32/tools/moc
+wrappers/rcc.bat    /epoc32/tools/rcc.bat
+wrappers/rcc        /epoc32/tools/rcc
+wrappers/uic.bat    /epoc32/tools/uic.bat
+wrappers/uic        /epoc32/tools/uic
+wrappers/qt.conf    /epoc32/tools/qt/qt.conf
+
+../../../mkspecs/symbian-abld/qmake.conf /epoc32/tools/qt/mkspecs/symbian-abld/qmake.conf
+../../../mkspecs/symbian-sbsv2/qmake.conf /epoc32/tools/qt/mkspecs/symbian-sbsv2/qmake.conf
+../../../mkspecs/common/symbian/stl-off/new /epoc32/tools/qt/mkspecs/common/symbian/stl-off/new
+../../../mkspecs/common/symbian/qplatformdefs.h /epoc32/tools/qt/mkspecs/common/symbian/qplatformdefs.h
+../../../mkspecs/common/symbian/symbian.conf /epoc32/tools/qt/mkspecs/common/symbian/symbian.conf
+../../../mkspecs/features/assistant.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/build_pass.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/dbusadaptors.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/dbusinterfaces.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/debug.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/debug_and_release.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/default_post.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/default_pre.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/designer.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/dll.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/exclusive_builds.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/help.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/include_source_dir.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/incredibuild_xge.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/lex.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/link_pkgconfig.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/moc.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/no_debug_info.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qdbus.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qt.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qt_config.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qt_functions.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qtestlib.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qtopia.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qtopiainc.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qtopialib.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/qttest_p4.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/release.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/resources.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/shared.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/silent.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/static.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/static_and_shared.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/staticlib.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/uic.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/uitools.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/use_c_linker.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/warn_off.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/warn_on.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/yacc.prf /epoc32/tools/qt/mkspecs/features/
+../../../mkspecs/features/symbian/application_icon.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/armcc_warnings.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/data_caging_paths.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/default_post.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/default_pre.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/epocallowdlldata.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/moc.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/platform_paths.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/qt.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/stl.prf /epoc32/tools/qt/mkspecs/features/symbian/
+../../../mkspecs/features/symbian/stl_off.prf /epoc32/tools/qt/mkspecs/features/symbian/
+
+//For UDA image
+../../../confml/qt.confml                  CONFML_EXPORT_PATH(qt.confml,uda_content)
+../../../implml/qt_copy.implml             CRML_EXPORT_PATH(qt_copy.implml,uda_content)
+../../../content/apps/qt.sisx               CRML_EXPORT_PATH(../content/sis/,uda_content)
+../../../content/apps/qt_stub.sis          /epoc32/data/z/system/install/qt_stub.sis
+
+PRJ_MMPFILES
+
+
+PRJ_TESTMMPFILES
+
+
+PRJ_EXTENSIONS
+START EXTENSION qt/qtconfig
+OPTION QT_ROOT ..
+OPTION OPTIONS -opensource -confirm-license -openvg -script -no-scripttools -webkit -make make -graphicssystem openvg -no-phonon-backend -usedeffiles
+END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/cmaker/config/export.mk	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
+# All rights reserved.
+# 
+# Description: makefile_templates, actual build configuration export makefile
+# 
+ 
+MAKEFILE = /sf/mw/qt/src/s60installs/deviceconfiguration/cmaker/config/export.mk
+
+
+$(call push,MAKEFILE_STACK,$(MAKEFILE))
+ 
+
+TEMPLATEMAKEFILES =	/sf/mw/qt/src/s60installs/deviceconfiguration/qtconfig.meta /epoc32/tools/makefile_templates/qt/
+
+
+template_makefiles :: template_makefiles_config
+         
+
+$(call addfiles, $(TEMPLATEMAKEFILES), template_makefiles_config) 
+
+
+$(call popout,MAKEFILE_STACK)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/cmaker/makefile	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,14 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
+# All rights reserved.
+# 
+# Description: exporting of *.meta file via cmaker
+#
+ 
+MAKEFILE = /sf/mw/qt/src/s60installs/deviceconfiguration/cmaker/makefile
+ 
+# Place the first target as the default target which is executed from this level 
+
+export_template_files :: template_makefiles
+          
+include include_template.mk 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/qtconfig.flm	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,90 @@
+# /****************************************************************************
+# **
+# ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# ** Contact: 
+# **
+# ****************************************************************************/
+
+# FLM to build Qt tools.
+
+QT_ROOT=../../..
+TARGETDIR:=$(EPOCROOT)/$(INSTALLPATH)
+SOURCEDIR:=$(EXTENSION_ROOT)/$(QT_ROOT)/bin
+TOOLSSRCDIR:=$(EXTENSION_ROOT)/$(QT_ROOT)/src/tools
+CONFIGURE_APP=configure$(DOTEXE)
+
+$(call makepath,$(TARGETDIR))
+
+ifeq ($(OSTYPE),unix)
+PLATFORM:=$(PLATFORM.LINUX)
+ ifeq ($(XPLATFORM), symbian-sbsv2)
+ CONFIGURE_APP=configure_symbian
+ endif
+else
+PLATFORM:=$(PLATFORM.WIN32)
+endif
+
+TARGET_TOOLS:=$(TARGETDIR)/qmake$(DOTEXE) $(TARGETDIR)/moc$(DOTEXE) $(TARGETDIR)/rcc$(DOTEXE) $(TARGETDIR)/uic$(DOTEXE)
+QT_TOOLS:= $(TOOLSSRCDIR)/uic $(TOOLSSRCDIR)/moc $(TOOLSSRCDIR)/rcc
+TARGET_LIB:=$(TARGETDIR)/mingwm10.dll
+SOURCE_TOOLS:=$(SOURCEDIR)/qmake$(DOTEXE) $(SOURCEDIR)/moc$(DOTEXE) $(SOURCEDIR)/rcc$(DOTEXE) $(SOURCEDIR)/uic$(DOTEXE)
+
+define QtConfiguration
+$(TARGET_LIB): $(SOURCEDIR)/qmake$(DOTEXE)
+	$(call startrule,mingw_deploy) \
+	$(GNUCP) $(EPOCROOT)/epoc32/gcc_mingw/bin/mingwm10.dll $$@ ; \
+	$(GNUCP) $(EPOCROOT)/epoc32/gcc_mingw/bin/mingwm10.dll $(SOURCEDIR) \
+	$(call endrule,mingw_deploy)
+
+ifeq ($(OSTYPE),unix)
+$(TARGET_TOOLS): $(QT_TOOLS)
+else
+$(TARGET_TOOLS): $(SOURCEDIR)/qmake$(DOTEXE)
+endif
+	$(call startrule,qtconf_deploy) \
+	$(GNUCP) $(SOURCEDIR)/$$(notdir $$@) $$@ \
+	$(call endrule,qtconf_deploy)
+
+ifeq ($(OSTYPE),unix)
+$(QT_TOOLS): $(TOOLSSRCDIR)/bootstrap
+	$(call startrule,qtconf_tools_build) \
+	cd $$@; \
+	$(GNUMAKE38); \
+	cd .. \
+	$(call endrule,qtconf_tools_build)
+
+$(TOOLSSRCDIR)/bootstrap:$(SOURCEDIR)/qmake$(DOTEXE)
+	$(call startrule,qtconf_bootstrap_build) \
+	cd $(TOOLSSRCDIR)/bootstrap; \
+	$(GNUMAKE38); \
+	cd .. \
+	$(call endrule,qtconf_bootstrap_build)
+endif
+
+
+$(SOURCEDIR)/qmake$(DOTEXE): $(EXTENSION_ROOT)/$(QT_ROOT)/$(CONFIGURE_APP)
+	$(call startrule,qtconf) \
+	cd $(EXTENSION_ROOT)/$(QT_ROOT) && \
+	$(EXTENSION_ROOT)/$(QT_ROOT)/$(CONFIGURE_APP) -platform $(PLATFORM) -xplatform $(XPLATFORM) $(OPTIONS) \
+	$(call endrule,qtconf)
+endef
+
+# Here a variable named "done_<sanitised $SISFILE>" gets created
+GUARD:=done_$(call sanitise,$(TARGETDIR)/qmake$(DOTEXE))
+# If variable "done_..." not set, set it to 1, so that
+# UREL and UDEB do not execute makesis twice on the same target 
+ifeq ($($(GUARD)),)
+$(GUARD):=1
+ifeq ($(OSTYPE),unix)
+ALL:: $(QT_TOOLS) $(TARGET_TOOLS) $(TARGET_LIB)
+else
+ALL:: $(TARGET_TOOLS) $(TARGET_LIB)
+endif
+$(eval $(call QtConfiguration))
+$(eval $(call whatmacro,$(TARGET_TOOLS)))
+ifeq ($(OSTYPE),unix)
+$(eval $(call GenerateStandardCleanTarget,$(QT_TOOLS) $(TARGET_TOOLS) $(SOURCE_TOOLS),$(TARGETDIR)))
+else
+$(eval $(call GenerateStandardCleanTarget,$(TARGET_TOOLS) $(SOURCE_TOOLS),$(TARGETDIR)))
+endif
+endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/qtconfig.meta	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,8 @@
+# Meta information for Python Py2exe
+#
+# Copyright (c) 2007 Symbian Software Ltd.  All rights reserved.
+#
+
+platform	tools2
+makefile 	gnumake
+techstream	qt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/qtconfig.mk	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,76 @@
+#
+# Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+#
+# Description:  
+#
+
+# All paths used in this file end with the path delimiter '/'
+
+include $(EPOCROOT)epoc32/tools/shell/$(notdir $(basename $(SHELL))).mk
+
+COPY := $(call ecopy)
+
+EPOC_ROOT := $(subst \,/,$(EPOCROOT))
+QT_ROOT := $(subst src/s60installs/deviceconfiguration,,$(subst \,/,$(EXTENSION_ROOT)))
+INSTALLPATH := epoc32/tools/qt/
+
+# Determine which platform we are building on
+ifeq ($(OSTYPE),unix)
+CONF_PLATFORM := linux-g++-32
+DOTEXE :=
+else
+CONF_PLATFORM := win32-g++-symbian
+DOTEXE := .exe
+endif
+
+# This variable is needed to do the 'cd' on Windows
+CONFIGURE_ROOT := $(subst src\s60installs\deviceconfiguration,,$(EXTENSION_ROOT))
+
+
+TARGETDIR := $(EPOC_ROOT)$(INSTALLPATH)
+SOURCEDIR := $(QT_ROOT)bin/
+TARGET_TOOLS := $(TARGETDIR)qmake$(DOTEXE) $(TARGETDIR)moc$(DOTEXE) $(TARGETDIR)rcc$(DOTEXE) $(TARGETDIR)uic$(DOTEXE)
+SOURCE_TOOLS := $(SOURCEDIR)qmake$(DOTEXE) $(SOURCEDIR)moc$(DOTEXE) $(SOURCEDIR)rcc$(DOTEXE) $(SOURCEDIR)uic$(DOTEXE)
+
+XPLATFORM:=symbian-abld
+
+$(TARGETDIR):
+	$(call makepath,$(TARGETDIR))
+
+$(SOURCEDIR)qmake$(DOTEXE): $(QT_ROOT)configure$(DOTEXE)
+	echo Configuring Qt for build on $(CONF_PLATFORM) with $(XPLATFORM) as build setup
+	cd $(CONFIGURE_ROOT) && $(QT_ROOT)configure$(DOTEXE) -platform $(CONF_PLATFORM) -xplatform $(XPLATFORM) $(OPTIONS)
+	$(COPY) $(QT_ROOT).qmake.cache $(EPOC_ROOT)$(INSTALLPATH)qmake.cache
+	$(COPY) $(EPOC_ROOT)epoc32/gcc_mingw/bin/mingwm10.dll $(EPOC_ROOT)$(INSTALLPATH)mingwm10.dll
+	$(COPY) $(EPOC_ROOT)epoc32/gcc_mingw/bin/mingwm10.dll $(QT_ROOT)bin/mingwm10.dll
+	
+$(TARGET_TOOLS): $(SOURCE_TOOLS)
+	$(COPY) $(SOURCEDIR)$(notdir $@) $@
+	
+do_nothing:
+	
+MAKMAKE : do_nothing
+
+BLD : $(TARGETDIR) $(TARGET_TOOLS)
+
+FINAL : do_nothing
+
+CLEAN :
+	perl $(EPOCROOT)epoc32/tools/ermdir.pl $(TARGETDIR)
+	perl -e "foreach(split(/ /, \"$(SOURCE_TOOLS)\")) {unlink \"$$_\";}"
+
+RELEASABLES :  do_nothing 
+
+SAVESPACE : BLD
+
+FREEZE : do_nothing
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+RESOURCE : do_nothing
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/qtconfig.xml	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<build xmlns="http://symbian.com/xml/build"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://symbian.com/xml/build http://symbian.com/xml/build/2_0.xsd">
+
+	<!-- Tools interfaces -->
+
+	<interface name="qt.qtconfig" extends="Symbian.UserFLM" flm="qtconfig.flm">
+		<param name='QT_ROOT' default='../../../'/>
+		<param name='INSTALLPATH' default='epoc32/tools/qt'/>
+		<param name='XPLATFORM' default='symbian-sbsv2'/>
+		<param name='PLATFORM.WIN32' default='win32-g++-symbian' />
+		<param name='PLATFORM.LINUX' default='linux-g++-32' />
+		<param name='OPTIONS' default='' />
+	</interface>
+
+</build>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/moc	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+# All rights reserved.
+
+PRGDIR=`dirname "$0"`
+PRGDIR=`cd "$PRGDIR"; pwd`
+
+[ -z "$QMAKESPEC" ] && export QMAKESPEC=$PRGDIR/qt/mkspecs/symbian-sbsv2
+
+"$PRGDIR/qt/moc" "$@"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/moc.bat	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+@REM Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+@REM All rights reserved.
+
+@ECHO OFF
+SETLOCAL
+
+SET __PRG__=%~dp0qt\moc.exe
+
+IF DEFINED QMAKESPEC GOTO :mkspec_set
+SET QMAKESPEC=%~dp0qt\mkspecs\symbian-abld
+
+:mkspec_set
+"%__PRG__%" %*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/qmake	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+# All rights reserved.
+
+PRGDIR=`dirname "$0"`
+PRGDIR=`cd "$PRGDIR"; pwd`
+
+[ -z "$QMAKESPEC" ] && export QMAKESPEC=$PRGDIR/qt/mkspecs/symbian-sbsv2
+
+"$PRGDIR/qt/qmake" "$@"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/qmake.bat	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,16 @@
+@REM Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+@REM All rights reserved.
+
+@ECHO OFF
+SETLOCAL
+
+SET __PRG__=%~dp0qt/qmake.exe
+
+IF DEFINED QMAKESPEC GOTO :mkspec_set
+SET QMAKESPEC=%~dp0qt/mkspecs/symbian-sbsv2
+
+:mkspec_set
+REM The following line can be used to enable qmake.cache
+REM %__PRG__% -cache %~dp0qt\qmake.cache %*
+
+"%__PRG__%" %*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/qmake_abld	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+# All rights reserved.
+
+PRGDIR=`dirname "$0"`
+PRGDIR=`cd "$PRGDIR"; pwd`
+
+[ -z "$QMAKESPEC" ] && export QMAKESPEC=$PRGDIR/qt/mkspecs/symbian-abld
+
+"$PRGDIR/qt/qmake" "$@"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/qmake_abld.bat	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,16 @@
+@REM Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+@REM All rights reserved.
+
+@ECHO OFF
+SETLOCAL
+
+SET __PRG__=%~dp0qt/qmake.exe
+
+IF DEFINED QMAKESPEC GOTO :mkspec_set
+SET QMAKESPEC=%~dp0qt/mkspecs/symbian-abld
+
+:mkspec_set
+REM The following line can be used to enable qmake.cache
+REM %__PRG__% -cache %~dp0qt\qmake.cache %*
+
+"%__PRG__%" %*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/qt.conf	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,5 @@
+[Paths]
+Data = $(EPOCROOT)epoc32/tools/qt
+Headers = $(EPOCROOT)epoc32/include/mw
+Binaries = $(EPOCROOT)epoc32/tools/qt
+Prefix = $(EPOCROOT)sf/mw/qt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/rcc	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+# All rights reserved.
+
+PRGDIR=`dirname "$0"`
+PRGDIR=`cd "$PRGDIR"; pwd`
+
+[ -z "$QMAKESPEC" ] && export QMAKESPEC=$PRGDIR/qt/mkspecs/symbian-sbsv2
+
+"$PRGDIR/qt/rcc" "$@"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/rcc.bat	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+@REM Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+@REM All rights reserved.
+
+@ECHO OFF
+SETLOCAL
+
+SET __PRG__=%~dp0qt\rcc.exe
+
+IF DEFINED QMAKESPEC GOTO :mkspec_set
+SET QMAKESPEC=%~dp0qt\mkspecs\symbian-abld
+
+:mkspec_set
+"%__PRG__%" %*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/uic	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+# All rights reserved.
+
+PRGDIR=`dirname "$0"`
+PRGDIR=`cd "$PRGDIR"; pwd`
+
+[ -z "$QMAKESPEC" ] && export QMAKESPEC=$PRGDIR/qt/mkspecs/symbian-sbsv2
+
+"$PRGDIR/qt/uic" "$@"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s60installs/deviceconfiguration/wrappers/uic.bat	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+@REM Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+@REM All rights reserved.
+
+@ECHO OFF
+SETLOCAL
+
+SET __PRG__=%~dp0qt\uic.exe
+
+IF DEFINED QMAKESPEC GOTO :mkspec_set
+SET QMAKESPEC=%~dp0qt\mkspecs\symbian-abld
+
+:mkspec_set
+"%__PRG__%" %*
--- a/src/s60installs/eabi/QtGuiu.def	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/s60installs/eabi/QtGuiu.def	Fri Mar 12 15:46:37 2010 +0200
@@ -4671,7 +4671,7 @@
 	_ZN20QGraphicsItemPrivate18setTransformHelperERK10QTransform @ 4670 NONAME
 	_ZN20QGraphicsItemPrivate18subFocusItemChangeEv @ 4671 NONAME
 	_ZN20QGraphicsItemPrivate18updateAncestorFlagEN13QGraphicsItem16GraphicsItemFlagENS_12AncestorFlagEbb @ 4672 NONAME
-	_ZN20QGraphicsItemPrivate19setParentItemHelperEP13QGraphicsItem @ 4673 NONAME
+	_ZN20QGraphicsItemPrivate19setParentItemHelperEP13QGraphicsItem @ 4673 NONAME ABSENT
 	_ZN20QGraphicsItemPrivate20removeExtraItemCacheEv @ 4674 NONAME
 	_ZN20QGraphicsItemPrivate23appendGraphicsTransformEP18QGraphicsTransform @ 4675 NONAME
 	_ZN20QGraphicsItemPrivate25movableAncestorIsSelectedEPK13QGraphicsItem @ 4676 NONAME
@@ -11639,7 +11639,7 @@
 	_ZN19QGraphicsBlurEffect4drawEP8QPainter @ 11638 NONAME
 	_ZN19QKeyEventTransition15setModifierMaskE6QFlagsIN2Qt16KeyboardModifierEE @ 11639 NONAME
 	_ZN20QGraphicsItemPrivate18siblingOrderChangeEv @ 11640 NONAME
-	_ZN20QGraphicsItemPrivate36invalidateGraphicsEffectsRecursivelyEv @ 11641 NONAME
+	_ZN20QGraphicsItemPrivate36invalidateGraphicsEffectsRecursivelyEv @ 11641 NONAME ABSENT
 	_ZN21QMouseEventTransition14setHitTestPathERK12QPainterPath @ 11642 NONAME
 	_ZN21QMouseEventTransition15setModifierMaskE6QFlagsIN2Qt16KeyboardModifierEE @ 11643 NONAME
 	_ZN22QGraphicsOpacityEffect4drawEP8QPainter @ 11644 NONAME
@@ -11737,26 +11737,59 @@
 	_Zls6QDebugRKN12QStyleOption10OptionTypeE @ 11736 NONAME
 	_ZN12QTextControl31setIgnoreUnusedNavigationEventsEb @ 11737 NONAME
 	_ZNK12QTextControl28ignoreUnusedNavigationEventsEv @ 11738 NONAME
-	_ZN11QEglContext11doneCurrentEv @ 11739 NONAME
-	_ZN11QEglContext11makeCurrentEi @ 11740 NONAME
-	_ZN11QEglContext11openDisplayEP12QPaintDevice @ 11741 NONAME
-	_ZN11QEglContext11swapBuffersEi @ 11742 NONAME
-	_ZN11QEglContext12chooseConfigERK14QEglPropertiesN4QEgl16PixelFormatMatchE @ 11743 NONAME
-	_ZN11QEglContext13createContextEPS_PK14QEglProperties @ 11744 NONAME
-	_ZN11QEglContext13createSurfaceEP12QPaintDevicePK14QEglProperties @ 11745 NONAME
-	_ZN11QEglContext14destroySurfaceEi @ 11746 NONAME
-	_ZN11QEglContext15lazyDoneCurrentEv @ 11747 NONAME
-	_ZN11QEglContextC1Ev @ 11748 NONAME
-	_ZN11QEglContextD1Ev @ 11749 NONAME
-	_ZN14QEglProperties11removeValueEi @ 11750 NONAME
-	_ZN14QEglProperties14setPixelFormatEN6QImage6FormatE @ 11751 NONAME
-	_ZN14QEglProperties17setRenderableTypeEN4QEgl3APIE @11752 NONAME
-    _ZN14QEglProperties19reduceConfigurationEv @11753 NONAME
-    _ZN14QEglProperties20setPaintDeviceFormatEP12QPaintDevice @11754 NONAME
-    _ZN14QEglProperties8setValueEii @11755 NONAME
-    _ZN14QEglPropertiesC1Ei @11756 NONAME
-    _ZN14QEglPropertiesC1Ev @11757 NONAME
-    _ZNK11QEglContext12configAttribEiPi @11758 NONAME
-    _ZNK11QEglContext9isCurrentEv @11759 NONAME
-    _ZNK14QEglProperties5valueEi @11760 NONAME
+	_ZN11QVectorPathD1Ev @ 11739 NONAME
+	_ZN11QVectorPathD2Ev @ 11740 NONAME
+	_ZNK11QVectorPath12addCacheDataEP14QPaintEngineExPvPFvS1_S2_E @ 11741 NONAME
+	_ZNK20QGraphicsItemPrivate20discardUpdateRequestEbbb @ 11742 NONAME
+	_ZN11QEglContext10extensionsEv @ 11743 NONAME 
+	_ZN11QEglContext10getDisplayEP12QPaintDevice @ 11744 NONAME 
+	_ZN11QEglContext10waitClientEv @ 11745 NONAME 
+	_ZN11QEglContext10waitNativeEv @ 11746 NONAME 
+	_ZN11QEglContext11doneCurrentEv @ 11747 NONAME 
+	_ZN11QEglContext11errorStringEi @ 11748 NONAME 
+	_ZN11QEglContext11makeCurrentEi @ 11749 NONAME 
+	_ZN11QEglContext11openDisplayEP12QPaintDevice @ 11750 NONAME 
+	_ZN11QEglContext11swapBuffersEi @ 11751 NONAME 
+	_ZN11QEglContext12chooseConfigERK14QEglPropertiesN4QEgl16PixelFormatMatchE @ 11752 NONAME 
+	_ZN11QEglContext12hasExtensionEPKc @ 11753 NONAME 
+	_ZN11QEglContext13createContextEPS_PK14QEglProperties @ 11754 NONAME 
+	_ZN11QEglContext13createSurfaceEP12QPaintDevicePK14QEglProperties @ 11755 NONAME 
+	_ZN11QEglContext14currentContextEN4QEgl3APIE @ 11756 NONAME 
+	_ZN11QEglContext14defaultDisplayEP12QPaintDevice @ 11757 NONAME 
+	_ZN11QEglContext14destroySurfaceEi @ 11758 NONAME 
+	_ZN11QEglContext14dumpAllConfigsEv @ 11759 NONAME 
+	_ZN11QEglContext15lazyDoneCurrentEv @ 11760 NONAME 
+	_ZN11QEglContext17setCurrentContextEN4QEgl3APIEPS_ @ 11761 NONAME 
+	_ZN11QEglContext7destroyEv @ 11762 NONAME 
+	_ZN11QEglContextC1Ev @ 11763 NONAME 
+	_ZN11QEglContextC2Ev @ 11764 NONAME 
+	_ZN11QEglContextD1Ev @ 11765 NONAME 
+	_ZN11QEglContextD2Ev @ 11766 NONAME 
+	_ZN14QEglProperties11removeValueEi @ 11767 NONAME 
+	_ZN14QEglProperties14dumpAllConfigsEv @ 11768 NONAME 
+	_ZN14QEglProperties14setPixelFormatEN6QImage6FormatE @ 11769 NONAME 
+	_ZN14QEglProperties17setRenderableTypeEN4QEgl3APIE @ 11770 NONAME 
+	_ZN14QEglProperties19reduceConfigurationEv @ 11771 NONAME 
+	_ZN14QEglProperties20setPaintDeviceFormatEP12QPaintDevice @ 11772 NONAME 
+	_ZN14QEglProperties8setValueEii @ 11773 NONAME 
+	_ZN14QEglPropertiesC1Ei @ 11774 NONAME 
+	_ZN14QEglPropertiesC1Ev @ 11775 NONAME 
+	_ZN14QEglPropertiesC2Ei @ 11776 NONAME 
+	_ZN14QEglPropertiesC2Ev @ 11777 NONAME 
+	_ZNK11QEglContext12configAttribEiPi @ 11778 NONAME 
+	_ZNK11QEglContext16configPropertiesEi @ 11779 NONAME 
+	_ZNK11QEglContext7isValidEv @ 11780 NONAME 
+	_ZNK11QEglContext9isCurrentEv @ 11781 NONAME 
+	_ZNK14QEglProperties5valueEi @ 11782 NONAME 
+	_ZNK14QEglProperties8toStringEv @ 11783 NONAME 
+	_ZNK11QFontEngine10glyphCacheEPvN21QFontEngineGlyphCache4TypeERK10QTransform @ 11784 NONAME
+	_ZNK20QGraphicsItemPrivate21effectiveBoundingRectERK6QRectF @ 11785 NONAME
+	_Z12qt_blurImageP8QPainterR6QImagefbbi @ 11786 NONAME
+	_Z12qt_blurImageR6QImagefbi @ 11787 NONAME
+	_Z13qt_halfScaledRK6QImage @ 11788 NONAME
+	_Z14qt_memrotate90PKjiiiPji @ 11789 NONAME
+	_Z17qt_memrotate90_glPKjiiiPji @ 11790 NONAME
+	_ZN19QApplicationPrivate20symbianHandleCommandEPK13QSymbianEvent @ 11791 NONAME
+	_ZN19QApplicationPrivate21symbianProcessWsEventEPK13QSymbianEvent @ 11792 NONAME
+	_ZN19QApplicationPrivate21symbianResourceChangeEPK13QSymbianEvent @ 11793 NONAME
 
--- a/src/s60installs/eabi/QtScriptu.def	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/s60installs/eabi/QtScriptu.def	Fri Mar 12 15:46:37 2010 +0200
@@ -393,4 +393,5 @@
 	_ZNK23QScriptDeclarativeClass7contextEv @ 392 NONAME
 	_ZTI23QScriptDeclarativeClass @ 393 NONAME
 	_ZTV23QScriptDeclarativeClass @ 394 NONAME
+	_ZNK23QScriptDeclarativeClass9isQObjectEv @ 395 NONAME
 
--- a/src/s60installs/s60installs.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/s60installs/s60installs.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -81,7 +81,11 @@
         DEPLOYMENT += phonon_backend_plugins
     }
 
-    DEPLOYMENT += qtresources qtlibraries imageformats_plugins codecs_plugins graphicssystems_plugins
+    # Support backup & restore for Qt libraries
+    qtbackup.sources = backup_registration.xml
+    qtbackup.path = c:/private/10202D56/import/packages/$$replace(TARGET.UID3, 0x,)
+
+    DEPLOYMENT += qtresources qtlibraries qtbackup imageformats_plugins codecs_plugins graphicssystems_plugins
 
     contains(QT_CONFIG, svg): {
        qtlibraries.sources += QtSvg.dll
@@ -113,6 +117,10 @@
         graphicssystems_plugins.sources += qvggraphicssystem.dll
     }
 
+    contains(QT_CONFIG, multimedia) {
+        qtlibraries.sources += QtMultimedia.dll
+    }
+
     #BLD_INF_RULES.prj_exports += "qt.iby $$CORE_MW_LAYER_IBY_EXPORT_PATH(qt.iby)"
     #:QTP:QTPROD-220: Qt Examples should be exported to ROFS3
     #BLD_INF_RULES.prj_exports += "qtdemoapps.iby $$CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(qtdemoapps.iby)"
Binary file src/s60installs/sqlite3.sis has changed
Binary file src/s60installs/sqlite3_selfsigned.sis has changed
--- a/src/script/api/qscriptvalue.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/script/api/qscriptvalue.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1148,10 +1148,15 @@
     }
 
     if (d->type != other.d_ptr->type) {
-        if (d->type == QScriptValuePrivate::JavaScriptCore)
-            return JSC::JSValue::strictEqual(d->jscValue, d->engine->scriptValueToJSCValue(other));
-        else if (other.d_ptr->type == QScriptValuePrivate::JavaScriptCore)
-            return JSC::JSValue::strictEqual(other.d_ptr->engine->scriptValueToJSCValue(*this), other.d_ptr->jscValue);
+        if (d->type == QScriptValuePrivate::JavaScriptCore) {
+            QScriptEnginePrivate *eng_p = d->engine ? d->engine : other.d_ptr->engine;
+            if (eng_p)
+                return JSC::JSValue::strictEqual(d->jscValue, eng_p->scriptValueToJSCValue(other));
+        } else if (other.d_ptr->type == QScriptValuePrivate::JavaScriptCore) {
+            QScriptEnginePrivate *eng_p = other.d_ptr->engine ? other.d_ptr->engine : d->engine;
+            if (eng_p)
+                return JSC::JSValue::strictEqual(eng_p->scriptValueToJSCValue(*this), other.d_ptr->jscValue);
+        }
 
         return false;
     }
--- a/src/sql/drivers/sqlite/qsql_sqlite.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -245,9 +245,9 @@
                 values[i + idx] = QVariant(QVariant::String);
                 break;
             default:
-                values[i + idx] = QString::fromUtf16(static_cast<const ushort *>(
+                values[i + idx] = QString(reinterpret_cast<const QChar *>(
                             sqlite3_column_text16(stmt, i)),
-                            sqlite3_column_bytes16(stmt, i) / sizeof(ushort));
+                            sqlite3_column_bytes16(stmt, i) / sizeof(QChar));
                 break;
             }
         }
--- a/src/sql/kernel/qsqlresult.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/sql/kernel/qsqlresult.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -136,7 +136,7 @@
         i >>= 4;
     }
 
-    return QString::fromUtf16(arr, int(ptr - arr) + 1);
+    return QString(reinterpret_cast<const QChar *>(arr), int(ptr - arr) + 1);
 }
 
 static bool qIsAlnum(QChar ch)
--- a/src/src.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/src.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -106,6 +106,7 @@
    contains(QT_CONFIG, webkit)  {
       src_webkit.depends = src_gui src_sql src_network src_xml 
       contains(QT_CONFIG, phonon):src_webkit.depends += src_phonon
+      contains(QT_CONFIG, xmlpatterns): src_webkit.depends += src_xmlpatterns
       contains(QT_CONFIG, declarative):src_declarative.depends += src_webkit
       #exists($$QT_SOURCE_TREE/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro): src_webkit.depends += src_javascriptcore
    }
--- a/src/tools/rcc/rcc.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/tools/rcc/rcc.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -544,6 +544,8 @@
     const QString filename = nodes.at(nodes.size()-1);
     RCCFileInfo *s = new RCCFileInfo(file);
     s->m_parent = parent;
+    if (parent->m_children.contains(filename))
+        qWarning("potential duplicate alias detected: '%s'", qPrintable(filename));
     parent->m_children.insertMulti(filename, s);
     return true;
 }
--- a/src/tools/uic/cpp/cppwriteinitialization.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/tools/uic/cpp/cppwriteinitialization.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -2787,8 +2787,8 @@
         return;
 
     QMap<QString, bool> map; // bool is dummy. The idea is to sort that (always generate in the same order) by putting a set into a map
-    foreach (QString str, directives)
-        map[str] = true;
+    foreach (const QString &str, directives)
+        map.insert(str, true);
 
     if (map.size() == 1) {
         outputStream << "#ifndef " << map.constBegin().key() << endl;
@@ -2797,7 +2797,7 @@
 
     outputStream << "#if";
     bool doOr = false;
-    foreach (QString str, map.keys()) {
+    foreach (const QString &str, map.keys()) {
         if (doOr)
             outputStream << " ||";
         outputStream << " !defined(" << str << ')';
--- a/src/tools/uic3/converter.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/tools/uic3/converter.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -121,7 +121,7 @@
     return className.at(1) .isUpper() && className.at(2).isLower();
 }
 
-DomUI *Ui3Reader::generateUi4(const QDomElement &widget, bool implicitIncludes)
+DomUI *Ui3Reader::generateUi4(const QDomElement &widget)
 {
     QDomNodeList nl;
     candidateCustomWidgets.clear();
@@ -401,7 +401,7 @@
             bool resolved = false;
             if (objName == receiver) {
                 // see if it's a custom slot
-                foreach (QString cs, ui_custom_slots) {
+                foreach (const QString &cs, ui_custom_slots) {
                     if (cs == slot) {
                         resolved = true;
                         break;
@@ -474,7 +474,7 @@
 
         // Magic header generation feature for legacy KDE forms
         // (for example, filesharing/advanced/kcm_sambaconf/share.ui)
-        if (implicitIncludes && isKDEClass(customClass)) {
+        if ((m_options & ImplicitIncludes) && isKDEClass(customClass)) {
             QString header = customClass.toLower();
             header += QLatin1String(".h");
             DomHeader *domHeader = new DomHeader;
@@ -710,10 +710,13 @@
             ui_action_list.append(a);
         } else if (t == QLatin1String("property")) {
             // skip the property it is already handled by createProperties
-
-            QString name = e.attribute(QLatin1String("name"));  // change the varname this widget
-            if (name == QLatin1String("name"))
-                ui_widget->setAttributeName(DomTool::readProperty(w, QLatin1String("name"), QVariant()).toString());
+            const QString name = e.attribute(QLatin1String("name"));  // change the varname this widget
+            if (name == QLatin1String("name")) {
+                // Do not name QLayoutWidget if layout names are to be used.
+                const bool applyName = !(m_options & PreserveLayoutNames) || className != QLatin1String("QLayoutWidget");
+                if (applyName)
+                    ui_widget->setAttributeName(DomTool::readProperty(w, QLatin1String("name"), QVariant()).toString());
+            }
         } else if (t == QLatin1String("row")) {
             DomRow *row = new DomRow();
             row->read(e);
@@ -797,6 +800,11 @@
 
     createProperties(w, &ui_property_list, className);
     createAttributes(w, &ui_attribute_list, className);
+    if (m_options & PreserveLayoutNames) {
+        const QString layoutName = getLayoutName(w);
+        if (!layoutName.isEmpty())
+            lay->setAttributeName(layoutName);
+    }
 
     QDomElement e = w.firstChild().toElement();
     while (!e.isNull()) {
@@ -1114,7 +1122,7 @@
             if (prop->kind() == DomProperty::Set) {
                 QStringList flags = prop->elementSet().split(QLatin1Char('|'));
                 QStringList v;
-                foreach (QString fl, flags) {
+                foreach (const QString &fl, flags) {
                     QString e = WidgetInfo::resolveEnumerator(className, fl);
                     if (e.isEmpty()) {
                         e = m_porting->renameEnumerator(className + QLatin1String("::") + fl);
@@ -1275,7 +1283,7 @@
     QString newText = t;
     //split type name on <>*& and whitespace
     QStringList typeNames = t.split(QRegExp(QLatin1String("<|>|\\*|&| ")), QString::SkipEmptyParts);
-    foreach(QString typeName , typeNames) {
+    foreach(const QString &typeName , typeNames) {
         QString newName = fixClassName(typeName);
         if( newName != typeName ) {
             newText.replace(typeName, newName);
--- a/src/tools/uic3/form.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/tools/uic3/form.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -100,7 +100,7 @@
 
   \sa createFormImpl()
 */
-void Ui3Reader::createFormDecl(const QDomElement &e, bool implicitIncludes)
+void Ui3Reader::createFormDecl(const QDomElement &e)
 {
     QDomElement body = e;
 
@@ -138,7 +138,7 @@
                         QString tagName = n3.tagName().toLower();
                         if (tagName == QLatin1String("class")) {
                             cl = n3.firstChild().toText().data();
-                            if (!nofwd)
+                            if (m_options & CustomWidgetForwardDeclarations)
                                 forwardDecl << cl;
                             customWidgets.insert(cl, 0);
                         } else if (tagName == QLatin1String("header")) {
@@ -257,10 +257,10 @@
     d.option().copyrightHeader = false;
     d.option().extractImages = m_extractImages;
     d.option().qrcOutputFile = m_qrcOutputFile;
-    d.option().implicitIncludes = implicitIncludes;
+    d.option().implicitIncludes = (m_options & ImplicitIncludes) ? 1 : 0;
     if (trmacro.size())
         d.option().translateFunction = trmacro;
-    DomUI *ui = generateUi4(e, implicitIncludes);
+    DomUI *ui = generateUi4(e);
     d.uic(fileName, ui, &out);
     delete ui;
 
--- a/src/tools/uic3/main.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/tools/uic3/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -78,13 +78,11 @@
     QByteArray image_tmpfile;
     const char* projectName = 0;
     const char* trmacro = 0;
-    bool nofwd = false;
     bool fix = false;
     bool deps = false;
-    bool implicitIncludes = true;
+    unsigned readerOptions = Ui3Reader::ImplicitIncludes|Ui3Reader::CustomWidgetForwardDeclarations;
     QByteArray pchFile;
 
-
     QApplication app(argc, argv, false);
 
     for (int n = 1; n < argc && error == 0; n++) {
@@ -146,9 +144,11 @@
             } else if (opt == "d") {
                 deps = true;
             } else if (opt == "no-implicit-includes") {
-                implicitIncludes = false;
+                readerOptions &= ~Ui3Reader::ImplicitIncludes;
             } else if (opt == "nofwd") {
-                nofwd = true;
+                readerOptions &= ~Ui3Reader::CustomWidgetForwardDeclarations;
+            } else if (opt == "layout-names") {
+                readerOptions |= Ui3Reader::PreserveLayoutNames;
             } else if (opt == "nounload") {
                 // skip
             } else if (opt == "convert") {
@@ -253,6 +253,7 @@
                  "\t-extract qrcFile   Create resource file and extract embedded images into \"image\" dir\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"
                  "\t-no-implicit-includes Do not generate #include-directives for custom classes\n"
                  "\t-nounload          Do not unload plugins after processing\n"
                  "\t-tr func           Use func() instead of tr() for i18n\n"
@@ -289,9 +290,8 @@
 
     QTextStream out(&fileOut);
 
-    Ui3Reader ui3(out);
+    Ui3Reader ui3(out, readerOptions);
     ui3.setExtractImages(extract, qrcOutputFile);
-
     if (projectName && imagecollection) {
         out.setEncoding(QTextStream::Latin1);
         ui3.embed(projectName, images);
@@ -338,10 +338,10 @@
         QStringList globalIncludes, localIncludes;
         ui3.computeDeps(e, globalIncludes, localIncludes, impl);
 
-        foreach (QString i, globalIncludes)
+        foreach (const QString &i, globalIncludes)
             printf("%s\n", i.toLatin1().constData());
 
-        foreach (QString i, localIncludes)
+        foreach (const QString &i, localIncludes)
             printf("%s\n", i.toLatin1().constData());
 
         if (impl)
@@ -349,7 +349,7 @@
 
         return 0;
     } else if (convert) {
-        ui3.generateUi4(QFile::decodeName(fileName), QFile::decodeName(outputFile), doc, implicitIncludes);
+        ui3.generateUi4(QFile::decodeName(fileName), QFile::decodeName(outputFile), doc);
         return 0;
     }
 
@@ -388,8 +388,6 @@
         subcl,
         QString::fromUtf8(trmacro),
         QString::fromUtf8(className),
-        nofwd,
-        implicitIncludes, 
         convertedUi);
 
     if (!protector.isEmpty()) {
--- a/src/tools/uic3/ui3reader.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/tools/uic3/ui3reader.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -176,7 +176,6 @@
 {
     outputFileName.clear();
     trmacro.clear();
-    nofwd = false;
 
     fileName.clear();
     writeFunctImpl = true;
@@ -241,11 +240,10 @@
     return widget;
 }
 
-Ui3Reader::Ui3Reader(QTextStream &outStream)
-   : out(outStream), trout(&languageChangeBody)
+Ui3Reader::Ui3Reader(QTextStream &outStream, unsigned options) :
+    m_options(options), out(outStream), trout(&languageChangeBody),
+    m_porting(new Porting), m_extractImages(false)
 {
-    m_porting = new Porting();
-    m_extractImages = false;
 }
 
 Ui3Reader::~Ui3Reader()
@@ -255,14 +253,13 @@
 
 void Ui3Reader::generate(const QString &fn, const QString &outputFn,
           QDomDocument doc, bool decl, bool subcl, const QString &trm,
-          const QString& subClass, bool omitForwardDecls, bool implicitIncludes, const QString &convertedUiFile)
+          const QString& subClass, const QString &convertedUiFile)
 {
     init();
 
     fileName = fn;
     outputFileName = outputFn;
     trmacro = trm;
-    nofwd = omitForwardDecls;
 
     QDomElement e = parse(doc);
 
@@ -281,21 +278,21 @@
             createSubImpl(e, subClass);
     } else {
         if (decl)
-            createFormDecl(e, implicitIncludes);
+            createFormDecl(e);
         else
             createFormImpl(e);
     }
 
 }
 
-void Ui3Reader::generateUi4(const QString &fn, const QString &outputFn, QDomDocument doc, bool implicitIncludes)
+void Ui3Reader::generateUi4(const QString &fn, const QString &outputFn, QDomDocument doc)
 {
     init();
 
     fileName = fn;
     outputFileName = outputFn;
 
-    DomUI *ui = generateUi4(parse(doc), implicitIncludes);
+    DomUI *ui = generateUi4(parse(doc));
     if (!ui)
         return;
 
@@ -317,11 +314,6 @@
     this->trmacro = trmacro;
 }
 
-void Ui3Reader::setForwardDeclarationsEnabled(bool b)
-{
-    nofwd = !b;
-}
-
 void Ui3Reader::setOutputFileName(const QString &fileName)
 {
     outputFileName = fileName;
--- a/src/tools/uic3/ui3reader.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/tools/uic3/ui3reader.h	Fri Mar 12 15:46:37 2010 +0200
@@ -68,23 +68,24 @@
 class Ui3Reader
 {
 public:
-    Ui3Reader(QTextStream &stream);
+    enum Options { CustomWidgetForwardDeclarations = 0x1, ImplicitIncludes = 0x2, PreserveLayoutNames = 0x4 };
+
+    explicit Ui3Reader(QTextStream &stream, unsigned options);
     ~Ui3Reader();
 
     void computeDeps(const QDomElement &e, QStringList &globalIncludes, QStringList &localIncludes, bool impl = false);
-    void generateUi4(const QString &fn, const QString &outputFn, QDomDocument doc, bool implicitIncludes);
+    void generateUi4(const QString &fn, const QString &outputFn, QDomDocument doc);
 
     void generate(const QString &fn, const QString &outputFn,
          QDomDocument doc, bool decl, bool subcl, const QString &trm,
-         const QString& subclname, bool omitForwardDecls, bool implicitIncludes, const QString &convertedUiFile);
+         const QString& subclname, const QString &convertedUiFile);
 
     void embed(const char *project, const QStringList &images);
 
     void setTrMacro(const QString &trmacro);
-    void setForwardDeclarationsEnabled(bool b);
     void setOutputFileName(const QString &fileName);
 
-    void createFormDecl(const QDomElement &e, bool implicitIncludes);
+    void createFormDecl(const QDomElement &e);
     void createFormImpl(const QDomElement &e);
 
     void createWrapperDecl(const QDomElement &e, const QString &convertedUiFile);
@@ -125,7 +126,7 @@
     void errorInvalidSlot(const QString &slot, const QString &widgetName, const QString &widgetClass,
                           int line, int col);
 
-    DomUI *generateUi4(const QDomElement &e, bool implicitIncludes);
+    DomUI *generateUi4(const QDomElement &e);
     DomWidget *createWidget(const QDomElement &w, const QString &widgetClass = QString());
     void createProperties(const QDomElement &e, QList<DomProperty*> *properties, const QString &className);
     void createAttributes(const QDomElement &e, QList<DomProperty*> *properties, const QString &className);
@@ -145,6 +146,8 @@
 
     void fixLayoutMargin(DomLayout *ui_layout);
 
+    const unsigned m_options;
+
     QTextStream &out;
     QTextOStream trout;
     QString languageChangeBody;
@@ -157,7 +160,6 @@
     QString formName;
     QString lastItem;
     QString trmacro;
-    bool nofwd;
 
     struct Buddy
     {
--- a/src/xml/dom/qdom.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/xml/dom/qdom.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -2596,11 +2596,15 @@
     already has an element node as a child, \a newChild is not added as
     a child and a null node is returned.
 
-    Calling this function on a null node(created, for example, with the
-    default constructor) does nothing.
-
-    The DOM specification disallow inserting attribute nodes, but due
-    to historical reasons QDom accept them nevertheless.
+    Returns a new reference to \a newChild on success or a \link
+    isNull() null node\endlink on failure.
+
+    Calling this function on a null node(created, for example, with
+    the default constructor) does nothing and returns a \link isNull()
+    null node\endlink.
+
+    The DOM specification disallow inserting attribute nodes, but for
+    historical reasons, QDom accepts them anyway.
 
     \sa insertBefore() insertAfter() replaceChild() removeChild()
 */
@@ -2969,7 +2973,7 @@
 }
 
 /*!
-    Returns the next sibilng element with tag name \a tagName if \a tagName
+    Returns the next sibling element with tag name \a tagName if \a tagName
     is non-empty; otherwise returns any next sibling element.
     Returns a null element if no such sibling exists.
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/cmdline_deeppath/lupdatecmd	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+cd ../../recursivescan
+lupdate sub/finddialog.cpp -ts project.ts
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/cmdline_deeppath/project.ts.result	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+    <name>FindDialog</name>
+    <message>
+        <location filename="sub/finddialog.cpp" line="57"/>
+        <source>Enter the text you want to find.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sub/finddialog.cpp" line="66"/>
+        <source>Search reached end of the document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sub/finddialog.cpp" line="68"/>
+        <source>Search reached start of the document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sub/finddialog.cpp" line="70"/>
+        <source>Text not found</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/cmdline_recurse/lupdatecmd	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+cd ../../recursivescan
+lupdate . -ts project.ts
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/cmdline_recurse/project.ts.result	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+    <name>FindDialog</name>
+    <message>
+        <location filename="project.ui" line="57"/>
+        <source>Qt Assistant - Finn text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="project.ui" line="60"/>
+        <source>Finn tekst</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sub/finddialog.cpp" line="57"/>
+        <source>Enter the text you want to find.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sub/finddialog.cpp" line="66"/>
+        <source>Search reached end of the document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sub/finddialog.cpp" line="68"/>
+        <source>Search reached start of the document</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="sub/finddialog.cpp" line="70"/>
+        <source>Text not found</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="main.cpp" line="53"/>
+        <source>
+newline at the start</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="54"/>
+        <source>newline at the end
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="55"/>
+        <source>newline and space at the end
+ </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="56"/>
+        <source>space and newline at the end 
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="57"/>
+        <source>	Tab at the start and newline at the end
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="58"/>
+        <source>
+	newline and tab at the start</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="59"/>
+        <source> 	space and tab at the start</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="60"/>
+        <source> space_first</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="main.cpp" line="61"/>
+        <source>space_last </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>text/c++</name>
+    <message>
+        <location filename="sub/filetypes/main.c++" line="47"/>
+        <source>test</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>text/cpp</name>
+    <message>
+        <location filename="sub/filetypes/main.cpp" line="47"/>
+        <source>test</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>text/cxx</name>
+    <message>
+        <location filename="sub/filetypes/main.cxx" line="47"/>
+        <source>test</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr3/expectedoutput.txt	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+lupdate warning: Codec for tr\(\) 'ISO-8859-1' disagrees with existing file's codec 'UTF-8'\. Expect trouble\.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr3/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,45 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+int main(int argc, char **argv)
+{
+    QObject::tr("hi");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr3/project.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,4 @@
+SOURCES += main.cpp
+
+TRANSLATIONS = project.ts
+CODECFORTR = latin1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr3/project.ts.before	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<defaultcodec>UTF-8</defaultcodec>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="main.cpp" line="44"/>
+        <source>hi</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr3/project.ts.result	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="main.cpp" line="44"/>
+        <source>hi</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr4/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,45 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+int main(int argc, char **argv)
+{
+    QObject::tr("hi");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr4/project.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,4 @@
+SOURCES += main.cpp
+
+TRANSLATIONS = project.ts
+CODECFORTR = latin2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr4/project.ts.before	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<defaultcodec>ISO-8859-2</defaultcodec>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="main.cpp" line="44"/>
+        <source>hi</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr4/project.ts.result	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<defaultcodec>ISO-8859-2</defaultcodec>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="main.cpp" line="44"/>
+        <source>hi</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/from_subdir/lupdatecmd	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+lupdate translations/translations.pro
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/from_subdir/project.ts.result	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+    <name>QApplication</name>
+    <message>
+        <location filename="src/main.cpp" line="49"/>
+        <source>string in main.cpp</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="src/main.h" line="45"/>
+        <source>string in main.h</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/from_subdir/src/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+// IMPORTANT!!!! If you want to add testdata to this file,
+// always add it to the end in order to not change the linenumbers of translations!!!
+
+#include "main.h"
+
+int main(char **argv, int argc)
+{
+     return QApplication::tr("string in main.cpp");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/from_subdir/src/main.h	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,45 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+// IMPORTANT!!!! If you want to add testdata to this file,
+// always add it to the end in order to not change the linenumbers of translations!!!
+
+QT_TRANSLATE_NOOP("QApplication", "string in main.h")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/from_subdir/translations/translations.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,7 @@
+VPATH = ../src
+INCLUDEPATH = ../src
+
+SOURCES += main.cpp
+HEADERS += main.h
+
+TRANSLATIONS += ../project.ts
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full/lupdatecmd	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+TRANSLATION: project.ts project_sub.ts
+cd ../../subdirs_full
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full/project.ts.result	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+    <name>subdir1</name>
+    <message>
+        <location filename="subdir1/main.cpp" line="45"/>
+        <source>minimal test</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>subsub1</name>
+    <message>
+        <location filename="subdir2/subsub1/main.cpp" line="45"/>
+        <source>minimal test</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full/project_sub.ts.result	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<defaultcodec>ISO-8859-2</defaultcodec>
+<context>
+    <name>subsub2</name>
+    <message>
+        <location filename="subdir2/subsub2/main.cpp" line="45"/>
+        <source>minimal test</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/expectedoutput.txt	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+lupdate warning: TS files from command line will override TRANSLATIONS in project\.pro\.
+lupdate warning: TS files from command line prevent recursing into .*/subdir2/subsub2/subsub2\.pro\.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/lupdatecmd	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,3 @@
+TRANSLATION: project.ts project_sub.ts
+cd ../../subdirs_full
+lupdate project.pro -ts project.ts
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full_ts/project.ts.result	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+    <name>subdir1</name>
+    <message>
+        <location filename="subdir1/main.cpp" line="45"/>
+        <source>minimal test</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>subsub1</name>
+    <message>
+        <location filename="subdir2/subsub1/main.cpp" line="45"/>
+        <source>minimal test</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full_ts_join/lupdatecmd	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+cd ../../subdirs_full
+lupdate subdir1/subdir1.pro subdir2/subsub1/subsub1.pro -ts project.ts
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_full_ts_join/project.ts.result	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+    <name>subdir1</name>
+    <message>
+        <location filename="subdir1/main.cpp" line="45"/>
+        <source>minimal test</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>subsub1</name>
+    <message>
+        <location filename="subdir2/subsub1/main.cpp" line="45"/>
+        <source>minimal test</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_part/expectedoutput.txt	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+lupdate warning: no TS files specified\. Only diagnostics will be produced for 'project\.pro'\.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_part/lupdatecmd	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+TRANSLATION: project.ts project_sub.ts
+cd ../../subdirs_part
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_part/project_sub.ts.result	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<defaultcodec>ISO-8859-2</defaultcodec>
+<context>
+    <name>subsub2</name>
+    <message>
+        <location filename="subdir2/subsub2/main.cpp" line="45"/>
+        <source>minimal test</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_part_ts/expectedoutput.txt	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+lupdate warning: TS files from command line prevent recursing into .*/subdir2/subsub2/subsub2\.pro\.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_part_ts/lupdatecmd	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,3 @@
+TRANSLATION: project.ts project_sub.ts
+cd ../../subdirs_part
+lupdate project.pro -ts project.ts
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/good/recurse_part_ts/project.ts.result	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+    <name>subdir1</name>
+    <message>
+        <location filename="subdir1/main.cpp" line="45"/>
+        <source>minimal test</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>subsub1</name>
+    <message>
+        <location filename="subdir2/subsub1/main.cpp" line="45"/>
+        <source>minimal test</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
--- a/tests/auto/linguist/lupdate/testdata/good/reloutput/lupdatecmd	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/linguist/lupdate/testdata/good/reloutput/lupdatecmd	Fri Mar 12 15:46:37 2010 +0200
@@ -1,2 +1,1 @@
 TRANSLATION: translations/project.ts
-lupdate project.pro -ts translations/project.ts
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/project.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,4 @@
+TEMPLATE = subdirs
+SUBDIRS = subdir1 subdir2/subdir2.pro
+
+TRANSLATIONS = project.ts
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/subdir1/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+
+QString foo()
+{
+	QCoreApplication::translate("subdir1","minimal test");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/subdir1/subdir1.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+SOURCES += main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subdir2.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS = subsub1 subsub2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subsub1/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+
+QString foo()
+{
+	QCoreApplication::translate("subsub1","minimal test");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subsub1/subsub1.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+SOURCES += main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subsub2/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+
+QString foo()
+{
+	QCoreApplication::translate("subsub2","minimal test");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_full/subdir2/subsub2/subsub2.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,4 @@
+SOURCES += main.cpp
+
+TRANSLATIONS = ../../project_sub.ts
+CODECFORTR = ISO-8859-2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/project.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS = subdir1 subdir2/subdir2.pro
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/subdir1/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+
+QString foo()
+{
+	QCoreApplication::translate("subdir1","minimal test");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/subdir1/subdir1.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+SOURCES += main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subdir2.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS = subsub1 subsub2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subsub1/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+
+QString foo()
+{
+	QCoreApplication::translate("subsub1","minimal test");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subsub1/subsub1.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+SOURCES += main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subsub2/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+
+QString foo()
+{
+	QCoreApplication::translate("subsub2","minimal test");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/linguist/lupdate/testdata/subdirs_part/subdir2/subsub2/subsub2.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,4 @@
+SOURCES += main.cpp
+
+TRANSLATIONS = ../../project_sub.ts
+CODECFORTR = ISO-8859-2
--- a/tests/auto/linguist/lupdate/tst_lupdate.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/linguist/lupdate/tst_lupdate.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -59,8 +59,6 @@
 private slots:
     void good_data();
     void good();
-    void commandline_data();
-    void commandline();
 #if CHECK_SIMTEXTH
     void simtexth();
     void simtexth_data();
@@ -245,10 +243,10 @@
 
     qDebug() << "Checking...";
 
-    QString generatedtsfile(dir + QLatin1String("/project.ts"));
+    QString workDir = dir;
+    QStringList generatedtsfiles(QLatin1String("project.ts"));
+    QString lupdatecmd;
 
-    // look for a command
-    QString lupdatecmd;
     QFile file(dir + "/lupdatecmd");
     if (file.exists()) {
         QVERIFY2(file.open(QIODevice::ReadOnly | QIODevice::Text), qPrintable(file.fileName()));
@@ -262,23 +260,32 @@
                 break;
             } else if (cmdstring.startsWith("TRANSLATION:")) {
                 cmdstring.remove(0, 12);
-                generatedtsfile = dir + QLatin1Char('/') + cmdstring.trimmed();
+                generatedtsfiles.clear();
+                foreach (const QByteArray &s, cmdstring.split(' '))
+                    if (!s.isEmpty())
+                        generatedtsfiles << s;
+            } else if (cmdstring.startsWith("cd ")) {
+                cmdstring.remove(0, 3);
+                workDir = QDir::cleanPath(dir + QLatin1Char('/') + cmdstring);
             }
         }
         file.close();
     }
 
-    QFile::remove(generatedtsfile);
-    QString beforetsfile = generatedtsfile + QLatin1String(".before");
-    if (QFile::exists(beforetsfile))
-        QVERIFY2(QFile::copy(beforetsfile, generatedtsfile), qPrintable(beforetsfile));
+    foreach (const QString &ts, generatedtsfiles) {
+        QString genTs = workDir + QLatin1Char('/') + ts;
+        QFile::remove(genTs);
+        QString beforetsfile = dir + QLatin1Char('/') + ts + QLatin1String(".before");
+        if (QFile::exists(beforetsfile))
+            QVERIFY2(QFile::copy(beforetsfile, genTs), qPrintable(beforetsfile));
+    }
 
     if (lupdatecmd.isEmpty())
         lupdatecmd = QLatin1String("project.pro");
     lupdatecmd.prepend("-silent ");
 
     QProcess proc;
-    proc.setWorkingDirectory(dir);
+    proc.setWorkingDirectory(workDir);
     proc.setProcessChannelMode(QProcess::MergedChannels);
     proc.start(m_cmdLupdate + ' ' + lupdatecmd, QIODevice::ReadWrite | QIODevice::Text);
     QVERIFY2(proc.waitForFinished(5000), qPrintable(lupdatecmd));
@@ -287,7 +294,7 @@
              "\"lupdate " + lupdatecmd.toLatin1() + "\" crashed\n" + output);
     QVERIFY2(!proc.exitCode(),
              "\"lupdate " + lupdatecmd.toLatin1() + "\" exited with code " +
-             QByteArray::number(proc.exitCode()) + "\n" + proc.readAll());
+             QByteArray::number(proc.exitCode()) + "\n" + output);
 
     // If the file expectedoutput.txt exists, compare the
     // console output with the content of that file
@@ -299,47 +306,9 @@
             return;
     }
 
-    QString expectedFile = generatedtsfile + QLatin1String(".result");
-    doCompare(generatedtsfile, expectedFile, false);
-}
-
-void tst_lupdate::commandline_data()
-{
-    QTest::addColumn<QString>("currentPath");
-    QTest::addColumn<QString>("commandline");
-    QTest::addColumn<QString>("generatedtsfile");
-    QTest::addColumn<QString>("expectedtsfile");
-
-    QTest::newRow("Recursive scan") << QString("recursivescan")
-       << QString(". -ts foo.ts") << QString("foo.ts") << QString("foo.ts.result");
-    QTest::newRow("Deep path argument") << QString("recursivescan")
-       << QString("sub/finddialog.cpp -ts bar.ts") << QString("bar.ts") << QString("bar.ts.result");
-}
-
-void tst_lupdate::commandline()
-{
-    QFETCH(QString, currentPath);
-    QFETCH(QString, commandline);
-    QFETCH(QString, generatedtsfile);
-    QFETCH(QString, expectedtsfile);
-
-    QString generated =
-        m_basePath + currentPath + QLatin1Char('/') + generatedtsfile;
-    QFile gen(generated);
-    if (gen.exists())
-        QVERIFY(gen.remove());
-    QProcess proc;
-    proc.setWorkingDirectory(m_basePath + currentPath);
-    proc.setProcessChannelMode(QProcess::MergedChannels);
-    proc.start(m_cmdLupdate + " -silent " + commandline, QIODevice::ReadWrite | QIODevice::Text);
-    QVERIFY2(proc.waitForFinished(5000), qPrintable(commandline));
-    QVERIFY2(proc.exitStatus() == QProcess::NormalExit,
-             "\"lupdate -silent " + commandline.toLatin1() + "\" crashed\n" + proc.readAll());
-    QVERIFY2(!proc.exitCode(),
-             "\"lupdate -silent " + commandline.toLatin1() + "\" exited with code " +
-             QByteArray::number(proc.exitCode()) + "\n" + proc.readAll());
-
-    doCompare(generated, m_basePath + currentPath + QLatin1Char('/') + expectedtsfile, false);
+    foreach (const QString &ts, generatedtsfiles)
+        doCompare(workDir + QLatin1Char('/') + ts,
+                  dir + QLatin1Char('/') + ts + QLatin1String(".result"), false);
 }
 
 #if CHECK_SIMTEXTH
--- a/tests/auto/maketestselftest/tst_maketestselftest.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/maketestselftest/tst_maketestselftest.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -92,6 +92,9 @@
     QStringList subdirs = dir.entryList(QDir::AllDirs|QDir::NoDotAndDotDot);
 
     foreach (const QString& subdir, subdirs) {
+        if (subdir == QString::fromLatin1("tmp")) {
+            continue;
+        }
         QTest::newRow(qPrintable(subdir)) << subdir;
     }
 }
--- a/tests/auto/qbytearray/tst_qbytearray.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qbytearray/tst_qbytearray.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -76,6 +76,7 @@
     void qCompress();
     void qUncompress_data();
     void qUncompress();
+    void qCompressionZeroTermination();
 #endif
     void constByteArray();
     void leftJustified();
@@ -261,6 +262,14 @@
     }
     QCOMPARE(res, out);
 }
+
+void tst_QByteArray::qCompressionZeroTermination()
+{
+    QString s = "Hello, I'm a string.";
+    QByteArray ba = ::qUncompress(::qCompress(s.toLocal8Bit()));
+    QVERIFY((int) *(ba.data() + ba.size()) == 0);
+}
+
 #endif
 
 void tst_QByteArray::constByteArray()
--- a/tests/auto/qdatetime/tst_qdatetime.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qdatetime/tst_qdatetime.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -147,9 +147,16 @@
 
 tst_QDateTime::tst_QDateTime()
 {
+#ifdef Q_OS_SYMBIAN
+    // Symbian's timezone server cannot handle DST correctly for dates before year 1997
+    uint x1 = QDateTime(QDate(2000, 1, 1), QTime()).toTime_t();
+    uint x2 = QDateTime(QDate(2000, 6, 1), QTime()).toTime_t();
+    europeanTimeZone = (x1 == 946681200 && x2 == 959810400);
+#else
     uint x1 = QDateTime(QDate(1990, 1, 1), QTime()).toTime_t();
     uint x2 = QDateTime(QDate(1990, 6, 1), QTime()).toTime_t();
     europeanTimeZone = (x1 == 631148400 && x2 == 644191200);
+#endif
 }
 
 tst_QDateTime::~tst_QDateTime()
--- a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -71,6 +71,7 @@
     void colorize();
     void drawPixmapItem();
     void deviceCoordinateTranslateCaching();
+    void inheritOpacity();
 };
 
 void tst_QGraphicsEffect::initTestCase()
@@ -79,8 +80,8 @@
 class CustomItem : public QGraphicsRectItem
 {
 public:
-    CustomItem(qreal x, qreal y, qreal width, qreal height)
-        : QGraphicsRectItem(x, y, width, height), numRepaints(0),
+    CustomItem(qreal x, qreal y, qreal width, qreal height, QGraphicsItem *parent = 0)
+        : QGraphicsRectItem(x, y, width, height, parent), numRepaints(0),
           m_painter(0), m_styleOption(0)
     {}
 
@@ -560,6 +561,35 @@
     QVERIFY(item->numRepaints == numRepaints);
 }
 
+void tst_QGraphicsEffect::inheritOpacity()
+{
+    QGraphicsScene scene;
+    QGraphicsRectItem *rectItem = new QGraphicsRectItem(0, 0, 10, 10);
+    CustomItem *item = new CustomItem(0, 0, 10, 10, rectItem);
+
+    scene.addItem(rectItem);
+
+    item->setGraphicsEffect(new DeviceEffect);
+    item->setPen(Qt::NoPen);
+    item->setBrush(Qt::red);
+
+    rectItem->setOpacity(0.5);
+
+    QGraphicsView view(&scene);
+    view.show();
+    QTest::qWaitForWindowShown(&view);
+
+    QTRY_VERIFY(item->numRepaints >= 1);
+
+    int numRepaints = item->numRepaints;
+
+    rectItem->setOpacity(1);
+    QTest::qWait(50);
+
+    // item should have been rerendered due to opacity changing
+    QTRY_VERIFY(item->numRepaints > numRepaints);
+}
+
 QTEST_MAIN(tst_QGraphicsEffect)
 #include "tst_qgraphicseffect.moc"
 
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -316,6 +316,7 @@
     void childrenBoundingRectTransformed();
     void childrenBoundingRect2();
     void childrenBoundingRect3();
+    void childrenBoundingRect4();
     void group();
     void setGroup();
     void setGroup2();
@@ -417,6 +418,7 @@
     void task197802_childrenVisibility();
     void QTBUG_4233_updateCachedWithSceneRect();
     void QTBUG_5418_textItemSetDefaultColor();
+    void QTBUG_6738_missingUpdateWithSetParent();
 
 private:
     QList<QGraphicsItem *> paintedItems;
@@ -3257,6 +3259,32 @@
     QCOMPARE(subTreeRect.height(), qreal(251.7766952966369));
 }
 
+void tst_QGraphicsItem::childrenBoundingRect4()
+{
+    QGraphicsScene scene;
+
+    QGraphicsRectItem *rect = scene.addRect(QRectF(0, 0, 10, 10));
+    QGraphicsRectItem *rect2 = scene.addRect(QRectF(0, 0, 20, 20));
+    QGraphicsRectItem *rect3 = scene.addRect(QRectF(0, 0, 30, 30));
+    rect2->setParentItem(rect);
+    rect3->setParentItem(rect);
+
+    QGraphicsView view(&scene);
+    view.show();
+
+    QTest::qWaitForWindowShown(&view);
+
+    // Try to mess up the cached bounding rect.
+    rect->childrenBoundingRect();
+    rect2->childrenBoundingRect();
+
+    rect3->setOpacity(0.0);
+    rect3->setParentItem(rect2);
+
+    QCOMPARE(rect->childrenBoundingRect(), rect3->boundingRect());
+    QCOMPARE(rect2->childrenBoundingRect(), rect3->boundingRect());
+}
+
 void tst_QGraphicsItem::group()
 {
     QGraphicsScene scene;
@@ -9869,5 +9897,63 @@
     QCOMPARE(i->painted, 0); //same color as before should not trigger an update (QTBUG-6242)
 }
 
+void tst_QGraphicsItem::QTBUG_6738_missingUpdateWithSetParent()
+{
+    // In all 3 test cases below the reparented item should disappear
+    EventTester *parent = new EventTester;
+    EventTester *child = new EventTester(parent);
+    EventTester *child2 = new EventTester(parent);
+    EventTester *child3 = new EventTester(parent);
+    EventTester *child4 = new EventTester(parent);
+
+    child->setPos(10, 10);
+    child2->setPos(20, 20);
+    child3->setPos(30, 30);
+    child4->setPos(40, 40);
+
+    QGraphicsScene scene;
+    scene.addItem(parent);
+
+    class MyGraphicsView : public QGraphicsView
+    { public:
+        int repaints;
+        QRegion paintedRegion;
+        MyGraphicsView(QGraphicsScene *scene) : QGraphicsView(scene), repaints(0) {}
+        void paintEvent(QPaintEvent *e)
+        {
+            ++repaints;
+            paintedRegion += e->region();
+            QGraphicsView::paintEvent(e);
+        }
+        void reset() { repaints = 0; paintedRegion = QRegion(); }
+    };
+
+    MyGraphicsView view(&scene);
+    view.show();
+    QTest::qWaitForWindowShown(&view);
+    QTRY_VERIFY(view.repaints > 0);
+
+    // test case #1
+    view.reset();
+    child2->setVisible(false);
+    child2->setParentItem(child);
+
+    QTRY_VERIFY(view.repaints == 1);
+
+    // test case #2
+    view.reset();
+    child3->setOpacity(0.0);
+    child3->setParentItem(child);
+
+    QTRY_VERIFY(view.repaints == 1);
+
+    // test case #3
+    view.reset();
+    child4->setParentItem(child);
+    child4->setVisible(false);
+
+    QTRY_VERIFY(view.repaints == 1);
+}
+
 QTEST_MAIN(tst_QGraphicsItem)
 #include "tst_qgraphicsitem.moc"
--- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -270,6 +270,7 @@
     void initialFocus_data();
     void initialFocus();
     void polishItems();
+    void polishItems2();
     void isActive();
     void siblingIndexAlwaysValid();
 
@@ -3942,14 +3943,23 @@
 class PolishItem : public QGraphicsTextItem
 {
 public:
-    PolishItem(QGraphicsItem *parent = 0) : QGraphicsTextItem(parent) { }
-
+    PolishItem(QGraphicsItem *parent = 0)
+        : QGraphicsTextItem(parent), polished(false), deleteChildrenInPolish(true), addChildrenInPolish(false) { }
+
+    bool polished;
+    bool deleteChildrenInPolish;
+    bool addChildrenInPolish;
 protected:
     QVariant itemChange(GraphicsItemChange change, const QVariant& value)
     {
         if (change == ItemVisibleChange) {
-            if (value.toBool())
+            polished = true;
+            if (deleteChildrenInPolish)
                 qDeleteAll(childItems());
+            if (addChildrenInPolish) {
+                for (int i = 0; i < 10; ++i)
+                    new PolishItem(this);
+            }
         }
         return QGraphicsItem::itemChange(change, value);
     }
@@ -3966,6 +3976,35 @@
     QMetaObject::invokeMethod(&scene,"_q_polishItems");
 }
 
+void tst_QGraphicsScene::polishItems2()
+{
+    QGraphicsScene scene;
+    PolishItem *item = new PolishItem;
+    item->addChildrenInPolish = true;
+    item->deleteChildrenInPolish = true;
+    // These children should be deleted in the polish.
+    for (int i = 0; i < 20; ++i)
+        new PolishItem(item);
+    scene.addItem(item);
+
+    // Wait for the polish event to be delivered.
+    QVERIFY(!item->polished);
+    QApplication::sendPostedEvents(&scene, QEvent::MetaCall);
+    QVERIFY(item->polished);
+
+    // We deleted the children we added above, but we also
+    // added 10 new children. These should be polished in the next
+    // event loop iteration.
+    QList<QGraphicsItem *> children = item->childItems();
+    QCOMPARE(children.count(), 10);
+    foreach (QGraphicsItem *child, children)
+        QVERIFY(!static_cast<PolishItem *>(child)->polished);
+
+    QApplication::sendPostedEvents(&scene, QEvent::MetaCall);
+    foreach (QGraphicsItem *child, children)
+        QVERIFY(static_cast<PolishItem *>(child)->polished);
+}
+
 void tst_QGraphicsScene::isActive()
 {
     QGraphicsScene scene1;
--- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -163,6 +163,7 @@
     void addChildInpolishEvent();
     void polishEvent();
     void polishEvent2();
+    void initialShow();
 
     // Task fixes
     void task236127_bspTreeIndexFails();
@@ -2856,6 +2857,30 @@
     QVERIFY(widget->events.contains(QEvent::Polish));
 }
 
+void tst_QGraphicsWidget::initialShow()
+{
+    class MyGraphicsWidget : public QGraphicsWidget
+    { public:
+        MyGraphicsWidget() : repaints(0) {}
+        int repaints;
+        void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget*) { ++repaints; }
+        void polishEvent() { update(); }
+    };
+
+    QGraphicsScene scene;
+    MyGraphicsWidget *widget = new MyGraphicsWidget;
+
+    QGraphicsView view(&scene);
+    view.show();
+    QTest::qWaitForWindowShown(&view);
+
+    QTest::qWait(100);
+    scene.addItem(widget);
+    QTest::qWait(100);
+
+    QCOMPARE(widget->repaints, 1);
+}
+
 void tst_QGraphicsWidget::QT_BUG_6544_tabFocusFirstUnsetWhenRemovingItems()
 {
     QGraphicsScene scene;
Binary file tests/auto/qimagereader/baseline/35floppy.png has changed
Binary file tests/auto/qimagereader/baseline/connect.png has changed
Binary file tests/auto/qimagereader/baseline/kde_favicon.png has changed
Binary file tests/auto/qimagereader/baseline/semitransparent.png has changed
--- a/tests/auto/qimagereader/tst_qimagereader.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qimagereader/tst_qimagereader.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1633,7 +1633,8 @@
 
     QTest::newRow("floppy (16px,32px - 16 colors)") << "35floppy.ico";
     QTest::newRow("semitransparent") << "semitransparent.ico";
-    QTest::newRow("slightlybroken") << "kde_favicon.ico";
+    QTest::newRow("slightlybrokenBMPHeader") << "kde_favicon.ico";
+    QTest::newRow("sightlybrokenIconHeader") << "connect.ico";
 }
 
 void tst_QImageReader::pixelCompareWithBaseline()
@@ -1641,14 +1642,20 @@
     QFETCH(QString, fileName);
 
     QImage icoImg;
+    const QString inputFileName(QString::fromAscii("images/%1").arg(fileName));
+    QFileInfo fi(inputFileName);
+
     // might fail if the plugin does not exist, which is ok.
-    if (icoImg.load(QString::fromAscii("images/%1").arg(fileName))) {
-        QString baselineFileName = QString::fromAscii("baseline/%1").arg(fileName);
+    if (icoImg.load(inputFileName)) {
+        icoImg = icoImg.convertToFormat(QImage::Format_ARGB32_Premultiplied);
+        const QString baselineFileName(QString::fromAscii("baseline/%1.png").arg(fi.baseName()));
 #if 0
         icoImg.save(baselineFileName);
 #else
         QImage baseImg;
         QVERIFY(baseImg.load(baselineFileName));
+        baseImg = baseImg.convertToFormat(QImage::Format_ARGB32_Premultiplied);
+        QCOMPARE(int(baseImg.format()), int(icoImg.format()));
         QCOMPARE(baseImg, icoImg);
 #endif
     }
--- a/tests/auto/qpixmap/tst_qpixmap.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qpixmap/tst_qpixmap.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -145,9 +145,11 @@
     void fromWinHICON();
 #endif
 
-#if defined(Q_WS_S60)
+#if defined(Q_OS_SYMBIAN)
     void fromSymbianCFbsBitmap_data();
     void fromSymbianCFbsBitmap();
+    void toSymbianCFbsBitmap_data();
+    void toSymbianCFbsBitmap();
 #endif
 
     void onlyNullPixmapsOutsideGuiThread();
@@ -1110,7 +1112,7 @@
 
 #endif // Q_WS_WIN
 
-#if defined(Q_WS_S60)
+#if defined(Q_OS_SYMBIAN)
 Q_DECLARE_METATYPE(TDisplayMode)
 
 void tst_QPixmap::fromSymbianCFbsBitmap_data()
@@ -1206,6 +1208,45 @@
 
     CleanupStack::PopAndDestroy(3);
 }
+
+void tst_QPixmap::toSymbianCFbsBitmap_data()
+{
+    QTest::addColumn<int>("red");
+    QTest::addColumn<int>("green");
+    QTest::addColumn<int>("blue");
+
+    QTest::newRow("red")   << 255 << 0 << 0;
+    QTest::newRow("green") << 0 << 255 << 0;
+    QTest::newRow("blue")  << 0 << 0 << 255;
+}
+
+void tst_QPixmap::toSymbianCFbsBitmap()
+{
+    QFETCH(int, red);
+    QFETCH(int, green);
+    QFETCH(int, blue);
+
+    QPixmap pm(100, 100);
+    pm.fill(QColor(red, green, blue));
+
+    CFbsBitmap *bitmap = pm.toSymbianCFbsBitmap();
+
+    QVERIFY(bitmap != 0);
+
+    // Verify size
+    QCOMPARE(100, (int) bitmap->SizeInPixels().iWidth);
+    QCOMPARE(100, (int) bitmap->SizeInPixels().iHeight);
+
+    // Verify pixel color
+    TRgb pixel;
+    bitmap->GetPixel(pixel, TPoint(0,0));
+    QCOMPARE((int)pixel.Red(), red);
+    QCOMPARE((int)pixel.Green(), green);
+    QCOMPARE((int)pixel.Blue(), blue);
+
+    // Clean up
+    delete bitmap;
+}
 #endif
 
 void tst_QPixmap::onlyNullPixmapsOutsideGuiThread()
--- a/tests/auto/qscriptvalue/qscriptvalue.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qscriptvalue/qscriptvalue.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -1,5 +1,7 @@
 load(qttest_p4)
 QT = core gui script
 SOURCES  += tst_qscriptvalue.cpp
+HEADERS  += tst_qscriptvalue.h
 
-
+# Generated by testgen
+SOURCES  += tst_qscriptvalue_generated.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/testgen/data.txt	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,116 @@
+# Data set for QScriptValue autotest.
+
+# Each line is a c++ code that should return a QScriptValue object.
+# Lines that are empty or start with '#' will be ignored
+
+QScriptValue()
+
+#Unbound values
+QScriptValue(QScriptValue::UndefinedValue)
+QScriptValue(QScriptValue::NullValue)
+QScriptValue(true)
+QScriptValue(false)
+QScriptValue(int(122))
+QScriptValue(uint(124))
+QScriptValue(0)
+QScriptValue(0.0)
+QScriptValue(123.0)
+QScriptValue(6.37e-8)
+QScriptValue(-6.37e-8)
+QScriptValue(0x43211234)
+QScriptValue(0x10000)
+QScriptValue(0x10001)
+QScriptValue(qSNaN())
+QScriptValue(qQNaN())
+QScriptValue(qInf())
+QScriptValue(-qInf())
+QScriptValue("NaN")
+QScriptValue("Infinity")
+QScriptValue("-Infinity")
+QScriptValue("ciao")
+QScriptValue(QString::fromLatin1("ciao"))
+QScriptValue(QString(""))
+QScriptValue(QString())
+QScriptValue(QString("0"))
+QScriptValue(QString("123"))
+QScriptValue(QString("12.4"))
+
+#Unbound values (bound to a null engine)
+QScriptValue(0, QScriptValue::UndefinedValue)
+QScriptValue(0, QScriptValue::NullValue)
+QScriptValue(0, true)
+QScriptValue(0, false)
+QScriptValue(0, int(122))
+QScriptValue(0, uint(124))
+QScriptValue(0, 0)
+QScriptValue(0, 0.0)
+QScriptValue(0, 123.0)
+QScriptValue(0, 6.37e-8)
+QScriptValue(0, -6.37e-8)
+QScriptValue(0, 0x43211234)
+QScriptValue(0, 0x10000)
+QScriptValue(0, 0x10001)
+QScriptValue(0, qSNaN())
+QScriptValue(0, qQNaN())
+QScriptValue(0, qInf())
+QScriptValue(0, -qInf())
+QScriptValue(0, "NaN")
+QScriptValue(0, "Infinity")
+QScriptValue(0, "-Infinity")
+QScriptValue(0, "ciao")
+QScriptValue(0, QString::fromLatin1("ciao"))
+QScriptValue(0, QString(""))
+QScriptValue(0, QString())
+QScriptValue(0, QString("0"))
+QScriptValue(0, QString("123"))
+QScriptValue(0, QString("12.3"))
+
+#Bound values
+QScriptValue(engine, QScriptValue::UndefinedValue)
+QScriptValue(engine, QScriptValue::NullValue)
+QScriptValue(engine, true)
+QScriptValue(engine, false)
+QScriptValue(engine, int(122))
+QScriptValue(engine, uint(124))
+QScriptValue(engine, 0)
+QScriptValue(engine, 0.0)
+QScriptValue(engine, 123.0)
+QScriptValue(engine, 6.37e-8)
+QScriptValue(engine, -6.37e-8)
+QScriptValue(engine, 0x43211234)
+QScriptValue(engine, 0x10000)
+QScriptValue(engine, 0x10001)
+QScriptValue(engine, qSNaN())
+QScriptValue(engine, qQNaN())
+QScriptValue(engine, qInf())
+QScriptValue(engine, -qInf())
+QScriptValue(engine, "NaN")
+QScriptValue(engine, "Infinity")
+QScriptValue(engine, "-Infinity")
+QScriptValue(engine, "ciao")
+QScriptValue(engine, QString::fromLatin1("ciao"))
+QScriptValue(engine, QString(""))
+QScriptValue(engine, QString())
+QScriptValue(engine, QString("0"))
+QScriptValue(engine, QString("123"))
+QScriptValue(engine, QString("1.23"))
+
+# evaluate
+engine->evaluate("[]")
+engine->evaluate("{}")
+engine->evaluate("Object.prototype")
+engine->evaluate("Date.prototype")
+engine->evaluate("Array.prototype")
+engine->evaluate("Function.prototype")
+engine->evaluate("Error.prototype")
+engine->evaluate("Object")
+engine->evaluate("Array")
+engine->evaluate("Number")
+engine->evaluate("Function")
+engine->evaluate("(function() { return 1; })")
+engine->evaluate("(function() { return 'ciao'; })")
+engine->evaluate("(function() { throw new Error('foo'); })")
+engine->evaluate("/foo/")
+engine->evaluate("new Object()")
+engine->evaluate("new Array()")
+engine->evaluate("new Error()")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/testgen/gen.py	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,242 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+#Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
+
+## $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$
+
+from __future__ import with_statement
+from string import Template
+
+class Options():
+  """Option manager. It parse and check all paramteres, set internal variables."""
+  def __init__(self, args):
+    import logging as log
+    log.basicConfig()
+    #comand line options parser
+    from optparse import OptionParser
+    #load some directory searching stuff
+    import os.path, sys
+      
+    opt = OptionParser("%prog [options] path_to_input_file path_to_output_file.")
+    
+    self._o, self._a = opt.parse_args(args)
+
+    try:
+      if not (os.path.exists(self._a[0])):
+        raise Exception("Path doesn't exist")
+      if len(self._a) != 2:
+        raise IndexError("Only two files!")
+      self._o.ipath = self._a[0]
+      self._o.opath = self._a[1]
+    except IndexError:
+      log.error("Bad usage. Please try -h or --help")
+      sys.exit(1)
+    except Exception:
+      log.error("Path '" + self._a[0] + " or " + self._a[1] + "' don't exist")
+      sys.exit(2)
+
+  def __getattr__(self, attr):
+    """map all options properties into this object (remove one level of indirection)"""
+    return getattr(self._o, attr)
+
+
+mainTempl = Template("""/*
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+////////////////////////////////////////////////////////////////
+// THIS FILE IS AUTOGENERATED, ALL MODIFICATIONS WILL BE LAST //
+////////////////////////////////////////////////////////////////
+
+#include "testgenerator.h"
+
+#include <QtCore/qdatastream.h>
+#include <QtCore/qdatetime.h>
+#include <QtCore/qdebug.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qnumeric.h>
+#include <QtCore/qvariant.h>
+#include <QtCore/qvector.h>
+#include <QtScript/qscriptvalue.h>
+#include <QtScript/qscriptengine.h>
+
+
+
+typedef bool (QScriptValue::*ComparisionType) (const QScriptValue&) const;
+static QVector<bool> compare(ComparisionType compare, QScriptValue value, const QScriptValueList& values) {
+    QVector<bool> result;
+    result.reserve(${count});
+
+    QScriptValueList::const_iterator i = values.constBegin();
+    for (; i != values.constEnd(); ++i) {
+        result << (value.*compare)(*i);
+    }
+    return result;
+}
+
+static void dump(QDataStream& out, QScriptValue& value, const QString& expression, const QScriptValueList& allValues)
+{
+        out << QString(expression);
+        
+        out << value.isValid();
+        out << value.isBool();
+        out << value.isBoolean();
+        out << value.isNumber();
+        out << value.isFunction();
+        out << value.isNull();
+        out << value.isString();
+        out << value.isUndefined();
+        out << value.isVariant();
+        out << value.isQObject();
+        out << value.isQMetaObject();
+        out << value.isObject();
+        out << value.isDate();
+        out << value.isRegExp();
+        out << value.isArray();
+        out << value.isError();
+
+        out << value.toString();
+        out << value.toNumber();
+        out << value.toBool();
+        out << value.toBoolean();
+        out << value.toInteger();
+        out << value.toInt32();
+        out << value.toUInt32();
+        out << value.toUInt16();
+
+        out << compare(&QScriptValue::equals, value, allValues);
+        out << compare(&QScriptValue::strictlyEquals, value, allValues);
+        out << compare(&QScriptValue::lessThan, value, allValues);
+        out << compare(&QScriptValue::instanceOf, value, allValues);
+
+        out << qscriptvalue_cast<QString>(value);
+        out << qscriptvalue_cast<qsreal>(value);
+        out << qscriptvalue_cast<bool>(value);
+        out << qscriptvalue_cast<qint32>(value);
+        out << qscriptvalue_cast<quint32>(value);
+        out << qscriptvalue_cast<quint16>(value);
+}
+
+void TestGenerator::prepareData()
+{
+    QScriptEngine* engine = new QScriptEngine;
+
+    QScriptValueList allValues;
+    allValues << ${values};
+    QVector<QString> allDataTags;
+    allDataTags.reserve(${count});
+    allDataTags << ${dataTags};
+    QDataStream out(&m_tempFile);
+    out << allDataTags;
+
+    for(unsigned i = 0; i < ${count}; ++i)
+      dump(out, allValues[i], allDataTags[i], allValues);
+
+    delete engine;
+}
+""")
+qsvTempl = Template("""
+    {
+        QScriptValue value = ${expr};
+        dump(out, value, "${expr_esc}", allValues);
+    }""")
+
+
+
+if __name__ == '__main__':
+  import sys
+  o = Options(sys.argv[1:])
+  out = []
+  qsv = []
+  # load input file
+  with open(o.ipath) as f:
+    for row in f.readlines():
+      qsv.append(row)
+
+  #skip comments and empty lines
+  qsv = filter(lambda w: len(w.strip()) and not w.startswith('#'), qsv)
+  
+  escape = lambda w: w.replace('\\','\\\\').replace('"','\\"')
+  
+  for row in qsv:
+    row = row.replace('\n','')
+    row_esc = escape(row)
+    out.append(qsvTempl.substitute(expr = row, expr_esc = row_esc))
+
+  result = mainTempl.substitute(dump= "".join(out) \
+                              , values = (11 * ' ' + '<< ').join(qsv) \
+                              , count = len(qsv) \
+                              , dataTags = (11 * ' ' + '<< ').join(map(lambda w: '"' + escape(w.replace('\n','')) + '"\n', qsv)))
+
+  with open(o.opath, 'w') as f:
+    f.write(result)
+
+  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/testgen/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** 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 "testgenerator.h"
+#include <QtCore/qdebug.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qstringlist.h>
+#include <QtCore/QCoreApplication>
+
+int main(int argc, char *argv[])
+{
+    QCoreApplication a(argc, argv);
+
+    if (argc != 2) {
+        qWarning() << "./prog outputfile";
+        exit(1);
+    }
+
+    //Procced
+    TestGenerator gen(a.arguments()[1]);
+    gen.run();
+
+    return 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/testgen/testgen.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,18 @@
+QT += core script
+TARGET = testgen
+CONFIG += console
+CONFIG -= app_bundle
+TEMPLATE = app
+
+SOURCES += main.cpp \
+    testgenerator.cpp
+HEADERS += testgenerator.h
+
+
+INPUT_DATASET = data.txt
+dataset.name = Generating QScraiptValue autotest's dataset
+dataset.output = autogenerated.cpp
+dataset.commands = python gen.py data.txt autogenerated.cpp
+dataset.input = INPUT_DATASET
+dataset.variable_out = SOURCES
+QMAKE_EXTRA_COMPILERS += dataset
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/testgen/testgenerator.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,688 @@
+/****************************************************************************
+**
+** 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 "testgenerator.h"
+
+#include <QtCore/qdatastream.h>
+#include <QtCore/qdatetime.h>
+#include <QtCore/qdebug.h>
+#include <QtCore/qnumeric.h>
+#include <QtCore/qstringlist.h>
+#include <QtCore/qtextstream.h>
+#include <QtCore/qvariant.h>
+#include <QtScript/qscriptvalue.h>
+
+void TestGenerator::save(const QString& data)
+{
+    QTextStream out(&m_ofile);
+    out << data;
+}
+
+static QString escape(QString txt)
+{
+    return txt.replace("\\","\\\\").replace("\"","\\\"").replace("\n","\\n");
+}
+
+template<typename T>
+QString prepareToInsert(T value) {return QString::fromAscii("\"") + escape(value) + "\"";}
+template<>
+QString prepareToInsert<qsreal>(qsreal value)
+{
+    if (qIsNaN(value))
+        return "qQNaN()";
+    if (qIsInf(value))
+        return "qInf()";
+    return QString::number(value, 'g', 16);
+}
+template<>
+QString prepareToInsert<qint32>(qint32 value) {return QString::number(value);}
+template<>
+QString prepareToInsert<quint32>(quint32 value) {return QString::number(value);}
+template<>
+QString prepareToInsert<quint16>(quint16 value) {return QString::number(value);}
+template<>
+QString prepareToInsert<bool>(bool value) {return value ? "true" : "false";}
+template<>
+QString prepareToInsert<QString>(QString value) {return QString::fromAscii("\"") + escape(value) + "\"";}
+
+template<typename T>
+QString typeName() {return QString();}
+template<>
+QString typeName<qsreal>() {return "qsreal";}
+template<>
+QString typeName<qint32>() {return "qint32";}
+template<>
+QString typeName<quint32>() {return "quint32";}
+template<>
+QString typeName<quint16>() {return "quint16";}
+template<>
+QString typeName<bool>() {return "bool";}
+template<>
+QString typeName<QString>() {return "QString";}
+
+static QString generateIsXXXDef(const QString& name, const QList<QString>& list)
+{
+    static const QString templ("void tst_QScriptValue::%1_initData()\n"\
+                               "{\n"\
+                               "    QTest::addColumn<bool>(\"expected\");\n"\
+                               "    initScriptValues();\n"\
+                               "}\n"\
+                               "\n"\
+                               "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
+                               "{\n"\
+                               "    static QSet<QString> %1;\n"\
+                               "    if (%1.isEmpty()) {\n"\
+                               "        %1%2\n"\
+                               "    }\n"\
+                               "    newRow(expr) << %1.contains(expr);\n"\
+                               "}\n"\
+                               "\n"\
+                               "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
+                               "{\n"\
+                               "    QFETCH(bool, expected);\n"\
+                               "    QCOMPARE(value.%1(), expected);\n"\
+                               "}\n"\
+                               "\n"\
+                               "DEFINE_TEST_FUNCTION(%1)\n"\
+                               "\n");
+
+    if (!list.size()) {
+        qWarning() << name << ": nothing to add!" ;
+        return QString();
+    }
+
+    QString result = templ;
+    QStringList set;
+    foreach(QString t, list) {
+        t = escape(t);
+        t.append('\"');
+        t.prepend('\"');
+        set.append(QString(" << "));
+        set.append(t);
+        set.append("\n               ");
+    }
+    set.append(";");
+    return result.arg(name, set.join(QString()));
+}
+
+template<typename T>
+static QString generateToXXXDef(const QString& name, const QList<QPair<QString, T> >& list)
+{
+    static const QString templ = "\n"\
+                                 "void tst_QScriptValue::%1_initData()\n"\
+                                 "{\n"\
+                                 "    QTest::addColumn<%2>(\"expected\");\n"\
+                                 "    initScriptValues();\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
+                                 "{\n"\
+                                 "    static QHash<QString, %2> %1;\n"\
+                                 "    if (%1.isEmpty()) {\n"\
+                                 "%3"\
+                                 "    }\n"\
+                                 "    newRow(expr) << %1.value(expr);\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
+                                 "{\n"\
+                                 "    QFETCH(%2, expected);\n"\
+                                 "    QCOMPARE(value.%1(), expected);\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "DEFINE_TEST_FUNCTION(%1)\n";
+    QString result = templ;
+
+    typename QList<QPair<QString, T> >::const_iterator i = list.constBegin();
+    QStringList set;
+    for(; i != list.constEnd(); ++i) {
+        QPair<QString, T> t = *i;
+        t.first = escape(t.first);
+        set.append(QString("        "));
+        set.append(name);
+        set.append(".insert(\"");
+        set.append(t.first);
+        set.append(QString::fromAscii("\", "));
+        set.append(prepareToInsert<T>(t.second));
+        set.append(QString::fromAscii(");\n"));
+    }
+    return result.arg(name, typeName<T>(), set.join(QString()));
+}
+
+
+template<>
+QString generateToXXXDef<qsreal>(const QString& name, const QList<QPair<QString, qsreal> >& list)
+{
+    static const QString templ = "\n"\
+                                 "void tst_QScriptValue::%1_initData()\n"\
+                                 "{\n"\
+                                 "    QTest::addColumn<%2>(\"expected\");\n"\
+                                 "    initScriptValues();\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "void tst_QScriptValue::%1_makeData(const char* expr)\n"\
+                                 "{\n"\
+                                 "    static QHash<QString, %2> %1;\n"\
+                                 "    if (%1.isEmpty()) {\n"\
+                                 "%3"\
+                                 "    }\n"\
+                                 "    newRow(expr) << %1.value(expr);\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "void tst_QScriptValue::%1_test(const char*, const QScriptValue& value)\n"\
+                                 "{\n"\
+                                 "    QFETCH(%2, expected);\n"\
+                                 "%666"
+                                 "    if (qIsInf(expected)) {\n"\
+                                 "        QVERIFY(qIsInf(value.%1()));\n"\
+                                 "        return;\n"\
+                                 "    }\n"\
+                                 "    QCOMPARE(value.%1(), expected);\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "DEFINE_TEST_FUNCTION(%1)\n";
+    QString result = templ;
+
+    QList<QPair<QString, qsreal> >::const_iterator i = list.constBegin();
+    QStringList set;
+    for(; i != list.constEnd(); ++i) {
+        QPair<QString, qsreal> t = *i;
+        t.first = escape(t.first);
+        set.append(QString("        "));
+        set.append(name);
+        set.append(".insert(\"");
+        set.append(t.first);
+        set.append(QString::fromAscii("\", "));
+        set.append(prepareToInsert<qsreal>(t.second));
+        set.append(QString::fromAscii(");\n"));
+    }
+    // toInteger shouldn't return NaN, so it would be nice to catch the case.
+    QString hook;
+    if (name == "toNumber") {
+        hook =
+        "    if (qIsNaN(expected)) {\n"\
+        "        QVERIFY(qIsNaN(value.toNumber()));\n"\
+        "        return;\n"\
+        "    }\n";
+    }
+    return result.arg(name, typeName<qsreal>(), set.join(QString()), hook);
+}
+
+template<typename T>
+static QString generateCastDef(const QList<QPair<QString, T> >& list)
+{
+    static const QString templ = "\n"\
+                                 "void tst_QScriptValue::qscriptvalue_cast%2_initData()\n"\
+                                 "{\n"\
+                                 "    QTest::addColumn<%2>(\"expected\");\n"\
+                                 "    initScriptValues();\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "void tst_QScriptValue::qscriptvalue_cast%2_makeData(const char* expr)\n"\
+                                 "{\n"\
+                                 "    static QHash<QString, %2> value;\n"\
+                                 "    if (value.isEmpty()) {\n"\
+                                 "%3"\
+                                 "    }\n"\
+                                 "    newRow(expr) << value.value(expr);\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "void tst_QScriptValue::qscriptvalue_cast%2_test(const char*, const QScriptValue& value)\n"\
+                                 "{\n"\
+                                 "    QFETCH(%2, expected);\n"\
+                                 "    QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "DEFINE_TEST_FUNCTION(qscriptvalue_cast%2)\n";
+    QString result = templ;
+
+    typename QList<QPair<QString, T> >::const_iterator i = list.constBegin();
+    QStringList set;
+    for(; i != list.constEnd(); ++i) {
+        QPair<QString, T> t = *i;
+        t.first = escape(t.first);
+        set.append(QString("        "));
+        set.append("value.insert(\"");
+        set.append(t.first);
+        set.append(QString::fromAscii("\", "));
+        set.append(prepareToInsert<T>(t.second));
+        set.append(QString::fromAscii(");\n"));
+    }
+    return result.arg(typeName<T>(), set.join(QString()));
+}
+
+template<>
+QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
+{
+    static const QString templ = "\n"\
+                                 "void tst_QScriptValue::qscriptvalue_cast%2_initData()\n"\
+                                 "{\n"\
+                                 "    QTest::addColumn<%2>(\"expected\");\n"\
+                                 "    initScriptValues();\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "void tst_QScriptValue::qscriptvalue_cast%2_makeData(const char* expr)\n"\
+                                 "{\n"\
+                                 "    static QHash<QString, %2> value;\n"\
+                                 "    if (value.isEmpty()) {\n"\
+                                 "%3"\
+                                 "    }\n"\
+                                 "    newRow(expr) << value.value(expr);\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "void tst_QScriptValue::qscriptvalue_cast%2_test(const char*, const QScriptValue& value)\n"\
+                                 "{\n"\
+                                 "    QFETCH(%2, expected);\n"\
+                                 "    if (qIsNaN(expected)) {\n"
+                                 "        QVERIFY(qIsNaN(qscriptvalue_cast<%2>(value)));\n"
+                                 "        return;\n"
+                                 "    }\n"\
+                                 "    if (qIsInf(expected)) {\n"
+                                 "        QVERIFY(qIsInf(qscriptvalue_cast<%2>(value)));\n"
+                                 "        return;\n"
+                                 "    }\n"
+                                 "    QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "DEFINE_TEST_FUNCTION(qscriptvalue_cast%2)\n";
+    QString result = templ;
+
+    QList<QPair<QString, qsreal> >::const_iterator i = list.constBegin();
+    QStringList set;
+    for(; i != list.constEnd(); ++i) {
+        QPair<QString, qsreal> t = *i;
+        t.first = escape(t.first);
+        set.append(QString("        "));
+        set.append("value.insert(\"");
+        set.append(t.first);
+        set.append(QString::fromAscii("\", "));
+        set.append(prepareToInsert<qsreal>(t.second));
+        set.append(QString::fromAscii(");\n"));
+    }
+    return result.arg(typeName<qsreal>(), set.join(QString()));
+}
+
+static QString generateCompareDef(const QString& comparisionType, const QList<QString> tags)
+{
+    static const QString templ = "\n"\
+                                 "void tst_QScriptValue::%1_initData()\n"\
+                                 "{\n"\
+                                 "    QTest::addColumn<QScriptValue>(\"other\");\n"\
+                                 "    QTest::addColumn<bool>(\"expected\");\n"\
+                                 "    initScriptValues();\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "void tst_QScriptValue::%1_makeData(const char *expr)\n"\
+                                 "{\n"\
+                                 "    static QSet<QString> equals;\n"\
+                                 "    if (equals.isEmpty()) {\n"\
+                                 "%2\n"\
+                                 "    }\n"\
+                                 "    QHash<QString, QScriptValue>::const_iterator it;\n"\
+                                 "    for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {\n"\
+                                 "        QString tag = QString::fromLatin1(\"%20 <=> %21\").arg(expr).arg(it.key());\n"\
+                                 "        newRow(tag.toLatin1()) << it.value() << equals.contains(tag);\n"\
+                                 "    }\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "void tst_QScriptValue::%1_test(const char *, const QScriptValue& value)\n"\
+                                 "{\n"\
+                                 "    QFETCH(QScriptValue, other);\n"\
+                                 "    QFETCH(bool, expected);\n"\
+                                 "    QCOMPARE(value.%1(other), expected);\n"\
+                                 "}\n"\
+                                 "\n"\
+                                 "DEFINE_TEST_FUNCTION(%1)\n";
+    Q_ASSERT(comparisionType == "strictlyEquals"
+             || comparisionType == "equals"
+             || comparisionType == "lessThan"
+             || comparisionType == "instanceOf");
+    QString result = templ;
+
+    QStringList set;
+    foreach(const QString& tmp, tags) {
+        set.append("        equals.insert(\"" + escape(tmp) + "\");");
+    }
+    return result.arg(comparisionType, set.join("\n"));
+}
+
+static QString generateInitDef(const QVector<QString>& allDataTags)
+{
+    static const QString templ = "/****************************************************************************\n"
+                                 "**\n"
+                                 "** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).\n"
+                                 "** All rights reserved.\n"
+                                 "** Contact: Nokia Corporation (qt-info@nokia.com)\n"
+                                 "**\n"
+                                 "** This file is part of the test suite of the Qt Toolkit.\n"
+                                 "**\n"
+                                 "** $QT_BEGIN_LICENSE:LGPL$\n"
+                                 "** No Commercial Usage\n"
+                                 "** This file contains pre-release code and may not be distributed.\n"
+                                 "** You may use this file in accordance with the terms and conditions\n"
+                                 "** contained in the Technology Preview License Agreement accompanying\n"
+                                 "** this package.\n"
+                                 "**\n"
+                                 "** GNU Lesser General Public License Usage\n"
+                                 "** Alternatively, this file may be used under the terms of the GNU Lesser\n"
+                                 "** General Public License version 2.1 as published by the Free Software\n"
+                                 "** Foundation and appearing in the file LICENSE.LGPL included in the\n"
+                                 "** packaging of this file.  Please review the following information to\n"
+                                 "** ensure the GNU Lesser General Public License version 2.1 requirements\n"
+                                 "** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\n"
+                                 "**\n"
+                                 "** In addition, as a special exception, Nokia gives you certain additional\n"
+                                 "** rights.  These rights are described in the Nokia Qt LGPL Exception\n"
+                                 "** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.\n"
+                                 "**\n"
+                                 "** If you have questions regarding the use of this file, please contact\n"
+                                 "** Nokia at qt-info@nokia.com.\n"
+                                 "**\n"
+                                 "**\n"
+                                 "**\n"
+                                 "**\n"
+                                 "**\n"
+                                 "**\n"
+                                 "**\n"
+                                 "**\n"
+                                 "** $QT_END_LICENSE$\n"
+                                 "**\n"
+                                 "****************************************************************************/\n"
+                                 "\n"\
+                                 "#include \"tst_qscriptvalue.h\"\n\n"\
+                                 "#define DEFINE_TEST_VALUE(expr) m_values.insert(QString::fromLatin1(#expr), expr)\n"\
+                                 "\n"\
+                                 "void tst_QScriptValue::initScriptValues()\n"\
+                                 "{\n"\
+                                 "    m_values.clear();\n"\
+                                 "    if (engine) \n"\
+                                 "        delete engine;\n"\
+                                 "    engine = new QScriptEngine;\n"\
+                                 "%1\n}\n\n";
+    QString result = templ;
+    QStringList set;
+    foreach(const QString tag, allDataTags) {
+        set.append("    DEFINE_TEST_VALUE(" + tag + ");");
+    }
+
+    return result.arg(set.join("\n"));
+}
+
+static void squashTags(QString dataTag, const QVector<bool>& results, QList<QString>& tags, QVector<QString> dataTags)
+{
+    for(int i = 0; i < results.count(); ++i) {
+        if (results.at(i))
+            tags.append(dataTag + " <=> " + dataTags[i]);
+    }
+}
+
+
+QString TestGenerator::generateTest()
+{
+    // All data tags keept in one place.
+    QVector<QString> dataTags;
+
+    // Data tags for values that return true in isXXX call
+    QList<QString> isValidList;
+    QList<QString> isBoolList;
+    QList<QString> isBooleanList;
+    QList<QString> isNumberList;
+    QList<QString> isFunctionList;
+    QList<QString> isNullList;
+    QList<QString> isStringList;
+    QList<QString> isUndefinedList;
+    QList<QString> isVariantList;
+    QList<QString> isQObjectList;
+    QList<QString> isQMetaObjectList;
+    QList<QString> isObjectList;
+    QList<QString> isDateList;
+    QList<QString> isRegExpList;
+    QList<QString> isArrayList;
+    QList<QString> isErrorList;
+
+    // List of pairs data tag and value returned from toXXX call
+    QList<QPair<QString, QString> > toStringList;
+    QList<QPair<QString, qsreal> > toNumberList;
+    QList<QPair<QString, bool> > toBoolList;
+    QList<QPair<QString, bool> > toBooleanList;
+    QList<QPair<QString, qsreal> > toIntegerList;
+    QList<QPair<QString, qint32> > toInt32List;
+    QList<QPair<QString, quint32> > toUInt32List;
+    QList<QPair<QString, quint16> > toUInt16List;
+
+    // List of complex tags returning true
+    QList<QString> equalsList;
+    QList<QString> strictlyEqualsList;
+    QList<QString> lessThanList;
+    QList<QString> instanceOfList;
+
+    QList<QPair<QString, QString> > castStringList;
+    QList<QPair<QString, qsreal> > castSRealList;
+    QList<QPair<QString, bool> > castBoolList;
+    QList<QPair<QString, qint32> > castInt32List;
+    QList<QPair<QString, quint32> > castUInt32List;
+    QList<QPair<QString, quint16> > castUInt16List;
+
+    // Load.
+    m_tempFile.seek(0);
+    QDataStream in(&m_tempFile);
+    in >> dataTags;
+    Q_ASSERT(in.status() == in.Ok);
+
+    while(!in.atEnd())
+    {
+        bool isValidRes;
+        bool isBoolRes;
+        bool isBooleanRes;
+        bool isNumberRes;
+        bool isFunctionRes;
+        bool isNullRes;
+        bool isStringRes;
+        bool isUndefinedRes;
+        bool isVariantRes;
+        bool isQObjectRes;
+        bool isQMetaObjectRes;
+        bool isObjectRes;
+        bool isDateRes;
+        bool isRegExpRes;
+        bool isArrayRes;
+        bool isErrorRes;
+
+        QString toStringRes;
+        qsreal toNumberRes;
+        bool toBoolRes;
+        bool toBooleanRes;
+        qsreal toIntegerRes;
+        qint32 toInt32Res;
+        quint32 toUInt32Res;
+        quint16 toUInt16Res;
+        //toVariantRes;
+        //toDateTimeRes;
+
+        QVector<bool> equalsRes;
+        QVector<bool> strictlyEqualsRes;
+        QVector<bool> lessThanRes;
+        QVector<bool> instanceOfRes;
+
+        QString castStringRes;
+        qsreal castSRealRes;
+        bool castBoolRes;
+        qint32 castInt32Res;
+        quint32 castUInt32Res;
+        quint16 castUInt16Res;
+
+        QString dataTag;
+        in >> dataTag;
+        in >> isValidRes;
+        in >> isBoolRes;
+        in >> isBooleanRes;
+        in >> isNumberRes;
+        in >> isFunctionRes;
+        in >> isNullRes;
+        in >> isStringRes;
+        in >> isUndefinedRes;
+        in >> isVariantRes;
+        in >> isQObjectRes;
+        in >> isQMetaObjectRes;
+        in >> isObjectRes;
+        in >> isDateRes;
+        in >> isRegExpRes;
+        in >> isArrayRes;
+        in >> isErrorRes;
+
+        if (isValidRes) isValidList.append(dataTag);
+        if (isBoolRes) isBoolList.append(dataTag);
+        if (isBooleanRes) isBooleanList.append(dataTag);
+        if (isNumberRes) isNumberList.append(dataTag);
+        if (isFunctionRes) isFunctionList.append(dataTag);
+        if (isNullRes) isNullList.append(dataTag);
+        if (isStringRes) isStringList.append(dataTag);
+        if (isUndefinedRes) isUndefinedList.append(dataTag);
+        if (isVariantRes) isVariantList.append(dataTag);
+        if (isQObjectRes) isQObjectList.append(dataTag);
+        if (isQMetaObjectRes) isQMetaObjectList.append(dataTag);
+        if (isObjectRes) isObjectList.append(dataTag);
+        if (isDateRes) isDateList.append(dataTag);
+        if (isRegExpRes) isRegExpList.append(dataTag);
+        if (isArrayRes) isArrayList.append(dataTag);
+        if (isErrorRes) isErrorList.append(dataTag);
+
+        in >> toStringRes;
+        in >> toNumberRes;
+        in >> toBoolRes;
+        in >> toBooleanRes;
+        in >> toIntegerRes;
+        in >> toInt32Res;
+        in >> toUInt32Res;
+        in >> toUInt16Res;
+        //in >> toVariantRes;
+        //in >> toDateTimeRes;
+
+        toStringList.append(QPair<QString, QString>(dataTag, toStringRes));
+        toNumberList.append(QPair<QString, qsreal>(dataTag, toNumberRes));
+        toBoolList.append(QPair<QString, bool>(dataTag, toBoolRes));
+        toBooleanList.append(QPair<QString, bool>(dataTag, toBooleanRes));
+        toIntegerList.append(QPair<QString, qsreal>(dataTag, toIntegerRes));
+        toInt32List.append(QPair<QString, qint32>(dataTag, toInt32Res));
+        toUInt32List.append(QPair<QString, quint32>(dataTag, toUInt32Res));
+        toUInt16List.append(QPair<QString, quint16>(dataTag, toUInt16Res));
+
+        in >> equalsRes;
+        in >> strictlyEqualsRes;
+        in >> lessThanRes;
+        in >> instanceOfRes;
+
+        squashTags(dataTag, equalsRes, equalsList, dataTags);
+        squashTags(dataTag, strictlyEqualsRes, strictlyEqualsList, dataTags);
+        squashTags(dataTag, lessThanRes, lessThanList, dataTags);
+        squashTags(dataTag, instanceOfRes, instanceOfList, dataTags);
+
+        in >> castStringRes;
+        in >> castSRealRes;
+        in >> castBoolRes;
+        in >> castInt32Res;
+        in >> castUInt32Res;
+        in >> castUInt16Res;
+
+        castStringList.append(QPair<QString, QString>(dataTag, castStringRes));
+        castSRealList.append(QPair<QString, qsreal>(dataTag, castSRealRes));
+        castBoolList.append(QPair<QString, bool>(dataTag, castBoolRes));
+        castInt32List.append(QPair<QString, qint32>(dataTag, castInt32Res));
+        castUInt32List.append(QPair<QString, quint32>(dataTag, castUInt32Res));
+        castUInt16List.append(QPair<QString, quint16>(dataTag, castUInt16Res));
+
+        Q_ASSERT(in.status() == in.Ok);
+    }
+
+    Q_ASSERT(in.atEnd());
+
+    // Generate.
+    QStringList result;
+    result.append(generateInitDef(dataTags));
+    result.append(generateIsXXXDef("isValid", isValidList));
+    result.append(generateIsXXXDef("isBool", isBoolList));
+    result.append(generateIsXXXDef("isBoolean", isBooleanList));
+    result.append(generateIsXXXDef("isNumber", isNumberList));
+    result.append(generateIsXXXDef("isFunction", isFunctionList));
+    result.append(generateIsXXXDef("isNull", isNullList));
+    result.append(generateIsXXXDef("isString", isStringList));
+    result.append(generateIsXXXDef("isUndefined", isUndefinedList));
+    result.append(generateIsXXXDef("isVariant", isVariantList));
+    result.append(generateIsXXXDef("isQObject", isQObjectList));
+    result.append(generateIsXXXDef("isQMetaObject", isQMetaObjectList));
+    result.append(generateIsXXXDef("isObject", isObjectList));
+    result.append(generateIsXXXDef("isDate", isDateList));
+    result.append(generateIsXXXDef("isRegExp", isRegExpList));
+    result.append(generateIsXXXDef("isArray", isArrayList));
+    result.append(generateIsXXXDef("isError", isErrorList));
+
+    result.append(generateToXXXDef<QString>("toString", toStringList));
+    result.append(generateToXXXDef<qsreal>("toNumber", toNumberList));
+    result.append(generateToXXXDef<bool>("toBool", toBoolList));
+    result.append(generateToXXXDef<bool>("toBoolean", toBooleanList));
+    result.append(generateToXXXDef<qsreal>("toInteger", toIntegerList));
+    result.append(generateToXXXDef<qint32>("toInt32", toInt32List));
+    result.append(generateToXXXDef<quint32>("toUInt32", toUInt32List));
+    result.append(generateToXXXDef<quint16>("toUInt16", toUInt16List));
+
+    result.append(generateCompareDef("equals", equalsList));
+    result.append(generateCompareDef("strictlyEquals", strictlyEqualsList));
+    result.append(generateCompareDef("lessThan", lessThanList));
+    result.append(generateCompareDef("instanceOf", instanceOfList));
+
+    result.append(generateCastDef(castStringList));
+    result.append(generateCastDef(castSRealList));
+    result.append(generateCastDef(castBoolList));
+    result.append(generateCastDef(castInt32List));
+    result.append(generateCastDef(castUInt32List));
+    result.append(generateCastDef(castUInt16List));
+
+    return result.join("\n");
+}
+
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/testgen/testgenerator.h	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef TESTGENERATOR_H
+#define TESTGENERATOR_H
+
+#include <QtCore/qdebug.h>
+#include <QtCore/qfile.h>
+#include <QtCore/qtemporaryfile.h>
+
+class TestGenerator {
+public:
+    TestGenerator(QString& outputpath)
+        : m_ofile(outputpath)
+    {
+        // Open output file
+        if (!m_ofile.open(QIODevice::WriteOnly | QIODevice::Text)) {
+            qWarning() << "Can't open output file: " << outputpath;
+            exit(2);
+        }
+        m_tempFile.open();
+    }
+
+    void run()
+    {
+        prepareData();
+        Q_ASSERT(m_tempFile.size());
+        save(generateTest());
+    }
+
+    void prepareData();
+    QString generateTest();
+    void save(const QString& data);
+private:
+    QFile m_ofile;
+    QTemporaryFile m_tempFile;
+};
+
+#endif // TESTGENERATOR_H
--- a/tests/auto/qscriptvalue/tst_qscriptvalue.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -39,14 +39,8 @@
 **
 ****************************************************************************/
 
-
-#include <QtTest/QtTest>
+#include "tst_qscriptvalue.h"
 #include <QtGui/QPushButton>
-#include <QtCore/qnumeric.h>
-
-#include <QtScript/qscriptclass.h>
-#include <QtScript/qscriptvalue.h>
-#include <QtScript/qscriptengine.h>
 
 //TESTED_CLASS=
 //TESTED_FILES=
@@ -55,62 +49,70 @@
 extern bool qt_script_isJITEnabled();
 QT_END_NAMESPACE
 
-class tst_QScriptValue : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QScriptValue();
-    virtual ~tst_QScriptValue();
-
-private slots:
-    void ctor();
-    void engine();
-    void toString();
-    void toNumber();
-    void toBoolean();
-    void toBool();
-    void toInteger();
-    void toInt32();
-    void toUInt32();
-    void toUInt16();
-    void toVariant();
-    void toQObject();
-    void toObject();
-    void toDateTime();
-    void toRegExp();
-    void instanceOf();
-    void isArray();
-    void isDate();
-    void isError();
-    void isRegExp();
-    void getSetPrototype();
-    void getSetScope();
-    void getSetProperty();
-    void arrayElementGetterSetter();
-    void getSetData();
-    void getSetScriptClass();
-    void call();
-    void construct();
-    void lessThan();
-    void equals();
-    void strictlyEquals();
-    void castToPointer();
-    void prettyPrinter_data();
-    void prettyPrinter();
-    void engineDeleted();
-    void valueOfWithClosure();
-    void objectId();
-};
-
 tst_QScriptValue::tst_QScriptValue()
+    : engine(0)
 {
 }
 
 tst_QScriptValue::~tst_QScriptValue()
 {
+    delete engine;
 }
 
+void tst_QScriptValue::dataHelper(InitDataFunction init, DefineDataFunction define)
+{
+    QTest::addColumn<QString>("__expression__");
+    (this->*init)();
+    QHash<QString,QScriptValue>::const_iterator it;
+    for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+        m_currentExpression = it.key();
+        (this->*define)(it.key().toLatin1());
+    }
+    m_currentExpression = QString();
+}
+
+QTestData &tst_QScriptValue::newRow(const char *tag)
+{
+    return QTest::newRow(tag) << m_currentExpression;
+}
+
+void tst_QScriptValue::testHelper(TestFunction fun)
+{
+    QFETCH(QString, __expression__);
+    QScriptValue value = m_values.value(__expression__);
+    (this->*fun)(__expression__.toLatin1(), value);
+}
+
+void tst_QScriptValue::assignAndCopyConstruct_initData()
+{
+    QTest::addColumn<int>("dummy");
+    initScriptValues();
+}
+
+void tst_QScriptValue::assignAndCopyConstruct_makeData(const char *expr)
+{
+    newRow(expr) << 0;
+}
+
+void tst_QScriptValue::assignAndCopyConstruct_test(const char *, const QScriptValue &value)
+{
+    QScriptValue copy(value);
+    QCOMPARE(copy.strictlyEquals(value), !value.isNumber() || !qIsNaN(value.toNumber()));
+    QCOMPARE(copy.engine(), value.engine());
+
+    QScriptValue assigned = copy;
+    QCOMPARE(assigned.strictlyEquals(value), !copy.isNumber() || !qIsNaN(copy.toNumber()));
+    QCOMPARE(assigned.engine(), assigned.engine());
+
+    QScriptValue other(!value.toBool());
+    assigned = other;
+    QVERIFY(!assigned.strictlyEquals(copy));
+    QVERIFY(assigned.strictlyEquals(other));
+    QCOMPARE(assigned.engine(), other.engine());
+}
+
+DEFINE_TEST_FUNCTION(assignAndCopyConstruct)
+
 void tst_QScriptValue::ctor()
 {
     QScriptEngine eng;
@@ -330,19 +332,12 @@
     QVERIFY(QScriptValue(0, QString("ciao")).isString());
 }
 
-void tst_QScriptValue::engine()
-{
-    QScriptEngine eng;
-    QScriptValue object = eng.newObject();
-    QCOMPARE(object.engine(), &eng);
-}
-
 static QScriptValue myFunction(QScriptContext *, QScriptEngine *eng)
 {
     return eng->undefinedValue();
 }
 
-void tst_QScriptValue::toString()
+void tst_QScriptValue::toString_old()
 {
     QScriptEngine eng;
 
@@ -456,7 +451,7 @@
     QVERIFY(variant.toString().isEmpty());
 }
 
-void tst_QScriptValue::toNumber()
+void tst_QScriptValue::toNumber_old()
 {
     QScriptEngine eng;
 
@@ -529,7 +524,7 @@
     }
 }
 
-void tst_QScriptValue::toBoolean() // deprecated
+void tst_QScriptValue::toBoolean_old() // deprecated
 {
     QScriptEngine eng;
 
@@ -626,7 +621,7 @@
     }
 }
 
-void tst_QScriptValue::toBool()
+void tst_QScriptValue::toBool_old()
 {
     QScriptEngine eng;
 
@@ -723,7 +718,7 @@
     }
 }
 
-void tst_QScriptValue::toInteger()
+void tst_QScriptValue::toInteger_old()
 {
     QScriptEngine eng;
 
@@ -810,7 +805,7 @@
     QCOMPARE(inv.toInteger(), 0.0);
 }
 
-void tst_QScriptValue::toInt32()
+void tst_QScriptValue::toInt32_old()
 {
     QScriptEngine eng;
 
@@ -946,7 +941,7 @@
     QCOMPARE(qscriptvalue_cast<qint32>(inv), 0);
 }
 
-void tst_QScriptValue::toUInt32()
+void tst_QScriptValue::toUInt32_old()
 {
     QScriptEngine eng;
 
@@ -1078,7 +1073,7 @@
     QCOMPARE(qscriptvalue_cast<quint32>(inv), quint32(0));
 }
 
-void tst_QScriptValue::toUInt16()
+void tst_QScriptValue::toUInt16_old()
 {
     QScriptEngine eng;
 
@@ -1239,7 +1234,7 @@
 Q_DECLARE_METATYPE(QVariant)
 #endif
 
-void tst_QScriptValue::toVariant()
+void tst_QScriptValue::toVariant_old()
 {
     QScriptEngine eng;
 
@@ -1346,7 +1341,7 @@
 // unfortunately, this is necessary in order to do qscriptvalue_cast<QPushButton*>(...)
 Q_DECLARE_METATYPE(QPushButton*)
 
-void tst_QScriptValue::toQObject()
+void tst_QScriptValue::toQObject_old()
 {
     QScriptEngine eng;
 
@@ -1541,7 +1536,7 @@
     }
 }
 
-void tst_QScriptValue::toDateTime()
+void tst_QScriptValue::toDateTime_old()
 {
     QScriptEngine eng;
     QDateTime dt = eng.evaluate("new Date(0)").toDateTime();
@@ -1559,7 +1554,7 @@
     QVERIFY(!eng.undefinedValue().toDateTime().isValid());
 }
 
-void tst_QScriptValue::toRegExp()
+void tst_QScriptValue::toRegExp_old()
 {
     QScriptEngine eng;
     {
@@ -1589,7 +1584,7 @@
     QVERIFY(eng.undefinedValue().toRegExp().isEmpty());
 }
 
-void tst_QScriptValue::instanceOf()
+void tst_QScriptValue::instanceOf_old()
 {
     QScriptEngine eng;
     QScriptValue obj = eng.newObject();
@@ -1625,7 +1620,7 @@
     QCOMPARE(obj.instanceOf(otherEngine.globalObject().property("Object")), false);
 }
 
-void tst_QScriptValue::isArray()
+void tst_QScriptValue::isArray_old()
 {
     QScriptEngine eng;
     QVERIFY(eng.evaluate("[]").isArray());
@@ -1638,7 +1633,7 @@
     QVERIFY(!eng.undefinedValue().isArray());
 }
 
-void tst_QScriptValue::isDate()
+void tst_QScriptValue::isDate_old()
 {
     QScriptEngine eng;
     QVERIFY(eng.evaluate("new Date()").isDate());
@@ -1652,7 +1647,7 @@
     QVERIFY(!eng.undefinedValue().isDate());
 }
 
-void tst_QScriptValue::isError()
+void tst_QScriptValue::isError_old()
 {
     QStringList errors;
     errors << "Error"
@@ -1677,7 +1672,7 @@
     QVERIFY(!eng.evaluate("new Object()").isError());
 }
 
-void tst_QScriptValue::isRegExp()
+void tst_QScriptValue::isRegExp_old()
 {
     QScriptEngine eng;
     QVERIFY(eng.evaluate("/foo/").isRegExp());
@@ -2718,7 +2713,7 @@
     QVERIFY(!QScriptValue(QScriptValue::NullValue).construct().isValid());
 }
 
-void tst_QScriptValue::lessThan()
+void tst_QScriptValue::lessThan_old()
 {
     QScriptEngine eng;
 
@@ -2812,7 +2807,7 @@
     QCOMPARE(date1.lessThan(QScriptValue(&otherEngine, 123)), false);
 }
 
-void tst_QScriptValue::equals()
+void tst_QScriptValue::equals_old()
 {
     QScriptEngine eng;
 
@@ -2907,7 +2902,7 @@
     QScriptValue qobj1 = eng.newQObject(this);
     QScriptValue qobj2 = eng.newQObject(this);
     QScriptValue qobj3 = eng.newQObject(0);
-    QScriptValue qobj4 = eng.newQObject(new QObject());
+    QScriptValue qobj4 = eng.newQObject(new QObject(), QScriptEngine::ScriptOwnership);
     QVERIFY(qobj1.equals(qobj2)); // compares the QObject pointers
     QVERIFY(!qobj2.equals(qobj4)); // compares the QObject pointers
     QVERIFY(!qobj2.equals(obj2)); // compares the QObject pointers
@@ -3005,7 +3000,7 @@
     QCOMPARE(date1.equals(QScriptValue(&otherEngine, 123)), false);
 }
 
-void tst_QScriptValue::strictlyEquals()
+void tst_QScriptValue::strictlyEquals_old()
 {
     QScriptEngine eng;
 
@@ -3091,6 +3086,20 @@
     QVERIFY(!falskt.strictlyEquals(null));
     QVERIFY(!falskt.strictlyEquals(QScriptValue()));
 
+    QVERIFY(!QScriptValue(false).strictlyEquals(123));
+    QVERIFY(!QScriptValue(QScriptValue::UndefinedValue).strictlyEquals(123));
+    QVERIFY(!QScriptValue(QScriptValue::NullValue).strictlyEquals(123));
+    QVERIFY(!QScriptValue(false).strictlyEquals("ciao"));
+    QVERIFY(!QScriptValue(QScriptValue::UndefinedValue).strictlyEquals("ciao"));
+    QVERIFY(!QScriptValue(QScriptValue::NullValue).strictlyEquals("ciao"));
+    QVERIFY(QScriptValue(&eng, "ciao").strictlyEquals("ciao"));
+    QVERIFY(QScriptValue("ciao").strictlyEquals(QScriptValue(&eng, "ciao")));
+    QVERIFY(!QScriptValue("ciao").strictlyEquals(123));
+    QVERIFY(!QScriptValue("ciao").strictlyEquals(QScriptValue(&eng, 123)));
+    QVERIFY(!QScriptValue(123).strictlyEquals("ciao"));
+    QVERIFY(!QScriptValue(123).strictlyEquals(QScriptValue(&eng, "ciao")));
+    QVERIFY(!QScriptValue(&eng, 123).strictlyEquals("ciao"));
+
     QScriptValue obj1 = eng.newObject();
     QScriptValue obj2 = eng.newObject();
     QCOMPARE(obj1.strictlyEquals(obj2), false);
@@ -3442,4 +3451,3 @@
 }
 
 QTEST_MAIN(tst_QScriptValue)
-#include "tst_qscriptvalue.moc"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.h	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,410 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef TST_QSCRIPTVALUE_H
+#define TST_QSCRIPTVALUE_H
+
+#include <QtCore/qobject.h>
+#include <QtCore/qnumeric.h>
+#include <QtScript/qscriptclass.h>
+#include <QtScript/qscriptengine.h>
+#include <QtScript/qscriptvalue.h>
+#include <QtTest/QtTest>
+
+Q_DECLARE_METATYPE(QVariant)
+Q_DECLARE_METATYPE(QScriptValue)
+
+class tst_QScriptValue : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QScriptValue();
+    virtual ~tst_QScriptValue();
+
+private slots:
+    // Generated test functions
+    void isArray_data();
+    void isArray();
+
+    void isBool_data();
+    void isBool();
+
+    void isBoolean_data();
+    void isBoolean();
+
+    void isDate_data();
+    void isDate();
+
+    void isError_data();
+    void isError();
+
+    void isFunction_data();
+    void isFunction();
+
+    void isNull_data();
+    void isNull();
+
+    void isNumber_data();
+    void isNumber();
+
+    void isObject_data();
+    void isObject();
+
+//    void isQMetaObject_data();
+//    void isQMetaObject();
+
+//    void isQObject_data();
+//    void isQObject();
+
+    void isRegExp_data();
+    void isRegExp();
+
+    void isString_data();
+    void isString();
+
+    void isUndefined_data();
+    void isUndefined();
+
+    void isValid_data();
+    void isValid();
+
+//    void isVariant_data();
+//    void isVariant();
+
+    void toBool_data();
+    void toBool();
+
+    void toBoolean_data();
+    void toBoolean();
+
+//    void toDateTime_data();
+//    void toDateTime();
+
+    void toInt32_data();
+    void toInt32();
+
+    void toInteger_data();
+    void toInteger();
+
+    void toNumber_data();
+    void toNumber();
+
+//    void toQMetaObject_data();
+//    void toQMetaObject();
+
+//    void toQObject_data();
+//    void toQObject();
+
+//    void toRegExp_data();
+//    void toRegExp();
+
+    void toString_data();
+    void toString();
+
+    void toUInt16_data();
+    void toUInt16();
+
+    void toUInt32_data();
+    void toUInt32();
+
+//    void toVariant_data();
+//    void toVariant();
+
+    void equals_data();
+    void equals();
+
+    void strictlyEquals_data();
+    void strictlyEquals();
+
+    void lessThan_data();
+    void lessThan();
+
+    void instanceOf_data();
+    void instanceOf();
+
+    void assignAndCopyConstruct_data();
+    void assignAndCopyConstruct();
+
+    void qscriptvalue_castQString_data();
+    void qscriptvalue_castQString();
+
+    void qscriptvalue_castqsreal_data();
+    void qscriptvalue_castqsreal();
+
+    void qscriptvalue_castbool_data();
+    void qscriptvalue_castbool();
+
+    void qscriptvalue_castqint32_data();
+    void qscriptvalue_castqint32();
+
+    void qscriptvalue_castquint32_data();
+    void qscriptvalue_castquint32();
+
+    void qscriptvalue_castquint16_data();
+    void qscriptvalue_castquint16();
+
+    // Non-generated test functions
+
+    void toObject();
+    void ctor();
+
+    void toString_old();
+    void toNumber_old();
+    void toBoolean_old();
+    void toBool_old();
+    void toInteger_old();
+    void toInt32_old();
+    void toUInt32_old();
+    void toUInt16_old();
+    void toVariant_old();
+    void toQObject_old();
+    void toDateTime_old();
+    void toRegExp_old();
+    void instanceOf_old();
+    void isArray_old();
+    void isDate_old();
+    void isError_old();
+    void isRegExp_old();
+
+    void lessThan_old();
+    void equals_old();
+    void strictlyEquals_old();
+
+    void getSetPrototype();
+    void getSetScope();
+    void getSetProperty();
+    void arrayElementGetterSetter();
+    void getSetData();
+    void getSetScriptClass();
+    void call();
+    void construct();
+    void castToPointer();
+    void prettyPrinter_data();
+    void prettyPrinter();
+    void engineDeleted();
+    void valueOfWithClosure();
+    void objectId();
+
+private:
+    typedef void (tst_QScriptValue::*InitDataFunction)();
+    typedef void (tst_QScriptValue::*DefineDataFunction)(const char *);
+    void dataHelper(InitDataFunction init, DefineDataFunction define);
+    QTestData &newRow(const char *tag);
+
+    typedef void (tst_QScriptValue::*TestFunction)(const char *, const QScriptValue &);
+    void testHelper(TestFunction fun);
+
+    // Generated functions
+
+    void initScriptValues();
+
+    void isArray_initData();
+    void isArray_makeData(const char *expr);
+    void isArray_test(const char *expr, const QScriptValue &value);
+
+    void isBool_initData();
+    void isBool_makeData(const char *expr);
+    void isBool_test(const char *expr, const QScriptValue &value);
+
+    void isBoolean_initData();
+    void isBoolean_makeData(const char *expr);
+    void isBoolean_test(const char *expr, const QScriptValue &value);
+
+    void isDate_initData();
+    void isDate_makeData(const char *expr);
+    void isDate_test(const char *expr, const QScriptValue &value);
+
+    void isError_initData();
+    void isError_makeData(const char *expr);
+    void isError_test(const char *expr, const QScriptValue &value);
+
+    void isFunction_initData();
+    void isFunction_makeData(const char *expr);
+    void isFunction_test(const char *expr, const QScriptValue &value);
+
+    void isNull_initData();
+    void isNull_makeData(const char *expr);
+    void isNull_test(const char *expr, const QScriptValue &value);
+
+    void isNumber_initData();
+    void isNumber_makeData(const char *expr);
+    void isNumber_test(const char *expr, const QScriptValue &value);
+
+    void isObject_initData();
+    void isObject_makeData(const char *expr);
+    void isObject_test(const char *expr, const QScriptValue &value);
+
+    void isQMetaObject_initData();
+    void isQMetaObject_makeData(const char *expr);
+    void isQMetaObject_test(const char *expr, const QScriptValue &value);
+
+    void isQObject_initData();
+    void isQObject_makeData(const char *expr);
+    void isQObject_test(const char *expr, const QScriptValue &value);
+
+    void isRegExp_initData();
+    void isRegExp_makeData(const char *expr);
+    void isRegExp_test(const char *expr, const QScriptValue &value);
+
+    void isString_initData();
+    void isString_makeData(const char *expr);
+    void isString_test(const char *expr, const QScriptValue &value);
+
+    void isUndefined_initData();
+    void isUndefined_makeData(const char *expr);
+    void isUndefined_test(const char *expr, const QScriptValue &value);
+
+    void isValid_initData();
+    void isValid_makeData(const char *expr);
+    void isValid_test(const char *expr, const QScriptValue &value);
+
+    void isVariant_initData();
+    void isVariant_makeData(const char *expr);
+    void isVariant_test(const char *expr, const QScriptValue &value);
+
+    void toBool_initData();
+    void toBool_makeData(const char *);
+    void toBool_test(const char *, const QScriptValue &value);
+
+    void toBoolean_initData();
+    void toBoolean_makeData(const char *);
+    void toBoolean_test(const char *, const QScriptValue &value);
+
+    void toDateTime_initData();
+    void toDateTime_makeData(const char *);
+    void toDateTime_test(const char *, const QScriptValue &value);
+
+    void toInt32_initData();
+    void toInt32_makeData(const char *);
+    void toInt32_test(const char *, const QScriptValue &value);
+
+    void toInteger_initData();
+    void toInteger_makeData(const char *);
+    void toInteger_test(const char *, const QScriptValue &value);
+
+    void toNumber_initData();
+    void toNumber_makeData(const char *);
+    void toNumber_test(const char *, const QScriptValue &value);
+
+    void toQMetaObject_initData();
+    void toQMetaObject_makeData(const char *);
+    void toQMetaObject_test(const char *, const QScriptValue &value);
+
+    void toQObject_initData();
+    void toQObject_makeData(const char *);
+    void toQObject_test(const char *, const QScriptValue &value);
+
+    void toRegExp_initData();
+    void toRegExp_makeData(const char *);
+    void toRegExp_test(const char *, const QScriptValue &value);
+
+    void toString_initData();
+    void toString_makeData(const char *);
+    void toString_test(const char *, const QScriptValue &value);
+
+    void toUInt16_initData();
+    void toUInt16_makeData(const char *);
+    void toUInt16_test(const char *, const QScriptValue &value);
+
+    void toUInt32_initData();
+    void toUInt32_makeData(const char *);
+    void toUInt32_test(const char *, const QScriptValue &value);
+
+    void toVariant_initData();
+    void toVariant_makeData(const char *);
+    void toVariant_test(const char *, const QScriptValue &value);
+
+    void equals_initData();
+    void equals_makeData(const char *);
+    void equals_test(const char *, const QScriptValue &value);
+
+    void strictlyEquals_initData();
+    void strictlyEquals_makeData(const char *);
+    void strictlyEquals_test(const char *, const QScriptValue &value);
+
+    void lessThan_initData();
+    void lessThan_makeData(const char *);
+    void lessThan_test(const char *, const QScriptValue &value);
+
+    void instanceOf_initData();
+    void instanceOf_makeData(const char *);
+    void instanceOf_test(const char *, const QScriptValue &value);
+
+    void assignAndCopyConstruct_initData();
+    void assignAndCopyConstruct_makeData(const char *);
+    void assignAndCopyConstruct_test(const char *, const QScriptValue &value);
+
+    void qscriptvalue_castQString_initData();
+    void qscriptvalue_castQString_makeData(const char *);
+    void qscriptvalue_castQString_test(const char *, const QScriptValue &value);
+
+    void qscriptvalue_castqsreal_initData();
+    void qscriptvalue_castqsreal_makeData(const char *);
+    void qscriptvalue_castqsreal_test(const char *, const QScriptValue &value);
+
+    void qscriptvalue_castbool_initData();
+    void qscriptvalue_castbool_makeData(const char *);
+    void qscriptvalue_castbool_test(const char *, const QScriptValue &value);
+
+    void qscriptvalue_castqint32_initData();
+    void qscriptvalue_castqint32_makeData(const char *);
+    void qscriptvalue_castqint32_test(const char *, const QScriptValue &value);
+
+    void qscriptvalue_castquint32_initData();
+    void qscriptvalue_castquint32_makeData(const char *);
+    void qscriptvalue_castquint32_test(const char *, const QScriptValue &value);
+
+    void qscriptvalue_castquint16_initData();
+    void qscriptvalue_castquint16_makeData(const char *);
+    void qscriptvalue_castquint16_test(const char *, const QScriptValue &value);
+
+private:
+    QScriptEngine *engine;
+    QHash<QString, QScriptValue> m_values;
+    QString m_currentExpression;
+};
+
+#define DEFINE_TEST_FUNCTION(name) \
+void tst_QScriptValue::name##_data() { dataHelper(&tst_QScriptValue::name##_initData, &tst_QScriptValue::name##_makeData); } \
+void tst_QScriptValue::name() { testHelper(&tst_QScriptValue::name##_test); }
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,6369 @@
+/****************************************************************************
+**
+** 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 "tst_qscriptvalue.h"
+
+#define DEFINE_TEST_VALUE(expr) m_values.insert(QString::fromLatin1(#expr), expr)
+
+void tst_QScriptValue::initScriptValues()
+{
+    m_values.clear();
+    if (engine) 
+        delete engine;
+    engine = new QScriptEngine;
+    DEFINE_TEST_VALUE(QScriptValue());
+    DEFINE_TEST_VALUE(QScriptValue(QScriptValue::UndefinedValue));
+    DEFINE_TEST_VALUE(QScriptValue(QScriptValue::NullValue));
+    DEFINE_TEST_VALUE(QScriptValue(true));
+    DEFINE_TEST_VALUE(QScriptValue(false));
+    DEFINE_TEST_VALUE(QScriptValue(int(122)));
+    DEFINE_TEST_VALUE(QScriptValue(uint(124)));
+    DEFINE_TEST_VALUE(QScriptValue(0));
+    DEFINE_TEST_VALUE(QScriptValue(0.0));
+    DEFINE_TEST_VALUE(QScriptValue(123.0));
+    DEFINE_TEST_VALUE(QScriptValue(6.37e-8));
+    DEFINE_TEST_VALUE(QScriptValue(-6.37e-8));
+    DEFINE_TEST_VALUE(QScriptValue(0x43211234));
+    DEFINE_TEST_VALUE(QScriptValue(0x10000));
+    DEFINE_TEST_VALUE(QScriptValue(0x10001));
+    DEFINE_TEST_VALUE(QScriptValue(qSNaN()));
+    DEFINE_TEST_VALUE(QScriptValue(qQNaN()));
+    DEFINE_TEST_VALUE(QScriptValue(qInf()));
+    DEFINE_TEST_VALUE(QScriptValue(-qInf()));
+    DEFINE_TEST_VALUE(QScriptValue("NaN"));
+    DEFINE_TEST_VALUE(QScriptValue("Infinity"));
+    DEFINE_TEST_VALUE(QScriptValue("-Infinity"));
+    DEFINE_TEST_VALUE(QScriptValue("ciao"));
+    DEFINE_TEST_VALUE(QScriptValue(QString::fromLatin1("ciao")));
+    DEFINE_TEST_VALUE(QScriptValue(QString("")));
+    DEFINE_TEST_VALUE(QScriptValue(QString()));
+    DEFINE_TEST_VALUE(QScriptValue(QString("0")));
+    DEFINE_TEST_VALUE(QScriptValue(QString("123")));
+    DEFINE_TEST_VALUE(QScriptValue(QString("12.4")));
+    DEFINE_TEST_VALUE(QScriptValue(0, QScriptValue::UndefinedValue));
+    DEFINE_TEST_VALUE(QScriptValue(0, QScriptValue::NullValue));
+    DEFINE_TEST_VALUE(QScriptValue(0, true));
+    DEFINE_TEST_VALUE(QScriptValue(0, false));
+    DEFINE_TEST_VALUE(QScriptValue(0, int(122)));
+    DEFINE_TEST_VALUE(QScriptValue(0, uint(124)));
+    DEFINE_TEST_VALUE(QScriptValue(0, 0));
+    DEFINE_TEST_VALUE(QScriptValue(0, 0.0));
+    DEFINE_TEST_VALUE(QScriptValue(0, 123.0));
+    DEFINE_TEST_VALUE(QScriptValue(0, 6.37e-8));
+    DEFINE_TEST_VALUE(QScriptValue(0, -6.37e-8));
+    DEFINE_TEST_VALUE(QScriptValue(0, 0x43211234));
+    DEFINE_TEST_VALUE(QScriptValue(0, 0x10000));
+    DEFINE_TEST_VALUE(QScriptValue(0, 0x10001));
+    DEFINE_TEST_VALUE(QScriptValue(0, qSNaN()));
+    DEFINE_TEST_VALUE(QScriptValue(0, qQNaN()));
+    DEFINE_TEST_VALUE(QScriptValue(0, qInf()));
+    DEFINE_TEST_VALUE(QScriptValue(0, -qInf()));
+    DEFINE_TEST_VALUE(QScriptValue(0, "NaN"));
+    DEFINE_TEST_VALUE(QScriptValue(0, "Infinity"));
+    DEFINE_TEST_VALUE(QScriptValue(0, "-Infinity"));
+    DEFINE_TEST_VALUE(QScriptValue(0, "ciao"));
+    DEFINE_TEST_VALUE(QScriptValue(0, QString::fromLatin1("ciao")));
+    DEFINE_TEST_VALUE(QScriptValue(0, QString("")));
+    DEFINE_TEST_VALUE(QScriptValue(0, QString()));
+    DEFINE_TEST_VALUE(QScriptValue(0, QString("0")));
+    DEFINE_TEST_VALUE(QScriptValue(0, QString("123")));
+    DEFINE_TEST_VALUE(QScriptValue(0, QString("12.3")));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QScriptValue::UndefinedValue));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QScriptValue::NullValue));
+    DEFINE_TEST_VALUE(QScriptValue(engine, true));
+    DEFINE_TEST_VALUE(QScriptValue(engine, false));
+    DEFINE_TEST_VALUE(QScriptValue(engine, int(122)));
+    DEFINE_TEST_VALUE(QScriptValue(engine, uint(124)));
+    DEFINE_TEST_VALUE(QScriptValue(engine, 0));
+    DEFINE_TEST_VALUE(QScriptValue(engine, 0.0));
+    DEFINE_TEST_VALUE(QScriptValue(engine, 123.0));
+    DEFINE_TEST_VALUE(QScriptValue(engine, 6.37e-8));
+    DEFINE_TEST_VALUE(QScriptValue(engine, -6.37e-8));
+    DEFINE_TEST_VALUE(QScriptValue(engine, 0x43211234));
+    DEFINE_TEST_VALUE(QScriptValue(engine, 0x10000));
+    DEFINE_TEST_VALUE(QScriptValue(engine, 0x10001));
+    DEFINE_TEST_VALUE(QScriptValue(engine, qSNaN()));
+    DEFINE_TEST_VALUE(QScriptValue(engine, qQNaN()));
+    DEFINE_TEST_VALUE(QScriptValue(engine, qInf()));
+    DEFINE_TEST_VALUE(QScriptValue(engine, -qInf()));
+    DEFINE_TEST_VALUE(QScriptValue(engine, "NaN"));
+    DEFINE_TEST_VALUE(QScriptValue(engine, "Infinity"));
+    DEFINE_TEST_VALUE(QScriptValue(engine, "-Infinity"));
+    DEFINE_TEST_VALUE(QScriptValue(engine, "ciao"));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QString::fromLatin1("ciao")));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QString("")));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QString()));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QString("0")));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QString("123")));
+    DEFINE_TEST_VALUE(QScriptValue(engine, QString("1.23")));
+    DEFINE_TEST_VALUE(engine->evaluate("[]"));
+    DEFINE_TEST_VALUE(engine->evaluate("{}"));
+    DEFINE_TEST_VALUE(engine->evaluate("Object.prototype"));
+    DEFINE_TEST_VALUE(engine->evaluate("Date.prototype"));
+    DEFINE_TEST_VALUE(engine->evaluate("Array.prototype"));
+    DEFINE_TEST_VALUE(engine->evaluate("Function.prototype"));
+    DEFINE_TEST_VALUE(engine->evaluate("Error.prototype"));
+    DEFINE_TEST_VALUE(engine->evaluate("Object"));
+    DEFINE_TEST_VALUE(engine->evaluate("Array"));
+    DEFINE_TEST_VALUE(engine->evaluate("Number"));
+    DEFINE_TEST_VALUE(engine->evaluate("Function"));
+    DEFINE_TEST_VALUE(engine->evaluate("(function() { return 1; })"));
+    DEFINE_TEST_VALUE(engine->evaluate("(function() { return 'ciao'; })"));
+    DEFINE_TEST_VALUE(engine->evaluate("(function() { throw new Error('foo'); })"));
+    DEFINE_TEST_VALUE(engine->evaluate("/foo/"));
+    DEFINE_TEST_VALUE(engine->evaluate("new Object()"));
+    DEFINE_TEST_VALUE(engine->evaluate("new Array()"));
+    DEFINE_TEST_VALUE(engine->evaluate("new Error()"));
+}
+
+
+void tst_QScriptValue::isValid_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isValid_makeData(const char* expr)
+{
+    static QSet<QString> isValid;
+    if (isValid.isEmpty()) {
+        isValid << "QScriptValue(QScriptValue::UndefinedValue)"
+                << "QScriptValue(QScriptValue::NullValue)"
+                << "QScriptValue(true)"
+                << "QScriptValue(false)"
+                << "QScriptValue(int(122))"
+                << "QScriptValue(uint(124))"
+                << "QScriptValue(0)"
+                << "QScriptValue(0.0)"
+                << "QScriptValue(123.0)"
+                << "QScriptValue(6.37e-8)"
+                << "QScriptValue(-6.37e-8)"
+                << "QScriptValue(0x43211234)"
+                << "QScriptValue(0x10000)"
+                << "QScriptValue(0x10001)"
+                << "QScriptValue(qSNaN())"
+                << "QScriptValue(qQNaN())"
+                << "QScriptValue(qInf())"
+                << "QScriptValue(-qInf())"
+                << "QScriptValue(\"NaN\")"
+                << "QScriptValue(\"Infinity\")"
+                << "QScriptValue(\"-Infinity\")"
+                << "QScriptValue(\"ciao\")"
+                << "QScriptValue(QString::fromLatin1(\"ciao\"))"
+                << "QScriptValue(QString(\"\"))"
+                << "QScriptValue(QString())"
+                << "QScriptValue(QString(\"0\"))"
+                << "QScriptValue(QString(\"123\"))"
+                << "QScriptValue(QString(\"12.4\"))"
+                << "QScriptValue(0, QScriptValue::UndefinedValue)"
+                << "QScriptValue(0, QScriptValue::NullValue)"
+                << "QScriptValue(0, true)"
+                << "QScriptValue(0, false)"
+                << "QScriptValue(0, int(122))"
+                << "QScriptValue(0, uint(124))"
+                << "QScriptValue(0, 0)"
+                << "QScriptValue(0, 0.0)"
+                << "QScriptValue(0, 123.0)"
+                << "QScriptValue(0, 6.37e-8)"
+                << "QScriptValue(0, -6.37e-8)"
+                << "QScriptValue(0, 0x43211234)"
+                << "QScriptValue(0, 0x10000)"
+                << "QScriptValue(0, 0x10001)"
+                << "QScriptValue(0, qSNaN())"
+                << "QScriptValue(0, qQNaN())"
+                << "QScriptValue(0, qInf())"
+                << "QScriptValue(0, -qInf())"
+                << "QScriptValue(0, \"NaN\")"
+                << "QScriptValue(0, \"Infinity\")"
+                << "QScriptValue(0, \"-Infinity\")"
+                << "QScriptValue(0, \"ciao\")"
+                << "QScriptValue(0, QString::fromLatin1(\"ciao\"))"
+                << "QScriptValue(0, QString(\"\"))"
+                << "QScriptValue(0, QString())"
+                << "QScriptValue(0, QString(\"0\"))"
+                << "QScriptValue(0, QString(\"123\"))"
+                << "QScriptValue(0, QString(\"12.3\"))"
+                << "QScriptValue(engine, QScriptValue::UndefinedValue)"
+                << "QScriptValue(engine, QScriptValue::NullValue)"
+                << "QScriptValue(engine, true)"
+                << "QScriptValue(engine, false)"
+                << "QScriptValue(engine, int(122))"
+                << "QScriptValue(engine, uint(124))"
+                << "QScriptValue(engine, 0)"
+                << "QScriptValue(engine, 0.0)"
+                << "QScriptValue(engine, 123.0)"
+                << "QScriptValue(engine, 6.37e-8)"
+                << "QScriptValue(engine, -6.37e-8)"
+                << "QScriptValue(engine, 0x43211234)"
+                << "QScriptValue(engine, 0x10000)"
+                << "QScriptValue(engine, 0x10001)"
+                << "QScriptValue(engine, qSNaN())"
+                << "QScriptValue(engine, qQNaN())"
+                << "QScriptValue(engine, qInf())"
+                << "QScriptValue(engine, -qInf())"
+                << "QScriptValue(engine, \"NaN\")"
+                << "QScriptValue(engine, \"Infinity\")"
+                << "QScriptValue(engine, \"-Infinity\")"
+                << "QScriptValue(engine, \"ciao\")"
+                << "QScriptValue(engine, QString::fromLatin1(\"ciao\"))"
+                << "QScriptValue(engine, QString(\"\"))"
+                << "QScriptValue(engine, QString())"
+                << "QScriptValue(engine, QString(\"0\"))"
+                << "QScriptValue(engine, QString(\"123\"))"
+                << "QScriptValue(engine, QString(\"1.23\"))"
+                << "engine->evaluate(\"[]\")"
+                << "engine->evaluate(\"{}\")"
+                << "engine->evaluate(\"Object.prototype\")"
+                << "engine->evaluate(\"Date.prototype\")"
+                << "engine->evaluate(\"Array.prototype\")"
+                << "engine->evaluate(\"Function.prototype\")"
+                << "engine->evaluate(\"Error.prototype\")"
+                << "engine->evaluate(\"Object\")"
+                << "engine->evaluate(\"Array\")"
+                << "engine->evaluate(\"Number\")"
+                << "engine->evaluate(\"Function\")"
+                << "engine->evaluate(\"(function() { return 1; })\")"
+                << "engine->evaluate(\"(function() { return 'ciao'; })\")"
+                << "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
+                << "engine->evaluate(\"/foo/\")"
+                << "engine->evaluate(\"new Object()\")"
+                << "engine->evaluate(\"new Array()\")"
+                << "engine->evaluate(\"new Error()\")"
+               ;
+    }
+    newRow(expr) << isValid.contains(expr);
+}
+
+void tst_QScriptValue::isValid_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isValid(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isValid)
+
+
+void tst_QScriptValue::isBool_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isBool_makeData(const char* expr)
+{
+    static QSet<QString> isBool;
+    if (isBool.isEmpty()) {
+        isBool << "QScriptValue(true)"
+                << "QScriptValue(false)"
+                << "QScriptValue(0, true)"
+                << "QScriptValue(0, false)"
+                << "QScriptValue(engine, true)"
+                << "QScriptValue(engine, false)"
+               ;
+    }
+    newRow(expr) << isBool.contains(expr);
+}
+
+void tst_QScriptValue::isBool_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isBool(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isBool)
+
+
+void tst_QScriptValue::isBoolean_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isBoolean_makeData(const char* expr)
+{
+    static QSet<QString> isBoolean;
+    if (isBoolean.isEmpty()) {
+        isBoolean << "QScriptValue(true)"
+                << "QScriptValue(false)"
+                << "QScriptValue(0, true)"
+                << "QScriptValue(0, false)"
+                << "QScriptValue(engine, true)"
+                << "QScriptValue(engine, false)"
+               ;
+    }
+    newRow(expr) << isBoolean.contains(expr);
+}
+
+void tst_QScriptValue::isBoolean_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isBoolean(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isBoolean)
+
+
+void tst_QScriptValue::isNumber_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isNumber_makeData(const char* expr)
+{
+    static QSet<QString> isNumber;
+    if (isNumber.isEmpty()) {
+        isNumber << "QScriptValue(int(122))"
+                << "QScriptValue(uint(124))"
+                << "QScriptValue(0)"
+                << "QScriptValue(0.0)"
+                << "QScriptValue(123.0)"
+                << "QScriptValue(6.37e-8)"
+                << "QScriptValue(-6.37e-8)"
+                << "QScriptValue(0x43211234)"
+                << "QScriptValue(0x10000)"
+                << "QScriptValue(0x10001)"
+                << "QScriptValue(qSNaN())"
+                << "QScriptValue(qQNaN())"
+                << "QScriptValue(qInf())"
+                << "QScriptValue(-qInf())"
+                << "QScriptValue(0, int(122))"
+                << "QScriptValue(0, uint(124))"
+                << "QScriptValue(0, 0)"
+                << "QScriptValue(0, 0.0)"
+                << "QScriptValue(0, 123.0)"
+                << "QScriptValue(0, 6.37e-8)"
+                << "QScriptValue(0, -6.37e-8)"
+                << "QScriptValue(0, 0x43211234)"
+                << "QScriptValue(0, 0x10000)"
+                << "QScriptValue(0, 0x10001)"
+                << "QScriptValue(0, qSNaN())"
+                << "QScriptValue(0, qQNaN())"
+                << "QScriptValue(0, qInf())"
+                << "QScriptValue(0, -qInf())"
+                << "QScriptValue(engine, int(122))"
+                << "QScriptValue(engine, uint(124))"
+                << "QScriptValue(engine, 0)"
+                << "QScriptValue(engine, 0.0)"
+                << "QScriptValue(engine, 123.0)"
+                << "QScriptValue(engine, 6.37e-8)"
+                << "QScriptValue(engine, -6.37e-8)"
+                << "QScriptValue(engine, 0x43211234)"
+                << "QScriptValue(engine, 0x10000)"
+                << "QScriptValue(engine, 0x10001)"
+                << "QScriptValue(engine, qSNaN())"
+                << "QScriptValue(engine, qQNaN())"
+                << "QScriptValue(engine, qInf())"
+                << "QScriptValue(engine, -qInf())"
+               ;
+    }
+    newRow(expr) << isNumber.contains(expr);
+}
+
+void tst_QScriptValue::isNumber_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isNumber(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isNumber)
+
+
+void tst_QScriptValue::isFunction_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isFunction_makeData(const char* expr)
+{
+    static QSet<QString> isFunction;
+    if (isFunction.isEmpty()) {
+        isFunction << "engine->evaluate(\"Function.prototype\")"
+                << "engine->evaluate(\"Object\")"
+                << "engine->evaluate(\"Array\")"
+                << "engine->evaluate(\"Number\")"
+                << "engine->evaluate(\"Function\")"
+                << "engine->evaluate(\"(function() { return 1; })\")"
+                << "engine->evaluate(\"(function() { return 'ciao'; })\")"
+                << "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
+                << "engine->evaluate(\"/foo/\")"
+               ;
+    }
+    newRow(expr) << isFunction.contains(expr);
+}
+
+void tst_QScriptValue::isFunction_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isFunction(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isFunction)
+
+
+void tst_QScriptValue::isNull_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isNull_makeData(const char* expr)
+{
+    static QSet<QString> isNull;
+    if (isNull.isEmpty()) {
+        isNull << "QScriptValue(QScriptValue::NullValue)"
+                << "QScriptValue(0, QScriptValue::NullValue)"
+                << "QScriptValue(engine, QScriptValue::NullValue)"
+               ;
+    }
+    newRow(expr) << isNull.contains(expr);
+}
+
+void tst_QScriptValue::isNull_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isNull(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isNull)
+
+
+void tst_QScriptValue::isString_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isString_makeData(const char* expr)
+{
+    static QSet<QString> isString;
+    if (isString.isEmpty()) {
+        isString << "QScriptValue(\"NaN\")"
+                << "QScriptValue(\"Infinity\")"
+                << "QScriptValue(\"-Infinity\")"
+                << "QScriptValue(\"ciao\")"
+                << "QScriptValue(QString::fromLatin1(\"ciao\"))"
+                << "QScriptValue(QString(\"\"))"
+                << "QScriptValue(QString())"
+                << "QScriptValue(QString(\"0\"))"
+                << "QScriptValue(QString(\"123\"))"
+                << "QScriptValue(QString(\"12.4\"))"
+                << "QScriptValue(0, \"NaN\")"
+                << "QScriptValue(0, \"Infinity\")"
+                << "QScriptValue(0, \"-Infinity\")"
+                << "QScriptValue(0, \"ciao\")"
+                << "QScriptValue(0, QString::fromLatin1(\"ciao\"))"
+                << "QScriptValue(0, QString(\"\"))"
+                << "QScriptValue(0, QString())"
+                << "QScriptValue(0, QString(\"0\"))"
+                << "QScriptValue(0, QString(\"123\"))"
+                << "QScriptValue(0, QString(\"12.3\"))"
+                << "QScriptValue(engine, \"NaN\")"
+                << "QScriptValue(engine, \"Infinity\")"
+                << "QScriptValue(engine, \"-Infinity\")"
+                << "QScriptValue(engine, \"ciao\")"
+                << "QScriptValue(engine, QString::fromLatin1(\"ciao\"))"
+                << "QScriptValue(engine, QString(\"\"))"
+                << "QScriptValue(engine, QString())"
+                << "QScriptValue(engine, QString(\"0\"))"
+                << "QScriptValue(engine, QString(\"123\"))"
+                << "QScriptValue(engine, QString(\"1.23\"))"
+               ;
+    }
+    newRow(expr) << isString.contains(expr);
+}
+
+void tst_QScriptValue::isString_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isString(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isString)
+
+
+void tst_QScriptValue::isUndefined_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isUndefined_makeData(const char* expr)
+{
+    static QSet<QString> isUndefined;
+    if (isUndefined.isEmpty()) {
+        isUndefined << "QScriptValue(QScriptValue::UndefinedValue)"
+                << "QScriptValue(0, QScriptValue::UndefinedValue)"
+                << "QScriptValue(engine, QScriptValue::UndefinedValue)"
+                << "engine->evaluate(\"{}\")"
+               ;
+    }
+    newRow(expr) << isUndefined.contains(expr);
+}
+
+void tst_QScriptValue::isUndefined_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isUndefined(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isUndefined)
+
+
+
+
+
+void tst_QScriptValue::isObject_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isObject_makeData(const char* expr)
+{
+    static QSet<QString> isObject;
+    if (isObject.isEmpty()) {
+        isObject << "engine->evaluate(\"[]\")"
+                << "engine->evaluate(\"Object.prototype\")"
+                << "engine->evaluate(\"Date.prototype\")"
+                << "engine->evaluate(\"Array.prototype\")"
+                << "engine->evaluate(\"Function.prototype\")"
+                << "engine->evaluate(\"Error.prototype\")"
+                << "engine->evaluate(\"Object\")"
+                << "engine->evaluate(\"Array\")"
+                << "engine->evaluate(\"Number\")"
+                << "engine->evaluate(\"Function\")"
+                << "engine->evaluate(\"(function() { return 1; })\")"
+                << "engine->evaluate(\"(function() { return 'ciao'; })\")"
+                << "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
+                << "engine->evaluate(\"/foo/\")"
+                << "engine->evaluate(\"new Object()\")"
+                << "engine->evaluate(\"new Array()\")"
+                << "engine->evaluate(\"new Error()\")"
+               ;
+    }
+    newRow(expr) << isObject.contains(expr);
+}
+
+void tst_QScriptValue::isObject_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isObject(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isObject)
+
+
+void tst_QScriptValue::isDate_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isDate_makeData(const char* expr)
+{
+    static QSet<QString> isDate;
+    if (isDate.isEmpty()) {
+        isDate << "engine->evaluate(\"Date.prototype\")"
+               ;
+    }
+    newRow(expr) << isDate.contains(expr);
+}
+
+void tst_QScriptValue::isDate_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isDate(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isDate)
+
+
+void tst_QScriptValue::isRegExp_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isRegExp_makeData(const char* expr)
+{
+    static QSet<QString> isRegExp;
+    if (isRegExp.isEmpty()) {
+        isRegExp << "engine->evaluate(\"/foo/\")"
+               ;
+    }
+    newRow(expr) << isRegExp.contains(expr);
+}
+
+void tst_QScriptValue::isRegExp_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isRegExp(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isRegExp)
+
+
+void tst_QScriptValue::isArray_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isArray_makeData(const char* expr)
+{
+    static QSet<QString> isArray;
+    if (isArray.isEmpty()) {
+        isArray << "engine->evaluate(\"[]\")"
+                << "engine->evaluate(\"Array.prototype\")"
+                << "engine->evaluate(\"new Array()\")"
+               ;
+    }
+    newRow(expr) << isArray.contains(expr);
+}
+
+void tst_QScriptValue::isArray_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isArray(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isArray)
+
+
+void tst_QScriptValue::isError_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::isError_makeData(const char* expr)
+{
+    static QSet<QString> isError;
+    if (isError.isEmpty()) {
+        isError << "engine->evaluate(\"Error.prototype\")"
+                << "engine->evaluate(\"new Error()\")"
+               ;
+    }
+    newRow(expr) << isError.contains(expr);
+}
+
+void tst_QScriptValue::isError_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.isError(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isError)
+
+
+
+void tst_QScriptValue::toString_initData()
+{
+    QTest::addColumn<QString>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toString_makeData(const char* expr)
+{
+    static QHash<QString, QString> toString;
+    if (toString.isEmpty()) {
+        toString.insert("QScriptValue()", "");
+        toString.insert("QScriptValue(QScriptValue::UndefinedValue)", "undefined");
+        toString.insert("QScriptValue(QScriptValue::NullValue)", "null");
+        toString.insert("QScriptValue(true)", "true");
+        toString.insert("QScriptValue(false)", "false");
+        toString.insert("QScriptValue(int(122))", "122");
+        toString.insert("QScriptValue(uint(124))", "124");
+        toString.insert("QScriptValue(0)", "0");
+        toString.insert("QScriptValue(0.0)", "0");
+        toString.insert("QScriptValue(123.0)", "123");
+        toString.insert("QScriptValue(6.37e-8)", "6.37e-8");
+        toString.insert("QScriptValue(-6.37e-8)", "-6.37e-8");
+        toString.insert("QScriptValue(0x43211234)", "1126240820");
+        toString.insert("QScriptValue(0x10000)", "65536");
+        toString.insert("QScriptValue(0x10001)", "65537");
+        toString.insert("QScriptValue(qSNaN())", "NaN");
+        toString.insert("QScriptValue(qQNaN())", "NaN");
+        toString.insert("QScriptValue(qInf())", "Infinity");
+        toString.insert("QScriptValue(-qInf())", "-Infinity");
+        toString.insert("QScriptValue(\"NaN\")", "NaN");
+        toString.insert("QScriptValue(\"Infinity\")", "Infinity");
+        toString.insert("QScriptValue(\"-Infinity\")", "-Infinity");
+        toString.insert("QScriptValue(\"ciao\")", "ciao");
+        toString.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", "ciao");
+        toString.insert("QScriptValue(QString(\"\"))", "");
+        toString.insert("QScriptValue(QString())", "");
+        toString.insert("QScriptValue(QString(\"0\"))", "0");
+        toString.insert("QScriptValue(QString(\"123\"))", "123");
+        toString.insert("QScriptValue(QString(\"12.4\"))", "12.4");
+        toString.insert("QScriptValue(0, QScriptValue::UndefinedValue)", "undefined");
+        toString.insert("QScriptValue(0, QScriptValue::NullValue)", "null");
+        toString.insert("QScriptValue(0, true)", "true");
+        toString.insert("QScriptValue(0, false)", "false");
+        toString.insert("QScriptValue(0, int(122))", "122");
+        toString.insert("QScriptValue(0, uint(124))", "124");
+        toString.insert("QScriptValue(0, 0)", "0");
+        toString.insert("QScriptValue(0, 0.0)", "0");
+        toString.insert("QScriptValue(0, 123.0)", "123");
+        toString.insert("QScriptValue(0, 6.37e-8)", "6.37e-8");
+        toString.insert("QScriptValue(0, -6.37e-8)", "-6.37e-8");
+        toString.insert("QScriptValue(0, 0x43211234)", "1126240820");
+        toString.insert("QScriptValue(0, 0x10000)", "65536");
+        toString.insert("QScriptValue(0, 0x10001)", "65537");
+        toString.insert("QScriptValue(0, qSNaN())", "NaN");
+        toString.insert("QScriptValue(0, qQNaN())", "NaN");
+        toString.insert("QScriptValue(0, qInf())", "Infinity");
+        toString.insert("QScriptValue(0, -qInf())", "-Infinity");
+        toString.insert("QScriptValue(0, \"NaN\")", "NaN");
+        toString.insert("QScriptValue(0, \"Infinity\")", "Infinity");
+        toString.insert("QScriptValue(0, \"-Infinity\")", "-Infinity");
+        toString.insert("QScriptValue(0, \"ciao\")", "ciao");
+        toString.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", "ciao");
+        toString.insert("QScriptValue(0, QString(\"\"))", "");
+        toString.insert("QScriptValue(0, QString())", "");
+        toString.insert("QScriptValue(0, QString(\"0\"))", "0");
+        toString.insert("QScriptValue(0, QString(\"123\"))", "123");
+        toString.insert("QScriptValue(0, QString(\"12.3\"))", "12.3");
+        toString.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", "undefined");
+        toString.insert("QScriptValue(engine, QScriptValue::NullValue)", "null");
+        toString.insert("QScriptValue(engine, true)", "true");
+        toString.insert("QScriptValue(engine, false)", "false");
+        toString.insert("QScriptValue(engine, int(122))", "122");
+        toString.insert("QScriptValue(engine, uint(124))", "124");
+        toString.insert("QScriptValue(engine, 0)", "0");
+        toString.insert("QScriptValue(engine, 0.0)", "0");
+        toString.insert("QScriptValue(engine, 123.0)", "123");
+        toString.insert("QScriptValue(engine, 6.37e-8)", "6.37e-8");
+        toString.insert("QScriptValue(engine, -6.37e-8)", "-6.37e-8");
+        toString.insert("QScriptValue(engine, 0x43211234)", "1126240820");
+        toString.insert("QScriptValue(engine, 0x10000)", "65536");
+        toString.insert("QScriptValue(engine, 0x10001)", "65537");
+        toString.insert("QScriptValue(engine, qSNaN())", "NaN");
+        toString.insert("QScriptValue(engine, qQNaN())", "NaN");
+        toString.insert("QScriptValue(engine, qInf())", "Infinity");
+        toString.insert("QScriptValue(engine, -qInf())", "-Infinity");
+        toString.insert("QScriptValue(engine, \"NaN\")", "NaN");
+        toString.insert("QScriptValue(engine, \"Infinity\")", "Infinity");
+        toString.insert("QScriptValue(engine, \"-Infinity\")", "-Infinity");
+        toString.insert("QScriptValue(engine, \"ciao\")", "ciao");
+        toString.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", "ciao");
+        toString.insert("QScriptValue(engine, QString(\"\"))", "");
+        toString.insert("QScriptValue(engine, QString())", "");
+        toString.insert("QScriptValue(engine, QString(\"0\"))", "0");
+        toString.insert("QScriptValue(engine, QString(\"123\"))", "123");
+        toString.insert("QScriptValue(engine, QString(\"1.23\"))", "1.23");
+        toString.insert("engine->evaluate(\"[]\")", "");
+        toString.insert("engine->evaluate(\"{}\")", "undefined");
+        toString.insert("engine->evaluate(\"Object.prototype\")", "[object Object]");
+        toString.insert("engine->evaluate(\"Date.prototype\")", "Invalid Date");
+        toString.insert("engine->evaluate(\"Array.prototype\")", "");
+        toString.insert("engine->evaluate(\"Function.prototype\")", "function () {\n    [native code]\n}");
+        toString.insert("engine->evaluate(\"Error.prototype\")", "Error: Unknown error");
+        toString.insert("engine->evaluate(\"Object\")", "function Object() {\n    [native code]\n}");
+        toString.insert("engine->evaluate(\"Array\")", "function Array() {\n    [native code]\n}");
+        toString.insert("engine->evaluate(\"Number\")", "function Number() {\n    [native code]\n}");
+        toString.insert("engine->evaluate(\"Function\")", "function Function() {\n    [native code]\n}");
+        toString.insert("engine->evaluate(\"(function() { return 1; })\")", "function () { return 1; }");
+        toString.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", "function () { return 'ciao'; }");
+        toString.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", "function () { throw new Error('foo'); }");
+        toString.insert("engine->evaluate(\"/foo/\")", "/foo/");
+        toString.insert("engine->evaluate(\"new Object()\")", "[object Object]");
+        toString.insert("engine->evaluate(\"new Array()\")", "");
+        toString.insert("engine->evaluate(\"new Error()\")", "Error: Unknown error");
+    }
+    newRow(expr) << toString.value(expr);
+}
+
+void tst_QScriptValue::toString_test(const char*, const QScriptValue& value)
+{
+    QFETCH(QString, expected);
+    QCOMPARE(value.toString(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toString)
+
+
+void tst_QScriptValue::toNumber_initData()
+{
+    QTest::addColumn<qsreal>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toNumber_makeData(const char* expr)
+{
+    static QHash<QString, qsreal> toNumber;
+    if (toNumber.isEmpty()) {
+        toNumber.insert("QScriptValue()", 0);
+        toNumber.insert("QScriptValue(QScriptValue::UndefinedValue)", qQNaN());
+        toNumber.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        toNumber.insert("QScriptValue(true)", 1);
+        toNumber.insert("QScriptValue(false)", 0);
+        toNumber.insert("QScriptValue(int(122))", 122);
+        toNumber.insert("QScriptValue(uint(124))", 124);
+        toNumber.insert("QScriptValue(0)", 0);
+        toNumber.insert("QScriptValue(0.0)", 0);
+        toNumber.insert("QScriptValue(123.0)", 123);
+        toNumber.insert("QScriptValue(6.37e-8)", 6.369999999999999e-08);
+        toNumber.insert("QScriptValue(-6.37e-8)", -6.369999999999999e-08);
+        toNumber.insert("QScriptValue(0x43211234)", 1126240820);
+        toNumber.insert("QScriptValue(0x10000)", 65536);
+        toNumber.insert("QScriptValue(0x10001)", 65537);
+        toNumber.insert("QScriptValue(qSNaN())", qQNaN());
+        toNumber.insert("QScriptValue(qQNaN())", qQNaN());
+        toNumber.insert("QScriptValue(qInf())", qInf());
+        toNumber.insert("QScriptValue(-qInf())", qInf());
+        toNumber.insert("QScriptValue(\"NaN\")", qQNaN());
+        toNumber.insert("QScriptValue(\"Infinity\")", qInf());
+        toNumber.insert("QScriptValue(\"-Infinity\")", qInf());
+        toNumber.insert("QScriptValue(\"ciao\")", qQNaN());
+        toNumber.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", qQNaN());
+        toNumber.insert("QScriptValue(QString(\"\"))", 0);
+        toNumber.insert("QScriptValue(QString())", 0);
+        toNumber.insert("QScriptValue(QString(\"0\"))", 0);
+        toNumber.insert("QScriptValue(QString(\"123\"))", 123);
+        toNumber.insert("QScriptValue(QString(\"12.4\"))", 12.4);
+        toNumber.insert("QScriptValue(0, QScriptValue::UndefinedValue)", qQNaN());
+        toNumber.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        toNumber.insert("QScriptValue(0, true)", 1);
+        toNumber.insert("QScriptValue(0, false)", 0);
+        toNumber.insert("QScriptValue(0, int(122))", 122);
+        toNumber.insert("QScriptValue(0, uint(124))", 124);
+        toNumber.insert("QScriptValue(0, 0)", 0);
+        toNumber.insert("QScriptValue(0, 0.0)", 0);
+        toNumber.insert("QScriptValue(0, 123.0)", 123);
+        toNumber.insert("QScriptValue(0, 6.37e-8)", 6.369999999999999e-08);
+        toNumber.insert("QScriptValue(0, -6.37e-8)", -6.369999999999999e-08);
+        toNumber.insert("QScriptValue(0, 0x43211234)", 1126240820);
+        toNumber.insert("QScriptValue(0, 0x10000)", 65536);
+        toNumber.insert("QScriptValue(0, 0x10001)", 65537);
+        toNumber.insert("QScriptValue(0, qSNaN())", qQNaN());
+        toNumber.insert("QScriptValue(0, qQNaN())", qQNaN());
+        toNumber.insert("QScriptValue(0, qInf())", qInf());
+        toNumber.insert("QScriptValue(0, -qInf())", qInf());
+        toNumber.insert("QScriptValue(0, \"NaN\")", qQNaN());
+        toNumber.insert("QScriptValue(0, \"Infinity\")", qInf());
+        toNumber.insert("QScriptValue(0, \"-Infinity\")", qInf());
+        toNumber.insert("QScriptValue(0, \"ciao\")", qQNaN());
+        toNumber.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", qQNaN());
+        toNumber.insert("QScriptValue(0, QString(\"\"))", 0);
+        toNumber.insert("QScriptValue(0, QString())", 0);
+        toNumber.insert("QScriptValue(0, QString(\"0\"))", 0);
+        toNumber.insert("QScriptValue(0, QString(\"123\"))", 123);
+        toNumber.insert("QScriptValue(0, QString(\"12.3\"))", 12.3);
+        toNumber.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", qQNaN());
+        toNumber.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        toNumber.insert("QScriptValue(engine, true)", 1);
+        toNumber.insert("QScriptValue(engine, false)", 0);
+        toNumber.insert("QScriptValue(engine, int(122))", 122);
+        toNumber.insert("QScriptValue(engine, uint(124))", 124);
+        toNumber.insert("QScriptValue(engine, 0)", 0);
+        toNumber.insert("QScriptValue(engine, 0.0)", 0);
+        toNumber.insert("QScriptValue(engine, 123.0)", 123);
+        toNumber.insert("QScriptValue(engine, 6.37e-8)", 6.369999999999999e-08);
+        toNumber.insert("QScriptValue(engine, -6.37e-8)", -6.369999999999999e-08);
+        toNumber.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+        toNumber.insert("QScriptValue(engine, 0x10000)", 65536);
+        toNumber.insert("QScriptValue(engine, 0x10001)", 65537);
+        toNumber.insert("QScriptValue(engine, qSNaN())", qQNaN());
+        toNumber.insert("QScriptValue(engine, qQNaN())", qQNaN());
+        toNumber.insert("QScriptValue(engine, qInf())", qInf());
+        toNumber.insert("QScriptValue(engine, -qInf())", qInf());
+        toNumber.insert("QScriptValue(engine, \"NaN\")", qQNaN());
+        toNumber.insert("QScriptValue(engine, \"Infinity\")", qInf());
+        toNumber.insert("QScriptValue(engine, \"-Infinity\")", qInf());
+        toNumber.insert("QScriptValue(engine, \"ciao\")", qQNaN());
+        toNumber.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", qQNaN());
+        toNumber.insert("QScriptValue(engine, QString(\"\"))", 0);
+        toNumber.insert("QScriptValue(engine, QString())", 0);
+        toNumber.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        toNumber.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        toNumber.insert("QScriptValue(engine, QString(\"1.23\"))", 1.23);
+        toNumber.insert("engine->evaluate(\"[]\")", 0);
+        toNumber.insert("engine->evaluate(\"{}\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Object.prototype\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Date.prototype\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Array.prototype\")", 0);
+        toNumber.insert("engine->evaluate(\"Function.prototype\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Error.prototype\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Object\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Array\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Number\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"Function\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"(function() { return 1; })\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"/foo/\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"new Object()\")", qQNaN());
+        toNumber.insert("engine->evaluate(\"new Array()\")", 0);
+        toNumber.insert("engine->evaluate(\"new Error()\")", qQNaN());
+    }
+    newRow(expr) << toNumber.value(expr);
+}
+
+void tst_QScriptValue::toNumber_test(const char*, const QScriptValue& value)
+{
+    QFETCH(qsreal, expected);
+    if (qIsNaN(expected)) {
+        QVERIFY(qIsNaN(value.toNumber()));
+        return;
+    }
+    if (qIsInf(expected)) {
+        QVERIFY(qIsInf(value.toNumber()));
+        return;
+    }
+    QCOMPARE(value.toNumber(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toNumber)
+
+
+void tst_QScriptValue::toBool_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toBool_makeData(const char* expr)
+{
+    static QHash<QString, bool> toBool;
+    if (toBool.isEmpty()) {
+        toBool.insert("QScriptValue()", false);
+        toBool.insert("QScriptValue(QScriptValue::UndefinedValue)", false);
+        toBool.insert("QScriptValue(QScriptValue::NullValue)", false);
+        toBool.insert("QScriptValue(true)", true);
+        toBool.insert("QScriptValue(false)", false);
+        toBool.insert("QScriptValue(int(122))", true);
+        toBool.insert("QScriptValue(uint(124))", true);
+        toBool.insert("QScriptValue(0)", false);
+        toBool.insert("QScriptValue(0.0)", false);
+        toBool.insert("QScriptValue(123.0)", true);
+        toBool.insert("QScriptValue(6.37e-8)", true);
+        toBool.insert("QScriptValue(-6.37e-8)", true);
+        toBool.insert("QScriptValue(0x43211234)", true);
+        toBool.insert("QScriptValue(0x10000)", true);
+        toBool.insert("QScriptValue(0x10001)", true);
+        toBool.insert("QScriptValue(qSNaN())", false);
+        toBool.insert("QScriptValue(qQNaN())", false);
+        toBool.insert("QScriptValue(qInf())", true);
+        toBool.insert("QScriptValue(-qInf())", true);
+        toBool.insert("QScriptValue(\"NaN\")", true);
+        toBool.insert("QScriptValue(\"Infinity\")", true);
+        toBool.insert("QScriptValue(\"-Infinity\")", true);
+        toBool.insert("QScriptValue(\"ciao\")", true);
+        toBool.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", true);
+        toBool.insert("QScriptValue(QString(\"\"))", false);
+        toBool.insert("QScriptValue(QString())", false);
+        toBool.insert("QScriptValue(QString(\"0\"))", true);
+        toBool.insert("QScriptValue(QString(\"123\"))", true);
+        toBool.insert("QScriptValue(QString(\"12.4\"))", true);
+        toBool.insert("QScriptValue(0, QScriptValue::UndefinedValue)", false);
+        toBool.insert("QScriptValue(0, QScriptValue::NullValue)", false);
+        toBool.insert("QScriptValue(0, true)", true);
+        toBool.insert("QScriptValue(0, false)", false);
+        toBool.insert("QScriptValue(0, int(122))", true);
+        toBool.insert("QScriptValue(0, uint(124))", true);
+        toBool.insert("QScriptValue(0, 0)", false);
+        toBool.insert("QScriptValue(0, 0.0)", false);
+        toBool.insert("QScriptValue(0, 123.0)", true);
+        toBool.insert("QScriptValue(0, 6.37e-8)", true);
+        toBool.insert("QScriptValue(0, -6.37e-8)", true);
+        toBool.insert("QScriptValue(0, 0x43211234)", true);
+        toBool.insert("QScriptValue(0, 0x10000)", true);
+        toBool.insert("QScriptValue(0, 0x10001)", true);
+        toBool.insert("QScriptValue(0, qSNaN())", false);
+        toBool.insert("QScriptValue(0, qQNaN())", false);
+        toBool.insert("QScriptValue(0, qInf())", true);
+        toBool.insert("QScriptValue(0, -qInf())", true);
+        toBool.insert("QScriptValue(0, \"NaN\")", true);
+        toBool.insert("QScriptValue(0, \"Infinity\")", true);
+        toBool.insert("QScriptValue(0, \"-Infinity\")", true);
+        toBool.insert("QScriptValue(0, \"ciao\")", true);
+        toBool.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", true);
+        toBool.insert("QScriptValue(0, QString(\"\"))", false);
+        toBool.insert("QScriptValue(0, QString())", false);
+        toBool.insert("QScriptValue(0, QString(\"0\"))", true);
+        toBool.insert("QScriptValue(0, QString(\"123\"))", true);
+        toBool.insert("QScriptValue(0, QString(\"12.3\"))", true);
+        toBool.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", false);
+        toBool.insert("QScriptValue(engine, QScriptValue::NullValue)", false);
+        toBool.insert("QScriptValue(engine, true)", true);
+        toBool.insert("QScriptValue(engine, false)", false);
+        toBool.insert("QScriptValue(engine, int(122))", true);
+        toBool.insert("QScriptValue(engine, uint(124))", true);
+        toBool.insert("QScriptValue(engine, 0)", false);
+        toBool.insert("QScriptValue(engine, 0.0)", false);
+        toBool.insert("QScriptValue(engine, 123.0)", true);
+        toBool.insert("QScriptValue(engine, 6.37e-8)", true);
+        toBool.insert("QScriptValue(engine, -6.37e-8)", true);
+        toBool.insert("QScriptValue(engine, 0x43211234)", true);
+        toBool.insert("QScriptValue(engine, 0x10000)", true);
+        toBool.insert("QScriptValue(engine, 0x10001)", true);
+        toBool.insert("QScriptValue(engine, qSNaN())", false);
+        toBool.insert("QScriptValue(engine, qQNaN())", false);
+        toBool.insert("QScriptValue(engine, qInf())", true);
+        toBool.insert("QScriptValue(engine, -qInf())", true);
+        toBool.insert("QScriptValue(engine, \"NaN\")", true);
+        toBool.insert("QScriptValue(engine, \"Infinity\")", true);
+        toBool.insert("QScriptValue(engine, \"-Infinity\")", true);
+        toBool.insert("QScriptValue(engine, \"ciao\")", true);
+        toBool.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", true);
+        toBool.insert("QScriptValue(engine, QString(\"\"))", false);
+        toBool.insert("QScriptValue(engine, QString())", false);
+        toBool.insert("QScriptValue(engine, QString(\"0\"))", true);
+        toBool.insert("QScriptValue(engine, QString(\"123\"))", true);
+        toBool.insert("QScriptValue(engine, QString(\"1.23\"))", true);
+        toBool.insert("engine->evaluate(\"[]\")", true);
+        toBool.insert("engine->evaluate(\"{}\")", false);
+        toBool.insert("engine->evaluate(\"Object.prototype\")", true);
+        toBool.insert("engine->evaluate(\"Date.prototype\")", true);
+        toBool.insert("engine->evaluate(\"Array.prototype\")", true);
+        toBool.insert("engine->evaluate(\"Function.prototype\")", true);
+        toBool.insert("engine->evaluate(\"Error.prototype\")", true);
+        toBool.insert("engine->evaluate(\"Object\")", true);
+        toBool.insert("engine->evaluate(\"Array\")", true);
+        toBool.insert("engine->evaluate(\"Number\")", true);
+        toBool.insert("engine->evaluate(\"Function\")", true);
+        toBool.insert("engine->evaluate(\"(function() { return 1; })\")", true);
+        toBool.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", true);
+        toBool.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", true);
+        toBool.insert("engine->evaluate(\"/foo/\")", true);
+        toBool.insert("engine->evaluate(\"new Object()\")", true);
+        toBool.insert("engine->evaluate(\"new Array()\")", true);
+        toBool.insert("engine->evaluate(\"new Error()\")", true);
+    }
+    newRow(expr) << toBool.value(expr);
+}
+
+void tst_QScriptValue::toBool_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.toBool(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toBool)
+
+
+void tst_QScriptValue::toBoolean_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toBoolean_makeData(const char* expr)
+{
+    static QHash<QString, bool> toBoolean;
+    if (toBoolean.isEmpty()) {
+        toBoolean.insert("QScriptValue()", false);
+        toBoolean.insert("QScriptValue(QScriptValue::UndefinedValue)", false);
+        toBoolean.insert("QScriptValue(QScriptValue::NullValue)", false);
+        toBoolean.insert("QScriptValue(true)", true);
+        toBoolean.insert("QScriptValue(false)", false);
+        toBoolean.insert("QScriptValue(int(122))", true);
+        toBoolean.insert("QScriptValue(uint(124))", true);
+        toBoolean.insert("QScriptValue(0)", false);
+        toBoolean.insert("QScriptValue(0.0)", false);
+        toBoolean.insert("QScriptValue(123.0)", true);
+        toBoolean.insert("QScriptValue(6.37e-8)", true);
+        toBoolean.insert("QScriptValue(-6.37e-8)", true);
+        toBoolean.insert("QScriptValue(0x43211234)", true);
+        toBoolean.insert("QScriptValue(0x10000)", true);
+        toBoolean.insert("QScriptValue(0x10001)", true);
+        toBoolean.insert("QScriptValue(qSNaN())", false);
+        toBoolean.insert("QScriptValue(qQNaN())", false);
+        toBoolean.insert("QScriptValue(qInf())", true);
+        toBoolean.insert("QScriptValue(-qInf())", true);
+        toBoolean.insert("QScriptValue(\"NaN\")", true);
+        toBoolean.insert("QScriptValue(\"Infinity\")", true);
+        toBoolean.insert("QScriptValue(\"-Infinity\")", true);
+        toBoolean.insert("QScriptValue(\"ciao\")", true);
+        toBoolean.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", true);
+        toBoolean.insert("QScriptValue(QString(\"\"))", false);
+        toBoolean.insert("QScriptValue(QString())", false);
+        toBoolean.insert("QScriptValue(QString(\"0\"))", true);
+        toBoolean.insert("QScriptValue(QString(\"123\"))", true);
+        toBoolean.insert("QScriptValue(QString(\"12.4\"))", true);
+        toBoolean.insert("QScriptValue(0, QScriptValue::UndefinedValue)", false);
+        toBoolean.insert("QScriptValue(0, QScriptValue::NullValue)", false);
+        toBoolean.insert("QScriptValue(0, true)", true);
+        toBoolean.insert("QScriptValue(0, false)", false);
+        toBoolean.insert("QScriptValue(0, int(122))", true);
+        toBoolean.insert("QScriptValue(0, uint(124))", true);
+        toBoolean.insert("QScriptValue(0, 0)", false);
+        toBoolean.insert("QScriptValue(0, 0.0)", false);
+        toBoolean.insert("QScriptValue(0, 123.0)", true);
+        toBoolean.insert("QScriptValue(0, 6.37e-8)", true);
+        toBoolean.insert("QScriptValue(0, -6.37e-8)", true);
+        toBoolean.insert("QScriptValue(0, 0x43211234)", true);
+        toBoolean.insert("QScriptValue(0, 0x10000)", true);
+        toBoolean.insert("QScriptValue(0, 0x10001)", true);
+        toBoolean.insert("QScriptValue(0, qSNaN())", false);
+        toBoolean.insert("QScriptValue(0, qQNaN())", false);
+        toBoolean.insert("QScriptValue(0, qInf())", true);
+        toBoolean.insert("QScriptValue(0, -qInf())", true);
+        toBoolean.insert("QScriptValue(0, \"NaN\")", true);
+        toBoolean.insert("QScriptValue(0, \"Infinity\")", true);
+        toBoolean.insert("QScriptValue(0, \"-Infinity\")", true);
+        toBoolean.insert("QScriptValue(0, \"ciao\")", true);
+        toBoolean.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", true);
+        toBoolean.insert("QScriptValue(0, QString(\"\"))", false);
+        toBoolean.insert("QScriptValue(0, QString())", false);
+        toBoolean.insert("QScriptValue(0, QString(\"0\"))", true);
+        toBoolean.insert("QScriptValue(0, QString(\"123\"))", true);
+        toBoolean.insert("QScriptValue(0, QString(\"12.3\"))", true);
+        toBoolean.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", false);
+        toBoolean.insert("QScriptValue(engine, QScriptValue::NullValue)", false);
+        toBoolean.insert("QScriptValue(engine, true)", true);
+        toBoolean.insert("QScriptValue(engine, false)", false);
+        toBoolean.insert("QScriptValue(engine, int(122))", true);
+        toBoolean.insert("QScriptValue(engine, uint(124))", true);
+        toBoolean.insert("QScriptValue(engine, 0)", false);
+        toBoolean.insert("QScriptValue(engine, 0.0)", false);
+        toBoolean.insert("QScriptValue(engine, 123.0)", true);
+        toBoolean.insert("QScriptValue(engine, 6.37e-8)", true);
+        toBoolean.insert("QScriptValue(engine, -6.37e-8)", true);
+        toBoolean.insert("QScriptValue(engine, 0x43211234)", true);
+        toBoolean.insert("QScriptValue(engine, 0x10000)", true);
+        toBoolean.insert("QScriptValue(engine, 0x10001)", true);
+        toBoolean.insert("QScriptValue(engine, qSNaN())", false);
+        toBoolean.insert("QScriptValue(engine, qQNaN())", false);
+        toBoolean.insert("QScriptValue(engine, qInf())", true);
+        toBoolean.insert("QScriptValue(engine, -qInf())", true);
+        toBoolean.insert("QScriptValue(engine, \"NaN\")", true);
+        toBoolean.insert("QScriptValue(engine, \"Infinity\")", true);
+        toBoolean.insert("QScriptValue(engine, \"-Infinity\")", true);
+        toBoolean.insert("QScriptValue(engine, \"ciao\")", true);
+        toBoolean.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", true);
+        toBoolean.insert("QScriptValue(engine, QString(\"\"))", false);
+        toBoolean.insert("QScriptValue(engine, QString())", false);
+        toBoolean.insert("QScriptValue(engine, QString(\"0\"))", true);
+        toBoolean.insert("QScriptValue(engine, QString(\"123\"))", true);
+        toBoolean.insert("QScriptValue(engine, QString(\"1.23\"))", true);
+        toBoolean.insert("engine->evaluate(\"[]\")", true);
+        toBoolean.insert("engine->evaluate(\"{}\")", false);
+        toBoolean.insert("engine->evaluate(\"Object.prototype\")", true);
+        toBoolean.insert("engine->evaluate(\"Date.prototype\")", true);
+        toBoolean.insert("engine->evaluate(\"Array.prototype\")", true);
+        toBoolean.insert("engine->evaluate(\"Function.prototype\")", true);
+        toBoolean.insert("engine->evaluate(\"Error.prototype\")", true);
+        toBoolean.insert("engine->evaluate(\"Object\")", true);
+        toBoolean.insert("engine->evaluate(\"Array\")", true);
+        toBoolean.insert("engine->evaluate(\"Number\")", true);
+        toBoolean.insert("engine->evaluate(\"Function\")", true);
+        toBoolean.insert("engine->evaluate(\"(function() { return 1; })\")", true);
+        toBoolean.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", true);
+        toBoolean.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", true);
+        toBoolean.insert("engine->evaluate(\"/foo/\")", true);
+        toBoolean.insert("engine->evaluate(\"new Object()\")", true);
+        toBoolean.insert("engine->evaluate(\"new Array()\")", true);
+        toBoolean.insert("engine->evaluate(\"new Error()\")", true);
+    }
+    newRow(expr) << toBoolean.value(expr);
+}
+
+void tst_QScriptValue::toBoolean_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(value.toBoolean(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toBoolean)
+
+
+void tst_QScriptValue::toInteger_initData()
+{
+    QTest::addColumn<qsreal>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toInteger_makeData(const char* expr)
+{
+    static QHash<QString, qsreal> toInteger;
+    if (toInteger.isEmpty()) {
+        toInteger.insert("QScriptValue()", 0);
+        toInteger.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+        toInteger.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        toInteger.insert("QScriptValue(true)", 1);
+        toInteger.insert("QScriptValue(false)", 0);
+        toInteger.insert("QScriptValue(int(122))", 122);
+        toInteger.insert("QScriptValue(uint(124))", 124);
+        toInteger.insert("QScriptValue(0)", 0);
+        toInteger.insert("QScriptValue(0.0)", 0);
+        toInteger.insert("QScriptValue(123.0)", 123);
+        toInteger.insert("QScriptValue(6.37e-8)", 0);
+        toInteger.insert("QScriptValue(-6.37e-8)", 0);
+        toInteger.insert("QScriptValue(0x43211234)", 1126240820);
+        toInteger.insert("QScriptValue(0x10000)", 65536);
+        toInteger.insert("QScriptValue(0x10001)", 65537);
+        toInteger.insert("QScriptValue(qSNaN())", 0);
+        toInteger.insert("QScriptValue(qQNaN())", 0);
+        toInteger.insert("QScriptValue(qInf())", qInf());
+        toInteger.insert("QScriptValue(-qInf())", qInf());
+        toInteger.insert("QScriptValue(\"NaN\")", 0);
+        toInteger.insert("QScriptValue(\"Infinity\")", qInf());
+        toInteger.insert("QScriptValue(\"-Infinity\")", qInf());
+        toInteger.insert("QScriptValue(\"ciao\")", 0);
+        toInteger.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+        toInteger.insert("QScriptValue(QString(\"\"))", 0);
+        toInteger.insert("QScriptValue(QString())", 0);
+        toInteger.insert("QScriptValue(QString(\"0\"))", 0);
+        toInteger.insert("QScriptValue(QString(\"123\"))", 123);
+        toInteger.insert("QScriptValue(QString(\"12.4\"))", 12);
+        toInteger.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+        toInteger.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        toInteger.insert("QScriptValue(0, true)", 1);
+        toInteger.insert("QScriptValue(0, false)", 0);
+        toInteger.insert("QScriptValue(0, int(122))", 122);
+        toInteger.insert("QScriptValue(0, uint(124))", 124);
+        toInteger.insert("QScriptValue(0, 0)", 0);
+        toInteger.insert("QScriptValue(0, 0.0)", 0);
+        toInteger.insert("QScriptValue(0, 123.0)", 123);
+        toInteger.insert("QScriptValue(0, 6.37e-8)", 0);
+        toInteger.insert("QScriptValue(0, -6.37e-8)", 0);
+        toInteger.insert("QScriptValue(0, 0x43211234)", 1126240820);
+        toInteger.insert("QScriptValue(0, 0x10000)", 65536);
+        toInteger.insert("QScriptValue(0, 0x10001)", 65537);
+        toInteger.insert("QScriptValue(0, qSNaN())", 0);
+        toInteger.insert("QScriptValue(0, qQNaN())", 0);
+        toInteger.insert("QScriptValue(0, qInf())", qInf());
+        toInteger.insert("QScriptValue(0, -qInf())", qInf());
+        toInteger.insert("QScriptValue(0, \"NaN\")", 0);
+        toInteger.insert("QScriptValue(0, \"Infinity\")", qInf());
+        toInteger.insert("QScriptValue(0, \"-Infinity\")", qInf());
+        toInteger.insert("QScriptValue(0, \"ciao\")", 0);
+        toInteger.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+        toInteger.insert("QScriptValue(0, QString(\"\"))", 0);
+        toInteger.insert("QScriptValue(0, QString())", 0);
+        toInteger.insert("QScriptValue(0, QString(\"0\"))", 0);
+        toInteger.insert("QScriptValue(0, QString(\"123\"))", 123);
+        toInteger.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+        toInteger.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+        toInteger.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        toInteger.insert("QScriptValue(engine, true)", 1);
+        toInteger.insert("QScriptValue(engine, false)", 0);
+        toInteger.insert("QScriptValue(engine, int(122))", 122);
+        toInteger.insert("QScriptValue(engine, uint(124))", 124);
+        toInteger.insert("QScriptValue(engine, 0)", 0);
+        toInteger.insert("QScriptValue(engine, 0.0)", 0);
+        toInteger.insert("QScriptValue(engine, 123.0)", 123);
+        toInteger.insert("QScriptValue(engine, 6.37e-8)", 0);
+        toInteger.insert("QScriptValue(engine, -6.37e-8)", 0);
+        toInteger.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+        toInteger.insert("QScriptValue(engine, 0x10000)", 65536);
+        toInteger.insert("QScriptValue(engine, 0x10001)", 65537);
+        toInteger.insert("QScriptValue(engine, qSNaN())", 0);
+        toInteger.insert("QScriptValue(engine, qQNaN())", 0);
+        toInteger.insert("QScriptValue(engine, qInf())", qInf());
+        toInteger.insert("QScriptValue(engine, -qInf())", qInf());
+        toInteger.insert("QScriptValue(engine, \"NaN\")", 0);
+        toInteger.insert("QScriptValue(engine, \"Infinity\")", qInf());
+        toInteger.insert("QScriptValue(engine, \"-Infinity\")", qInf());
+        toInteger.insert("QScriptValue(engine, \"ciao\")", 0);
+        toInteger.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+        toInteger.insert("QScriptValue(engine, QString(\"\"))", 0);
+        toInteger.insert("QScriptValue(engine, QString())", 0);
+        toInteger.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        toInteger.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        toInteger.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+        toInteger.insert("engine->evaluate(\"[]\")", 0);
+        toInteger.insert("engine->evaluate(\"{}\")", 0);
+        toInteger.insert("engine->evaluate(\"Object.prototype\")", 0);
+        toInteger.insert("engine->evaluate(\"Date.prototype\")", 0);
+        toInteger.insert("engine->evaluate(\"Array.prototype\")", 0);
+        toInteger.insert("engine->evaluate(\"Function.prototype\")", 0);
+        toInteger.insert("engine->evaluate(\"Error.prototype\")", 0);
+        toInteger.insert("engine->evaluate(\"Object\")", 0);
+        toInteger.insert("engine->evaluate(\"Array\")", 0);
+        toInteger.insert("engine->evaluate(\"Number\")", 0);
+        toInteger.insert("engine->evaluate(\"Function\")", 0);
+        toInteger.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+        toInteger.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+        toInteger.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+        toInteger.insert("engine->evaluate(\"/foo/\")", 0);
+        toInteger.insert("engine->evaluate(\"new Object()\")", 0);
+        toInteger.insert("engine->evaluate(\"new Array()\")", 0);
+        toInteger.insert("engine->evaluate(\"new Error()\")", 0);
+    }
+    newRow(expr) << toInteger.value(expr);
+}
+
+void tst_QScriptValue::toInteger_test(const char*, const QScriptValue& value)
+{
+    QFETCH(qsreal, expected);
+    if (qIsInf(expected)) {
+        QVERIFY(qIsInf(value.toInteger()));
+        return;
+    }
+    QCOMPARE(value.toInteger(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toInteger)
+
+
+void tst_QScriptValue::toInt32_initData()
+{
+    QTest::addColumn<qint32>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toInt32_makeData(const char* expr)
+{
+    static QHash<QString, qint32> toInt32;
+    if (toInt32.isEmpty()) {
+        toInt32.insert("QScriptValue()", 0);
+        toInt32.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+        toInt32.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        toInt32.insert("QScriptValue(true)", 1);
+        toInt32.insert("QScriptValue(false)", 0);
+        toInt32.insert("QScriptValue(int(122))", 122);
+        toInt32.insert("QScriptValue(uint(124))", 124);
+        toInt32.insert("QScriptValue(0)", 0);
+        toInt32.insert("QScriptValue(0.0)", 0);
+        toInt32.insert("QScriptValue(123.0)", 123);
+        toInt32.insert("QScriptValue(6.37e-8)", 0);
+        toInt32.insert("QScriptValue(-6.37e-8)", 0);
+        toInt32.insert("QScriptValue(0x43211234)", 1126240820);
+        toInt32.insert("QScriptValue(0x10000)", 65536);
+        toInt32.insert("QScriptValue(0x10001)", 65537);
+        toInt32.insert("QScriptValue(qSNaN())", 0);
+        toInt32.insert("QScriptValue(qQNaN())", 0);
+        toInt32.insert("QScriptValue(qInf())", 0);
+        toInt32.insert("QScriptValue(-qInf())", 0);
+        toInt32.insert("QScriptValue(\"NaN\")", 0);
+        toInt32.insert("QScriptValue(\"Infinity\")", 0);
+        toInt32.insert("QScriptValue(\"-Infinity\")", 0);
+        toInt32.insert("QScriptValue(\"ciao\")", 0);
+        toInt32.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+        toInt32.insert("QScriptValue(QString(\"\"))", 0);
+        toInt32.insert("QScriptValue(QString())", 0);
+        toInt32.insert("QScriptValue(QString(\"0\"))", 0);
+        toInt32.insert("QScriptValue(QString(\"123\"))", 123);
+        toInt32.insert("QScriptValue(QString(\"12.4\"))", 12);
+        toInt32.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+        toInt32.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        toInt32.insert("QScriptValue(0, true)", 1);
+        toInt32.insert("QScriptValue(0, false)", 0);
+        toInt32.insert("QScriptValue(0, int(122))", 122);
+        toInt32.insert("QScriptValue(0, uint(124))", 124);
+        toInt32.insert("QScriptValue(0, 0)", 0);
+        toInt32.insert("QScriptValue(0, 0.0)", 0);
+        toInt32.insert("QScriptValue(0, 123.0)", 123);
+        toInt32.insert("QScriptValue(0, 6.37e-8)", 0);
+        toInt32.insert("QScriptValue(0, -6.37e-8)", 0);
+        toInt32.insert("QScriptValue(0, 0x43211234)", 1126240820);
+        toInt32.insert("QScriptValue(0, 0x10000)", 65536);
+        toInt32.insert("QScriptValue(0, 0x10001)", 65537);
+        toInt32.insert("QScriptValue(0, qSNaN())", 0);
+        toInt32.insert("QScriptValue(0, qQNaN())", 0);
+        toInt32.insert("QScriptValue(0, qInf())", 0);
+        toInt32.insert("QScriptValue(0, -qInf())", 0);
+        toInt32.insert("QScriptValue(0, \"NaN\")", 0);
+        toInt32.insert("QScriptValue(0, \"Infinity\")", 0);
+        toInt32.insert("QScriptValue(0, \"-Infinity\")", 0);
+        toInt32.insert("QScriptValue(0, \"ciao\")", 0);
+        toInt32.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+        toInt32.insert("QScriptValue(0, QString(\"\"))", 0);
+        toInt32.insert("QScriptValue(0, QString())", 0);
+        toInt32.insert("QScriptValue(0, QString(\"0\"))", 0);
+        toInt32.insert("QScriptValue(0, QString(\"123\"))", 123);
+        toInt32.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+        toInt32.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+        toInt32.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        toInt32.insert("QScriptValue(engine, true)", 1);
+        toInt32.insert("QScriptValue(engine, false)", 0);
+        toInt32.insert("QScriptValue(engine, int(122))", 122);
+        toInt32.insert("QScriptValue(engine, uint(124))", 124);
+        toInt32.insert("QScriptValue(engine, 0)", 0);
+        toInt32.insert("QScriptValue(engine, 0.0)", 0);
+        toInt32.insert("QScriptValue(engine, 123.0)", 123);
+        toInt32.insert("QScriptValue(engine, 6.37e-8)", 0);
+        toInt32.insert("QScriptValue(engine, -6.37e-8)", 0);
+        toInt32.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+        toInt32.insert("QScriptValue(engine, 0x10000)", 65536);
+        toInt32.insert("QScriptValue(engine, 0x10001)", 65537);
+        toInt32.insert("QScriptValue(engine, qSNaN())", 0);
+        toInt32.insert("QScriptValue(engine, qQNaN())", 0);
+        toInt32.insert("QScriptValue(engine, qInf())", 0);
+        toInt32.insert("QScriptValue(engine, -qInf())", 0);
+        toInt32.insert("QScriptValue(engine, \"NaN\")", 0);
+        toInt32.insert("QScriptValue(engine, \"Infinity\")", 0);
+        toInt32.insert("QScriptValue(engine, \"-Infinity\")", 0);
+        toInt32.insert("QScriptValue(engine, \"ciao\")", 0);
+        toInt32.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+        toInt32.insert("QScriptValue(engine, QString(\"\"))", 0);
+        toInt32.insert("QScriptValue(engine, QString())", 0);
+        toInt32.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        toInt32.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        toInt32.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+        toInt32.insert("engine->evaluate(\"[]\")", 0);
+        toInt32.insert("engine->evaluate(\"{}\")", 0);
+        toInt32.insert("engine->evaluate(\"Object.prototype\")", 0);
+        toInt32.insert("engine->evaluate(\"Date.prototype\")", 0);
+        toInt32.insert("engine->evaluate(\"Array.prototype\")", 0);
+        toInt32.insert("engine->evaluate(\"Function.prototype\")", 0);
+        toInt32.insert("engine->evaluate(\"Error.prototype\")", 0);
+        toInt32.insert("engine->evaluate(\"Object\")", 0);
+        toInt32.insert("engine->evaluate(\"Array\")", 0);
+        toInt32.insert("engine->evaluate(\"Number\")", 0);
+        toInt32.insert("engine->evaluate(\"Function\")", 0);
+        toInt32.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+        toInt32.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+        toInt32.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+        toInt32.insert("engine->evaluate(\"/foo/\")", 0);
+        toInt32.insert("engine->evaluate(\"new Object()\")", 0);
+        toInt32.insert("engine->evaluate(\"new Array()\")", 0);
+        toInt32.insert("engine->evaluate(\"new Error()\")", 0);
+    }
+    newRow(expr) << toInt32.value(expr);
+}
+
+void tst_QScriptValue::toInt32_test(const char*, const QScriptValue& value)
+{
+    QFETCH(qint32, expected);
+    QCOMPARE(value.toInt32(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toInt32)
+
+
+void tst_QScriptValue::toUInt32_initData()
+{
+    QTest::addColumn<quint32>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toUInt32_makeData(const char* expr)
+{
+    static QHash<QString, quint32> toUInt32;
+    if (toUInt32.isEmpty()) {
+        toUInt32.insert("QScriptValue()", 0);
+        toUInt32.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+        toUInt32.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        toUInt32.insert("QScriptValue(true)", 1);
+        toUInt32.insert("QScriptValue(false)", 0);
+        toUInt32.insert("QScriptValue(int(122))", 122);
+        toUInt32.insert("QScriptValue(uint(124))", 124);
+        toUInt32.insert("QScriptValue(0)", 0);
+        toUInt32.insert("QScriptValue(0.0)", 0);
+        toUInt32.insert("QScriptValue(123.0)", 123);
+        toUInt32.insert("QScriptValue(6.37e-8)", 0);
+        toUInt32.insert("QScriptValue(-6.37e-8)", 0);
+        toUInt32.insert("QScriptValue(0x43211234)", 1126240820);
+        toUInt32.insert("QScriptValue(0x10000)", 65536);
+        toUInt32.insert("QScriptValue(0x10001)", 65537);
+        toUInt32.insert("QScriptValue(qSNaN())", 0);
+        toUInt32.insert("QScriptValue(qQNaN())", 0);
+        toUInt32.insert("QScriptValue(qInf())", 0);
+        toUInt32.insert("QScriptValue(-qInf())", 0);
+        toUInt32.insert("QScriptValue(\"NaN\")", 0);
+        toUInt32.insert("QScriptValue(\"Infinity\")", 0);
+        toUInt32.insert("QScriptValue(\"-Infinity\")", 0);
+        toUInt32.insert("QScriptValue(\"ciao\")", 0);
+        toUInt32.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+        toUInt32.insert("QScriptValue(QString(\"\"))", 0);
+        toUInt32.insert("QScriptValue(QString())", 0);
+        toUInt32.insert("QScriptValue(QString(\"0\"))", 0);
+        toUInt32.insert("QScriptValue(QString(\"123\"))", 123);
+        toUInt32.insert("QScriptValue(QString(\"12.4\"))", 12);
+        toUInt32.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+        toUInt32.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        toUInt32.insert("QScriptValue(0, true)", 1);
+        toUInt32.insert("QScriptValue(0, false)", 0);
+        toUInt32.insert("QScriptValue(0, int(122))", 122);
+        toUInt32.insert("QScriptValue(0, uint(124))", 124);
+        toUInt32.insert("QScriptValue(0, 0)", 0);
+        toUInt32.insert("QScriptValue(0, 0.0)", 0);
+        toUInt32.insert("QScriptValue(0, 123.0)", 123);
+        toUInt32.insert("QScriptValue(0, 6.37e-8)", 0);
+        toUInt32.insert("QScriptValue(0, -6.37e-8)", 0);
+        toUInt32.insert("QScriptValue(0, 0x43211234)", 1126240820);
+        toUInt32.insert("QScriptValue(0, 0x10000)", 65536);
+        toUInt32.insert("QScriptValue(0, 0x10001)", 65537);
+        toUInt32.insert("QScriptValue(0, qSNaN())", 0);
+        toUInt32.insert("QScriptValue(0, qQNaN())", 0);
+        toUInt32.insert("QScriptValue(0, qInf())", 0);
+        toUInt32.insert("QScriptValue(0, -qInf())", 0);
+        toUInt32.insert("QScriptValue(0, \"NaN\")", 0);
+        toUInt32.insert("QScriptValue(0, \"Infinity\")", 0);
+        toUInt32.insert("QScriptValue(0, \"-Infinity\")", 0);
+        toUInt32.insert("QScriptValue(0, \"ciao\")", 0);
+        toUInt32.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+        toUInt32.insert("QScriptValue(0, QString(\"\"))", 0);
+        toUInt32.insert("QScriptValue(0, QString())", 0);
+        toUInt32.insert("QScriptValue(0, QString(\"0\"))", 0);
+        toUInt32.insert("QScriptValue(0, QString(\"123\"))", 123);
+        toUInt32.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+        toUInt32.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+        toUInt32.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        toUInt32.insert("QScriptValue(engine, true)", 1);
+        toUInt32.insert("QScriptValue(engine, false)", 0);
+        toUInt32.insert("QScriptValue(engine, int(122))", 122);
+        toUInt32.insert("QScriptValue(engine, uint(124))", 124);
+        toUInt32.insert("QScriptValue(engine, 0)", 0);
+        toUInt32.insert("QScriptValue(engine, 0.0)", 0);
+        toUInt32.insert("QScriptValue(engine, 123.0)", 123);
+        toUInt32.insert("QScriptValue(engine, 6.37e-8)", 0);
+        toUInt32.insert("QScriptValue(engine, -6.37e-8)", 0);
+        toUInt32.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+        toUInt32.insert("QScriptValue(engine, 0x10000)", 65536);
+        toUInt32.insert("QScriptValue(engine, 0x10001)", 65537);
+        toUInt32.insert("QScriptValue(engine, qSNaN())", 0);
+        toUInt32.insert("QScriptValue(engine, qQNaN())", 0);
+        toUInt32.insert("QScriptValue(engine, qInf())", 0);
+        toUInt32.insert("QScriptValue(engine, -qInf())", 0);
+        toUInt32.insert("QScriptValue(engine, \"NaN\")", 0);
+        toUInt32.insert("QScriptValue(engine, \"Infinity\")", 0);
+        toUInt32.insert("QScriptValue(engine, \"-Infinity\")", 0);
+        toUInt32.insert("QScriptValue(engine, \"ciao\")", 0);
+        toUInt32.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+        toUInt32.insert("QScriptValue(engine, QString(\"\"))", 0);
+        toUInt32.insert("QScriptValue(engine, QString())", 0);
+        toUInt32.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        toUInt32.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        toUInt32.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+        toUInt32.insert("engine->evaluate(\"[]\")", 0);
+        toUInt32.insert("engine->evaluate(\"{}\")", 0);
+        toUInt32.insert("engine->evaluate(\"Object.prototype\")", 0);
+        toUInt32.insert("engine->evaluate(\"Date.prototype\")", 0);
+        toUInt32.insert("engine->evaluate(\"Array.prototype\")", 0);
+        toUInt32.insert("engine->evaluate(\"Function.prototype\")", 0);
+        toUInt32.insert("engine->evaluate(\"Error.prototype\")", 0);
+        toUInt32.insert("engine->evaluate(\"Object\")", 0);
+        toUInt32.insert("engine->evaluate(\"Array\")", 0);
+        toUInt32.insert("engine->evaluate(\"Number\")", 0);
+        toUInt32.insert("engine->evaluate(\"Function\")", 0);
+        toUInt32.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+        toUInt32.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+        toUInt32.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+        toUInt32.insert("engine->evaluate(\"/foo/\")", 0);
+        toUInt32.insert("engine->evaluate(\"new Object()\")", 0);
+        toUInt32.insert("engine->evaluate(\"new Array()\")", 0);
+        toUInt32.insert("engine->evaluate(\"new Error()\")", 0);
+    }
+    newRow(expr) << toUInt32.value(expr);
+}
+
+void tst_QScriptValue::toUInt32_test(const char*, const QScriptValue& value)
+{
+    QFETCH(quint32, expected);
+    QCOMPARE(value.toUInt32(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toUInt32)
+
+
+void tst_QScriptValue::toUInt16_initData()
+{
+    QTest::addColumn<quint16>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::toUInt16_makeData(const char* expr)
+{
+    static QHash<QString, quint16> toUInt16;
+    if (toUInt16.isEmpty()) {
+        toUInt16.insert("QScriptValue()", 0);
+        toUInt16.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+        toUInt16.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        toUInt16.insert("QScriptValue(true)", 1);
+        toUInt16.insert("QScriptValue(false)", 0);
+        toUInt16.insert("QScriptValue(int(122))", 122);
+        toUInt16.insert("QScriptValue(uint(124))", 124);
+        toUInt16.insert("QScriptValue(0)", 0);
+        toUInt16.insert("QScriptValue(0.0)", 0);
+        toUInt16.insert("QScriptValue(123.0)", 123);
+        toUInt16.insert("QScriptValue(6.37e-8)", 0);
+        toUInt16.insert("QScriptValue(-6.37e-8)", 0);
+        toUInt16.insert("QScriptValue(0x43211234)", 4660);
+        toUInt16.insert("QScriptValue(0x10000)", 0);
+        toUInt16.insert("QScriptValue(0x10001)", 1);
+        toUInt16.insert("QScriptValue(qSNaN())", 0);
+        toUInt16.insert("QScriptValue(qQNaN())", 0);
+        toUInt16.insert("QScriptValue(qInf())", 0);
+        toUInt16.insert("QScriptValue(-qInf())", 0);
+        toUInt16.insert("QScriptValue(\"NaN\")", 0);
+        toUInt16.insert("QScriptValue(\"Infinity\")", 0);
+        toUInt16.insert("QScriptValue(\"-Infinity\")", 0);
+        toUInt16.insert("QScriptValue(\"ciao\")", 0);
+        toUInt16.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+        toUInt16.insert("QScriptValue(QString(\"\"))", 0);
+        toUInt16.insert("QScriptValue(QString())", 0);
+        toUInt16.insert("QScriptValue(QString(\"0\"))", 0);
+        toUInt16.insert("QScriptValue(QString(\"123\"))", 123);
+        toUInt16.insert("QScriptValue(QString(\"12.4\"))", 12);
+        toUInt16.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+        toUInt16.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        toUInt16.insert("QScriptValue(0, true)", 1);
+        toUInt16.insert("QScriptValue(0, false)", 0);
+        toUInt16.insert("QScriptValue(0, int(122))", 122);
+        toUInt16.insert("QScriptValue(0, uint(124))", 124);
+        toUInt16.insert("QScriptValue(0, 0)", 0);
+        toUInt16.insert("QScriptValue(0, 0.0)", 0);
+        toUInt16.insert("QScriptValue(0, 123.0)", 123);
+        toUInt16.insert("QScriptValue(0, 6.37e-8)", 0);
+        toUInt16.insert("QScriptValue(0, -6.37e-8)", 0);
+        toUInt16.insert("QScriptValue(0, 0x43211234)", 4660);
+        toUInt16.insert("QScriptValue(0, 0x10000)", 0);
+        toUInt16.insert("QScriptValue(0, 0x10001)", 1);
+        toUInt16.insert("QScriptValue(0, qSNaN())", 0);
+        toUInt16.insert("QScriptValue(0, qQNaN())", 0);
+        toUInt16.insert("QScriptValue(0, qInf())", 0);
+        toUInt16.insert("QScriptValue(0, -qInf())", 0);
+        toUInt16.insert("QScriptValue(0, \"NaN\")", 0);
+        toUInt16.insert("QScriptValue(0, \"Infinity\")", 0);
+        toUInt16.insert("QScriptValue(0, \"-Infinity\")", 0);
+        toUInt16.insert("QScriptValue(0, \"ciao\")", 0);
+        toUInt16.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+        toUInt16.insert("QScriptValue(0, QString(\"\"))", 0);
+        toUInt16.insert("QScriptValue(0, QString())", 0);
+        toUInt16.insert("QScriptValue(0, QString(\"0\"))", 0);
+        toUInt16.insert("QScriptValue(0, QString(\"123\"))", 123);
+        toUInt16.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+        toUInt16.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+        toUInt16.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        toUInt16.insert("QScriptValue(engine, true)", 1);
+        toUInt16.insert("QScriptValue(engine, false)", 0);
+        toUInt16.insert("QScriptValue(engine, int(122))", 122);
+        toUInt16.insert("QScriptValue(engine, uint(124))", 124);
+        toUInt16.insert("QScriptValue(engine, 0)", 0);
+        toUInt16.insert("QScriptValue(engine, 0.0)", 0);
+        toUInt16.insert("QScriptValue(engine, 123.0)", 123);
+        toUInt16.insert("QScriptValue(engine, 6.37e-8)", 0);
+        toUInt16.insert("QScriptValue(engine, -6.37e-8)", 0);
+        toUInt16.insert("QScriptValue(engine, 0x43211234)", 4660);
+        toUInt16.insert("QScriptValue(engine, 0x10000)", 0);
+        toUInt16.insert("QScriptValue(engine, 0x10001)", 1);
+        toUInt16.insert("QScriptValue(engine, qSNaN())", 0);
+        toUInt16.insert("QScriptValue(engine, qQNaN())", 0);
+        toUInt16.insert("QScriptValue(engine, qInf())", 0);
+        toUInt16.insert("QScriptValue(engine, -qInf())", 0);
+        toUInt16.insert("QScriptValue(engine, \"NaN\")", 0);
+        toUInt16.insert("QScriptValue(engine, \"Infinity\")", 0);
+        toUInt16.insert("QScriptValue(engine, \"-Infinity\")", 0);
+        toUInt16.insert("QScriptValue(engine, \"ciao\")", 0);
+        toUInt16.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+        toUInt16.insert("QScriptValue(engine, QString(\"\"))", 0);
+        toUInt16.insert("QScriptValue(engine, QString())", 0);
+        toUInt16.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        toUInt16.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        toUInt16.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+        toUInt16.insert("engine->evaluate(\"[]\")", 0);
+        toUInt16.insert("engine->evaluate(\"{}\")", 0);
+        toUInt16.insert("engine->evaluate(\"Object.prototype\")", 0);
+        toUInt16.insert("engine->evaluate(\"Date.prototype\")", 0);
+        toUInt16.insert("engine->evaluate(\"Array.prototype\")", 0);
+        toUInt16.insert("engine->evaluate(\"Function.prototype\")", 0);
+        toUInt16.insert("engine->evaluate(\"Error.prototype\")", 0);
+        toUInt16.insert("engine->evaluate(\"Object\")", 0);
+        toUInt16.insert("engine->evaluate(\"Array\")", 0);
+        toUInt16.insert("engine->evaluate(\"Number\")", 0);
+        toUInt16.insert("engine->evaluate(\"Function\")", 0);
+        toUInt16.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+        toUInt16.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+        toUInt16.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+        toUInt16.insert("engine->evaluate(\"/foo/\")", 0);
+        toUInt16.insert("engine->evaluate(\"new Object()\")", 0);
+        toUInt16.insert("engine->evaluate(\"new Array()\")", 0);
+        toUInt16.insert("engine->evaluate(\"new Error()\")", 0);
+    }
+    newRow(expr) << toUInt16.value(expr);
+}
+
+void tst_QScriptValue::toUInt16_test(const char*, const QScriptValue& value)
+{
+    QFETCH(quint16, expected);
+    QCOMPARE(value.toUInt16(), expected);
+}
+
+DEFINE_TEST_FUNCTION(toUInt16)
+
+
+void tst_QScriptValue::equals_initData()
+{
+    QTest::addColumn<QScriptValue>("other");
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::equals_makeData(const char *expr)
+{
+    static QSet<QString> equals;
+    if (equals.isEmpty()) {
+        equals.insert("QScriptValue() <=> QScriptValue()");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(true) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(false) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(false) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(false) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(false) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(false)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0.0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString(\"\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString())");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, false)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0.0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString())");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, false)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0.0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString())");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(false)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0.0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString())");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, false)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0.0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString())");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, false)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0.0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString())");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(false)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0.0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString())");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, false)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0.0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString())");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, false)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0.0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString())");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")");
+    }
+    QHash<QString, QScriptValue>::const_iterator it;
+    for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+        QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+        newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+    }
+}
+
+void tst_QScriptValue::equals_test(const char *, const QScriptValue& value)
+{
+    QFETCH(QScriptValue, other);
+    QFETCH(bool, expected);
+    QCOMPARE(value.equals(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(equals)
+
+
+void tst_QScriptValue::strictlyEquals_initData()
+{
+    QTest::addColumn<QScriptValue>("other");
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
+{
+    static QSet<QString> equals;
+    if (equals.isEmpty()) {
+        equals.insert("QScriptValue() <=> QScriptValue()");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")");
+    }
+    QHash<QString, QScriptValue>::const_iterator it;
+    for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+        QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+        newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+    }
+}
+
+void tst_QScriptValue::strictlyEquals_test(const char *, const QScriptValue& value)
+{
+    QFETCH(QScriptValue, other);
+    QFETCH(bool, expected);
+    QCOMPARE(value.strictlyEquals(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(strictlyEquals)
+
+
+void tst_QScriptValue::lessThan_initData()
+{
+    QTest::addColumn<QScriptValue>("other");
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::lessThan_makeData(const char *expr)
+{
+    static QSet<QString> equals;
+    if (equals.isEmpty()) {
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(true) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(true) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(true) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(false) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(false) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(true)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(false)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(false)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString())");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"[]\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Array.prototype\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(false)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0.0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(-6.37e-8)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, false)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0.0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, -6.37e-8)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, false)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0.0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, -6.37e-8)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(\"-Infinity\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"/foo/\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(true)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(6.37e-8)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, true)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, true)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(int(122))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(123.0)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(qInf())");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(\"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, int(122))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, int(122))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, uint(124))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 123.0)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x10000)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, 0x10001)");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, qInf())");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Object\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Array\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Number\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Function\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Object()\")");
+        equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Error()\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(true)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(int(122))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(uint(124))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(123.0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(6.37e-8)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0x43211234)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0x10000)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0x10001)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(qInf())");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(\"NaN\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString(\"0\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString(\"123\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, true)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, int(122))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, uint(124))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 123.0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0x43211234)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0x10000)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, 0x10001)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, qInf())");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, true)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, int(122))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, uint(124))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 123.0)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x10000)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, 0x10001)");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, qInf())");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(true)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(int(122))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(uint(124))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(123.0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(6.37e-8)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x43211234)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x10000)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0x10001)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(qInf())");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"NaN\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"0\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"123\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, true)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, int(122))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, uint(124))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 123.0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x43211234)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x10000)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, 0x10001)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, qInf())");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, true)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, int(122))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, uint(124))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 123.0)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x10000)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, 0x10001)");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, qInf())");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"NaN\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(\"NaN\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"0\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"123\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(true)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(int(122))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(uint(124))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(123.0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(6.37e-8)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0x43211234)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0x10000)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0x10001)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(qInf())");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(\"NaN\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(\"-Infinity\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"0\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"123\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, true)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, int(122))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, uint(124))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 123.0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x43211234)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x10000)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, 0x10001)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, qInf())");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"-Infinity\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, true)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, int(122))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, uint(124))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 123.0)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x10000)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, 0x10001)");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, qInf())");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"-Infinity\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"0\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"1.23\"))");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Error.prototype\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"/foo/\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"NaN\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"Infinity\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"ciao\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"NaN\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(0, \"ciao\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"NaN\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(engine, \"ciao\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object.prototype\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Function.prototype\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Number\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 1; })\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Object()\")");
+    }
+    QHash<QString, QScriptValue>::const_iterator it;
+    for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+        QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+        newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+    }
+}
+
+void tst_QScriptValue::lessThan_test(const char *, const QScriptValue& value)
+{
+    QFETCH(QScriptValue, other);
+    QFETCH(bool, expected);
+    QCOMPARE(value.lessThan(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(lessThan)
+
+
+void tst_QScriptValue::instanceOf_initData()
+{
+    QTest::addColumn<QScriptValue>("other");
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::instanceOf_makeData(const char *expr)
+{
+    static QSet<QString> equals;
+    if (equals.isEmpty()) {
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Object\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Number\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"Function\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"(function() { return 1; })\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"(function() { return 'ciao'; })\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\") <=> engine->evaluate(\"Function\")");
+        equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")");
+        equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")");
+        equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")");
+    }
+    QHash<QString, QScriptValue>::const_iterator it;
+    for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
+        QString tag = QString::fromLatin1("%20 <=> %21").arg(expr).arg(it.key());
+        newRow(tag.toLatin1()) << it.value() << equals.contains(tag);
+    }
+}
+
+void tst_QScriptValue::instanceOf_test(const char *, const QScriptValue& value)
+{
+    QFETCH(QScriptValue, other);
+    QFETCH(bool, expected);
+    QCOMPARE(value.instanceOf(other), expected);
+}
+
+DEFINE_TEST_FUNCTION(instanceOf)
+
+
+void tst_QScriptValue::qscriptvalue_castQString_initData()
+{
+    QTest::addColumn<QString>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castQString_makeData(const char* expr)
+{
+    static QHash<QString, QString> value;
+    if (value.isEmpty()) {
+        value.insert("QScriptValue()", "");
+        value.insert("QScriptValue(QScriptValue::UndefinedValue)", "");
+        value.insert("QScriptValue(QScriptValue::NullValue)", "");
+        value.insert("QScriptValue(true)", "true");
+        value.insert("QScriptValue(false)", "false");
+        value.insert("QScriptValue(int(122))", "122");
+        value.insert("QScriptValue(uint(124))", "124");
+        value.insert("QScriptValue(0)", "0");
+        value.insert("QScriptValue(0.0)", "0");
+        value.insert("QScriptValue(123.0)", "123");
+        value.insert("QScriptValue(6.37e-8)", "6.37e-8");
+        value.insert("QScriptValue(-6.37e-8)", "-6.37e-8");
+        value.insert("QScriptValue(0x43211234)", "1126240820");
+        value.insert("QScriptValue(0x10000)", "65536");
+        value.insert("QScriptValue(0x10001)", "65537");
+        value.insert("QScriptValue(qSNaN())", "NaN");
+        value.insert("QScriptValue(qQNaN())", "NaN");
+        value.insert("QScriptValue(qInf())", "Infinity");
+        value.insert("QScriptValue(-qInf())", "-Infinity");
+        value.insert("QScriptValue(\"NaN\")", "NaN");
+        value.insert("QScriptValue(\"Infinity\")", "Infinity");
+        value.insert("QScriptValue(\"-Infinity\")", "-Infinity");
+        value.insert("QScriptValue(\"ciao\")", "ciao");
+        value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", "ciao");
+        value.insert("QScriptValue(QString(\"\"))", "");
+        value.insert("QScriptValue(QString())", "");
+        value.insert("QScriptValue(QString(\"0\"))", "0");
+        value.insert("QScriptValue(QString(\"123\"))", "123");
+        value.insert("QScriptValue(QString(\"12.4\"))", "12.4");
+        value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", "");
+        value.insert("QScriptValue(0, QScriptValue::NullValue)", "");
+        value.insert("QScriptValue(0, true)", "true");
+        value.insert("QScriptValue(0, false)", "false");
+        value.insert("QScriptValue(0, int(122))", "122");
+        value.insert("QScriptValue(0, uint(124))", "124");
+        value.insert("QScriptValue(0, 0)", "0");
+        value.insert("QScriptValue(0, 0.0)", "0");
+        value.insert("QScriptValue(0, 123.0)", "123");
+        value.insert("QScriptValue(0, 6.37e-8)", "6.37e-8");
+        value.insert("QScriptValue(0, -6.37e-8)", "-6.37e-8");
+        value.insert("QScriptValue(0, 0x43211234)", "1126240820");
+        value.insert("QScriptValue(0, 0x10000)", "65536");
+        value.insert("QScriptValue(0, 0x10001)", "65537");
+        value.insert("QScriptValue(0, qSNaN())", "NaN");
+        value.insert("QScriptValue(0, qQNaN())", "NaN");
+        value.insert("QScriptValue(0, qInf())", "Infinity");
+        value.insert("QScriptValue(0, -qInf())", "-Infinity");
+        value.insert("QScriptValue(0, \"NaN\")", "NaN");
+        value.insert("QScriptValue(0, \"Infinity\")", "Infinity");
+        value.insert("QScriptValue(0, \"-Infinity\")", "-Infinity");
+        value.insert("QScriptValue(0, \"ciao\")", "ciao");
+        value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", "ciao");
+        value.insert("QScriptValue(0, QString(\"\"))", "");
+        value.insert("QScriptValue(0, QString())", "");
+        value.insert("QScriptValue(0, QString(\"0\"))", "0");
+        value.insert("QScriptValue(0, QString(\"123\"))", "123");
+        value.insert("QScriptValue(0, QString(\"12.3\"))", "12.3");
+        value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", "");
+        value.insert("QScriptValue(engine, QScriptValue::NullValue)", "");
+        value.insert("QScriptValue(engine, true)", "true");
+        value.insert("QScriptValue(engine, false)", "false");
+        value.insert("QScriptValue(engine, int(122))", "122");
+        value.insert("QScriptValue(engine, uint(124))", "124");
+        value.insert("QScriptValue(engine, 0)", "0");
+        value.insert("QScriptValue(engine, 0.0)", "0");
+        value.insert("QScriptValue(engine, 123.0)", "123");
+        value.insert("QScriptValue(engine, 6.37e-8)", "6.37e-8");
+        value.insert("QScriptValue(engine, -6.37e-8)", "-6.37e-8");
+        value.insert("QScriptValue(engine, 0x43211234)", "1126240820");
+        value.insert("QScriptValue(engine, 0x10000)", "65536");
+        value.insert("QScriptValue(engine, 0x10001)", "65537");
+        value.insert("QScriptValue(engine, qSNaN())", "NaN");
+        value.insert("QScriptValue(engine, qQNaN())", "NaN");
+        value.insert("QScriptValue(engine, qInf())", "Infinity");
+        value.insert("QScriptValue(engine, -qInf())", "-Infinity");
+        value.insert("QScriptValue(engine, \"NaN\")", "NaN");
+        value.insert("QScriptValue(engine, \"Infinity\")", "Infinity");
+        value.insert("QScriptValue(engine, \"-Infinity\")", "-Infinity");
+        value.insert("QScriptValue(engine, \"ciao\")", "ciao");
+        value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", "ciao");
+        value.insert("QScriptValue(engine, QString(\"\"))", "");
+        value.insert("QScriptValue(engine, QString())", "");
+        value.insert("QScriptValue(engine, QString(\"0\"))", "0");
+        value.insert("QScriptValue(engine, QString(\"123\"))", "123");
+        value.insert("QScriptValue(engine, QString(\"1.23\"))", "1.23");
+        value.insert("engine->evaluate(\"[]\")", "");
+        value.insert("engine->evaluate(\"{}\")", "");
+        value.insert("engine->evaluate(\"Object.prototype\")", "[object Object]");
+        value.insert("engine->evaluate(\"Date.prototype\")", "Invalid Date");
+        value.insert("engine->evaluate(\"Array.prototype\")", "");
+        value.insert("engine->evaluate(\"Function.prototype\")", "function () {\n    [native code]\n}");
+        value.insert("engine->evaluate(\"Error.prototype\")", "Error: Unknown error");
+        value.insert("engine->evaluate(\"Object\")", "function Object() {\n    [native code]\n}");
+        value.insert("engine->evaluate(\"Array\")", "function Array() {\n    [native code]\n}");
+        value.insert("engine->evaluate(\"Number\")", "function Number() {\n    [native code]\n}");
+        value.insert("engine->evaluate(\"Function\")", "function Function() {\n    [native code]\n}");
+        value.insert("engine->evaluate(\"(function() { return 1; })\")", "function () { return 1; }");
+        value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", "function () { return 'ciao'; }");
+        value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", "function () { throw new Error('foo'); }");
+        value.insert("engine->evaluate(\"/foo/\")", "/foo/");
+        value.insert("engine->evaluate(\"new Object()\")", "[object Object]");
+        value.insert("engine->evaluate(\"new Array()\")", "");
+        value.insert("engine->evaluate(\"new Error()\")", "Error: Unknown error");
+    }
+    newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castQString_test(const char*, const QScriptValue& value)
+{
+    QFETCH(QString, expected);
+    QCOMPARE(qscriptvalue_cast<QString>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castQString)
+
+
+void tst_QScriptValue::qscriptvalue_castqsreal_initData()
+{
+    QTest::addColumn<qsreal>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castqsreal_makeData(const char* expr)
+{
+    static QHash<QString, qsreal> value;
+    if (value.isEmpty()) {
+        value.insert("QScriptValue()", 0);
+        value.insert("QScriptValue(QScriptValue::UndefinedValue)", qQNaN());
+        value.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(true)", 1);
+        value.insert("QScriptValue(false)", 0);
+        value.insert("QScriptValue(int(122))", 122);
+        value.insert("QScriptValue(uint(124))", 124);
+        value.insert("QScriptValue(0)", 0);
+        value.insert("QScriptValue(0.0)", 0);
+        value.insert("QScriptValue(123.0)", 123);
+        value.insert("QScriptValue(6.37e-8)", 6.369999999999999e-08);
+        value.insert("QScriptValue(-6.37e-8)", -6.369999999999999e-08);
+        value.insert("QScriptValue(0x43211234)", 1126240820);
+        value.insert("QScriptValue(0x10000)", 65536);
+        value.insert("QScriptValue(0x10001)", 65537);
+        value.insert("QScriptValue(qSNaN())", qQNaN());
+        value.insert("QScriptValue(qQNaN())", qQNaN());
+        value.insert("QScriptValue(qInf())", qInf());
+        value.insert("QScriptValue(-qInf())", qInf());
+        value.insert("QScriptValue(\"NaN\")", qQNaN());
+        value.insert("QScriptValue(\"Infinity\")", qInf());
+        value.insert("QScriptValue(\"-Infinity\")", qInf());
+        value.insert("QScriptValue(\"ciao\")", qQNaN());
+        value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", qQNaN());
+        value.insert("QScriptValue(QString(\"\"))", 0);
+        value.insert("QScriptValue(QString())", 0);
+        value.insert("QScriptValue(QString(\"0\"))", 0);
+        value.insert("QScriptValue(QString(\"123\"))", 123);
+        value.insert("QScriptValue(QString(\"12.4\"))", 12.4);
+        value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", qQNaN());
+        value.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(0, true)", 1);
+        value.insert("QScriptValue(0, false)", 0);
+        value.insert("QScriptValue(0, int(122))", 122);
+        value.insert("QScriptValue(0, uint(124))", 124);
+        value.insert("QScriptValue(0, 0)", 0);
+        value.insert("QScriptValue(0, 0.0)", 0);
+        value.insert("QScriptValue(0, 123.0)", 123);
+        value.insert("QScriptValue(0, 6.37e-8)", 6.369999999999999e-08);
+        value.insert("QScriptValue(0, -6.37e-8)", -6.369999999999999e-08);
+        value.insert("QScriptValue(0, 0x43211234)", 1126240820);
+        value.insert("QScriptValue(0, 0x10000)", 65536);
+        value.insert("QScriptValue(0, 0x10001)", 65537);
+        value.insert("QScriptValue(0, qSNaN())", qQNaN());
+        value.insert("QScriptValue(0, qQNaN())", qQNaN());
+        value.insert("QScriptValue(0, qInf())", qInf());
+        value.insert("QScriptValue(0, -qInf())", qInf());
+        value.insert("QScriptValue(0, \"NaN\")", qQNaN());
+        value.insert("QScriptValue(0, \"Infinity\")", qInf());
+        value.insert("QScriptValue(0, \"-Infinity\")", qInf());
+        value.insert("QScriptValue(0, \"ciao\")", qQNaN());
+        value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", qQNaN());
+        value.insert("QScriptValue(0, QString(\"\"))", 0);
+        value.insert("QScriptValue(0, QString())", 0);
+        value.insert("QScriptValue(0, QString(\"0\"))", 0);
+        value.insert("QScriptValue(0, QString(\"123\"))", 123);
+        value.insert("QScriptValue(0, QString(\"12.3\"))", 12.3);
+        value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", qQNaN());
+        value.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(engine, true)", 1);
+        value.insert("QScriptValue(engine, false)", 0);
+        value.insert("QScriptValue(engine, int(122))", 122);
+        value.insert("QScriptValue(engine, uint(124))", 124);
+        value.insert("QScriptValue(engine, 0)", 0);
+        value.insert("QScriptValue(engine, 0.0)", 0);
+        value.insert("QScriptValue(engine, 123.0)", 123);
+        value.insert("QScriptValue(engine, 6.37e-8)", 6.369999999999999e-08);
+        value.insert("QScriptValue(engine, -6.37e-8)", -6.369999999999999e-08);
+        value.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+        value.insert("QScriptValue(engine, 0x10000)", 65536);
+        value.insert("QScriptValue(engine, 0x10001)", 65537);
+        value.insert("QScriptValue(engine, qSNaN())", qQNaN());
+        value.insert("QScriptValue(engine, qQNaN())", qQNaN());
+        value.insert("QScriptValue(engine, qInf())", qInf());
+        value.insert("QScriptValue(engine, -qInf())", qInf());
+        value.insert("QScriptValue(engine, \"NaN\")", qQNaN());
+        value.insert("QScriptValue(engine, \"Infinity\")", qInf());
+        value.insert("QScriptValue(engine, \"-Infinity\")", qInf());
+        value.insert("QScriptValue(engine, \"ciao\")", qQNaN());
+        value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", qQNaN());
+        value.insert("QScriptValue(engine, QString(\"\"))", 0);
+        value.insert("QScriptValue(engine, QString())", 0);
+        value.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        value.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        value.insert("QScriptValue(engine, QString(\"1.23\"))", 1.23);
+        value.insert("engine->evaluate(\"[]\")", 0);
+        value.insert("engine->evaluate(\"{}\")", qQNaN());
+        value.insert("engine->evaluate(\"Object.prototype\")", qQNaN());
+        value.insert("engine->evaluate(\"Date.prototype\")", qQNaN());
+        value.insert("engine->evaluate(\"Array.prototype\")", 0);
+        value.insert("engine->evaluate(\"Function.prototype\")", qQNaN());
+        value.insert("engine->evaluate(\"Error.prototype\")", qQNaN());
+        value.insert("engine->evaluate(\"Object\")", qQNaN());
+        value.insert("engine->evaluate(\"Array\")", qQNaN());
+        value.insert("engine->evaluate(\"Number\")", qQNaN());
+        value.insert("engine->evaluate(\"Function\")", qQNaN());
+        value.insert("engine->evaluate(\"(function() { return 1; })\")", qQNaN());
+        value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", qQNaN());
+        value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", qQNaN());
+        value.insert("engine->evaluate(\"/foo/\")", qQNaN());
+        value.insert("engine->evaluate(\"new Object()\")", qQNaN());
+        value.insert("engine->evaluate(\"new Array()\")", 0);
+        value.insert("engine->evaluate(\"new Error()\")", qQNaN());
+    }
+    newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castqsreal_test(const char*, const QScriptValue& value)
+{
+    QFETCH(qsreal, expected);
+    if (qIsNaN(expected)) {
+        QVERIFY(qIsNaN(qscriptvalue_cast<qsreal>(value)));
+        return;
+    }
+    if (qIsInf(expected)) {
+        QVERIFY(qIsInf(qscriptvalue_cast<qsreal>(value)));
+        return;
+    }
+    QCOMPARE(qscriptvalue_cast<qsreal>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castqsreal)
+
+
+void tst_QScriptValue::qscriptvalue_castbool_initData()
+{
+    QTest::addColumn<bool>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castbool_makeData(const char* expr)
+{
+    static QHash<QString, bool> value;
+    if (value.isEmpty()) {
+        value.insert("QScriptValue()", false);
+        value.insert("QScriptValue(QScriptValue::UndefinedValue)", false);
+        value.insert("QScriptValue(QScriptValue::NullValue)", false);
+        value.insert("QScriptValue(true)", true);
+        value.insert("QScriptValue(false)", false);
+        value.insert("QScriptValue(int(122))", true);
+        value.insert("QScriptValue(uint(124))", true);
+        value.insert("QScriptValue(0)", false);
+        value.insert("QScriptValue(0.0)", false);
+        value.insert("QScriptValue(123.0)", true);
+        value.insert("QScriptValue(6.37e-8)", true);
+        value.insert("QScriptValue(-6.37e-8)", true);
+        value.insert("QScriptValue(0x43211234)", true);
+        value.insert("QScriptValue(0x10000)", true);
+        value.insert("QScriptValue(0x10001)", true);
+        value.insert("QScriptValue(qSNaN())", false);
+        value.insert("QScriptValue(qQNaN())", false);
+        value.insert("QScriptValue(qInf())", true);
+        value.insert("QScriptValue(-qInf())", true);
+        value.insert("QScriptValue(\"NaN\")", true);
+        value.insert("QScriptValue(\"Infinity\")", true);
+        value.insert("QScriptValue(\"-Infinity\")", true);
+        value.insert("QScriptValue(\"ciao\")", true);
+        value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", true);
+        value.insert("QScriptValue(QString(\"\"))", false);
+        value.insert("QScriptValue(QString())", false);
+        value.insert("QScriptValue(QString(\"0\"))", true);
+        value.insert("QScriptValue(QString(\"123\"))", true);
+        value.insert("QScriptValue(QString(\"12.4\"))", true);
+        value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", false);
+        value.insert("QScriptValue(0, QScriptValue::NullValue)", false);
+        value.insert("QScriptValue(0, true)", true);
+        value.insert("QScriptValue(0, false)", false);
+        value.insert("QScriptValue(0, int(122))", true);
+        value.insert("QScriptValue(0, uint(124))", true);
+        value.insert("QScriptValue(0, 0)", false);
+        value.insert("QScriptValue(0, 0.0)", false);
+        value.insert("QScriptValue(0, 123.0)", true);
+        value.insert("QScriptValue(0, 6.37e-8)", true);
+        value.insert("QScriptValue(0, -6.37e-8)", true);
+        value.insert("QScriptValue(0, 0x43211234)", true);
+        value.insert("QScriptValue(0, 0x10000)", true);
+        value.insert("QScriptValue(0, 0x10001)", true);
+        value.insert("QScriptValue(0, qSNaN())", false);
+        value.insert("QScriptValue(0, qQNaN())", false);
+        value.insert("QScriptValue(0, qInf())", true);
+        value.insert("QScriptValue(0, -qInf())", true);
+        value.insert("QScriptValue(0, \"NaN\")", true);
+        value.insert("QScriptValue(0, \"Infinity\")", true);
+        value.insert("QScriptValue(0, \"-Infinity\")", true);
+        value.insert("QScriptValue(0, \"ciao\")", true);
+        value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", true);
+        value.insert("QScriptValue(0, QString(\"\"))", false);
+        value.insert("QScriptValue(0, QString())", false);
+        value.insert("QScriptValue(0, QString(\"0\"))", true);
+        value.insert("QScriptValue(0, QString(\"123\"))", true);
+        value.insert("QScriptValue(0, QString(\"12.3\"))", true);
+        value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", false);
+        value.insert("QScriptValue(engine, QScriptValue::NullValue)", false);
+        value.insert("QScriptValue(engine, true)", true);
+        value.insert("QScriptValue(engine, false)", false);
+        value.insert("QScriptValue(engine, int(122))", true);
+        value.insert("QScriptValue(engine, uint(124))", true);
+        value.insert("QScriptValue(engine, 0)", false);
+        value.insert("QScriptValue(engine, 0.0)", false);
+        value.insert("QScriptValue(engine, 123.0)", true);
+        value.insert("QScriptValue(engine, 6.37e-8)", true);
+        value.insert("QScriptValue(engine, -6.37e-8)", true);
+        value.insert("QScriptValue(engine, 0x43211234)", true);
+        value.insert("QScriptValue(engine, 0x10000)", true);
+        value.insert("QScriptValue(engine, 0x10001)", true);
+        value.insert("QScriptValue(engine, qSNaN())", false);
+        value.insert("QScriptValue(engine, qQNaN())", false);
+        value.insert("QScriptValue(engine, qInf())", true);
+        value.insert("QScriptValue(engine, -qInf())", true);
+        value.insert("QScriptValue(engine, \"NaN\")", true);
+        value.insert("QScriptValue(engine, \"Infinity\")", true);
+        value.insert("QScriptValue(engine, \"-Infinity\")", true);
+        value.insert("QScriptValue(engine, \"ciao\")", true);
+        value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", true);
+        value.insert("QScriptValue(engine, QString(\"\"))", false);
+        value.insert("QScriptValue(engine, QString())", false);
+        value.insert("QScriptValue(engine, QString(\"0\"))", true);
+        value.insert("QScriptValue(engine, QString(\"123\"))", true);
+        value.insert("QScriptValue(engine, QString(\"1.23\"))", true);
+        value.insert("engine->evaluate(\"[]\")", true);
+        value.insert("engine->evaluate(\"{}\")", false);
+        value.insert("engine->evaluate(\"Object.prototype\")", true);
+        value.insert("engine->evaluate(\"Date.prototype\")", true);
+        value.insert("engine->evaluate(\"Array.prototype\")", true);
+        value.insert("engine->evaluate(\"Function.prototype\")", true);
+        value.insert("engine->evaluate(\"Error.prototype\")", true);
+        value.insert("engine->evaluate(\"Object\")", true);
+        value.insert("engine->evaluate(\"Array\")", true);
+        value.insert("engine->evaluate(\"Number\")", true);
+        value.insert("engine->evaluate(\"Function\")", true);
+        value.insert("engine->evaluate(\"(function() { return 1; })\")", true);
+        value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", true);
+        value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", true);
+        value.insert("engine->evaluate(\"/foo/\")", true);
+        value.insert("engine->evaluate(\"new Object()\")", true);
+        value.insert("engine->evaluate(\"new Array()\")", true);
+        value.insert("engine->evaluate(\"new Error()\")", true);
+    }
+    newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castbool_test(const char*, const QScriptValue& value)
+{
+    QFETCH(bool, expected);
+    QCOMPARE(qscriptvalue_cast<bool>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castbool)
+
+
+void tst_QScriptValue::qscriptvalue_castqint32_initData()
+{
+    QTest::addColumn<qint32>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castqint32_makeData(const char* expr)
+{
+    static QHash<QString, qint32> value;
+    if (value.isEmpty()) {
+        value.insert("QScriptValue()", 0);
+        value.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(true)", 1);
+        value.insert("QScriptValue(false)", 0);
+        value.insert("QScriptValue(int(122))", 122);
+        value.insert("QScriptValue(uint(124))", 124);
+        value.insert("QScriptValue(0)", 0);
+        value.insert("QScriptValue(0.0)", 0);
+        value.insert("QScriptValue(123.0)", 123);
+        value.insert("QScriptValue(6.37e-8)", 0);
+        value.insert("QScriptValue(-6.37e-8)", 0);
+        value.insert("QScriptValue(0x43211234)", 1126240820);
+        value.insert("QScriptValue(0x10000)", 65536);
+        value.insert("QScriptValue(0x10001)", 65537);
+        value.insert("QScriptValue(qSNaN())", 0);
+        value.insert("QScriptValue(qQNaN())", 0);
+        value.insert("QScriptValue(qInf())", 0);
+        value.insert("QScriptValue(-qInf())", 0);
+        value.insert("QScriptValue(\"NaN\")", 0);
+        value.insert("QScriptValue(\"Infinity\")", 0);
+        value.insert("QScriptValue(\"-Infinity\")", 0);
+        value.insert("QScriptValue(\"ciao\")", 0);
+        value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(QString(\"\"))", 0);
+        value.insert("QScriptValue(QString())", 0);
+        value.insert("QScriptValue(QString(\"0\"))", 0);
+        value.insert("QScriptValue(QString(\"123\"))", 123);
+        value.insert("QScriptValue(QString(\"12.4\"))", 12);
+        value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(0, true)", 1);
+        value.insert("QScriptValue(0, false)", 0);
+        value.insert("QScriptValue(0, int(122))", 122);
+        value.insert("QScriptValue(0, uint(124))", 124);
+        value.insert("QScriptValue(0, 0)", 0);
+        value.insert("QScriptValue(0, 0.0)", 0);
+        value.insert("QScriptValue(0, 123.0)", 123);
+        value.insert("QScriptValue(0, 6.37e-8)", 0);
+        value.insert("QScriptValue(0, -6.37e-8)", 0);
+        value.insert("QScriptValue(0, 0x43211234)", 1126240820);
+        value.insert("QScriptValue(0, 0x10000)", 65536);
+        value.insert("QScriptValue(0, 0x10001)", 65537);
+        value.insert("QScriptValue(0, qSNaN())", 0);
+        value.insert("QScriptValue(0, qQNaN())", 0);
+        value.insert("QScriptValue(0, qInf())", 0);
+        value.insert("QScriptValue(0, -qInf())", 0);
+        value.insert("QScriptValue(0, \"NaN\")", 0);
+        value.insert("QScriptValue(0, \"Infinity\")", 0);
+        value.insert("QScriptValue(0, \"-Infinity\")", 0);
+        value.insert("QScriptValue(0, \"ciao\")", 0);
+        value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(0, QString(\"\"))", 0);
+        value.insert("QScriptValue(0, QString())", 0);
+        value.insert("QScriptValue(0, QString(\"0\"))", 0);
+        value.insert("QScriptValue(0, QString(\"123\"))", 123);
+        value.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+        value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(engine, true)", 1);
+        value.insert("QScriptValue(engine, false)", 0);
+        value.insert("QScriptValue(engine, int(122))", 122);
+        value.insert("QScriptValue(engine, uint(124))", 124);
+        value.insert("QScriptValue(engine, 0)", 0);
+        value.insert("QScriptValue(engine, 0.0)", 0);
+        value.insert("QScriptValue(engine, 123.0)", 123);
+        value.insert("QScriptValue(engine, 6.37e-8)", 0);
+        value.insert("QScriptValue(engine, -6.37e-8)", 0);
+        value.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+        value.insert("QScriptValue(engine, 0x10000)", 65536);
+        value.insert("QScriptValue(engine, 0x10001)", 65537);
+        value.insert("QScriptValue(engine, qSNaN())", 0);
+        value.insert("QScriptValue(engine, qQNaN())", 0);
+        value.insert("QScriptValue(engine, qInf())", 0);
+        value.insert("QScriptValue(engine, -qInf())", 0);
+        value.insert("QScriptValue(engine, \"NaN\")", 0);
+        value.insert("QScriptValue(engine, \"Infinity\")", 0);
+        value.insert("QScriptValue(engine, \"-Infinity\")", 0);
+        value.insert("QScriptValue(engine, \"ciao\")", 0);
+        value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(engine, QString(\"\"))", 0);
+        value.insert("QScriptValue(engine, QString())", 0);
+        value.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        value.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        value.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+        value.insert("engine->evaluate(\"[]\")", 0);
+        value.insert("engine->evaluate(\"{}\")", 0);
+        value.insert("engine->evaluate(\"Object.prototype\")", 0);
+        value.insert("engine->evaluate(\"Date.prototype\")", 0);
+        value.insert("engine->evaluate(\"Array.prototype\")", 0);
+        value.insert("engine->evaluate(\"Function.prototype\")", 0);
+        value.insert("engine->evaluate(\"Error.prototype\")", 0);
+        value.insert("engine->evaluate(\"Object\")", 0);
+        value.insert("engine->evaluate(\"Array\")", 0);
+        value.insert("engine->evaluate(\"Number\")", 0);
+        value.insert("engine->evaluate(\"Function\")", 0);
+        value.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+        value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+        value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+        value.insert("engine->evaluate(\"/foo/\")", 0);
+        value.insert("engine->evaluate(\"new Object()\")", 0);
+        value.insert("engine->evaluate(\"new Array()\")", 0);
+        value.insert("engine->evaluate(\"new Error()\")", 0);
+    }
+    newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castqint32_test(const char*, const QScriptValue& value)
+{
+    QFETCH(qint32, expected);
+    QCOMPARE(qscriptvalue_cast<qint32>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castqint32)
+
+
+void tst_QScriptValue::qscriptvalue_castquint32_initData()
+{
+    QTest::addColumn<quint32>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castquint32_makeData(const char* expr)
+{
+    static QHash<QString, quint32> value;
+    if (value.isEmpty()) {
+        value.insert("QScriptValue()", 0);
+        value.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(true)", 1);
+        value.insert("QScriptValue(false)", 0);
+        value.insert("QScriptValue(int(122))", 122);
+        value.insert("QScriptValue(uint(124))", 124);
+        value.insert("QScriptValue(0)", 0);
+        value.insert("QScriptValue(0.0)", 0);
+        value.insert("QScriptValue(123.0)", 123);
+        value.insert("QScriptValue(6.37e-8)", 0);
+        value.insert("QScriptValue(-6.37e-8)", 0);
+        value.insert("QScriptValue(0x43211234)", 1126240820);
+        value.insert("QScriptValue(0x10000)", 65536);
+        value.insert("QScriptValue(0x10001)", 65537);
+        value.insert("QScriptValue(qSNaN())", 0);
+        value.insert("QScriptValue(qQNaN())", 0);
+        value.insert("QScriptValue(qInf())", 0);
+        value.insert("QScriptValue(-qInf())", 0);
+        value.insert("QScriptValue(\"NaN\")", 0);
+        value.insert("QScriptValue(\"Infinity\")", 0);
+        value.insert("QScriptValue(\"-Infinity\")", 0);
+        value.insert("QScriptValue(\"ciao\")", 0);
+        value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(QString(\"\"))", 0);
+        value.insert("QScriptValue(QString())", 0);
+        value.insert("QScriptValue(QString(\"0\"))", 0);
+        value.insert("QScriptValue(QString(\"123\"))", 123);
+        value.insert("QScriptValue(QString(\"12.4\"))", 12);
+        value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(0, true)", 1);
+        value.insert("QScriptValue(0, false)", 0);
+        value.insert("QScriptValue(0, int(122))", 122);
+        value.insert("QScriptValue(0, uint(124))", 124);
+        value.insert("QScriptValue(0, 0)", 0);
+        value.insert("QScriptValue(0, 0.0)", 0);
+        value.insert("QScriptValue(0, 123.0)", 123);
+        value.insert("QScriptValue(0, 6.37e-8)", 0);
+        value.insert("QScriptValue(0, -6.37e-8)", 0);
+        value.insert("QScriptValue(0, 0x43211234)", 1126240820);
+        value.insert("QScriptValue(0, 0x10000)", 65536);
+        value.insert("QScriptValue(0, 0x10001)", 65537);
+        value.insert("QScriptValue(0, qSNaN())", 0);
+        value.insert("QScriptValue(0, qQNaN())", 0);
+        value.insert("QScriptValue(0, qInf())", 0);
+        value.insert("QScriptValue(0, -qInf())", 0);
+        value.insert("QScriptValue(0, \"NaN\")", 0);
+        value.insert("QScriptValue(0, \"Infinity\")", 0);
+        value.insert("QScriptValue(0, \"-Infinity\")", 0);
+        value.insert("QScriptValue(0, \"ciao\")", 0);
+        value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(0, QString(\"\"))", 0);
+        value.insert("QScriptValue(0, QString())", 0);
+        value.insert("QScriptValue(0, QString(\"0\"))", 0);
+        value.insert("QScriptValue(0, QString(\"123\"))", 123);
+        value.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+        value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(engine, true)", 1);
+        value.insert("QScriptValue(engine, false)", 0);
+        value.insert("QScriptValue(engine, int(122))", 122);
+        value.insert("QScriptValue(engine, uint(124))", 124);
+        value.insert("QScriptValue(engine, 0)", 0);
+        value.insert("QScriptValue(engine, 0.0)", 0);
+        value.insert("QScriptValue(engine, 123.0)", 123);
+        value.insert("QScriptValue(engine, 6.37e-8)", 0);
+        value.insert("QScriptValue(engine, -6.37e-8)", 0);
+        value.insert("QScriptValue(engine, 0x43211234)", 1126240820);
+        value.insert("QScriptValue(engine, 0x10000)", 65536);
+        value.insert("QScriptValue(engine, 0x10001)", 65537);
+        value.insert("QScriptValue(engine, qSNaN())", 0);
+        value.insert("QScriptValue(engine, qQNaN())", 0);
+        value.insert("QScriptValue(engine, qInf())", 0);
+        value.insert("QScriptValue(engine, -qInf())", 0);
+        value.insert("QScriptValue(engine, \"NaN\")", 0);
+        value.insert("QScriptValue(engine, \"Infinity\")", 0);
+        value.insert("QScriptValue(engine, \"-Infinity\")", 0);
+        value.insert("QScriptValue(engine, \"ciao\")", 0);
+        value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(engine, QString(\"\"))", 0);
+        value.insert("QScriptValue(engine, QString())", 0);
+        value.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        value.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        value.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+        value.insert("engine->evaluate(\"[]\")", 0);
+        value.insert("engine->evaluate(\"{}\")", 0);
+        value.insert("engine->evaluate(\"Object.prototype\")", 0);
+        value.insert("engine->evaluate(\"Date.prototype\")", 0);
+        value.insert("engine->evaluate(\"Array.prototype\")", 0);
+        value.insert("engine->evaluate(\"Function.prototype\")", 0);
+        value.insert("engine->evaluate(\"Error.prototype\")", 0);
+        value.insert("engine->evaluate(\"Object\")", 0);
+        value.insert("engine->evaluate(\"Array\")", 0);
+        value.insert("engine->evaluate(\"Number\")", 0);
+        value.insert("engine->evaluate(\"Function\")", 0);
+        value.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+        value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+        value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+        value.insert("engine->evaluate(\"/foo/\")", 0);
+        value.insert("engine->evaluate(\"new Object()\")", 0);
+        value.insert("engine->evaluate(\"new Array()\")", 0);
+        value.insert("engine->evaluate(\"new Error()\")", 0);
+    }
+    newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castquint32_test(const char*, const QScriptValue& value)
+{
+    QFETCH(quint32, expected);
+    QCOMPARE(qscriptvalue_cast<quint32>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castquint32)
+
+
+void tst_QScriptValue::qscriptvalue_castquint16_initData()
+{
+    QTest::addColumn<quint16>("expected");
+    initScriptValues();
+}
+
+void tst_QScriptValue::qscriptvalue_castquint16_makeData(const char* expr)
+{
+    static QHash<QString, quint16> value;
+    if (value.isEmpty()) {
+        value.insert("QScriptValue()", 0);
+        value.insert("QScriptValue(QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(true)", 1);
+        value.insert("QScriptValue(false)", 0);
+        value.insert("QScriptValue(int(122))", 122);
+        value.insert("QScriptValue(uint(124))", 124);
+        value.insert("QScriptValue(0)", 0);
+        value.insert("QScriptValue(0.0)", 0);
+        value.insert("QScriptValue(123.0)", 123);
+        value.insert("QScriptValue(6.37e-8)", 0);
+        value.insert("QScriptValue(-6.37e-8)", 0);
+        value.insert("QScriptValue(0x43211234)", 4660);
+        value.insert("QScriptValue(0x10000)", 0);
+        value.insert("QScriptValue(0x10001)", 1);
+        value.insert("QScriptValue(qSNaN())", 0);
+        value.insert("QScriptValue(qQNaN())", 0);
+        value.insert("QScriptValue(qInf())", 0);
+        value.insert("QScriptValue(-qInf())", 0);
+        value.insert("QScriptValue(\"NaN\")", 0);
+        value.insert("QScriptValue(\"Infinity\")", 0);
+        value.insert("QScriptValue(\"-Infinity\")", 0);
+        value.insert("QScriptValue(\"ciao\")", 0);
+        value.insert("QScriptValue(QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(QString(\"\"))", 0);
+        value.insert("QScriptValue(QString())", 0);
+        value.insert("QScriptValue(QString(\"0\"))", 0);
+        value.insert("QScriptValue(QString(\"123\"))", 123);
+        value.insert("QScriptValue(QString(\"12.4\"))", 12);
+        value.insert("QScriptValue(0, QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(0, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(0, true)", 1);
+        value.insert("QScriptValue(0, false)", 0);
+        value.insert("QScriptValue(0, int(122))", 122);
+        value.insert("QScriptValue(0, uint(124))", 124);
+        value.insert("QScriptValue(0, 0)", 0);
+        value.insert("QScriptValue(0, 0.0)", 0);
+        value.insert("QScriptValue(0, 123.0)", 123);
+        value.insert("QScriptValue(0, 6.37e-8)", 0);
+        value.insert("QScriptValue(0, -6.37e-8)", 0);
+        value.insert("QScriptValue(0, 0x43211234)", 4660);
+        value.insert("QScriptValue(0, 0x10000)", 0);
+        value.insert("QScriptValue(0, 0x10001)", 1);
+        value.insert("QScriptValue(0, qSNaN())", 0);
+        value.insert("QScriptValue(0, qQNaN())", 0);
+        value.insert("QScriptValue(0, qInf())", 0);
+        value.insert("QScriptValue(0, -qInf())", 0);
+        value.insert("QScriptValue(0, \"NaN\")", 0);
+        value.insert("QScriptValue(0, \"Infinity\")", 0);
+        value.insert("QScriptValue(0, \"-Infinity\")", 0);
+        value.insert("QScriptValue(0, \"ciao\")", 0);
+        value.insert("QScriptValue(0, QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(0, QString(\"\"))", 0);
+        value.insert("QScriptValue(0, QString())", 0);
+        value.insert("QScriptValue(0, QString(\"0\"))", 0);
+        value.insert("QScriptValue(0, QString(\"123\"))", 123);
+        value.insert("QScriptValue(0, QString(\"12.3\"))", 12);
+        value.insert("QScriptValue(engine, QScriptValue::UndefinedValue)", 0);
+        value.insert("QScriptValue(engine, QScriptValue::NullValue)", 0);
+        value.insert("QScriptValue(engine, true)", 1);
+        value.insert("QScriptValue(engine, false)", 0);
+        value.insert("QScriptValue(engine, int(122))", 122);
+        value.insert("QScriptValue(engine, uint(124))", 124);
+        value.insert("QScriptValue(engine, 0)", 0);
+        value.insert("QScriptValue(engine, 0.0)", 0);
+        value.insert("QScriptValue(engine, 123.0)", 123);
+        value.insert("QScriptValue(engine, 6.37e-8)", 0);
+        value.insert("QScriptValue(engine, -6.37e-8)", 0);
+        value.insert("QScriptValue(engine, 0x43211234)", 4660);
+        value.insert("QScriptValue(engine, 0x10000)", 0);
+        value.insert("QScriptValue(engine, 0x10001)", 1);
+        value.insert("QScriptValue(engine, qSNaN())", 0);
+        value.insert("QScriptValue(engine, qQNaN())", 0);
+        value.insert("QScriptValue(engine, qInf())", 0);
+        value.insert("QScriptValue(engine, -qInf())", 0);
+        value.insert("QScriptValue(engine, \"NaN\")", 0);
+        value.insert("QScriptValue(engine, \"Infinity\")", 0);
+        value.insert("QScriptValue(engine, \"-Infinity\")", 0);
+        value.insert("QScriptValue(engine, \"ciao\")", 0);
+        value.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\"))", 0);
+        value.insert("QScriptValue(engine, QString(\"\"))", 0);
+        value.insert("QScriptValue(engine, QString())", 0);
+        value.insert("QScriptValue(engine, QString(\"0\"))", 0);
+        value.insert("QScriptValue(engine, QString(\"123\"))", 123);
+        value.insert("QScriptValue(engine, QString(\"1.23\"))", 1);
+        value.insert("engine->evaluate(\"[]\")", 0);
+        value.insert("engine->evaluate(\"{}\")", 0);
+        value.insert("engine->evaluate(\"Object.prototype\")", 0);
+        value.insert("engine->evaluate(\"Date.prototype\")", 0);
+        value.insert("engine->evaluate(\"Array.prototype\")", 0);
+        value.insert("engine->evaluate(\"Function.prototype\")", 0);
+        value.insert("engine->evaluate(\"Error.prototype\")", 0);
+        value.insert("engine->evaluate(\"Object\")", 0);
+        value.insert("engine->evaluate(\"Array\")", 0);
+        value.insert("engine->evaluate(\"Number\")", 0);
+        value.insert("engine->evaluate(\"Function\")", 0);
+        value.insert("engine->evaluate(\"(function() { return 1; })\")", 0);
+        value.insert("engine->evaluate(\"(function() { return 'ciao'; })\")", 0);
+        value.insert("engine->evaluate(\"(function() { throw new Error('foo'); })\")", 0);
+        value.insert("engine->evaluate(\"/foo/\")", 0);
+        value.insert("engine->evaluate(\"new Object()\")", 0);
+        value.insert("engine->evaluate(\"new Array()\")", 0);
+        value.insert("engine->evaluate(\"new Error()\")", 0);
+    }
+    newRow(expr) << value.value(expr);
+}
+
+void tst_QScriptValue::qscriptvalue_castquint16_test(const char*, const QScriptValue& value)
+{
+    QFETCH(quint16, expected);
+    QCOMPARE(qscriptvalue_cast<quint16>(value), expected);
+}
+
+DEFINE_TEST_FUNCTION(qscriptvalue_castquint16)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qsslcertificate/more-certificates/malformed-just-begin-no-newline.pem	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+-----BEGIN CERTIFICATE-----
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qsslcertificate/more-certificates/malformed-just-begin.pem	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1 @@
+-----BEGIN CERTIFICATE----- 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/qsslcertificate/more-certificates/no-ending-newline.pem	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE----- 
+MIIB8zCCAVwCAREwDQYJKoZIhvcNAQEFBQAwWzELMAkGA1UEBhMCQVUxEzARBgNV 
+BAgTClF1ZWVuc2xhbmQxGjAYBgNVBAoTEUNyeXB0U29mdCBQdHkgTHRkMRswGQYD 
+VQQDExJUZXN0IENBICgxMDI0IGJpdCkwHhcNMDcwNDE3MDc0MDI2WhcNMDcwNTE3 
+MDc0MDI2WjApMRowGAYDVQQDExFuYW1lL3dpdGgvc2xhc2hlczELMAkGA1UEBhMC 
+Tk8wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOud6QOsME+pWANExxgmL0iT 
+1ayg++hTxHsqAYnm/FoMxfUh+NdKkgJn2/GfNppinfPOSI667VqonU+7JBZDTLV5 
+CPbZIo9fFQpDJQN6naev4yaxU1VeYFfI7S8c8zYKeGSR+RenNNeLvfH80YxPpZZ1 
+snv8IfDH2V8MVxiyr7lLAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAleaU4pgzV6KY 
++q9QuXapUYMsC2GiNtDmkG3k+MTHUO8XlE4hqPrIM6rRf7zKQdZ950R2wL9FSnYl 
+Qm1Tdv38dCka6ivMBqvRuOt9axH3m0G7nzHL7U3zaCbtEx3yVln+b3yYtiVpTuq0 
+3MLrt7tQGAW6ra8ISf6YY1W65/uVXZE= 
+-----END CERTIFICATE-----
\ No newline at end of file
--- a/tests/auto/qsslcertificate/tst_qsslcertificate.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qsslcertificate/tst_qsslcertificate.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -543,6 +543,9 @@
     QTest::newRow("\"d.*/c.*.pem\" wildcard der") << QString("d.*/c.*.pem") << int(QRegExp::Wildcard) << false << 0;
 
     QTest::newRow("trailing-whitespace") << QString("more-certificates/trailing-whitespace.pem") << int(QRegExp::FixedString) << true << 1;
+    QTest::newRow("no-ending-newline") << QString("more-certificates/no-ending-newline.pem") << int(QRegExp::FixedString) << true << 1;
+    QTest::newRow("malformed-just-begin") << QString("more-certificates/malformed-just-begin.pem") << int(QRegExp::FixedString) << true << 0;
+    QTest::newRow("malformed-just-begin-no-newline") << QString("more-certificates/malformed-just-begin-no-newline.pem") << int(QRegExp::FixedString) << true << 0;
 }
 
 void tst_QSslCertificate::fromPath()
--- a/tests/auto/qstyle/tst_qstyle.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qstyle/tst_qstyle.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -52,6 +52,7 @@
 #include <qstyleoption.h>
 #include <qscrollbar.h>
 #include <qprogressbar.h>
+#include <qtoolbutton.h>
 
 #include <qplastiquestyle.h>
 #include <qwindowsstyle.h>
@@ -445,6 +446,8 @@
 
     if (QSysInfo::WindowsVersion == QSysInfo::WV_VISTA)
         testPainting(&vistastyle, "vista");
+    else if (QSysInfo::WindowsVersion == QSysInfo::WV_XP)
+        testPainting(&vistastyle, "xp");
 #endif
 }
 
@@ -460,6 +463,7 @@
 
 void tst_QStyle::testPainting(QStyle *style, const QString &platform)
 {
+qDebug("TEST PAINTING");
     //Test Menu
     QString fileName = "images/" + platform + "/menu.png";
     QMenu menu;
@@ -538,6 +542,19 @@
     pixmap = QPixmap::grabWidget(&mdiArea);
     mdiArea.hide();
     comparePixmap(fileName, pixmap);
+
+    // QToolButton
+    fileName = "images/" + platform + "/toolbutton.png";
+    QToolButton tb;
+    tb.setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+    tb.setText("AaQqPpXx");
+    tb.setIcon(style->standardPixmap(QStyle::SP_DirHomeIcon));
+    tb.setStyle(style);
+    tb.show();
+    pixmap = QPixmap::grabWidget(&tb);
+    tb.hide();
+    comparePixmap(fileName, pixmap);
+
 }
 
 void tst_QStyle::testMacStyle()
--- a/tests/auto/qtableview/tst_qtableview.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qtableview/tst_qtableview.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -3024,6 +3024,14 @@
       << QPoint(0, 0)
       << 1
       << 1;
+
+    QTest::newRow("QTBUG-6004 (follow-up): No failing Q_ASSERT, then it passes.")
+      << 10 << 10
+      << (SpanList() << QRect(2, 2, 1, 3) << QRect(2, 2, 1, 1))
+      << false
+      << QPoint(0, 0)
+      << 1
+      << 1;
 }
 
 void tst_QTableView::spans()
--- a/tests/auto/qurl/tst_qurl.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qurl/tst_qurl.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -90,7 +90,6 @@
 private slots:
     void getSetCheck();
     void constructing();
-    void isDetached();
     void assignment();
     void comparison();
     void copying();
@@ -166,6 +165,8 @@
     void ace_testsuite();
     void std3violations_data();
     void std3violations();
+    void std3deviations_data();
+    void std3deviations();
     void tldRestrictions_data();
     void tldRestrictions();
     void emptyQueryOrFragment();
@@ -319,25 +320,6 @@
     QVERIFY(!buildUNC.isEmpty());
 }
 
-void tst_QUrl::isDetached()
-{
-    QUrl url;
-    QVERIFY(!url.isDetached());
-
-    url = "http://qt.nokia.com/";
-    QVERIFY(url.isDetached());
-
-    url.clear();
-    QVERIFY(!url.isDetached());
-
-    url.setHost("qt.nokia.com");
-    QVERIFY(url.isDetached());
-
-    QUrl url2 = url;
-    QVERIFY(!url.isDetached());
-    QVERIFY(!url2.isDetached());
-}
-
 void tst_QUrl::assignment()
 {
     QUrl url("http://qt.nokia.com/");
@@ -3258,6 +3240,8 @@
     QTest::newRow("bang") << "foo!" << false;
     QTest::newRow("plus") << "foo+bar" << false;
     QTest::newRow("dot") << "foo.bar";
+    QTest::newRow("startingdot") << ".bar" << false;
+    QTest::newRow("startingdot2") << ".example.com" << false;
     QTest::newRow("slash") << "foo/bar" << true;
     QTest::newRow("colon") << "foo:80" << true;
     QTest::newRow("question") << "foo?bar" << true;
@@ -3302,6 +3286,24 @@
     QVERIFY(!url.isValid());
 }
 
+void tst_QUrl::std3deviations_data()
+{
+    QTest::addColumn<QString>("source");
+
+    QTest::newRow("ending-dot") << "example.com.";
+    QTest::newRow("ending-dot3002") << QString("example.com") + QChar(0x3002);
+}
+
+void tst_QUrl::std3deviations()
+{
+    QFETCH(QString, source);
+    QVERIFY(!QUrl::toAce(source).isEmpty());
+
+    QUrl url;
+    url.setHost(source);
+    QVERIFY(!url.host().isEmpty());
+}
+
 void tst_QUrl::tldRestrictions_data()
 {
     QTest::addColumn<QString>("tld");
--- a/tests/auto/qwidget/tst_qwidget.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/qwidget/tst_qwidget.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -5439,26 +5439,24 @@
     QRegion r;
 };
 
-template<typename R, typename C>
-void verifyColor(R const& region, C const& color)
-{
-    const QRegion r = QRegion(region);
-    for (int i = 0; i < r.rects().size(); ++i) {
-        const QRect rect = r.rects().at(i);
-        for (int t = 0; t < 5; t++) {
-            const QPixmap pixmap = QPixmap::grabWindow(QDesktopWidget().winId(),
-                                                   rect.left(), rect.top(),
-                                                   rect.width(), rect.height());
-            QCOMPARE(pixmap.size(), rect.size());
-            QPixmap expectedPixmap(pixmap); /* ensure equal formats */
-            expectedPixmap.fill(color);
-            if (pixmap.toImage().pixel(0,0) != QColor(color).rgb() && t < 4 )
-            { QTest::qWait(200); continue; }
-            QCOMPARE(pixmap.toImage().pixel(0,0), QColor(color).rgb());
-            QCOMPARE(pixmap, expectedPixmap);
-            break;
-        }
-    }
+#define VERIFY_COLOR(region, color) {                                   \
+    const QRegion r = QRegion(region);                                  \
+    for (int i = 0; i < r.rects().size(); ++i) {                        \
+        const QRect rect = r.rects().at(i);                             \
+        for (int t = 0; t < 5; t++) {                                   \
+            const QPixmap pixmap = QPixmap::grabWindow(QDesktopWidget().winId(), \
+                                                   rect.left(), rect.top(), \
+                                                   rect.width(), rect.height()); \
+            QCOMPARE(pixmap.size(), rect.size());                       \
+            QPixmap expectedPixmap(pixmap); /* ensure equal formats */  \
+            expectedPixmap.fill(color);                                 \
+            if (pixmap.toImage().pixel(0,0) != QColor(color).rgb() && t < 4 ) \
+            { QTest::qWait(200); continue; }                            \
+            QCOMPARE(pixmap.toImage().pixel(0,0), QColor(color).rgb()); \
+            QCOMPARE(pixmap, expectedPixmap);                           \
+            break;                                                      \
+        }                                                               \
+    }                                                                   \
 }
 
 void tst_QWidget::moveChild_data()
@@ -5499,9 +5497,9 @@
 #endif
     QTRY_COMPARE(parent.r, QRegion(parent.rect()) - child.geometry());
     QTRY_COMPARE(child.r, QRegion(child.rect()));
-    verifyColor(child.geometry().translated(tlwOffset),
+    VERIFY_COLOR(child.geometry().translated(tlwOffset),
                  child.color);
-    verifyColor(QRegion(parent.geometry()) - child.geometry().translated(tlwOffset),
+    VERIFY_COLOR(QRegion(parent.geometry()) - child.geometry().translated(tlwOffset),
                  parent.color);
     parent.reset();
     child.reset();
@@ -5520,9 +5518,9 @@
     // should be scrolled in backingstore
     QCOMPARE(child.r, QRegion());
 #endif
-    verifyColor(child.geometry().translated(tlwOffset),
+    VERIFY_COLOR(child.geometry().translated(tlwOffset),
                 child.color);
-    verifyColor(QRegion(parent.geometry()) - child.geometry().translated(tlwOffset),
+    VERIFY_COLOR(QRegion(parent.geometry()) - child.geometry().translated(tlwOffset),
                 parent.color);
 }
 
@@ -5553,8 +5551,8 @@
     child.move(desktopDimensions.width()/2, desktopDimensions.height()/2);
     qApp->processEvents();
 
-    verifyColor(child.geometry().translated(tlwOffset), Qt::blue);
-    verifyColor(QRegion(parent.geometry()) - child.geometry().translated(tlwOffset), Qt::red);
+    VERIFY_COLOR(child.geometry().translated(tlwOffset), Qt::blue);
+    VERIFY_COLOR(QRegion(parent.geometry()) - child.geometry().translated(tlwOffset), Qt::red);
 }
 
 void tst_QWidget::subtractOpaqueSiblings()
--- a/tests/auto/selftests/expected_xunit.txt	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/selftests/expected_xunit.txt	Fri Mar 12 15:46:37 2010 +0200
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <testsuite errors="5" failures="3" tests="9" name="tst_Xunit">
   <properties>
-    <property value="4.6.2" name="QTestVersion"/>
-    <property value="4.6.2" name="QtVersion"/>
+    <property value="<INSERT_QT_VERSION_HERE>" name="QTestVersion"/>
+    <property value="<INSERT_QT_VERSION_HERE>" name="QtVersion"/>
   </properties>
   <testcase result="pass" name="initTestCase"/>
   <testcase result="pass" name="testFunc1">
--- a/tests/auto/selftests/tst_selftests.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/selftests/tst_selftests.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -248,7 +248,7 @@
             continue;
 
         const QString output(QString::fromLatin1(line));
-        const QString expected(QString::fromLatin1(exp.at(i)));
+        const QString expected(QString::fromLatin1(exp.at(i)).replace("<INSERT_QT_VERSION_HERE>", QT_VERSION_STR));
 
         if (line.contains("ASSERT") && output != expected)
             QEXPECT_FAIL("assert", "QTestLib prints out the absolute path.", Continue);
--- a/tests/auto/xmlpatternsxqts/xmlpatternsxqts.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/auto/xmlpatternsxqts/xmlpatternsxqts.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -1,7 +1,6 @@
 TEMPLATE = subdirs
 contains(QT_CONFIG,xmlpatterns) {
   SUBDIRS += lib
-  !wince*:lib.file = lib/lib.pro
   test.depends = lib
 }
 SUBDIRS += test
--- a/tests/benchmarks/benchmarks.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/benchmarks.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -2,7 +2,10 @@
 SUBDIRS = containers-associative \
 	qanimation \
 	qbytearray \
-	qfile_vs_qnetworkaccessmanager \
+        #qfileinfo \
+        qfile_vs_qnetworkaccessmanager \
+        qfontmetrics \
+        qhostinfo \
 	qpainter \
 	qtestlib-simple	events \
         qtext \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/benchmarks/qfontmetrics/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,112 @@
+/****************************************************************************
+**
+** 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 <QObject>
+#include <QFont>
+#include <QFontMetrics>
+
+#include <qtest.h>
+
+//this test benchmarks the once-off (per font configuration) cost
+//associated with using QFontMetrics
+class tst_QFontMetrics : public QObject
+{
+    Q_OBJECT
+public:
+    tst_QFontMetrics() {}
+private slots:
+    void fontmetrics_create();
+    void fontmetrics_create_once_loaded();
+
+    void fontmetrics_height();
+    void fontmetrics_height_once_loaded();
+
+private:
+    void testQFontMetrics(const QFontMetrics &fm);
+};
+
+void tst_QFontMetrics::testQFontMetrics( const QFontMetrics &fm )
+{
+    int fontHeight = fm.height();
+}
+
+void tst_QFontMetrics::fontmetrics_create()
+{
+    QBENCHMARK {
+      QFont boldfont = QApplication::font();
+      boldfont.setBold( true );
+      boldfont.setPointSize(boldfont.pointSize() * 1.5 );
+      QFontMetrics bfm( boldfont );
+    }
+}
+
+void tst_QFontMetrics::fontmetrics_create_once_loaded()
+{
+    QBENCHMARK {
+      QFont boldfont = QApplication::font();
+      boldfont.setBold( true );
+      boldfont.setPointSize(boldfont.pointSize() * 1.5 );
+      QFontMetrics bfm( boldfont );
+    }
+}
+
+void tst_QFontMetrics::fontmetrics_height()
+{
+    QFont boldfont = QApplication::font();
+    boldfont.setBold( true );
+    boldfont.setPointSize(boldfont.pointSize() * 1.5 );
+    QFontMetrics bfm( boldfont );
+
+    QBENCHMARK { testQFontMetrics(bfm); }
+}
+
+void tst_QFontMetrics::fontmetrics_height_once_loaded()
+{
+    QFont boldfont = QApplication::font();
+    boldfont.setBold( true );
+    boldfont.setPointSize(boldfont.pointSize() * 1.5 );
+    QFontMetrics bfm( boldfont );
+    QBENCHMARK { testQFontMetrics(bfm); }
+}
+
+QTEST_MAIN(tst_QFontMetrics)
+
+#include "main.moc"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/benchmarks/qfontmetrics/qfontmetrics.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,5 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_bench_QFontMetrics
+
+SOURCES += main.cpp
--- a/tests/benchmarks/qhostinfo/qhostinfo.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qhostinfo/qhostinfo.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -1,6 +1,6 @@
 load(qttest_p4)
 TEMPLATE = app
-TARGET = tst_qhostinfo
+TARGET = tst_bench_qhostinfo
 DEPENDPATH += .
 INCLUDEPATH += .
 
--- a/tests/benchmarks/qpainter/tst_qpainter.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qpainter/tst_qpainter.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -45,6 +45,10 @@
 #include <QDialog>
 #include <QImage>
 #include <QPaintEngine>
+#include <math.h>
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
 
 Q_DECLARE_METATYPE(QLine)
 Q_DECLARE_METATYPE(QRect)
@@ -178,6 +182,35 @@
     void clipAndFill_data();
     void clipAndFill();
 
+    void drawRoundedRect();
+    void drawScaledRoundedRect();
+    void drawTransformedRoundedRect();
+
+    void drawScaledAntialiasedRoundedRect_data();
+    void drawTransformedAntialiasedRoundedRect_data();
+    void drawAntialiasedRoundedRect();
+    void drawScaledAntialiasedRoundedRect();
+    void drawTransformedAntialiasedRoundedRect();
+
+    void drawScaledImageRoundedRect_data();
+    void drawTransformedImageRoundedRect_data();
+    void drawImageRoundedRect();
+    void drawScaledImageRoundedRect();
+    void drawTransformedImageRoundedRect();
+
+    void drawScaledBorderPixmapRoundedRect_data();
+    void drawTransformedBorderPixmapRoundedRect_data();
+    void drawBorderPixmapRoundedRect();
+    void drawScaledBorderPixmapRoundedRect();
+    void drawTransformedBorderPixmapRoundedRect();
+
+    void drawTransformedTransparentImage_data();
+    void drawTransformedSemiTransparentImage_data();
+    void drawTransformedFilledImage_data();
+    void drawTransformedTransparentImage();
+    void drawTransformedSemiTransparentImage();
+    void drawTransformedFilledImage();
+
 private:
     void setupBrushes();
     void createPrimitives();
@@ -185,6 +218,8 @@
     void drawPrimitives_data_helper(bool fancypens);
     void fillPrimitives_helper(QPainter *painter, PrimitiveType type, PrimitiveSet *s);
 
+    QTransform transformForAngle(qreal angle);
+
     QPaintDevice *surface()
     {
         return new QPixmap(1024, 1024);
@@ -1123,6 +1158,474 @@
     }
 }
 
+QTransform tst_QPainter::transformForAngle(qreal angle)
+{
+    const qreal inv_dist_to_plane = 1. / 1024.;
+
+    QTransform transform;
+
+    QTransform rotTrans;
+    rotTrans.translate(-40, 0);
+    QTransform rotTrans2;
+    rotTrans2.translate(40, 0);
+
+    qreal rad = angle * 2. * M_PI / 360.;
+    qreal c = ::cos(rad);
+    qreal s = ::sin(rad);
+
+    qreal x = 0;
+    qreal y = 80;
+    qreal z = 0;
+
+    qreal len = x * x + y * y + z * z;
+    if (len != 1.) {
+        len = ::sqrt(len);
+        x /= len;
+        y /= len;
+        z /= len;
+    }
+
+    QTransform rot(x*x*(1-c)+c, x*y*(1-c)-z*s, x*z*(1-c)+y*s*inv_dist_to_plane,
+                   y*x*(1-c)+z*s, y*y*(1-c)+c, y*z*(1-c)-x*s*inv_dist_to_plane,
+                   0, 0, 1);
+
+    transform *= rotTrans;
+    transform *= rot;
+    transform *= rotTrans2;
+
+    return transform;
+}
+
+void tst_QPainter::drawRoundedRect()
+{
+    QImage surface(100, 100, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    p.setPen(QPen(Qt::black, 1));
+    p.setBrush(Qt::red);
+
+    QBENCHMARK {
+        p.drawRoundedRect(QRectF(.5, .5, 80, 80), 10, 10);
+    }
+}
+
+void tst_QPainter::drawScaledRoundedRect()
+{
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    p.setPen(QPen(Qt::black, 1));
+    p.setBrush(Qt::red);
+    p.scale(3, 3);
+
+    QBENCHMARK {
+        p.drawRoundedRect(10, 10, 80, 80, 10, 10);
+    }
+}
+
+void tst_QPainter::drawTransformedRoundedRect()
+{
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    p.setPen(QPen(Qt::black, 1));
+    p.setBrush(Qt::red);
+
+    QBENCHMARK {
+        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+        p.drawRoundedRect(100, 100, 80, 80, 10, 10);
+    }
+}
+
+void tst_QPainter::drawAntialiasedRoundedRect()
+{
+    QImage surface(100, 100, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    p.setRenderHint(QPainter::Antialiasing, true);
+    p.setPen(QPen(Qt::black, 1));
+    p.setBrush(Qt::red);
+
+    QBENCHMARK {
+        p.drawRoundedRect(QRectF(.5, .5, 80, 80), 10, 10);
+    }
+}
+
+void tst_QPainter::drawScaledAntialiasedRoundedRect_data()
+{
+    QTest::addColumn<float>("scale");
+
+    for (float i = 0; i < 3; i += .1)
+        QTest::newRow(QString(QLatin1String("scale=%1")).arg(i).toLatin1()) << i;
+}
+
+void tst_QPainter::drawScaledAntialiasedRoundedRect()
+{
+    QFETCH(float, scale);
+
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    p.setRenderHint(QPainter::Antialiasing, true);
+    p.setPen(QPen(Qt::black, 1));
+    p.setBrush(Qt::red);
+    p.scale(scale, scale);
+
+    QBENCHMARK {
+        p.drawRoundedRect(10, 10, 80, 80, 10, 10);
+    }
+}
+
+void tst_QPainter::drawTransformedAntialiasedRoundedRect_data()
+{
+    QTest::addColumn<QTransform>("transform");
+
+    for (float angle = 0; angle < 360; angle += 10)
+        QTest::newRow(QString(QLatin1String("angle=%1")).arg(angle).toLatin1()) << transformForAngle(angle);
+}
+
+void tst_QPainter::drawTransformedAntialiasedRoundedRect()
+{
+    QFETCH(QTransform, transform);
+
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    p.setRenderHint(QPainter::Antialiasing, true);
+    p.setPen(QPen(Qt::black, 1));
+    p.setBrush(Qt::red);
+
+    QBENCHMARK {
+        p.setWorldTransform(transform);
+        p.drawRoundedRect(100, 100, 80, 80, 10, 10);
+    }
+}
+
+void tst_QPainter::drawImageRoundedRect()
+{
+    //setup image
+    const int radius = 10;
+    QImage rectImage(81, 81, QImage::Format_ARGB32_Premultiplied);
+    rectImage.fill(0);
+    QPainter rp(&rectImage);
+    rp.setRenderHint(QPainter::Antialiasing);
+    rp.setPen(Qt::black);
+    rp.setBrush(Qt::red);
+    rp.drawRoundedRect(QRectF(.5, .5, 80, 80), radius, radius);
+
+    //setup surface
+    QImage surface(100, 100, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    QBENCHMARK {
+        p.drawImage(0,0, rectImage);
+    }
+}
+
+void tst_QPainter::drawScaledImageRoundedRect_data()
+{
+    QTest::addColumn<int>("imageType");
+
+    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawScaledImageRoundedRect()
+{
+    QFETCH(int, imageType);
+
+    //setup image
+    const int radius = 10;
+    QImage rectImage(81, 81, (QImage::Format)imageType);
+    rectImage.fill(0);
+    QPainter rp(&rectImage);
+    rp.setRenderHint(QPainter::Antialiasing);
+    rp.setPen(Qt::black);
+    rp.setBrush(Qt::red);
+    rp.drawRoundedRect(QRectF(.5, .5, 80, 80), radius, radius);
+
+    //setup surface
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+    p.scale(3, 3);
+
+    QBENCHMARK {
+        p.drawImage(0,0, rectImage);
+    }
+}
+
+void tst_QPainter::drawTransformedImageRoundedRect_data()
+{
+    QTest::addColumn<int>("imageType");
+
+    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawTransformedImageRoundedRect()
+{
+    QFETCH(int, imageType);
+
+    //setup image
+    const int radius = 10;
+    QImage rectImage(81, 81, (QImage::Format)imageType);
+    rectImage.fill(0);
+    QPainter rp(&rectImage);
+    rp.setRenderHint(QPainter::Antialiasing);
+    rp.setPen(Qt::black);
+    rp.setBrush(Qt::red);
+    rp.drawRoundedRect(QRectF(.5, .5, 80, 80), radius, radius);
+
+    //setup surface
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    QBENCHMARK {
+        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+        p.drawImage(100,100, rectImage);
+    }
+}
+
+//code from QmlGraphicsRectangle for drawing rounded rects
+void tst_QPainter::drawBorderPixmapRoundedRect()
+{
+    //setup image
+    const int pw = 1;
+    const int radius = 10;
+    QImage rectImage(radius*2 + 3 + pw*2, radius*2 + 3 + pw*2, QImage::Format_ARGB32_Premultiplied);
+    rectImage.fill(0);
+    QPainter rp(&rectImage);
+    rp.setRenderHint(QPainter::Antialiasing);
+    rp.setPen(Qt::black);
+    rp.setBrush(Qt::red);
+    if (pw%2)
+        rp.drawRoundedRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, rectImage.width()-(pw+1), rectImage.height()-(pw+1)), radius, radius);
+    else
+        rp.drawRoundedRect(QRectF(qreal(pw)/2, qreal(pw)/2, rectImage.width()-pw, rectImage.height()-pw), radius, radius);
+    QPixmap rectPixmap = QPixmap::fromImage(rectImage);
+
+    //setup surface
+    QImage surface(100, 100, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    QBENCHMARK {
+        const int pw = 2;
+        int width = 80;
+        int height = 80;
+
+        int xOffset = (rectPixmap.width()-1)/2;
+        int yOffset = (rectPixmap.height()-1)/2;
+        Q_ASSERT(rectPixmap.width() == 2*xOffset + 1);
+        Q_ASSERT(rectPixmap.height() == 2*yOffset + 1);
+
+        QMargins margins(xOffset, yOffset, xOffset, yOffset);
+        QTileRules rules(Qt::StretchTile, Qt::StretchTile);
+        //NOTE: even though our item may have qreal-based width and height, qDrawBorderPixmap only supports QRects
+        qDrawBorderPixmap(&p, QRect(-pw/2, -pw/2, width+pw, height+pw), margins, rectPixmap, rectPixmap.rect(), margins, rules);
+    }
+}
+
+void tst_QPainter::drawScaledBorderPixmapRoundedRect_data()
+{
+    QTest::addColumn<float>("scale");
+    QTest::addColumn<int>("imageType");
+
+    for (float i = 0; i < 3; i += .1)
+        QTest::newRow(QString(QLatin1String("scale=%1; imagetype=ARGB32_Pre")).arg(i).toLatin1()) << i << (int)QImage::Format_ARGB32_Premultiplied;
+    //for (float i = 0; i < 3; i += .1)
+    //    QTest::newRow(QString(QLatin1String("scale=%1; imagetype=ARGB8565_Pre")).arg(i).toLatin1()) << i << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+//code from QmlGraphicsRectangle for drawing rounded rects
+void tst_QPainter::drawScaledBorderPixmapRoundedRect()
+{
+    QFETCH(float, scale);
+    QFETCH(int, imageType);
+
+    //setup image
+    const int pw = 1;
+    const int radius = 10;
+    QImage rectImage(radius*2 + 3 + pw*2, radius*2 + 3 + pw*2, (QImage::Format)imageType);
+    rectImage.fill(0);
+    QPainter rp(&rectImage);
+    rp.setRenderHint(QPainter::Antialiasing);
+    rp.setPen(Qt::black);
+    rp.setBrush(Qt::red);
+    if (pw%2)
+        rp.drawRoundedRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, rectImage.width()-(pw+1), rectImage.height()-(pw+1)), radius, radius);
+    else
+        rp.drawRoundedRect(QRectF(qreal(pw)/2, qreal(pw)/2, rectImage.width()-pw, rectImage.height()-pw), radius, radius);
+
+    QPixmap rectPixmap = QPixmap::fromImage(rectImage);
+
+    //setup surface
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+    p.scale(scale, scale);
+
+    QBENCHMARK {
+        const int pw = 2;
+        int width = 80;
+        int height = 80;
+
+        int xOffset = (rectPixmap.width()-1)/2;
+        int yOffset = (rectPixmap.height()-1)/2;
+        Q_ASSERT(rectPixmap.width() == 2*xOffset + 1);
+        Q_ASSERT(rectPixmap.height() == 2*yOffset + 1);
+
+        QMargins margins(xOffset, yOffset, xOffset, yOffset);
+        QTileRules rules(Qt::StretchTile, Qt::StretchTile);
+        qDrawBorderPixmap(&p, QRect(-pw/2, -pw/2, width+pw, height+pw), margins, rectPixmap, rectPixmap.rect(), margins, rules);
+    }
+}
+
+void tst_QPainter::drawTransformedBorderPixmapRoundedRect_data()
+{
+    QTest::addColumn<QTransform>("transform");
+    QTest::addColumn<int>("imageType");
+
+    for (float angle = 0; angle < 360; angle += 10)
+        QTest::newRow(QString(QLatin1String("angle=%1; imagetype=ARGB32_Pre")).arg(angle).toLatin1()) << transformForAngle(angle) << (int)QImage::Format_ARGB32_Premultiplied;
+    //for (float angle = 0; angle < 360; angle += 10)
+    //    QTest::newRow(QString(QLatin1String("angle=%1; imagetype=ARGB8565_Pre")).arg(angle).toLatin1()) << transformForAngle(angle) << (int)QImage::Format_ARGB8565_Premultiplied;
+
+}
+
+//code from QmlGraphicsRectangle for drawing rounded rects
+void tst_QPainter::drawTransformedBorderPixmapRoundedRect()
+{
+    QFETCH(QTransform, transform);
+    QFETCH(int, imageType);
+
+    //setup image
+    const int pw = 1;
+    const int radius = 10;
+    QImage rectImage(radius*2 + 3 + pw*2, radius*2 + 3 + pw*2, (QImage::Format)imageType);
+    rectImage.fill(0);
+    QPainter rp(&rectImage);
+    rp.setRenderHint(QPainter::Antialiasing);
+    rp.setPen(Qt::black);
+    rp.setBrush(Qt::red);
+    if (pw%2)
+        rp.drawRoundedRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, rectImage.width()-(pw+1), rectImage.height()-(pw+1)), radius, radius);
+    else
+        rp.drawRoundedRect(QRectF(qreal(pw)/2, qreal(pw)/2, rectImage.width()-pw, rectImage.height()-pw), radius, radius);
+
+    QPixmap rectPixmap = QPixmap::fromImage(rectImage);
+
+    //setup surface
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    QBENCHMARK {
+        p.setWorldTransform(transform);
+        const int pw = 2;
+        int width = 80;
+        int height = 80;
+
+        int xOffset = (rectPixmap.width()-1)/2;
+        int yOffset = (rectPixmap.height()-1)/2;
+        Q_ASSERT(rectPixmap.width() == 2*xOffset + 1);
+        Q_ASSERT(rectPixmap.height() == 2*yOffset + 1);
+
+        QMargins margins(xOffset, yOffset, xOffset, yOffset);
+        QTileRules rules(Qt::StretchTile, Qt::StretchTile);
+        qDrawBorderPixmap(&p, QRect(-pw/2, -pw/2, width+pw, height+pw), margins, rectPixmap, rectPixmap.rect(), margins, rules);
+    }
+}
+
+void tst_QPainter::drawTransformedTransparentImage_data()
+{
+    QTest::addColumn<int>("imageType");
+
+    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawTransformedTransparentImage()
+{
+    QFETCH(int, imageType);
+
+    //setup image
+    QImage transImage(200, 200, (QImage::Format)imageType);
+    transImage.fill(0);
+
+    //setup surface
+    QImage surface(200, 200, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    QBENCHMARK {
+        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+        p.drawImage(0,0, transImage);
+    }
+}
+
+void tst_QPainter::drawTransformedSemiTransparentImage_data()
+{
+    QTest::addColumn<int>("imageType");
+
+    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawTransformedSemiTransparentImage()
+{
+    QFETCH(int, imageType);
+
+    //setup image
+    QImage transImage(200, 200, (QImage::Format)imageType);
+    transImage.fill(QColor(0,0,0, 128).rgba());
+
+    //setup surface
+    QImage surface(200, 200, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    QBENCHMARK {
+        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+        p.drawImage(0,0, transImage);
+    }
+}
+
+void tst_QPainter::drawTransformedFilledImage_data()
+{
+    QTest::addColumn<int>("imageType");
+
+    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawTransformedFilledImage()
+{
+    QFETCH(int, imageType);
+
+    //setup image
+    QImage filledImage(200, 200, (QImage::Format)imageType);
+    filledImage.fill(QColor(0,0,0).rgb());
+
+    //setup surface
+    QImage surface(200, 200, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    QBENCHMARK {
+        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+        p.drawImage(0,0, filledImage);
+    }
+}
 
 
 QTEST_MAIN(tst_QPainter)
--- a/tests/benchmarks/qscriptengine/qscriptengine.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qscriptengine/qscriptengine.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -5,3 +5,8 @@
 SOURCES += tst_qscriptengine.cpp
 
 QT += script
+
+symbian* {
+    TARGET.EPOCHEAPSIZE  = 0x20000 0x2000000 // Min 128kB, Max 32MB
+    TARGET.EPOCSTACKSIZE = 0x14000
+}
--- a/tests/benchmarks/qscriptengine/tst_qscriptengine.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qscriptengine/tst_qscriptengine.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -256,8 +256,13 @@
     QScriptEngine eng;
     eng.globalObject().setProperty("fun", eng.newFunction(native_function));
     QBENCHMARK{
+#if !defined(Q_OS_SYMBIAN)
         eng.evaluate("var w = 0; for (i = 0; i < 100000; ++i) {\n"
                      "  w += fun() + fun(); w -= fun(); fun(); w -= fun(); }");
+#else
+        eng.evaluate("var w = 0; for (i = 0; i < 25000; ++i) {\n"
+                     "  w += fun() + fun(); w -= fun(); fun(); w -= fun(); }");
+#endif
     }
 }
 
--- a/tests/benchmarks/qstring/main.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qstring/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -42,6 +42,12 @@
 #include <QFile>
 #include <qtest.h>
 
+#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_QString: public QObject
 {
     Q_OBJECT
--- a/tests/benchmarks/qstring/qstring.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qstring/qstring.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -5,8 +5,12 @@
 
 wince*:{
    DEFINES += SRCDIR=\\\"\\\"
+} else:symbian* {
+   addFiles.sources = utf-8.txt
+   addFiles.path = .
+   DEPLOYMENT += addFiles
+   TARGET.EPOCHEAPSIZE="0x100 0x1000000"
 } else {
    DEFINES += SRCDIR=\\\"$$PWD/\\\"
 }
 
-
--- a/tests/benchmarks/qtext/main.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qtext/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -44,11 +44,16 @@
 #include <QTextDocumentWriter>
 #include <QTextLayout>
 #include <QTextCursor>
+#include <private/qtextcontrol_p.h>
+#include <qmath.h>
 #include <QFile>
+#include <QPainter>
 #include <QBuffer>
 #include <qtest.h>
 
 #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
 
@@ -60,6 +65,7 @@
 public:
     tst_QText() {
         m_lorem = QString::fromLatin1("Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.");
+        m_shortLorem = QString::fromLatin1("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.");
     }
 
 private slots:
@@ -73,8 +79,26 @@
     void odfWriting_text();
     void odfWriting_images();
 
+    void constructControl();
+    void constructDocument();
+
+    void layout();
+    void paintLayoutToPixmap();
+    void paintLayoutToPixmap_painterFill();
+
+    void document();
+    void paintDocToPixmap();
+    void paintDocToPixmap_painterFill();
+
+    void control();
+    void paintControlToPixmap();
+    void paintControlToPixmap_painterFill();
+
 private:
+    QSize setupTextLayout(QTextLayout *layout);
+
     QString m_lorem;
+    QString m_shortLorem;
 };
 
 void tst_QText::loadHtml_data()
@@ -111,7 +135,11 @@
     QTest::newRow("lorem") << m_lorem;
     QTest::newRow("short") << QString::fromLatin1("Lorem ipsum dolor sit amet");
 
+#if !defined(Q_OS_SYMBIAN)
     QFile file(QString::fromLatin1(SRCDIR) + QLatin1String("/bidi.txt"));
+#else
+    QFile file( SRCDIR "bidi.txt" );
+#endif
     QVERIFY(file.open(QFile::ReadOnly));
     QByteArray data = file.readAll();
     QVERIFY(data.count() > 1000);
@@ -199,6 +227,189 @@
     delete doc;
 }
 
+QSize tst_QText::setupTextLayout(QTextLayout *layout)
+{
+    bool wrap = true;
+    int wrapWidth = 300;
+    layout->setCacheEnabled(true);
+
+    int height = 0;
+    qreal widthUsed = 0;
+    qreal lineWidth = 0;
+
+    //set manual width
+    if (wrap)
+        lineWidth = wrapWidth;
+
+    layout->beginLayout();
+
+    while (1) {
+        QTextLine line = layout->createLine();
+        if (!line.isValid())
+            break;
+
+        if (wrap)
+            line.setLineWidth(lineWidth);
+    }
+    layout->endLayout();
+
+    for (int i = 0; i < layout->lineCount(); ++i) {
+        QTextLine line = layout->lineAt(i);
+        widthUsed = qMax(widthUsed, line.naturalTextWidth());
+        line.setPosition(QPointF(0, height));
+        height += int(line.height());
+    }
+    return QSize(qCeil(widthUsed), height);
+}
+
+void tst_QText::constructControl()
+{
+    QTextControl *control = new QTextControl;
+    delete control;
+
+    QBENCHMARK {
+        QTextControl *control = new QTextControl;
+        delete control;
+    }
+}
+
+void tst_QText::constructDocument()
+{
+    QTextDocument *doc = new QTextDocument;
+    delete doc;
+
+    QBENCHMARK {
+        QTextDocument *doc = new QTextDocument;
+        delete doc;
+    }
+}
+
+void tst_QText::layout()
+{
+    QTextLayout layout(m_shortLorem);
+    setupTextLayout(&layout);
+
+    QBENCHMARK {
+        QTextLayout layout(m_shortLorem);
+        setupTextLayout(&layout);
+    }
+}
+
+void tst_QText::paintLayoutToPixmap()
+{
+    QTextLayout layout(m_shortLorem);
+    QSize size = setupTextLayout(&layout);
+
+    QBENCHMARK {
+        QPixmap img(size);
+        img.fill(Qt::transparent);
+        QPainter p(&img);
+        layout.draw(&p, QPointF(0, 0));
+    }
+}
+
+void tst_QText::paintLayoutToPixmap_painterFill()
+{
+    QTextLayout layout(m_shortLorem);
+    QSize size = setupTextLayout(&layout);
+
+    QBENCHMARK {
+        QPixmap img(size);
+        QPainter p(&img);
+        p.setCompositionMode(QPainter::CompositionMode_Source);
+        p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
+        p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+        layout.draw(&p, QPointF(0, 0));
+    }
+}
+
+void tst_QText::document()
+{
+    QTextDocument *doc = new QTextDocument;
+
+    QBENCHMARK {
+        QTextDocument *doc = new QTextDocument;
+        doc->setHtml(m_shortLorem);
+    }
+}
+
+void tst_QText::paintDocToPixmap()
+{
+    QTextDocument *doc = new QTextDocument;
+    doc->setHtml(m_shortLorem);
+    doc->setTextWidth(300);
+    QSize size = doc->size().toSize();
+
+    QBENCHMARK {
+        QPixmap img(size);
+        img.fill(Qt::transparent);
+        QPainter p(&img);
+        doc->drawContents(&p);
+    }
+}
+
+void tst_QText::paintDocToPixmap_painterFill()
+{
+    QTextDocument *doc = new QTextDocument;
+    doc->setHtml(m_shortLorem);
+    doc->setTextWidth(300);
+    QSize size = doc->size().toSize();
+
+    QBENCHMARK {
+        QPixmap img(size);
+        QPainter p(&img);
+        p.setCompositionMode(QPainter::CompositionMode_Source);
+        p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
+        p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+        doc->drawContents(&p);
+    }
+}
+
+void tst_QText::control()
+{
+    QTextControl *control = new QTextControl(m_shortLorem);
+
+    QBENCHMARK {
+        QTextControl *control = new QTextControl;
+        QTextDocument *doc = control->document();
+        doc->setHtml(m_shortLorem);
+    }
+}
+
+void tst_QText::paintControlToPixmap()
+{
+    QTextControl *control = new QTextControl;
+    QTextDocument *doc = control->document();
+    doc->setHtml(m_shortLorem);
+    doc->setTextWidth(300);
+    QSize size = doc->size().toSize();
+
+    QBENCHMARK {
+        QPixmap img(size);
+        img.fill(Qt::transparent);
+        QPainter p(&img);
+        control->drawContents(&p, QRectF(QPointF(0, 0), QSizeF(size)));
+    }
+}
+
+void tst_QText::paintControlToPixmap_painterFill()
+{
+    QTextControl *control = new QTextControl;
+    QTextDocument *doc = control->document();
+    doc->setHtml(m_shortLorem);
+    doc->setTextWidth(300);
+    QSize size = doc->size().toSize();
+
+    QBENCHMARK {
+        QPixmap img(size);
+        QPainter p(&img);
+        p.setCompositionMode(QPainter::CompositionMode_Source);
+        p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
+        p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+        control->drawContents(&p, QRectF(QPointF(0, 0), QSizeF(size)));
+    }
+}
+
 QTEST_MAIN(tst_QText)
 
 #include "main.moc"
--- a/tests/benchmarks/qtext/qtext.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/qtext/qtext.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -4,4 +4,11 @@
 
 SOURCES += main.cpp
 
-DEFINES += SRCDIR=\\\"$$PWD/\\\"
+symbian* {
+   TARGET.CAPABILITY = ALL -TCB
+   addFiles.sources = bidi.txt
+   addFiles.path = .
+   DEPLOYMENT += addFiles
+} else {
+   DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
\ No newline at end of file
--- a/tests/benchmarks/uimodels/GraphicsViewBenchmark/tests/itemrecyclinglist/listitemcontainer.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tests/benchmarks/uimodels/GraphicsViewBenchmark/tests/itemrecyclinglist/listitemcontainer.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -189,9 +189,8 @@
     if (!listItem)
         return;
 
-    QGraphicsEffect* oldEffect = listItem->graphicsEffect();
+    // Deletes the effect.
     listItem->setGraphicsEffect(0);
-    delete oldEffect;
 
     if (enabled) {
         ListItemCache* cache = new ListItemCache;
--- a/tools/assistant/lib/fulltextsearch/qclucene-config_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/fulltextsearch/qclucene-config_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -529,7 +529,7 @@
 /* Conditional Debugging */
 /* #undef _CL__CND_DEBUG */
 
-/* debuging option */
+/* debugging option */
 /* #undef _DEBUG */
 
 /* Number of bits in a file offset, on hosts where this is settable. */
--- a/tools/assistant/lib/qhelpcollectionhandler.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpcollectionhandler.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -252,7 +252,7 @@
         "Key TEXT PRIMARY KEY, "
         "Value BLOB )");
 
-    foreach (QString q, tables) {
+    foreach (const QString &q, tables) {
         if (!query->exec(q))
             return false;
     }
@@ -323,7 +323,7 @@
             idsToInsert.removeAll(m_query.value(1).toString());
     }
 
-    foreach (QString id, idsToInsert) {
+    foreach (const QString &id, idsToInsert) {
         m_query.prepare(QLatin1String("INSERT INTO FilterAttributeTable VALUES(NULL, ?)"));
         m_query.bindValue(0, id);
         m_query.exec();
@@ -346,7 +346,7 @@
     m_query.bindValue(0, nameId);
     m_query.exec();
 
-    foreach (QString att, attributes) {
+    foreach (const QString &att, attributes) {
         m_query.prepare(QLatin1String("INSERT INTO FilterTable VALUES(?, ?)"));
         m_query.bindValue(0, nameId);
         m_query.bindValue(1, attributeMap[att]);
@@ -400,7 +400,7 @@
         return false;
 
     addFilterAttributes(reader.filterAttributes());
-    foreach (QString filterName, reader.customFilters())
+    foreach (const QString &filterName, reader.customFilters())
         addCustomFilter(filterName, reader.filterAttributes(filterName));
 
     optimizeDatabase(fileName);
@@ -499,7 +499,7 @@
     while (m_query.next())
         atts.insert(m_query.value(0).toString());
 
-    foreach (QString s, attributes) {
+    foreach (const QString &s, attributes) {
         if (!atts.contains(s)) {
             m_query.prepare(QLatin1String("INSERT INTO FilterAttributeTable VALUES(NULL, ?)"));
             m_query.bindValue(0, s);
--- a/tools/assistant/lib/qhelpcontentwidget.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpcontentwidget.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -253,7 +253,7 @@
     const QStringList fileNames = m_helpEngine->orderedFileNameList;
     m_mutex.unlock();
 
-    foreach (QString dbFileName, fileNames) {
+    foreach (const QString &dbFileName, fileNames) {
         m_mutex.lock();
         if (m_abort) {
             m_abort = false;
--- a/tools/assistant/lib/qhelpdbreader.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpdbreader.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -515,7 +515,7 @@
 QString QHelpDBReader::mergeList(const QStringList &list) const
 {
     QString str;
-    foreach (QString s, list)
+    foreach (const QString &s, list)
         str.append(QLatin1Char('\'') + quote(s) + QLatin1String("\', "));
     if (str.endsWith(QLatin1String(", ")))
         str = str.left(str.length()-2);
@@ -567,14 +567,14 @@
 
     bool needUpdate = !m_viewAttributes.count();
 
-    foreach (QString s, attributes)
+    foreach (const QString &s, attributes)
         m_viewAttributes.remove(s);
 
     if (m_viewAttributes.count() || needUpdate) {
         m_viewAttributes.clear();
         m_indicesCache = indexIds;        
     }
-    foreach (QString s, attributes)
+    foreach (const QString &s, attributes)
         m_viewAttributes.insert(s);
     m_useAttributesCache = true;
     return true;
--- a/tools/assistant/lib/qhelpenginecore.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpenginecore.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -168,7 +168,7 @@
     it is removed by calling removeCustomFilter(). customFilters() returns
     all defined filters.
 
-    The help engine also offers the possiblity to set and read values
+    The help engine also offers the possibility to set and read values
     in a persistant way comparable to ini files or Windows registry
     entries. For more information see setValue() or value().
 
@@ -362,7 +362,7 @@
     if (d->setup()) {
         const QHelpCollectionHandler::DocInfoList docList =
             d->collectionHandler->registeredDocumentations();
-        foreach(const QHelpCollectionHandler::DocInfo info, docList) {
+        foreach(const QHelpCollectionHandler::DocInfo &info, docList) {
             if (info.namespaceName == namespaceName) {
                 if (QDir::isAbsolutePath(info.fileName))
                     return QDir::cleanPath(info.fileName);
@@ -386,7 +386,7 @@
     if (!d->setup())
         return list;
     const QHelpCollectionHandler::DocInfoList docList = d->collectionHandler->registeredDocumentations();
-    foreach(const QHelpCollectionHandler::DocInfo info, docList) {
+    foreach(const QHelpCollectionHandler::DocInfo &info, docList) {
         list.append(info.namespaceName);
     }
     return list;
@@ -531,7 +531,7 @@
     url.setAuthority(namespaceName);
 
     const QStringList files = reader->files(filterAttributes, extensionFilter);
-    foreach (const QString file, files) {
+    foreach (const QString &file, files) {
         url.setPath(QLatin1String("/") + file);
         res.append(url);
     }
--- a/tools/assistant/lib/qhelpgenerator.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpgenerator.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -203,7 +203,7 @@
     addProgress(1.0);
 
     emit statusChanged(tr("Insert custom filters..."));
-    foreach (QHelpDataCustomFilter f, helpData->customFilters()) {
+    foreach (const QHelpDataCustomFilter &f, helpData->customFilters()) {
         if (!registerCustomFilter(f.name, f.filterAttributes, true)) {
             cleanupDB();
             return false;
@@ -367,7 +367,7 @@
             "Name Text, "
             "Value BLOB )");
 
-    foreach (QString q, tables) {
+    foreach (const QString &q, tables) {
         if (!d->query->exec(q)) {
             d->error = tr("Cannot create tables!");
             return false;
@@ -629,7 +629,7 @@
             idsToInsert.removeAll(d->query->value(1).toString());
     }
 
-    foreach (QString id, idsToInsert) {
+    foreach (const QString &id, idsToInsert) {
         d->query->prepare(QLatin1String("INSERT INTO FilterAttributeTable VALUES(NULL, ?)"));
         d->query->bindValue(0, id);
         d->query->exec();
@@ -664,7 +664,7 @@
     d->query->bindValue(0, nameId);
     d->query->exec();
 
-    foreach (QString att, filterAttribs) {
+    foreach (const QString &att, filterAttribs) {
         d->query->prepare(QLatin1String("INSERT INTO FilterTable VALUES(?, ?)"));
         d->query->bindValue(0, nameId);
         d->query->bindValue(1, attributeMap[att]);
@@ -687,7 +687,7 @@
         indexId = d->query->value(0).toInt() + 1;
 
     QList<int> filterAtts;
-    foreach (QString filterAtt, filterAttributes) {
+    foreach (const QString &filterAtt, filterAttributes) {
         d->query->prepare(QLatin1String("SELECT Id FROM FilterAttributeTable WHERE Name=?"));
         d->query->bindValue(0, filterAtt);
         d->query->exec();
@@ -704,7 +704,7 @@
 
     int i = 0;
     d->query->exec(QLatin1String("BEGIN"));
-    foreach (QHelpDataIndexItem itm, keywords) {
+    foreach (const QHelpDataIndexItem &itm, keywords) {
         pos = itm.reference.indexOf(QLatin1Char('#'));
         fileName = itm.reference.left(pos);
         if (pos > -1)
@@ -773,7 +773,7 @@
     }
 
     // associate the filter attributes
-    foreach (QString filterAtt, filterAttributes) {
+    foreach (const QString &filterAtt, filterAttributes) {
         d->query->prepare(QLatin1String("INSERT INTO ContentsFilterTable (FilterAttributeId, ContentsId) "
             "SELECT Id, ? FROM FilterAttributeTable WHERE Name=?"));
         d->query->bindValue(0, contentId);
@@ -798,7 +798,7 @@
     while (d->query->next())
         atts.insert(d->query->value(0).toString());
 
-    foreach (QString s, attributes) {
+    foreach (const QString &s, attributes) {
         if (!atts.contains(s)) {
             d->query->prepare(QLatin1String("INSERT INTO FilterAttributeTable VALUES(NULL, ?)"));
             d->query->bindValue(0, s);
--- a/tools/assistant/lib/qhelpindexwidget.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpindexwidget.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -162,7 +162,7 @@
     QSet<QString> indicesSet;
     m_mutex.unlock();
 
-    foreach (QString dbFileName, m_helpEngine->fileNameReaderMap.keys()) {
+    foreach (const QString &dbFileName, m_helpEngine->fileNameReaderMap.keys()) {
         m_mutex.lock();
         if (m_abort) {
             m_mutex.unlock();
@@ -178,7 +178,7 @@
         QStringList lst = reader.indicesForFilter(atts);
         if (!lst.isEmpty()) {
             m_mutex.lock();
-            foreach (QString s, lst)
+            foreach (const QString &s, lst)
                 indicesSet.insert(s);
             if (m_abort) {
                 m_mutex.unlock();
@@ -317,7 +317,7 @@
     if (!wildcard.isEmpty()) {
         QRegExp regExp(wildcard, Qt::CaseInsensitive);
         regExp.setPatternSyntax(QRegExp::Wildcard);
-        foreach (QString index, d->indices) {
+        foreach (const QString &index, d->indices) {
             if (index.contains(regExp)) {
                 lst.append(index);
                 if (perfectMatch == -1 && index.startsWith(filter, Qt::CaseInsensitive)) {
@@ -332,7 +332,7 @@
             }
         }
     } else {
-        foreach (QString index, d->indices) {
+        foreach (const QString &index, d->indices) {
             if (index.contains(filter, Qt::CaseInsensitive)) {
                 lst.append(index);
                 if (perfectMatch == -1 && index.startsWith(filter, Qt::CaseInsensitive)) {
--- a/tools/assistant/lib/qhelpsearchengine.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpsearchengine.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -214,7 +214,7 @@
     search term
 
     The QHelpSearchQuery class contains the field name and the associated search
-    term. Depending on the field the search term might get split up into seperate
+    term. Depending on the field the search term might get split up into separate
     terms to be parsed differently by the search engine.
 
     \sa QHelpSearchQueryWidget
@@ -238,15 +238,15 @@
 
     \value DEFAULT  the default field provided by the search widget, several terms should be
                     split and stored in the word list except search terms enclosed in quotes.
-    \value FUZZY    a field only provided in use with clucene. Terms should be split in seperate
+    \value FUZZY    a field only provided in use with clucene. Terms should be split in separate
                     words and passed to the search engine.
-    \value WITHOUT  a field only provided in use with clucene. Terms should be split in seperate
+    \value WITHOUT  a field only provided in use with clucene. Terms should be split in separate
                     words and passed to the search engine.
-    \value PHRASE   a field only provided in use with clucene. Terms should not be split in seperate
+    \value PHRASE   a field only provided in use with clucene. Terms should not be split in separate
                     words.
-    \value ALL      a field only provided in use with clucene. Terms should be split in seperate
+    \value ALL      a field only provided in use with clucene. Terms should be split in separate
                     words and passed to the search engine
-    \value ATLEAST  a field only provided in use with clucene. Terms should be split in seperate
+    \value ATLEAST  a field only provided in use with clucene. Terms should be split in separate
                     words and passed to the search engine
 */
 
--- a/tools/assistant/lib/qhelpsearchindexreader_default.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpsearchindexreader_default.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -166,7 +166,7 @@
         const QString fileName = it.key();
         bool containsAll = true;
         QStringList split = fileName.split(QLatin1String("@"));
-        foreach (const QString attribute, attributes) {
+        foreach (const QString &attribute, attributes) {
             if (!split.contains(attribute, Qt::CaseInsensitive)) {
                 containsAll = false;
                 break;
@@ -180,9 +180,9 @@
 
 void Reader::setIndexFile(const QString &namespaceName, const QString &attributes)
 {
-    QString extention = namespaceName + QLatin1String("@") + attributes;
-    indexFile = indexPath + QLatin1String("/indexdb40.") + extention;
-    documentFile = indexPath + QLatin1String("/indexdoc40.") + extention;
+    QString extension = namespaceName + QLatin1String("@") + attributes;
+    indexFile = indexPath + QLatin1String("/indexdb40.") + extension;
+    documentFile = indexPath + QLatin1String("/indexdoc40.") + extension;
 }
 
 bool Reader::splitSearchTerm(const QString &searchTerm, QStringList *terms,
@@ -235,7 +235,7 @@
 
 void Reader::searchInIndex(const QStringList &terms)
 {
-    foreach (const QString term, terms) {
+    foreach (const QString &term, terms) {
         QVector<Document> documents;
 
         for(IndexTable::ConstIterator it = searchIndexTable.begin();
@@ -254,7 +254,7 @@
                 DocumentInfo info;
                 QString title, url;
                 QVector<DocumentInfo> documentsInfo;
-                foreach(const Document doc, documents) {
+                foreach(const Document &doc, documents) {
                     info.docNumber = doc.docNumber;
                     info.frequency = doc.frequency;
                     info.documentUrl = documentList.at(doc.docNumber).at(1);
@@ -519,7 +519,7 @@
     mutex.unlock();
 
     QString queryTerm;
-    foreach (const QHelpSearchQuery query, queryList) {
+    foreach (const QHelpSearchQuery &query, queryList) {
         if (query.fieldName == QHelpSearchQuery::DEFAULT) {
             queryTerm = query.wordList.at(0);
             break;
@@ -541,7 +541,7 @@
 
     // setup the reader
     m_reader.setIndexPath(indexPath);
-    foreach(const QString namespaceName, registeredDocs) {
+    foreach(const QString &namespaceName, registeredDocs) {
         mutex.lock();
         if (m_cancel) {
             mutex.unlock();
@@ -553,7 +553,7 @@
         const QList<QStringList> attributeSets =
             engine.filterAttributeSets(namespaceName);
 
-        foreach (QStringList attributes, attributeSets) {
+        foreach (const QStringList &attributes, attributeSets) {
             // read all index files
             m_reader.setIndexFile(namespaceName, attributes.join(QLatin1String("@")));
             if (!m_reader.readIndex()) {
@@ -577,7 +577,7 @@
         QVector<DocumentInfo> hits = m_reader.hits();
         if (!hits.isEmpty()) {
             if (termSeq.isEmpty()) {
-                foreach (const DocumentInfo docInfo, hits) {
+                foreach (const DocumentInfo &docInfo, hits) {
                     mutex.lock();
                     if (m_cancel) {
                         mutex.unlock();
@@ -588,7 +588,7 @@
                     hitList.append(qMakePair(docInfo.documentTitle, docInfo.documentUrl));
                 }
             } else {
-                foreach (const DocumentInfo docInfo, hits) {
+                foreach (const DocumentInfo &docInfo, hits) {
                     mutex.lock();
                     if (m_cancel) {
                         mutex.unlock();
--- a/tools/assistant/lib/qhelpsearchindexwriter_default.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpsearchindexwriter_default.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -104,7 +104,7 @@
         return status;
 
     QDataStream docStream(&docFile);
-    foreach(const QStringList list, documentList) {
+    foreach(const QStringList &list, documentList) {
         docStream << list.at(0);
         docStream << list.at(1);
     }
@@ -126,9 +126,9 @@
 
 void Writer::setIndexFile(const QString &namespaceName, const QString &attributes)
 {
-    QString extention = namespaceName + QLatin1String("@") + attributes;
-    indexFile = indexPath + QLatin1String("/indexdb40.") + extention;
-    documentFile = indexPath + QLatin1String("/indexdoc40.") + extention;
+    QString extension = namespaceName + QLatin1String("@") + attributes;
+    indexFile = indexPath + QLatin1String("/indexdb40.") + extension;
+    documentFile = indexPath + QLatin1String("/indexdoc40.") + extension;
 }
 
 void Writer::insertInIndex(const QString &string, int docNum)
@@ -226,7 +226,7 @@
 
     QStringList namespaces;
     Writer writer(indexPath);
-    foreach(const QString namespaceName, registeredDocs) {
+    foreach(const QString &namespaceName, registeredDocs) {
         mutex.lock();
         if (m_cancel) {
             mutex.unlock();
@@ -242,7 +242,7 @@
         const QList<QStringList> attributeSets =
             engine.filterAttributeSets(namespaceName);
 
-        foreach (QStringList attributes, attributeSets) {
+        foreach (const QStringList &attributes, attributeSets) {
             // cleanup maybe old or unfinished files
             writer.setIndexFile(namespaceName, attributes.join(QLatin1String("@")));
             writer.removeIndex();
@@ -266,7 +266,7 @@
 
             int docNum = 0;
             const QStringList documentsList(documentsSet.toList());
-            foreach(const QString url, documentsList) {
+            foreach(const QString &url, documentsList) {
                 if (m_cancel)
                     return;
 
@@ -347,7 +347,7 @@
         const QList<QStringList> attributeSets =
             engine.filterAttributeSets(namespaceName);
 
-        foreach (QStringList attributes, attributeSets) {
+        foreach (const QStringList &attributes, attributeSets) {
             writer.setIndexFile(namespaceName, attributes.join(QLatin1String("@")));
             writer.removeIndex();
         }
--- a/tools/assistant/lib/qhelpsearchquerywidget.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpsearchquerywidget.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -120,6 +120,22 @@
         // nothing todo
     }
 
+    void retranslate()
+    {
+        simpleSearchLabel->setText(QHelpSearchQueryWidget::tr("Search for:"));
+        prevQueryButton->setToolTip(QHelpSearchQueryWidget::tr("Previous search"));
+        nextQueryButton->setToolTip(QHelpSearchQueryWidget::tr("Next search"));
+        searchButton->setText(QHelpSearchQueryWidget::tr("Search"));
+#ifdef QT_CLUCENE_SUPPORT
+        advancedSearchLabel->setText(QHelpSearchQueryWidget::tr("Advanced search"));
+        similarLabel->setText(QHelpSearchQueryWidget::tr("words <B>similar</B> to:"));
+        withoutLabel->setText(QHelpSearchQueryWidget::tr("<B>without</B> the words:"));
+        exactLabel->setText(QHelpSearchQueryWidget::tr("with <B>exact phrase</B>:"));
+        allLabel->setText(QHelpSearchQueryWidget::tr("with <B>all</B> of the words:"));
+        atLeastLabel->setText(QHelpSearchQueryWidget::tr("with <B>at least one</B> of the words:"));
+#endif
+    }
+
     QString escapeString(const QString &text)
     {
         QString retValue = text;
@@ -132,15 +148,15 @@
             << QLatin1String("}") << QLatin1String("~");
 
         // make sure we won't end up with an empty string
-        foreach (const QString escapeChar, escapableCharsList) {
+        foreach (const QString &escapeChar, escapableCharsList) {
             if (retValue.contains(escapeChar))
                 retValue.replace(escapeChar, QLatin1String(""));
         }
         if (retValue.trimmed().isEmpty())
             return retValue;
 
-        retValue = text; // now realy escape the string...
-        foreach (const QString escapeChar, escapableCharsList) {
+        retValue = text; // now really escape the string...
+        foreach (const QString &escapeChar, escapableCharsList) {
             if (retValue.contains(escapeChar))
                 retValue.replace(escapeChar, escape + escapeChar);
         }
@@ -301,7 +317,7 @@
             QStringList lst = similarQuery->text().split(exp, QString::SkipEmptyParts);
             if (!lst.isEmpty()) {
                 QStringList fuzzy;
-                foreach (const QString term, lst)
+                foreach (const QString &term, lst)
                     fuzzy += buildTermList(escapeString(term));
                 queryList.append(QHelpSearchQuery(QHelpSearchQuery::FUZZY, fuzzy));
             }
@@ -309,7 +325,7 @@
             lst = withoutQuery->text().split(exp, QString::SkipEmptyParts);
             if (!lst.isEmpty()) {
                 QStringList without;
-                foreach (const QString term, lst)
+                foreach (const QString &term, lst)
                     without.append(escapeString(term));
                 queryList.append(QHelpSearchQuery(QHelpSearchQuery::WITHOUT, without));
             }
@@ -323,7 +339,7 @@
             lst = allQuery->text().split(exp, QString::SkipEmptyParts);
             if (!lst.isEmpty()) {
                 QStringList all;
-                foreach (const QString term, lst)
+                foreach (const QString &term, lst)
                     all.append(escapeString(term));
                 queryList.append(QHelpSearchQuery(QHelpSearchQuery::ALL, all));
             }
@@ -331,7 +347,7 @@
             lst = atLeastQuery->text().split(exp, QString::SkipEmptyParts);
             if (!lst.isEmpty()) {
                 QStringList atLeast;
-                foreach (const QString term, lst)
+                foreach (const QString &term, lst)
                     atLeast += buildTermList(escapeString(term));
                 queryList.append(QHelpSearchQuery(QHelpSearchQuery::ATLEAST, atLeast));
             }
@@ -360,6 +376,13 @@
     friend class QHelpSearchQueryWidget;
 
     bool simpleSearch;
+    QLabel *simpleSearchLabel;
+    QLabel *advancedSearchLabel;
+    QLabel *similarLabel;
+    QLabel *withoutLabel;
+    QLabel *exactLabel;
+    QLabel *allLabel;
+    QLabel *atLeastLabel;
     QPushButton *searchButton;
     QWidget* advancedSearchWidget;
     QToolButton *showHideAdvancedSearchButton;
@@ -408,19 +431,17 @@
     vLayout->setMargin(0);
 
     QHBoxLayout* hBoxLayout = new QHBoxLayout();
-    QLabel *label = new QLabel(tr("Search for:"), this);
+    d->simpleSearchLabel = new QLabel(this);
     d->defaultQuery = new QLineEdit(this);
     d->defaultQuery->setCompleter(&d->searchCompleter);
     d->prevQueryButton = new QToolButton(this);
     d->prevQueryButton->setArrowType(Qt::LeftArrow);
-    d->prevQueryButton->setToolTip(tr("Previous search"));
     d->prevQueryButton->setEnabled(false);
     d->nextQueryButton = new QToolButton(this);
     d->nextQueryButton->setArrowType(Qt::RightArrow);
-    d->nextQueryButton->setToolTip(tr("Next search"));
     d->nextQueryButton->setEnabled(false);
-    d->searchButton = new QPushButton(tr("Search"), this);
-    hBoxLayout->addWidget(label);
+    d->searchButton = new QPushButton(this);
+    hBoxLayout->addWidget(d->simpleSearchLabel);
     hBoxLayout->addWidget(d->defaultQuery);
     hBoxLayout->addWidget(d->prevQueryButton);
     hBoxLayout->addWidget(d->nextQueryButton);
@@ -439,15 +460,15 @@
     d->showHideAdvancedSearchButton->setText(QLatin1String("+"));
     d->showHideAdvancedSearchButton->setMinimumSize(25, 20);
 
-    label = new QLabel(tr("Advanced search"), this);
+    d->advancedSearchLabel = new QLabel(this);
     QSizePolicy sizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
-    sizePolicy.setHeightForWidth(label->sizePolicy().hasHeightForWidth());
-    label->setSizePolicy(sizePolicy);
+    sizePolicy.setHeightForWidth(d->advancedSearchLabel->sizePolicy().hasHeightForWidth());
+    d->advancedSearchLabel->setSizePolicy(sizePolicy);
 
     QFrame* hLine = new QFrame(this);
     hLine->setFrameStyle(QFrame::HLine);
     hBoxLayout->addWidget(d->showHideAdvancedSearchButton);
-    hBoxLayout->addWidget(label);
+    hBoxLayout->addWidget(d->advancedSearchLabel);
     hBoxLayout->addWidget(hLine);
 
     vLayout->addLayout(hBoxLayout);
@@ -457,32 +478,32 @@
     QGridLayout *gLayout = new QGridLayout(d->advancedSearchWidget);
     gLayout->setMargin(0);
 
-    label = new QLabel(tr("words <B>similar</B> to:"), this);
-    gLayout->addWidget(label, 0, 0);
+    d->similarLabel = new QLabel(this);
+    gLayout->addWidget(d->similarLabel, 0, 0);
     d->similarQuery = new QLineEdit(this);
     d->similarQuery->setCompleter(&d->searchCompleter);
     gLayout->addWidget(d->similarQuery, 0, 1);
 
-    label = new QLabel(tr("<B>without</B> the words:"), this);
-    gLayout->addWidget(label, 1, 0);
+    d->withoutLabel = new QLabel(this);
+    gLayout->addWidget(d->withoutLabel, 1, 0);
     d->withoutQuery = new QLineEdit(this);
     d->withoutQuery->setCompleter(&d->searchCompleter);
     gLayout->addWidget(d->withoutQuery, 1, 1);
 
-    label = new QLabel(tr("with <B>exact phrase</B>:"), this);
-    gLayout->addWidget(label, 2, 0);
+    d->exactLabel = new QLabel(this);
+    gLayout->addWidget(d->exactLabel, 2, 0);
     d->exactQuery = new QLineEdit(this);
     d->exactQuery->setCompleter(&d->searchCompleter);
     gLayout->addWidget(d->exactQuery, 2, 1);
 
-    label = new QLabel(tr("with <B>all</B> of the words:"), this);
-    gLayout->addWidget(label, 3, 0);
+    d->allLabel = new QLabel(this);
+    gLayout->addWidget(d->allLabel, 3, 0);
     d->allQuery = new QLineEdit(this);
     d->allQuery->setCompleter(&d->searchCompleter);
     gLayout->addWidget(d->allQuery, 3, 1);
 
-    label = new QLabel(tr("with <B>at least one</B> of the words:"), this);
-    gLayout->addWidget(label, 4, 0);
+    d->atLeastLabel = new QLabel(this);
+    gLayout->addWidget(d->atLeastLabel, 4, 0);
     d->atLeastQuery = new QLineEdit(this);
     d->atLeastQuery->setCompleter(&d->searchCompleter);
     gLayout->addWidget(d->atLeastQuery, 4, 1);
@@ -490,6 +511,8 @@
     vLayout->addWidget(d->advancedSearchWidget);
     d->advancedSearchWidget->hide();
 
+    d->retranslate();
+
     connect(d->exactQuery, SIGNAL(returnPressed()), this, SIGNAL(search()));
     connect(d->similarQuery, SIGNAL(returnPressed()), this, SIGNAL(search()));
     connect(d->withoutQuery, SIGNAL(returnPressed()), this, SIGNAL(search()));
@@ -510,7 +533,7 @@
 }
 
 /*!
-    Returns a list of querys to use in combination with the search engines
+    Returns a list of queries to use in combination with the search engines
     search(QList<QHelpSearchQuery> &query) function.
 */
 QList<QHelpSearchQuery> QHelpSearchQueryWidget::query() const
@@ -531,4 +554,14 @@
     }
 }
 
+/*! \reimp
+*/
+void QHelpSearchQueryWidget::changeEvent(QEvent *event)
+{
+    if (event->type() == QEvent::LanguageChange)
+        d->retranslate();
+    else
+        QWidget::changeEvent(event);
+}
+
 QT_END_NAMESPACE
--- a/tools/assistant/lib/qhelpsearchquerywidget.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpsearchquerywidget.h	Fri Mar 12 15:46:37 2010 +0200
@@ -74,7 +74,8 @@
     void search();
 
 private:
-    void focusInEvent(QFocusEvent *focusEvent);
+    virtual void focusInEvent(QFocusEvent *focusEvent);
+    virtual void changeEvent(QEvent *event);
 
 private:
     QHelpSearchQueryWidgetPrivate *d;
--- a/tools/assistant/lib/qhelpsearchresultwidget.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpsearchresultwidget.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -73,7 +73,7 @@
 
     void showResultPage(const QList<QHelpSearchEngine::SearchHit> hits)
     {
-        foreach (const QHelpSearchEngine::SearchHit hit, hits)
+        foreach (const QHelpSearchEngine::SearchHit &hit, hits)
             new QTreeWidgetItem(this, QStringList(hit.first) << hit.second);
     }
 
@@ -118,7 +118,7 @@
                     .arg(tr("The search results may not be complete since the "
                             "documentation is still being indexed!"));
 
-            foreach (const QHelpSearchEngine::SearchHit hit, hits) {
+            foreach (const QHelpSearchEngine::SearchHit &hit, hits) {
                 htmlFile += QString(QLatin1String("<div style=\"text-align:left; font-weight:bold\""
                 "><a href=\"%1\">%2</a><div style=\"color:green; font-weight:normal;"
                 " margin:5px\">%1</div></div><p></p>"))
@@ -408,6 +408,14 @@
     connect(engine, SIGNAL(searchingFinished(int)), d, SLOT(setResults(int)));
 }
 
+/*! \reimp
+*/
+void QHelpSearchResultWidget::changeEvent(QEvent *event)
+{
+    if (event->type() == QEvent::LanguageChange)
+        d->setResults(d->searchEngine->hitCount());
+}
+
 /*!
     Destroys the search result widget.
 */
--- a/tools/assistant/lib/qhelpsearchresultwidget.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/lib/qhelpsearchresultwidget.h	Fri Mar 12 15:46:37 2010 +0200
@@ -75,6 +75,7 @@
 
     QHelpSearchResultWidgetPrivate *d;
     QHelpSearchResultWidget(QHelpSearchEngine *engine);
+    virtual void changeEvent(QEvent *event);
 };
 
 QT_END_NAMESPACE
--- a/tools/assistant/tools/assistant/centralwidget.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/tools/assistant/centralwidget.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -358,7 +358,7 @@
 
 void CentralWidget::findNext()
 {
-    find(findWidget->editFind->text(), true, false);
+    find(findWidget->editFind->text(), true);
 }
 
 void CentralWidget::nextPage()
@@ -389,7 +389,7 @@
 
 void CentralWidget::findPrevious()
 {
-    find(findWidget->editFind->text(), false, true);
+    find(findWidget->editFind->text(), false);
 }
 
 void CentralWidget::closeTab()
@@ -697,7 +697,7 @@
 
 void CentralWidget::findCurrentText(const QString &text)
 {
-    find(text, false, false);
+    find(text, true);
 }
 
 void CentralWidget::connectSignals()
@@ -896,19 +896,35 @@
     QWidget::keyPressEvent(e);
 }
 
-void CentralWidget::find(const QString &ttf, bool forward, bool backward)
+void CentralWidget::find(const QString &ttf, bool forward)
 {
     QPalette p = findWidget->editFind->palette();
     p.setColor(QPalette::Active, QPalette::Base, Qt::white);
 
-    if (!ttf.isEmpty()) {
-        HelpViewer *viewer = currentHelpViewer();
+    bool found = false;
+
+#if defined(QT_NO_WEBKIT)
+    found = findInTextBrowser(ttf, forward);
+#else
+    found = findInWebPage(ttf, forward);
+#endif
 
+    if (!found && !ttf.isEmpty())
+        p.setColor(QPalette::Active, QPalette::Base, QColor(255, 102, 102));
+
+    if (!findWidget->isVisible())
+        findWidget->show();
+    findWidget->editFind->setPalette(p);
+}
+
+bool CentralWidget::findInWebPage(const QString &ttf, bool forward)
+{
+#if !defined(QT_NO_WEBKIT)
+    if (HelpViewer *viewer = currentHelpViewer()) {
         bool found = false;
-#if !defined(QT_NO_WEBKIT)
-        if (viewer) {
-            QWebPage::FindFlags options;
-            if (backward)
+        QWebPage::FindFlags options;
+        if (!ttf.isEmpty()) {
+            if (!forward)
                 options |= QWebPage::FindBackward;
 
             if (findWidget->checkCase->isChecked())
@@ -923,30 +939,27 @@
                 if (found)
                     findWidget->labelWrapped->show();
             }
-        } else if (tabWidget->currentWidget() == m_searchWidget) {
-            QTextBrowser *browser = qFindChild<QTextBrowser*>(m_searchWidget);
-            found = findInTextBrowser(browser, ttf, forward, backward);
         }
-#else
-        QTextBrowser *browser = qobject_cast<QTextBrowser*>(viewer);
-        if (tabWidget->currentWidget() == m_searchWidget)
-            browser = qFindChild<QTextBrowser*>(m_searchWidget);
-        found = findInTextBrowser(browser, ttf, forward, backward);
-#endif
-
-        if (!found)
-            p.setColor(QPalette::Active, QPalette::Base, QColor(255, 102, 102));
+        // force highlighting of all other matches, also when empty (clear)
+        options = QWebPage::HighlightAllOccurrences;
+        viewer->findText(QLatin1String(""), options);
+        viewer->findText(ttf, options);
+        return found;
     }
 
-    if (!findWidget->isVisible())
-        findWidget->show();
-    findWidget->editFind->setPalette(p);
+    // this needs to stay, case for active search results page
+    return findInTextBrowser(ttf, forward);
+#endif
+    return false;
 }
 
-bool CentralWidget::findInTextBrowser(QTextBrowser* browser, const QString &ttf,
-    bool forward, bool backward)
+bool CentralWidget::findInTextBrowser(const QString &ttf, bool forward)
 {
-    if (!browser)
+    QTextBrowser *browser = qobject_cast<QTextBrowser*>(currentHelpViewer());
+    if (tabWidget->currentWidget() == m_searchWidget)
+        browser = qFindChild<QTextBrowser*>(m_searchWidget);
+
+    if (!browser || ttf.isEmpty())
         return false;
 
     QTextDocument *doc = browser->document();
@@ -962,7 +975,7 @@
             QTextCursor::MoveAnchor);
     }
 
-    if (backward)
+    if (!forward)
         options |= QTextDocument::FindBackward;
 
     if (findWidget->checkCase->isChecked())
@@ -1074,20 +1087,29 @@
 CentralWidget::setSourceFromSearch(const QUrl &url)
 {
     setSource(url);
+#if defined(QT_NO_WEBKIT)
     highlightSearchTerms();
+#else
+    connect(currentHelpViewer(), SIGNAL(loadFinished(bool)), this,
+        SLOT(highlightSearchTerms()));
+#endif
 }
 
 void
 CentralWidget::setSourceFromSearchInNewTab(const QUrl &url)
 {
     setSourceInNewTab(url);
+#if defined(QT_NO_WEBKIT)
     highlightSearchTerms();
+#else
+    connect(currentHelpViewer(), SIGNAL(loadFinished(bool)), this,
+        SLOT(highlightSearchTerms()));
+#endif
 }
 
 void
 CentralWidget::highlightSearchTerms()
 {
-#if defined(QT_NO_WEBKIT)
     HelpViewer *viewer = currentHelpViewer();
     if (!viewer)
         return;
@@ -1096,7 +1118,7 @@
     QList<QHelpSearchQuery> queryList = searchEngine->query();
 
     QStringList terms;
-    foreach (QHelpSearchQuery query, queryList) {
+    foreach (const QHelpSearchQuery &query, queryList) {
         switch (query.fieldName) {
             default: break;
             case QHelpSearchQuery::ALL: {
@@ -1109,6 +1131,7 @@
         }
     }
 
+#if defined(QT_NO_WEBKIT)
     viewer->viewport()->setUpdatesEnabled(false);
 
     QTextCharFormat marker;
@@ -1140,6 +1163,14 @@
     viewer->setTextCursor(firstHit);
 
     viewer->viewport()->setUpdatesEnabled(true);
+#else
+    viewer->findText("", QWebPage::HighlightAllOccurrences);
+         // clears existing selections
+    foreach (const QString& term, terms)
+        viewer->findText(term, QWebPage::HighlightAllOccurrences);
+
+    disconnect(viewer, SIGNAL(loadFinished(bool)), this,
+        SLOT(highlightSearchTerms()));
 #endif
 }
 
--- a/tools/assistant/tools/assistant/centralwidget.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/tools/assistant/centralwidget.h	Fri Mar 12 15:46:37 2010 +0200
@@ -182,16 +182,16 @@
     void printPreview(QPrinter *printer);
     void setSourceFromSearch(const QUrl &url);
     void setSourceFromSearchInNewTab(const QUrl &url);
+    void highlightSearchTerms();
 
 private:
     void connectSignals();
     bool eventFilter(QObject *object, QEvent *e);
-    void find(const QString &ttf, bool forward, bool backward);
-    bool findInTextBrowser(QTextBrowser* browser, const QString &ttf,
-        bool forward, bool backward);
+    void find(const QString &ttf, bool forward);
+    bool findInWebPage(const QString &ttf, bool forward);
+    bool findInTextBrowser(const QString &ttf, bool forward);
     void initPrinter();
     QString quoteTabTitle(const QString &title) const;
-    void highlightSearchTerms();
     void setLastShownPages();
 
     void getBrowserFontFor(QWidget* viewer, QFont *font);
--- a/tools/assistant/tools/assistant/helpviewer.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/tools/assistant/helpviewer.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -141,12 +141,12 @@
     if (mimeType.endsWith(QLatin1String(".svg"))
         || mimeType.endsWith(QLatin1String(".svgz"))) {
             mimeType = QLatin1String("image/svg+xml");
-    }
-    else if (mimeType.endsWith(QLatin1String(".css"))) {
+    } else if (mimeType.endsWith(QLatin1String(".css"))) {
         mimeType = QLatin1String("text/css");
-    }
-    else if (mimeType.endsWith(QLatin1String(".js"))) {
+    } else if (mimeType.endsWith(QLatin1String(".js"))) {
         mimeType = QLatin1String("text/javascript");
+    } else if (mimeType.endsWith(QLatin1String(".txt"))) {
+        mimeType = QLatin1String("text/plain");
     } else {
         mimeType = QLatin1String("text/html");
     }
--- a/tools/assistant/translations/qt_help.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/translations/qt_help.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -41,6 +41,7 @@
 
 TR_DIR = $$PWD/../../../translations
 TRANSLATIONS = \
+    $$TR_DIR/qt_help_cs.ts \
     $$TR_DIR/qt_help_da.ts \
     $$TR_DIR/qt_help_de.ts \
     $$TR_DIR/qt_help_ja.ts \
--- a/tools/assistant/translations/translations.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/assistant/translations/translations.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -42,6 +42,7 @@
 
 TR_DIR = $$PWD/../../../translations
 TRANSLATIONS = \
+    $$TR_DIR/assistant_cs.ts \
     $$TR_DIR/assistant_da.ts \
     $$TR_DIR/assistant_de.ts \
     $$TR_DIR/assistant_fr.ts \
--- a/tools/configure/configureapp.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/configure/configureapp.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -482,6 +482,7 @@
             dictionary[ "BUILDNOKIA" ] = "yes";
             dictionary[ "BUILDDEV" ] = "yes";
             dictionary["LICENSE_CONFIRMED"] = "yes";
+            dictionary[ "SYMBIAN_DEFFILES" ] = "no";
         }
         else if( configCmdLine.at(i) == "-opensource" ) {
             dictionary[ "BUILDTYPE" ] = "opensource";
@@ -803,7 +804,7 @@
         else if( configCmdLine.at(i) == "-no-native-gestures" )
             dictionary[ "NATIVE_GESTURES" ] = "no";
 #if !defined(EVAL)
-        // Others ---------------------------------------------------
+        // Symbian Support -------------------------------------------
         else if (configCmdLine.at(i) == "-fpu" )
         {
             ++i;
@@ -812,12 +813,17 @@
             dictionary[ "ARM_FPU_TYPE" ] = configCmdLine.at(i);
         }
 
-        // S60 Support -------------------------------------------
         else if( configCmdLine.at(i) == "-s60" )
             dictionary[ "S60" ]    = "yes";
         else if( configCmdLine.at(i) == "-no-s60" )
             dictionary[ "S60" ]    = "no";
 
+        else if( configCmdLine.at(i) == "-usedeffiles" )
+            dictionary[ "SYMBIAN_DEFFILES" ] = "yes";
+        else if( configCmdLine.at(i) == "-no-usedeffiles" )
+            dictionary[ "SYMBIAN_DEFFILES" ] = "no";
+
+        // Others ---------------------------------------------------
         else if (configCmdLine.at(i) == "-fast" )
             dictionary[ "FAST" ] = "yes";
         else if (configCmdLine.at(i) == "-no-fast" )
@@ -1471,6 +1477,7 @@
         dictionary[ "XMLPATTERNS" ]         = "yes";
         dictionary[ "QT_GLIB" ]             = "no";
         dictionary[ "S60" ]                 = "yes";
+        dictionary[ "SYMBIAN_DEFFILES" ]    = "yes";
         // iconv makes makes apps start and run ridiculously slowly in symbian emulator (HW not tested)
         // iconv_open seems to return -1 always, so something is probably missing from the platform.
         dictionary[ "QT_ICONV" ]            = "no";
@@ -1825,7 +1832,9 @@
         desc("FREETYPE", "yes",    "-qt-freetype",         "Use the libfreetype bundled with Qt.");
         desc(                      "-fpu <flags>",         "VFP type on ARM, supported options: softvfp(default) | vfpv2 | softvfp+vfpv2");
         desc("S60", "no",          "-no-s60",              "Do not compile in S60 support.");
-        desc("S60", "yes",         "-s60",                 "Compile with support for the S60 UI Framework\n");
+        desc("S60", "yes",         "-s60",                 "Compile with support for the S60 UI Framework");
+        desc("SYMBIAN_DEFFILES", "no",  "-no-usedeffiles",  "Disable the usage of DEF files.");
+        desc("SYMBIAN_DEFFILES", "yes", "-usedeffiles",     "Enable the usage of DEF files.\n");
         return true;
     }
     return false;
@@ -2529,8 +2538,11 @@
             qtConfig += "phonon-backend";
     }
 
-    if (dictionary["MULTIMEDIA"] == "yes")
+    if (dictionary["MULTIMEDIA"] == "yes") {
         qtConfig += "multimedia";
+        if (dictionary["AUDIO_BACKEND"] == "yes")
+            qtConfig += "audio-backend";
+    }
 
     if (dictionary["WEBKIT"] == "yes")
         qtConfig += "webkit";
@@ -2747,6 +2759,13 @@
         if ( dictionary["PLUGIN_MANIFESTS"] == "no" )
             configStream << " no_plugin_manifest";
 
+        if ( dictionary.contains("SYMBIAN_DEFFILES") ) {
+            if(dictionary["SYMBIAN_DEFFILES"] == "yes" ) {
+                configStream << " def_files";
+            } else if ( dictionary["SYMBIAN_DEFFILES"] == "no" ) {
+                configStream << " def_files_disabled";
+            }
+        }
         configStream << endl;
         configStream << "QT_ARCH = " << dictionary[ "ARCHITECTURE" ] << endl;
         if (dictionary["QT_EDITION"].contains("OPENSOURCE"))
@@ -3271,6 +3290,14 @@
         cout << "Support for S60............." << dictionary[ "S60" ] << endl;
     }
 
+    if (dictionary.contains("SYMBIAN_DEFFILES")) {
+        cout << "Symbian DEF files enabled..." << dictionary[ "SYMBIAN_DEFFILES" ] << endl;
+        if(dictionary["SYMBIAN_DEFFILES"] == "no") {
+            cout << "WARNING: Disabling DEF files will mean that Qt is NOT binary compatible with previous versions." << endl;
+            cout << "         This feature is only intended for use during development, NEVER for release builds." << endl;
+        }
+    }
+
     if(dictionary["ASSISTANT_WEBKIT"] == "yes")
         cout << "Using WebKit as html rendering engine in Qt Assistant." << endl;
 
--- a/tools/designer/src/components/formeditor/formwindow.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/components/formeditor/formwindow.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -2219,6 +2219,11 @@
             QToolBoxHelper::addToolBoxContextMenuActions(toolBox, popup);
         }
 
+        if (manager->actionLower()->isEnabled()) {
+            popup->addAction(manager->actionLower());
+            popup->addAction(manager->actionRaise());
+            popup->addSeparator();
+        }
         popup->addAction(manager->actionCut());
         popup->addAction(manager->actionCopy());
     }
--- a/tools/designer/src/components/formeditor/formwindow.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/components/formeditor/formwindow.h	Fri Mar 12 15:46:37 2010 +0200
@@ -278,8 +278,6 @@
 
     void checkPreviewGeometry(QRect &r);
 
-    void finishContextMenu(QWidget *w, QWidget *menuParent, QContextMenuEvent *e);
-
     bool handleContextMenu(QWidget *widget, QWidget *managedWidget, QContextMenuEvent *e);
     bool handleMouseButtonDblClickEvent(QWidget *widget, QWidget *managedWidget, QMouseEvent *e);
     bool handleMousePressEvent(QWidget *widget, QWidget *managedWidget, QMouseEvent *e);
--- a/tools/designer/src/components/formeditor/qdesigner_resource.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/components/formeditor/qdesigner_resource.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -1446,7 +1446,7 @@
         return;
 
     QList<QWidget*> tabOrder;
-    foreach (QString widgetName, tabStops->elementTabStop()) {
+    foreach (const QString &widgetName, tabStops->elementTabStop()) {
         if (QWidget *w = qFindChild<QWidget*>(widget, widgetName)) {
             tabOrder.append(w);
         }
@@ -2418,7 +2418,7 @@
     QList<DomResource*> dom_include;
     if (resourceSet) {
         const QStringList activePaths = resourceSet->activeQrcPaths();
-        foreach (QString path, activePaths) {
+        foreach (const QString &path, activePaths) {
             if (qrcPaths.contains(path)) {
                 DomResource *dom_res = new DomResource;
                 QString conv_path = path;
--- a/tools/designer/src/components/propertyeditor/designerpropertymanager.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/components/propertyeditor/designerpropertymanager.h	Fri Mar 12 15:46:37 2010 +0200
@@ -102,7 +102,7 @@
 {
     Q_OBJECT
 public:
-    DesignerPropertyManager(QDesignerFormEditorInterface *core, QObject *parent = 0);
+    explicit DesignerPropertyManager(QDesignerFormEditorInterface *core, QObject *parent = 0);
     ~DesignerPropertyManager();
 
     virtual QStringList attributes(int propertyType) const;
--- a/tools/designer/src/designer/qdesigner_actions.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/designer/qdesigner_actions.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -580,7 +580,7 @@
         return false;
 
     bool atLeastOne = false;
-    foreach (QString fileName, fileNames) {
+    foreach (const QString &fileName, fileNames) {
         if (readInForm(fileName) && !atLeastOne)
             atLeastOne = true;
     }
@@ -869,7 +869,7 @@
             if (f.fileName() != fileName) {
                 removeBackup(backupFile);
                 fi.setFile(fileName);
-                backupFile = QString();
+                backupFile.clear();
                 if (fi.exists())
                     backupFile = createBackup(fileName);
             }
--- a/tools/designer/src/designer/qdesigner_server.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/designer/qdesigner_server.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -83,7 +83,7 @@
     sSocket->connectToHost(QHostAddress::LocalHost, port);
     if(sSocket->waitForConnected(3000))
     {
-        foreach(QString file, files)
+        foreach(const QString &file, files)
         {
             QFileInfo fi(file);
             sSocket->write(fi.absoluteFilePath().toUtf8() + '\n');
@@ -96,9 +96,8 @@
 
 void QDesignerServer::readFromClient()
 {
-    QString file = QString();
     while (m_socket->canReadLine()) {
-        file = QString::fromUtf8(m_socket->readLine());
+        QString file = QString::fromUtf8(m_socket->readLine());
         if (!file.isNull()) {
             file.remove(QLatin1Char('\n'));
             file.remove(QLatin1Char('\r'));
@@ -143,7 +142,6 @@
 
 void QDesignerClient::readFromSocket()
 {
-    QString file = QString();
     while (m_socket->canReadLine()) {
         QString file = QString::fromUtf8(m_socket->readLine());
         if (!file.isNull()) {
--- a/tools/designer/src/designer/qdesigner_server.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/designer/qdesigner_server.h	Fri Mar 12 15:46:37 2010 +0200
@@ -53,7 +53,7 @@
 {
     Q_OBJECT
 public:
-    QDesignerServer(QObject *parent = 0);
+    explicit QDesignerServer(QObject *parent = 0);
     virtual ~QDesignerServer();
 
     quint16 serverPort() const;
@@ -74,7 +74,7 @@
 {
     Q_OBJECT
 public:
-    QDesignerClient(quint16 port, QObject *parent = 0);
+    explicit QDesignerClient(quint16 port, QObject *parent = 0);
     virtual ~QDesignerClient();
 
 private slots:
--- a/tools/designer/src/designer/versiondialog.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/designer/versiondialog.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -113,15 +113,14 @@
         if (!secondStage) {
             m_path.lineTo(me->pos());
             bool gotIt = true;
-            QPoint pt;
-            foreach(pt, hitPoints) {
+            foreach(const QPoint &pt, hitPoints) {
                 if (!m_path.contains(pt)) {
                     gotIt = false;
                     break;
                 }
             }
             if (gotIt) {
-                foreach(pt, missPoints) {
+                foreach(const QPoint &pt, missPoints) {
                     if (m_path.contains(pt)) {
                         gotIt = false;
                         break;
--- a/tools/designer/src/lib/shared/actioneditor.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/actioneditor.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -428,7 +428,7 @@
         m_actionView->model()->remove(row);
 }
 
-// Set an intial property and mark it as changed in the sheet
+// Set an initial property and mark it as changed in the sheet
 static void setInitialProperty(QDesignerPropertySheetExtension *sheet, const QString &name, const QVariant &value)
 {
     const int index = sheet->indexOf(name);
--- a/tools/designer/src/lib/shared/actionrepository.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/actionrepository.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -244,7 +244,7 @@
     ActionRepositoryMimeData::ActionList actionList;
 
     QSet<QAction*> actions;
-    foreach (const  QModelIndex &index, indexes)
+    foreach (const QModelIndex &index, indexes)
         if (QStandardItem *item = itemFromIndex(index))
             if (QAction *action = actionOfItem(item))
                 actions.insert(action);
--- a/tools/designer/src/lib/shared/connectionedit_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/connectionedit_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -87,7 +87,7 @@
     class EndPoint {
     public:
         enum Type { Source, Target };
-        EndPoint(Connection *_con = 0, Type _type = Source) : con(_con), type(_type) {}
+        explicit EndPoint(Connection *_con = 0, Type _type = Source) : con(_con), type(_type) {}
         bool isNull() const { return con == 0; }
         bool operator == (const EndPoint &other) const { return con == other.con && type == other.type; }
         bool operator != (const EndPoint &other) const { return !operator == (other); }
--- a/tools/designer/src/lib/shared/filterwidget_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/filterwidget_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -66,7 +66,7 @@
 namespace qdesigner_internal {
 
 /* A line edit that displays a grayed hintText (like "Type Here to Filter")
- * when not focussed and empty. When connecting to the changed signals and
+ * when not focused and empty. When connecting to the changed signals and
  * querying text, one has to be aware that the text is set to that hint
  * text if isShowingHintText() returns true (that is, does not contain
  * valid user input). This widget should never have initial focus
--- a/tools/designer/src/lib/shared/iconloader.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/iconloader.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -60,7 +60,7 @@
 #endif
         << (QString::fromUtf8(":/trolltech/formeditor/images/designer_") + name);
 
-    foreach (QString f, candidates) {
+    foreach (const QString &f, candidates) {
         if (QFile::exists(f))
             return QIcon(f);
     }
--- a/tools/designer/src/lib/shared/iconselector_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/iconselector_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -76,7 +76,7 @@
 {
     Q_OBJECT
 
-    LanguageResourceDialog(QDesignerResourceBrowserInterface *rb, QWidget *parent = 0);
+    explicit LanguageResourceDialog(QDesignerResourceBrowserInterface *rb, QWidget *parent = 0);
 
 public:
     virtual ~LanguageResourceDialog();
--- a/tools/designer/src/lib/shared/plugindialog.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/plugindialog.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -105,7 +105,7 @@
         QTreeWidgetItem *topLevelItem = setTopLevelItem(QLatin1String("Loaded Plugins"));
         QFont boldFont = topLevelItem->font(0);
 
-        foreach (QString fileName, fileNames) {
+        foreach (const QString &fileName, fileNames) {
             QPluginLoader loader(fileName);
             const QFileInfo fileInfo(fileName);
 
@@ -127,7 +127,7 @@
     if (!notLoadedPlugins.isEmpty()) {
         QTreeWidgetItem *topLevelItem = setTopLevelItem(QLatin1String("Failed Plugins"));
         const QFont boldFont = topLevelItem->font(0);
-        foreach (const QString plugin, notLoadedPlugins) {
+        foreach (const QString &plugin, notLoadedPlugins) {
             const QString failureReason = pluginManager->failureReason(plugin);
             QTreeWidgetItem *pluginItem = setPluginItem(topLevelItem, plugin, boldFont);
             setItem(pluginItem, failureReason, failureReason, QString(), QIcon());
--- a/tools/designer/src/lib/shared/qdesigner_introspection.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_introspection.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -63,7 +63,7 @@
 static inline QString charToQString(const char *c)
 {
     if (!c)
-        return QString::null;
+        return QString();
     return QString::fromUtf8(c);
 }
 
--- a/tools/designer/src/lib/shared/qdesigner_objectinspector_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_objectinspector_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -85,7 +85,7 @@
 {
     Q_OBJECT
 public:
-    QDesignerObjectInspector(QWidget *parent = 0, Qt::WindowFlags flags = 0);
+    explicit QDesignerObjectInspector(QWidget *parent = 0, Qt::WindowFlags flags = 0);
 
     // Select a qobject unmanaged by form window
     virtual bool selectObject(QObject *o) = 0;
--- a/tools/designer/src/lib/shared/qdesigner_promotiondialog_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_promotiondialog_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -80,9 +80,9 @@
     class NewPromotedClassPanel : public QGroupBox {
         Q_OBJECT
     public:
-        NewPromotedClassPanel(const QStringList &baseClasses,
-                              int selectedBaseClass = -1,
-                               QWidget *parent = 0);
+        explicit NewPromotedClassPanel(const QStringList &baseClasses,
+                                       int selectedBaseClass = -1,
+                                       QWidget *parent = 0);
 
         signals:
         void newPromotedClass(const PromotionParameters &, bool *ok);
@@ -114,10 +114,10 @@
     public:
         enum Mode { ModeEdit, ModeEditChooseClass };
 
-        QDesignerPromotionDialog(QDesignerFormEditorInterface *core,
-                                 QWidget *parent = 0,
-                                 const QString &promotableWidgetClassName = QString(),
-                                 QString *promoteTo = 0);
+        explicit QDesignerPromotionDialog(QDesignerFormEditorInterface *core,
+                                          QWidget *parent = 0,
+                                          const QString &promotableWidgetClassName = QString(),
+                                          QString *promoteTo = 0);
         // Return an alphabetically ordered list of base class names for adding new classes.
         static const QStringList &baseClassNames(const QDesignerPromotionInterface *promotion);
 
--- a/tools/designer/src/lib/shared/qdesigner_propertyeditor_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_propertyeditor_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -69,7 +69,7 @@
 {
     Q_OBJECT
 public:
-    QDesignerPropertyEditor(QWidget *parent = 0, Qt::WindowFlags flags = 0);
+    explicit QDesignerPropertyEditor(QWidget *parent = 0, Qt::WindowFlags flags = 0);
 
     // A pair <ValidationMode, bool isTranslatable>.
     typedef QPair<TextPropertyValidationMode, bool> StringPropertyParameters;
--- a/tools/designer/src/lib/shared/qdesigner_taskmenu.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_taskmenu.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -675,7 +675,7 @@
         const QString signalSignature = selectedItem->text(0);
         const QStringList parameterNames = qVariantValue<QStringList>(selectedItem->data(0, Qt::UserRole));
 
-        // TODO: Check wether signal is connected to slot
+        // TODO: Check whether signal is connected to slot
         integr->emitNavigateToSlot(objectName, signalSignature, parameterNames);
     }
 }
--- a/tools/designer/src/lib/shared/qdesigner_toolbar.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_toolbar.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -440,7 +440,7 @@
     return tb->actions().at(index);
 }
 
-//that's a trick to get acces to the initStyleOption which is a protected member
+//that's a trick to get access to the initStyleOption which is a protected member
 class FriendlyToolBar : public QToolBar {
 public:
     friend class ToolBarEventFilter;
--- a/tools/designer/src/lib/shared/qdesigner_utils_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_utils_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -298,7 +298,7 @@
 {
     Q_OBJECT
 public:
-    DesignerIconCache(DesignerPixmapCache *pixmapCache, QObject *parent = 0);
+    explicit DesignerIconCache(DesignerPixmapCache *pixmapCache, QObject *parent = 0);
     QIcon icon(const PropertySheetIconValue &value) const;
     void clear();
 signals:
@@ -313,7 +313,7 @@
 class QDESIGNER_SHARED_EXPORT PropertySheetStringValue
 {
 public:
-    PropertySheetStringValue(const QString &value = QString(),
+    explicit PropertySheetStringValue(const QString &value = QString(),
                              bool translatable = true,
                              const QString &disambiguation = QString(),
                              const QString &comment = QString());
@@ -345,11 +345,11 @@
 class QDESIGNER_SHARED_EXPORT PropertySheetKeySequenceValue
 {
 public:
-    PropertySheetKeySequenceValue(const QKeySequence &value = QKeySequence(),
+    explicit PropertySheetKeySequenceValue(const QKeySequence &value = QKeySequence(),
                                   bool translatable = true,
                                   const QString &disambiguation = QString(),
                                   const QString &comment = QString());
-    PropertySheetKeySequenceValue(const QKeySequence::StandardKey &standardKey,
+    explicit PropertySheetKeySequenceValue(const QKeySequence::StandardKey &standardKey,
                                   bool translatable = true,
                                   const QString &disambiguation = QString(),
                                   const QString &comment = QString());
--- a/tools/designer/src/lib/shared/qdesigner_widgetbox_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qdesigner_widgetbox_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -70,7 +70,7 @@
 public:
     enum LoadMode { LoadMerge, LoadReplace, LoadCustomWidgetsOnly };
 
-    QDesignerWidgetBox(QWidget *parent = 0, Qt::WindowFlags flags = 0);
+    explicit QDesignerWidgetBox(QWidget *parent = 0, Qt::WindowFlags flags = 0);
 
     LoadMode loadMode() const;
     void setLoadMode(LoadMode lm);
--- a/tools/designer/src/lib/shared/qtresourceview_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/qtresourceview_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -68,7 +68,7 @@
 {
     Q_OBJECT
 public:
-    QtResourceView(QDesignerFormEditorInterface *core, QWidget *parent = 0);
+    explicit QtResourceView(QDesignerFormEditorInterface *core, QWidget *parent = 0);
     ~QtResourceView();
 
     void setDragEnabled(bool dragEnabled);
@@ -120,7 +120,7 @@
 {
     Q_OBJECT
 public:
-    QtResourceViewDialog(QDesignerFormEditorInterface *core, QWidget *parent = 0);
+    explicit QtResourceViewDialog(QDesignerFormEditorInterface *core, QWidget *parent = 0);
     virtual ~QtResourceViewDialog();
 
     QString selectedResource() const;
--- a/tools/designer/src/lib/shared/richtexteditor_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/richtexteditor_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -72,7 +72,7 @@
 {
     Q_OBJECT
 public:
-    RichTextEditorDialog(QDesignerFormEditorInterface *core, QWidget *parent = 0);
+    explicit RichTextEditorDialog(QDesignerFormEditorInterface *core, QWidget *parent = 0);
     ~RichTextEditorDialog();
 
     int showDialog();
--- a/tools/designer/src/lib/shared/shared_settings.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/shared_settings.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -161,7 +161,7 @@
 {
     // get template paths excluding internal ones
     QStringList rc = formTemplatePaths();
-    foreach (QString internalTemplatePath, defaultFormTemplatePaths()) {
+    foreach (const QString &internalTemplatePath, defaultFormTemplatePaths()) {
         const int index = rc.indexOf(internalTemplatePath);
         if (index != -1)
             rc.removeAt(index);
--- a/tools/designer/src/lib/shared/textpropertyeditor_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/textpropertyeditor_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -90,7 +90,7 @@
             UpdateOnFinished
         };
 
-        TextPropertyEditor(QWidget *parent = 0, EmbeddingMode embeddingMode = EmbeddingNone, TextPropertyValidationMode validationMode = ValidationMultiLine);
+        explicit TextPropertyEditor(QWidget *parent = 0, EmbeddingMode embeddingMode = EmbeddingNone, TextPropertyValidationMode validationMode = ValidationMultiLine);
 
         TextPropertyValidationMode textPropertyValidationMode() const { return m_validationMode; }
         void setTextPropertyValidationMode(TextPropertyValidationMode vm);
--- a/tools/designer/src/lib/shared/widgetdatabase_p.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/widgetdatabase_p.h	Fri Mar 12 15:46:37 2010 +0200
@@ -74,8 +74,8 @@
 class QDESIGNER_SHARED_EXPORT WidgetDataBaseItem: public QDesignerWidgetDataBaseItemInterface
 {
 public:
-    WidgetDataBaseItem(const QString &name = QString(),
-                       const QString &group = QString());
+    explicit WidgetDataBaseItem(const QString &name = QString(),
+                                const QString &group = QString());
 
     QString name() const;
     void setName(const QString &name);
@@ -159,7 +159,7 @@
 {
     Q_OBJECT
 public:
-    WidgetDataBase(QDesignerFormEditorInterface *core, QObject *parent = 0);
+    explicit WidgetDataBase(QDesignerFormEditorInterface *core, QObject *parent = 0);
     virtual ~WidgetDataBase();
 
     virtual QDesignerFormEditorInterface *core() const;
--- a/tools/designer/src/lib/shared/widgetfactory.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/shared/widgetfactory.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -774,6 +774,8 @@
 
 void WidgetFactory::applyStyleToTopLevel(QStyle *style, QWidget *widget)
 {
+    if (!style)
+        return;
     const QPalette standardPalette = style->standardPalette();
     if (widget->style() == style && widget->palette() == standardPalette)
         return;
--- a/tools/designer/src/lib/uilib/abstractformbuilder.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/uilib/abstractformbuilder.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -364,7 +364,7 @@
     const QStringList zOrderNames = ui_widget->elementZOrder();
     if (!zOrderNames.isEmpty()) {
         QList<QWidget *> zOrder = qVariantValue<QWidgetList>(w->property("_q_zOrder"));
-        foreach (QString widgetName, zOrderNames) {
+        foreach (const QString &widgetName, zOrderNames) {
             if (QWidget *child = qFindChild<QWidget*>(w, widgetName)) {
                 if (child->parentWidget() == w) {
                     zOrder.removeAll(child);
--- a/tools/designer/src/lib/uilib/formbuilder.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/lib/uilib/formbuilder.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -494,7 +494,7 @@
 {
     m_customWidgets.clear();
 
-    foreach (QString path, m_pluginPaths) {
+    foreach (const QString &path, m_pluginPaths) {
         const QDir dir(path);
         const QStringList candidates = dir.entryList(QDir::Files);
 
--- a/tools/designer/src/plugins/activeqt/qaxwidgetextrainfo.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/activeqt/qaxwidgetextrainfo.h	Fri Mar 12 15:46:37 2010 +0200
@@ -77,7 +77,7 @@
 {
     Q_OBJECT
 public:
-    QAxWidgetExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
+    explicit QAxWidgetExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
 
 protected:
     virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
--- a/tools/designer/src/plugins/activeqt/qdesigneraxwidget.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/activeqt/qdesigneraxwidget.h	Fri Mar 12 15:46:37 2010 +0200
@@ -105,7 +105,7 @@
 
 class QDesignerAxPluginWidget : public QDesignerAxWidget
 {
-   // No Q_OBJECT here! - meta functionality is overriden
+   // No Q_OBJECT here! - meta functionality is overridden
 public:
     explicit QDesignerAxPluginWidget(QWidget *parent);
     virtual ~QDesignerAxPluginWidget();
--- a/tools/designer/src/plugins/widgets/q3iconview/q3iconview_extrainfo.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3iconview/q3iconview_extrainfo.h	Fri Mar 12 15:46:37 2010 +0200
@@ -81,7 +81,7 @@
 {
     Q_OBJECT
 public:
-    Q3IconViewExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
+    explicit Q3IconViewExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
 
 protected:
     virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
--- a/tools/designer/src/plugins/widgets/q3iconview/q3iconview_plugin.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3iconview/q3iconview_plugin.h	Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3IconViewPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3IconViewPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3listbox/q3listbox_extrainfo.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3listbox/q3listbox_extrainfo.h	Fri Mar 12 15:46:37 2010 +0200
@@ -79,7 +79,7 @@
 {
     Q_OBJECT
 public:
-    Q3ListBoxExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
+    explicit Q3ListBoxExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
 
 protected:
     virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
--- a/tools/designer/src/plugins/widgets/q3listbox/q3listbox_plugin.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3listbox/q3listbox_plugin.h	Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3ListBoxPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3ListBoxPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3listview/q3listview_extrainfo.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3listview/q3listview_extrainfo.h	Fri Mar 12 15:46:37 2010 +0200
@@ -82,7 +82,7 @@
 {
     Q_OBJECT
 public:
-    Q3ListViewExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
+    explicit Q3ListViewExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
 
 protected:
     virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
--- a/tools/designer/src/plugins/widgets/q3listview/q3listview_plugin.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3listview/q3listview_plugin.h	Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3ListViewPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3ListViewPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3mainwindow/q3mainwindow_plugin.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3mainwindow/q3mainwindow_plugin.h	Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3MainWindowPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3MainWindowPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3table/q3table_extrainfo.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3table/q3table_extrainfo.h	Fri Mar 12 15:46:37 2010 +0200
@@ -79,7 +79,7 @@
 {
     Q_OBJECT
 public:
-    Q3TableExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
+    explicit Q3TableExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
 
 protected:
     virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
--- a/tools/designer/src/plugins/widgets/q3table/q3table_plugin.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3table/q3table_plugin.h	Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3TablePlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3TablePlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3textedit/q3textedit_extrainfo.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3textedit/q3textedit_extrainfo.h	Fri Mar 12 15:46:37 2010 +0200
@@ -79,7 +79,7 @@
 {
     Q_OBJECT
 public:
-    Q3TextEditExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
+    explicit Q3TextEditExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
 
 protected:
     virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
--- a/tools/designer/src/plugins/widgets/q3textedit/q3textedit_plugin.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3textedit/q3textedit_plugin.h	Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3TextEditPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3TextEditPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_extrainfo.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_extrainfo.h	Fri Mar 12 15:46:37 2010 +0200
@@ -78,7 +78,7 @@
 {
     Q_OBJECT
 public:
-    Q3ToolBarExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
+    explicit Q3ToolBarExtraInfoFactory(QDesignerFormEditorInterface *core, QExtensionManager *parent = 0);
 
 protected:
     virtual QObject *createExtension(QObject *object, const QString &iid, QObject *parent) const;
--- a/tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_plugin.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_plugin.h	Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3ToolBarPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3ToolBarPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3widgets/q3widget_plugins.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3widgets/q3widget_plugins.h	Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3ButtonGroupPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3ButtonGroupPlugin(const QIcon &icon, QObject *parent = 0);
     virtual ~Q3ButtonGroupPlugin();
 
     virtual QString name() const;
@@ -80,7 +80,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3ComboBoxPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3ComboBoxPlugin(const QIcon &icon, QObject *parent = 0);
     virtual ~Q3ComboBoxPlugin();
 
     virtual QString name() const;
@@ -109,7 +109,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3DateEditPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3DateEditPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
@@ -133,7 +133,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3DateTimeEditPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3DateTimeEditPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
@@ -157,7 +157,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3FramePlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3FramePlugin(const QIcon &icon, QObject *parent = 0);
     virtual ~Q3FramePlugin();
 
     virtual QString name() const;
@@ -186,7 +186,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3GroupBoxPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3GroupBoxPlugin(const QIcon &icon, QObject *parent = 0);
     virtual ~Q3GroupBoxPlugin();
 
     virtual QString name() const;
@@ -215,7 +215,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3ProgressBarPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3ProgressBarPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
@@ -239,7 +239,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3TextBrowserPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3TextBrowserPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
@@ -263,7 +263,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3TimeEditPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3TimeEditPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3widgetstack/q3widgetstack_plugin.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3widgetstack/q3widgetstack_plugin.h	Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3WidgetStackPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3WidgetStackPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
--- a/tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.h	Fri Mar 12 15:46:37 2010 +0200
@@ -59,7 +59,7 @@
 {
     Q_OBJECT
 public:
-    Q3WizardHelper(Q3Wizard *wizard);
+    explicit Q3WizardHelper(Q3Wizard *wizard);
 private slots:
     void slotCurrentChanged();
 private:
@@ -71,7 +71,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerExtraInfoExtension)
 public:
-    Q3WizardExtraInfo(Q3Wizard *wizard, QDesignerFormEditorInterface *core, QObject *parent);
+    explicit Q3WizardExtraInfo(Q3Wizard *wizard, QDesignerFormEditorInterface *core, QObject *parent);
 
     virtual QWidget *widget() const;
     virtual Q3Wizard *wizard() const;
--- a/tools/designer/src/plugins/widgets/q3wizard/q3wizard_plugin.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/plugins/widgets/q3wizard/q3wizard_plugin.h	Fri Mar 12 15:46:37 2010 +0200
@@ -51,7 +51,7 @@
     Q_OBJECT
     Q_INTERFACES(QDesignerCustomWidgetInterface)
 public:
-    Q3WizardPlugin(const QIcon &icon, QObject *parent = 0);
+    explicit Q3WizardPlugin(const QIcon &icon, QObject *parent = 0);
 
     virtual QString name() const;
     virtual QString group() const;
--- a/tools/designer/src/src.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/src/src.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -9,6 +9,4 @@
 
 CONFIG(shared,shared|static):SUBDIRS += plugins
 
-wince*: SUBDIRS -= designer plugins
-symbian: SUBDIRS = uitools
-contains(DEFINES, QT_NO_CURSOR): SUBDIRS -= lib components
\ No newline at end of file
+symbian|wince*: SUBDIRS = uitools
--- a/tools/designer/translations/translations.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/designer/translations/translations.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -129,6 +129,7 @@
 
 TR_DIR = $$PWD/../../../translations
 TRANSLATIONS = \
+    $$TR_DIR/designer_cs.ts \
     $$TR_DIR/designer_de.ts \
     $$TR_DIR/designer_fr.ts \
     $$TR_DIR/designer_ja.ts \
--- a/tools/linguist/linguist/linguist.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/linguist/linguist/linguist.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -97,6 +97,7 @@
 
 TR_DIR = $$PWD/../../../translations
 TRANSLATIONS = \
+    $$TR_DIR/linguist_cs.ts \
     $$TR_DIR/linguist_de.ts \
     $$TR_DIR/linguist_fr.ts \
     $$TR_DIR/linguist_ja.ts \
--- a/tools/linguist/lrelease/main.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/linguist/lrelease/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -40,7 +40,7 @@
 ****************************************************************************/
 
 #include "translator.h"
-#include "proreader.h"
+#include "profileevaluator.h"
 
 #ifndef QT_BOOTSTRAPPED
 #include <QtCore/QCoreApplication>
@@ -246,24 +246,31 @@
     foreach (const QString &inputFile, inputFiles) {
         if (inputFile.endsWith(QLatin1String(".pro"), Qt::CaseInsensitive)
             || inputFile.endsWith(QLatin1String(".pri"), Qt::CaseInsensitive)) {
-            QHash<QByteArray, QStringList> varMap;
-            bool ok = evaluateProFile(inputFile, cd.isVerbose(), &varMap);
-            if (ok) {
-                QStringList translations = varMap.value("TRANSLATIONS");
-                if (translations.isEmpty()) {
-                    qWarning("lrelease warning: Met no 'TRANSLATIONS' entry in"
-                             " project file '%s'\n",
-                             qPrintable(inputFile));
-                } else {
-                    foreach (const QString &trans, translations)
-                        if (!releaseTsFile(trans, cd, removeIdentical))
-                            return 1;
-                }
+            QFileInfo fi(inputFile);
+            ProFile pro(fi.absoluteFilePath());
+
+            ProFileEvaluator visitor;
+            visitor.setVerbose(cd.isVerbose());
+
+            if (!visitor.queryProFile(&pro)) {
+                qWarning("lrelease error: cannot read project file '%s'.", qPrintable(inputFile));
+                continue;
+            }
+            if (!visitor.accept(&pro)) {
+                qWarning("lrelease error: cannot process project file '%s'.", qPrintable(inputFile));
+                continue;
+            }
+
+            QStringList translations = visitor.values(QLatin1String("TRANSLATIONS"));
+            if (translations.isEmpty()) {
+                qWarning("lrelease warning: Met no 'TRANSLATIONS' entry in"
+                         " project file '%s'\n",
+                         qPrintable(inputFile));
             } else {
-                qWarning("error: lrelease encountered project file functionality that is currently not supported.\n"
-                    "You might want to consider using TS files as input instead of a project file.\n"
-                    "Try the following syntax:\n"
-                    "    lrelease [options] ts-files [-qm qm-file]\n");
+                QDir proDir(fi.absolutePath());
+                foreach (const QString &trans, translations)
+                    if (!releaseTsFile(QFileInfo(proDir, trans).filePath(), cd, removeIdentical))
+                        return 1;
             }
         } else {
             if (outputFile.isEmpty()) {
--- a/tools/linguist/lupdate/main.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/linguist/lupdate/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -43,7 +43,6 @@
 
 #include <translator.h>
 #include <profileevaluator.h>
-#include <proreader.h>
 
 #include <QtCore/QCoreApplication>
 #include <QtCore/QDebug>
@@ -118,21 +117,26 @@
         "    -disable-heuristic {sametext|similartext|number}\n"
         "           Disable the named merge heuristic. Can be specified multiple times.\n"
         "    -pro <filename>\n"
-        "           Name of a .pro file. Useful for files with .pro\n"
-        "           file syntax but different file suffix\n"
+        "           Name of a .pro file. Useful for files with .pro file syntax but\n"
+        "           different file suffix. Projects are recursed into and merged.\n"
         "    -source-language <language>[_<region>]\n"
         "           Specify the language of the source strings for new files.\n"
         "           Defaults to POSIX if not specified.\n"
         "    -target-language <language>[_<region>]\n"
         "           Specify the language of the translations for new files.\n"
         "           Guessed from the file name if not specified.\n"
+        "    -ts <ts-file>...\n"
+        "           Specify the output file(s). This will override the TRANSLATIONS\n"
+        "           and nullify the CODECFORTR from possibly specified project files.\n"
+        "    -codecfortr <codec>\n"
+        "           Specify the codec assumed for tr() calls. Effective only with -ts.\n"
         "    -version\n"
         "           Display the version of lupdate and exit.\n"
     ).arg(m_defaultExtensions));
 }
 
 static void updateTsFiles(const Translator &fetchedTor, const QStringList &tsFileNames,
-    const QByteArray &codecForTr, const QString &sourceLanguage, const QString &targetLanguage,
+    bool setCodec, const QString &sourceLanguage, const QString &targetLanguage,
     UpdateOptions options, bool *fail)
 {
     QDir dir;
@@ -150,10 +154,10 @@
             }
             tor.resolveDuplicates();
             cd.clearErrors();
-            if (!codecForTr.isEmpty() && codecForTr != tor.codecName())
+            if (setCodec && fetchedTor.codec() != tor.codec())
                 qWarning("lupdate warning: Codec for tr() '%s' disagrees with "
                          "existing file's codec '%s'. Expect trouble.",
-                         codecForTr.constData(), tor.codecName().constData());
+                         fetchedTor.codecName().constData(), tor.codecName().constData());
             if (!targetLanguage.isEmpty() && targetLanguage != tor.languageCode())
                 qWarning("lupdate warning: Specified target language '%s' disagrees with "
                          "existing file's language '%s'. Ignoring.",
@@ -163,8 +167,8 @@
                          "existing file's language '%s'. Ignoring.",
                          qPrintable(sourceLanguage), qPrintable(tor.sourceLanguageCode()));
         } else {
-            if (!codecForTr.isEmpty())
-                tor.setCodecName(codecForTr);
+            if (setCodec)
+                tor.setCodec(fetchedTor.codec());
             if (!targetLanguage.isEmpty())
                 tor.setLanguageCode(targetLanguage);
             else
@@ -186,8 +190,8 @@
         if (tor.locationsType() == Translator::NoLocations) // Could be set from file
             theseOptions |= NoLocations;
         Translator out = merge(tor, fetchedTor, theseOptions, err);
-        if (!codecForTr.isEmpty())
-            out.setCodecName(codecForTr);
+        if (setCodec)
+            out.setCodec(fetchedTor.codec());
 
         if ((options & Verbose) && !err.isEmpty()) {
             printOut(err);
@@ -214,16 +218,196 @@
     }
 }
 
+static QStringList getSources(const char *var, const char *vvar, const QStringList &baseVPaths,
+                              const QString &projectDir, const ProFileEvaluator &visitor)
+{
+    QStringList vPaths = visitor.absolutePathValues(QLatin1String(vvar), projectDir);
+    vPaths += baseVPaths;
+    vPaths.removeDuplicates();
+    return visitor.absoluteFileValues(QLatin1String(var), projectDir, vPaths, 0);
+}
+
+static QStringList getSources(const ProFileEvaluator &visitor, const QString &projectDir)
+{
+    QStringList baseVPaths;
+    baseVPaths += visitor.absolutePathValues(QLatin1String("VPATH"), projectDir);
+    baseVPaths << projectDir; // QMAKE_ABSOLUTE_SOURCE_PATH
+    baseVPaths += visitor.absolutePathValues(QLatin1String("DEPENDPATH"), projectDir);
+    baseVPaths.removeDuplicates();
+
+    QStringList sourceFiles;
+
+    // app/lib template
+    sourceFiles += getSources("SOURCES", "VPATH_SOURCES", baseVPaths, projectDir, visitor);
+
+    sourceFiles += getSources("FORMS", "VPATH_FORMS", baseVPaths, projectDir, visitor);
+    sourceFiles += getSources("FORMS3", "VPATH_FORMS3", baseVPaths, projectDir, visitor);
+
+    QStringList vPathsInc = baseVPaths;
+    vPathsInc += visitor.absolutePathValues(QLatin1String("INCLUDEPATH"), projectDir);
+    vPathsInc.removeDuplicates();
+    sourceFiles += visitor.absoluteFileValues(QLatin1String("HEADERS"), projectDir, vPathsInc, 0);
+
+    sourceFiles.removeDuplicates();
+    sourceFiles.sort();
+
+    return sourceFiles;
+}
+
+static void processSources(Translator &fetchedTor,
+                           const QStringList &sourceFiles, ConversionData &cd)
+{
+    QStringList sourceFilesCpp;
+    for (QStringList::const_iterator it = sourceFiles.begin(); it != sourceFiles.end(); ++it) {
+        if (it->endsWith(QLatin1String(".java"), Qt::CaseInsensitive))
+            loadJava(fetchedTor, *it, cd);
+        else if (it->endsWith(QLatin1String(".ui"), Qt::CaseInsensitive)
+                 || it->endsWith(QLatin1String(".jui"), Qt::CaseInsensitive))
+            loadUI(fetchedTor, *it, cd);
+        else if (it->endsWith(QLatin1String(".js"), Qt::CaseInsensitive)
+                 || it->endsWith(QLatin1String(".qs"), Qt::CaseInsensitive))
+            loadQScript(fetchedTor, *it, cd);
+        else
+            sourceFilesCpp << *it;
+    }
+    loadCPP(fetchedTor, sourceFilesCpp, cd);
+    if (!cd.error().isEmpty())
+        printOut(cd.error());
+}
+
+static void processProjects(
+        bool topLevel, bool nestComplain, const QStringList &proFiles,
+        UpdateOptions options, const QByteArray &codecForSource,
+        const QString &targetLanguage, const QString &sourceLanguage,
+        Translator *parentTor, bool *fail);
+
+static void processProject(
+        bool nestComplain, const QFileInfo &pfi, ProFileEvaluator &visitor,
+        UpdateOptions options, const QByteArray &_codecForSource,
+        const QString &targetLanguage, const QString &sourceLanguage,
+        Translator *fetchedTor, bool *fail)
+{
+    QByteArray codecForSource = _codecForSource;
+    QStringList tmp = visitor.values(QLatin1String("CODECFORSRC"));
+    if (!tmp.isEmpty()) {
+        codecForSource = tmp.last().toLatin1();
+        if (!QTextCodec::codecForName(codecForSource)) {
+            qWarning("lupdate warning: Codec for source '%s' is invalid. "
+                     "Falling back to codec for tr().", codecForSource.constData());
+            codecForSource.clear();
+        }
+    }
+    if (visitor.templateType() == ProFileEvaluator::TT_Subdirs) {
+        QStringList subProFiles;
+        QDir proDir(pfi.absoluteDir());
+        foreach (const QString &subdir, visitor.values(QLatin1String("SUBDIRS"))) {
+            QString subPro = QDir::cleanPath(proDir.absoluteFilePath(subdir));
+            QFileInfo subInfo(subPro);
+            if (subInfo.isDir())
+                subProFiles << (subPro + QLatin1Char('/')
+                                + subInfo.fileName() + QLatin1String(".pro"));
+            else
+                subProFiles << subPro;
+        }
+        processProjects(false, nestComplain, subProFiles, options, codecForSource,
+                        targetLanguage, sourceLanguage, fetchedTor, fail);
+    } else {
+        ConversionData cd;
+        cd.m_noUiLines = options & NoUiLines;
+        cd.m_codecForSource = codecForSource;
+        cd.m_includePath = visitor.values(QLatin1String("INCLUDEPATH"));
+        QStringList sourceFiles = getSources(visitor, pfi.absolutePath());
+        QSet<QString> sourceDirs;
+        sourceDirs.insert(QDir::cleanPath(pfi.absolutePath()) + QLatin1Char('/'));
+        foreach (const QString &sf, sourceFiles)
+            sourceDirs.insert(sf.left(sf.lastIndexOf(QLatin1Char('/')) + 1));
+        QStringList rootList = sourceDirs.toList();
+        rootList.sort();
+        for (int prev = 0, curr = 1; curr < rootList.length(); )
+            if (rootList.at(curr).startsWith(rootList.at(prev)))
+                rootList.removeAt(curr);
+            else
+                prev = curr++;
+        cd.m_projectRoots = QSet<QString>::fromList(rootList);
+        processSources(*fetchedTor, sourceFiles, cd);
+    }
+}
+
+static void processProjects(
+        bool topLevel, bool nestComplain, const QStringList &proFiles,
+        UpdateOptions options, const QByteArray &codecForSource,
+        const QString &targetLanguage, const QString &sourceLanguage,
+        Translator *parentTor, bool *fail)
+{
+    foreach (const QString &proFile, proFiles) {
+        ProFileEvaluator visitor;
+        visitor.setVerbose(options & Verbose);
+
+        QFileInfo pfi(proFile);
+        ProFile pro(pfi.absoluteFilePath());
+        if (!visitor.queryProFile(&pro) || !visitor.accept(&pro)) {
+            if (topLevel)
+                *fail = true;
+            continue;
+        }
+
+        if (visitor.contains(QLatin1String("TRANSLATIONS"))) {
+            if (parentTor) {
+                if (topLevel) {
+                    std::cerr << "lupdate warning: TS files from command line "
+                            "will override TRANSLATIONS in " << qPrintable(proFile) << ".\n";
+                    goto noTrans;
+                } else if (nestComplain) {
+                    std::cerr << "lupdate warning: TS files from command line "
+                            "prevent recursing into " << qPrintable(proFile) << ".\n";
+                    continue;
+                }
+            }
+            QStringList tsFiles;
+            QDir proDir(pfi.absolutePath());
+            foreach (const QString &tsFile, visitor.values(QLatin1String("TRANSLATIONS")))
+                tsFiles << QFileInfo(proDir, tsFile).filePath();
+            if (tsFiles.isEmpty()) {
+                // This might mean either a buggy PRO file or an intentional detach -
+                // we can't know without seeing the actual RHS of the assignment ...
+                // Just assume correctness and be silent.
+                continue;
+            }
+            Translator tor;
+            bool setCodec = false;
+            QStringList tmp = visitor.values(QLatin1String("CODEC"))
+                              + visitor.values(QLatin1String("DEFAULTCODEC"))
+                              + visitor.values(QLatin1String("CODECFORTR"));
+            if (!tmp.isEmpty()) {
+                tor.setCodecName(tmp.last().toLatin1());
+                setCodec = true;
+            }
+            processProject(false, pfi, visitor, options, codecForSource,
+                           targetLanguage, sourceLanguage, &tor, fail);
+            updateTsFiles(tor, tsFiles, setCodec, sourceLanguage, targetLanguage, options, fail);
+            continue;
+        }
+      noTrans:
+        if (!parentTor) {
+            if (topLevel)
+                std::cerr << "lupdate warning: no TS files specified. Only diagnostics "
+                        "will be produced for '" << qPrintable(proFile) << "'.\n";
+            Translator tor;
+            processProject(nestComplain, pfi, visitor, options, codecForSource,
+                           targetLanguage, sourceLanguage, &tor, fail);
+        } else {
+            processProject(nestComplain, pfi, visitor, options, codecForSource,
+                           targetLanguage, sourceLanguage, parentTor, fail);
+        }
+    }
+}
+
 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");
 
     QStringList args = app.arguments();
-    QString defaultContext; // This was QLatin1String("@default") before.
-    Translator fetchedTor;
-    QByteArray codecForTr;
-    QByteArray codecForSource;
     QStringList tsFileNames;
     QStringList proFiles;
     QMultiHash<QString, QString> allCSources;
@@ -232,6 +416,7 @@
     QStringList includePath;
     QString targetLanguage;
     QString sourceLanguage;
+    QByteArray codecForTr;
 
     UpdateOptions options =
         Verbose | // verbose is on by default starting with Qt 4.2
@@ -330,6 +515,14 @@
         } else if (arg == QLatin1String("-version")) {
             printOut(QObject::tr("lupdate version %1\n").arg(QLatin1String(QT_VERSION_STR)));
             return 0;
+        } else if (arg == QLatin1String("-codecfortr")) {
+            ++i;
+            if (i == argc) {
+                qWarning("The -codecfortr option should be followed by a codec name.");
+                return 1;
+            }
+            codecForTr = args[i].toLatin1();
+            continue;
         } else if (arg == QLatin1String("-ts")) {
             metTsFlag = true;
             continue;
@@ -367,11 +560,6 @@
             return 1;
         }
 
-        numFiles++;
-
-        codecForTr.clear();
-        codecForSource.clear();
-
         if (metTsFlag) {
             bool found = false;
             foreach (const Translator::FileFormat &fmt, Translator::registeredFileFormats()) {
@@ -395,6 +583,7 @@
         } else if (arg.endsWith(QLatin1String(".pro"), Qt::CaseInsensitive)
                 || arg.endsWith(QLatin1String(".pri"), Qt::CaseInsensitive)) {
             proFiles << arg;
+            numFiles++;
         } else {
             QFileInfo fi(arg);
             if (!fi.exists()) {
@@ -439,105 +628,53 @@
             } else {
                 sourceFiles << QDir::cleanPath(fi.absoluteFilePath());;
             }
+            numFiles++;
         }
     } // for args
 
-    foreach (const QString &proFile, proFiles)
-        projectRoots.insert(QDir::cleanPath(QFileInfo(proFile).absolutePath()) + QLatin1Char('/'));
-
-    bool firstPass = true;
-    bool fail = false;
-    while (firstPass || !proFiles.isEmpty()) {
-        ConversionData cd;
-        cd.m_defaultContext = defaultContext;
-        cd.m_noUiLines = options & NoUiLines;
-        cd.m_projectRoots = projectRoots;
-        cd.m_includePath = includePath;
-        cd.m_allCSources = allCSources;
-
-        QStringList tsFiles = tsFileNames;
-        if (proFiles.count() > 0) {
-            QFileInfo pfi(proFiles.takeFirst());
-            QHash<QByteArray, QStringList> variables;
-
-            ProFileEvaluator visitor;
-            visitor.setVerbose(options & Verbose);
-
-            ProFile pro(pfi.absoluteFilePath());
-            if (!visitor.queryProFile(&pro))
-                return 2;
-            if (!visitor.accept(&pro))
-                return 2;
-
-            if (visitor.templateType() == ProFileEvaluator::TT_Subdirs) {
-                QDir proDir(pfi.absoluteDir());
-                foreach (const QString &subdir, visitor.values(QLatin1String("SUBDIRS"))) {
-                    QString subPro = QDir::cleanPath(proDir.absoluteFilePath(subdir));
-                    QFileInfo subInfo(subPro);
-                    if (subInfo.isDir())
-                        proFiles << (subPro + QLatin1Char('/')
-                                     + subInfo.fileName() + QLatin1String(".pro"));
-                    else
-                        proFiles << subPro;
-                }
-                continue;
-            }
-
-            cd.m_includePath += visitor.values(QLatin1String("INCLUDEPATH"));
-
-            evaluateProFile(visitor, &variables, pfi.absolutePath());
-
-            sourceFiles = variables.value("SOURCES");
-
-            QStringList tmp = variables.value("CODECFORTR");
-            if (!tmp.isEmpty() && !tmp.first().isEmpty()) {
-                codecForTr = tmp.first().toLatin1();
-                fetchedTor.setCodecName(codecForTr);
-                cd.m_outputCodec = codecForTr;
-            }
-            tmp = variables.value("CODECFORSRC");
-            if (!tmp.isEmpty() && !tmp.first().isEmpty()) {
-                codecForSource = tmp.first().toLatin1();
-                if (!QTextCodec::codecForName(codecForSource))
-                    qWarning("lupdate warning: Codec for source '%s' is invalid. Falling back to codec for tr().",
-                             codecForSource.constData());
-                else
-                    cd.m_codecForSource = codecForSource;
-            }
-
-            tsFiles += variables.value("TRANSLATIONS");
-        }
-
-        QStringList sourceFilesCpp;
-        for (QStringList::iterator it = sourceFiles.begin(); it != sourceFiles.end(); ++it) {
-            if (it->endsWith(QLatin1String(".java"), Qt::CaseInsensitive))
-                loadJava(fetchedTor, *it, cd);
-            else if (it->endsWith(QLatin1String(".ui"), Qt::CaseInsensitive)
-                     || it->endsWith(QLatin1String(".jui"), Qt::CaseInsensitive))
-                loadUI(fetchedTor, *it, cd);
-            else if (it->endsWith(QLatin1String(".js"), Qt::CaseInsensitive)
-                     || it->endsWith(QLatin1String(".qs"), Qt::CaseInsensitive))
-                loadQScript(fetchedTor, *it, cd);
-            else
-                sourceFilesCpp << *it;
-        }
-        loadCPP(fetchedTor, sourceFilesCpp, cd);
-        if (!cd.error().isEmpty())
-            printOut(cd.error());
-
-        tsFiles.sort();
-        tsFiles.removeDuplicates();
-
-        if (!tsFiles.isEmpty())
-            updateTsFiles(fetchedTor, tsFiles, codecForTr, sourceLanguage, targetLanguage, options, &fail);
-
-        firstPass = false;
-    }
-
     if (numFiles == 0) {
         printUsage();
         return 1;
     }
 
+    if (!targetLanguage.isEmpty() && tsFileNames.count() != 1)
+        std::cerr << "lupdate warning: -target-language usually only "
+                     "makes sense with exactly one TS file.\n";
+    if (!codecForTr.isEmpty() && tsFileNames.isEmpty())
+        std::cerr << "lupdate warning: -codecfortr has no effect without -ts.\n";
+
+    bool fail = false;
+    if (proFiles.isEmpty()) {
+        if (tsFileNames.isEmpty())
+            std::cerr << "lupdate warning: no TS files specified. "
+                         "Only diagnostics will be produced.\n";
+
+        Translator fetchedTor;
+        ConversionData cd;
+        cd.m_noUiLines = options & NoUiLines;
+        cd.m_projectRoots = projectRoots;
+        cd.m_includePath = includePath;
+        cd.m_allCSources = allCSources;
+        fetchedTor.setCodecName(codecForTr);
+        processSources(fetchedTor, sourceFiles, cd);
+        updateTsFiles(fetchedTor, tsFileNames, !codecForTr.isEmpty(),
+                      sourceLanguage, targetLanguage, options, &fail);
+    } else {
+        if (!sourceFiles.isEmpty() || !includePath.isEmpty()) {
+            qWarning("lupdate error: Both project and source files / include paths specified.\n");
+            return 1;
+        }
+        if (!tsFileNames.isEmpty()) {
+            Translator fetchedTor;
+            fetchedTor.setCodecName(codecForTr);
+            processProjects(true, true, proFiles, options, QByteArray(),
+                            targetLanguage, sourceLanguage, &fetchedTor, &fail);
+            updateTsFiles(fetchedTor, tsFileNames, !codecForTr.isEmpty(),
+                          sourceLanguage, targetLanguage, options, &fail);
+        } else {
+            processProjects(true, false, proFiles, options, QByteArray(),
+                            targetLanguage, sourceLanguage, 0, &fail);
+        }
+    }
     return fail ? 1 : 0;
 }
--- a/tools/linguist/shared/proparser.pri	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/linguist/shared/proparser.pri	Fri Mar 12 15:46:37 2010 +0200
@@ -2,13 +2,11 @@
 INCLUDEPATH *= $$PWD
 
 HEADERS += \
-    $$PWD/proreader.h \
     $$PWD/abstractproitemvisitor.h \
     $$PWD/proitems.h \
     $$PWD/profileevaluator.h \
     $$PWD/proparserutils.h 
 
 SOURCES += \
-    $$PWD/proreader.cpp \
     $$PWD/proitems.cpp \
     $$PWD/profileevaluator.cpp 
--- a/tools/linguist/shared/qm.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/linguist/shared/qm.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -594,7 +594,7 @@
                     return false;
                 }
                 m += 4;
-                QString str = QString::fromUtf16((const ushort *)m, len/2);
+                QString str = QString((const QChar *)m, len/2);
                 if (QSysInfo::ByteOrder == QSysInfo::LittleEndian) {
                     for (int i = 0; i < str.length(); ++i)
                         str[i] = QChar((str.at(i).unicode() >> 8) +
--- a/tools/linguist/shared/translator.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/linguist/shared/translator.h	Fri Mar 12 15:46:37 2010 +0200
@@ -153,6 +153,7 @@
     void reportDuplicates(const Duplicates &dupes, const QString &fileName, bool verbose);
 
     void setCodecName(const QByteArray &name);
+    void setCodec(QTextCodec *codec) { m_codec = codec; }
     QByteArray codecName() const;
     QTextCodec *codec() const { return m_codec; }
 
--- a/tools/qttracereplay/main.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/qttracereplay/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -52,6 +52,7 @@
     ReplayWidget(const QString &filename);
 
     void paintEvent(QPaintEvent *event);
+    void resizeEvent(QResizeEvent *event);
 
 public slots:
     void updateRect();
@@ -64,14 +65,15 @@
     int currentIteration;
     QTime timer;
 
+    QList<uint> visibleUpdates;
     QList<uint> iterationTimes;
     QString filename;
 };
 
 void ReplayWidget::updateRect()
 {
-    if (!updates.isEmpty())
-        update(updates.at(currentFrame));
+    if (!visibleUpdates.isEmpty())
+        update(updates.at(visibleUpdates.at(currentFrame)));
 }
 
 void ReplayWidget::paintEvent(QPaintEvent *)
@@ -80,10 +82,10 @@
 
 //    p.setClipRegion(frames.at(currentFrame).updateRegion);
 
-    buffer.draw(&p, currentFrame);
+    buffer.draw(&p, visibleUpdates.at(currentFrame));
 
     ++currentFrame;
-    if (currentFrame >= buffer.numFrames()) {
+    if (currentFrame >= visibleUpdates.size()) {
         currentFrame = 0;
         ++currentIteration;
 
@@ -119,7 +121,7 @@
 
                 if (iterationTimes.size() >= 10 || stddev < 4) {
                     printf("%s, iterations: %d, frames: %d, min(ms): %d, median(ms): %d, stddev: %f %%, max(fps): %f\n", qPrintable(filename),
-                            iterationTimes.size(), updates.size(), min, median, stddev, 1000. * updates.size() / min);
+                            iterationTimes.size(), visibleUpdates.size(), min, median, stddev, 1000. * visibleUpdates.size() / min);
                     deleteLater();
                     return;
                 }
@@ -130,6 +132,21 @@
     QTimer::singleShot(0, this, SLOT(updateRect()));
 }
 
+void ReplayWidget::resizeEvent(QResizeEvent *event)
+{
+    visibleUpdates.clear();
+
+    QRect bounds = rect();
+    for (int i = 0; i < updates.size(); ++i) {
+        if (updates.at(i).intersects(bounds))
+            visibleUpdates << i;
+    }
+
+    if (visibleUpdates.size() != updates.size())
+        printf("Warning: skipped %d frames due to limited resolution\n", updates.size() - visibleUpdates.size());
+
+}
+
 ReplayWidget::ReplayWidget(const QString &filename_)
     : currentFrame(0)
     , currentIteration(0)
@@ -138,7 +155,6 @@
     setWindowTitle(filename);
     QFile file(filename);
 
-    QRect bounds;
     if (!file.open(QIODevice::ReadOnly)) {
         printf("Failed to load input file '%s'\n", qPrintable(filename_));
         return;
--- a/tools/runonphone/main.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/runonphone/main.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -72,7 +72,7 @@
     QString serialPortFriendlyName;
     QString sisFile;
     QString exeFile;
-    QString cmdLine;
+    QStringList cmdLine;
     QStringList args = QCoreApplication::arguments();
     QTextStream outstream(stdout);
     QTextStream errstream(stderr);
@@ -124,7 +124,6 @@
             i++;
             for(;i<args.size();i++) {
                 cmdLine.append(args.at(i));
-                if(i + 1 < args.size()) cmdLine.append(' ');
             }
         }
     }
@@ -204,8 +203,8 @@
     QObject::connect(launcher.data(), SIGNAL(applicationOutputReceived(const QString &)), &handler, SLOT(applicationOutputReceived(const QString &)));
     QObject::connect(launcher.data(), SIGNAL(copyProgress(int)), &handler, SLOT(copyProgress(int)));
     QObject::connect(launcher.data(), SIGNAL(stateChanged(int)), &handler, SLOT(stateChanged(int)));
-    QObject::connect(launcher.data(), SIGNAL(stopped(uint,uint,uint,QString)), &handler, SLOT(stopped(uint,uint,uint,QString)));
-    QObject::connect(&handler, SIGNAL(resume(uint,uint)), launcher.data(), SLOT(resume(uint,uint)));
+    QObject::connect(launcher.data(), SIGNAL(processStopped(uint,uint,uint,QString)), &handler, SLOT(stopped(uint,uint,uint,QString)));
+    QObject::connect(&handler, SIGNAL(resume(uint,uint)), launcher.data(), SLOT(resumeProcess(uint,uint)));
     QObject::connect(&handler, SIGNAL(terminate()), launcher.data(), SLOT(terminate()));
     QObject::connect(launcher.data(), SIGNAL(finished()), &handler, SLOT(finished()));
 
--- a/tools/runonphone/runonphone.pro	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/runonphone/runonphone.pro	Fri Mar 12 15:46:37 2010 +0200
@@ -18,7 +18,7 @@
         -luuid \
         -ladvapi32
 }
-unix:!symbian {
+else:unix:!symbian {
     SOURCES += serenum_unix.cpp
 }
 else {
--- a/tools/runonphone/trk/launcher.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/runonphone/trk/launcher.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -76,7 +76,7 @@
 
     CopyState m_copyState;
     QString m_fileName;
-    QString m_commandLineArgs;
+    QStringList m_commandLineArgs;
     QString m_installFileName;
     int m_verbose;
     Launcher::Actions m_startupActions;
@@ -159,7 +159,7 @@
     d->m_installFileName = name;
 }
 
-void Launcher::setCommandLineArgs(const QString &args)
+void Launcher::setCommandLineArgs(const QStringList &args)
 {
     d->m_commandLineArgs = args;
 }
@@ -189,8 +189,10 @@
 {
     errorMessage->clear();
     if (d->m_verbose) {
-        const QString msg = QString::fromLatin1("Port=%1 Executable=%2 Package=%3 Remote Package=%4 Install file=%5")
-                            .arg(d->m_trkServerName, d->m_fileName, d->m_copyState.sourceFileName, d->m_copyState.destinationFileName, d->m_installFileName);
+        const QString msg = QString::fromLatin1("Port=%1 Executable=%2 Arguments=%3 Package=%4 Remote Package=%5 Install file=%6")
+                            .arg(d->m_trkServerName, d->m_fileName,
+                                 d->m_commandLineArgs.join(QString(QLatin1Char(' '))),
+                                 d->m_copyState.sourceFileName, d->m_copyState.destinationFileName, d->m_installFileName);
         logMessage(msg);
     }
     if (d->m_startupActions & ActionCopy) {
@@ -296,6 +298,34 @@
     disconnectTrk();
 }
 
+QString Launcher::msgStopped(uint pid, uint tid, uint address, const QString &why)
+{
+    return QString::fromLatin1("Process %1, thread %2 stopped at 0x%3: %4").
+            arg(pid).arg(tid).arg(address, 0, 16).
+            arg(why.isEmpty() ? QString::fromLatin1("<Unknown reason>") : why);
+}
+
+bool Launcher::parseNotifyStopped(const QByteArray &dataBA,
+                                  uint *pid, uint *tid, uint *address,
+                                  QString *why /* = 0 */)
+{
+    if (why)
+        why->clear();
+    *address = *pid = *tid = 0;
+    if (dataBA.size() < 12)
+        return false;
+    const char *data = dataBA.data();
+    *address = extractInt(data);
+    *pid = extractInt(data + 4);
+    *tid = extractInt(data + 8);
+    if (why && dataBA.size() >= 14) {
+        const unsigned short len = extractShort(data + 12);
+        if (len > 0)
+            *why = QString::fromLatin1(data + 14, len);
+    }
+    return true;
+}
+
 void Launcher::handleResult(const TrkResult &result)
 {
     QByteArray prefix = "READ BUF:                                       ";
@@ -315,25 +345,13 @@
             break;
         }
         case TrkNotifyStopped: { // Notified Stopped
-            logMessage(prefix + "NOTE: STOPPED  " + str);
-            // 90 01   78 6a 40 40   00 00 07 23   00 00 07 24  00 00
             QString reason;
-            if (result.data.size() >= 14) {
-                uint pc = extractInt(result.data.mid(0,4).constData());
-                uint pid = extractInt(result.data.mid(4,4).constData());
-                uint tid = extractInt(result.data.mid(8,4).constData());
-                ushort len = extractShort(result.data.mid(12,2).constData());
-                if(len > 0)
-                    reason = result.data.mid(14, len);
-                emit(stopped(pc, pid, tid, reason));
-            } else {
-                emit(stopped(0, 0, 0, reason));
-            }
-            //const char *data = result.data.data();
-//            uint addr = extractInt(data); //code address: 4 bytes; code base address for the library
-//            uint pid = extractInt(data + 4); // ProcessID: 4 bytes;
-//            uint tid = extractInt(data + 8); // ThreadID: 4 bytes
-            //logMessage(prefix << "      ADDR: " << addr << " PID: " << pid << " TID: " << tid);
+            uint pc;
+            uint pid;
+            uint tid;
+            parseNotifyStopped(result.data, &pid, &tid, &pc, &reason);
+            logMessage(prefix + msgStopped(pid, tid, pc, reason));
+            emit(processStopped(pc, pid, tid, reason));
             d->m_device->sendTrkAck(result.token);
             break;
         }
@@ -681,6 +699,26 @@
     }
 }
 
+QByteArray Launcher::startProcessMessage(const QString &executable,
+                                         const QStringList &arguments)
+{
+    // It's not started yet
+    QByteArray ba;
+    appendShort(&ba, 0, TargetByteOrder); // create new process
+    appendByte(&ba, 0); // options - currently unused
+    if(arguments.isEmpty()) {
+        appendString(&ba, executable.toLocal8Bit(), TargetByteOrder);
+        return ba;
+    }
+    // Append full command line as one string (leading length information).
+    QByteArray commandLineBa;
+    commandLineBa.append(executable.toLocal8Bit());
+    commandLineBa.append('\0');
+    commandLineBa.append(arguments.join(QString(QLatin1Char(' '))).toLocal8Bit());
+    appendString(&ba, commandLineBa, TargetByteOrder);
+    return ba;
+}
+
 void Launcher::startInferiorIfNeeded()
 {
     emit startingApplication();
@@ -688,24 +726,11 @@
         logMessage("Process already 'started'");
         return;
     }
-    // It's not started yet
-    QByteArray ba;
-    appendShort(&ba, 0, TargetByteOrder); // create new process
-    appendByte(&ba, 0); // options - currently unused
-
-    if(d->m_commandLineArgs.isEmpty()) {
-        appendString(&ba, d->m_fileName.toLocal8Bit(), TargetByteOrder);
-    } else {
-        QByteArray ba2;
-        ba2.append(d->m_fileName.toLocal8Bit());
-        ba2.append('\0');
-        ba2.append(d->m_commandLineArgs.toLocal8Bit());
-        appendString(&ba, ba2, TargetByteOrder);
-    }
-    d->m_device->sendTrkMessage(TrkCreateItem, TrkCallback(this, &Launcher::handleCreateProcess), ba); // Create Item
+    d->m_device->sendTrkMessage(TrkCreateItem, TrkCallback(this, &Launcher::handleCreateProcess),
+                                startProcessMessage(d->m_fileName, d->m_commandLineArgs)); // Create Item
 }
 
-void Launcher::resume(uint pid, uint tid)
+void Launcher::resumeProcess(uint pid, uint tid)
 {
     QByteArray ba;
     appendInt(&ba, pid, BigEndian);
--- a/tools/runonphone/trk/launcher.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/runonphone/trk/launcher.h	Fri Mar 12 15:46:37 2010 +0200
@@ -95,7 +95,7 @@
     void setFileName(const QString &name);
     void setCopyFileName(const QString &srcName, const QString &dstName);
     void setInstallFileName(const QString &name);
-    void setCommandLineArgs(const QString &args);
+    void setCommandLineArgs(const QStringList &args);
     bool startServer(QString *errorMessage);
     void setVerbose(int v);    
     void setSerialFrame(bool b);
@@ -109,6 +109,15 @@
     // becomes valid after successful execution of ActionPingOnly
     QString deviceDescription(unsigned verbose = 0u) const;
 
+    static QByteArray startProcessMessage(const QString &executable,
+                                          const QStringList &arguments);
+    // Parse a TrkNotifyStopped message
+    static bool parseNotifyStopped(const QByteArray &a,
+                                   uint *pid, uint *tid, uint *address,
+                                   QString *why = 0);
+    // Helper message
+    static QString msgStopped(uint pid, uint tid, uint address, const QString &why);
+
 signals:
     void copyingStarted();
     void canNotConnect(const QString &errorMessage);
@@ -125,11 +134,11 @@
     void applicationOutputReceived(const QString &output);
     void copyProgress(int percent);
     void stateChanged(int);
-    void stopped(uint pc, uint pid, uint tid, const QString& reason);
+    void processStopped(uint pc, uint pid, uint tid, const QString& reason);
 
 public slots:
     void terminate();
-    void resume(uint pid, uint tid);
+    void resumeProcess(uint pid, uint tid);
 
 private slots:
     void handleResult(const trk::TrkResult &data);
--- a/tools/runonphone/trk/trkdevice.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/runonphone/trk/trkdevice.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -99,6 +99,8 @@
 
 #endif
 
+enum { verboseTrk = 0 };
+
 namespace trk {
 
 ///////////////////////////////////////////////////////////////////////
@@ -128,6 +130,12 @@
 {
 }
 
+QDebug operator<<(QDebug d, const TrkMessage &msg)
+{
+    return d << "Message: Code: " << msg.code
+        << " Token: " << msg.token << " " << msg.data.toHex();
+}
+
 } // namespace trk
 
 Q_DECLARE_METATYPE(trk::TrkMessage)
@@ -204,6 +212,8 @@
     ++m_trkWriteToken;
     if (m_trkWriteToken == 0)
         ++m_trkWriteToken;
+    if (verboseTrk)
+        qDebug() << "Write token: " << m_trkWriteToken;
     return m_trkWriteToken;
 }
 
@@ -334,7 +344,8 @@
 
 ///////////////////////////////////////////////////////////////////////
 
-class WriterThread : public QThread {
+class WriterThread : public QThread
+{
     Q_OBJECT
     Q_DISABLE_COPY(WriterThread)
 public:            
@@ -400,15 +411,18 @@
     m_waitMutex.unlock();
     if (m_terminate)
         return 1;
+
     // Send off message
     m_dataMutex.lock();
     TrkMessage message;
     const TrkWriteQueue::PendingMessageResult pr = m_queue.pendingMessage(&message);
     m_dataMutex.unlock();
+
     switch (pr) {
     case TrkWriteQueue::NoMessage:
         break;
     case TrkWriteQueue::PendingMessage: {
+            //qDebug() << "Write pending message " << message;
             // Untested: try to re-send a few times
             bool success = false;
             for (int r = 0; !success && (r < MaxAttempts); r++) {
@@ -428,6 +442,8 @@
         break;
     case TrkWriteQueue::NoopMessageDequeued:
         // Sync with thread that owns us via a blocking signal
+        if (verboseTrk)
+            qDebug() << "Noop message dequeued" << message;
         emit internalNoopMessageDequeued(message);
         break;
     } // switch
@@ -499,6 +515,8 @@
 
 bool WriterThread::write(const QByteArray &data, QString *errorMessage)
 {
+    if (verboseTrk)
+        qDebug() << "Write raw data: " << data.toHex();
     QMutexLocker locker(&m_context->mutex);
 #ifdef Q_OS_WIN
     DWORD charsWritten;
@@ -557,6 +575,7 @@
     tryWrite(); // Have messages been enqueued in-between?
 }
 
+
 ///////////////////////////////////////////////////////////////////////
 //
 // ReaderThreadBase: Base class for a thread that reads data from
@@ -566,7 +585,8 @@
 //
 ///////////////////////////////////////////////////////////////////////
 
-class ReaderThreadBase : public QThread {
+class ReaderThreadBase : public QThread
+{
     Q_OBJECT
     Q_DISABLE_COPY(ReaderThreadBase)
 public:
@@ -625,7 +645,8 @@
 //
 ///////////////////////////////////////////////////////////////////////
 
-class WinReaderThread : public ReaderThreadBase {
+class WinReaderThread : public ReaderThreadBase
+{
     Q_OBJECT
     Q_DISABLE_COPY(WinReaderThread)
 public:
@@ -835,7 +856,8 @@
 {
     // Trigger select() by writing to the pipe
     char c = 0;
-    write(m_terminatePipeFileDescriptors[1], &c, 1);
+    int written = write(m_terminatePipeFileDescriptors[1], &c, 1);
+    // FIXME: Use result.
     wait();
 }
 
@@ -1021,6 +1043,8 @@
 void TrkDevice::slotMessageReceived(const trk::TrkResult &result, const QByteArray &rawData)
 {
     d->writerThread->slotHandleResult(result);
+    if (d->verbose > 1)
+        qDebug() << "Received: " << result.toString();
     emit messageReceived(result);    
     if (!rawData.isEmpty())
         emit rawDataReceived(rawData);
@@ -1057,6 +1081,8 @@
     TrkMessage msg(0x80, token);
     msg.token = token;
     msg.data.append('\0');
+    if (verboseTrk)
+        qDebug() << "Write synchroneous message: " << msg;
     return d->writerThread->trkWriteRawMessage(msg);
     // 01 90 00 07 7e 80 01 00 7d 5e 7e
 }
--- a/tools/runonphone/trk/trkutils.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/runonphone/trk/trkutils.h	Fri Mar 12 15:46:37 2010 +0200
@@ -119,7 +119,8 @@
     uint dataseg;
 };
 
-struct TrkAppVersion {
+struct TrkAppVersion
+{
     TrkAppVersion();
     void reset();    
 
@@ -153,6 +154,10 @@
     typedef QList<Library> Libraries;
     Libraries libraries;
 
+    typedef uint Thread;
+    typedef QList<Thread> Threads;
+    Threads threads;
+
     // Gdb request
     uint currentThread;
     QStringList modules;
--- a/tools/shared/findwidget/abstractfindwidget.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/shared/findwidget/abstractfindwidget.h	Fri Mar 12 15:46:37 2010 +0200
@@ -70,7 +70,7 @@
     };
     Q_DECLARE_FLAGS(FindFlags, FindFlag)
 
-    AbstractFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
+    explicit AbstractFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
     virtual ~AbstractFindWidget();
 
     bool eventFilter(QObject *object, QEvent *e);
--- a/tools/shared/findwidget/itemviewfindwidget.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/shared/findwidget/itemviewfindwidget.h	Fri Mar 12 15:46:37 2010 +0200
@@ -55,7 +55,7 @@
     Q_OBJECT
 
 public:
-    ItemViewFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
+    explicit ItemViewFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
 
     QAbstractItemView *itemView() const
     { return m_itemView; }
--- a/tools/shared/findwidget/texteditfindwidget.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/shared/findwidget/texteditfindwidget.h	Fri Mar 12 15:46:37 2010 +0200
@@ -53,7 +53,7 @@
     Q_OBJECT
 
 public:
-    TextEditFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
+    explicit TextEditFindWidget(FindFlags flags = FindFlags(), QWidget *parent = 0);
 
     QTextEdit *textEdit() const
     { return m_textEdit; }
--- a/tools/shared/fontpanel/fontpanel.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/shared/fontpanel/fontpanel.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -217,7 +217,7 @@
     const QString normalStyle = QLatin1String("Normal");
 
     if (hasStyles) {
-        foreach (QString style, styles) {
+        foreach (const QString &style, styles) {
             // try to maintain selection or select 'normal' preferably
             const int newIndex = m_styleComboBox->count();
             m_styleComboBox->addItem(style);
--- a/tools/shared/qtgradienteditor/qtgradientutils.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/shared/qtgradienteditor/qtgradientutils.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -395,7 +395,7 @@
 static QStringList styleSheetStops(const QGradient &gradient)
 {
     QStringList result;
-    foreach (QGradientStop stop, gradient.stops()) {
+    foreach (const QGradientStop &stop, gradient.stops()) {
         const QColor color = stop.second;
 
         const QString stopDescription = QLatin1String("stop:") + QString::number(stop.first) + QLatin1String(" rgba(")
--- a/tools/shared/qttoolbardialog/qttoolbardialog.h	Fri Feb 19 23:40:16 2010 +0200
+++ b/tools/shared/qttoolbardialog/qttoolbardialog.h	Fri Mar 12 15:46:37 2010 +0200
@@ -68,7 +68,7 @@
     Q_OBJECT
 public:
 
-    QtToolBarManager(QObject *parent = 0);
+    explicit QtToolBarManager(QObject *parent = 0);
     ~QtToolBarManager();
 
     void setMainWindow(QMainWindow *mainWindow);
@@ -100,7 +100,7 @@
     Q_OBJECT
 public:
 
-    QtToolBarDialog(QWidget *parent = 0, Qt::WindowFlags flags = 0);
+    explicit QtToolBarDialog(QWidget *parent = 0, Qt::WindowFlags flags = 0);
     ~QtToolBarDialog();
 
     void setToolBarManager(QtToolBarManager *toolBarManager);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/assistant_cs.ts	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,1074 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs_CZ">
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/aboutdialog.cpp" line="+110"/>
+        <source>&amp;Close</source>
+        <translation>&amp;Zavřít</translation>
+    </message>
+</context>
+<context>
+    <name>AboutLabel</name>
+    <message>
+        <location line="-14"/>
+        <source>Warning</source>
+        <translation>Varování</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Unable to launch external application.
+</source>
+        <translation>Chyba při spouštění vnější aplikace.
+</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>OK</source>
+        <translation>OK</translation>
+    </message>
+</context>
+<context>
+    <name>BookmarkDialog</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/bookmarkdialog.ui"/>
+        <source>Add Bookmark</source>
+        <translation>Přidat záložku</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Bookmark:</source>
+        <translation>Záložka:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Add in Folder:</source>
+        <translation>Zřídit ve složce:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>New Folder</source>
+        <translation>Nová složka</translation>
+    </message>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="+184"/>
+        <location line="+18"/>
+        <location line="+39"/>
+        <location line="+18"/>
+        <location line="+30"/>
+        <source>Bookmarks</source>
+        <translation>Záložky</translation>
+    </message>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/bookmarkdialog.ui"/>
+        <source>+</source>
+        <translation>+</translation>
+    </message>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/bookmarkmanager.cpp" line="-61"/>
+        <source>Delete Folder</source>
+        <translation>Smazat složku</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Rename Folder</source>
+        <translation>Přejmenovat složku</translation>
+    </message>
+</context>
+<context>
+    <name>BookmarkManager</name>
+    <message>
+        <location line="+434"/>
+        <source>Bookmarks</source>
+        <translation>Záložky</translation>
+    </message>
+    <message>
+        <location line="+37"/>
+        <source>Remove</source>
+        <translation>Odstranit</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>You are going to delete a Folder, this will also&lt;br&gt;remove it&apos;s content. Are you sure to continue?</source>
+        <translation>Když smažete tuto složku, bude smazán i &lt;br&gt;celý její obsah. Opravdu chcete pokračovat?</translation>
+    </message>
+    <message>
+        <location line="+143"/>
+        <location line="+9"/>
+        <source>New Folder</source>
+        <translation>Nová složka</translation>
+    </message>
+</context>
+<context>
+    <name>BookmarkWidget</name>
+    <message>
+        <location line="-416"/>
+        <source>Filter:</source>
+        <translation>Filtr:</translation>
+    </message>
+    <message>
+        <location line="+33"/>
+        <source>Remove</source>
+        <translation>Odstranit</translation>
+    </message>
+    <message>
+        <location line="-79"/>
+        <source>Delete Folder</source>
+        <translation>Smazat složku</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Rename Folder</source>
+        <translation>Přejmenovat složku</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Show Bookmark</source>
+        <translation>Ukázat záložku</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Show Bookmark in New Tab</source>
+        <translation>Ukázat záložku v nové kartě</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Delete Bookmark</source>
+        <translation>Smazat záložku</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Rename Bookmark</source>
+        <translation>Přejmenovat záložku</translation>
+    </message>
+    <message>
+        <location line="+62"/>
+        <source>Add</source>
+        <translation>Přidat</translation>
+    </message>
+</context>
+<context>
+    <name>CentralWidget</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+238"/>
+        <source>Add new page</source>
+        <translation>Přidat novou stranu</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Close current page</source>
+        <translation>Zavřít současnou stranu</translation>
+    </message>
+    <message>
+        <location line="+312"/>
+        <source>Print Document</source>
+        <translation>Vytisknout dokument</translation>
+    </message>
+    <message>
+        <location line="+148"/>
+        <location line="+2"/>
+        <source>unknown</source>
+        <translation>Neznámý</translation>
+    </message>
+    <message>
+        <location line="+93"/>
+        <source>Add New Page</source>
+        <translation>Přidat novou stranu</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Close This Page</source>
+        <translation>Zavřít tuto stranu</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Close Other Pages</source>
+        <translation>Zavřít jiné strany</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Add Bookmark for this Page...</source>
+        <translation>Přidat záložku pro tuto stranu...</translation>
+    </message>
+    <message>
+        <location line="+255"/>
+        <source>Search</source>
+        <translation>Hledat</translation>
+    </message>
+</context>
+<context>
+    <name>ContentWindow</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/contentwindow.cpp" line="+158"/>
+        <source>Open Link</source>
+        <translation>Otevřít adresu odkazu</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Open Link in New Tab</source>
+        <translation>Otevřít odkaz v nové kartě</translation>
+    </message>
+</context>
+<context>
+    <name>FilterNameDialogClass</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/filternamedialog.ui"/>
+        <source>Add Filter Name</source>
+        <translation>Přidat název filtru</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Filter Name:</source>
+        <translation>Název filtru:</translation>
+    </message>
+</context>
+<context>
+    <name>FindWidget</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="-955"/>
+        <source>Previous</source>
+        <translation>Předchozí</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Next</source>
+        <translation>Další</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Case Sensitive</source>
+        <translation>Rozlišující velká a malá písmena</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Whole words</source>
+        <translation>Celá slova</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>&lt;img src=&quot;:/trolltech/assistant/images/wrap.png&quot;&gt;&amp;nbsp;Search wrapped</source>
+        <translation>&lt;img src=&quot;:/trolltech/assistant/images/wrap.png&quot;&gt;&amp;nbsp;Konec strany</translation>
+    </message>
+</context>
+<context>
+    <name>FontPanel</name>
+    <message>
+        <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
+        <source>Font</source>
+        <translation>Písmo</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>&amp;Writing system</source>
+        <translation>Způsob &amp;psaní</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&amp;Family</source>
+        <translation>&amp;Písmová rodina</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>&amp;Style</source>
+        <translation>&amp;Styl</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>&amp;Point size</source>
+        <translation>&amp;Bodová velikost</translation>
+    </message>
+</context>
+<context>
+    <name>HelpViewer</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/helpviewer.cpp" line="+492"/>
+        <source>Help</source>
+        <translation>Nápověda</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>OK</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <location line="-62"/>
+        <source>&lt;title&gt;Error 404...&lt;/title&gt;&lt;div align=&quot;center&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;The page could not be found&lt;/h1&gt;&lt;br&gt;&lt;h3&gt;&apos;%1&apos;&lt;/h3&gt;&lt;/div&gt;</source>
+        <translation>&lt;title&gt;Chyba 404 ...&lt;/title&gt;&lt;div align=&quot;center&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;Stranu se nepodařilo najít.&lt;/h1&gt;&lt;br&gt;&lt;h3&gt;&apos;%1&apos;&lt;/h3&gt;&lt;/div&gt;</translation>
+    </message>
+    <message>
+        <location line="+125"/>
+        <source>Copy &amp;Link Location</source>
+        <translation>&amp;Kopírovat adresu odkazu</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Open Link in New Tab	Ctrl+LMB</source>
+        <translation>Otevřít odkaz v nové kartě	Ctrl+LMB</translation>
+    </message>
+    <message>
+        <location line="-275"/>
+        <source>Open Link in New Tab</source>
+        <translation>Otevřít odkaz v nové kartě</translation>
+    </message>
+    <message>
+        <location line="+209"/>
+        <source>Unable to launch external application.
+</source>
+        <translation>Chyba při spouštění vnější aplikace.
+</translation>
+    </message>
+</context>
+<context>
+    <name>IndexWindow</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/indexwindow.cpp" line="+66"/>
+        <source>&amp;Look for:</source>
+        <translation>&amp;Hledat:</translation>
+    </message>
+    <message>
+        <location line="+68"/>
+        <source>Open Link</source>
+        <translation>Otevřít adresu odkazu</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Open Link in New Tab</source>
+        <translation>Otevřít odkaz v nové kartě</translation>
+    </message>
+</context>
+<context>
+    <name>InstallDialog</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
+        <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+76"/>
+        <source>Install Documentation</source>
+        <translation>Nainstalovat dokumentaci</translation>
+    </message>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/installdialog.cpp" line="+30"/>
+        <source>Downloading documentation info...</source>
+        <translation>Stahuje se informace o  dokumentaci...</translation>
+    </message>
+    <message>
+        <location line="+48"/>
+        <source>Download canceled.</source>
+        <translation>Stahování bylo zrušeno.</translation>
+    </message>
+    <message>
+        <location line="+26"/>
+        <location line="+78"/>
+        <location line="+27"/>
+        <source>Done.</source>
+        <translation>Hotovo.</translation>
+    </message>
+    <message>
+        <location line="-90"/>
+        <source>The file %1 already exists. Do you want to overwrite it?</source>
+        <translation>Soubor %1 již existuje. Chcete jej přepsat?</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Unable to save the file %1: %2.</source>
+        <translation>Soubor %1 nelze uložit: %2.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Downloading %1...</source>
+        <translation>Stahuje se %1...</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <location line="+42"/>
+        <location line="+38"/>
+        <source>Download failed: %1.</source>
+        <translation>Stažení se nezdařilo: %1.</translation>
+    </message>
+    <message>
+        <location line="-70"/>
+        <source>Documentation info file is corrupt!</source>
+        <translation>Soubor s informací o dokumentaci je poškozen!</translation>
+    </message>
+    <message>
+        <location line="+37"/>
+        <source>Download failed: Downloaded file is corrupted.</source>
+        <translation>Stažení se nezdařilo: Stažený soubor je pravděpodobně poškozen.</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Installing documentation %1...</source>
+        <translation>Instaluje dokumentace %1...</translation>
+    </message>
+    <message>
+        <location line="+22"/>
+        <source>Error while installing documentation:
+%1</source>
+        <translation>Chyba při instalaci dokumentace:
+%1</translation>
+    </message>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/installdialog.ui"/>
+        <source>Available Documentation:</source>
+        <translation>Dostupná dokumentace:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Install</source>
+        <translation>Instalovat</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Installation Path:</source>
+        <translation>Cesta pro instalaci:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+110"/>
+        <location line="+391"/>
+        <source>Index</source>
+        <translation>Rejstřík</translation>
+    </message>
+    <message>
+        <location line="-385"/>
+        <location line="+383"/>
+        <source>Contents</source>
+        <translation>Obsah</translation>
+    </message>
+    <message>
+        <location line="-378"/>
+        <location line="+382"/>
+        <source>Bookmarks</source>
+        <translation>Záložky</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Search</source>
+        <translation>Hledat</translation>
+    </message>
+    <message>
+        <location line="-372"/>
+        <location line="+215"/>
+        <location line="+512"/>
+        <source>Qt Assistant</source>
+        <translation>Qt Assistant</translation>
+    </message>
+    <message>
+        <location line="-544"/>
+        <location line="+5"/>
+        <source>Unfiltered</source>
+        <translation>Bez filtru</translation>
+    </message>
+    <message>
+        <location line="+107"/>
+        <source>Page Set&amp;up...</source>
+        <translation>&amp;Nastavení strany...</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Print Preview...</source>
+        <translation>Náhled tisku...</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&amp;Print...</source>
+        <translation>&amp;Tisk...</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>New &amp;Tab</source>
+        <translation>Nová &amp;karta</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&amp;Close Tab</source>
+        <translation>&amp;Zavřít kartu</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>&amp;Quit</source>
+        <translation>&amp;Ukončit</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>&amp;Copy selected Text</source>
+        <translation>&amp;Kopírovat vybraný text</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>&amp;Find in Text...</source>
+        <translation>&amp;Najít v textu...</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Find &amp;Next</source>
+        <translation>Hledat &amp;dál</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Find &amp;Previous</source>
+        <translation>Najít &amp;předchozí</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Preferences...</source>
+        <translation>Nastavení...</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Zoom &amp;in</source>
+        <translation>&amp;Zvětšit</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Zoom &amp;out</source>
+        <translation>&amp;Zmenšit</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Normal &amp;Size</source>
+        <translation>Obvyklá &amp;velikost</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Ctrl+0</source>
+        <translation>Ctrl+0</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>ALT+C</source>
+        <translation>ALT+C</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ALT+I</source>
+        <translation>ALT+I</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>ALT+S</source>
+        <translation>ALT+S</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&amp;Home</source>
+        <translation>&amp;Začáteční strana</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>&amp;Back</source>
+        <translation>&amp;Zpět</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>&amp;Forward</source>
+        <translation>&amp;Dopředu</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Sync with Table of Contents</source>
+        <translation>Seřídit stranu s kartou obsahu</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Next Page</source>
+        <translation>Další strana</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Ctrl+Alt+Right</source>
+        <translation>Ctrl+Alt+Right</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Previous Page</source>
+        <translation>Předchozí strana</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Ctrl+Alt+Left</source>
+        <translation>Ctrl+Alt+Left</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Add Bookmark...</source>
+        <translation>Přidat záložku...</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>About...</source>
+        <translation>O...</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Navigation Toolbar</source>
+        <translation>Navigační pruh</translation>
+    </message>
+    <message>
+        <location line="+76"/>
+        <source>Toolbars</source>
+        <translation>Nástrojové pruhy</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Filter Toolbar</source>
+        <translation>Filtrovací pruh</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Filtered by:</source>
+        <translation>Filtr:</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Address Toolbar</source>
+        <translation>Adresní pruh</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Address:</source>
+        <translation>Adresa:</translation>
+    </message>
+    <message>
+        <location line="+114"/>
+        <source>Could not find the associated content item.</source>
+        <translation>Nepodařilo se najít příslušnou položku obsahu.</translation>
+    </message>
+    <message>
+        <location line="+71"/>
+        <source>About %1</source>
+        <translation>O %1</translation>
+    </message>
+    <message>
+        <location line="+114"/>
+        <source>Updating search index</source>
+        <translation>Sestavuje se rejstřík hledání</translation>
+    </message>
+    <message>
+        <location line="-638"/>
+        <source>Looking for Qt Documentation...</source>
+        <translation>Hledá se dokumentace ke Qt...</translation>
+    </message>
+    <message>
+        <location line="+241"/>
+        <source>&amp;Window</source>
+        <translation>&amp;Okno</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Minimize</source>
+        <translation>Zmenšit</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Ctrl+M</source>
+        <translation>Ctrl+M</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>Zoom</source>
+        <translation>Zvětšení</translation>
+    </message>
+    <message>
+        <location line="-159"/>
+        <source>&amp;File</source>
+        <translation>&amp;Soubor</translation>
+    </message>
+    <message>
+        <location line="+25"/>
+        <source>&amp;Edit</source>
+        <translation>&amp;Úpravy</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <source>&amp;View</source>
+        <translation>&amp;Pohled</translation>
+    </message>
+    <message>
+        <location line="+30"/>
+        <source>&amp;Go</source>
+        <translation>&amp;Jít na</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>ALT+Home</source>
+        <translation>ALT+Home</translation>
+    </message>
+    <message>
+        <location line="+29"/>
+        <source>&amp;Bookmarks</source>
+        <translation>&amp;Záložky</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>&amp;Help</source>
+        <translation>&amp;Nápověda</translation>
+    </message>
+    <message>
+        <location line="-40"/>
+        <source>ALT+O</source>
+        <translation>ALT+O</translation>
+    </message>
+    <message>
+        <location line="+38"/>
+        <source>CTRL+D</source>
+        <translation>CTRL+D</translation>
+    </message>
+</context>
+<context>
+    <name>PreferencesDialog</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/preferencesdialog.cpp" line="+259"/>
+        <location line="+43"/>
+        <source>Add Documentation</source>
+        <translation>Přidat dokumentaci</translation>
+    </message>
+    <message>
+        <location line="-43"/>
+        <source>Qt Compressed Help Files (*.qch)</source>
+        <translation>Stlačené soubory s nápovědoun (*.qch)</translation>
+    </message>
+    <message>
+        <location line="+37"/>
+        <source>The specified file is not a valid Qt Help File!</source>
+        <translation>Zadaný soubor není platným souborem nápovědy ke Qt.</translation>
+    </message>
+    <message>
+        <location line="-8"/>
+        <source>The namespace %1 is already registered!</source>
+        <translation>Jmenný prostor %1 je již zaznamenám!</translation>
+    </message>
+    <message>
+        <location line="+31"/>
+        <source>Remove Documentation</source>
+        <translation>Odstranit dokumentaci</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Some documents currently opened in Assistant reference the documentation you are attempting to remove. Removing the documentation will close those documents.</source>
+        <translation>Některé v současnosti otevřené dokumenty pocházejí z dokumentace, kterou se právě pokoušíte odstranit. Při odstraňování budou zavřeny.</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>OK</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <location line="+88"/>
+        <source>Use custom settings</source>
+        <translation>Použít nastavení stanovená uživatelem</translation>
+    </message>
+</context>
+<context>
+    <name>PreferencesDialogClass</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/preferencesdialog.ui"/>
+        <source>Preferences</source>
+        <translation>Nastavení</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Fonts</source>
+        <translation>Písma</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Font settings:</source>
+        <translation>Nastavení písem:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Browser</source>
+        <translation>Prohlížeč</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Application</source>
+        <translation>Program</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Filters</source>
+        <translation>Filtr</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Filter:</source>
+        <translation>Filtr:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Attributes:</source>
+        <translation>Vlastnosti:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>1</source>
+        <translation>1</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Add</source>
+        <translation>Přidat</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Remove</source>
+        <translation>Odstranit</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Documentation</source>
+        <translation>Dokumentace</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Registered Documentation:</source>
+        <translation>Zaznamenaná dokumentace:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Add...</source>
+        <translation>Přidat...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Options</source>
+        <translation>Volby</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Current Page</source>
+        <translation>Nynější strana</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Restore to default</source>
+        <translation>Obnovit výchozí nastavení</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Homepage</source>
+        <translation>Začáteční stránka</translation>
+    </message>
+    <message>
+        <location/>
+        <source>On help start:</source>
+        <translation>Na začátek nápovědy:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Show my home page</source>
+        <translation>Ukázat moji domovskou stránku</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Show a blank page</source>
+        <translation>Ukázat prázdnou stránku</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Show my tabs from last session</source>
+        <translation>Ukázat mé karty z posledního sezení</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Blank Page</source>
+        <translation>Prázdná strana</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/cmdlineparser.cpp" line="+112"/>
+        <source>The specified collection file does not exist!</source>
+        <translation>Zadaný sbírkový soubor nelze najít!</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Missing collection file!</source>
+        <translation>Chybějící sbírkový soubor!</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Invalid URL!</source>
+        <translation>Neplatné URL!</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Missing URL!</source>
+        <translation>Chybějící URL!</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <location line="+19"/>
+        <location line="+19"/>
+        <source>Unknown widget: %1</source>
+        <translation>Neznámý prvek: %1</translation>
+    </message>
+    <message>
+        <location line="-34"/>
+        <location line="+19"/>
+        <location line="+19"/>
+        <source>Missing widget!</source>
+        <translation>Chybějící prvek!</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <location line="+12"/>
+        <source>The specified Qt help file does not exist!</source>
+        <translation>Zadaný soubor s nápovědou ke Qt nelze najít!</translation>
+    </message>
+    <message>
+        <location line="-7"/>
+        <location line="+12"/>
+        <source>Missing help file!</source>
+        <translation>Chybějící soubor s nápovědou!</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Missing filter argument!</source>
+        <translation>Chybějící argument pro filtr!</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>Unknown option: %1</source>
+        <translation>Neznámá volba: %1</translation>
+    </message>
+    <message>
+        <location line="+30"/>
+        <location line="+2"/>
+        <source>Qt Assistant</source>
+        <translation>Qt Assistant</translation>
+    </message>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/main.cpp" line="+217"/>
+        <source>Could not register documentation file
+%1
+
+Reason:
+%2</source>
+        <translation>Soubor s dokumentací %1 nelze zaznamenat
+
+Důvod:
+%2</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Documentation successfully registered.</source>
+        <translation>Dokumentace byla úspěšně zaznamenána.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Could not unregister documentation file
+%1
+
+Reason:
+%2</source>
+        <translation>Zaznamenání souboru s dokumentací %1 nelze zrušit
+
+Grund:
+%2</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>Documentation successfully unregistered.</source>
+        <translation>Dokumentace byla úspěšně odstraněna.</translation>
+    </message>
+    <message>
+        <location line="+40"/>
+        <source>Cannot load sqlite database driver!</source>
+        <translation>Databázový ovladač pro SQLite nelze nahrát!</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>The specified collection file could not be read!</source>
+        <translation>Zadaný sbírkový soubor nelze přečíst!</translation>
+    </message>
+</context>
+<context>
+    <name>RemoteControl</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/remotecontrol.cpp" line="+163"/>
+        <source>Debugging Remote Control</source>
+        <translation>Ladí se dálkové ovládání</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Received Command: %1 %2</source>
+        <translation>Přijatý příkaz: %1 : %2</translation>
+    </message>
+</context>
+<context>
+    <name>SearchWidget</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/searchwidget.cpp" line="+195"/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Kopírovat</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Copy &amp;Link Location</source>
+        <translation>&amp;Kopírovat adresu odkazu</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Open Link in New Tab</source>
+        <translation>Otevřít odkaz v nové kartě</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Select All</source>
+        <translation>Vybrat vše</translation>
+    </message>
+</context>
+<context>
+    <name>TopicChooser</name>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/topicchooser.cpp" line="+54"/>
+        <source>Choose a topic for &lt;b&gt;%1&lt;/b&gt;:</source>
+        <translation>Vyberte námět pro &lt;b&gt;%1&lt;/b&gt;:</translation>
+    </message>
+    <message>
+        <location filename="../tools/assistant/tools/assistant/topicchooser.ui"/>
+        <source>Choose Topic</source>
+        <translation>Vybrat námět</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Topics</source>
+        <translation>&amp;Náměty</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Display</source>
+        <translation>&amp;Zobrazit</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Close</source>
+        <translation>&amp;Zavřít</translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/designer_cs.ts	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,7051 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs_CZ">
+<context>
+    <name>AbstractFindWidget</name>
+    <message>
+        <location filename="../tools/shared/findwidget/abstractfindwidget.cpp" line="+127"/>
+        <source>&amp;Previous</source>
+        <translation>&amp;Předchozí</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>&amp;Next</source>
+        <translation>&amp;Další</translation>
+    </message>
+    <message>
+        <location line="+24"/>
+        <source>&amp;Case sensitive</source>
+        <translation>&amp;Rozlišující velká a malá písmena</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Whole &amp;words</source>
+        <translation>Celá &amp;slova</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>&lt;img src=&quot;:/trolltech/shared/images/wrap.png&quot;&gt;&amp;nbsp;Search wrapped</source>
+        <translation>&lt;img src=&quot;:/trolltech/shared/images/wrap.png&quot;&gt;&amp;nbsp;Hledání dosáhlo konce</translation>
+    </message>
+</context>
+<context>
+    <name>AddLinkDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/addlinkdialog.ui"/>
+        <source>Insert Link</source>
+        <translation>Vložit odkaz</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Title:</source>
+        <translation>Název:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>URL:</source>
+        <translation>URL:</translation>
+    </message>
+</context>
+<context>
+    <name>AppFontDialog</name>
+    <message>
+        <location filename="../tools/designer/src/designer/appfontdialog.cpp" line="+418"/>
+        <source>Additional Fonts</source>
+        <translation>Dodatečná písma</translation>
+    </message>
+</context>
+<context>
+    <name>AppFontManager</name>
+    <message>
+        <location line="-267"/>
+        <source>&apos;%1&apos; is not a file.</source>
+        <translation>&apos;%1&apos; není soubor.</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>The font file &apos;%1&apos; does not have read permissions.</source>
+        <translation>Soubor s písmem &apos;%1&apos; nemá oprávnění ke čtení.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>The font file &apos;%1&apos; is already loaded.</source>
+        <translation>Soubor s písmem &apos;%1&apos; je již nahrán.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>The font file &apos;%1&apos; could not be loaded.</source>
+        <translation>Soubor s písmem &apos;%1&apos; se nepodařilo nahrát.</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>&apos;%1&apos; is not a valid font id.</source>
+        <translation>&apos;%1&apos; není platným písmovým ID.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>There is no loaded font matching the id &apos;%1&apos;.</source>
+        <translation>Není nahráno žádné písmo s ID &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>The font &apos;%1&apos; (%2) could not be unloaded.</source>
+        <translation>Písmo &apos;%1&apos; (%2) se nepodařilo uvolnit z paměti.</translation>
+    </message>
+</context>
+<context>
+    <name>AppFontWidget</name>
+    <message>
+        <location line="+26"/>
+        <source>Fonts</source>
+        <translation>Písma</translation>
+    </message>
+    <message>
+        <location line="+58"/>
+        <source>Add font files</source>
+        <translation>Přidat soubory s písmy</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Remove current font file</source>
+        <translation>Odstranit současný soubor s písmem</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Remove all font files</source>
+        <translation>Odstranit všechny soubory s písmy</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>Add Font Files</source>
+        <translation>Přidat soubory s písmy</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Font files (*.ttf)</source>
+        <translation>Soubory s písmy (*.ttf)</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Error Adding Fonts</source>
+        <translation>Chyba při přidávání písem</translation>
+    </message>
+    <message>
+        <location line="+24"/>
+        <source>Error Removing Fonts</source>
+        <translation>Chyba při odstraňování písem</translation>
+    </message>
+    <message>
+        <location line="+22"/>
+        <source>Remove Fonts</source>
+        <translation>Odstranit písma</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Would you like to remove all fonts?</source>
+        <translation>Chcete odstranit všechna písma?</translation>
+    </message>
+</context>
+<context>
+    <name>AppearanceOptionsWidget</name>
+    <message>
+        <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.ui"/>
+        <source>Form</source>
+        <translation>Formulář</translation>
+    </message>
+    <message>
+        <location/>
+        <source>User Interface Mode</source>
+        <translation>Okenní režim</translation>
+    </message>
+</context>
+<context>
+    <name>AssistantClient</name>
+    <message>
+        <location filename="../tools/designer/src/designer/assistantclient.cpp" line="+100"/>
+        <source>Unable to send request: Assistant is not responding.</source>
+        <translation>Chyba při posílání požadavku: Program Assistant neodpovídá.</translation>
+    </message>
+    <message>
+        <location line="+39"/>
+        <source>The binary &apos;%1&apos; does not exist.</source>
+        <translation>Proveditelný soubor &apos;%1&apos; neexistuje.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Unable to launch assistant (%1).</source>
+        <translation>Program Assistant nelze spustit (%1).</translation>
+    </message>
+</context>
+<context>
+    <name>BrushPropertyManager</name>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+149"/>
+        <source>Style</source>
+        <translation>Styl</translation>
+    </message>
+    <message>
+        <location line="-97"/>
+        <source>No brush</source>
+        <translation>Žádný vzor</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Solid</source>
+        <translation>Plný</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Dense 1</source>
+        <translation>Hustota 1</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Dense 2</source>
+        <translation>Hustota 2</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Dense 3</source>
+        <translation>Hustota 3</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Dense 4</source>
+        <translation>Hustota 4</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Dense 5</source>
+        <translation>Hustota 5</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Dense 6</source>
+        <translation>Hustota 6</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Dense 7</source>
+        <translation>Hustota 7</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Horizontal</source>
+        <translation>Vodorovný</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Vertical</source>
+        <translation>Svislý</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Cross</source>
+        <translation>Křížící se čáry</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Backward diagonal</source>
+        <translation>Zpětné úhlopříčky</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Forward diagonal</source>
+        <translation>Vpřed směřující úhlopříčky</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Crossing diagonal</source>
+        <translation>Křížící se úhlopříčky</translation>
+    </message>
+    <message>
+        <location line="+94"/>
+        <source>Color</source>
+        <translation>Barva</translation>
+    </message>
+    <message>
+        <location line="+105"/>
+        <source>[%1, %2]</source>
+        <translation>[%1, %2]</translation>
+    </message>
+</context>
+<context>
+    <name>Command</name>
+    <message>
+        <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="+208"/>
+        <location line="+258"/>
+        <source>Change signal</source>
+        <translation>Změnit signál</translation>
+    </message>
+    <message>
+        <location line="-256"/>
+        <location line="+268"/>
+        <source>Change slot</source>
+        <translation>Změnit zdířku</translation>
+    </message>
+    <message>
+        <location line="-220"/>
+        <source>Change signal-slot connection</source>
+        <translation>Změnit spojení signál-zdířka</translation>
+    </message>
+    <message>
+        <location line="+234"/>
+        <source>Change sender</source>
+        <translation>Změnit vysílač</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Change receiver</source>
+        <translation>Změnit přijímač</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+143"/>
+        <source>Add connection</source>
+        <translation>Přidat spojení</translation>
+    </message>
+    <message>
+        <location line="+54"/>
+        <source>Adjust connection</source>
+        <translation>Nastavit spojení</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>Delete connections</source>
+        <translation>Smazat spojení</translation>
+    </message>
+    <message>
+        <location line="+58"/>
+        <source>Change source</source>
+        <translation>Změnit zdroj</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Change target</source>
+        <translation>Změnit koncový bod</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="+149"/>
+        <source>Insert &apos;%1&apos;</source>
+        <translation>Vložit &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+167"/>
+        <source>Raise &apos;%1&apos;</source>
+        <translation>&apos;%1&apos; dopředu</translation>
+    </message>
+    <message>
+        <location line="+33"/>
+        <source>Lower &apos;%1&apos;</source>
+        <translation>&apos;%1&apos; dozadu</translation>
+    </message>
+    <message>
+        <location line="+113"/>
+        <source>Delete &apos;%1&apos;</source>
+        <translation>Smazat &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+119"/>
+        <source>Reparent &apos;%1&apos;</source>
+        <translation>Přiřadit jiný prvek &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+53"/>
+        <source>Promote to custom widget</source>
+        <translation>Vytvořit zástupný symbol pro uživatelsky stanovený prvek</translation>
+    </message>
+    <message>
+        <location line="+42"/>
+        <source>Demote from custom widget</source>
+        <translation>Odstranit zástupný symbol pro uživatelsky stanovenou třídu</translation>
+    </message>
+    <message>
+        <location line="+79"/>
+        <source>Lay out using grid</source>
+        <translation>Rozmístit předměty tabulkově</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Lay out vertically</source>
+        <translation>Rozmístit předměty svisle</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Lay out horizontally</source>
+        <translation>Rozmístit předměty vodorovně</translation>
+    </message>
+    <message>
+        <location line="+41"/>
+        <source>Break layout</source>
+        <translation>Zrušit rozvržení</translation>
+    </message>
+    <message>
+        <location line="+240"/>
+        <location line="+235"/>
+        <location line="+78"/>
+        <source>Move Page</source>
+        <translation>Posunout stranu</translation>
+    </message>
+    <message>
+        <location line="-279"/>
+        <location line="+123"/>
+        <location line="+188"/>
+        <location line="+666"/>
+        <source>Delete Page</source>
+        <translation>Smazat stranu</translation>
+    </message>
+    <message>
+        <location line="-939"/>
+        <location line="+123"/>
+        <source>Page</source>
+        <translation>Strana</translation>
+    </message>
+    <message>
+        <location line="+860"/>
+        <source>page</source>
+        <translation>Strana</translation>
+    </message>
+    <message>
+        <location line="-978"/>
+        <location line="+123"/>
+        <location line="+186"/>
+        <location line="+667"/>
+        <source>Insert Page</source>
+        <translation>Vložit stranu</translation>
+    </message>
+    <message>
+        <location line="-647"/>
+        <source>Change Tab order</source>
+        <translation>Změnit pořadí karet</translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <source>Create Menu Bar</source>
+        <translation>Vytvořit nabídkový pruh</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>Delete Menu Bar</source>
+        <translation>Smazat nabídkový pruh</translation>
+    </message>
+    <message>
+        <location line="+47"/>
+        <source>Create Status Bar</source>
+        <translation>Vytvořit stavový pruh</translation>
+    </message>
+    <message>
+        <location line="+42"/>
+        <source>Delete Status Bar</source>
+        <translation>Smazat stavový pruh</translation>
+    </message>
+    <message>
+        <location line="+45"/>
+        <source>Add Tool Bar</source>
+        <translation>Přidat nástrojový pruh</translation>
+    </message>
+    <message>
+        <location line="+59"/>
+        <source>Add Dock Window</source>
+        <translation>Přidat ukotvené okno</translation>
+    </message>
+    <message>
+        <location line="+53"/>
+        <source>Adjust Size of &apos;%1&apos;</source>
+        <translation>Upravit velikost &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+57"/>
+        <source>Change Form Layout Item Geometry</source>
+        <translation>Změnit uspořádání prvku rozvržení formuláře</translation>
+    </message>
+    <message>
+        <location line="+95"/>
+        <source>Change Layout Item Geometry</source>
+        <translation>Změnit uspořádání prvku rozvržení</translation>
+    </message>
+    <message>
+        <location line="+576"/>
+        <source>Change Table Contents</source>
+        <translation>Změnit obsah tabulky</translation>
+    </message>
+    <message>
+        <location line="+107"/>
+        <source>Change Tree Contents</source>
+        <translation>Změnit obsah stromu</translation>
+    </message>
+    <message>
+        <location line="+74"/>
+        <location line="+146"/>
+        <source>Add action</source>
+        <translation>Přidat činnost</translation>
+    </message>
+    <message>
+        <location line="-120"/>
+        <location line="+126"/>
+        <source>Remove action</source>
+        <translation>Odstranit činnost</translation>
+    </message>
+    <message>
+        <location line="+53"/>
+        <source>Add menu</source>
+        <translation>Přidat nabídku</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Remove menu</source>
+        <translation>Odstranit nabídku</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Create submenu</source>
+        <translation>Vytvořit vedlejší nabídku</translation>
+    </message>
+    <message>
+        <location line="+31"/>
+        <source>Delete Tool Bar</source>
+        <translation>Smazat nástrojový pruh</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="+1195"/>
+        <source>Set action text</source>
+        <translation>Nastavit text k činnosti</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Insert action</source>
+        <translation>Vložit činnost</translation>
+    </message>
+    <message>
+        <location line="+89"/>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="+907"/>
+        <source>Move action</source>
+        <translation>Posunout činnost</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="-424"/>
+        <source>Change Title</source>
+        <translation>Změnit název</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Insert Menu</source>
+        <translation>Vložit nabídku</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+202"/>
+        <source>Change signals/slots</source>
+        <translation>Změnit signály/zdířky</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_command.cpp" line="-867"/>
+        <source>Delete Subwindow</source>
+        <translation>Smazat podokno</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>Insert Subwindow</source>
+        <translation>Vložit podokno</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>subwindow</source>
+        <translation>Podokno</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Subwindow</source>
+        <translation>Podokno</translation>
+    </message>
+    <message>
+        <location line="-1821"/>
+        <source>Change Z-order of &apos;%1&apos;</source>
+        <translation>Změnit Z-pořadí &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+625"/>
+        <source>Simplify Grid Layout</source>
+        <translation>Zjednodušit tabulkové rozvržení</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+221"/>
+        <source>Create button group</source>
+        <translation>Seskupit tlačítka</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <source>Break button group</source>
+        <translation>Zrušit seskupení tlačítek</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Break button group &apos;%1&apos;</source>
+        <translation>Zrušit seskupení &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Add buttons to group</source>
+        <translation>Přidat tlačítka do seskupení</translation>
+    </message>
+    <message>
+        <location line="+22"/>
+        <source>Remove buttons from group</source>
+        <translation>Odstranit tlačítka ze seskupení</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="+349"/>
+        <source>Morph %1/&apos;%2&apos; into %3</source>
+        <extracomment>MorphWidgetCommand description</extracomment>
+        <translation>Přeměnit %1/&apos;%2&apos; na %3</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_command2.cpp" line="+154"/>
+        <source>Change layout of &apos;%1&apos; from %2 to %3</source>
+        <translation>Změnit rozvržení &apos;%1&apos; z %2 na %3</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="-14"/>
+        <location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="+458"/>
+        <source>Add &apos;%1&apos; to &apos;%2&apos;</source>
+        <extracomment>Command description for adding buttons to a QButtonGroup</extracomment>
+        <translation>Přidat &apos;%1&apos; k &apos;%2&apos;</translation>
+    </message>
+    <message>
+        <location line="+29"/>
+        <source>Remove &apos;%1&apos; from &apos;%2&apos;</source>
+        <extracomment>Command description for removing buttons from a QButtonGroup</extracomment>
+        <translation>Odstranit &apos;%1&apos; z &apos;%2&apos;</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/scriptcommand.cpp" line="+55"/>
+        <source>Change script</source>
+        <translation>Změnit skript</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_propertycommand.cpp" line="+1213"/>
+        <source>Changed &apos;%1&apos; of &apos;%2&apos;</source>
+        <translation>Změněno &apos;%1&apos; z &apos;%2&apos;</translation>
+    </message>
+    <message numerus="yes">
+        <location line="+3"/>
+        <source>Changed &apos;%1&apos; of %n objects</source>
+        <translatorcomment>Singular will never be shown</translatorcomment>
+        <translation>
+            <numerusform>Změněna vlastnost &apos;%1&apos; jednoho předmětu</numerusform>
+            <numerusform>Změněna vlastnost &apos;%1&apos; %n předmětů</numerusform>
+            <numerusform>Změněna vlastnost &apos;%1&apos; %n předmětů</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location line="+76"/>
+        <source>Reset &apos;%1&apos; of &apos;%2&apos;</source>
+        <translation>Znovu nastavit &apos;%1&apos; &apos;%2&apos;</translation>
+    </message>
+    <message numerus="yes">
+        <location line="+3"/>
+        <source>Reset &apos;%1&apos; of %n objects</source>
+        <translatorcomment>Singular will never be shown</translatorcomment>
+        <translation>
+            <numerusform>Znovu nastavit &apos;%1&apos; jednoho předmětu</numerusform>
+            <numerusform>Znovu nastavit &apos;%1&apos; %n předmětů</numerusform>
+            <numerusform>Znovu nastavit &apos;%1&apos; %n předmětů</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location line="+89"/>
+        <source>Add dynamic property &apos;%1&apos; to &apos;%2&apos;</source>
+        <translation>Přidat dynamickou vlastnost &apos;%1&apos; do &apos;%2&apos;</translation>
+    </message>
+    <message numerus="yes">
+        <location line="+3"/>
+        <source>Add dynamic property &apos;%1&apos; to %n objects</source>
+        <translatorcomment>Singular will never be shown</translatorcomment>
+        <translation>
+            <numerusform>Přidat dynamickou vlastnost &apos;%1&apos; do jednoho předmětu</numerusform>
+            <numerusform>Přidat dynamickou vlastnost &apos;%1&apos; do %n předmětů</numerusform>
+            <numerusform>Přidat dynamickou vlastnost &apos;%1&apos; do %n předmětů</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location line="+86"/>
+        <source>Remove dynamic property &apos;%1&apos; from &apos;%2&apos;</source>
+        <translation>Odstranit dynamickou vlastnost &apos;%1&apos; z &apos;%2&apos;</translation>
+    </message>
+    <message numerus="yes">
+        <location line="+3"/>
+        <source>Remove dynamic property &apos;%1&apos; from %n objects</source>
+        <translation>
+            <numerusform>Odstranit dynamickou vlastnost &apos;%1&apos; z jednoho předmětu</numerusform>
+            <numerusform>Odstranit dynamickou vlastnost &apos;%1&apos; z %n předmětů</numerusform>
+            <numerusform>Odstranit dynamickou vlastnost &apos;%1&apos; z %n předmětů</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>ConnectDialog</name>
+    <message>
+        <location filename="../tools/designer/src/components/signalsloteditor/connectdialog.ui"/>
+        <source>Configure Connection</source>
+        <translation>Upravit spojení</translation>
+    </message>
+    <message>
+        <location/>
+        <source>GroupBox</source>
+        <translation>GroupBox</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Edit...</source>
+        <translation>Upravit...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Show signals and slots inherited from QWidget</source>
+        <translation>Ukázat signály a zdířky zděděné z QWidget</translation>
+    </message>
+</context>
+<context>
+    <name>ConnectionDelegate</name>
+    <message>
+        <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="+643"/>
+        <source>&lt;object&gt;</source>
+        <translation>&lt;Předmět&gt;</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>&lt;signal&gt;</source>
+        <translation>&lt;Signál&gt;</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>&lt;slot&gt;</source>
+        <translation>&lt;Zdířka&gt;</translation>
+    </message>
+</context>
+<context>
+    <name>DPI_Chooser</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="+69"/>
+        <source>Standard (96 x 96)</source>
+        <extracomment>Embedded device standard screen resolution</extracomment>
+        <translation>Obvyklé rozlišení (96 x 96)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Greenphone (179 x 185)</source>
+        <extracomment>Embedded device screen resolution</extracomment>
+        <translation>Greenphone (179 x 185)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>High (192 x 192)</source>
+        <extracomment>Embedded device high definition screen resolution</extracomment>
+        <translation>Vysoké rozlišení (192 x 192)</translation>
+    </message>
+</context>
+<context>
+    <name>Designer</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+449"/>
+        <source>Qt Designer</source>
+        <translation>Qt Designer</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="+682"/>
+        <source>Unable to launch %1.</source>
+        <translation>%1 se nepodařilo spustit.</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>%1 timed out.</source>
+        <translation>Překročení času při provedení %1.</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+10"/>
+        <source>This file contains top level spacers.&lt;br&gt;They have &lt;b&gt;NOT&lt;/b&gt; been saved into the form.</source>
+        <translation>Formulář obsahuje volně stojící prvky rozložení, které &lt;b&gt;NEBYLY&lt;/b&gt; uloženy do formuláře.</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Perhaps you forgot to create a layout?</source>
+        <translation>Přidal jste rozvržení?</translation>
+    </message>
+    <message>
+        <location line="+205"/>
+        <source>This file cannot be read because it was created using %1.</source>
+        <translation>Soubor nelze přečíst, protože byl vytvořen %1.</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>This file was created using Designer from Qt-%1 and cannot be read.</source>
+        <translation>Soubor nelze přečíst, protože byl vytvořen programem Designer ve verzi %1.</translation>
+    </message>
+    <message>
+        <location line="+82"/>
+        <source>This file cannot be read because the extra info extension failed to load.</source>
+        <translation>Soubor nelze přečíst (Chyba při nahrávání dat ExtraInfoExtension).</translation>
+    </message>
+    <message>
+        <location line="-52"/>
+        <source>The converted file could not be read.</source>
+        <translation>Převedený soubor se nepodařilo přečíst.</translation>
+    </message>
+    <message>
+        <location line="-76"/>
+        <source>Invalid UI file: The root element &lt;ui&gt; is missing.</source>
+        <translation>Chyba při čtení souboru s rozhraním: Kořenový prvek &lt;ui&gt; chybí.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>An error has occurred while reading the UI file at line %1, column %2: %3</source>
+        <translation>Chyba při čtení souboru s rozhraním, řádek %1, sloupec %2: %3</translation>
+    </message>
+    <message>
+        <location line="+74"/>
+        <source>This file was created using Designer from Qt-%1 and will be converted to a new form by Qt Designer.</source>
+        <translation>Soubor byl vytvořen programem Designer ve verzi %1 a bude převeden na nový formulář pomocí programu Qt Designer.</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>The old form has not been touched, but you will have to save the form under a new name.</source>
+        <translation>Starý formulář zůstává nezměněn. Nový formulář musí být uložen pod novým názvem.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>This file was created using Designer from Qt-%1 and could not be read:
+%2</source>
+        <translation>Čtení Designerem %1 vytvořeného souboru se nezdařilo:
+%2</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Please run it through &lt;b&gt;uic3&amp;nbsp;-convert&lt;/b&gt; to convert it to Qt-4&apos;s ui format.</source>
+        <translation>Přeměňte to, prosím, příkazem &lt;b&gt;uic3&amp;nbsp;-convert&lt;/b&gt; na formát rozhraní Qt 4.</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qsimpleresource.cpp" line="+339"/>
+        <source>Custom Widgets</source>
+        <translation>Uživatelsky stanovené prvky</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>Promoted Widgets</source>
+        <translation>Zástupný symbol pro uživatelsky stanovené prvky</translation>
+    </message>
+</context>
+<context>
+    <name>DesignerMetaEnum</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_utils.cpp" line="-513"/>
+        <source>%1 is not a valid enumeration value of &apos;%2&apos;.</source>
+        <translation>%1 není platnou výčtovou hodnotou &apos;%2&apos;.</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>&apos;%1&apos; could not be converted to an enumeration value of type &apos;%2&apos;.</source>
+        <translation>&apos;%1&apos; se nepodařilo převést na výčtovou hodnotu typu &apos;%2&apos;.</translation>
+    </message>
+</context>
+<context>
+    <name>DesignerMetaFlags</name>
+    <message>
+        <location line="+78"/>
+        <source>&apos;%1&apos; could not be converted to a flag value of type &apos;%2&apos;.</source>
+        <translation>&apos;%1&apos; se nepodařilo převést na příznakovou hodnotu typu &apos;%2&apos;.</translation>
+    </message>
+</context>
+<context>
+    <name>DeviceProfile</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/deviceprofile.cpp" line="+397"/>
+        <source>&apos;%1&apos; is not a number.</source>
+        <extracomment>Reading a number for an embedded device profile</extracomment>
+        <translation>&apos;%1&apos; není platným číslem.</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>An invalid tag &lt;%1&gt; was encountered.</source>
+        <translation> Byl zjištěn neplatný prvek&apos;%1&apos;.</translation>
+    </message>
+</context>
+<context>
+    <name>DeviceProfileDialog</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.ui"/>
+        <source>&amp;Family</source>
+        <translation>&amp;Písmová rodina</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Point Size</source>
+        <translation>&amp;Bodová velikost</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Style</source>
+        <translation>Styl</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Device DPI</source>
+        <translation>Rozlišení obrazovky</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Name</source>
+        <translation>Název</translation>
+    </message>
+</context>
+<context>
+    <name>DeviceSkin</name>
+    <message>
+        <location filename="../tools/shared/deviceskin/deviceskin.cpp" line="+79"/>
+        <source>The image file &apos;%1&apos; could not be loaded.</source>
+        <translation>Soubor s obrázkem &apos;%1&apos; se nepodařilo nahrát.</translation>
+    </message>
+    <message>
+        <location line="+64"/>
+        <source>The skin directory &apos;%1&apos; does not contain a configuration file.</source>
+        <translation>Adresář se vzhledem &apos;%1&apos; neobsahuje žádný soubor s nastavením.</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>The skin configuration file &apos;%1&apos; could not be opened.</source>
+        <translation>Soubor s nastavením vzhledu &apos;%1&apos; se nepodařilo otevřít.</translation>
+    </message>
+    <message>
+        <location line="+76"/>
+        <source>Syntax error: %1</source>
+        <translation>Chyba ve skladbě: %1</translation>
+    </message>
+    <message>
+        <location line="+54"/>
+        <source>The skin cursor image file &apos;%1&apos; does not exist.</source>
+        <translation>Soubor s obrázkem pro vzhled ukazovátka &apos;%1&apos; neexistuje.</translation>
+    </message>
+    <message>
+        <location line="+25"/>
+        <source>Syntax error in area definition: %1</source>
+        <translation>Vymezení oblasti obsahuje chybu ve skladbě: %1</translation>
+    </message>
+    <message>
+        <location line="+38"/>
+        <source>Mismatch in number of areas, expected %1, got %2.</source>
+        <translation>Zadaný počet oblastí (%1) neodpovídá; byly nalezeny %2 oblasti.</translation>
+    </message>
+    <message>
+        <location line="-187"/>
+        <source>The skin configuration file &apos;%1&apos; could not be read: %2</source>
+        <translation>Soubor s nastavením vzhledu &apos;%1&apos; se nepodařilo přečíst: %2</translation>
+    </message>
+    <message>
+        <location line="+91"/>
+        <source>The skin &quot;up&quot; image file &apos;%1&apos; does not exist.</source>
+        <translation>Soubor s nastavením vzhledu &apos;%1&apos; (nahoru) neexistuje.</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>The skin &quot;down&quot; image file &apos;%1&apos; does not exist.</source>
+        <translation>Soubor s nastavením vzhledu &apos;%1&apos; (dolů) neexistuje.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>The skin &quot;closed&quot; image file &apos;%1&apos; does not exist.</source>
+        <translation>Soubor s nastavením vzhledu &apos;%1&apos; (zavřeno) neexistuje.</translation>
+    </message>
+</context>
+<context>
+    <name>EmbeddedOptionsControl</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="+307"/>
+        <source>&lt;html&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Font&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%1, %2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Style&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Resolution&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%4 x %5&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/html&gt;</source>
+        <extracomment>Format embedded device profile description</extracomment>
+        <translation>&lt;html&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Font&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%1, %2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Stil&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Rozlišení&lt;/b&gt;&lt;/td&gt;&lt;td&gt;%4 x %5&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/html&gt;</translation>
+    </message>
+</context>
+<context>
+    <name>EmbeddedOptionsPage</name>
+    <message>
+        <location line="+103"/>
+        <source>Embedded Design</source>
+        <extracomment>Tab in preferences dialog</extracomment>
+        <translation>Vložený návrh</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Device Profiles</source>
+        <extracomment>EmbeddedOptionsControl group box&quot;</extracomment>
+        <translation>Profily zařízení</translation>
+    </message>
+</context>
+<context>
+    <name>FontPanel</name>
+    <message>
+        <location filename="../tools/shared/fontpanel/fontpanel.cpp" line="+63"/>
+        <source>Font</source>
+        <translation>Písmo</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>&amp;Writing system</source>
+        <translation>Způsob &amp;psaní</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&amp;Family</source>
+        <translation>&amp;Písmová rodina</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>&amp;Style</source>
+        <translation>&amp;Styl</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>&amp;Point size</source>
+        <translation>&amp;Bodová velikost</translation>
+    </message>
+</context>
+<context>
+    <name>FontPropertyManager</name>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/fontpropertymanager.cpp" line="+62"/>
+        <source>PreferDefault</source>
+        <translation>Upřednostňovat výchozí</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>NoAntialias</source>
+        <translation>Žádné vyhlazování</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>PreferAntialias</source>
+        <translation>Upřednostňovat vyhlazování</translation>
+    </message>
+    <message>
+        <location line="+61"/>
+        <source>Antialiasing</source>
+        <translation>Vyhlazování</translation>
+    </message>
+</context>
+<context>
+    <name>FormBuilder</name>
+    <message>
+        <location filename="../tools/designer/src/lib/uilib/formbuilderextra.cpp" line="+359"/>
+        <source>Invalid stretch value for &apos;%1&apos;: &apos;%2&apos;</source>
+        <extracomment>Parsing layout stretch values</extracomment>
+        <translation>Neplatná hodnota roztažení pro &apos;%1&apos;: &apos;%2&apos;</translation>
+    </message>
+    <message>
+        <location line="+62"/>
+        <source>Invalid minimum size for &apos;%1&apos;: &apos;%2&apos;</source>
+        <extracomment>Parsing grid layout minimum size values</extracomment>
+        <translation>Neplatná nejmenší velikost pro &apos;%1&apos;: &apos;%2&apos;</translation>
+    </message>
+</context>
+<context>
+    <name>FormEditorOptionsPage</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/formeditor_optionspage.cpp" line="+91"/>
+        <source>%1 %</source>
+        <translation>%1 %</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Preview Zoom</source>
+        <translation>Velikost zvětšení pro náhled</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Default Zoom</source>
+        <translation>Výchozí zvětšení</translation>
+    </message>
+    <message>
+        <location line="+29"/>
+        <source>Forms</source>
+        <extracomment>Tab in preferences dialog</extracomment>
+        <translation>Formuláře</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Default Grid</source>
+        <translation>Výchozí mřížka pro nové formuláře</translation>
+    </message>
+</context>
+<context>
+    <name>FormLayoutRowDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/formlayoutrowdialog.ui"/>
+        <source>Add Form Layout Row</source>
+        <translation>Přidat řádek s rozvržením formuláře</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Label text:</source>
+        <translation>&amp;Text popisku:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Field &amp;type:</source>
+        <translation>&amp;Typ datového pole:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Field name:</source>
+        <translation>&amp;Název pole:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Buddy:</source>
+        <translation>&amp;Kamarád:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Row:</source>
+        <translation>&amp;Řádek:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Label &amp;name:</source>
+        <translation>&amp;Název popisku:</translation>
+    </message>
+</context>
+<context>
+    <name>FormWindow</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="+1701"/>
+        <source>Unexpected element &lt;%1&gt;</source>
+        <translation>Neplatný prvek &lt;%1&gt;</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Error while pasting clipboard contents at line %1, column %2: %3</source>
+        <translation>Chyba při vložení obsahu schránky, řádek %1, sloupec %2: %3</translation>
+    </message>
+</context>
+<context>
+    <name>FormWindowSettings</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/formwindowsettings.ui"/>
+        <source>Form Settings</source>
+        <translation>Nastavení formuláře</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Layout &amp;Default</source>
+        <translation>&amp;Výchozí rozvržení</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Spacing:</source>
+        <translation>&amp;Odstup:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Margin:</source>
+        <translation>&amp;Okraj:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Layout Function</source>
+        <translation>&amp;Funkce rozvržení</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ma&amp;rgin:</source>
+        <translation>Ok&amp;raj:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Spa&amp;cing:</source>
+        <translation>Odstu&amp;p:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Embedded Design</source>
+        <translation>Vložený návrh</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Author</source>
+        <translation>&amp;Autor</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Include Hints</source>
+        <translation>&amp;Zahrnout rady</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Pixmap Function</source>
+        <translation>&amp;Funkce pixmapy</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Grid</source>
+        <translation>Mřížka</translation>
+    </message>
+</context>
+<context>
+    <name>IconSelector</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="+352"/>
+        <source>All Pixmaps (</source>
+        <translation>Všechny soubory s pixmapami (</translation>
+    </message>
+</context>
+<context>
+    <name>ItemPropertyBrowser</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+66"/>
+        <source>XX Icon Selected off</source>
+        <extracomment>Sample string to determinate the width for the first column of the list item property browser</extracomment>
+        <translation>Vybraná ikona, z</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindowBase</name>
+    <message>
+        <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+119"/>
+        <source>Main</source>
+        <extracomment>Not currently used (main tool bar)</extracomment>
+        <translation>Hlavní pruh s nástroji</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>File</source>
+        <translation>Soubor</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Edit</source>
+        <translation>Úpravy</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Tools</source>
+        <translation>Nástroje</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Form</source>
+        <translation>Formulář</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Qt Designer</source>
+        <translation>Qt Designer</translation>
+    </message>
+</context>
+<context>
+    <name>NewForm</name>
+    <message>
+        <location filename="../tools/designer/src/designer/newform.cpp" line="+79"/>
+        <source>C&amp;reate</source>
+        <translation>&amp;Vytvořit nový z předlohy</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Recent</source>
+        <translation>Naposledy otevřený</translation>
+    </message>
+    <message>
+        <location line="+32"/>
+        <source>&amp;Close</source>
+        <translation>&amp;Zavřít</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&amp;Open...</source>
+        <translation>&amp;Otevřít...</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>&amp;Recent Forms</source>
+        <translation>&amp;Naposledy otevřené formuláře</translation>
+    </message>
+    <message>
+        <location line="+64"/>
+        <source>Read error</source>
+        <translation>Chyba při čtení</translation>
+    </message>
+    <message>
+        <location line="-100"/>
+        <source>New Form</source>
+        <translation>Nový formulář</translation>
+    </message>
+    <message>
+        <location line="-5"/>
+        <source>Show this Dialog on Startup</source>
+        <translation>Ukázat tento dialog při spuštění</translation>
+    </message>
+    <message>
+        <location line="+128"/>
+        <source>A temporary form file could not be created in %1.</source>
+        <translation>V adresáři %1 se nepodařilo vytvořit dočasný soubor s formulářem.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The temporary form file %1 could not be written.</source>
+        <translation>Dočasný soubor s formulářem %1 se nepodařilo zapsat.</translation>
+    </message>
+</context>
+<context>
+    <name>ObjectInspectorModel</name>
+    <message>
+        <location filename="../tools/designer/src/components/objectinspector/objectinspectormodel.cpp" line="+360"/>
+        <source>Object</source>
+        <translation>Předmět</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Class</source>
+        <translation>Třída</translation>
+    </message>
+    <message>
+        <location line="+35"/>
+        <source>separator</source>
+        <translation>Oddělovač</translation>
+    </message>
+    <message>
+        <location line="+98"/>
+        <source>&lt;noname&gt;</source>
+        <translation>&lt;nepojmenovaný&gt;</translation>
+    </message>
+</context>
+<context>
+    <name>ObjectNameDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+158"/>
+        <source>Change Object Name</source>
+        <translation>Změnit název předmětu</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Object Name</source>
+        <translation>Název předmětu</translation>
+    </message>
+</context>
+<context>
+    <name>PluginDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/plugindialog.ui"/>
+        <source>Plugin Information</source>
+        <translation>Přídavné moduly</translation>
+    </message>
+    <message>
+        <location/>
+        <source>1</source>
+        <translation>1</translation>
+    </message>
+</context>
+<context>
+    <name>PreferencesDialog</name>
+    <message>
+        <location filename="../tools/designer/src/designer/preferencesdialog.ui"/>
+        <source>Preferences</source>
+        <translation>Nastavení</translation>
+    </message>
+</context>
+<context>
+    <name>PreviewConfigurationWidget</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.ui"/>
+        <source>Form</source>
+        <translation>Formulář</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Print/Preview Configuration</source>
+        <translation>Nastavení tisku/náhledu</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Style</source>
+        <translation>Styl</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Style sheet</source>
+        <translation>Předlohový list</translation>
+    </message>
+    <message>
+        <location/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Device skin</source>
+        <translation>Vzhled pro zařízení</translation>
+    </message>
+</context>
+<context>
+    <name>PromotionModel</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+112"/>
+        <source>Not used</source>
+        <extracomment>Usage of promoted widgets</extracomment>
+        <translation>Nepoužívaný</translation>
+    </message>
+</context>
+<context>
+    <name>Q3WizardContainer</name>
+    <message>
+        <location filename="../tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp" line="+172"/>
+        <location line="+5"/>
+        <source>Page</source>
+        <translation>Strana</translation>
+    </message>
+</context>
+<context>
+    <name>QAbstractFormBuilder</name>
+    <message>
+        <location filename="../tools/designer/src/lib/uilib/abstractformbuilder.cpp" line="+206"/>
+        <source>Unexpected element &lt;%1&gt;</source>
+        <translation>Neplatný prvek &lt;%1&gt;</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>An error has occurred while reading the UI file at line %1, column %2: %3</source>
+        <translation>Chyba při čtení souboru s rozhraním, řádek %1, sloupec %2: %3</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Invalid UI file: The root element &lt;ui&gt; is missing.</source>
+        <translation>Chyba při čtení souboru s rozhraním: Kořenový prvek &lt;ui&gt; chybí.</translation>
+    </message>
+    <message>
+        <location line="+119"/>
+        <source>The creation of a widget of the class &apos;%1&apos; failed.</source>
+        <translation>Nepodařilo se vytvořit žádný prvek třídy &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location line="+296"/>
+        <source>Attempt to add child that is not of class QWizardPage to QWizard.</source>
+        <translation>Pokus o přidání strany předmětu třídy QWizard, která není typu QWizardPage.</translation>
+    </message>
+    <message>
+        <location line="+86"/>
+        <source>Attempt to add a layout to a widget &apos;%1&apos; (%2) which already has a layout of non-box type %3.
+This indicates an inconsistency in the ui-file.</source>
+        <translation>Pokus o přidání rozvržení na prvek &apos;%1&apos; (%2), který již má rozvržení typu %3 hat. Ukazuje to na nesrovnalost v souboru s rozhraním.</translation>
+    </message>
+    <message>
+        <location line="+144"/>
+        <source>Empty widget item in %1 &apos;%2&apos;.</source>
+        <translation>Prázdná položka prvku v %1 &apos;%2&apos;.</translation>
+    </message>
+    <message>
+        <location line="+680"/>
+        <source>Flags property are not supported yet.</source>
+        <translation>Vlastnosti typu &quot;příznak&quot; nejsou podporovány.</translation>
+    </message>
+    <message>
+        <location line="+81"/>
+        <source>While applying tab stops: The widget &apos;%1&apos; could not be found.</source>
+        <translation>Chyba při stanovení pořadí tabulátorů: Nepodařilo se nalézt žádný prvek s názvem &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location line="+908"/>
+        <source>Invalid QButtonGroup reference &apos;%1&apos; referenced by &apos;%2&apos;.</source>
+        <translation>Neplatný odkaz na skupinu tlačítek &apos;%1&apos;, odkazováno &apos;%2&apos;.</translation>
+    </message>
+    <message>
+        <location line="+511"/>
+        <source>This version of the uitools library is linked without script support.</source>
+        <translation>Tato verze knihovny uitools nepodporuje skripty.</translation>
+    </message>
+</context>
+<context>
+    <name>QAxWidgetPlugin</name>
+    <message>
+        <location filename="../tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp" line="+75"/>
+        <source>ActiveX control</source>
+        <translation>Ovládací prvek ActiveX</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>ActiveX control widget</source>
+        <translation>Ovládací prvek ActiveX</translation>
+    </message>
+</context>
+<context>
+    <name>QAxWidgetTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="+119"/>
+        <source>Set Control</source>
+        <translation>Nastavit ovládací prvek</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Reset Control</source>
+        <translation>Nastavit znovu ovládací prvek</translation>
+    </message>
+    <message>
+        <location line="+41"/>
+        <source>Licensed Control</source>
+        <translation>Licencovaný ovládací prvek</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>The control requires a design-time license</source>
+        <translation>Ovládací prvek vyžaduje licenci k času návrhu</translation>
+    </message>
+</context>
+<context>
+    <name>QCoreApplication</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_promotion.cpp" line="+83"/>
+        <source>%1 is not a promoted class.</source>
+        <translation>%1 není zástupným symbolem pro uživatelsky stanovenou třídu.</translation>
+    </message>
+    <message>
+        <location line="+65"/>
+        <source>The base class %1 is invalid.</source>
+        <translation>%1 není platnou základní třídou.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>The class %1 already exists.</source>
+        <translation>Již existuje třída s názvem %1.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Promoted Widgets</source>
+        <translation>Zástupný symbol pro uživatelsky stanovené prvky</translation>
+    </message>
+    <message>
+        <location line="+126"/>
+        <source>The class %1 cannot be removed</source>
+        <translation>Třída %1 nemůže být odstraněna</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>The class %1 cannot be removed because it is still referenced.</source>
+        <translation>Třída %1 nemůže být odstraněna, protože se stále používá.</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>The class %1 cannot be renamed</source>
+        <translation>Třída %1 nemůže být přejmenována</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>The class %1 cannot be renamed to an empty name.</source>
+        <translation>Název pro třídu nemůže zůstat prázdný (%1).</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>There is already a class named %1.</source>
+        <translation>Již existuje třída s názvem %1.</translation>
+    </message>
+    <message>
+        <location line="+29"/>
+        <source>Cannot set an empty include file.</source>
+        <translation>Název pro hlavičkový soubor nemůže zůstat prázdný.</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/uilib/formscriptrunner.cpp" line="+88"/>
+        <source>Exception at line %1: %2</source>
+        <translation>Chyba výjimky na řádku %1: %2</translation>
+    </message>
+    <message>
+        <location line="+36"/>
+        <source>Unknown error</source>
+        <translation>Neznámá chyba</translation>
+    </message>
+    <message>
+        <location line="+50"/>
+        <source>An error occurred while running the script for %1: %2
+Script: %3</source>
+        <translation>Při provádění skriptu pro %1 se vyskytla chyba: %2Skript: %3</translation>
+    </message>
+</context>
+<context>
+    <name>QDesigner</name>
+    <message>
+        <location filename="../tools/designer/src/designer/qdesigner.cpp" line="+141"/>
+        <source>%1 - warning</source>
+        <translation>%1 - Upozornění</translation>
+    </message>
+    <message>
+        <location line="+96"/>
+        <source>Qt Designer</source>
+        <translation>Qt Designer</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>This application cannot be used for the Console edition of Qt</source>
+        <translation>Tato aplikace se nedá používat pro konzolové vydání Qt</translation>
+    </message>
+</context>
+<context>
+    <name>QDesignerActions</name>
+    <message>
+        <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+178"/>
+        <source>Edit Widgets</source>
+        <translation>Upravit prvky</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>&amp;Quit</source>
+        <translation>&amp;Ukončit</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&amp;Minimize</source>
+        <translation>&amp;Zmenšit</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Bring All to Front</source>
+        <translation>Ukázat všechny formuláře</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Preferences...</source>
+        <translation>Nastavení...</translation>
+    </message>
+    <message>
+        <location line="+298"/>
+        <source>Clear &amp;Menu</source>
+        <translation>Smazat &amp;nabídku</translation>
+    </message>
+    <message>
+        <location line="-233"/>
+        <source>CTRL+SHIFT+S</source>
+        <translation>CTRL+SHIFT+S</translation>
+    </message>
+    <message>
+        <location line="+113"/>
+        <source>CTRL+R</source>
+        <translation>CTRL+R</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>CTRL+M</source>
+        <translation>CTRL+M</translation>
+    </message>
+    <message>
+        <location line="+31"/>
+        <source>Qt Designer &amp;Help</source>
+        <translation>&amp;Nápověda k programu Qt Designer</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Current Widget Help</source>
+        <translation>Nápověda k vybranému prvku</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>What&apos;s New in Qt Designer?</source>
+        <translation>Co je nového v programu Qt Designer?</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>About Plugins</source>
+        <translation>Přídavné moduly</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <location line="+601"/>
+        <source>About Qt Designer</source>
+        <translation>O programu Qt Designer</translation>
+    </message>
+    <message>
+        <location line="-595"/>
+        <source>About Qt</source>
+        <translation>O Qt</translation>
+    </message>
+    <message>
+        <location line="+121"/>
+        <location line="+197"/>
+        <source>Open Form</source>
+        <translation>Otevřít formulář</translation>
+    </message>
+    <message>
+        <location line="-196"/>
+        <location line="+37"/>
+        <location line="+160"/>
+        <source>Designer UI files (*.%1);;All Files (*)</source>
+        <translation>Soubory rozhraní programu Designer (*.%1);;Všechny soubory (*)</translation>
+    </message>
+    <message>
+        <location line="-620"/>
+        <source>%1 already exists.
+Do you want to replace it?</source>
+        <translation>Soubor %1 již existuje.
+Chcete jej nahradit?</translation>
+    </message>
+    <message>
+        <location line="-26"/>
+        <source>Saved %1.</source>
+        <translation>Formulář %1 byl uložen.</translation>
+    </message>
+    <message>
+        <location line="+371"/>
+        <source>&amp;Recent Forms</source>
+        <translation>&amp;Naposledy otevřené formuláře</translation>
+    </message>
+    <message>
+        <location line="+202"/>
+        <source>Designer</source>
+        <translation>Designer</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Feature not implemented yet!</source>
+        <translation>Tato funkce ještě není provedena!</translation>
+    </message>
+    <message>
+        <location line="+59"/>
+        <source>Read error</source>
+        <translation>Chyba při čtení</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>%1
+Do you want to update the file location or generate a new form?</source>
+        <translation>%1
+Chcete zadat jiný název pro soubor, nebo vytvořit nový formulář?</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&amp;Update</source>
+        <translation>&amp;Jiný název</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;New Form</source>
+        <translation>&amp;Nový formulář</translation>
+    </message>
+    <message>
+        <location line="+77"/>
+        <location line="+40"/>
+        <source>Save Form?</source>
+        <translation>Uložit formulář?</translation>
+    </message>
+    <message>
+        <location line="-39"/>
+        <source>Could not open file</source>
+        <translation>Soubor se nepodařilo otevřít</translation>
+    </message>
+    <message>
+        <location line="+282"/>
+        <location line="+23"/>
+        <source>The backup file %1 could not be written.</source>
+        <translation>Ukládání na pozadí: Soubor se zálohou %1 se nepodařilo zapsat.</translation>
+    </message>
+    <message>
+        <location line="+107"/>
+        <source>The backup directory %1 could not be created.</source>
+        <translation>Ukládání na pozadí: Adresář se zálohou %1 se nepodařilo.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The temporary backup directory %1 could not be created.</source>
+        <translation>Ukládání na pozadí: Dočasný adresář se zálohou %1 se nepodařilo.</translation>
+    </message>
+    <message>
+        <location line="+94"/>
+        <source>Please close all forms to enable the loading of additional fonts.</source>
+        <translation>Zavřete, prosím, všechny formuláře kvůli umožnění nahrání dodatečných písem.</translation>
+    </message>
+    <message>
+        <location line="-502"/>
+        <source>Select New File</source>
+        <translation>Vybrat nový soubor</translation>
+    </message>
+    <message>
+        <location line="+30"/>
+        <source>Could not write file</source>
+        <translation>Soubor se nepodařilo zapsat</translation>
+    </message>
+    <message>
+        <location line="+201"/>
+        <source>&amp;Close Preview</source>
+        <translation>&amp;Zavřít náhled</translation>
+    </message>
+    <message>
+        <location line="-898"/>
+        <source>Save &amp;Image...</source>
+        <translation>&amp;Uložit obraz...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Print...</source>
+        <translation>&amp;Tisk...</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Additional Fonts...</source>
+        <translation>Dodatečná písma...</translation>
+    </message>
+    <message>
+        <location line="+651"/>
+        <source>The file %1 could not be opened.
+Reason: %2
+Would you like to retry or select a different file?</source>
+        <translation>Soubor %1 se nepodařilo otevřít:
+%2
+Chcete to zkusit ještě jednou, nebo vybrat jiný soubor?</translation>
+    </message>
+    <message>
+        <location line="+39"/>
+        <source>It was not possible to write the entire file %1 to disk.
+Reason:%2
+Would you like to retry?</source>
+        <translation>Soubor %1 se nepodařilo úplně zapsat na disk:
+Důvod: %2
+Chcete to zkusit ještě jednou?</translation>
+    </message>
+    <message>
+        <location line="+429"/>
+        <source>Image files (*.%1)</source>
+        <translation>Soubory s obrazem (*.%1)</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <location line="+17"/>
+        <source>Save Image</source>
+        <translation>Uložit obraz</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>The file %1 could not be written.</source>
+        <translation>Soubor %1 se nepodařilo zapsat.</translation>
+    </message>
+    <message>
+        <location line="-1163"/>
+        <source>&amp;New...</source>
+        <translation>&amp;Nový...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Open...</source>
+        <translation>&amp;Otevřít...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Save</source>
+        <translation>&amp;Uložit</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Save &amp;As...</source>
+        <translation>Uložit &amp;jako...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Save A&amp;ll</source>
+        <translation>&amp;Uložit vše</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Save As &amp;Template...</source>
+        <translation>Uložit jako &amp;předlohu...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <location line="+901"/>
+        <source>&amp;Close</source>
+        <translation>&amp;Zavřít</translation>
+    </message>
+    <message>
+        <location line="-896"/>
+        <source>View &amp;Code...</source>
+        <translation>Ukázat &amp;kód...</translation>
+    </message>
+    <message>
+        <location line="+424"/>
+        <location line="+248"/>
+        <source>Save Form As</source>
+        <translation>Uložit formulář jako</translation>
+    </message>
+    <message>
+        <location line="+429"/>
+        <source>Preview failed</source>
+        <translation>Nepodařilo se vytvořit žádný náhled</translation>
+    </message>
+    <message>
+        <location line="-575"/>
+        <source>Code generation failed</source>
+        <translation>Nepodařilo se vytvořit žádný kód</translation>
+    </message>
+    <message>
+        <location line="+328"/>
+        <location line="+34"/>
+        <source>Assistant</source>
+        <translation>Assistant</translation>
+    </message>
+    <message>
+        <location line="+259"/>
+        <source>Saved image %1.</source>
+        <translation>Obraz byl uložen pod %1.</translation>
+    </message>
+    <message>
+        <location line="+70"/>
+        <source>Printed %1.</source>
+        <translation>%1 byl vytištěn.</translation>
+    </message>
+    <message>
+        <location line="-1149"/>
+        <source>ALT+CTRL+S</source>
+        <translation>ALT+CTRL+S</translation>
+    </message>
+</context>
+<context>
+    <name>QDesignerAppearanceOptionsPage</name>
+    <message>
+        <location filename="../tools/designer/src/designer/qdesigner_appearanceoptions.cpp" line="+138"/>
+        <source>Appearance</source>
+        <extracomment>Tab in preferences dialog</extracomment>
+        <translation>Vzhled</translation>
+    </message>
+</context>
+<context>
+    <name>QDesignerAppearanceOptionsWidget</name>
+    <message>
+        <location line="-53"/>
+        <source>Docked Window</source>
+        <translation>Režim ukotveného okna</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Multiple Top-Level Windows</source>
+        <translation>Režim více oken</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Toolwindow Font</source>
+        <translation>Písmo pro okno s nástroji</translation>
+    </message>
+</context>
+<context>
+    <name>QDesignerAxWidget</name>
+    <message>
+        <location filename="../tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp" line="-71"/>
+        <source>Reset control</source>
+        <translation>Nastavit znovu ovládací prvek</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Set control</source>
+        <translation>Nastavit ovládací prvek</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp" line="+179"/>
+        <source>Control loaded</source>
+        <translation>Ovládací prvek nahrán</translation>
+    </message>
+    <message>
+        <location line="+40"/>
+        <source>A COM exception occurred when executing a meta call of type %1, index %2 of &quot;%3&quot;.</source>
+        <translation>Při vyvolání postupu typu %1 se vyskytla výjimka COM, rejstřík %2 &quot;%3&quot;.</translation>
+    </message>
+</context>
+<context>
+    <name>QDesignerFormBuilder</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_formbuilder.cpp" line="+89"/>
+        <source>Script errors occurred:</source>
+        <translation>Vyskytly se chyby ve skriptech:</translation>
+    </message>
+    <message>
+        <location line="+307"/>
+        <source>The preview failed to build.</source>
+        <translation>Nepodařilo se vytvořit žádný náhled.</translation>
+    </message>
+    <message>
+        <location line="+65"/>
+        <source>Designer</source>
+        <translation>Designer</translation>
+    </message>
+</context>
+<context>
+    <name>QDesignerFormWindow</name>
+    <message>
+        <location filename="../tools/designer/src/designer/qdesigner_formwindow.cpp" line="+217"/>
+        <source>%1 - %2[*]</source>
+        <translation>%1 - %2[*]</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Save Form?</source>
+        <translation>Uložit formulář?</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Do you want to save the changes to this document before closing?</source>
+        <translation>Chcete v tomto formuláři uložit před zavřením změny?</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>If you don&apos;t save, your changes will be lost.</source>
+        <translation>Pokud neprovedete uložení, budou vaše změny ztraceny. </translation>
+    </message>
+</context>
+<context>
+    <name>QDesignerMenu</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_menu.cpp" line="-1181"/>
+        <source>Type Here</source>
+        <translation>Zadejte text</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Add Separator</source>
+        <translation>Přidat oddělovač</translation>
+    </message>
+    <message>
+        <location line="+371"/>
+        <source>Insert separator</source>
+        <translation>Vložit oddělovač</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Remove action &apos;%1&apos;</source>
+        <translation>Odstranit činnost &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>Remove separator</source>
+        <translation>Odstranit oddělovač</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <location line="+650"/>
+        <source>Add separator</source>
+        <translation>Přidat oddělovač</translation>
+    </message>
+    <message>
+        <location line="-348"/>
+        <source>Insert action</source>
+        <translation>Vložit činnost</translation>
+    </message>
+</context>
+<context>
+    <name>QDesignerMenuBar</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_menubar.cpp" line="-375"/>
+        <source>Type Here</source>
+        <translation>Zadejte text</translation>
+    </message>
+    <message>
+        <location line="+298"/>
+        <source>Remove Menu &apos;%1&apos;</source>
+        <translation>Odstranit nabídku &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>Remove Menu Bar</source>
+        <translation>Odstranit pruh s nabídkou</translation>
+    </message>
+    <message>
+        <location line="+70"/>
+        <source>Menu</source>
+        <translation>Nabídka</translation>
+    </message>
+</context>
+<context>
+    <name>QDesignerPluginManager</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/pluginmanager.cpp" line="+271"/>
+        <source>An XML error was encountered when parsing the XML of the custom widget %1: %2</source>
+        <translation>Chyba při vyhodnocování XML uživatelsky stanoveného prvku %1: %2</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>A required attribute (&apos;%1&apos;) is missing.</source>
+        <translation>U prvku chybí vyžadovaná vlastnost (&apos;%1&apos;).</translation>
+    </message>
+    <message>
+        <location line="+38"/>
+        <source>An invalid property specification (&apos;%1&apos;) was encountered. Supported types: %2</source>
+        <translation>&apos;%1&apos; není platným vymezením vlastnosti. Jsou podporovány následující typy: %2</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>&apos;%1&apos; is not a valid string property specification.</source>
+        <translation>&apos;%1&apos; není platným vymezením vlastnosti řetězce znaků.</translation>
+    </message>
+    <message>
+        <location line="+40"/>
+        <source>The XML of the custom widget %1 does not contain any of the elements &lt;widget&gt; or &lt;ui&gt;.</source>
+        <translation>Kód XML pro prvek %1 neobsahuje platný kořenový prvek (&lt;widget&gt;, nebo &lt;ui&gt;).</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>The class attribute for the class %1 is missing.</source>
+        <translation>Chybí vlastnost třídy pro třídu %1.</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>The class attribute for the class %1 does not match the class name %2.</source>
+        <translation>Vlastnost třídy pro třídu %1 neodpovídá názvu třídy (%2).</translation>
+    </message>
+</context>
+<context>
+    <name>QDesignerPropertySheet</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+754"/>
+        <source>Dynamic Properties</source>
+        <translation>Dynamické vlastnosti</translation>
+    </message>
+</context>
+<context>
+    <name>QDesignerResource</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+492"/>
+        <source>The layout type &apos;%1&apos; is not supported, defaulting to grid.</source>
+        <translation>Typ rozvržení &apos;%1&apos; není podporován; bylo vytvořeno mřížkové rozvržení.</translation>
+    </message>
+    <message>
+        <location line="+243"/>
+        <source>The container extension of the widget &apos;%1&apos; (%2) returned a widget not managed by Designer &apos;%3&apos; (%4) when queried for page #%5.
+Container pages should only be added by specifying them in XML returned by the domXml() method of the custom widget.</source>
+        <translation>Kontejnerové rozšíření prvku &apos;%1&apos; (%2) vrátilo pro stranu %5 prvek &apos;%3&apos; (%4), který není spravován programem Designer.
+Kontejnerové stránky by měly být zadány výhradně v XML vráceném postupu domXML() uživatelsky stanoveného prvku.</translation>
+    </message>
+    <message>
+        <location line="+599"/>
+        <source>Unexpected element &lt;%1&gt;</source>
+        <extracomment>Parsing clipboard contents</extracomment>
+        <translation>Neplatný prvek &lt;%1&gt;</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Error while pasting clipboard contents at line %1, column %2: %3</source>
+        <extracomment>Parsing clipboard contents</extracomment>
+        <translation>Chyba při vložení obsahu schránky, řádek %1, sloupec %2: %3</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Error while pasting clipboard contents: The root element &lt;ui&gt; is missing.</source>
+        <extracomment>Parsing clipboard contents</extracomment>
+        <translation>Chyba při vložení obsahu schránky: Kořenový prvek &lt;ui&gt; chybí.</translation>
+    </message>
+</context>
+<context>
+    <name>QDesignerSharedSettings</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/shared_settings.cpp" line="+83"/>
+        <source>The template path %1 could not be created.</source>
+        <translation>Adresář s předlohami %1 se nepodařilo zřídit.</translation>
+    </message>
+    <message>
+        <location line="+184"/>
+        <source>An error has been encountered while parsing device profile XML: %1</source>
+        <translation>Při čtení XML profilu zařízení se vyskytla chyba: %1</translation>
+    </message>
+</context>
+<context>
+    <name>QDesignerToolWindow</name>
+    <message>
+        <location filename="../tools/designer/src/designer/qdesigner_toolwindow.cpp" line="+190"/>
+        <source>Property Editor</source>
+        <translation>Editor vlastností</translation>
+    </message>
+    <message>
+        <location line="+54"/>
+        <source>Action Editor</source>
+        <translation>Editor činností</translation>
+    </message>
+    <message>
+        <location line="+42"/>
+        <source>Object Inspector</source>
+        <translation>Ukazatel předmětů</translation>
+    </message>
+    <message>
+        <location line="+35"/>
+        <source>Resource Browser</source>
+        <translation>Prohlížeč zdrojů</translation>
+    </message>
+    <message>
+        <location line="+34"/>
+        <source>Signal/Slot Editor</source>
+        <translation>Editor signálů a zdířek</translation>
+    </message>
+    <message>
+        <location line="+41"/>
+        <source>Widget Box</source>
+        <translation>Krabice s prvky</translation>
+    </message>
+</context>
+<context>
+    <name>QDesignerWorkbench</name>
+    <message>
+        <location filename="../tools/designer/src/designer/qdesigner_workbench.cpp" line="+199"/>
+        <source>&amp;File</source>
+        <translation>&amp;Soubor</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>F&amp;orm</source>
+        <translation>F&amp;ormulář</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Preview in</source>
+        <translation>Náhled v</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>&amp;Window</source>
+        <translation>&amp;Okno</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>&amp;Help</source>
+        <translation>&amp;Nápověda</translation>
+    </message>
+    <message>
+        <location line="-15"/>
+        <source>Edit</source>
+        <translation>Úpravy</translation>
+    </message>
+    <message>
+        <location line="+38"/>
+        <source>Toolbars</source>
+        <translation>Nástrojové pruhy</translation>
+    </message>
+    <message>
+        <location line="+465"/>
+        <source>Save Forms?</source>
+        <translation>Uložit formuláře?</translation>
+    </message>
+    <message>
+        <location line="-494"/>
+        <source>&amp;View</source>
+        <translation>&amp;Pohled</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>&amp;Settings</source>
+        <translation>&amp;Nastavení</translation>
+    </message>
+    <message>
+        <location line="+204"/>
+        <source>Widget Box</source>
+        <translation>Krabice s prvky</translation>
+    </message>
+    <message>
+        <location line="+292"/>
+        <source>If you do not review your documents, all your changes will be lost.</source>
+        <translation>Změny budou ztraceny, pokud se na formuláře ještě jednou nepodíváte.</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Discard Changes</source>
+        <translation>Zahodit změny</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Review Changes</source>
+        <translation>Podívat se na změny</translation>
+    </message>
+    <message>
+        <location line="+95"/>
+        <source>Backup Information</source>
+        <translation>Informace o ukládání na pozadí</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>The last session of Designer was not terminated correctly. Backup files were left behind. Do you want to load them?</source>
+        <translation>Designer zřejmě nebyl řádně ukončen; existují soubory z ukládání na pozadí. Chcete je nahrát?</translation>
+    </message>
+    <message>
+        <location line="+111"/>
+        <source>The file &lt;b&gt;%1&lt;/b&gt; could not be opened.</source>
+        <translation>Soubor &lt;b&gt;%1&lt;/b&gt; se nepodařilo otevřít.</translation>
+    </message>
+    <message>
+        <location line="+46"/>
+        <source>The file &lt;b&gt;%1&lt;/b&gt; is not a valid Designer UI file.</source>
+        <translation>Soubor &lt;b&gt;%1&lt;/b&gt; není platným souborem rozhraní programu Designer.</translation>
+    </message>
+    <message numerus="yes">
+        <location line="-259"/>
+        <source>There are %n forms with unsaved changes. Do you want to review these changes before quitting?</source>
+        <translation>
+            <numerusform>Formulář byl změněn, ale změny nebyl uloženy. Chcete se na tyto změny podívat předtím, než program ukončíte?</numerusform>
+            <numerusform>%n formuláře byly změněny, ale změny nebyl uloženy. Chcete se na tyto změny podívat předtím, než program ukončíte?</numerusform>
+            <numerusform>%n formuláře byly změněny, ale změny nebyl uloženy. Chcete se na tyto změny podívat předtím, než program ukončíte?</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>QFormBuilder</name>
+    <message>
+        <location filename="../tools/designer/src/lib/uilib/formbuilder.cpp" line="+163"/>
+        <source>An empty class name was passed on to %1 (object name: &apos;%2&apos;).</source>
+        <extracomment>Empty class name passed to widget factory method</extracomment>
+        <translation>Postupu %1 byl předán prázdný název třídy (název předmětu &apos;%2&apos;).</translation>
+    </message>
+    <message>
+        <location line="+56"/>
+        <source>QFormBuilder was unable to create a custom widget of the class &apos;%1&apos;; defaulting to base class &apos;%2&apos;.</source>
+        <translation>QFormBuilderu se nepodařilo vytvořit uživatelsky stanovený prvek třídy &apos;%1&apos;; byl vytvořen prvek základní třídy &apos;%2&apos;.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>QFormBuilder was unable to create a widget of the class &apos;%1&apos;.</source>
+        <translation>QFormBuilderu se nepodařilo vytvořit předmět třídy &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location line="+61"/>
+        <source>The layout type `%1&apos; is not supported.</source>
+        <translation>Rozvržení typu `%1&apos; nejsou podporována.</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/uilib/properties.cpp" line="+106"/>
+        <source>The set-type property %1 could not be read.</source>
+        <translation>Vlastnost %1 se nepodařilo přečíst (typ: množství).</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>The enumeration-type property %1 could not be read.</source>
+        <translation>Vlastnost %1 se nepodařilo přečíst (typ: výčet).</translation>
+    </message>
+    <message>
+        <location line="+190"/>
+        <source>Reading properties of the type %1 is not supported yet.</source>
+        <translation>Čtení vlastností typu %1 není podporováno.</translation>
+    </message>
+    <message>
+        <location line="+266"/>
+        <source>The property %1 could not be written. The type %2 is not supported yet.</source>
+        <translation>Vlastnost %1 se nepodařilo zapsat, protože typ %2 není podporován.</translation>
+    </message>
+</context>
+<context>
+    <name>QStackedWidgetEventFilter</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_stackedbox.cpp" line="+194"/>
+        <source>Previous Page</source>
+        <translation>Předchozí strana</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Next Page</source>
+        <translation>Další strana</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Delete</source>
+        <translation>Smazat</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Before Current Page</source>
+        <translation>Před nynější stranu</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>After Current Page</source>
+        <translation>Po nynější straně</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Change Page Order...</source>
+        <translation>Změnit pořadí stran...</translation>
+    </message>
+    <message>
+        <location line="+72"/>
+        <source>Change Page Order</source>
+        <translation>Změnit pořadí stran</translation>
+    </message>
+    <message>
+        <location line="+49"/>
+        <source>Page %1 of %2</source>
+        <translation>Strana %1 z %2</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <location line="+4"/>
+        <source>Insert Page</source>
+        <translation>Vložit stranu</translation>
+    </message>
+</context>
+<context>
+    <name>QStackedWidgetPreviewEventFilter</name>
+    <message>
+        <location line="-153"/>
+        <source>Go to previous page of %1 &apos;%2&apos; (%3/%4).</source>
+        <translation>Jít na předchozí stranu %1 &apos;%2&apos; (%3/%4).</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Go to next page of %1 &apos;%2&apos; (%3/%4).</source>
+        <translation>Jít na další stranu %1 &apos;%2&apos; (%3/%4).</translation>
+    </message>
+</context>
+<context>
+    <name>QTabWidgetEventFilter</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_tabwidget.cpp" line="+89"/>
+        <source>Delete</source>
+        <translation>Smazat</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Before Current Page</source>
+        <translation>Před nynější stranu</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>After Current Page</source>
+        <translation>Po nynější straně</translation>
+    </message>
+    <message>
+        <location line="+283"/>
+        <source>Page %1 of %2</source>
+        <translation>Strana %1 z %2</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <location line="+4"/>
+        <source>Insert Page</source>
+        <translation>Vložit stranu</translation>
+    </message>
+</context>
+<context>
+    <name>QToolBoxHelper</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_toolbox.cpp" line="+64"/>
+        <source>Delete Page</source>
+        <translation>Smazat stranu</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Before Current Page</source>
+        <translation>Před nynější stranu</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>After Current Page</source>
+        <translation>Po nynější straně</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Change Page Order...</source>
+        <translation>Změnit pořadí stran...</translation>
+    </message>
+    <message>
+        <location line="+116"/>
+        <source>Change Page Order</source>
+        <translation>Změnit pořadí stran</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>Page %1 of %2</source>
+        <translation>Strana %1 z %2</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>Insert Page</source>
+        <translation>Vložit stranu</translation>
+    </message>
+</context>
+<context>
+    <name>QtBoolEdit</name>
+    <message>
+        <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+226"/>
+        <location line="+10"/>
+        <location line="+25"/>
+        <source>True</source>
+        <translation>Pravdivý</translation>
+    </message>
+    <message>
+        <location line="-25"/>
+        <location line="+25"/>
+        <source>False</source>
+        <translation>Nepravdivý</translation>
+    </message>
+</context>
+<context>
+    <name>QtBoolPropertyManager</name>
+    <message>
+        <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1469"/>
+        <source>True</source>
+        <translation>Pravdivý</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>False</source>
+        <translation>Nepravdivý</translation>
+    </message>
+</context>
+<context>
+    <name>QtCharEdit</name>
+    <message>
+        <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+1581"/>
+        <source>Clear Char</source>
+        <translation>Smazat znak</translation>
+    </message>
+</context>
+<context>
+    <name>QtColorEditWidget</name>
+    <message>
+        <location line="+605"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+</context>
+<context>
+    <name>QtColorPropertyManager</name>
+    <message>
+        <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+4743"/>
+        <source>Red</source>
+        <translation>Červená</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Green</source>
+        <translation>Zelená</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Blue</source>
+        <translation>Modrá</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Alpha</source>
+        <translation>Alfa</translation>
+    </message>
+</context>
+<context>
+    <name>QtCursorDatabase</name>
+    <message>
+        <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="-206"/>
+        <source>Arrow</source>
+        <translation>Šipka</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Up Arrow</source>
+        <translation>Šipka nahoru</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Cross</source>
+        <translation>Křížící se čáry</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Wait</source>
+        <translation>Přesýpací hodiny</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>IBeam</source>
+        <translation>I trámec</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Size Vertical</source>
+        <translation>Zvětšit svisle</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Size Horizontal</source>
+        <translation>Zvětšit vodorovně</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Size Backslash</source>
+        <translation>Zvětšit zpětné/obrácené lomítko</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Size Slash</source>
+        <translation>Zvětšit lomítko</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Size All</source>
+        <translation>Zvětšit vše</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Blank</source>
+        <translation>Prázdný</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Split Vertical</source>
+        <translation>Rozdělit svisle</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Split Horizontal</source>
+        <translation>Rozdělit vodorovně</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Pointing Hand</source>
+        <translation>Ukazující ruka</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Forbidden</source>
+        <translation>Zakázáno</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Open Hand</source>
+        <translation>Otevřená ruka</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Closed Hand</source>
+        <translation>Zavřená ruka</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>What&apos;s This</source>
+        <translation>A co je toto</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Busy</source>
+        <translation>Zaneprázdněn</translation>
+    </message>
+</context>
+<context>
+    <name>QtFontEditWidget</name>
+    <message>
+        <location filename="../tools/shared/qtpropertybrowser/qteditorfactory.cpp" line="+198"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Select Font</source>
+        <translation>Vybrat písmo</translation>
+    </message>
+</context>
+<context>
+    <name>QtFontPropertyManager</name>
+    <message>
+        <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-351"/>
+        <source>Family</source>
+        <translation>Písmová rodina</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Point Size</source>
+        <translation>Bodová velikost</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Bold</source>
+        <translation>Tučné</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Italic</source>
+        <translation>Kurzíva</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Underline</source>
+        <translation>Podtržení</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Strikeout</source>
+        <translation>Přeškrtnuté</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Kerning</source>
+        <translation>Podřezávání</translation>
+    </message>
+</context>
+<context>
+    <name>QtGradientDialog</name>
+    <message>
+        <location filename="../tools/shared/qtgradienteditor/qtgradientdialog.ui"/>
+        <source>Edit Gradient</source>
+        <translation>Upravit přechod</translation>
+    </message>
+</context>
+<context>
+    <name>QtGradientEditor</name>
+    <message>
+        <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.cpp" line="+431"/>
+        <source>Start X</source>
+        <translation>Začáteční hodnota x</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Start Y</source>
+        <translation>Začáteční hodnota y</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Final X</source>
+        <translation>Koncová hodnota x</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Final Y</source>
+        <translation>Koncová hodnota y</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <location line="+24"/>
+        <source>Central X</source>
+        <translation>Střed x</translation>
+    </message>
+    <message>
+        <location line="-20"/>
+        <location line="+24"/>
+        <source>Central Y</source>
+        <translation>Střed y</translation>
+    </message>
+    <message>
+        <location line="-20"/>
+        <source>Focal X</source>
+        <translation>Ohnisko x</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Focal Y</source>
+        <translation>Ohnisko y</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Radius</source>
+        <translation>Poloměr</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Angle</source>
+        <translation>Úhel</translation>
+    </message>
+    <message>
+        <location line="+288"/>
+        <source>Linear</source>
+        <translation>Přímočarý</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Radial</source>
+        <translation>Paprskovitý</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Conical</source>
+        <translation>Kuželovitý</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Pad</source>
+        <translation>Doplnit</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Repeat</source>
+        <translation>Opakovat</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Reflect</source>
+        <translation>Zrcadlit</translation>
+    </message>
+    <message>
+        <location filename="../tools/shared/qtgradienteditor/qtgradienteditor.ui"/>
+        <source>Form</source>
+        <translation>Formulář</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Gradient Editor</source>
+        <translation>Úpravy přechodů</translation>
+    </message>
+    <message>
+        <location/>
+        <source>1</source>
+        <translation>1</translation>
+    </message>
+    <message>
+        <location/>
+        <source>2</source>
+        <translation>2</translation>
+    </message>
+    <message>
+        <location/>
+        <source>3</source>
+        <translation>3</translation>
+    </message>
+    <message>
+        <location/>
+        <source>4</source>
+        <translation>4</translation>
+    </message>
+    <message>
+        <location/>
+        <source>5</source>
+        <translation>5</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Gradient Stops Editor</source>
+        <translation>Editor bodů zastavení přechodu</translation>
+    </message>
+    <message>
+        <location/>
+        <source>This area allows you to edit gradient stops. Double click on the existing stop handle to duplicate it. Double click outside of the existing stop handles to create a new stop. Drag &amp; drop the handle to reposition it. Use right mouse button to popup context menu with extra actions.</source>
+        <translation>Tato oblast slouží pro úpravy bodů zastavení přechodu. Dvakrát klepněte na orientační bod kvůli jeho zdvojení. Dvakrát klepněte na plochu kvůli vytvoření nového orientačního bodu. Použijte tažení &amp; upuštění pro posunutí bodu. Pravým tlačítkem myši se vyvolává nabídka s dalšími souvisejícími volbami.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Zoom</source>
+        <translation>Zvětšení</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Position</source>
+        <translation>Poloha</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Hue</source>
+        <translation>Barevný odstín</translation>
+    </message>
+    <message>
+        <location/>
+        <source>H</source>
+        <translation>H</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Saturation</source>
+        <translation>Sytost</translation>
+    </message>
+    <message>
+        <location/>
+        <source>S</source>
+        <translation>S</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Sat</source>
+        <translation>Sytost</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Value</source>
+        <translation>Hodnota</translation>
+    </message>
+    <message>
+        <location/>
+        <source>V</source>
+        <translation>V</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Val</source>
+        <translation>Hodnota</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Alpha</source>
+        <translation>Alfa</translation>
+    </message>
+    <message>
+        <location/>
+        <source>A</source>
+        <translation>A</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Spread</source>
+        <translation>Rozšiřování</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Color</source>
+        <translation>Barva</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Current stop&apos;s color</source>
+        <translation>Barva nynějšího zastavení</translation>
+    </message>
+    <message>
+        <location/>
+        <source>HSV</source>
+        <translation>HSV</translation>
+    </message>
+    <message>
+        <location/>
+        <source>RGB</source>
+        <translation>RGB</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Current stop&apos;s position</source>
+        <translation>Poloha nynějšího zastavení</translation>
+    </message>
+    <message>
+        <location/>
+        <source>%</source>
+        <translation>%</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Zoom In</source>
+        <translation>Přiblížit</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Zoom Out</source>
+        <translation>Oddálit</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Toggle details extension</source>
+        <translation>Zařadit další volby</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&gt;</source>
+        <translation>&gt;</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Linear Type</source>
+        <translation>Přímočarý typ</translation>
+    </message>
+    <message>
+        <location/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Radial Type</source>
+        <translation>Paprskovitý typ</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Conical Type</source>
+        <translation>Kuželovitý typ</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Pad Spread</source>
+        <translation>Doplnit rozšiřování</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Repeat Spread</source>
+        <translation>Opakovat rozšiřování</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Reflect Spread</source>
+        <translation>Zrcadlit rozšiřování</translation>
+    </message>
+    <message>
+        <location/>
+        <source>This area shows a preview of the gradient being edited. It also allows you to edit parameters specific to the gradient&apos;s type such as start and final point, radius, etc. by drag &amp; drop.</source>
+        <translation>tato oblast ukazuje náhled právě upravovaného přechodu. Zde můžete upravovat proměnné příznačné pro přechod, jako začáteční a koncový bod, poloměr etd. pomocí tažení a pouštění.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Show HSV specification</source>
+        <translation>Ukázat přesné vymezení HSV</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Show RGB specification</source>
+        <translation>Ukázat přesné vymezení RGB</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Reset Zoom</source>
+        <translation>Nastavit znovu zvětšení</translation>
+    </message>
+</context>
+<context>
+    <name>QtGradientStopsWidget</name>
+    <message>
+        <location filename="../tools/shared/qtgradienteditor/qtgradientstopswidget.cpp" line="+947"/>
+        <source>New Stop</source>
+        <translation>Nové zastavení</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Delete</source>
+        <translation>Smazat</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Flip All</source>
+        <translation>Obrátit vše</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Select All</source>
+        <translation>Vybrat vše</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Zoom In</source>
+        <translation>Zvětšit</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Zoom Out</source>
+        <translation>Zmenšit</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Reset Zoom</source>
+        <translation>Nastavit znovu zvětšení</translation>
+    </message>
+</context>
+<context>
+    <name>QtGradientView</name>
+    <message>
+        <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+107"/>
+        <source>Grad</source>
+        <translation>Přechod</translation>
+    </message>
+    <message>
+        <location line="+26"/>
+        <source>Remove Gradient</source>
+        <translation>Odstranit přechod</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Are you sure you want to remove the selected gradient?</source>
+        <translation>Opravdu chcete odstranit vybraný přechod?</translation>
+    </message>
+    <message>
+        <location filename="../tools/shared/qtgradienteditor/qtgradientview.ui"/>
+        <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+74"/>
+        <source>New...</source>
+        <translation>Nový...</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+1"/>
+        <source>Edit...</source>
+        <translation>Upravit...</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+1"/>
+        <source>Rename</source>
+        <translation>Přejmenovat</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../tools/shared/qtgradienteditor/qtgradientview.cpp" line="+1"/>
+        <source>Remove</source>
+        <translation>Odstranit</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Gradient View</source>
+        <translation>Pohled na přechod</translation>
+    </message>
+</context>
+<context>
+    <name>QtGradientViewDialog</name>
+    <message>
+        <location filename="../tools/shared/qtgradienteditor/qtgradientviewdialog.ui"/>
+        <source>Select Gradient</source>
+        <translation>Vybrat přechod</translation>
+    </message>
+</context>
+<context>
+    <name>QtKeySequenceEdit</name>
+    <message>
+        <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="+221"/>
+        <source>Clear Shortcut</source>
+        <translation>Smazat klávesové zkratky</translation>
+    </message>
+</context>
+<context>
+    <name>QtLocalePropertyManager</name>
+    <message>
+        <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-3541"/>
+        <source>%1, %2</source>
+        <translation>%1, %2</translation>
+    </message>
+    <message>
+        <location line="+53"/>
+        <source>Language</source>
+        <translation>Jazyk</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Country</source>
+        <translation>Země</translation>
+    </message>
+</context>
+<context>
+    <name>QtPointFPropertyManager</name>
+    <message>
+        <location line="+411"/>
+        <source>(%1, %2)</source>
+        <translation>(%1, %2)</translation>
+    </message>
+    <message>
+        <location line="+71"/>
+        <source>X</source>
+        <translation>X</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Y</source>
+        <translation>Y</translation>
+    </message>
+</context>
+<context>
+    <name>QtPointPropertyManager</name>
+    <message>
+        <location line="-320"/>
+        <source>(%1, %2)</source>
+        <translation>(%1, %2)</translation>
+    </message>
+    <message>
+        <location line="+37"/>
+        <source>X</source>
+        <translation>X</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Y</source>
+        <translation>Y</translation>
+    </message>
+</context>
+<context>
+    <name>QtPropertyBrowserUtils</name>
+    <message>
+        <location filename="../tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp" line="-136"/>
+        <source>[%1, %2, %3] (%4)</source>
+        <translation>[%1, %2, %3] (%4)</translation>
+    </message>
+    <message>
+        <location line="+30"/>
+        <source>[%1, %2]</source>
+        <translation>[%1, %2]</translation>
+    </message>
+</context>
+<context>
+    <name>QtRectFPropertyManager</name>
+    <message>
+        <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="+1706"/>
+        <source>[(%1, %2), %3 x %4]</source>
+        <translation>[(%1, %2), %3 x %4]</translation>
+    </message>
+    <message>
+        <location line="+156"/>
+        <source>X</source>
+        <translation>X</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Y</source>
+        <translation>Y</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Width</source>
+        <translation>Šířka</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Height</source>
+        <translation>Výška</translation>
+    </message>
+</context>
+<context>
+    <name>QtRectPropertyManager</name>
+    <message>
+        <location line="-612"/>
+        <source>[(%1, %2), %3 x %4]</source>
+        <translation>[(%1, %2), %3 x %4]</translation>
+    </message>
+    <message>
+        <location line="+120"/>
+        <source>X</source>
+        <translation>X</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Y</source>
+        <translation>Y</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Width</source>
+        <translation>Šířka</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Height</source>
+        <translation>Výška</translation>
+    </message>
+</context>
+<context>
+    <name>QtResourceEditorDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="+1961"/>
+        <source>Edit Resources</source>
+        <translation>Upravit zdroje</translation>
+    </message>
+    <message>
+        <location line="+35"/>
+        <source>New...</source>
+        <translation>Nový...</translation>
+    </message>
+    <message>
+        <location line="-565"/>
+        <location line="+566"/>
+        <source>New Resource File</source>
+        <translation>Nový zdrojový soubor</translation>
+    </message>
+    <message>
+        <location line="-413"/>
+        <source>&lt;p&gt;&lt;b&gt;Warning:&lt;/b&gt; The file&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;is outside of the current resource file&apos;s parent directory.&lt;/p&gt;</source>
+        <translation>&lt;p&gt;&lt;b&gt;Upozornění:&lt;/b&gt;&lt;p&gt;Zvolený soubor: &lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;se nachází mimo adresář se nynějším zdrojovým souborem:&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>&lt;p&gt;To resolve the issue, press:&lt;/p&gt;&lt;table&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Copy&lt;/th&gt;&lt;td&gt;to copy the file to the resource file&apos;s parent directory.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Copy As...&lt;/th&gt;&lt;td&gt;to copy the file into a subdirectory of the resource file&apos;s parent directory.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Keep&lt;/th&gt;&lt;td&gt;to use its current location.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
+        <translation>&lt;p&gt;Zvolte, prosím:&lt;/p&gt;&lt;table&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Kopírovat&lt;/th&gt;&lt;td&gt;pro zkopírování souboru do adresáře se zdrojovým souborem.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Kopírovat jako...&lt;/th&gt;&lt;td&gt;pro zkopírování souboru do podadresáře se zdrojovým souborem.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Zachovat&lt;/th&gt;&lt;td&gt;, aby se soubor používal ve svém nynějším adresáři.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</translation>
+    </message>
+    <message>
+        <location line="+288"/>
+        <source>Could not copy
+%1
+to
+%2</source>
+        <translation>Kopírování se nezdařilo:
+%1
+zu:
+%2</translation>
+    </message>
+    <message>
+        <location line="+35"/>
+        <source>A parse error occurred at line %1, column %2 of %3:
+%4</source>
+        <translation>V souboru %3 se na řádku %1, v sloupci %2 vyskytla chyba:
+ %4</translation>
+    </message>
+    <message>
+        <location line="+83"/>
+        <source>Open...</source>
+        <translation>Otevřít...</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+11"/>
+        <source>Remove</source>
+        <translation>Odstranit</translation>
+    </message>
+    <message>
+        <location line="-10"/>
+        <location line="+11"/>
+        <source>Move Up</source>
+        <translation>Posunout nahoru</translation>
+    </message>
+    <message>
+        <location line="-10"/>
+        <location line="+11"/>
+        <source>Move Down</source>
+        <translation>Posunout dolů</translation>
+    </message>
+    <message>
+        <location line="-9"/>
+        <location line="+1"/>
+        <source>Add Prefix</source>
+        <translation>Přidat předponu</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Add Files...</source>
+        <translation>Přidat soubory...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Change Prefix</source>
+        <translation>Změnit předponu</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Change Language</source>
+        <translation>Změnit jazyk</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Change Alias</source>
+        <translation>Změnit přezdívku</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Clone Prefix...</source>
+        <translation>Zdvojit předponu...</translation>
+    </message>
+    <message>
+        <location line="+37"/>
+        <source>Prefix / Path</source>
+        <translation>Předpona/Cesta</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Language / Alias</source>
+        <translation>Jazyk/Přezdívka</translation>
+    </message>
+    <message>
+        <location line="+117"/>
+        <source>&lt;html&gt;&lt;p&gt;&lt;b&gt;Warning:&lt;/b&gt; There have been problems while reloading the resources:&lt;/p&gt;&lt;pre&gt;%1&lt;/pre&gt;&lt;/html&gt;</source>
+        <translation>&lt;html&gt;&lt;p&gt;&lt;b&gt;Varování:&lt;/b&gt; Při opětovném nahrání souboru se vyskytly chyby:&lt;/p&gt;&lt;pre&gt;%1&lt;/pre&gt;&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Resource Warning</source>
+        <translation>Zdroje - Varování</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.ui"/>
+        <source>Dialog</source>
+        <translation>Dialog</translation>
+    </message>
+    <message>
+        <location/>
+        <source>New File</source>
+        <translation>Nový soubor</translation>
+    </message>
+    <message>
+        <location/>
+        <source>N</source>
+        <translation>N</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Remove File</source>
+        <translation>Odstranit soubor</translation>
+    </message>
+    <message>
+        <location/>
+        <source>R</source>
+        <translation>L</translation>
+    </message>
+    <message>
+        <location/>
+        <source>I</source>
+        <translation>I</translation>
+    </message>
+    <message>
+        <location/>
+        <source>New Resource</source>
+        <translation>Nový zdroj</translation>
+    </message>
+    <message>
+        <location/>
+        <source>A</source>
+        <translation>A</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Remove Resource or File</source>
+        <translation>Odstranit zdroj nebo soubor</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qtresourceeditordialog.cpp" line="-2091"/>
+        <source>%1 already exists.
+Do you want to replace it?</source>
+        <translation>Soubor %1 již existuje.
+Chcete jej nahradit?</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>The file does not appear to be a resource file; element &apos;%1&apos; was found where &apos;%2&apos; was expected.</source>
+        <translation>Soubor zřejmě není zdrojovým souborem; Na místě, kde byl očekáván prvek &apos;%2&apos; byl nalezen prvek &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location line="+902"/>
+        <source>%1 [read-only]</source>
+        <translation>%1 [pouze pro čtení]</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+198"/>
+        <source>%1 [missing]</source>
+        <translation>%1 [chybí]</translation>
+    </message>
+    <message>
+        <location line="-72"/>
+        <source>&lt;no prefix&gt;</source>
+        <translation>&lt;žádná předpona&gt;</translation>
+    </message>
+    <message>
+        <location line="+322"/>
+        <location line="+25"/>
+        <source>Resource files (*.qrc)</source>
+        <translation>Zdrojové soubory (*.qrc)</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>Import Resource File</source>
+        <translation>Zavést zdrojový soubor</translation>
+    </message>
+    <message>
+        <location line="+112"/>
+        <source>newPrefix</source>
+        <translation>nováPředpona</translation>
+    </message>
+    <message>
+        <location line="+49"/>
+        <source>Add Files</source>
+        <translation>Přidat soubory</translation>
+    </message>
+    <message>
+        <location line="+21"/>
+        <source>Incorrect Path</source>
+        <translation>Nesprávný údaj o cestě</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location line="+19"/>
+        <location line="+212"/>
+        <location line="+7"/>
+        <source>Copy</source>
+        <translation>Kopírovat</translation>
+    </message>
+    <message>
+        <location line="-236"/>
+        <source>Copy As...</source>
+        <translation>Kopírovat jako...</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Keep</source>
+        <translation>Zachovat</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Skip</source>
+        <translation>Přeskočit</translation>
+    </message>
+    <message>
+        <location line="+87"/>
+        <source>Clone Prefix</source>
+        <translation>Zdvojit předponu</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Enter the suffix which you want to add to the names of the cloned files.
+This could for example be a language extension like &quot;_de&quot;.</source>
+        <translation>Zadejte, prosím, příponu, kterou chcete přidat k názvům zdvojených souborů.
+Může to být například jazykové rozšíření &quot;_cs&quot;.</translation>
+    </message>
+    <message>
+        <location line="+113"/>
+        <location line="+4"/>
+        <source>Copy As</source>
+        <translation>Kopírovat jako</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&lt;p&gt;The selected file:&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;is outside of the current resource file&apos;s directory:&lt;/p&gt;&lt;p&gt;%2&lt;/p&gt;&lt;p&gt;Please select another path within this directory.&lt;p&gt;</source>
+        <translation>&lt;p&gt;Vybraný soubor: &lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;se nachází mimo adresář se zdrojovým souborem:&lt;/p&gt;&lt;p&gt;%2&lt;/p&gt;&lt;p&gt;Zvolte, prosím, jinou cestu, která je obsažena v tomto adresáři.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Could not overwrite %1.</source>
+        <translation>%1 se nepodařilo přepsat.</translation>
+    </message>
+    <message>
+        <location line="+54"/>
+        <source>Save Resource File</source>
+        <translation>Uložit zdrojový soubor</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Could not write %1: %2</source>
+        <translation>Soubor %1 se nepodařilo zapsat: %2</translation>
+    </message>
+    <message>
+        <location line="+71"/>
+        <source>Open Resource File</source>
+        <translation>Otevřít zdrojový soubor</translation>
+    </message>
+</context>
+<context>
+    <name>QtResourceView</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+566"/>
+        <source>Size: %1 x %2
+%3</source>
+        <translation>Velikost: %1 x %2
+%3</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Edit Resources...</source>
+        <translation>Upravit zdroje...</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Reload</source>
+        <translation>Nahrát znovu</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Copy Path</source>
+        <translation>Kopírovat cestu</translation>
+    </message>
+</context>
+<context>
+    <name>QtResourceViewDialog</name>
+    <message>
+        <location line="+250"/>
+        <source>Select Resource</source>
+        <translation>Vybrat zdroj</translation>
+    </message>
+</context>
+<context>
+    <name>QtSizeFPropertyManager</name>
+    <message>
+        <location filename="../tools/shared/qtpropertybrowser/qtpropertymanager.cpp" line="-535"/>
+        <source>%1 x %2</source>
+        <translation>%1 x %2</translation>
+    </message>
+    <message>
+        <location line="+130"/>
+        <source>Width</source>
+        <translation>Šířka</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Height</source>
+        <translation>Výška</translation>
+    </message>
+</context>
+<context>
+    <name>QtSizePolicyPropertyManager</name>
+    <message>
+        <location line="+1709"/>
+        <location line="+1"/>
+        <source>&lt;Invalid&gt;</source>
+        <translation>&lt;Neplatný&gt;</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>[%1, %2, %3, %4]</source>
+        <translation>[%1, %2, %3, %4]</translation>
+    </message>
+    <message>
+        <location line="+45"/>
+        <source>Horizontal Policy</source>
+        <translation>Vodorovné nastavení</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Vertical Policy</source>
+        <translation>Svislé nastavení</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Horizontal Stretch</source>
+        <translation>Vodorovné protažení</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Vertical Stretch</source>
+        <translation>Svislé protažení</translation>
+    </message>
+</context>
+<context>
+    <name>QtSizePropertyManager</name>
+    <message>
+        <location line="-2286"/>
+        <source>%1 x %2</source>
+        <translation>%1 x %2</translation>
+    </message>
+    <message>
+        <location line="+96"/>
+        <source>Width</source>
+        <translation>Šířka</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Height</source>
+        <translation>Výška</translation>
+    </message>
+</context>
+<context>
+    <name>QtToolBarDialog</name>
+    <message>
+        <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="+1784"/>
+        <source>&lt; S E P A R A T O R &gt;</source>
+        <translation>&lt; O D D Ě L O V A Č &gt;</translation>
+    </message>
+    <message>
+        <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui"/>
+        <source>Customize Toolbars</source>
+        <translation>Přizpůsobit nástrojové pruhy</translation>
+    </message>
+    <message>
+        <location/>
+        <source>1</source>
+        <translation>1</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Actions</source>
+        <translation>Činnosti</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Toolbars</source>
+        <translation>Nástrojové pruhy</translation>
+    </message>
+    <message>
+        <location/>
+        <source>New</source>
+        <translation>Nový</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Remove</source>
+        <translation>Odstranit</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Rename</source>
+        <translation>Přejmenovat</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Up</source>
+        <translation>Nahoru</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&lt;-</source>
+        <translation>&lt;-</translation>
+    </message>
+    <message>
+        <location/>
+        <source>-&gt;</source>
+        <translation>-&gt;</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Down</source>
+        <translation>Dolů</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Current Toolbar Actions</source>
+        <translation>Činnosti současného nástrojového pruhu</translation>
+    </message>
+    <message>
+        <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.cpp" line="-544"/>
+        <source>Custom Toolbar</source>
+        <translation>Uživatelsky stanovené nástrojové pruhy</translation>
+    </message>
+    <message>
+        <location filename="../tools/shared/qttoolbardialog/qttoolbardialog.ui"/>
+        <source>Add new toolbar</source>
+        <translation>Přidat nový nástrojový pruh</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Remove selected toolbar</source>
+        <translation>Odstranit vybraný nástrojový pruh</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Rename toolbar</source>
+        <translation>Přejmenovat nástrojový pruh</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move action up</source>
+        <translation>Posunout činnost nahoru</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Remove action from toolbar</source>
+        <translation>Odstranit činnost z nástrojového pruhu</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Add action to toolbar</source>
+        <translation>Přidat činnost do nástrojového pruhu</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move action down</source>
+        <translation>Posunout činnost dolů</translation>
+    </message>
+</context>
+<context>
+    <name>QtTreePropertyBrowser</name>
+    <message>
+        <location filename="../tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp" line="+442"/>
+        <source>Property</source>
+        <translation>Vlastnost</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Value</source>
+        <translation>Hodnota</translation>
+    </message>
+</context>
+<context>
+    <name>SaveFormAsTemplate</name>
+    <message>
+        <location filename="../tools/designer/src/designer/saveformastemplate.cpp" line="+72"/>
+        <source>Add path...</source>
+        <translation>Přidat cestu...</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Template Exists</source>
+        <translation>Předloha již existuje</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A template with the name %1 already exists.
+Do you want overwrite the template?</source>
+        <translation>Již existuje předloha s názvem %1.
+Chcete tuto předlohu přepsat?</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Overwrite Template</source>
+        <translation>Přepsat předlohu</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Open Error</source>
+        <translation>Chyba při otevírání</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>There was an error opening template %1 for writing. Reason: %2</source>
+        <translation>Předlohu %1 se nepodařilo otevřít pro zápis. Důvod: %2</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Write Error</source>
+        <translation>Chyba při zápisu</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>There was an error writing the template %1 to disk. Reason: %2</source>
+        <translation>Předlohu %1 se nepodařilo zapsat do souboru na disku. Důvod: %2</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <source>Pick a directory to save templates in</source>
+        <translation>Vyberte adresář pro ukládání předloh</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/designer/saveformastemplate.ui"/>
+        <source>Save Form As Template</source>
+        <translation>Uložit formulář jako předlohu</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Category:</source>
+        <translation>&amp;Skupina:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Name:</source>
+        <translation>&amp;Název:</translation>
+    </message>
+</context>
+<context>
+    <name>ScriptErrorDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+59"/>
+        <source>An error occurred while running the scripts for &quot;%1&quot;:
+</source>
+        <translation>Při provádění skriptu &quot;%1&quot; se vyskytly chyby:
+</translation>
+    </message>
+</context>
+<context>
+    <name>SelectSignalDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/selectsignaldialog.ui"/>
+        <source>Go to slot</source>
+        <translation>Jít na zdířku</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Select signal</source>
+        <translation>Vybrat signál</translation>
+    </message>
+    <message>
+        <location/>
+        <source>signal</source>
+        <translation>Signál</translation>
+    </message>
+    <message>
+        <location/>
+        <source>class</source>
+        <translation>Třída</translation>
+    </message>
+</context>
+<context>
+    <name>SignalSlotConnection</name>
+    <message>
+        <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor.cpp" line="-358"/>
+        <source>SENDER(%1), SIGNAL(%2), RECEIVER(%3), SLOT(%4)</source>
+        <translation>VYSÍLAČ(%1), SIGNÁL(%2), PŘIJÍMAČ(%3), ZDÍŘKA(%4)</translation>
+    </message>
+</context>
+<context>
+    <name>SignalSlotDialogClass</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/signalslotdialog.ui"/>
+        <source>Signals and slots</source>
+        <translation>Signály a zdířky</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Slots</source>
+        <translation>Zdířky</translation>
+    </message>
+    <message>
+        <location/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Signals</source>
+        <translation>Signály</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Add</source>
+        <translation>Přidat</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Delete</source>
+        <translation>Smazat</translation>
+    </message>
+</context>
+<context>
+    <name>Spacer</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/spacer_widget.cpp" line="+275"/>
+        <source>Horizontal Spacer &apos;%1&apos;, %2 x %3</source>
+        <translation>Vodorovný vymezovač &apos;%1&apos;, %2 x %3</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Vertical Spacer &apos;%1&apos;, %2 x %3</source>
+        <translation>Svislý vymezovač &apos;%1&apos;, %2 x %3</translation>
+    </message>
+</context>
+<context>
+    <name>TemplateOptionsPage</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="+156"/>
+        <source>Template Paths</source>
+        <extracomment>Tab in preferences dialog</extracomment>
+        <translation>Adresáře pro předlohy</translation>
+    </message>
+</context>
+<context>
+    <name>ToolBarManager</name>
+    <message>
+        <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+89"/>
+        <source>Configure Toolbars...</source>
+        <translation>Nastavit nástrojové pruhy...</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Window</source>
+        <translation>Okno</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Help</source>
+        <translation>Nápověda</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Style</source>
+        <translation>Styl</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Dock views</source>
+        <translation>Kotvící okno</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Toolbars</source>
+        <translation>Nástrojové pruhy</translation>
+    </message>
+</context>
+<context>
+    <name>VersionDialog</name>
+    <message>
+        <location filename="../tools/designer/src/designer/versiondialog.cpp" line="+171"/>
+        <source>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;&lt;br/&gt;Version %2</source>
+        <translation>&lt;h3&gt;%1&lt;/h3&gt;&lt;br/&gt;&lt;br/&gt;Verze %2</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Qt Designer</source>
+        <translation>Qt Designer</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&lt;br/&gt;Qt Designer is a graphical user interface designer for Qt applications.&lt;br/&gt;</source>
+        <translation>&lt;br/&gt;Qt Designer je obrazový návrhář uživatelského rozhraní pro programy Qt.&lt;br/&gt;</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1&lt;br/&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</source>
+        <translation>%1&lt;br/&gt;Autorské právo (C) 2009 Nokia Corporation a/nebo její dceřinná společnost(i).</translation>
+    </message>
+</context>
+<context>
+    <name>WidgetDataBase</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/widgetdatabase.cpp" line="+814"/>
+        <source>The file contains a custom widget &apos;%1&apos; whose base class (%2) differs from the current entry in the widget database (%3). The widget database is left unchanged.</source>
+        <translation>Soubor obsahuje uživatelsky stanovený prvek &apos;%1&apos;, jehož základní třída (%2) se neshoduje se současným záznamem v databázi prvků (%3). databáze prvků se nemění.</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ActionEditor</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/actioneditor.cpp" line="+139"/>
+        <source>Actions</source>
+        <translation>Činnosti</translation>
+    </message>
+    <message>
+        <location line="-16"/>
+        <source>New...</source>
+        <translation>Nový...</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Delete</source>
+        <translation>Smazat</translation>
+    </message>
+    <message>
+        <location line="+313"/>
+        <source>New action</source>
+        <translation>Nová činnost</translation>
+    </message>
+    <message>
+        <location line="+98"/>
+        <source>Edit action</source>
+        <translation>Upravit činnost</translation>
+    </message>
+    <message>
+        <location line="-417"/>
+        <source>Edit...</source>
+        <translation>Upravit...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Go to slot...</source>
+        <translation>Jít na zdířku...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Copy</source>
+        <translation>Kopírovat</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Cut</source>
+        <translation>Vyjmout</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Paste</source>
+        <translation>Vložit</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Select all</source>
+        <translation>Vybrat vše</translation>
+    </message>
+    <message>
+        <location line="+62"/>
+        <source>Icon View</source>
+        <translation>Pohled s ikonami</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Detailed View</source>
+        <translation>Podrobný pohled</translation>
+    </message>
+    <message>
+        <location line="+413"/>
+        <source>Remove actions</source>
+        <translation>Odstranit činnosti</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Remove action &apos;%1&apos;</source>
+        <translation>Odstranit činnost &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+186"/>
+        <source>Used In</source>
+        <translation>Používaný v</translation>
+    </message>
+    <message>
+        <location line="-608"/>
+        <source>Configure Action Editor</source>
+        <translation>Nastavit editor činností</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ActionModel</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/actionrepository.cpp" line="+95"/>
+        <source>Name</source>
+        <translation>Název</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Used</source>
+        <translation>Používaný</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Text</source>
+        <translation>Text</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Shortcut</source>
+        <translation>Klávesová zkratka</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Checkable</source>
+        <translation>Zaškrtnutelná</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>ToolTip</source>
+        <translation>Rada k nástroji</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::BrushManagerProxy</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/brushmanagerproxy.cpp" line="+219"/>
+        <source>The element &apos;%1&apos; is missing the required attribute &apos;%2&apos;.</source>
+        <translation>U prvku &apos;%1&apos; chybí vyžadovaná vlastnost &apos;%2&apos;..</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Empty brush name encountered.</source>
+        <translation>Chybějící název u vymezení štětce.</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>An unexpected element &apos;%1&apos; was encountered.</source>
+        <translation>Byl zjištěn neplatný prvek &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>An error occurred when reading the brush definition file &apos;%1&apos; at line line %2, column %3: %4</source>
+        <translation>Chyba při čtení souboru s vymezením štětce &apos;%1&apos; na řádku %2, sloupec %3: %4</translation>
+    </message>
+    <message>
+        <location line="+43"/>
+        <source>An error occurred when reading the resource file &apos;%1&apos; at line %2, column %3: %4</source>
+        <translation>Chyba při čtení zdrojového souboru &apos;%1&apos; na řádku %2, sloupec %3: %4</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::BuddyEditor</name>
+    <message>
+        <location filename="../tools/designer/src/components/buddyeditor/buddyeditor.cpp" line="+261"/>
+        <source>Add buddy</source>
+        <translation>Přidat kamaráda</translation>
+    </message>
+    <message>
+        <location line="+52"/>
+        <source>Remove buddies</source>
+        <translation>Odstranit kamarády</translation>
+    </message>
+    <message numerus="yes">
+        <location line="+24"/>
+        <source>Remove %n buddies</source>
+        <translation>
+            <numerusform>Odstranit jednoho kamaráda</numerusform>
+            <numerusform>Odstranit %n kamarády</numerusform>
+            <numerusform>Odstranit %n kamarády</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location line="+51"/>
+        <source>Add %n buddies</source>
+        <translation>
+            <numerusform>Přidat jednoho kamaráda</numerusform>
+            <numerusform>Přidat %n kamarády</numerusform>
+            <numerusform>Přidat %n kamarády</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location line="+47"/>
+        <source>Set automatically</source>
+        <translation>Nastavit automaticky</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::BuddyEditorPlugin</name>
+    <message>
+        <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp" line="+73"/>
+        <source>Edit Buddies</source>
+        <translation>Upravit kamarády</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::BuddyEditorTool</name>
+    <message>
+        <location filename="../tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp" line="+56"/>
+        <source>Edit Buddies</source>
+        <translation>Upravit kamarády</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ButtonGroupMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+7"/>
+        <source>Select members</source>
+        <translation>Vybrat členy</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Break</source>
+        <translation>Zrušit</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ButtonTaskMenu</name>
+    <message>
+        <location line="+121"/>
+        <source>Assign to button group</source>
+        <translation>Přiřadit ke skupině tlačítek</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Button group</source>
+        <translation>Skupina tlačítek</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>New button group</source>
+        <translation>Nová skupina tlačítek</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Change text...</source>
+        <translation>Změnit text...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>None</source>
+        <translation>Žádný</translation>
+    </message>
+    <message>
+        <location line="+101"/>
+        <source>Button group &apos;%1&apos;</source>
+        <translation>Skupina tlačítek &apos;%1&apos;</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::CodeDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/codedialog.cpp" line="+95"/>
+        <source>Save...</source>
+        <translation>Uložit...</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Copy All</source>
+        <translation>Kopírovat vše</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>&amp;Find in Text...</source>
+        <translation>&amp;Najít v textu...</translation>
+    </message>
+    <message>
+        <location line="+75"/>
+        <source>A temporary form file could not be created in %1.</source>
+        <translation>V adresáři %1 se nepodařilo vytvořit dočasný soubor s formulářem.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The temporary form file %1 could not be written.</source>
+        <translation>Dočasný soubor s formulářem %1 se nepodařilo zapsat.</translation>
+    </message>
+    <message>
+        <location line="+21"/>
+        <source>%1 - [Code]</source>
+        <translation>%1 - [Kód]</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Save Code</source>
+        <translation>Uložit kód</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Header Files (*.%1)</source>
+        <translation>Hlavičkové soubory (*.%1)</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The file %1 could not be opened: %2</source>
+        <translation>Soubor %1 se nepodařilo otevřít: %2</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>The file %1 could not be written: %2</source>
+        <translation>Soubor %1 se nepodařilo zapsat: %2</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>%1 - Error</source>
+        <translation>%1 - Chyba</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ColorAction</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+246"/>
+        <source>Text Color</source>
+        <translation>Barva textu</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ComboBoxTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/combobox_taskmenu.cpp" line="+68"/>
+        <source>Edit Items...</source>
+        <translation>Upravit záznamy...</translation>
+    </message>
+    <message>
+        <location line="+38"/>
+        <source>Change Combobox Contents</source>
+        <translation>Změnit obsah skupinové krabice</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::CommandLinkButtonTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/button_taskmenu.cpp" line="+156"/>
+        <source>Change description...</source>
+        <translation>Změnit popis...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ConnectionEdit</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/connectionedit.cpp" line="+1313"/>
+        <source>Select All</source>
+        <translation>Vybrat vše</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Delete</source>
+        <translation>Smazat</translation>
+    </message>
+    <message>
+        <location line="-5"/>
+        <source>Deselect All</source>
+        <translation>Zrušit výběr všeho</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ConnectionModel</name>
+    <message>
+        <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp" line="-465"/>
+        <source>Sender</source>
+        <translation>Vysílač</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Signal</source>
+        <translation>Signál</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Receiver</source>
+        <translation>Přijímač</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Slot</source>
+        <translation>Zdířka</translation>
+    </message>
+    <message>
+        <location line="+90"/>
+        <source>&lt;sender&gt;</source>
+        <translation>&lt;Vysílač&gt;</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&lt;signal&gt;</source>
+        <translation>&lt;Signál&gt;</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&lt;receiver&gt;</source>
+        <translation>&lt;Přijímač&gt;</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&lt;slot&gt;</source>
+        <translation>&lt;Zdířka&gt;</translation>
+    </message>
+    <message>
+        <location line="+110"/>
+        <source>Signal and Slot Editor</source>
+        <translation>Editor signálů a zdířek</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>The connection already exists!&lt;br&gt;%1</source>
+        <translation>Toto spojení již existuje!&lt;br&gt;%1&lt;/br&gt;</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ContainerWidgetTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+107"/>
+        <source>Insert Page Before Current Page</source>
+        <translation>Vložit stranu před nynější stranu</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Insert Page After Current Page</source>
+        <translation>Vložit stranu po nynější straně</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Add Subwindow</source>
+        <translation>Přidat podokno</translation>
+    </message>
+    <message>
+        <location line="-40"/>
+        <source>Delete</source>
+        <translation>Smazat</translation>
+    </message>
+    <message>
+        <location line="+25"/>
+        <source>Insert</source>
+        <translation>Vložit</translation>
+    </message>
+    <message>
+        <location line="+53"/>
+        <source>Subwindow</source>
+        <translation>Podokno</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Page</source>
+        <translation>Strana</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Page %1 of %2</source>
+        <translation>Strana %1 z %2</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::DPI_Chooser</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/dpi_chooser.cpp" line="+52"/>
+        <source> x </source>
+        <extracomment>DPI X/Y separator</extracomment>
+        <translation> x </translation>
+    </message>
+    <message>
+        <location line="-25"/>
+        <source>System (%1 x %2)</source>
+        <extracomment>System resolution</extracomment>
+        <translation>Systémové rozlišení (%1 x %2)</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>User defined</source>
+        <translation>Stanoveno uživatelem</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::DesignerPropertyManager</name>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="+647"/>
+        <location line="+6"/>
+        <source>AlignLeft</source>
+        <translation>Zarovnat k levému okraji</translation>
+    </message>
+    <message>
+        <location line="-5"/>
+        <source>AlignHCenter</source>
+        <translation>Zarovnat vodorovně na střed</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>AlignRight</source>
+        <translation>Zarovnat k pravému okraji</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>AlignJustify</source>
+        <translation>Zarovnat do bloku</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>AlignTop</source>
+        <translation>Zarovnat k hornímu okraji</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <location line="+4"/>
+        <source>AlignVCenter</source>
+        <translation>Zarovnat svisle na střed</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>AlignBottom</source>
+        <translation>Zarovnat k dolnímu okraji</translation>
+    </message>
+    <message>
+        <location line="+565"/>
+        <source>%1, %2</source>
+        <translation>%1, %2</translation>
+    </message>
+    <message numerus="yes">
+        <location line="+6"/>
+        <source>Customized (%n roles)</source>
+        <translation>
+            <numerusform>Přizpůsobeno (role)</numerusform>
+            <numerusform>Přizpůsobeno (%n role)</numerusform>
+            <numerusform>Přizpůsobeno (%n role)</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Inherited</source>
+        <translation>Zděděno</translation>
+    </message>
+    <message>
+        <location line="+566"/>
+        <source>Horizontal</source>
+        <translation>Vodorovný</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Vertical</source>
+        <translation>Svislý</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Normal Off</source>
+        <translation>Obvyklé, vypnuto</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Normal On</source>
+        <translation>Obvyklé, zapnuto</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Disabled Off</source>
+        <translation>Zakázáno, vypnuto</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Disabled On</source>
+        <translation>Zakázáno, zapnuto</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Active Off</source>
+        <translation>V činnosti, vypnuto</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Active On</source>
+        <translation>V činnosti, zapnuto</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Selected Off</source>
+        <translation>Vybráno, vypnuto</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Selected On</source>
+        <translation>Vybráno, zapnuto</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <location line="+21"/>
+        <source>translatable</source>
+        <translation>Překlad</translation>
+    </message>
+    <message>
+        <location line="-15"/>
+        <location line="+21"/>
+        <source>disambiguation</source>
+        <translation>Zabránění dvojznačnosti</translation>
+    </message>
+    <message>
+        <location line="-15"/>
+        <location line="+21"/>
+        <source>comment</source>
+        <translation>Poznámka</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::DeviceProfileDialog</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/deviceprofiledialog.cpp" line="+63"/>
+        <source>Device Profiles (*.%1)</source>
+        <translation>Profily zařízení (*.%1)</translation>
+    </message>
+    <message>
+        <location line="+31"/>
+        <source>Default</source>
+        <translation>Výchozí</translation>
+    </message>
+    <message>
+        <location line="+67"/>
+        <source>Save Profile</source>
+        <translation>Uložit profil</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Save Profile - Error</source>
+        <translation>Chyba při ukládání profilu</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Unable to open the file &apos;%1&apos; for writing: %2</source>
+        <translation>Soubor &apos;%1&apos; se nepodařilo otevřít pro zápis: %2</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Unable to open the file &apos;%1&apos; for reading: %2</source>
+        <translation>Soubor &apos;%1&apos; se nepodařilo otevřít pro čtení: %2</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>&apos;%1&apos; is not a valid profile: %2</source>
+        <translation>&apos;%1&apos; není platným profilem: %2</translation>
+    </message>
+    <message>
+        <location line="-12"/>
+        <source>Open profile</source>
+        <translation>Otevřít profil</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <location line="+6"/>
+        <source>Open Profile - Error</source>
+        <translation>Chyba při otevírání profilu</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::Dialog</name>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/stringlisteditor.ui"/>
+        <source>Dialog</source>
+        <translation>Dialog</translation>
+    </message>
+    <message>
+        <location/>
+        <source>StringList</source>
+        <translation>Seznam řetězců znaků</translation>
+    </message>
+    <message>
+        <location/>
+        <source>New String</source>
+        <translation>Nový řetězec znaků</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;New</source>
+        <translation>&amp;Nový</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Delete String</source>
+        <translation>Smazat řetězec znaků</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Delete</source>
+        <translation>&amp;Smazat</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Value:</source>
+        <translation>&amp;Hodnota:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move String Up</source>
+        <translation>Posunout řetězec znaků nahoru</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Up</source>
+        <translation>Nahoru</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move String Down</source>
+        <translation>Posunout řetězec znaků dolů</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Down</source>
+        <translation>Dolů</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::EmbeddedOptionsControl</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/embeddedoptionspage.cpp" line="-260"/>
+        <source>None</source>
+        <translation>Žádný</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Add a profile</source>
+        <translation>Přidat profil</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Edit the selected profile</source>
+        <translation>Upravit vybraný profil</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Delete the selected profile</source>
+        <translation>Smazat vybraný profil</translation>
+    </message>
+    <message>
+        <location line="+22"/>
+        <source>Add Profile</source>
+        <translation>Přidat profil</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>New profile</source>
+        <translation>Nový profil</translation>
+    </message>
+    <message>
+        <location line="+35"/>
+        <source>Edit Profile</source>
+        <translation>Upravit profil</translation>
+    </message>
+    <message>
+        <location line="+26"/>
+        <source>Delete Profile</source>
+        <translation>Smazat profil</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Would you like to delete the profile &apos;%1&apos;?</source>
+        <translation>Chcete smazat profil &apos;%1&apos;?</translation>
+    </message>
+    <message>
+        <location line="+55"/>
+        <source>Default</source>
+        <translation>Výchozí</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::FilterWidget</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+185"/>
+        <source>&lt;Filter&gt;</source>
+        <translation>&lt;FIltr&gt;</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::FormEditor</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/formeditor.cpp" line="+190"/>
+        <source>Resource File Changed</source>
+        <translation>Zdrojový soubor byl změněn</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>The file &quot;%1&quot; has changed outside Designer. Do you want to reload it?</source>
+        <translation>Zdrojový soubor &quot;%1&quot; byl změněn mimo program Designer. Chcete jej znovu nahrát?</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::FormLayoutMenu</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/formlayoutmenu.cpp" line="+24"/>
+        <source>Add form layout row...</source>
+        <translation>Přidat řádek s rozvržením formuláře...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::FormWindow</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/formwindow.cpp" line="-1267"/>
+        <source>Edit contents</source>
+        <translation>Upravit obsah</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>F2</source>
+        <translation>F2</translation>
+    </message>
+    <message>
+        <location line="+841"/>
+        <source>Resize</source>
+        <translation>Změnit velikost</translation>
+    </message>
+    <message>
+        <location line="+218"/>
+        <location line="+15"/>
+        <source>Key Move</source>
+        <translation>Posunout s pomocí klávesnice</translation>
+    </message>
+    <message>
+        <location line="+276"/>
+        <source>Paste error</source>
+        <translation>Chyba při vložení</translation>
+    </message>
+    <message>
+        <location line="+445"/>
+        <source>Lay out</source>
+        <translation>Rozvržení</translation>
+    </message>
+    <message>
+        <location line="+493"/>
+        <location line="+55"/>
+        <source>Drop widget</source>
+        <translation>Vložit prvek</translation>
+    </message>
+    <message numerus="yes">
+        <location line="-1058"/>
+        <source>Paste %n action(s)</source>
+        <translation>
+            <numerusform>Vložit jednu činnost</numerusform>
+            <numerusform>Vložit %n činnosti</numerusform>
+            <numerusform>Vložit %n činnosti</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location line="-511"/>
+        <source>Insert widget &apos;%1&apos;</source>
+        <translation>Vložit prvek &apos;%1&apos;</translation>
+    </message>
+    <message numerus="yes">
+        <location line="+513"/>
+        <source>Paste %n widget(s)</source>
+        <translation>
+            <numerusform>Vložit jeden prvek</numerusform>
+            <numerusform>Vložit %n prvky</numerusform>
+            <numerusform>Vložit %n prvky</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Paste (%1 widgets, %2 actions)</source>
+        <translation>Vložit (%1 prvky, %2 činnosti)</translation>
+    </message>
+    <message>
+        <location line="+56"/>
+        <source>Cannot paste widgets. Designer could not find a container without a layout to paste into.</source>
+        <translation>Prvky nelze vložit, protože se nepodařilo nalézt kontejner, který již nemá rozvržení.</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Break the layout of the container you want to paste into, select this container and then paste again.</source>
+        <translation>Zrušte, prosím, rozvržení kontejneru, do kterého chcete vkládat. Vyberte jej znovu a proveďte vložení znovu.</translation>
+    </message>
+    <message>
+        <location line="+408"/>
+        <source>Select Ancestor</source>
+        <translation>Vybrat nadřazený prvek</translation>
+    </message>
+    <message>
+        <location line="+576"/>
+        <source>A QMainWindow-based form does not contain a central widget.</source>
+        <translation>Formulář založený na QMainWindow neobsahuje ústřední prvek.</translation>
+    </message>
+    <message>
+        <location line="-797"/>
+        <source>Raise widgets</source>
+        <translation>Přenést prvky do popředí</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Lower widgets</source>
+        <translation>Přenést prvky do pozadí</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::FormWindowBase</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+393"/>
+        <source>Delete</source>
+        <translation>Smazat</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Delete &apos;%1&apos;</source>
+        <translation>Smazat &apos;%1&apos;</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::FormWindowManager</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/formwindowmanager.cpp" line="+364"/>
+        <source>Cu&amp;t</source>
+        <translation>Vyj&amp;mout</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Cuts the selected widgets and puts them on the clipboard</source>
+        <translation>Vyjme vybrané prvky a odloží je do schránky</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Kopírovat</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Copies the selected widgets to the clipboard</source>
+        <translation>Zkopíruje vybrané prvky do schránky</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>&amp;Paste</source>
+        <translation>&amp;Vložit</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Pastes the clipboard&apos;s contents</source>
+        <translation>Vloží obsah schránky</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>&amp;Delete</source>
+        <translation>&amp;Smazat</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Deletes the selected widgets</source>
+        <translation>Smaže vybrané prvky</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Select &amp;All</source>
+        <translation>Vybrat &amp;vše</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Selects all widgets</source>
+        <translation>Vybere všechny prvky</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Bring to &amp;Front</source>
+        <translation>Přenést do &amp;popředí</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location line="+1"/>
+        <source>Raises the selected widgets</source>
+        <translation>Přenese vybrané prvky do popředí</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Send to &amp;Back</source>
+        <translation>Přenést do po&amp;zadí</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location line="+1"/>
+        <source>Lowers the selected widgets</source>
+        <translation>Přenese vybrané prvky do pozadí</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Adjust &amp;Size</source>
+        <translation>Přizpůsobit &amp;velikost</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Adjusts the size of the selected widget</source>
+        <translation>Spočítá velikost vybraného prvku z rozvržení a přizpůsobí velikost prvku</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Lay Out &amp;Horizontally</source>
+        <translation>Uspořádat předměty &amp;vodorovně</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Lays out the selected widgets horizontally</source>
+        <translation>Uspořádá vybrané předměty vodorovně</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Lay Out &amp;Vertically</source>
+        <translation>Uspořádat předměty &amp;svisle</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Lays out the selected widgets vertically</source>
+        <translation>Uspořádá vybrané předměty svisle</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Lay Out in a &amp;Grid</source>
+        <translation>Uspořádat předměty &amp;tabulkově</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Lays out the selected widgets in a grid</source>
+        <translation>Uspořádá vybrané předměty tabulkově</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Lay Out Horizontally in S&amp;plitter</source>
+        <translation>Uspořádat předměty vodorovně okolo &amp;dělící příčky</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Lays out the selected widgets horizontally in a splitter</source>
+        <translation>Uspořádá vybrané předměty vodorovně okolo dělící příčky</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Lay Out Vertically in Sp&amp;litter</source>
+        <translation>Uspořádat předměty svisle okolo dě&amp;lící příčky</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Lays out the selected widgets vertically in a splitter</source>
+        <translation>Uspořádá vybrané předměty svisle okolo dělící příčky</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>&amp;Break Layout</source>
+        <translation>&amp;Zrušit rozvržení</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Breaks the selected layout</source>
+        <translation>Zruší vybrané rozvržení</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>&amp;Preview...</source>
+        <translation>&amp;Náhled...</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Preview current form</source>
+        <translation>Náhled nynějšího formuláře</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Form &amp;Settings...</source>
+        <translation>&amp;Nastavení formuláře...</translation>
+    </message>
+    <message>
+        <location line="+92"/>
+        <source>Break Layout</source>
+        <translation>Zrušit rozvržení</translation>
+    </message>
+    <message>
+        <location line="+26"/>
+        <source>Adjust Size</source>
+        <translation>Přizpůsobit velikost</translation>
+    </message>
+    <message>
+        <location line="+43"/>
+        <source>Could not create form preview</source>
+        <comment>Title of warning message box</comment>
+        <translation>Nepodařilo se vytvořit náhled formuláře</translation>
+    </message>
+    <message>
+        <location line="+341"/>
+        <source>Form Settings - %1</source>
+        <translation>Nastavení formuláře - %1</translation>
+    </message>
+    <message>
+        <location line="-525"/>
+        <source>Removes empty columns and rows</source>
+        <translation>Odstraní prázdné řádky a sloupce</translation>
+    </message>
+    <message>
+        <location line="-50"/>
+        <source>Lay Out in a &amp;Form Layout</source>
+        <translation>Uspořádat předměty v &amp;rozvržení formuláře</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Lays out the selected widgets in a form layout</source>
+        <translation>Uspořádá vybrané předměty v dvousloupcovém rozvržení formuláře</translation>
+    </message>
+    <message>
+        <location line="+45"/>
+        <source>Si&amp;mplify Grid Layout</source>
+        <translation>Z&amp;jednodušit tabulkové rozvržení</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::FormWindowSettings</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/formwindowsettings.cpp" line="+193"/>
+        <source>None</source>
+        <translation>Žádný</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Device Profile: %1</source>
+        <translation>Profil zařízení: %1</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::GridPanel</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/gridpanel.ui"/>
+        <source>Visible</source>
+        <translation>Viditelný</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Snap</source>
+        <translation>Zapadnout</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Reset</source>
+        <translation>Nastavit znovu</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Form</source>
+        <translation>Formulář</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Grid</source>
+        <translation>Mřížka</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Grid &amp;X</source>
+        <translation>Mřížka &amp;x</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Grid &amp;Y</source>
+        <translation>Mřížka &amp;y</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::GroupBoxTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp" line="+82"/>
+        <source>Change title...</source>
+        <translation>Změnit název...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::HtmlTextEdit</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="-58"/>
+        <source>Insert HTML entity</source>
+        <translation>Vložit HTML znak</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::IconSelector</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-24"/>
+        <source>The pixmap file &apos;%1&apos; cannot be read.</source>
+        <translation>Soubor s pixmapou &apos;%1&apos; nelze přečíst.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>The file &apos;%1&apos; does not appear to be a valid pixmap file: %2</source>
+        <translation>Soubor &apos;%1&apos; není platným souborem s pixmapou: %2</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>The file &apos;%1&apos; could not be read: %2</source>
+        <translation>Soubor %1 se nepodařilo přečít: %2</translation>
+    </message>
+    <message>
+        <location line="+40"/>
+        <source>Pixmap Read Error</source>
+        <translation>Chyba při čtení pixmapy</translation>
+    </message>
+    <message>
+        <location line="+54"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Normal Off</source>
+        <translation>Obvyklé, vypnuto</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Normal On</source>
+        <translation>Obvyklé, zapnuto</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Disabled Off</source>
+        <translation>Zakázáno, vypnuto</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Disabled On</source>
+        <translation>Zakázáno, zapnuto</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Active Off</source>
+        <translation>V činnosti, vypnuto</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Active On</source>
+        <translation>V činnosti, zapnuto</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Selected Off</source>
+        <translation>Vybráno, vypnuto</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Selected On</source>
+        <translation>Vybráno, zapnuto</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Choose Resource...</source>
+        <translation>Vybrat zdroj...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Choose File...</source>
+        <translation>Vybrat soubor...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Reset</source>
+        <translation>Nastavit znovu</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Reset All</source>
+        <translation>Nastavit znovu vše</translation>
+    </message>
+    <message>
+        <location line="-85"/>
+        <source>Choose a Pixmap</source>
+        <translation>Vybrat pixmapu</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ItemListEditor</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+358"/>
+        <source>Properties &amp;&lt;&lt;</source>
+        <translation>Vlastnosti &amp;&lt;&lt;</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.ui"/>
+        <location filename="../tools/designer/src/components/taskmenu/itemlisteditor.cpp" line="+2"/>
+        <source>Properties &amp;&gt;&gt;</source>
+        <translation>Vlastnosti &amp;&gt;&gt;</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Items List</source>
+        <translation>Seznam prvků</translation>
+    </message>
+    <message>
+        <location/>
+        <source>New Item</source>
+        <translation>Nový prvek</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;New</source>
+        <translation>&amp;Nový</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Delete Item</source>
+        <translation>Smazat prvek</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Delete</source>
+        <translation>&amp;Smazat</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move Item Up</source>
+        <translation>Posunout prvek nahoru</translation>
+    </message>
+    <message>
+        <location/>
+        <source>U</source>
+        <translation>U</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move Item Down</source>
+        <translation>Posunout prvek dolů</translation>
+    </message>
+    <message>
+        <location/>
+        <source>D</source>
+        <translation>D</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::LabelTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/label_taskmenu.cpp" line="+85"/>
+        <source>Change rich text...</source>
+        <translation>Změnit upravovatelný text...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Change plain text...</source>
+        <translation>Změnit prostý text...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::LanguageResourceDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/iconselector.cpp" line="-258"/>
+        <source>Choose Resource</source>
+        <translation>Vybrat zdroj</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::LineEditTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp" line="+80"/>
+        <source>Change text...</source>
+        <translation>Změnit text...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ListWidgetEditor</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/listwidgeteditor.cpp" line="+101"/>
+        <source>Edit List Widget</source>
+        <translation>Upravit seznam prvků</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>Edit Combobox</source>
+        <translation>Upravit skupinovou krabici</translation>
+    </message>
+    <message>
+        <location line="-51"/>
+        <source>New Item</source>
+        <translation>Nový prvek</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ListWidgetTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp" line="+67"/>
+        <source>Edit Items...</source>
+        <translation>Upravit prvky...</translation>
+    </message>
+    <message>
+        <location line="+38"/>
+        <source>Change List Contents</source>
+        <translation>Změnit obsah seznamu</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::MdiContainerWidgetTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="+118"/>
+        <source>Next Subwindow</source>
+        <translation>Další podokno</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Previous Subwindow</source>
+        <translation>Předchozí podokno</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Tile</source>
+        <translation>Uspořádat jedno vedle druhého</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Cascade</source>
+        <translation>Překrývat</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::MenuTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/menutaskmenu.cpp" line="+56"/>
+        <source>Remove</source>
+        <translation>Odstranit</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::MorphMenu</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/morphmenu.cpp" line="+264"/>
+        <source>Morph into</source>
+        <translation>Přeměnit prvek na</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::NewActionDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/newactiondialog.ui"/>
+        <source>New Action...</source>
+        <translation>Nová činnost...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Text:</source>
+        <translation>&amp;Text:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Shortcut:</source>
+        <translation>Klávesová zkratka:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Checkable:</source>
+        <translation>Zaškrtnutelná:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>ToolTip:</source>
+        <translation>Rada k nástroji:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Icon:</source>
+        <translation>&amp;Ikona:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Object &amp;name:</source>
+        <translation>&amp;Název předmětu:</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::NewDynamicPropertyDialog</name>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+134"/>
+        <source>Set Property Name</source>
+        <translation>Nastavit název vlastnosti</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>The current object already has a property named &apos;%1&apos;.
+Please select another, unique one.</source>
+        <translation>nynější předmět již má vlastnost s názvem &apos;%1&apos;.
+Zvolte, prosím, jiný, jedinečný název.</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.ui"/>
+        <source>Create Dynamic Property</source>
+        <translation>Vytvořit dynamickou vlastnost</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Property Name</source>
+        <translation>Název vlastnosti</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Property Type</source>
+        <translation>typ vlastnosti</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp" line="+4"/>
+        <source>The &apos;_q_&apos; prefix is reserved for the Qt library.
+Please select another name.</source>
+        <translation>Předpona &apos;_q_&apos; je používána knihovnou Qt pro vnitřní účely.
+Zvolte, prosím, jiný název.</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/newdynamicpropertydialog.ui"/>
+        <source>horizontalSpacer</source>
+        <translation>Vodorovný vymezovač</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::NewFormWidget</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/newformwidget.cpp" line="+104"/>
+        <source>Default size</source>
+        <translation>Výchozí velikost</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>QVGA portrait (240x320)</source>
+        <translation>QVGA formát na výšku (240x320)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>QVGA landscape (320x240)</source>
+        <translation>QVGA formát na šířku (320x240)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>VGA portrait (480x640)</source>
+        <translation>VGA formát na výšku (480x640)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>VGA landscape (640x480)</source>
+        <translation>VGA formát na šířku (640x480)</translation>
+    </message>
+    <message>
+        <location line="+66"/>
+        <source>Widgets</source>
+        <extracomment>New Form Dialog Categories</extracomment>
+        <translation>Prvky</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Custom Widgets</source>
+        <translation>Uživatelsky stanovené prvky</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>None</source>
+        <translation>Žádný</translation>
+    </message>
+    <message>
+        <location line="+57"/>
+        <source>Error loading form</source>
+        <translation>Formulář se nepodařilo nahrát</translation>
+    </message>
+    <message>
+        <location line="+244"/>
+        <source>Unable to open the form template file &apos;%1&apos;: %2</source>
+        <translation>Nepodařilo se otevřít předlohu s formulářem &apos;%1&apos;: %2</translation>
+    </message>
+    <message>
+        <location line="+67"/>
+        <source>Internal error: No template selected.</source>
+        <translation>Vnitřní chyba: Není vybrána žádná předloha.</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/newformwidget.ui"/>
+        <source>0</source>
+        <translation>0</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Choose a template for a preview</source>
+        <translation>Vyberte předlohu pro náhled</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Embedded Design</source>
+        <translation>Vložený návrh</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Device:</source>
+        <translation>Zařízení:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Screen Size:</source>
+        <translation>Velikost obrazovky:</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::NewPromotedClassPanel</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+92"/>
+        <source>Add</source>
+        <translation>Přidat</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>New Promoted Class</source>
+        <translation>Nová uživatelsky stanovená třída</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Base class name:</source>
+        <translation>Název základní třídy:</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Promoted class name:</source>
+        <translation>Název uživatelsky stanovené třídy:</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Header file:</source>
+        <translation>Hlavičkový soubor:</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Global include</source>
+        <translation>Celkový hlavičkový soubor</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Reset</source>
+        <translation>Nastavit znovu</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ObjectInspector</name>
+    <message>
+        <location filename="../tools/designer/src/components/objectinspector/objectinspector.cpp" line="+316"/>
+        <source>Change Current Page</source>
+        <translation>Změnit nynější stranu</translation>
+    </message>
+    <message>
+        <location line="+438"/>
+        <source>&amp;Find in Text...</source>
+        <translation>&amp;Najít v textu...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ObjectInspector::ObjectInspectorPrivate</name>
+    <message>
+        <source>Change Current Page</source>
+        <translation type="obsolete">Změnit nynější stranu</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::OrderDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+109"/>
+        <source>Index %1 (%2)</source>
+        <translation>Poloha %1 (%2)</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/orderdialog.ui"/>
+        <source>Change Page Order</source>
+        <translation>Změnit pořadí stran</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Page Order</source>
+        <translation>Pořadí stran</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move page up</source>
+        <translation>Posunout stranu nahoru</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move page down</source>
+        <translation>Posunout stranu dolů</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/orderdialog.cpp" line="+3"/>
+        <source>%1 %2</source>
+        <translation>%1 %2</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PaletteEditor</name>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.ui"/>
+        <source>Edit Palette</source>
+        <translation>Upravit paletu</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Tune Palette</source>
+        <translation>Vyladit paletu</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Show Details</source>
+        <translation>Ukázat podrobnosti</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Compute Details</source>
+        <translation>Spočítat podrobnosti</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Quick</source>
+        <translation>Jednoduchý</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Preview</source>
+        <translation>Náhled</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Disabled</source>
+        <translation>Zakázáno</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Inactive</source>
+        <translation>Nečinný</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Active</source>
+        <translation>V činnosti</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PaletteEditorButton</name>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp" line="+57"/>
+        <source>Change Palette</source>
+        <translation>Změnit paletu</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PaletteModel</name>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/paletteeditor.cpp" line="+374"/>
+        <source>Color Role</source>
+        <translation>Barevné kolo</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Active</source>
+        <translation>V činnosti</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Inactive</source>
+        <translation>Nečinný</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Disabled</source>
+        <translation>Zakázáno</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PixmapEditor</name>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="-1539"/>
+        <source>Copy Path</source>
+        <translation>Kopírovat cestu</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Paste Path</source>
+        <translation>Vložit cestu</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>Choose Resource...</source>
+        <translation>Vybrat zdroj...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Choose File...</source>
+        <translation>Vybrat soubor...</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <location line="+16"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PlainTextEditorDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/plaintexteditor.cpp" line="+65"/>
+        <source>Edit text</source>
+        <translation>Upravit text</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PluginDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/plugindialog.cpp" line="+72"/>
+        <source>Components</source>
+        <translation>Součásti</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Plugin Information</source>
+        <translation>Informace o přídavných modulech</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Refresh</source>
+        <translation>Obnovit</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Scan for newly installed custom widget plugins.</source>
+        <translation>Prohledat kvůli nově nainstalovaným přídavným modulům s uživatelsky stanovenými prvky.</translation>
+    </message>
+    <message>
+        <location line="+48"/>
+        <source>Qt Designer couldn&apos;t find any plugins</source>
+        <translation>Programu Qt Designer se nepodařilo najít jakékoli přídavné moduly</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Qt Designer found the following plugins</source>
+        <translation>Programu Qt Designer se podařilo najít následující přídavné moduly</translation>
+    </message>
+    <message>
+        <location line="+55"/>
+        <source>New custom widget plugins have been found.</source>
+        <translation>Byly nalezeny nové přídavné moduly s uživatelsky stanovenými prvky.</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PreviewActionGroup</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/previewactiongroup.cpp" line="+95"/>
+        <source>%1 Style</source>
+        <translation>%1-Styl</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PreviewConfigurationWidget</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/previewconfigurationwidget.cpp" line="+139"/>
+        <source>Default</source>
+        <translation>Výchozí</translation>
+    </message>
+    <message>
+        <location line="+22"/>
+        <source>None</source>
+        <translation>Žádný</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Browse...</source>
+        <translation>Procházet...</translation>
+    </message>
+    <message>
+        <location line="+118"/>
+        <source>Load Custom Device Skin</source>
+        <translation>Nahrát uživatelsky stanovený vzhled zařízení</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>All QVFB Skins (*.%1)</source>
+        <translation>Všechny vzhledy QVFB (*.%1)</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>%1 - Duplicate Skin</source>
+        <translation>%1 - Zdvojit vzhled</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>The skin &apos;%1&apos; already exists.</source>
+        <translation>Vzhled &apos;%1&apos; již existuje.</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>%1 - Error</source>
+        <translation>%1 - Chyba</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>%1 is not a valid skin directory:
+%2</source>
+        <translation>%1 není platným adresářem pro vzhled:
+%2</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PreviewConfigurationWidget::PreviewConfigurationWidgetPrivate</name>
+    <message>
+        <source>Load Custom Device Skin</source>
+        <translation type="obsolete">Nahrát uživatelsky stanovený vzhled zařízení</translation>
+    </message>
+    <message>
+        <source>All QVFB Skins (*.%1)</source>
+        <translation type="obsolete">Všechny vzhledy QVFB (*.%1)</translation>
+    </message>
+    <message>
+        <source>%1 - Duplicate Skin</source>
+        <translation type="obsolete">%1 - Vzhled již existuje</translation>
+    </message>
+    <message>
+        <source>The skin &apos;%1&apos; already exists.</source>
+        <translation type="obsolete">Vzhled &apos;%1&apos; již existuje.</translation>
+    </message>
+    <message>
+        <source>%1 - Error</source>
+        <translation type="obsolete">%1 - Chyba</translation>
+    </message>
+    <message>
+        <source>%1 is not a valid skin directory:
+%2</source>
+        <translation type="obsolete">%1 není platným adresářem vzhledu:
+%2</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PreviewDeviceSkin</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="+259"/>
+        <source>&amp;Portrait</source>
+        <translation>Formát na &amp;výšku</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Landscape (&amp;CCW)</source>
+        <extracomment>Rotate form preview counter-clockwise</extracomment>
+        <translation>Formát na šířku (&amp;proti směru otáčení hodinových ručiček)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>&amp;Landscape (CW)</source>
+        <extracomment>Rotate form preview clockwise</extracomment>
+        <translation>Formát na šířku (po směru &amp;otáčení hodinových ručiček)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Close</source>
+        <translation>&amp;Zavřít</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PreviewManager</name>
+    <message>
+        <location line="+426"/>
+        <source>%1 - [Preview]</source>
+        <translation>%1 - [Náhled]</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PreviewMdiArea</name>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/previewframe.cpp" line="+72"/>
+        <source>The moose in the noose
+ate the goose who was loose.</source>
+        <extracomment>Palette editor background</extracomment>
+        <translation>Los v chomoutu snědl husu,
+která byla volně puštěná.</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PreviewWidget</name>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/previewwidget.ui"/>
+        <source>Preview Window</source>
+        <translation>Náhledové okno</translation>
+    </message>
+    <message>
+        <location/>
+        <source>LineEdit</source>
+        <translation>Úprava čáry</translation>
+    </message>
+    <message>
+        <location/>
+        <source>ComboBox</source>
+        <translation>Skupinová krabice</translation>
+    </message>
+    <message>
+        <location/>
+        <source>PushButton</source>
+        <translation>Tlačítko na postrčení</translation>
+    </message>
+    <message>
+        <location/>
+        <source>ButtonGroup2</source>
+        <translation>Skupina tlačítek 2</translation>
+    </message>
+    <message>
+        <location/>
+        <source>CheckBox1</source>
+        <translation>Zaškrtnutelné políčko 1</translation>
+    </message>
+    <message>
+        <location/>
+        <source>CheckBox2</source>
+        <translation>Zaškrtnutelné políčko 2</translation>
+    </message>
+    <message>
+        <location/>
+        <source>ButtonGroup</source>
+        <translation>Skupina tlačítek</translation>
+    </message>
+    <message>
+        <location/>
+        <source>RadioButton1</source>
+        <translation>Rozhlasové tlačítko 1</translation>
+    </message>
+    <message>
+        <location/>
+        <source>RadioButton2</source>
+        <translation>Rozhlasové tlačítko 2</translation>
+    </message>
+    <message>
+        <location/>
+        <source>RadioButton3</source>
+        <translation>Rozhlasové tlačítko 3</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PromotionModel</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/promotionmodel.cpp" line="+17"/>
+        <source>Name</source>
+        <translation>Název</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Header file</source>
+        <translation>Hlavičkový soubor</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Global include</source>
+        <translation>Celkový hlavičkový soubor</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Usage</source>
+        <translation>Použití</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PromotionTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/promotiontaskmenu.cpp" line="+85"/>
+        <source>Promoted widgets...</source>
+        <translation>Uživatelsky stanovené prvky...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Promote to ...</source>
+        <translation>Stanovit jako zástupný symbol pro uživatelsky stanovenou třídu...</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Promote to</source>
+        <translation>Stanovit jako zástupný symbol pro uživatelsky stanovenou třídu</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Demote to %1</source>
+        <translation>Odstranit zástupný symbol pro uživatelsky stanovenou třídu a přeměnit na %1</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>Change signals/slots...</source>
+        <translation>Změnit signály/zdířky...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PropertyEditor</name>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+183"/>
+        <source>Add Dynamic Property...</source>
+        <translation>Přidat dynamickou vlastnost...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Remove Dynamic Property</source>
+        <translation>Odstranit dynamickou vlastnost</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Tree View</source>
+        <translation>Stromový pohled</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Drop Down Button View</source>
+        <translation>Podrobný pohled</translation>
+    </message>
+    <message>
+        <location line="+597"/>
+        <source>Object: %1
+Class: %2</source>
+        <translation>Předmět: %1
+Třída: %2</translation>
+    </message>
+    <message>
+        <location line="-600"/>
+        <source>Sorting</source>
+        <translation>Třídění</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Color Groups</source>
+        <translation>Barevné zdůraznění</translation>
+    </message>
+    <message>
+        <location line="+66"/>
+        <source>Configure Property Editor</source>
+        <translation>Nastavit editor vlastností</translation>
+    </message>
+    <message>
+        <location line="-14"/>
+        <source>String...</source>
+        <translation>Řetězec znaků...</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Bool...</source>
+        <translation>Booleánská hodnota...</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Other...</source>
+        <translation>Jiný typ...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::PropertyLineEdit</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/propertylineedit.cpp" line="+88"/>
+        <source>Insert line break</source>
+        <translation>Vložit zalomení řádku</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::QDesignerPromotionDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp" line="+85"/>
+        <source>Promoted Widgets</source>
+        <translation>Zástupný symbol pro uživatelsky stanovené prvky</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Promoted Classes</source>
+        <translation>Zástupný symbol pro uživatelsky stanovené třídy</translation>
+    </message>
+    <message>
+        <location line="+60"/>
+        <source>Promote</source>
+        <translation>Používat</translation>
+    </message>
+    <message>
+        <location line="+169"/>
+        <source>%1 - Error</source>
+        <translation>%1 - Chyba</translation>
+    </message>
+    <message>
+        <location line="-17"/>
+        <source>Change signals/slots...</source>
+        <translation>Změnit signály/zdířky...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::QDesignerResource</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+277"/>
+        <source>Loading qrc file</source>
+        <translation>Nahrává se zdrojový soubor</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>The specified qrc file &lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;&lt;p&gt;could not be found. Do you want to update the file location?&lt;/p&gt;</source>
+        <translation>Zadaný zdrojový soubor &lt;p&gt;&lt;b&gt;%1&lt;/b&gt;&lt;/p&gt;&lt;p&gt; se nepodařilo najít. Chcete zadat novou cestu k umístění souboru?&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>New location for %1</source>
+        <translation>Nové umístění %1</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Resource files (*.qrc)</source>
+        <translation>Zdrojové soubory (*.qrc)</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::QDesignerTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_taskmenu.cpp" line="+68"/>
+        <source>Change objectName...</source>
+        <translation>Změnit název předmětu...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Change toolTip...</source>
+        <translation>Změnit radu k nástroji...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Change whatsThis...</source>
+        <translation>Změnit &quot;A co je toto&quot;...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Change styleSheet...</source>
+        <translation>Změnit předlohový list...</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Create Menu Bar</source>
+        <translation>Vytvořit nabídkový pruh</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Add Tool Bar</source>
+        <translation>Přidat nástrojový pruh</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Create Status Bar</source>
+        <translation>Vytvořit stavový pruh</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Remove Status Bar</source>
+        <translation>Odstranit stavový pruh</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Change script...</source>
+        <translation>Změnit skript...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Change signals/slots...</source>
+        <translation>Změnit signály/zdířky...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Go to slot...</source>
+        <translation>Jít na zdířku...</translation>
+    </message>
+    <message>
+        <location line="+413"/>
+        <source>no signals available</source>
+        <translation>Nejsou dostupné žádné signály</translation>
+    </message>
+    <message numerus="yes">
+        <location line="+67"/>
+        <source>Set size constraint on %n widget(s)</source>
+        <translation>
+            <numerusform>Nastavit omezení velikosti u jednoho prvku</numerusform>
+            <numerusform>Nastavit omezení velikosti u %n prvků</numerusform>
+            <numerusform>Nastavit omezení velikosti u %n prvků</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location line="-477"/>
+        <source>Size Constraints</source>
+        <translation>Omezení velikosti</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Set Minimum Width</source>
+        <translation>Nastavit nejmenší šířku</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Set Minimum Height</source>
+        <translation>Nastavit nejmenší výšku</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Set Minimum Size</source>
+        <translation>Nastavit nejmenší velikost</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Set Maximum Width</source>
+        <translation>Nastavit největší šířku</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Set Maximum Height</source>
+        <translation>Nastavit největší výšku</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Set Maximum Size</source>
+        <translation>Nastavit největší velikost</translation>
+    </message>
+    <message>
+        <location line="+235"/>
+        <source>Edit ToolTip</source>
+        <translation>Upravit radu k nástroji</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Edit WhatsThis</source>
+        <translation>Upravit &quot;A co je toto&quot;</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::QDesignerWidgetBox</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_widgetbox.cpp" line="+123"/>
+        <location line="+13"/>
+        <source>Unexpected element &lt;%1&gt;</source>
+        <translation>Neplatný prvek &lt;%1&gt;</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>A parse error occurred at line %1, column %2 of the XML code specified for the widget %3: %4
+%5</source>
+        <translation>Kód XML pro prvek %3 obsahuje chybu na řádku %1, sloupec %2:%4:
+%5</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>The XML code specified for the widget %1 does not contain any widget elements.
+%2</source>
+        <translation>Kód XML pro prvek %1 neobsahuje prvky.
+%2</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="+349"/>
+        <source>An error has been encountered at line %1 of %2: %3</source>
+        <translation>Chyba na řádku %1 z %2: %3</translation>
+    </message>
+    <message>
+        <location line="+139"/>
+        <source>Unexpected element &lt;%1&gt; encountered when parsing for &lt;widget&gt; or &lt;ui&gt;</source>
+        <translation>Na místě očekávaného &lt;prvek&gt;- nebo prvku &lt;ui&gt; byl nalezen &lt;%1&gt;</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>Unexpected end of file encountered when parsing widgets.</source>
+        <translation>Při čtení nastavení krabice s prvky se vyskytl předčasný konec souboru.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>A widget element could not be found.</source>
+        <translation>Nepodařilo se najít prvek.</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::QtGradientStopsController</name>
+    <message>
+        <location filename="../tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp" line="+173"/>
+        <source>H</source>
+        <translation>H</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>S</source>
+        <translation>S</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>V</source>
+        <translation>V</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <location line="+4"/>
+        <source>Hue</source>
+        <translation>Barevný odstín</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>Sat</source>
+        <translation>Sytost</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Val</source>
+        <translation>Hodnota</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Saturation</source>
+        <translation>Sytost</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Value</source>
+        <translation>Hodnota</translation>
+    </message>
+    <message>
+        <location line="+22"/>
+        <source>R</source>
+        <translation>R</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>G</source>
+        <translation>G</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B</source>
+        <translation>B</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Red</source>
+        <translation>Červená</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Green</source>
+        <translation>Zelená</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Blue</source>
+        <translation>Modrá</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::RichTextEditorDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/richtexteditor.cpp" line="+436"/>
+        <source>Edit text</source>
+        <translation>Upravit text</translation>
+    </message>
+    <message>
+        <location line="+30"/>
+        <source>&amp;OK</source>
+        <translation>&amp;OK</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>&amp;Cancel</source>
+        <translation>&amp;Zrušit</translation>
+    </message>
+    <message>
+        <location line="-9"/>
+        <source>Rich Text</source>
+        <translation>Upravovatelný text</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Source</source>
+        <translation>Zdroj</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::RichTextEditorToolBar</name>
+    <message>
+        <location line="-294"/>
+        <source>Bold</source>
+        <translation>Tučné</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>CTRL+B</source>
+        <translation>CTRL+F</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Italic</source>
+        <translation>Kurzíva</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>CTRL+I</source>
+        <translation>CTRL+K</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Underline</source>
+        <translation>Podtržení</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>CTRL+U</source>
+        <translation>CTRL+U</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Left Align</source>
+        <translation>Zarovnat k levému okraji</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Center</source>
+        <translation>Zarovnat na střed</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Right Align</source>
+        <translation>Zarovnat k pravému okraji</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Justify</source>
+        <translation>Zarovnat do bloku</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Superscript</source>
+        <translation>Horní index</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Subscript</source>
+        <translation>Dolní index</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Insert &amp;Link</source>
+        <translation>Vložit &amp;odkaz</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Insert &amp;Image</source>
+        <translation>Vložit &amp;obrázek</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ScriptDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/scriptdialog.cpp" line="+66"/>
+        <source>Edit script</source>
+        <translation>Upravit skript</translation>
+    </message>
+    <message>
+        <location line="+56"/>
+        <source>Syntax error</source>
+        <translation>Chyba ve skladbě</translation>
+    </message>
+    <message>
+        <location line="-51"/>
+        <source>&lt;html&gt;Enter a Qt Script snippet to be executed while loading the form.&lt;br&gt;The widget and its children are accessible via the variables &lt;i&gt;widget&lt;/i&gt; and &lt;i&gt;childWidgets&lt;/i&gt;, respectively.</source>
+        <translation>&lt;html&gt;Zadejte kousek Qt skriptu k provedení v průběhu nahrávání formuláře.&lt;br&gt;Prvek a jemu podřízené prvky jsou přístupné prostřednictvím proměnných &lt;i&gt;widget&lt;/i&gt; und &lt;i&gt;childWidgets&lt;/i&gt;.</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ScriptErrorDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/scripterrordialog.cpp" line="+27"/>
+        <source>Script errors</source>
+        <translation>Chyby ve skriptu</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::SignalSlotDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/signalslotdialog.cpp" line="+199"/>
+        <source>There is already a slot with the signature &apos;%1&apos;.</source>
+        <translation>Již existuje zdířka s podpisem &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>There is already a signal with the signature &apos;%1&apos;.</source>
+        <translation>Již existuje signál s podpisem &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>%1 - Duplicate Signature</source>
+        <translation>%1 - Podpis již existuje</translation>
+    </message>
+    <message>
+        <location line="+21"/>
+        <location line="+76"/>
+        <source>Signals/Slots of %1</source>
+        <translation>Signály/Zdířky od %1</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::SignalSlotEditorPlugin</name>
+    <message>
+        <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp" line="+72"/>
+        <source>Edit Signals/Slots</source>
+        <translation>Upravit signály/zdířky</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>F4</source>
+        <translation>F4</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::SignalSlotEditorTool</name>
+    <message>
+        <location filename="../tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp" line="+58"/>
+        <source>Edit Signals/Slots</source>
+        <translation>Upravit signály/zdířky</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::StatusBarTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp" line="+81"/>
+        <source>Remove</source>
+        <translation>Odstranit</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::StringListEditorButton</name>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp" line="+56"/>
+        <source>Change String List</source>
+        <translation>Změnit seznamy s řetězci znaků</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::StyleSheetEditorDialog</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/stylesheeteditor.cpp" line="+97"/>
+        <source>Edit Style Sheet</source>
+        <translation>Upravit předlohový list</translation>
+    </message>
+    <message>
+        <location line="-7"/>
+        <location line="+280"/>
+        <source>Valid Style Sheet</source>
+        <translation>Platný předlohový list</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Invalid Style Sheet</source>
+        <translation>Neplatný předlohový list</translation>
+    </message>
+    <message>
+        <location line="-281"/>
+        <source>Add Resource...</source>
+        <translation>Přidat zdroj...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Add Gradient...</source>
+        <translation>Přidat přechod...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Add Color...</source>
+        <translation>Přidat barvu...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Add Font...</source>
+        <translation>Přidat písmo...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::TabOrderEditor</name>
+    <message>
+        <location filename="../tools/designer/src/components/tabordereditor/tabordereditor.cpp" line="+363"/>
+        <source>Start from Here</source>
+        <translation>Začít znovu odtud</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Restart</source>
+        <translation>Začít znovu</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Tab Order List...</source>
+        <translation>Seznam s pořadím tabulátorů...</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>Tab Order List</source>
+        <translation>Seznam s pořadím tabulátorů</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Tab Order</source>
+        <translation>Pořadí tabulátorů</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::TabOrderEditorPlugin</name>
+    <message>
+        <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp" line="+73"/>
+        <source>Edit Tab Order</source>
+        <translation>Upravit pořadí tabulátorů</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::TabOrderEditorTool</name>
+    <message>
+        <location filename="../tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp" line="+57"/>
+        <source>Edit Tab Order</source>
+        <translation>Upravit pořadí tabulátorů</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::TableWidgetEditor</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+67"/>
+        <source>New Column</source>
+        <translation>Nový sloupec</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>New Row</source>
+        <translation>Nový řádek</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>&amp;Columns</source>
+        <translation>&amp;Sloupce</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Rows</source>
+        <translation>&amp;Řádky</translation>
+    </message>
+    <message>
+        <location line="+137"/>
+        <source>Properties &amp;&lt;&lt;</source>
+        <translation>Vlastnosti &amp;&lt;&lt;</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.ui"/>
+        <location filename="../tools/designer/src/components/taskmenu/tablewidgeteditor.cpp" line="+2"/>
+        <source>Properties &amp;&gt;&gt;</source>
+        <translation>Vlastnosti &amp;&gt;&gt;</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Edit Table Widget</source>
+        <translation>Upravit prvek s tabulkou</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Items</source>
+        <translation>&amp;Prvky</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Table Items</source>
+        <translation>Prvky tabulek</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::TableWidgetTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp" line="+64"/>
+        <source>Edit Items...</source>
+        <translation>Upravit prvky...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::TemplateOptionsWidget</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/templateoptionspage.cpp" line="-18"/>
+        <source>Pick a directory to save templates in</source>
+        <translation>Vyberte adresář pro ukládání předloh</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/templateoptionspage.ui"/>
+        <source>Form</source>
+        <translation>Formulář</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Additional Template Paths</source>
+        <translation>Dodatečné adresáře pro předlohy</translation>
+    </message>
+    <message>
+        <location/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::TextEditTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/textedit_taskmenu.cpp" line="+59"/>
+        <source>Change HTML...</source>
+        <translation>Změnit HTML...</translation>
+    </message>
+    <message>
+        <location line="-1"/>
+        <source>Edit HTML</source>
+        <translation>Upravit HTML</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Edit Text</source>
+        <translation>Upravit text</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Change Plain Text...</source>
+        <translation>Změnit prostý text...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::TextEditor</name>
+    <message>
+        <location filename="../tools/designer/src/components/propertyeditor/designerpropertymanager.cpp" line="-204"/>
+        <source>Choose Resource...</source>
+        <translation>Vybrat zdroj...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Choose File...</source>
+        <translation>Vybrat soubor...</translation>
+    </message>
+    <message>
+        <location line="+123"/>
+        <source>Choose a File</source>
+        <translation>Vybrat soubor</translation>
+    </message>
+    <message>
+        <location line="-118"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ToolBarEventFilter</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/qdesigner_toolbar.cpp" line="+234"/>
+        <source>Insert Separator</source>
+        <translation>Vložit oddělovač</translation>
+    </message>
+    <message>
+        <location line="-65"/>
+        <source>Remove action &apos;%1&apos;</source>
+        <translation>Odstranit činnost &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Remove Toolbar &apos;%1&apos;</source>
+        <translation>Odstranit nástrojový pruh &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="-28"/>
+        <source>Insert Separator before &apos;%1&apos;</source>
+        <translation>Vložit oddělovač před &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Append Separator</source>
+        <translation>Připojit oddělovač</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::TreeWidgetEditor</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+76"/>
+        <source>&amp;Columns</source>
+        <translation>&amp;Sloupce</translation>
+    </message>
+    <message>
+        <location line="+69"/>
+        <source>Per column properties</source>
+        <translation>Vlastnosti sloupců</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Common properties</source>
+        <translation>Společné vlastnosti</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/>
+        <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+53"/>
+        <source>New Item</source>
+        <translation>Nový prvek</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+194"/>
+        <source>Properties &amp;&lt;&lt;</source>
+        <translation>Vlastnosti &amp;&lt;&lt;</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/>
+        <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+2"/>
+        <source>Properties &amp;&gt;&gt;</source>
+        <translation>Vlastnosti &amp;&gt;&gt;</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="-327"/>
+        <source>New Column</source>
+        <translation>Nový sloupec</translation>
+    </message>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.ui"/>
+        <source>Edit Tree Widget</source>
+        <translation>Upravit stromový prvek</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Items</source>
+        <translation>&amp;Prvky</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Tree Items</source>
+        <translation>Stromové prvky</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../tools/designer/src/components/taskmenu/treewidgeteditor.cpp" line="+150"/>
+        <source>New Subitem</source>
+        <translation>Nový podřízený prvek</translation>
+    </message>
+    <message>
+        <location/>
+        <source>New &amp;Subitem</source>
+        <translation>Nový po&amp;dřízený prvek</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Delete Item</source>
+        <translation>Smazat prvek</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move Item Left (before Parent Item)</source>
+        <translation>Posunout prvek doleva (před nadřízený prvek)</translation>
+    </message>
+    <message>
+        <location/>
+        <source>L</source>
+        <translation>L</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move Item Right (as a First Subitem of the Next Sibling Item)</source>
+        <translation>Posunout prvek doprava (jako první podřízený prvek dalšího rovnocenného prvku)</translation>
+    </message>
+    <message>
+        <location/>
+        <source>R</source>
+        <translation>R</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move Item Up</source>
+        <translation>Posunout prvek nahoru</translation>
+    </message>
+    <message>
+        <location/>
+        <source>U</source>
+        <translation>U</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move Item Down</source>
+        <translation>Posunout prvek dolů</translation>
+    </message>
+    <message>
+        <location/>
+        <source>D</source>
+        <translation>D</translation>
+    </message>
+    <message>
+        <location/>
+        <source>1</source>
+        <translation>1</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;New</source>
+        <translation>&amp;Nový</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Delete</source>
+        <translation>&amp;Smazat</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::TreeWidgetTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp" line="+63"/>
+        <source>Edit Items...</source>
+        <translation>Upravit prvky...</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::WidgetBox</name>
+    <message>
+        <location filename="../tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp" line="+115"/>
+        <source>Warning: Widget creation failed in the widget box. This could be caused by invalid custom widget XML.</source>
+        <translation>Upozornění: Vytvoření prvku v krabici s prvky se nezdařilo. Mohlo by to být zapříčiněno chybným XML kódem uživatelsky stanoveného prvku.</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::WidgetBoxTreeWidget</name>
+    <message>
+        <location filename="../tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp" line="-268"/>
+        <source>Scratchpad</source>
+        <translation>Skladování</translation>
+    </message>
+    <message>
+        <location line="+370"/>
+        <source>Custom Widgets</source>
+        <translation>Uživatelsky stanovené prvky</translation>
+    </message>
+    <message>
+        <location line="+263"/>
+        <source>Expand all</source>
+        <translation>Rozdělat vše</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Collapse all</source>
+        <translation>Složit vše</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>List View</source>
+        <translation>Pohled se seznamem</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Icon View</source>
+        <translation>Pohled s ikonami</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Remove</source>
+        <translation>Odstranit</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Edit name</source>
+        <translation>Upravit název</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::WidgetDataBase</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/widgetdatabase.cpp" line="-411"/>
+        <source>A custom widget plugin whose class name (%1) matches that of an existing class has been found.</source>
+        <translation>Byl nalezen přídavný modul, který obsahuje uživatelsky stanovený prvek, jehož název pro třídu (%1) odpovídá stávající třídě.</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::WidgetEditorTool</name>
+    <message>
+        <location filename="../tools/designer/src/components/formeditor/tool_widgeteditor.cpp" line="+67"/>
+        <source>Edit Widgets</source>
+        <translation>Upravit prvky</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::WidgetFactory</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/widgetfactory.cpp" line="+263"/>
+        <source>The custom widget factory registered for widgets of class %1 returned 0.</source>
+        <translation>Závod pro uživatelsky stanovené prvky třídy %1 vrátil zpět 0.</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>A class name mismatch occurred when creating a widget using the custom widget factory registered for widgets of class %1. It returned a widget of class %2.</source>
+        <translation>Při vytváření prvku byly zjištěny odporující si názvy tříd: Závod pro uživatelsky stanovené prvky třídy %1 vrátil zpět prvek třídy %2.</translation>
+    </message>
+    <message>
+        <location line="+189"/>
+        <source>The current page of the container &apos;%1&apos; (%2) could not be determined while creating a layout.This indicates an inconsistency in the ui-file, probably a layout being constructed on a container widget.</source>
+        <translation>Při vytváření rozvržení se nepodařilo určit nynější stránku kontejneru &apos;%1&apos; (%2). To naznačuje jistou nesrovnalost v souboru s rozhraním; pravděpodobně bylo rozvržení postaveno přímo na prvku kontejneru.</translation>
+    </message>
+    <message>
+        <location line="+53"/>
+        <source>Attempt to add a layout to a widget &apos;%1&apos; (%2) which already has an unmanaged layout of type %3.
+This indicates an inconsistency in the ui-file.</source>
+        <translation>Pokus o přidání rozvržení na prvek &apos;%1&apos; (%2), který již má nespravované rozvržení typu %3. To naznačuje jistou nesrovnalost v souboru s rozhraním.</translation>
+    </message>
+    <message>
+        <location line="+211"/>
+        <source>Cannot create style &apos;%1&apos;.</source>
+        <translation>Nepodařilo se vytvořit styl &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location line="-354"/>
+        <source>%1 Widget</source>
+        <translation>%1 prvek</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::WizardContainerWidgetTaskMenu</name>
+    <message>
+        <location filename="../tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp" line="-49"/>
+        <source>Next</source>
+        <translation>Další</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Back</source>
+        <translation>Zpět</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ZoomMenu</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/zoomwidget.cpp" line="+84"/>
+        <source>%1 %</source>
+        <extracomment>Zoom factor</extracomment>
+        <translation>%1 %</translation>
+    </message>
+</context>
+<context>
+    <name>qdesigner_internal::ZoomablePreviewDeviceSkin</name>
+    <message>
+        <location filename="../tools/designer/src/lib/shared/previewmanager.cpp" line="-270"/>
+        <source>&amp;Zoom</source>
+        <translation>&amp;Zvětšit</translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/linguist_cs.ts	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,2023 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs_CZ">
+<context>
+    <name>AboutDialog</name>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1357"/>
+        <source>Qt Linguist</source>
+        <translation>Qt Linguist</translation>
+    </message>
+</context>
+<context>
+    <name>BatchTranslationDialog</name>
+    <message>
+        <location filename="../tools/linguist/linguist/batchtranslationdialog.cpp" line="+79"/>
+        <source>Batch Translation of &apos;%1&apos; - Qt Linguist</source>
+        <translation>Automatický překlad &apos;%1&apos; - Qt Linguist</translation>
+    </message>
+    <message>
+        <location line="+37"/>
+        <source>Searching, please wait...</source>
+        <translation>Hledá se, čekejte, prosím...</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>&amp;Cancel</source>
+        <translation>&amp;Zrušit</translation>
+    </message>
+    <message>
+        <location line="+42"/>
+        <source>Linguist batch translator</source>
+        <translation>Automatický překladatel (Linguist)</translation>
+    </message>
+    <message numerus="yes">
+        <location line="+1"/>
+        <source>Batch translated %n entries</source>
+        <translation>
+            <numerusform>1 záznam byl automaticky přeložen</numerusform>
+            <numerusform>%n záznamy byly automaticky přeloženy</numerusform>
+            <numerusform>%n záznamů bylo automaticky přeloženo</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/batchtranslation.ui"/>
+        <source>Qt Linguist - Batch Translation</source>
+        <translation>Qt Linguist - Automatický překlad</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Options</source>
+        <translation>Volby</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Set translated entries to finished</source>
+        <translation>Označit přeložené záznamy jako hotové</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Retranslate entries with existing translation</source>
+        <translation>Znovu přeložit záznamy s již existujícím překladem</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Translate also finished entries</source>
+        <translation>Přeložit i hotové záznamy</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Phrase book preference</source>
+        <translation>Slovníky</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move up</source>
+        <translation>Posunout nahoru</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move down</source>
+        <translation>Posunout dolů</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Run</source>
+        <translation>&amp;Provést</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Note that the modified entries will be reset to unfinished if &apos;Set translated entries to finished&apos; above is unchecked</source>
+        <translation>Všimněte si, že změněné záznamy budou znovu nastaveny na nevyřízené, pokud není zapnuto nahoře zmíněné nastavení &apos;Označit přeložené záznamy jako hotové&apos;</translation>
+    </message>
+    <message>
+        <location/>
+        <source>The batch translator will search through the selected phrase books in the order given above</source>
+        <translation>Automatický překladatel bude prohledávat vybrané slovníky v pořadí uvedeném výše</translation>
+    </message>
+</context>
+<context>
+    <name>DataModel</name>
+    <message>
+        <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+214"/>
+        <source>&lt;qt&gt;Duplicate messages found in &apos;%1&apos;:</source>
+        <translation>&lt;qt&gt;Vícekrát existující hlášení v &apos;%1&apos;:</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>&lt;p&gt;[more duplicates omitted]</source>
+        <translation>&lt;p&gt;[vypuštěny další vícekrát existující zprávy]</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&lt;p&gt;* Context: %1&lt;br&gt;* Source: %2</source>
+        <translation>&lt;p&gt;* Souvislosti: %1&lt;br&gt;* Zdroj: %2</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&lt;br&gt;* Comment: %3</source>
+        <translation>&lt;br&gt;* Poznámka: %3</translation>
+    </message>
+    <message>
+        <location line="+70"/>
+        <source>Linguist does not know the plural rules for &apos;%1&apos;.
+Will assume a single universal form.</source>
+        <translation>Pravidla pro tvoření množného čísla (plurálu) jazyka &apos;%1&apos; nejsou v Linguistu stanovena.
+Pracuje se s jednoduchým všeobecným tvarem.</translation>
+    </message>
+    <message>
+        <location line="+56"/>
+        <source>Cannot create &apos;%2&apos;: %1</source>
+        <translation>&apos;%2&apos; nemůže být vytvořen: %1</translation>
+    </message>
+    <message>
+        <location line="+56"/>
+        <source>Universal Form</source>
+        <translation>Všeobecný tvar</translation>
+    </message>
+</context>
+<context>
+    <name>ErrorsView</name>
+    <message>
+        <location filename="../tools/linguist/linguist/errorsview.cpp" line="+76"/>
+        <source>Accelerator possibly superfluous in translation.</source>
+        <translation>V textu překladu je možná přebytečný akcelerátor.</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Accelerator possibly missing in translation.</source>
+        <translation>V textu překladu možná chybí akcelerátor.</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Translation does not end with the same punctuation as the source text.</source>
+        <translation>Interpunkční znaménko na konci textu překladu se liší od interpunkce zdrojového textu.</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>A phrase book suggestion for &apos;%1&apos; was ignored.</source>
+        <translation>Na návrh slovníku pro &apos;%1&apos; nebyl brán zřetel.</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Translation does not refer to the same place markers as in the source text.</source>
+        <translation>Držitelé místa v textu překladu a ve zdrojovém textu se liší.</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Translation does not contain the necessary %n place marker.</source>
+        <translation>Potřebný držitel místa (%n) v překladu chybí.</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Unknown error</source>
+        <translation>Neznámá chyba</translation>
+    </message>
+</context>
+<context>
+    <name>FindDialog</name>
+    <message>
+        <location filename="../tools/linguist/linguist/finddialog.ui"/>
+        <source>This window allows you to search for some text in the translation source file.</source>
+        <translation>Toto okno vám umožňuje hledání textu ve zdrojovém souboru s překladem.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Type in the text to search for.</source>
+        <translation>Zadejte text, který se má hledat.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Options</source>
+        <translation>Volby</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Source texts are searched when checked.</source>
+        <translation>Když je zapnuto, hledá se ve zdrojových textech.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Translations are searched when checked.</source>
+        <translation>Když je zapnuto, hledá se v překladech.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Texts such as &apos;TeX&apos; and &apos;tex&apos; are considered as different when checked.</source>
+        <translation>Když je zapnuto, texty jako &apos;TeX&apos; a &apos;tex&apos; se považují za rozdílné.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Comments and contexts are searched when checked.</source>
+        <translation>Když je zapnuto, prohledávají se poznámky a souvislosti.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Find</source>
+        <translation>Hledat</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Find what:</source>
+        <translation>&amp;Vzor hledání:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Source texts</source>
+        <translation>&amp;Zdrojové texty</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Translations</source>
+        <translation>&amp;Překlady</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Match case</source>
+        <translation>&amp;Dbát na psaní velkých a malých písmen</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Comments</source>
+        <translation>&amp;Poznámky</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ignore &amp;accelerators</source>
+        <translation>Nedbat na &amp;akcelerátory</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Click here to find the next occurrence of the text you typed in.</source>
+        <translation>Klepněte sem pro skok k dalšímu výskytu hledáného textu.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Find Next</source>
+        <translation>Hledat dál</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Click here to close this window.</source>
+        <translation>Klepněte sem pro zavření tohoto okna.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/finddialog.cpp" line="+12"/>
+        <source></source>
+        <comment>Choose Edit|Find from the menu bar or press Ctrl+F to pop up the Find dialog</comment>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>FormMultiWidget</name>
+    <message>
+        <location filename="../tools/linguist/linguist/messageeditorwidgets.cpp" line="+296"/>
+        <source>Alt+Delete</source>
+        <extracomment>translate, but don&apos;t change</extracomment>
+        <translation>Alt+Delete</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Shift+Alt+Insert</source>
+        <extracomment>translate, but don&apos;t change</extracomment>
+        <translation>Shift+Alt+Insert</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Alt+Insert</source>
+        <extracomment>translate, but don&apos;t change</extracomment>
+        <translation>Alt+Insert</translation>
+    </message>
+    <message>
+        <location line="+131"/>
+        <source>Confirmation - Qt Linguist</source>
+        <translation>Potvrzení - Qt Linguist</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Delete non-empty length variant?</source>
+        <translation>Smazat vyplněnou obměnu délky?</translation>
+    </message>
+</context>
+<context>
+    <name>LRelease</name>
+    <message numerus="yes">
+        <location filename="../tools/linguist/shared/qm.cpp" line="+748"/>
+        <source>Dropped %n message(s) which had no ID.</source>
+        <translation>
+            <numerusform>Byl smazán záznam bez identifikátoru.</numerusform>
+            <numerusform>Byly smazány %n záznamy bez identifikátoru.</numerusform>
+            <numerusform>Byly smazány %n záznamy bez identifikátoru.</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location line="+4"/>
+        <source>Excess context/disambiguation dropped from %n message(s).</source>
+        <translation>
+            <numerusform>U jednoho záznamu byla odstraněna přebytečná souvislost případně přebytečné zabránění dvojznačnosti (přebytečná informace k rozhodování).</numerusform>
+            <numerusform>U %n záznamů byla odstraněna přebytečná souvislost případně přebytečné zabránění dvojznačnosti (přebytečná informace k rozhodování).</numerusform>
+            <numerusform>U %n záznamů byla odstraněna přebytečná souvislost případně přebytečné zabránění dvojznačnosti (přebytečná informace k rozhodování).</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location line="+8"/>
+        <source>    Generated %n translation(s) (%1 finished and %2 unfinished)
+</source>
+        <translation>
+            <numerusform>    Byl vytvořen jeden překlad (%1 dokončeno %2 nedokončeno)
+</numerusform>
+            <numerusform>    Byly vytvořeny %n překlady (%1 dokončeno %2 nedokončeno)
+</numerusform>
+            <numerusform>    Byly vytvořeny %n překlady (%1 dokončeno %2 nedokončeno)
+</numerusform>
+        </translation>
+    </message>
+    <message numerus="yes">
+        <location line="+4"/>
+        <source>    Ignored %n untranslated source text(s)
+</source>
+        <translation>
+            <numerusform>    Na jeden nepřeložený text nebyl brán zřetel
+</numerusform>
+            <numerusform>    na %n nepřeložené texty nebyl brán zřetel
+</numerusform>
+            <numerusform>    na %n nepřeložené texty nebyl brán zřetel
+</numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.ui"/>
+        <source>MainWindow</source>
+        <translation>Hlavní okno</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Phrases</source>
+        <translation>&amp;Slovníky</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Close Phrase Book</source>
+        <translation>&amp;Zavřít slovník</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Edit Phrase Book</source>
+        <translation>&amp;Upravit slovník</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Print Phrase Book</source>
+        <translation>&amp;Vytisknout slovník</translation>
+    </message>
+    <message>
+        <location/>
+        <source>V&amp;alidation</source>
+        <translation>&amp;Schválení</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;View</source>
+        <translation>&amp;Pohled</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Vie&amp;ws</source>
+        <translation>Po&amp;hledy</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Toolbars</source>
+        <translation>&amp;Nástrojové lišty</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Help</source>
+        <translation>&amp;Nápověda</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Translation</source>
+        <translation>&amp;Překlad</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;File</source>
+        <translation>&amp;Soubor</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Edit</source>
+        <translation>Ú&amp;pravy</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Open...</source>
+        <translation>&amp;Otevřít...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Open a Qt translation source file (TS file) for editing</source>
+        <translation>Otevřít Qt zdrojový soubor s překladem (soubor TS) pro úpravy</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <location/>
+        <source>E&amp;xit</source>
+        <translation>&amp;Ukončit</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Close this window and exit.</source>
+        <translation>Toto okno zavřít a ukončit.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+Q</source>
+        <translation>Ctrl+Q</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+646"/>
+        <location line="+15"/>
+        <source>&amp;Save</source>
+        <translation>&amp;Uložit</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.ui"/>
+        <source>Save changes made to this Qt translation source file</source>
+        <translation>Uložit změny provedené v tomto Qt zdrojovém souboru s překladem</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move to the previous unfinished item.</source>
+        <translation>Jít na předchozí nevyřízený záznam.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move to the next unfinished item.</source>
+        <translation>Jít na další nevyřízený záznam.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move to the previous item.</source>
+        <translation>Jít na předchozí záznam.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move to the next item.</source>
+        <translation>Jít na další záznam.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Mark this item as done and move to the next unfinished item.</source>
+        <translation>Označit tento záznam jako hotový a jít na další nevyřízený záznam.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Copy from source text</source>
+        <translation>Převzít zdrojový text</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Toggle the validity check of accelerators, i.e. whether the number of ampersands in the source and translation text is the same. If the check fails, a message is shown in the warnings window.</source>
+        <translation>Zapnout/Vypnout ověření akcelerátorů, to znamená, zda se shoduje počet znaků obchodnického -A (&amp;) ve zdrojovém textu a v textu překladu. V případě neúspěchu se v okně s upozorněními ukáže zpráva s varováním.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Toggle the validity check of ending punctuation. If the check fails, a message is shown in the warnings window.</source>
+        <translation>Zapnout/Vypnout ověření znaku na konci věty na konci textu. V případě neúspěchu se v okně s upozorněními ukáže zpráva s varováním.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Toggle checking that phrase suggestions are used. If the check fails, a message is shown in the warnings window.</source>
+        <translation>Zapnout/Vypnout ověření použití návrhů slovníku. V případě neúspěchu se v okně s upozorněními ukáže zpráva s varováním.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Toggle the validity check of place markers, i.e. whether %1, %2, ... are used consistently in the source text and translation text. If the check fails, a message is shown in the warnings window.</source>
+        <translation>Zapnout/Vypnout ověření držitelů místa, to znamená, zda se shoduje používání %1, %2,... ve zdrojovém textu a v textu překladu. V případě neúspěchu se v okně s upozorněními ukáže zpráva s varováním.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Open Read-O&amp;nly...</source>
+        <translation>Otevřít pouze &amp;pro čtení...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Save All</source>
+        <translation>&amp;Uložit vše</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+S</source>
+        <translation>Ctrl+S</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-14"/>
+        <location line="+11"/>
+        <source>Save &amp;As...</source>
+        <translation>Uložit &amp;jako...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Save As...</source>
+        <translation>Uložit jako...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Save changes made to this Qt translation source file into a new file.</source>
+        <translation>Uložit změny provedené v tomto Qt zdrojovém souboru s překladem do nového souboru.</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+4"/>
+        <source>&amp;Release</source>
+        <translation>&amp;Vydat</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.ui"/>
+        <source>Create a Qt message file suitable for released applications from the current message file.</source>
+        <translation>Vytvořit Qt soubor se zprávami vhodný pro vydané aplikace (soubor QM) ze současného souboru s překladem.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Print...</source>
+        <translation>&amp;Tisk...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+P</source>
+        <translation>Ctrl+P</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Undo</source>
+        <translation>&amp;Zpět</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Recently Opened &amp;Files</source>
+        <translation>Naposledy upravované sou&amp;bory</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Save</source>
+        <translation>Uložit</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Print a list of all the translation units in the current translation source file.</source>
+        <translation>Vytisknout seznam se všemi překladovými jednotkami v současném zdrojovém souboru s překladem.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Undo the last editing operation performed on the current translation.</source>
+        <translation>Poslední změnu provedenou v současném překladu vrátit zpět.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+Z</source>
+        <translation>Ctrl+Z</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Redo</source>
+        <translation>&amp;Znovu</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Redo an undone editing operation performed on the translation.</source>
+        <translation>Poslední zpět vrácenou změnu v překladu provést znovu.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+Y</source>
+        <translation>Ctrl+Y</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Cu&amp;t</source>
+        <translation>&amp;Vyjmout</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Copy the selected translation text to the clipboard and deletes it.</source>
+        <translation>Zkopírovat vybraný text s překladem do schránky a smazat jej.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+X</source>
+        <translation>Ctrl+X</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Kopírovat</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Copy the selected translation text to the clipboard.</source>
+        <translation>Zkopírovat vybraný text s překladem do schránky.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+C</source>
+        <translation>Ctrl+C</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Paste</source>
+        <translation>&amp;Vložit</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Paste the clipboard text into the translation.</source>
+        <translation>Vložit text ze schránky do překladu.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+V</source>
+        <translation>Ctrl+V</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Select &amp;All</source>
+        <translation>Vybrat &amp;vše</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Select the whole translation text.</source>
+        <translation>Vybrat celý text s překladem.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+A</source>
+        <translation>Ctrl+A</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Find...</source>
+        <translation>&amp;Hledat...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Search for some text in the translation source file.</source>
+        <translation>Hledat text v souboru s překladem.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+F</source>
+        <translation>Ctrl+F</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Find &amp;Next</source>
+        <translation>Hledat &amp;dál</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Continue the search where it was left.</source>
+        <translation>Pokračovat v hledání.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>F3</source>
+        <translation>F3</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Prev Unfinished</source>
+        <translation>&amp;Předchozí nevyřízený</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Close All</source>
+        <translation>&amp;Zavřít vše</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+W</source>
+        <translation>Ctrl+W</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+K</source>
+        <translation>Ctrl+K</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Next Unfinished</source>
+        <translation>&amp;Další nevyřízený</translation>
+    </message>
+    <message>
+        <location/>
+        <source>P&amp;rev</source>
+        <translation>Před&amp;chozí</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+Shift+K</source>
+        <translation>Ctrl+Shift+K</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ne&amp;xt</source>
+        <translation>Da&amp;lší</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Done and Next</source>
+        <translation>&amp;Hotovo a další</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Copies the source text into the translation field.</source>
+        <translation>Kopíruje zdrojový text do pole s překladem.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+B</source>
+        <translation>Ctrl+B</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Accelerators</source>
+        <translation>&amp;Akcelerátory</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Ending Punctuation</source>
+        <translation>&amp;Interpunkce na konci</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Phrase matches</source>
+        <translation>&amp;Slovník</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Place &amp;Marker Matches</source>
+        <translation>Držitel &amp;místa</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;New Phrase Book...</source>
+        <translation>&amp;Nový slovník...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Create a new phrase book.</source>
+        <translation>Vytvořit nový slovník.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+N</source>
+        <translation>Ctrl+N</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Open Phrase Book...</source>
+        <translation>&amp;Otevřít slovník...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Open a phrase book to assist translation.</source>
+        <translation>Otevřít slovník kvůli podpoře při překladu.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+H</source>
+        <translation>Ctrl+H</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Reset Sorting</source>
+        <translation>Řazení &amp;vrátit zpět</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Sort the items back in the same order as in the message file.</source>
+        <translation>Seřadit záznamy ve stejném pořadí jako v původním souboru s překladem.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Display guesses</source>
+        <translation>Ukázat &amp;návrhy</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Set whether or not to display translation guesses.</source>
+        <translation>Zapnout/Vypnout zobrazení návrhů k překladu.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Statistics</source>
+        <translation>S&amp;tatistika</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Display translation statistics.</source>
+        <translation>Ukázat statistiku k překladu.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Manual</source>
+        <translation>&amp;Příručka</translation>
+    </message>
+    <message>
+        <location/>
+        <source>F1</source>
+        <translation>F1</translation>
+    </message>
+    <message>
+        <location/>
+        <source>About Qt Linguist</source>
+        <translation>O Qt Linguistu</translation>
+    </message>
+    <message>
+        <location/>
+        <source>About Qt</source>
+        <translation>O Qt</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Display information about the Qt toolkit by Trolltech.</source>
+        <translation>Zobrazit informace o sadě nástrojů Qt od Trolltechu.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;What&apos;s This?</source>
+        <translation>&amp;Copak je asi toto?</translation>
+    </message>
+    <message>
+        <location/>
+        <source>What&apos;s This?</source>
+        <translation>Copak je asi toto?</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Enter What&apos;s This? mode.</source>
+        <translation>Zapnout režim &quot;Copak je asi toto?&quot;.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Shift+F1</source>
+        <translation>Shift+F1</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Search And Translate...</source>
+        <translation>Hledat a &amp;překládat...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Replace the translation on all entries that matches the search source text.</source>
+        <translation>Nahradit překlad u všech záznamů, které odpovídají hledanému textu.</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+21"/>
+        <source>&amp;Batch Translation...</source>
+        <translation>&amp;Automatický překlad...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Batch translate all entries using the information in the phrase books.</source>
+        <translation>Automaticky přeložit všechny záznamy s pomocí slovníků.</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-34"/>
+        <location line="+10"/>
+        <source>Release As...</source>
+        <translation>Vydat jako...</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-2004"/>
+        <source></source>
+        <comment>This is the application&apos;s main window.</comment>
+        <translation></translation>
+    </message>
+    <message>
+        <location line="+188"/>
+        <source>Source text</source>
+        <translation>Zdrojový text</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <location line="+25"/>
+        <source>Index</source>
+        <translation>Rejstřík</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <location line="+62"/>
+        <source>Context</source>
+        <translation>Souvislosti</translation>
+    </message>
+    <message>
+        <location line="-61"/>
+        <source>Items</source>
+        <translation>Záznamy</translation>
+    </message>
+    <message>
+        <location line="+78"/>
+        <source>This panel lists the source contexts.</source>
+        <translation>V tomto panelu jsou ukazovány souvislosti.</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Strings</source>
+        <translation>Řetězce</translation>
+    </message>
+    <message>
+        <location line="+39"/>
+        <source>Phrases and guesses</source>
+        <translation>Slovník a návrhy</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Sources and Forms</source>
+        <translation>Zdrojové soubory a formuláře</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Warnings</source>
+        <translation>Upozornění</translation>
+    </message>
+    <message>
+        <location line="+59"/>
+        <source> MOD </source>
+        <comment>status bar: file(s) modified</comment>
+        <translation>Změněno</translation>
+    </message>
+    <message>
+        <location line="+130"/>
+        <source>Loading...</source>
+        <translation>Nahrává se...</translation>
+    </message>
+    <message>
+        <location line="+32"/>
+        <location line="+22"/>
+        <source>Loading File - Qt Linguist</source>
+        <translation>Nahrává se soubor - Qt Linguist</translation>
+    </message>
+    <message>
+        <location line="-21"/>
+        <source>The file &apos;%1&apos; does not seem to be related to the currently open file(s) &apos;%2&apos;.
+
+Close the open file(s) first?</source>
+        <translation>Nezdá se, že by soubor &apos;%1&apos; souvisel s již otevřenými soubory &apos;%2&apos;.
+
+Zavřít nejprve již otevřený soubor(y)?</translation>
+    </message>
+    <message>
+        <location line="+22"/>
+        <source>The file &apos;%1&apos; does not seem to be related to the file &apos;%2&apos; which is being loaded as well.
+
+Skip loading the first named file?</source>
+        <translation>Nezdá se, že by soubor &apos;%1&apos; souvisel s již otevřeným souborem &apos;%2&apos;, který je rovněž nahrán.
+
+Přeskočit nahrávání prve jmenovaného souboru?</translation>
+    </message>
+    <message numerus="yes">
+        <location line="+61"/>
+        <source>%n translation unit(s) loaded.</source>
+        <translation>
+            <numerusform>Nahrána jedna překladová jednotka.</numerusform>
+            <numerusform>Nahrány %n překladové jednotky.</numerusform>
+            <numerusform>Nahrány %n překladové jednotky.</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location line="+93"/>
+        <source>Related files (%1);;</source>
+        <translation>Příbuzné soubory (%1);;</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Open Translation Files</source>
+        <translation>Otevřít soubory s překlady</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <location line="+31"/>
+        <source>File saved.</source>
+        <translation>Soubor uložen.</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.ui"/>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+15"/>
+        <location line="+1165"/>
+        <source>Release</source>
+        <translation>Vydat</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1164"/>
+        <source>Qt message files for released applications (*.qm)
+All files (*)</source>
+        <translation>Qt soubory se zprávami pro vydané aplikace (*.qm)
+Všechny soubory (*)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location line="+12"/>
+        <source>File created.</source>
+        <translation>Soubor vytvořen.</translation>
+    </message>
+    <message>
+        <location line="+34"/>
+        <location line="+355"/>
+        <source>Printing...</source>
+        <translation>Tisk...</translation>
+    </message>
+    <message>
+        <location line="-347"/>
+        <source>Context: %1</source>
+        <translation>Souvislosti: %1</translation>
+    </message>
+    <message>
+        <location line="+32"/>
+        <source>finished</source>
+        <translation>vyřízeno</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>unresolved</source>
+        <translation>nevyřešeno</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>obsolete</source>
+        <translation>zastaralé</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <location line="+307"/>
+        <source>Printing... (page %1)</source>
+        <translation>Tisk... (strana %1)</translation>
+    </message>
+    <message>
+        <location line="-300"/>
+        <location line="+307"/>
+        <source>Printing completed</source>
+        <translation>Tisk dokončen</translation>
+    </message>
+    <message>
+        <location line="-305"/>
+        <location line="+307"/>
+        <source>Printing aborted</source>
+        <translation>Tisk zrušen</translation>
+    </message>
+    <message>
+        <location line="-232"/>
+        <source>Search wrapped.</source>
+        <translation>Hledání začíná odshora.</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <location line="+278"/>
+        <location line="+34"/>
+        <location line="+24"/>
+        <location line="+22"/>
+        <location line="+516"/>
+        <location line="+1"/>
+        <location line="+274"/>
+        <location line="+40"/>
+        <location line="+10"/>
+        <source>Qt Linguist</source>
+        <translation>Qt Linguist</translation>
+    </message>
+    <message>
+        <location line="-1198"/>
+        <location line="+102"/>
+        <source>Cannot find the string &apos;%1&apos;.</source>
+        <translation>Nelze najít řetězec &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location line="-82"/>
+        <source>Search And Translate in &apos;%1&apos; - Qt Linguist</source>
+        <translation>Hledat a překládat v &apos;%1&apos; - Qt Linguist</translation>
+    </message>
+    <message>
+        <location line="+34"/>
+        <location line="+23"/>
+        <location line="+24"/>
+        <source>Translate - Qt Linguist</source>
+        <translation>Překlad - Qt Linguist</translation>
+    </message>
+    <message numerus="yes">
+        <location line="-46"/>
+        <source>Translated %n entry(s)</source>
+        <translation>
+            <numerusform>Přeložen jeden záznam</numerusform>
+            <numerusform>Přeloženy %n záznamy</numerusform>
+            <numerusform>Přeloženy %n záznamy</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>No more occurrences of &apos;%1&apos;. Start over?</source>
+        <translation>Žádné další výskyty &apos;%1&apos;. Začít znovu?</translation>
+    </message>
+    <message>
+        <location line="+30"/>
+        <source>Create New Phrase Book</source>
+        <translation>Vytvořit nový slovník</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Qt phrase books (*.qph)
+All files (*)</source>
+        <translation>Slovníky Qt (*.qph)
+Všechny soubory (*)</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Phrase book created.</source>
+        <translation>Slovník vytvořen.</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Open Phrase Book</source>
+        <translation>Otevřít slovník</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Qt phrase books (*.qph);;All files (*)</source>
+        <translation>Slovníky Qt (*.qph);;Všechny soubory (*)</translation>
+    </message>
+    <message numerus="yes">
+        <location line="+7"/>
+        <source>%n phrase(s) loaded.</source>
+        <translation>
+            <numerusform>Nahrán jeden záznam ve slovníku.</numerusform>
+            <numerusform>Nahrány %n záznamy ve slovníku.</numerusform>
+            <numerusform>Nahrány %n záznamy ve slovníku.</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location line="+93"/>
+        <location line="+3"/>
+        <location line="+7"/>
+        <source>Add to phrase book</source>
+        <translation>Přidat do slovníku</translation>
+    </message>
+    <message>
+        <location line="-9"/>
+        <source>No appropriate phrasebook found.</source>
+        <translation>Nelze nalézt žádný příslušný slovník.</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Adding entry to phrasebook %1</source>
+        <translation>Přidává se záznam do slovníku %1</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Select phrase book to add to</source>
+        <translation>Do kterého slovníku se má záznam přidat</translation>
+    </message>
+    <message>
+        <location line="+29"/>
+        <source>Unable to launch Qt Assistant (%1)</source>
+        <translation>Qt Assistant nelze spustit (%1)</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Version %1</source>
+        <translation>Verze %1</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&lt;center&gt;&lt;img src=&quot;:/images/splash.png&quot;/&gt;&lt;/img&gt;&lt;p&gt;%1&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Qt Linguist is a tool for adding translations to Qt applications.&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).</source>
+        <translation>&lt;center&gt;&lt;img src=&quot;:/images/splash.png&quot;/&gt;&lt;/img&gt;&lt;p&gt;%1&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Qt Linguist je nástrojem pro přidávání překladů do aplikací Qt.&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation a/nebo její dceřinná společnost(i).</translation>
+    </message>
+    <message>
+        <location line="+38"/>
+        <source>Do you want to save the modified files?</source>
+        <translation>Chcete uložit změněné soubory?</translation>
+    </message>
+    <message>
+        <location line="+22"/>
+        <source>Do you want to save &apos;%1&apos;?</source>
+        <translation>Chcete uložit &apos;%1&apos;?</translation>
+    </message>
+    <message>
+        <location line="+43"/>
+        <source>Qt Linguist[*]</source>
+        <translation>Qt Linguist[*]</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>%1[*] - Qt Linguist</source>
+        <translation>%1[*] - Qt Linguist</translation>
+    </message>
+    <message>
+        <location line="+267"/>
+        <location line="+12"/>
+        <source>No untranslated translation units left.</source>
+        <translation>Nezbyly žádné nepřeložené překladové jednotky.</translation>
+    </message>
+    <message>
+        <location line="+176"/>
+        <source>&amp;Window</source>
+        <translation>&amp;Okno</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Minimize</source>
+        <translation>Zmenšit</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Ctrl+M</source>
+        <translation>Ctrl+M</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>Display the manual for %1.</source>
+        <translation>Zobrazit příručku k %1.</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Display information about %1.</source>
+        <translation>Zobrazit údaje o %1.</translation>
+    </message>
+    <message>
+        <location line="+70"/>
+        <source>&amp;Save &apos;%1&apos;</source>
+        <translation>&amp;Uložit &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Save &apos;%1&apos; &amp;As...</source>
+        <translation>&apos;%1&apos; uložit &amp;jako...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Release &apos;%1&apos;</source>
+        <translation>Vydat &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Release &apos;%1&apos; As...</source>
+        <translation>&apos;%1&apos; vydat jako...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Close &apos;%1&apos;</source>
+        <translation>&amp;Zavřít &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <location line="+13"/>
+        <source>&amp;Close</source>
+        <translation>&amp;Zavřít</translation>
+    </message>
+    <message>
+        <location line="-10"/>
+        <source>Save All</source>
+        <translation>Uložit vše</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.ui"/>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1"/>
+        <source>&amp;Release All</source>
+        <translation>&amp;Vydat vše</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+1"/>
+        <source>Close All</source>
+        <translation>Zavřít vše</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Translation File &amp;Settings for &apos;%1&apos;...</source>
+        <translation>Nastavení &amp;souboru s překladem pro &apos;%1&apos; ...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Batch Translation of &apos;%1&apos;...</source>
+        <translation>&amp;Automatický překlad &apos;%1&apos; ...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Search And &amp;Translate in &apos;%1&apos;...</source>
+        <translation>Hledat a &amp;překládat v &apos;%1&apos; ...</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Search And &amp;Translate...</source>
+        <translation>Hledat a &amp;překládat...</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.ui"/>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+51"/>
+        <source>File</source>
+        <translation>Soubor</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+7"/>
+        <source>Edit</source>
+        <translation>Úpravy</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+6"/>
+        <source>Translation</source>
+        <translation>Překlad</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+6"/>
+        <source>Validation</source>
+        <translation>Schválení</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+7"/>
+        <source>Help</source>
+        <translation>Nápověda</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+84"/>
+        <source>Cannot read from phrase book &apos;%1&apos;.</source>
+        <translation>Nelze číst ze slovníku &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Close this phrase book.</source>
+        <translation>Tento slovník zavřít.</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Enables you to add, modify, or delete entries in this phrase book.</source>
+        <translation>Umožní vložit, měnit nebo odstranit záznamy z tohoto slovníku.</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Print the entries in this phrase book.</source>
+        <translation>Vytisknout záznamy z tohoto slovníku.</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Cannot create phrase book &apos;%1&apos;.</source>
+        <translation>Nelze vytvořit slovník &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Do you want to save phrase book &apos;%1&apos;?</source>
+        <translation>Chcete uložit slovník &apos;%1&apos;?</translation>
+    </message>
+    <message>
+        <location line="+323"/>
+        <source>All</source>
+        <translation>Vše</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.ui"/>
+        <source>Open/Refresh Form &amp;Preview</source>
+        <translation>Otevřít/Obnovit &amp;náhled na formulář</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Form Preview Tool</source>
+        <translation>Nástroj pro náhled na formulář</translation>
+    </message>
+    <message>
+        <location/>
+        <source>F5</source>
+        <translation>F5</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-536"/>
+        <source>Translation File &amp;Settings...</source>
+        <translation>&amp;Nastavení souboru s překladem...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Add to Phrase Book</source>
+        <translation>&amp;Přidat do slovníku</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+T</source>
+        <translation>Ctrl+T</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+J</source>
+        <translation>Ctrl+J</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Ctrl+Shift+J</source>
+        <translation>Ctrl+Shift+J</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Previous unfinished item</source>
+        <translation>Předchozí nevyřízený záznam</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Next unfinished item</source>
+        <translation>Další nevyřízený záznam</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Move to previous item</source>
+        <translation>Jít na předchozí záznam</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Next item</source>
+        <translation>Další záznam</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Mark item as done and move to the next unfinished item</source>
+        <translation>Označit záznam jako vyřízený a jít na další nevyřízený záznam</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Copies the source text into the translation field</source>
+        <translation>Kopíruje zdrojový text do pole s překladem</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Toggle the validity check of accelerators</source>
+        <translation>Zapnout/Vypnout ověření akcelerátorů</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Toggle the validity check of ending punctuation</source>
+        <translation>Zapnout/Vypnout ověření znaku na konci věty na konci textu</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Toggle checking that phrase suggestions are used</source>
+        <translation>Zapnout/Vypnout ověření použití záznamů ze slovníku</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Toggle the validity check of place markers</source>
+        <translation>Zapnout/Vypnout ověření držitelů místa</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Create a Qt message file suitable for released applications from the current message file. The filename will automatically be determined from the name of the TS file.</source>
+        <translation>Vytvořit z nynějšího překladového souboru soubor s hlášeními Qt vhodný pro vydané aplikace. Název souboru bude automaticky odvozen z názvu souboru TS.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Length Variants</source>
+        <translation>Varianty délky</translation>
+    </message>
+</context>
+<context>
+    <name>MessageEditor</name>
+    <message>
+        <location filename="../tools/linguist/linguist/messageeditor.cpp" line="+42"/>
+        <source></source>
+        <comment>This is the right panel of the main window.</comment>
+        <translation></translation>
+    </message>
+    <message>
+        <location line="+30"/>
+        <source>Russian</source>
+        <translation>Ruský</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>German</source>
+        <translation>Německý</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Japanese</source>
+        <translation>Japonský</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>French</source>
+        <translation>Francouzský</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Polish</source>
+        <translation>Polský</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Chinese</source>
+        <translation>Čínský</translation>
+    </message>
+    <message>
+        <location line="+53"/>
+        <source>This whole panel allows you to view and edit the translation of some source text.</source>
+        <translation>Celý tento panel umožňuje zobrazení a úpravy překladu zdrojového textu.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Source text</source>
+        <translation>Zdrojový text</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>This area shows the source text.</source>
+        <translation>Tato oblast ukazuje zdrojový text.</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Source text (Plural)</source>
+        <translation>Zdrojový text (Plural)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>This area shows the plural form of the source text.</source>
+        <translation>Tato oblast ukazuje množné číslo zdrojového textu.</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Developer comments</source>
+        <translation>Vývojářovy poznámky</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>This area shows a comment that may guide you, and the context in which the text occurs.</source>
+        <translation>Tato oblast ukazuje případn poznámky, jež vás mohou vést, a souvislosti, v nichž se text vyskytuje.</translation>
+    </message>
+    <message>
+        <location line="+59"/>
+        <source>Here you can enter comments for your own use. They have no effect on the translated applications.</source>
+        <translation>Sem můžete vepsat poznámky určené pro vaše vlastní použití. Na překlad nemají žádný vliv.</translation>
+    </message>
+    <message>
+        <location line="+232"/>
+        <source>%1 translation (%2)</source>
+        <translation>Překlad %1 (%2)</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>This is where you can enter or modify the translation of the above source text.</source>
+        <translation>Tady můžete zadávat nebo měnit překlad zdrojového textu.</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>%1 translation</source>
+        <translation>Překlad %1</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>%1 translator comments</source>
+        <translation>%1 překladatelovy poznámky</translation>
+    </message>
+    <message>
+        <location line="+157"/>
+        <source>&apos;%1&apos;
+Line: %2</source>
+        <translation>&apos;%1&apos;
+Řádek: %2</translation>
+    </message>
+</context>
+<context>
+    <name>MessageModel</name>
+    <message>
+        <location filename="../tools/linguist/linguist/messagemodel.cpp" line="+832"/>
+        <source>Completion status for %1</source>
+        <translation>Stav zpracování %1</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>&lt;file header&gt;</source>
+        <translation>&lt;hlavička souboru&gt;</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>&lt;context comment&gt;</source>
+        <translation>&lt;související poznámka&gt;</translation>
+    </message>
+    <message>
+        <location line="+71"/>
+        <source>&lt;unnamed context&gt;</source>
+        <translation>&lt;nepojmenovaná souvislost&gt;</translation>
+    </message>
+</context>
+<context>
+    <name>MsgEdit</name>
+    <message>
+        <location filename="../tools/linguist/linguist/messageeditor.cpp" line="-614"/>
+        <source></source>
+        <comment>This is the right panel of the main window.</comment>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>PhraseBookBox</name>
+    <message>
+        <location filename="../tools/linguist/linguist/phrasebookbox.cpp" line="+12"/>
+        <source></source>
+        <comment>Go to Phrase &gt; Edit Phrase Book... The dialog that pops up is a PhraseBookBox.</comment>
+        <translation></translation>
+    </message>
+    <message>
+        <location line="+54"/>
+        <source>(New Entry)</source>
+        <translation>(Nový záznam)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1[*] - Qt Linguist</source>
+        <translation>%1[*] - Qt Linguist</translation>
+    </message>
+    <message>
+        <location line="+90"/>
+        <source>Qt Linguist</source>
+        <translation>Qt Linguist</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Cannot save phrase book &apos;%1&apos;.</source>
+        <translation>Nelze uložit slovník &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/phrasebookbox.ui"/>
+        <source>Edit Phrase Book</source>
+        <translation>Upravit slovník</translation>
+    </message>
+    <message>
+        <location/>
+        <source>This window allows you to add, modify, or delete entries in a phrase book.</source>
+        <translation>Toto okno vám umožní vložit, měnit nebo odstranit záznamy z tohoto slovníku.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Translation:</source>
+        <translation>&amp;Překlad:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>This is the phrase in the target language corresponding to the source phrase.</source>
+        <translation>Toto je text, který v cílovém jazyce odpovídá zdrojovému textu.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>S&amp;ource phrase:</source>
+        <translation>&amp;Zdrojový text:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>This is a definition for the source phrase.</source>
+        <translation>Toto je vymezení zdrojového textu.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>This is the phrase in the source language.</source>
+        <translation>Toto je text ve zdrojovém jazyce.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Definition:</source>
+        <translation>&amp;Vymezení:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Click here to add the phrase to the phrase book.</source>
+        <translation>Sem klepněte kvůli vložení nového záznamu do slovníku.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;New Entry</source>
+        <translation>&amp;Nový záznam</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Click here to remove the entry from the phrase book.</source>
+        <translation>Sem klepněte kvůli odstranění nového záznamu ze slovníku.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Remove Entry</source>
+        <translation>&amp;Odstranit záznam</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Settin&amp;gs...</source>
+        <translation>&amp;Nastavení...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Click here to save the changes made.</source>
+        <translation>Sem klepněte kvůli uložení provedených změn.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Save</source>
+        <translation>&amp;Uložit</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Click here to close this window.</source>
+        <translation>Sem klepněte kvůli zavření tohoto okna.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+</context>
+<context>
+    <name>PhraseModel</name>
+    <message>
+        <location filename="../tools/linguist/linguist/phrasemodel.cpp" line="+117"/>
+        <source>Source phrase</source>
+        <translation>Zdrojový text</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Translation</source>
+        <translation>Překlad</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Definition</source>
+        <translation>Vymezení</translation>
+    </message>
+</context>
+<context>
+    <name>PhraseView</name>
+    <message>
+        <location filename="../tools/linguist/linguist/phraseview.cpp" line="+122"/>
+        <source>Insert</source>
+        <translation>Vložit</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Edit</source>
+        <translation>Upravit</translation>
+    </message>
+    <message>
+        <location line="+113"/>
+        <source>Guess (%1)</source>
+        <translation>Návrh (%1)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Guess</source>
+        <translation>Návrh</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../tools/linguist/shared/qm.cpp" line="+12"/>
+        <source>Compiled Qt translations</source>
+        <translation>Sestavené překlady Qt</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1280"/>
+        <source>Translation files (%1);;</source>
+        <translation>Překladové soubory (%1);;</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>All files (*)</source>
+        <translation>Všechny soubory (*)</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/messagemodel.cpp" line="-1118"/>
+        <location line="+18"/>
+        <location line="+67"/>
+        <location line="+39"/>
+        <location line="+17"/>
+        <location line="+15"/>
+        <location filename="../tools/linguist/linguist/phrase.cpp" line="+196"/>
+        <source>Qt Linguist</source>
+        <translation>Qt Linguist</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/shared/po.cpp" line="+658"/>
+        <source>GNU Gettext localization files</source>
+        <translation>Překladové soubory GNU Gettext</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/shared/ts.cpp" line="+752"/>
+        <source>Qt translation sources (format 1.1)</source>
+        <translation>Překladové soubory Qt (verze formátu 1.1)</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Qt translation sources (format 2.0)</source>
+        <translation>Překladové soubory Qt (verze formátu 2.0)</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Qt translation sources (latest format)</source>
+        <translation>Překladové soubory Qt (nejnovější formát)</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/shared/xliff.cpp" line="+827"/>
+        <source>XLIFF localization files</source>
+        <translation>Překladové soubory XLIFF</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/shared/qph.cpp" line="+183"/>
+        <source>Qt Linguist &apos;Phrase Book&apos;</source>
+        <translation>Slovník Qt Linguist</translation>
+    </message>
+</context>
+<context>
+    <name>SourceCodeView</name>
+    <message>
+        <location filename="../tools/linguist/linguist/sourcecodeview.cpp" line="+70"/>
+        <source>&lt;i&gt;Source code not available&lt;/i&gt;</source>
+        <translation>&lt;i&gt;Zdrojový text není dostupný&lt;/i&gt;</translation>
+    </message>
+    <message>
+        <location line="+33"/>
+        <source>&lt;i&gt;File %1 not available&lt;/i&gt;</source>
+        <translation>&lt;i&gt;Soubor %1 není dostupný&lt;/i&gt;</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>&lt;i&gt;File %1 not readable&lt;/i&gt;</source>
+        <translation>&lt;i&gt;Soubor %1 není čitelný&lt;/i&gt;</translation>
+    </message>
+</context>
+<context>
+    <name>Statistics</name>
+    <message>
+        <location filename="../tools/linguist/linguist/statistics.ui"/>
+        <source>Statistics</source>
+        <translation>Statistiky</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Translation</source>
+        <translation>Překlad</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Source</source>
+        <translation>Zdroj</translation>
+    </message>
+    <message>
+        <location/>
+        <source>0</source>
+        <translation>0</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Words:</source>
+        <translation>Slov:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Characters:</source>
+        <translation>Znaků:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Characters (with spaces):</source>
+        <translation>Znaků (s mezerami):</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+</context>
+<context>
+    <name>TranslateDialog</name>
+    <message>
+        <location filename="../tools/linguist/linguist/translatedialog.ui"/>
+        <source>This window allows you to search for some text in the translation source file.</source>
+        <translation>Toto okno vám umožňuje hledání textu ve zdrojovém souboru s překladem.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Type in the text to search for.</source>
+        <translation>Zadejte text, který se má hledat.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Find &amp;source text:</source>
+        <translation>Hledat &amp;zdrojový text:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Translate to:</source>
+        <translation>&amp;Překlad:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Search options</source>
+        <translation>Nastavení hledání</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Texts such as &apos;TeX&apos; and &apos;tex&apos; are considered as different when checked.</source>
+        <translation>Když je zapnuto, texty jako &apos;TeX&apos; a &apos;tex&apos; se považují za rozdílné.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Match &amp;case</source>
+        <translation>Dbát na &amp;psaní velkých a malých písmen</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Mark new translation as &amp;finished</source>
+        <translation>Nový překlad označit jako &amp;vyřízený</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Click here to find the next occurrence of the text you typed in.</source>
+        <translation>Klepněte sem pro skok k dalšímu výskytu hledáného textu.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Find Next</source>
+        <translation>Hledat dál</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Translate</source>
+        <translation>Přeložit</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Translate All</source>
+        <translation>Přeložit vše</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Click here to close this window.</source>
+        <translation>Klepněte sem pro zavření tohoto okna.</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+</context>
+<context>
+    <name>TranslationSettingsDialog</name>
+    <message>
+        <location filename="../tools/linguist/linguist/translationsettingsdialog.cpp" line="+68"/>
+        <source>Any Country</source>
+        <translation>Země</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <location line="+8"/>
+        <source>Settings for &apos;%1&apos; - Qt Linguist</source>
+        <translation>Nastavení pro &apos;%1&apos; - Qt Linguist</translation>
+    </message>
+    <message>
+        <location filename="../tools/linguist/linguist/translationsettings.ui"/>
+        <source>Source language</source>
+        <translation>Zdrojový jazyk</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Language</source>
+        <translation>Jazyk</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Country/Region</source>
+        <translation>Země/Oblast</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Target language</source>
+        <translation>Cílový jazyk</translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/qt_cs.ts	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,10362 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs_CZ">
+<context>
+    <name>AudioEqualizer</name>
+    <message>
+        <source>Frequency band, %1 Hz</source>
+        <translation type="obsolete">Kmitočtové pásmo, %1 Hz</translation>
+    </message>
+</context>
+<context>
+    <name>AudioOutput</name>
+    <message>
+        <source>&lt;html&gt;The audio playback device &lt;b&gt;%1&lt;/b&gt; does not work.&lt;br/&gt;Falling back to &lt;b&gt;%2&lt;/b&gt;.&lt;/html&gt;</source>
+        <translation type="obsolete">&lt;html&gt;Zařízení pro přehrávání zvuku &lt;b&gt;%1&lt;/b&gt; nepracuje.&lt;br/&gt;Místo něj &lt;b&gt;%2&lt;/b&gt; se používá.&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <source>Revert back to device &apos;%1&apos;</source>
+        <translation type="obsolete">Přepnout zpět na zařízení &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <source>&lt;html&gt;Switching to the audio playback device &lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;which just became available and has higher preference.&lt;/html&gt;</source>
+        <translation type="obsolete">&lt;html&gt;Zařízení pro přehrávání zvuku &lt;b&gt;%1&lt;/b&gt; bylo spuštěno,&lt;br/&gt;protože je právě dostupné a má větší přednost.&lt;/html&gt;</translation>
+    </message>
+</context>
+<context>
+    <name>CloseButton</name>
+    <message>
+        <location filename="../src/gui/widgets/qtabbar.cpp" line="+2245"/>
+        <source>Close Tab</source>
+        <translation>Zavřít kartu</translation>
+    </message>
+</context>
+<context>
+    <name>FakeReply</name>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp" line="+2193"/>
+        <source>Fake error !</source>
+        <translation>Napodobená chyba!</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Invalid URL</source>
+        <translation>Neplátné URL</translation>
+    </message>
+</context>
+<context>
+    <name>Phonon::</name>
+    <message>
+        <location filename="../src/3rdparty/phonon/phonon/phononnamespace.cpp" line="+63"/>
+        <source>Games</source>
+        <translation>Hry</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Music</source>
+        <translation>Hudba</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Video</source>
+        <translation>Video</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Communication</source>
+        <translation>Spojení</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Accessibility</source>
+        <translation>Dostupnost</translation>
+    </message>
+    <message>
+        <location line="-10"/>
+        <source>Notifications</source>
+        <translation>Oznámení</translation>
+    </message>
+</context>
+<context>
+    <name>Phonon::AudioOutput</name>
+    <message>
+        <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+377"/>
+        <source>&lt;html&gt;The audio playback device &lt;b&gt;%1&lt;/b&gt; does not work.&lt;br/&gt;Falling back to &lt;b&gt;%2&lt;/b&gt;.&lt;/html&gt;</source>
+        <translation>&lt;html&gt;Zařízení pro přehrávání zvuku &lt;b&gt;%1&lt;/b&gt; nepracuje.&lt;br/&gt;Místo něj &lt;b&gt;%2&lt;/b&gt; se používá.&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>&lt;html&gt;Switching to the audio playback device &lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;which just became available and has higher preference.&lt;/html&gt;</source>
+        <translation>&lt;html&gt;Zařízení pro přehrávání zvuku &lt;b&gt;%1&lt;/b&gt; bylo spuštěno,&lt;br/&gt;protože je právě dostupné a má větší přednost.&lt;/html&gt;</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Revert back to device &apos;%1&apos;</source>
+        <translation>Přepnout zpět na zařízení &apos;%1&apos;</translation>
+    </message>
+</context>
+<context>
+    <name>Phonon::Gstreamer::Backend</name>
+    <message>
+        <location filename="../src/3rdparty/phonon/gstreamer/backend.cpp" line="+176"/>
+        <source>Warning: You do not seem to have the base GStreamer plugins installed.
+          All audio and video support has been disabled</source>
+        <translation>Upozornění: Zdá se, že zákládní přídavné moduly pro GStreamer nejsou nainstalovány.
+Podpora audia a videa byla vypnuta</translation>
+    </message>
+    <message>
+        <location line="-5"/>
+        <source>Warning: You do not seem to have the package gstreamer0.10-plugins-good installed.
+          Some video features have been disabled.</source>
+        <translation>Varování: Balíček gstreamer0.10-plugins-good není nainstalován.
+Některé vlastnosti videa nejsou dostupné.</translation>
+    </message>
+</context>
+<context>
+    <name>Phonon::Gstreamer::MediaObject</name>
+    <message>
+        <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+884"/>
+        <location line="+8"/>
+        <location line="+15"/>
+        <location line="+22"/>
+        <location line="+6"/>
+        <location line="+19"/>
+        <location line="+339"/>
+        <location line="+24"/>
+        <source>Could not open media source.</source>
+        <translation>Zdroj s médii se nepodařilo otevřít.</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>Could not decode media source.</source>
+        <translation>Zdroj s médii se nepodařilo rozluštit.</translation>
+    </message>
+    <message>
+        <location line="-417"/>
+        <source>Invalid source type.</source>
+        <translation>Neplatný typ zdroje s médii.</translation>
+    </message>
+    <message>
+        <location line="-807"/>
+        <source>Cannot start playback. 
+
+Check your Gstreamer installation and make sure you 
+have libgstreamer-plugins-base installed.</source>
+        <translation>Přehrávání nelze spustit.
+
+Ověřte, prosím, instalaci Gstreamer a ujistěte se,
+že je nainstalován balíček libgstreamer-plugins-base.</translation>
+    </message>
+    <message>
+        <location line="+1211"/>
+        <source>Could not open audio device. The device is already in use.</source>
+        <translation>Zvukové zařízení se nepodařilo otevřít, protože se již používá.</translation>
+    </message>
+    <message>
+        <location line="-1098"/>
+        <source>A required codec is missing. You need to install the following codec(s) to play this content: %0</source>
+        <translation>Všechny vyžadované kodeky nejsou nainstalovány. Kvůli přehrání tohoto obsahu je potřeba nainstalovat následující kodek(y): %0</translation>
+    </message>
+    <message>
+        <location line="+1088"/>
+        <source>Could not locate media source.</source>
+        <translation>Zdroj s médii se nepodařilo nalézt.</translation>
+    </message>
+</context>
+<context>
+    <name>Phonon::MMF</name>
+    <message>
+        <location filename="../src/3rdparty/phonon/mmf/audiooutput.cpp" line="+108"/>
+        <source>Audio Output</source>
+        <translation>Výstup zvuku</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>The audio output device</source>
+        <translation>Zařízení pro výstup zvuku</translation>
+    </message>
+</context>
+<context>
+    <name>Phonon::MMF::AudioEqualizer</name>
+    <message>
+        <location filename="../src/3rdparty/phonon/mmf/audioequalizer.cpp" line="+75"/>
+        <source>Frequency band, %1 Hz</source>
+        <translation>Kmitočtové pásmo, %1 Hz</translation>
+    </message>
+</context>
+<context>
+    <name>Phonon::MMF::EffectFactory</name>
+    <message>
+        <location filename="../src/3rdparty/phonon/mmf/effectfactory.cpp" line="+65"/>
+        <source>audio equalizer</source>
+        <translation>zvukový ekvalizér</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Bass boost</source>
+        <translation>Zdůraznění basů</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Distance Attenuation</source>
+        <translation>Zeslabení v závislosti na vzdálenosti</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location line="+2"/>
+        <source>Environmental Reverb</source>
+        <translation>Vnější ozvěna</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Loudness</source>
+        <translation>Hlasitost</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Source Orientation</source>
+        <translation>Zaměření zdroje</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Stereo Widening</source>
+        <translation>Rozšíření sterea</translation>
+    </message>
+</context>
+<context>
+    <name>Phonon::VolumeSlider</name>
+    <message>
+        <location filename="../src/3rdparty/phonon/phonon/volumeslider.cpp" line="+42"/>
+        <location line="+18"/>
+        <location line="+129"/>
+        <location line="+15"/>
+        <source>Volume: %1%</source>
+        <translation>Hlasitost: %1%</translation>
+    </message>
+    <message>
+        <location line="-159"/>
+        <location line="+18"/>
+        <location line="+54"/>
+        <source>Use this slider to adjust the volume. The leftmost position is 0%, the rightmost is %1%</source>
+        <translation>Posuvník se používá k nastavení hlasitosti. Poloha nejvíce vlevo odpovídá 0%; poloha nejvíce vpravo odpovídá %1%</translation>
+    </message>
+    <message>
+        <location line="+67"/>
+        <source>Muted</source>
+        <translation>Ztlumení</translation>
+    </message>
+</context>
+<context>
+    <name>Q3Accel</name>
+    <message>
+        <location filename="../src/qt3support/other/q3accel.cpp" line="+481"/>
+        <source>%1, %2 not defined</source>
+        <translation>%1, %2 nejsou stanoveny</translation>
+    </message>
+    <message>
+        <location line="+36"/>
+        <source>Ambiguous %1 not handled</source>
+        <translation>Nejednoznačné %1 nemohou být zpracovány</translation>
+    </message>
+</context>
+<context>
+    <name>Q3DataTable</name>
+    <message>
+        <location filename="../src/qt3support/sql/q3datatable.cpp" line="+285"/>
+        <source>True</source>
+        <translation>Pravdivý</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>False</source>
+        <translation>Nesprávný</translation>
+    </message>
+    <message>
+        <location line="+507"/>
+        <source>Delete</source>
+        <translation>Smazat</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>Insert</source>
+        <translation>Vložit</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Update</source>
+        <translation>Obnovit</translation>
+    </message>
+</context>
+<context>
+    <name>Q3FileDialog</name>
+    <message>
+        <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="+2426"/>
+        <location line="+2027"/>
+        <source>&amp;OK</source>
+        <translation>&amp;OK</translation>
+    </message>
+    <message>
+        <location line="-254"/>
+        <source>&amp;No</source>
+        <translation>&amp;Ne</translation>
+    </message>
+    <message>
+        <location line="-1557"/>
+        <source>Dir</source>
+        <translation>Adresář</translation>
+    </message>
+    <message>
+        <location line="+1557"/>
+        <source>&amp;Yes</source>
+        <translation>&amp;Ano</translation>
+    </message>
+    <message>
+        <location line="-1724"/>
+        <source>Back</source>
+        <translation>Zpět</translation>
+    </message>
+    <message>
+        <location line="-85"/>
+        <source>Date</source>
+        <translation>Datum</translation>
+    </message>
+    <message>
+        <location line="+251"/>
+        <source>File</source>
+        <translation>Soubor</translation>
+    </message>
+    <message>
+        <location line="-255"/>
+        <source>Name</source>
+        <translation>Název</translation>
+    </message>
+    <message>
+        <location line="+961"/>
+        <location line="+1999"/>
+        <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+209"/>
+        <source>Open</source>
+        <translation>Otevřít</translation>
+    </message>
+    <message>
+        <location line="-2959"/>
+        <source>Size</source>
+        <translation>Velikost</translation>
+    </message>
+    <message>
+        <location line="+1767"/>
+        <source>Sort</source>
+        <translation>Roztřídit</translation>
+    </message>
+    <message>
+        <location line="-1765"/>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <location line="+1710"/>
+        <location line="+5"/>
+        <location line="+355"/>
+        <source>&amp;Open</source>
+        <translation>&amp;Otevřít</translation>
+    </message>
+    <message>
+        <location line="-357"/>
+        <location line="+341"/>
+        <source>&amp;Save</source>
+        <translation>&amp;Uložit</translation>
+    </message>
+    <message>
+        <location line="+51"/>
+        <location line="+1009"/>
+        <source>Error</source>
+        <translation>Chyba</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+144"/>
+        <source>Open </source>
+        <translation>Otevřít</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="-4660"/>
+        <location line="+30"/>
+        <source>Write: %1</source>
+        <translation>Zapsat: %1</translation>
+    </message>
+    <message>
+        <location line="+3263"/>
+        <source>Sort by &amp;Size</source>
+        <translation>Roztřídit podle &amp;velikosti</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Sort by &amp;Date</source>
+        <translation>Roztřídit podle &amp;data</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>Sort by &amp;Name</source>
+        <translation>Roztřídit podle &amp;názvu</translation>
+    </message>
+    <message>
+        <location line="+101"/>
+        <source>New Folder 1</source>
+        <translation>Nová složka 1</translation>
+    </message>
+    <message>
+        <location line="-44"/>
+        <source>the directory</source>
+        <translation>Adresář</translation>
+    </message>
+    <message>
+        <location line="-1723"/>
+        <source>File &amp;type:</source>
+        <translation>Typ &amp;souboru:</translation>
+    </message>
+    <message>
+        <location line="-1"/>
+        <location line="+1977"/>
+        <location line="+16"/>
+        <source>File &amp;name:</source>
+        <translation>Název &amp;souboru:</translation>
+    </message>
+    <message>
+        <location line="-264"/>
+        <source>Delete %1</source>
+        <translation>Smazat %1</translation>
+    </message>
+    <message>
+        <location line="-3345"/>
+        <location line="+1579"/>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+    <message>
+        <location line="+1700"/>
+        <source>R&amp;eload</source>
+        <translation>Nahrát &amp;znovu</translation>
+    </message>
+    <message>
+        <location line="+110"/>
+        <source>New Folder</source>
+        <translation>Nová složka</translation>
+    </message>
+    <message>
+        <location line="-101"/>
+        <source>&amp;Unsorted</source>
+        <translation>&amp;Neroztříděné</translation>
+    </message>
+    <message>
+        <location line="-1673"/>
+        <source>Look &amp;in:</source>
+        <translation>Hle&amp;dat v:</translation>
+    </message>
+    <message>
+        <location line="+79"/>
+        <source>Preview File Contents</source>
+        <translation>Náhled obsahu souboru</translation>
+    </message>
+    <message>
+        <location line="+1700"/>
+        <source>New Folder %1</source>
+        <translation>Nová složka %1</translation>
+    </message>
+    <message>
+        <location line="-1612"/>
+        <source>Read-write</source>
+        <translation>Číst/Zapisovat</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Read-only</source>
+        <translation>Pouze číst</translation>
+    </message>
+    <message>
+        <location line="-1805"/>
+        <source>Copy or Move a File</source>
+        <translation>Soubor kopírovat nebo posunout</translation>
+    </message>
+    <message>
+        <location line="+3368"/>
+        <source>&lt;qt&gt;Are you sure you wish to delete %1 &quot;%2&quot;?&lt;/qt&gt;</source>
+        <translation>&lt;qt&gt;Jste si jistý, že chcete smazat %1 &quot;%2&quot;?&lt;/qt&gt;</translation>
+    </message>
+    <message>
+        <location line="+146"/>
+        <source>Find Directory</source>
+        <translation>Najít adresář</translation>
+    </message>
+    <message>
+        <location line="-1952"/>
+        <source>Attributes</source>
+        <translation>Vlastnosti</translation>
+    </message>
+    <message>
+        <location line="+1767"/>
+        <source>Show &amp;hidden files</source>
+        <translation>&amp;Ukázat skryté soubory</translation>
+    </message>
+    <message>
+        <location line="-701"/>
+        <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="-73"/>
+        <source>Save As</source>
+        <translation>Uložit jako</translation>
+    </message>
+    <message>
+        <location line="-821"/>
+        <source>Inaccessible</source>
+        <translation>Nepřístupné</translation>
+    </message>
+    <message>
+        <location line="+1859"/>
+        <source>%1
+File not found.
+Check path and filename.</source>
+        <translation>%1
+Soubor se nepodařilo nalézt.
+Ověřte cestu a název souboru.</translation>
+    </message>
+    <message>
+        <location line="-1986"/>
+        <source>List View</source>
+        <translation>Pohled se seznamem</translation>
+    </message>
+    <message>
+        <location line="+134"/>
+        <source>Special</source>
+        <translation>Zvláštní vlastnost</translation>
+    </message>
+    <message>
+        <location line="-8"/>
+        <source>Write-only</source>
+        <translation>Pouze zápis</translation>
+    </message>
+    <message>
+        <location line="+1558"/>
+        <source>the symlink</source>
+        <translation>Symbolický odkaz</translation>
+    </message>
+    <message>
+        <location line="-83"/>
+        <source>&amp;Delete</source>
+        <translation>&amp;Smazat</translation>
+    </message>
+    <message>
+        <location line="-1837"/>
+        <location line="+49"/>
+        <location line="+2149"/>
+        <location filename="../src/qt3support/dialogs/q3filedialog_mac.cpp" line="+112"/>
+        <source>All Files (*)</source>
+        <translation>Všechny soubory (*)</translation>
+    </message>
+    <message>
+        <location line="-123"/>
+        <location line="+108"/>
+        <source>Directories</source>
+        <translation>Adresáře</translation>
+    </message>
+    <message>
+        <location line="-1816"/>
+        <source>Symlink to Special</source>
+        <translation>Symbolický odkaz k zvláštnímu souboru</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/dialogs/q3filedialog_win.cpp" line="+180"/>
+        <source>Select a Directory</source>
+        <translation>Vyberte adresář</translation>
+    </message>
+    <message>
+        <location line="-371"/>
+        <source>All Files (*.*)</source>
+        <translation>Všechny soubory (*.*)</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/dialogs/q3filedialog.cpp" line="-1803"/>
+        <source>Read: %1</source>
+        <translation>Číst: %1</translation>
+    </message>
+    <message>
+        <location line="+3272"/>
+        <source>&amp;Rename</source>
+        <translation>&amp;Přejmenovat</translation>
+    </message>
+    <message>
+        <location line="+345"/>
+        <source>Directory:</source>
+        <translation>Adresář:</translation>
+    </message>
+    <message>
+        <location line="-1972"/>
+        <source>One directory up</source>
+        <translation>O jeden adresář nahoru</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>Preview File Info</source>
+        <translation>Náhled informace o souboru</translation>
+    </message>
+    <message>
+        <location line="+1663"/>
+        <source>the file</source>
+        <translation>Soubor</translation>
+    </message>
+    <message>
+        <location line="-1698"/>
+        <source>Create New Folder</source>
+        <translation>Vytvořit novou složku</translation>
+    </message>
+    <message>
+        <location line="+147"/>
+        <source>Symlink to File</source>
+        <translation>Symbolický odkaz k souboru</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Symlink to Directory</source>
+        <translation>Symbolický odkaz k adresáři</translation>
+    </message>
+    <message>
+        <location line="-122"/>
+        <source>Detail View</source>
+        <translation>Podrobný pohled</translation>
+    </message>
+</context>
+<context>
+    <name>Q3LocalFs</name>
+    <message>
+        <location filename="../src/qt3support/network/q3localfs.cpp" line="+271"/>
+        <source>Could not open
+%1</source>
+        <translation>Nepodařilo se otevřít:
+%1</translation>
+    </message>
+    <message>
+        <location line="-52"/>
+        <source>Could not remove file or directory
+%1</source>
+        <translation>Nepodařilo se odstranit soubor nebo adresář
+%1</translation>
+    </message>
+    <message>
+        <location line="-34"/>
+        <source>Could not create directory
+%1</source>
+        <translation>Nepodařilo se vytvořit adresář
+%1</translation>
+    </message>
+    <message>
+        <location line="-55"/>
+        <location line="+10"/>
+        <source>Could not read directory
+%1</source>
+        <translation>Nepodařilo se přečíst adresář
+%1</translation>
+    </message>
+    <message>
+        <location line="+106"/>
+        <source>Could not rename
+%1
+to
+%2</source>
+        <translation>Nepodařilo se přejmenovat:
+%1
+na
+%2</translation>
+    </message>
+    <message>
+        <location line="+93"/>
+        <source>Could not write
+%1</source>
+        <translation>Nepodařilo se zapsat:
+%1</translation>
+    </message>
+</context>
+<context>
+    <name>Q3MainWindow</name>
+    <message>
+        <location filename="../src/qt3support/widgets/q3mainwindow.cpp" line="+2051"/>
+        <source>Line up</source>
+        <translation>Uspořádat</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Customize...</source>
+        <translation>Přizpůsobit...</translation>
+    </message>
+</context>
+<context>
+    <name>Q3NetworkProtocol</name>
+    <message>
+        <location filename="../src/qt3support/network/q3networkprotocol.cpp" line="+854"/>
+        <source>Operation stopped by the user</source>
+        <translation>Operace byla zastavena uživatelem</translation>
+    </message>
+</context>
+<context>
+    <name>Q3ProgressDialog</name>
+    <message>
+        <location filename="../src/qt3support/dialogs/q3progressdialog.cpp" line="+224"/>
+        <location line="+61"/>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+</context>
+<context>
+    <name>Q3TabDialog</name>
+    <message>
+        <location filename="../src/qt3support/dialogs/q3tabdialog.cpp" line="+190"/>
+        <location line="+824"/>
+        <source>OK</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <location line="-323"/>
+        <source>Help</source>
+        <translation>Nápověda</translation>
+    </message>
+    <message>
+        <location line="-43"/>
+        <source>Apply</source>
+        <translation>Použít</translation>
+    </message>
+    <message>
+        <location line="+138"/>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+    <message>
+        <location line="-50"/>
+        <source>Defaults</source>
+        <translation>Výchozí</translation>
+    </message>
+</context>
+<context>
+    <name>Q3TextEdit</name>
+    <message>
+        <location filename="../src/qt3support/text/q3textedit.cpp" line="+5435"/>
+        <source>Cu&amp;t</source>
+        <translation>Vyj&amp;mout</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Kopírovat</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>&amp;Redo</source>
+        <translation>&amp;Znovu</translation>
+    </message>
+    <message>
+        <location line="-1"/>
+        <source>&amp;Undo</source>
+        <translation>&amp;Zpět</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>Clear</source>
+        <translation>Smazat</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>&amp;Paste</source>
+        <translation>&amp;Vložit</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <location line="+2"/>
+        <source>Select All</source>
+        <translation>Vybrat vše</translation>
+    </message>
+</context>
+<context>
+    <name>Q3TitleBar</name>
+    <message>
+        <location filename="../src/plugins/accessible/compat/q3complexwidgets.cpp" line="+256"/>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Minimize</source>
+        <translation>Zmenšit</translation>
+    </message>
+    <message>
+        <source>Puts a minimized back to normal</source>
+        <translation type="obsolete">Dá velikost zmenšeného okna zpátky do obvyklého stavu</translation>
+    </message>
+    <message>
+        <location line="+36"/>
+        <source>Displays the name of the window and contains controls to manipulate it</source>
+        <translation>Zobrazí název okna a obsahuje příkazy pro zacházení s ním</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <source>Makes the window full screen</source>
+        <translation>Dá okno na celou obrazovku</translation>
+    </message>
+    <message>
+        <location line="-36"/>
+        <source>System</source>
+        <translation>Systém</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Maximize</source>
+        <translation>Zvětšit</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Contains commands to manipulate the window</source>
+        <translation>Obsahuje příkazy pro zacházení s velikostí okna</translation>
+    </message>
+    <message>
+        <location line="-25"/>
+        <source>Restore up</source>
+        <translation>Obnovit</translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <source>Puts a minimized window back to normal</source>
+        <translation>Dá velikost zmenšeného okna zpátky do obvyklého stavu</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Closes the window</source>
+        <translation>Zavře okno</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>Puts a maximized window back to normal</source>
+        <translation>Dá velikost zvětšeného okna zpátky do obvyklého stavu</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>Moves the window out of the way</source>
+        <translation>Zmenší okno</translation>
+    </message>
+    <message>
+        <location line="-25"/>
+        <source>Restore down</source>
+        <translation>Obnovit</translation>
+    </message>
+</context>
+<context>
+    <name>Q3ToolBar</name>
+    <message>
+        <location filename="../src/qt3support/widgets/q3toolbar.cpp" line="+692"/>
+        <source>More...</source>
+        <translation>Více...</translation>
+    </message>
+</context>
+<context>
+    <name>Q3UrlOperator</name>
+    <message>
+        <location filename="../src/qt3support/network/q3urloperator.cpp" line="+402"/>
+        <source>The protocol `%1&apos; does not support getting files</source>
+        <translation>Protokol `%1&apos; nepodporuje nahrávání souborů</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>The protocol `%1&apos; does not support renaming files or directories</source>
+        <translation>Protokol `%1&apos; nepodporuje přejmenovávání souborů nebo adresářů</translation>
+    </message>
+    <message>
+        <location line="-9"/>
+        <source>The protocol `%1&apos; does not support listing directories</source>
+        <translation>Protokol `%1&apos; nepodporuje sestavování seznamu adresářů</translation>
+    </message>
+    <message>
+        <location line="+499"/>
+        <location line="+1"/>
+        <source>(unknown)</source>
+        <translation>(neznámý)</translation>
+    </message>
+    <message>
+        <location line="-494"/>
+        <source>The protocol `%1&apos; does not support removing files or directories</source>
+        <translation>Protokol `%1&apos; nepodporuje odstraňování souborů nebo adresářů</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>The protocol `%1&apos; does not support putting files</source>
+        <translation>Protokol `%1&apos; nepodporuje ukládání souborů</translation>
+    </message>
+    <message>
+        <location line="-19"/>
+        <location line="+260"/>
+        <location line="+4"/>
+        <source>The protocol `%1&apos; is not supported</source>
+        <translation>Protokol `%1&apos; není podporován</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <location line="+4"/>
+        <source>The protocol `%1&apos; does not support copying or moving files or directories</source>
+        <translation>Protokol `%1&apos; nepodporuje kopírování či přesun souborů nebo adresářů</translation>
+    </message>
+    <message>
+        <location line="-259"/>
+        <source>The protocol `%1&apos; does not support creating new directories</source>
+        <translation>Protokol `%1&apos; nepodporuje vytváření nových adresářů</translation>
+    </message>
+</context>
+<context>
+    <name>Q3Wizard</name>
+    <message>
+        <location filename="../src/qt3support/dialogs/q3wizard.cpp" line="+181"/>
+        <source>&amp;Help</source>
+        <translation>&amp;Nápověda</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <source>&amp;Cancel</source>
+        <translation>&amp;Zrušit</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&amp;Finish</source>
+        <translation>Do&amp;končit</translation>
+    </message>
+    <message>
+        <location line="-1"/>
+        <source>&amp;Next &gt;</source>
+        <translation>&amp;Další &gt;</translation>
+    </message>
+    <message>
+        <location line="-1"/>
+        <source>&lt; &amp;Back</source>
+        <translation>&lt; &amp;Zpět</translation>
+    </message>
+</context>
+<context>
+    <name>QAbstractSocket</name>
+    <message>
+        <location filename="../src/network/socket/qabstractsocket.cpp" line="+890"/>
+        <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+633"/>
+        <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+661"/>
+        <location line="+26"/>
+        <source>Host not found</source>
+        <translation>Nepodařilo se najít počítač</translation>
+    </message>
+    <message>
+        <location line="+50"/>
+        <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+3"/>
+        <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+4"/>
+        <source>Connection refused</source>
+        <translation>Spojení bylo odmítnuto</translation>
+    </message>
+    <message>
+        <location line="+142"/>
+        <source>Connection timed out</source>
+        <translation>Časový limit pro spojení byl překročen</translation>
+    </message>
+    <message>
+        <location line="+1029"/>
+        <source>Socket is not connected</source>
+        <translation>Zásuvka (socket) není spojena</translation>
+    </message>
+    <message>
+        <location line="-380"/>
+        <source>Socket operation timed out</source>
+        <translation>Časový limit pro zásuvkovou (socket) operaci byl překročen</translation>
+    </message>
+    <message>
+        <location filename="../src/network/socket/qsocks5socketengine.cpp" line="-8"/>
+        <source>Network unreachable</source>
+        <translation>Síť není dosažitelná</translation>
+    </message>
+    <message>
+        <location filename="../src/network/socket/qabstractsocket.cpp" line="-1197"/>
+        <location line="+789"/>
+        <location line="+208"/>
+        <source>Operation on socket is not supported</source>
+        <translation>Tato zásuvková (socket) operace není podporována</translation>
+    </message>
+</context>
+<context>
+    <name>QAbstractSpinBox</name>
+    <message>
+        <location filename="../src/gui/widgets/qabstractspinbox.cpp" line="+1219"/>
+        <source>Step &amp;down</source>
+        <translation>Krok &amp;dolů</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>&amp;Step up</source>
+        <translation>&amp;Krok nahoru</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>&amp;Select All</source>
+        <translation>&amp;Vybrat vše</translation>
+    </message>
+</context>
+<context>
+    <name>QAccessibleButton</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+250"/>
+        <source>Press</source>
+        <translation>Stisknout</translation>
+    </message>
+</context>
+<context>
+    <name>QApplication</name>
+    <message>
+        <location filename="../src/gui/accessible/qaccessibleobject.cpp" line="+378"/>
+        <source>Activates the program&apos;s main window</source>
+        <translation>Spustí hlavní okno programu</translation>
+    </message>
+    <message>
+        <source>QT_LAYOUT_DIRECTION</source>
+        <translation type="obsolete">LTR</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>Activate</source>
+        <translation>Spustit</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qmessagebox.h" line="+354"/>
+        <source>Executable &apos;%1&apos; requires Qt %2, found Qt %3.</source>
+        <translation>Použití &apos;%1&apos; vyžaduje Qt %2; bylo ale nalezeno Qt %3.</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Incompatible Qt Library Error</source>
+        <translation>Qt není slučitelná</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/kernel/qapplication.cpp" line="+2290"/>
+        <source>QT_LAYOUT_DIRECTION</source>
+        <comment>Translate this string to the string &apos;LTR&apos; in left-to-right languages or to &apos;RTL&apos; in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.</comment>
+        <translation>LTR</translation>
+    </message>
+</context>
+<context>
+    <name>QAxSelect</name>
+    <message>
+        <location filename="../src/activeqt/container/qaxselect.ui"/>
+        <source>OK</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <location/>
+        <source>COM &amp;Object:</source>
+        <translation>COM-&amp;Objekt:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Cancel</source>
+        <translation>&amp;Zrušit</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Select ActiveX Control</source>
+        <translation>Vybrat prvek ActiveX</translation>
+    </message>
+</context>
+<context>
+    <name>QCheckBox</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="-133"/>
+        <source>Check</source>
+        <translation>Označit křížkem</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Toggle</source>
+        <translation>Přepnout</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <source>Uncheck</source>
+        <translation>Zrušit označení křížkem</translation>
+    </message>
+</context>
+<context>
+    <name>QColorDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qcolordialog.cpp" line="+1352"/>
+        <source>&amp;Red:</source>
+        <translation>&amp;Červená:</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>&amp;Sat:</source>
+        <translation>&amp;Sytost:</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Val:</source>
+        <translation>&amp;Jasnost:</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>Hu&amp;e:</source>
+        <translation>Barevný &amp;odstín:</translation>
+    </message>
+    <message>
+        <location line="+107"/>
+        <source>Select Color</source>
+        <translation>Vybrat barvu</translation>
+    </message>
+    <message>
+        <location line="+182"/>
+        <source>&amp;Add to Custom Colors</source>
+        <translation>&amp;Přidat k uživatelem stanoveným barvám</translation>
+    </message>
+    <message>
+        <location line="-284"/>
+        <source>Bl&amp;ue:</source>
+        <translation>&amp;Modrá:</translation>
+    </message>
+    <message>
+        <location line="-1"/>
+        <source>&amp;Green:</source>
+        <translation>&amp;Zelená:</translation>
+    </message>
+    <message>
+        <location line="+283"/>
+        <source>&amp;Basic colors</source>
+        <translation>Základní &amp;barvy</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Custom colors</source>
+        <translation>&amp;Uživatelem stanovené barvy</translation>
+    </message>
+    <message>
+        <location line="-282"/>
+        <source>A&amp;lpha channel:</source>
+        <translation>A&amp;lfa kanál:</translation>
+    </message>
+</context>
+<context>
+    <name>QComboBox</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
+        <location line="+65"/>
+        <source>Open</source>
+        <translation>Otevřít</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="+557"/>
+        <source>True</source>
+        <translation>Pravdivý</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+0"/>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/itemviews/qitemeditorfactory.cpp" line="-1"/>
+        <source>False</source>
+        <translation>Nesprávný</translation>
+    </message>
+</context>
+<context>
+    <name>QCoreApplication</name>
+    <message>
+        <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="+119"/>
+        <source>%1: key is empty</source>
+        <comment>QSystemSemaphore</comment>
+        <translation>%1: Neplatný údaj u klíče (prázdný)</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>%1: unable to make key</source>
+        <comment>QSystemSemaphore</comment>
+        <translation>%1: Nepodařilo se vytvořit klíč</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>%1: ftok failed</source>
+        <comment>QSystemSemaphore</comment>
+        <translation>%1: Vyvolání ftok se nezdařilo</translation>
+    </message>
+    <message>
+        <source>%1: key is empty</source>
+        <translation type="obsolete">%1: Neplatný údaj u klíče (prázdný)</translation>
+    </message>
+    <message>
+        <source>%1: unable to make key</source>
+        <translation type="obsolete">%1: Nepodařilo se vytvořit klíč</translation>
+    </message>
+    <message>
+        <source>%1: ftok failed</source>
+        <translation type="obsolete">%1: Vyvolání ftok se nezdařilo</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsystemsemaphore_symbian.cpp" line="+65"/>
+        <source>%1: already exists</source>
+        <comment>QSystemSemaphore</comment>
+        <translation>%1: Již existuje</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>%1: does not exist</source>
+        <comment>QSystemSemaphore</comment>
+        <translation>%1: Neexistuje</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>%1: out of resources</source>
+        <comment>QSystemSemaphore</comment>
+        <translation>%1: Nejsou již použitelné zdroje</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>%1: unknown error %2</source>
+        <comment>QSystemSemaphore</comment>
+        <translation>%1: Neznámá chyba %2</translation>
+    </message>
+</context>
+<context>
+    <name>QDB2Driver</name>
+    <message>
+        <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+1552"/>
+        <source>Unable to commit transaction</source>
+        <translation>Transakci se nepodařilo provést (operace &apos;commit&apos;, odeslání, se nezdařila)</translation>
+    </message>
+    <message>
+        <location line="+32"/>
+        <source>Unable to set autocommit</source>
+        <translation>&apos;autocommit&apos; se nepodařilo nastavit</translation>
+    </message>
+    <message>
+        <location line="-330"/>
+        <source>Unable to connect</source>
+        <translation>Nepodařilo se navázat spojení</translation>
+    </message>
+    <message>
+        <location line="+315"/>
+        <source>Unable to rollback transaction</source>
+        <translation>Transakci se nepodařilo zvrátit (operace &apos;rollback&apos;, zvrácení, se nezdařila)</translation>
+    </message>
+</context>
+<context>
+    <name>QDB2Result</name>
+    <message>
+        <location line="-786"/>
+        <source>Unable to bind variable</source>
+        <translation>Proměnnou se nepodařilo provést</translation>
+    </message>
+    <message>
+        <location line="-230"/>
+        <location line="+240"/>
+        <source>Unable to execute statement</source>
+        <translation>Příkaz se nepodařilo provést</translation>
+    </message>
+    <message>
+        <location line="+98"/>
+        <source>Unable to fetch next</source>
+        <translation>Další datový záznam se nepodařilo natáhnout</translation>
+    </message>
+    <message>
+        <location line="-301"/>
+        <source>Unable to prepare statement</source>
+        <translation>Příkaz se nepodařilo připravit</translation>
+    </message>
+    <message>
+        <location line="+282"/>
+        <source>Unable to fetch record %1</source>
+        <translation>Datový záznam %1 se nepodařilo natáhnout</translation>
+    </message>
+    <message>
+        <location line="+40"/>
+        <source>Unable to fetch first</source>
+        <translation>První datový záznam se nepodařilo natáhnout</translation>
+    </message>
+</context>
+<context>
+    <name>QDateTimeEdit</name>
+    <message>
+        <location filename="../src/gui/widgets/qdatetimeedit.cpp" line="+2287"/>
+        <source>AM</source>
+        <translation>AM</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>PM</source>
+        <translation>PM</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>am</source>
+        <translation>am</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>pm</source>
+        <translation>pm</translation>
+    </message>
+</context>
+<context>
+    <name>QDial</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+951"/>
+        <source>QDial</source>
+        <translation>QDial</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>SliderHandle</source>
+        <translation>Posuvník</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>SpeedoMeter</source>
+        <translation>Rychloměr</translation>
+    </message>
+</context>
+<context>
+    <name>QDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qdialog.cpp" line="+501"/>
+        <source>Done</source>
+        <translation>Hotovo</translation>
+    </message>
+    <message>
+        <location line="+135"/>
+        <source>What&apos;s This?</source>
+        <translation>Co je toto?</translation>
+    </message>
+</context>
+<context>
+    <name>QDialogButtonBox</name>
+    <message>
+        <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1872"/>
+        <location line="+464"/>
+        <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+606"/>
+        <source>OK</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+0"/>
+        <source>&amp;OK</source>
+        <translation>&amp;OK</translation>
+    </message>
+    <message>
+        <location line="+38"/>
+        <source>&amp;No</source>
+        <translation>&amp;Ne</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>&amp;Yes</source>
+        <translation>&amp;Ano</translation>
+    </message>
+    <message>
+        <location line="-11"/>
+        <source>Help</source>
+        <translation>Nápověda</translation>
+    </message>
+    <message>
+        <location line="-15"/>
+        <source>Open</source>
+        <translation>Otevřít</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>Save</source>
+        <translation>Uložit</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>&amp;Save</source>
+        <translation>&amp;Uložit</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>Abort</source>
+        <translation>Zrušit</translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <source>Apply</source>
+        <translation>Použít</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Reset</source>
+        <translation>Vrátit</translation>
+    </message>
+    <message>
+        <location line="+32"/>
+        <source>Retry</source>
+        <translation>Opakovat</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Restore Defaults</source>
+        <translation>Obnovit výchozí</translation>
+    </message>
+    <message>
+        <location line="-44"/>
+        <source>&amp;Close</source>
+        <translation>&amp;Zavřít</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>Ignore</source>
+        <translation>Přehlížet</translation>
+    </message>
+    <message>
+        <location line="-26"/>
+        <source>Close without Saving</source>
+        <translation>Zavřít bez uložení</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>N&amp;o to All</source>
+        <translation>N&amp;e, žádné</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Save All</source>
+        <translation>Uložit vše</translation>
+    </message>
+    <message>
+        <location line="-35"/>
+        <source>&amp;Cancel</source>
+        <translation>&amp;Zrušit</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Discard</source>
+        <translation>Odmítnout</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Yes to &amp;All</source>
+        <translation>Ano, &amp;vše</translation>
+    </message>
+    <message>
+        <location line="-10"/>
+        <source>Don&apos;t Save</source>
+        <translation>Neukládat</translation>
+    </message>
+</context>
+<context>
+    <name>QDirModel</name>
+    <message>
+        <source>Kind</source>
+        <translation type="obsolete">Druh</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+457"/>
+        <source>Name</source>
+        <translation>Název</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Size</source>
+        <translation>Velikost</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Kind</source>
+        <comment>Match OS X Finder</comment>
+        <translation>Druh</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Type</source>
+        <comment>All other platforms</comment>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="obsolete">Typ</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Date Modified</source>
+        <translation>Datum změny</translation>
+    </message>
+</context>
+<context>
+    <name>QDockWidget</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/qaccessiblewidgets.cpp" line="+1241"/>
+        <source>Dock</source>
+        <translation>Vplout do panelu</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Float</source>
+        <translation>Plout</translation>
+    </message>
+</context>
+<context>
+    <name>QDoubleSpinBox</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-533"/>
+        <source>Less</source>
+        <translation>Méně</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>More</source>
+        <translation>Více</translation>
+    </message>
+</context>
+<context>
+    <name>QErrorMessage</name>
+    <message>
+        <location filename="../src/gui/dialogs/qerrormessage.cpp" line="+415"/>
+        <source>&amp;OK</source>
+        <translation>&amp;OK</translation>
+    </message>
+    <message>
+        <location line="-201"/>
+        <source>Fatal Error:</source>
+        <translation>Osudová chyba:</translation>
+    </message>
+    <message>
+        <location line="+200"/>
+        <source>&amp;Show this message again</source>
+        <translation>Toto hlášení &amp;ukázat ještě jednou</translation>
+    </message>
+    <message>
+        <location line="-206"/>
+        <source>Debug Message:</source>
+        <translation>Hlášení o odladění:</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Warning:</source>
+        <translation>Varování:</translation>
+    </message>
+</context>
+<context>
+    <name>QFile</name>
+    <message>
+        <location filename="../src/corelib/io/qfile.cpp" line="+905"/>
+        <source>Cannot create %1 for output</source>
+        <translation>%1 se nepodařilo zřídit pro výstup</translation>
+    </message>
+    <message>
+        <location line="-13"/>
+        <source>Failure to write block</source>
+        <translation>Datový blok se nepodařilo zapsat</translation>
+    </message>
+    <message>
+        <location line="-180"/>
+        <source>Will not rename sequential file using block copy</source>
+        <translation>Nepřejmenuje posloupný soubor pomocí kopie bloku</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Cannot remove source file</source>
+        <translation>Nelze odstranit zdrojový soubor</translation>
+    </message>
+    <message>
+        <location line="+130"/>
+        <source>Cannot open %1 for input</source>
+        <translation>%1 se nepodařilo otevřít pro čtení</translation>
+    </message>
+    <message>
+        <location line="-168"/>
+        <location line="+155"/>
+        <source>Destination file exists</source>
+        <translation>Cílový soubor již existuje</translation>
+    </message>
+    <message>
+        <location line="+30"/>
+        <source>Cannot open for output</source>
+        <translation>Nepodařilo se otevřít pro zápis</translation>
+    </message>
+</context>
+<context>
+    <name>QFileDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+        <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+        <source>Back</source>
+        <translation>Zpět</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+464"/>
+        <location line="+1"/>
+        <source>File</source>
+        <translation>Soubor</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>File Folder</source>
+        <comment>Match Windows Explorer</comment>
+        <translation>Souborová složka</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Folder</source>
+        <comment>All other platforms</comment>
+        <translation>Složka</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Alias</source>
+        <comment>Mac OS X Finder</comment>
+        <translation>Přezdívka</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Shortcut</source>
+        <comment>All other platforms</comment>
+        <translation>Zkratka</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+541"/>
+        <source>Open</source>
+        <translation>Otevřít</translation>
+    </message>
+    <message>
+        <location line="+691"/>
+        <location line="+50"/>
+        <location line="+1528"/>
+        <source>&amp;Open</source>
+        <translation>&amp;Otevřít</translation>
+    </message>
+    <message>
+        <location line="-1578"/>
+        <location line="+50"/>
+        <source>&amp;Save</source>
+        <translation>&amp;Uložit</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="-22"/>
+        <source>Drive</source>
+        <translation>Disková jednotka</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-714"/>
+        <source>Show </source>
+        <translation>Ukázat </translation>
+    </message>
+    <message>
+        <location line="+2091"/>
+        <source>&apos;%1&apos; is write protected.
+Do you want to delete it anyway?</source>
+        <translation>&apos;%1&apos; je chráněn proti zápisu.
+Přesto chcete soubor smazat?</translation>
+    </message>
+    <message>
+        <location line="-2077"/>
+        <location line="+663"/>
+        <source>File &amp;name:</source>
+        <translation>Název &amp;souboru:</translation>
+    </message>
+    <message>
+        <location line="+1286"/>
+        <source>New Folder</source>
+        <translation>Nová složka</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+        <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+        <source>Parent Directory</source>
+        <translation>Nadřazený adresář</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1956"/>
+        <source>&amp;New Folder</source>
+        <translation>&amp;Nová složka</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qsidebar.cpp" line="+442"/>
+        <source>Remove</source>
+        <translation>Odstranit</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+402"/>
+        <source>My Computer</source>
+        <translation>Můj počítač</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+        <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+        <source>Look in:</source>
+        <translation>Hledat v:</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+        <source>Files of type:</source>
+        <translation>Soubory typu:</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-36"/>
+        <source>Find Directory</source>
+        <translation>Najít adresář</translation>
+    </message>
+    <message>
+        <location line="+35"/>
+        <source>Show &amp;hidden files</source>
+        <translation>&amp;Ukázat skryté soubory</translation>
+    </message>
+    <message>
+        <location line="+2090"/>
+        <source>Are sure you want to delete &apos;%1&apos;?</source>
+        <translation>Jste si jistý, že %1 chcete smazat?</translation>
+    </message>
+    <message>
+        <location line="-2121"/>
+        <source>Save As</source>
+        <translation>Uložit jako</translation>
+    </message>
+    <message>
+        <location line="+1472"/>
+        <location line="+862"/>
+        <source>%1
+Directory not found.
+Please verify the correct directory name was given.</source>
+        <translation>%1
+Adresář se nepodařilo nalézt.
+Ověřte, prosím, že byl zadán správný název adresáře.</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+        <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+        <source>List View</source>
+        <translation>Pohled se seznamem</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1635"/>
+        <location line="+38"/>
+        <source>&amp;Choose</source>
+        <translation>&amp;Vybrat</translation>
+    </message>
+    <message>
+        <location line="-707"/>
+        <source>&amp;Delete</source>
+        <translation>&amp;Smazat</translation>
+    </message>
+    <message>
+        <location line="-15"/>
+        <location line="+450"/>
+        <source>All Files (*)</source>
+        <translation>Všechny soubory (*)</translation>
+    </message>
+    <message>
+        <location line="+227"/>
+        <source>Directories</source>
+        <translation>Adresáře</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog_win.cpp" line="+174"/>
+        <source>All Files (*.*)</source>
+        <translation>Všechny soubory (*.*)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-663"/>
+        <source>&amp;Rename</source>
+        <translation>&amp;Přejmenovat</translation>
+    </message>
+    <message>
+        <location line="+2107"/>
+        <source>Could not delete directory.</source>
+        <translation>Adresář se nepodařilo smazat.</translation>
+    </message>
+    <message>
+        <location line="-2099"/>
+        <location line="+659"/>
+        <source>Directory:</source>
+        <translation>Adresář:</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+29"/>
+        <source>Unknown</source>
+        <translation>Neznámý</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+810"/>
+        <source>%1 already exists.
+Do you want to replace it?</source>
+        <translation>Soubor %1 již existuje.
+Chcete jej nahradit?</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+        <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+        <source>Forward</source>
+        <translation>Dopředu</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="+1040"/>
+        <source>Recent Places</source>
+        <translation>Naposledy navštívené</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.ui"/>
+        <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+        <source>Create New Folder</source>
+        <translation>Vytvořit novou složku</translation>
+    </message>
+    <message>
+        <location/>
+        <location filename="../src/gui/dialogs/qfiledialog_embedded.ui"/>
+        <source>Detail View</source>
+        <translation>Podrobný pohled</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-1020"/>
+        <source>%1
+File not found.
+Please verify the correct file name was given.</source>
+        <translation>%1
+Soubor se nepodařilo nalézt.
+Ověřte, prosím, že byl zadán správný název souboru.</translation>
+    </message>
+</context>
+<context>
+    <name>QFileSystemModel</name>
+    <message>
+        <source>Kind</source>
+        <translation type="obsolete">Druh</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+893"/>
+        <source>Name</source>
+        <translation>Název</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Size</source>
+        <translation>Velikost</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="obsolete">Typ</translation>
+    </message>
+    <message>
+        <location line="-149"/>
+        <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+478"/>
+        <source>%1 GB</source>
+        <translation>%1 GB</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+4"/>
+        <source>%1 KB</source>
+        <translation>%1 KB</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <location filename="../src/gui/itemviews/qdirmodel.cpp" line="-2"/>
+        <source>%1 MB</source>
+        <translation>%1 MB</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <location filename="../src/gui/itemviews/qdirmodel.cpp" line="-4"/>
+        <source>%1 TB</source>
+        <translation>%1 TB</translation>
+    </message>
+    <message>
+        <location line="+85"/>
+        <source>&lt;b&gt;The name &quot;%1&quot; can not be used.&lt;/b&gt;&lt;p&gt;Try using another name, with fewer characters or no punctuations marks.</source>
+        <translation>&lt;b&gt;Název &quot;%1&quot; nelze použít.&lt;/b&gt;&lt;p&gt;Zkuste použít jiný název, s menším počtem znaků nebo bez zvláštních znaků.</translation>
+    </message>
+    <message>
+        <location line="-78"/>
+        <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+7"/>
+        <source>%1 bytes</source>
+        <translation>%1 bytů</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfilesystemmodel_p.h" line="+258"/>
+        <source>My Computer</source>
+        <translation>Můj počítač</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Computer</source>
+        <translation>Počítač</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+77"/>
+        <source>Invalid filename</source>
+        <translation>Neplatný název souboru</translation>
+    </message>
+    <message>
+        <location line="+71"/>
+        <source>Kind</source>
+        <comment>Match OS X Finder</comment>
+        <translation>Druh</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Type</source>
+        <comment>All other platforms</comment>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Date Modified</source>
+        <translation>Datum změny</translation>
+    </message>
+</context>
+<context>
+    <name>QFontDatabase</name>
+    <message>
+        <location filename="../src/gui/text/qfontdatabase.cpp" line="+2137"/>
+        <source>Any</source>
+        <translation>Všechna</translation>
+    </message>
+    <message>
+        <location line="+60"/>
+        <source>Lao</source>
+        <translation>Laoské</translation>
+    </message>
+    <message>
+        <location line="-2092"/>
+        <location line="+12"/>
+        <location line="+1308"/>
+        <source>Bold</source>
+        <translation>Tučné</translation>
+    </message>
+    <message>
+        <location line="-1306"/>
+        <source>Demi</source>
+        <translation>Polotučné</translation>
+    </message>
+    <message>
+        <location line="+2075"/>
+        <source>Thai</source>
+        <translation>Thajské</translation>
+    </message>
+    <message>
+        <location line="-2083"/>
+        <location line="+18"/>
+        <location line="+1294"/>
+        <source>Black</source>
+        <translation>Černé</translation>
+    </message>
+    <message>
+        <location line="+720"/>
+        <source>Greek</source>
+        <translation>Řecké</translation>
+    </message>
+    <message>
+        <location line="+66"/>
+        <source>Khmer</source>
+        <translation>Khmerské</translation>
+    </message>
+    <message>
+        <location line="-69"/>
+        <source>Latin</source>
+        <translation>Latinské</translation>
+    </message>
+    <message>
+        <location line="-2015"/>
+        <location line="+1304"/>
+        <source>Light</source>
+        <translation>Lehké</translation>
+    </message>
+    <message>
+        <location line="+801"/>
+        <source>Ogham</source>
+        <translation>Ogamské</translation>
+    </message>
+    <message>
+        <location line="-54"/>
+        <source>Oriya</source>
+        <translation>Oriya</translation>
+    </message>
+    <message>
+        <location line="+57"/>
+        <source>Runic</source>
+        <translation>Runové</translation>
+    </message>
+    <message>
+        <location line="-54"/>
+        <source>Tamil</source>
+        <translation>Tamilské</translation>
+    </message>
+    <message>
+        <location line="-33"/>
+        <source>Cyrillic</source>
+        <translation>Cyrilské</translation>
+    </message>
+    <message>
+        <location line="+39"/>
+        <source>Kannada</source>
+        <translation>Kannada</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Malayalam</source>
+        <translation>Malayalam</translation>
+    </message>
+    <message>
+        <location line="+24"/>
+        <source>Simplified Chinese</source>
+        <translation>Zjednodušená čínština</translation>
+    </message>
+    <message>
+        <location line="-2104"/>
+        <location line="+1319"/>
+        <source>Demi Bold</source>
+        <translation>Polotučné</translation>
+    </message>
+    <message>
+        <location line="+728"/>
+        <source>Arabic</source>
+        <translation>Arabské</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>Hebrew</source>
+        <translation>Hebrejské</translation>
+    </message>
+    <message>
+        <location line="+51"/>
+        <source>Myanmar</source>
+        <translation>Myanmar</translation>
+    </message>
+    <message>
+        <location line="-1932"/>
+        <location line="+1161"/>
+        <source>Italic</source>
+        <translation>Itala</translation>
+    </message>
+    <message>
+        <location line="+789"/>
+        <source>Korean</source>
+        <translation>Korejské</translation>
+    </message>
+    <message>
+        <location line="-2119"/>
+        <location line="+1335"/>
+        <source>Normal</source>
+        <translation>Obvyklé</translation>
+    </message>
+    <message>
+        <location line="-1163"/>
+        <location line="+1160"/>
+        <source>Oblique</source>
+        <translation>Nakloněné</translation>
+    </message>
+    <message>
+        <location line="+748"/>
+        <source>Telugu</source>
+        <translation>Telugu</translation>
+    </message>
+    <message>
+        <location line="-21"/>
+        <source>Thaana</source>
+        <translation>Thaana</translation>
+    </message>
+    <message>
+        <location line="+66"/>
+        <source>Symbol</source>
+        <translation>Symbol</translation>
+    </message>
+    <message>
+        <location line="-69"/>
+        <source>Syriac</source>
+        <translation>Syrské</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Devanagari</source>
+        <translation>Devanagari</translation>
+    </message>
+    <message>
+        <location line="+54"/>
+        <source>Japanese</source>
+        <translation>Japonské</translation>
+    </message>
+    <message>
+        <location line="-51"/>
+        <source>Bengali</source>
+        <translation>Bengálské</translation>
+    </message>
+    <message>
+        <location line="-18"/>
+        <source>Armenian</source>
+        <translation>Arménské</translation>
+    </message>
+    <message>
+        <location line="+42"/>
+        <source>Sinhala</source>
+        <translation>Sinhálské</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Tibetan</source>
+        <translation>Tibetské</translation>
+    </message>
+    <message>
+        <location line="+24"/>
+        <source>Vietnamese</source>
+        <translation>Větnamské</translation>
+    </message>
+    <message>
+        <location line="-51"/>
+        <source>Gujarati</source>
+        <translation>Gujarati</translation>
+    </message>
+    <message>
+        <location line="+42"/>
+        <source>Traditional Chinese</source>
+        <translation>Tradiční čínština</translation>
+    </message>
+    <message>
+        <location line="-9"/>
+        <source>Georgian</source>
+        <translation>Gruzínské</translation>
+    </message>
+    <message>
+        <location line="-36"/>
+        <source>Gurmukhi</source>
+        <translation>Gurmukhi</translation>
+    </message>
+</context>
+<context>
+    <name>QFontDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qfontdialog.cpp" line="+776"/>
+        <source>&amp;Font</source>
+        <translation>&amp;Písmo</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>&amp;Size</source>
+        <translation>&amp;Velikost</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Sample</source>
+        <translation>Vzorek</translation>
+    </message>
+    <message>
+        <location line="-9"/>
+        <source>Font st&amp;yle</source>
+        <translation>Druh pís&amp;ma</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Wr&amp;iting System</source>
+        <translation>Způsob &amp;psaní</translation>
+    </message>
+    <message>
+        <location line="-609"/>
+        <location line="+257"/>
+        <source>Select Font</source>
+        <translation>Vybrat písmo</translation>
+    </message>
+    <message>
+        <location line="+350"/>
+        <source>&amp;Underline</source>
+        <translation>&amp;Podtrhnout</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>Effects</source>
+        <translation>Efekty</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Stri&amp;keout</source>
+        <translation>Pře&amp;škrtnout</translation>
+    </message>
+</context>
+<context>
+    <name>QFtp</name>
+    <message>
+        <location filename="../src/network/access/qftp.cpp" line="+2333"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+2021"/>
+        <source>Listing directory failed:
+%1</source>
+        <translation>Obsah adresářů nelze ukázat:
+%1</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+15"/>
+        <source>Creating directory failed:
+%1</source>
+        <translation>Vytvoření adresářů se nezdařilo:
+%1</translation>
+    </message>
+    <message>
+        <location line="-1525"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="-1353"/>
+        <source>Not connected</source>
+        <translation>Žádné spojení</translation>
+    </message>
+    <message>
+        <location line="+399"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+332"/>
+        <source>Connection refused for data connection</source>
+        <translation>Odmítnuto spojení spojení pro data</translation>
+    </message>
+    <message>
+        <location line="+1102"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+1003"/>
+        <source>Login failed:
+%1</source>
+        <translation>Přihlášení se nezdařilo:
+%1</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+9"/>
+        <source>Downloading file failed:
+%1</source>
+        <translation>Stažení souboru se nezdařilo:
+%1</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+285"/>
+        <source>Connected to host</source>
+        <translation>Spojení s počítačem navázáno</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qftp.cpp" line="-1437"/>
+        <source>Connection timed out to host %1</source>
+        <translation>Časový limit pro spojení s počítačem &apos;%1&apos; byl překročen</translation>
+    </message>
+    <message>
+        <location line="+104"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="-1458"/>
+        <location line="+1451"/>
+        <source>Connected to host %1</source>
+        <translation>Spojeno s počítačem %1</translation>
+    </message>
+    <message>
+        <location line="+1317"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="-290"/>
+        <source>Connecting to host failed:
+%1</source>
+        <translation>Spojení s počítačem se nezdařilo:
+%1</translation>
+    </message>
+    <message>
+        <location line="-1429"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="-1267"/>
+        <source>Host %1 not found</source>
+        <translation>Počítač %1 se nepodařilo nalézt</translation>
+    </message>
+    <message>
+        <location line="+1449"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+1282"/>
+        <source>Uploading file failed:
+%1</source>
+        <translation>Nahrání souboru se nezdařilo:
+%1</translation>
+    </message>
+    <message>
+        <location line="-8"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="-6"/>
+        <source>Changing directory failed:
+%1</source>
+        <translation>Změna adresáře se nezdařila:
+%1</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+286"/>
+        <source>Host found</source>
+        <translation>Počítač byl nalezen</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qftp.cpp" line="+20"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="-271"/>
+        <source>Removing directory failed:
+%1</source>
+        <translation>Odstranění adresáře se nezdařilo:
+%1</translation>
+    </message>
+    <message>
+        <location line="-1457"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="-1287"/>
+        <source>Connection refused to host %1</source>
+        <translation>Spojení s počítačem %1 odmítnuto</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+1555"/>
+        <source>Connection to %1 closed</source>
+        <translation>Spojení s %1 ukončeno</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qftp.cpp" line="+1449"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="-274"/>
+        <source>Removing file failed:
+%1</source>
+        <translation>Odstranění souboru se nezdařilo:
+%1</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+270"/>
+        <source>Host %1 found</source>
+        <translation>Počítač %1 byl nalezen</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qftp.cpp" line="-944"/>
+        <location line="+29"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="-1093"/>
+        <location line="+728"/>
+        <source>Unknown error</source>
+        <translation>Neznámá chyba</translation>
+    </message>
+    <message>
+        <location line="+951"/>
+        <location filename="../src/qt3support/network/q3ftp.cpp" line="+126"/>
+        <location line="+250"/>
+        <source>Connection closed</source>
+        <translation>Spojení ukončeno</translation>
+    </message>
+</context>
+<context>
+    <name>QHostInfo</name>
+    <message>
+        <location filename="../src/network/kernel/qhostinfo_p.h" line="+183"/>
+        <source>Unknown error</source>
+        <translation>Neznámá chyba</translation>
+    </message>
+</context>
+<context>
+    <name>QHostInfoAgent</name>
+    <message>
+        <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+257"/>
+        <location line="+32"/>
+        <location filename="../src/network/kernel/qhostinfo_win.cpp" line="+220"/>
+        <location line="+27"/>
+        <source>Host not found</source>
+        <translation>Nepodařilo se najít počítač</translation>
+    </message>
+    <message>
+        <location line="-45"/>
+        <location line="+39"/>
+        <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-34"/>
+        <location line="+29"/>
+        <source>Unknown address type</source>
+        <translation>Neznámý typ adresy</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-19"/>
+        <location line="+27"/>
+        <source>Unknown error</source>
+        <translation>Neznámá chyba</translation>
+    </message>
+    <message>
+        <location filename="../src/network/kernel/qhostinfo_win.cpp" line="-67"/>
+        <source>No host name given</source>
+        <translation>Nebyl zadán název pro hostitelský počítač</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Invalid hostname</source>
+        <translation>Neplatný název pro hostitelský počítač</translation>
+    </message>
+</context>
+<context>
+    <name>QHttp</name>
+    <message>
+        <location filename="../src/network/access/qhttp.cpp" line="+2636"/>
+        <source>Connection refused (or timed out)</source>
+        <translation>Spojení bylo odmítnuto (nebo byl překročen časový limit)</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+584"/>
+        <source>Data corrupted</source>
+        <translation>Data jsou poškozena</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+2308"/>
+        <source>Connected to host</source>
+        <translation>Spojení s počítačem navázáno</translation>
+    </message>
+    <message>
+        <location line="-14"/>
+        <source>Connected to host %1</source>
+        <translation>Spojeno s počítačem %1</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttp.cpp" line="+3"/>
+        <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-19"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="-456"/>
+        <source>Host %1 not found</source>
+        <translation>Počítač %1 se nepodařilo nalézt</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+16"/>
+        <source>Host requires authentication</source>
+        <translation>Hostitelský počítač požaduje autentizaci</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttp.cpp" line="+325"/>
+        <source>Error writing response to device</source>
+        <translation>Při psaní odpovědi výstupnímu zařízení se vyskytla chyba</translation>
+    </message>
+    <message>
+        <location line="-2594"/>
+        <source>HTTPS connection requested but SSL support not compiled in</source>
+        <translation>Požadované HTTPS spojení nelze vytvořit, protože neexistuje žádná SSL podpora</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+467"/>
+        <source>Host found</source>
+        <translation>Počítač byl nalezen</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-12"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="-470"/>
+        <source>Connection refused</source>
+        <translation>Spojení bylo odmítnuto</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttp.cpp" line="+2421"/>
+        <source>Proxy authentication required</source>
+        <translation>Požadována proxy autentizace</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+18"/>
+        <source>Unknown protocol specified</source>
+        <translation>Byl zadán neznámý protokol</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttp.cpp" line="-132"/>
+        <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-12"/>
+        <location line="+19"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+6"/>
+        <source>HTTP request failed</source>
+        <translation>HTTP dotaz se nezdařil</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-16"/>
+        <source>Proxy requires authentication</source>
+        <translation>Proxy server požaduje autentizaci</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttp.cpp" line="+136"/>
+        <source>Authentication required</source>
+        <translation>Požadována autentizace</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+12"/>
+        <source>SSL handshake failed</source>
+        <translation>Během startu SSL protokolu se vyskytla chyba</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+456"/>
+        <source>Connection to %1 closed</source>
+        <translation>Spojení s %1 ukončeno</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttp.cpp" line="+83"/>
+        <location line="+48"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="-347"/>
+        <location line="+47"/>
+        <source>Invalid HTTP chunked body</source>
+        <translation>Obsah (chunked body - rozkouskované tělo) HTTP je neplatný</translation>
+    </message>
+    <message>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+294"/>
+        <source>Host %1 found</source>
+        <translation>Počítač %1 byl nalezen</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttp.cpp" line="-349"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="-498"/>
+        <source>Wrong content length</source>
+        <translation>Neplatný údaj o délce obsahu</translation>
+    </message>
+    <message>
+        <location line="-995"/>
+        <location line="+820"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="-634"/>
+        <location line="+567"/>
+        <source>Unknown error</source>
+        <translation>Neznámá chyba</translation>
+    </message>
+    <message>
+        <location line="+351"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+184"/>
+        <source>Invalid HTTP response header</source>
+        <translation>Hlavička HTTP odpovědi není platná</translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <source>Unknown authentication method</source>
+        <translation>Neznámý způsob autentizace</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="-18"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+401"/>
+        <source>Connection closed</source>
+        <translation>Spojení ukončeno</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qhttp.cpp" line="-368"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="-574"/>
+        <source>No server set to connect to</source>
+        <translation>Pro spojení nebyl nastaven žádný počítač - server</translation>
+    </message>
+    <message>
+        <location line="+168"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="+60"/>
+        <source>Server closed connection unexpectedly</source>
+        <translation>Server neočekávaně uzavřel spojení</translation>
+    </message>
+    <message>
+        <location line="-747"/>
+        <location filename="../src/qt3support/network/q3http.cpp" line="-441"/>
+        <source>Request aborted</source>
+        <translation>Požadavek byl zrušen</translation>
+    </message>
+</context>
+<context>
+    <name>QHttpSocketEngine</name>
+    <message>
+        <location filename="../src/network/socket/qhttpsocketengine.cpp" line="+29"/>
+        <source>Proxy connection refused</source>
+        <translation>Proxy server odmítl navázání spojení</translation>
+    </message>
+    <message>
+        <location line="-35"/>
+        <source>Proxy denied connection</source>
+        <translation>Proxy server odmítl spojení</translation>
+    </message>
+    <message>
+        <location line="+33"/>
+        <source>Proxy server not found</source>
+        <translation>Nepodařilo se najít žádný proxy server</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Proxy server connection timed out</source>
+        <translation>Při spojení s proxy serverem byl překročen časový limit</translation>
+    </message>
+    <message>
+        <location line="-120"/>
+        <source>Did not receive HTTP response from proxy</source>
+        <translation>Žádná HTTP odpověď od proxy serveru</translation>
+    </message>
+    <message>
+        <location line="+122"/>
+        <source>Proxy connection closed prematurely</source>
+        <translation>Proxy server předčasně ukončil spojení</translation>
+    </message>
+    <message>
+        <location line="-29"/>
+        <source>Error communicating with HTTP proxy</source>
+        <translation>Chyba při spojení s proxy serverem</translation>
+    </message>
+    <message>
+        <location line="-37"/>
+        <source>Authentication required</source>
+        <translation>Požadována autentizace</translation>
+    </message>
+    <message>
+        <location line="-31"/>
+        <source>Error parsing authentication request from proxy</source>
+        <translation>Chyba při vyhodnocení autentizačního požadavku proxy serveru</translation>
+    </message>
+</context>
+<context>
+    <name>QIBaseDriver</name>
+    <message>
+        <location filename="../src/sql/drivers/ibase/qsql_ibase.cpp" line="+1558"/>
+        <source>Unable to commit transaction</source>
+        <translation>Transakci se nepodařilo provést (operace &apos;commit&apos;, odeslání, se nezdařila)</translation>
+    </message>
+    <message>
+        <location line="-13"/>
+        <source>Could not start transaction</source>
+        <translation>Nepodařilo se spustit žádnou transakci</translation>
+    </message>
+    <message>
+        <location line="-54"/>
+        <source>Error opening database</source>
+        <translation>Nepodařilo se otevřít spojení s databází</translation>
+    </message>
+    <message>
+        <location line="+80"/>
+        <source>Unable to rollback transaction</source>
+        <translation>Transakci se nepodařilo zvrátit (operace &apos;rollback&apos;, zvrácení, se nezdařila)</translation>
+    </message>
+</context>
+<context>
+    <name>QIBaseResult</name>
+    <message>
+        <location line="-707"/>
+        <source>Unable to commit transaction</source>
+        <translation>Transakci se nepodařilo provést (operace &apos;commit&apos;, odeslání, se nezdařila)</translation>
+    </message>
+    <message>
+        <location line="-422"/>
+        <source>Unable to open BLOB</source>
+        <translation>Nepodařilo se otevřít BLOB</translation>
+    </message>
+    <message>
+        <location line="+499"/>
+        <source>Could not describe statement</source>
+        <translation>Nepodařilo se získat žádný popis příkazu</translation>
+    </message>
+    <message>
+        <location line="-25"/>
+        <location line="+11"/>
+        <source>Could not describe input statement</source>
+        <translation>Nepodařilo se získat žádný popis vstupního příkazu</translation>
+    </message>
+    <message>
+        <location line="-21"/>
+        <source>Could not allocate statement</source>
+        <translation>Přidělení příkazu se nezdařilo</translation>
+    </message>
+    <message>
+        <location line="-478"/>
+        <source>Unable to write BLOB</source>
+        <translation>Nepodařilo se zapsat BLOB</translation>
+    </message>
+    <message>
+        <location line="+417"/>
+        <source>Could not start transaction</source>
+        <translation>Nepodařilo se spustit žádnou transakci</translation>
+    </message>
+    <message>
+        <location line="+211"/>
+        <source>Unable to close statement</source>
+        <translation>Příkaz se nepodařilo zavřít</translation>
+    </message>
+    <message>
+        <location line="-231"/>
+        <source>Could not get query info</source>
+        <translation>Požadované informace k vyhledávání nejsou k dispozici</translation>
+    </message>
+    <message>
+        <location line="-242"/>
+        <location line="+187"/>
+        <source>Could not find array</source>
+        <translation>Nepodařilo se najít pole</translation>
+    </message>
+    <message>
+        <location line="-155"/>
+        <source>Could not get array data</source>
+        <translation>Nepodařilo se přečíst data pole</translation>
+    </message>
+    <message>
+        <location line="+449"/>
+        <source>Unable to execute query</source>
+        <translation>Dotaz se nepodařilo provést</translation>
+    </message>
+    <message>
+        <location line="-153"/>
+        <source>Could not prepare statement</source>
+        <translation>Příkaz se nepodařilo připravit</translation>
+    </message>
+    <message>
+        <location line="+199"/>
+        <source>Could not fetch next item</source>
+        <translation>Další prvek se nepodařilo vyzvednout</translation>
+    </message>
+    <message>
+        <location line="+197"/>
+        <source>Could not get statement info</source>
+        <translation>K dispozici není žádná informace k příkazu</translation>
+    </message>
+    <message>
+        <location line="-885"/>
+        <source>Unable to create BLOB</source>
+        <translation>Nepodařilo se vytvořit žádný BLOB</translation>
+    </message>
+    <message>
+        <location line="+36"/>
+        <source>Unable to read BLOB</source>
+        <translation>BLOB se nepodařilo přečíst</translation>
+    </message>
+</context>
+<context>
+    <name>QIODevice</name>
+    <message>
+        <location filename="../src/corelib/global/qglobal.cpp" line="+2064"/>
+        <source>No such file or directory</source>
+        <translation>Nepodařilo se najít žádný takový soubor nebo adresář</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Permission denied</source>
+        <translation>Přístup odepřen</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>No space left on device</source>
+        <translation>Na zařízení není žádný volný úložný prostor</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/io/qiodevice.cpp" line="+1561"/>
+        <source>Unknown error</source>
+        <translation>Neznámá chyba</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/global/qglobal.cpp" line="-6"/>
+        <source>Too many open files</source>
+        <translation>Příliš mnoho otevřených souborů</translation>
+    </message>
+</context>
+<context>
+    <name>QInputContext</name>
+    <message>
+        <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+256"/>
+        <source>XIM</source>
+        <translation>XIM</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>FEP</source>
+        <translation>FEP</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <source>Windows input method</source>
+        <translation>Windows-vstupní metoda</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>S60 FEP input method</source>
+        <translation>S60 FEP-vstupní metoda</translation>
+    </message>
+    <message>
+        <location line="-12"/>
+        <source>XIM input method</source>
+        <translation>XIM-vstupní metoda</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Mac OS X input method</source>
+        <translation>Mac OS X-vstupní metoda</translation>
+    </message>
+</context>
+<context>
+    <name>QInputDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qinputdialog.cpp" line="+223"/>
+        <source>Enter a value:</source>
+        <translation>Zadejte hodnotu:</translation>
+    </message>
+</context>
+<context>
+    <name>QLibrary</name>
+    <message>
+        <location filename="../src/corelib/plugin/qlibrary.cpp" line="+411"/>
+        <source>Could not unmap &apos;%1&apos;: %2</source>
+        <translation>Operace unmap, zrušit zobrazení, se nezdařila u &apos;%1&apos;: %2</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+253"/>
+        <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+109"/>
+        <source>Cannot unload library %1: %2</source>
+        <translation>Knihovnu %1 nelze vyjmout: %2</translation>
+    </message>
+    <message>
+        <location line="-17"/>
+        <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="-22"/>
+        <source>Cannot load library %1: %2</source>
+        <translation>Knihovnu %1 nelze nahrát: %2</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/plugin/qlibrary.cpp" line="+341"/>
+        <source>The plugin &apos;%1&apos; uses incompatible Qt library. (%2.%3.%4) [%5]</source>
+        <translation>Přídavný modul &apos;%1&apos; používá neslučitelnou Qt knihovnu. (%2.%3.%4) [%5]</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/plugin/qlibrary_unix.cpp" line="+51"/>
+        <location filename="../src/corelib/plugin/qlibrary_win.cpp" line="+37"/>
+        <source>Cannot resolve symbol &quot;%1&quot; in %2: %3</source>
+        <translation>Symbol &quot;%1&quot; nelze v %2 vyřešit: %3</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/plugin/qlibrary.cpp" line="-347"/>
+        <source>Plugin verification data mismatch in &apos;%1&apos;</source>
+        <translation>Ověřovací data přídavného nesouhlasí v &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+375"/>
+        <source>The plugin &apos;%1&apos; uses incompatible Qt library. (Cannot mix debug and release libraries.)</source>
+        <translation>Přídavný modul &apos;%1&apos; používá neslučitelnou Qt knihovnu. (Knihovny vytvořené v režimu ladění a vydání nemohou být používány společně.)</translation>
+    </message>
+    <message>
+        <location line="-43"/>
+        <source>The file &apos;%1&apos; is not a valid Qt plugin.</source>
+        <translation>Soubor &apos;%1&apos; není platným přídavným modulem Qt.</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <location filename="../src/corelib/plugin/qpluginloader.cpp" line="+343"/>
+        <source>The shared library was not found.</source>
+        <translation>Nepodařilo se nalézt sdílenou knihovnu.</translation>
+    </message>
+    <message>
+        <location line="+402"/>
+        <source>Unknown error</source>
+        <translation>Neznámá chyba</translation>
+    </message>
+    <message>
+        <location line="-365"/>
+        <source>The plugin &apos;%1&apos; uses incompatible Qt library. Expected build key &quot;%2&quot;, got &quot;%3&quot;</source>
+        <translation>Přídavný modul &apos;%1&apos; používá neslučitelnou Qt knihovnu. Potřebný byl zvláštní klíč pro sestavení &quot;%2&quot;, obdržen &quot;%3&quot;</translation>
+    </message>
+    <message>
+        <location line="-389"/>
+        <source>Could not mmap &apos;%1&apos;: %2</source>
+        <translation>Operace mmap se nezdařila u &apos;%1&apos;: %2</translation>
+    </message>
+</context>
+<context>
+    <name>QLineEdit</name>
+    <message>
+        <location filename="../src/gui/widgets/qlineedit.cpp" line="+1991"/>
+        <source>Cu&amp;t</source>
+        <translation>&amp;Vyjmout</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Kopírovat</translation>
+    </message>
+    <message>
+        <location line="-12"/>
+        <source>&amp;Redo</source>
+        <translation>&amp;Znovu</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <source>&amp;Undo</source>
+        <translation>&amp;Zpět</translation>
+    </message>
+    <message>
+        <location line="+21"/>
+        <source>&amp;Paste</source>
+        <translation>&amp;Vložit</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Delete</source>
+        <translation>Smazat</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Select All</source>
+        <translation>Vybrat vše</translation>
+    </message>
+</context>
+<context>
+    <name>QLocalServer</name>
+    <message>
+        <location filename="../src/network/socket/qlocalserver.cpp" line="+224"/>
+        <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+256"/>
+        <source>%1: Name error</source>
+        <translation>%1: Chybný název</translation>
+    </message>
+    <message>
+        <location filename="../src/network/socket/qlocalserver_unix.cpp" line="+9"/>
+        <source>%1: Unknown error %2</source>
+        <translation>%1: Neznámá chyba %2</translation>
+    </message>
+    <message>
+        <location line="-17"/>
+        <source>%1: Permission denied</source>
+        <translation>%1: Přístup odepřen</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>%1: Address in use</source>
+        <translation>%1: Adresa se již používá</translation>
+    </message>
+</context>
+<context>
+    <name>QLocalSocket</name>
+    <message>
+        <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+153"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+160"/>
+        <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+75"/>
+        <source>%1: Connection error</source>
+        <translation>%1: Chyba spojení</translation>
+    </message>
+    <message>
+        <location line="-21"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="-21"/>
+        <source>%1: Connection refused</source>
+        <translation>%1: Spojení bylo odmítnuto</translation>
+    </message>
+    <message>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+28"/>
+        <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+10"/>
+        <source>%1: Unknown error %2</source>
+        <translation>%1: Neznámá chyba %2</translation>
+    </message>
+    <message>
+        <location filename="../src/network/socket/qlocalsocket_tcp.cpp" line="+9"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="-19"/>
+        <source>%1: Socket access error</source>
+        <translation>%1: Chyba při přístupu k zásuvce (socketu)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+        <source>%1: Socket resource error</source>
+        <translation>%1: Chyba zásuvky (socketu) - potíže se zdrojem</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+12"/>
+        <source>%1: The socket operation is not supported</source>
+        <translation>%1: Tato operace se zásuvkou (socketem) není podporována</translation>
+    </message>
+    <message>
+        <location line="-18"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="-18"/>
+        <location filename="../src/network/socket/qlocalsocket_win.cpp" line="-5"/>
+        <location line="+45"/>
+        <source>%1: Invalid name</source>
+        <translation>%1: Neplatný název</translation>
+    </message>
+    <message>
+        <location line="+22"/>
+        <source>%1: Unknown error</source>
+        <translation>%1: Neznámá chyba</translation>
+    </message>
+    <message>
+        <location line="-13"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+9"/>
+        <source>%1: Socket operation timed out</source>
+        <translation>%1: Překročení času při operaci se zásuvkou (socketem)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
+        <source>%1: Datagram too large</source>
+        <translation>%1: Datagram je příliš veliký</translation>
+    </message>
+    <message>
+        <location line="-15"/>
+        <location filename="../src/network/socket/qlocalsocket_unix.cpp" line="-15"/>
+        <source>%1: Remote closed</source>
+        <translation>%1: Spojení bylo protější stranou uzavřeno</translation>
+    </message>
+</context>
+<context>
+    <name>QMYSQLDriver</name>
+    <message>
+        <location filename="../src/sql/drivers/mysql/qsql_mysql.cpp" line="+1440"/>
+        <source>Unable to commit transaction</source>
+        <translation>Transakci se nepodařilo provést (operace &apos;commit&apos;, odeslání, se nezdařila)</translation>
+    </message>
+    <message>
+        <location line="-179"/>
+        <source>Unable to open database &apos;</source>
+        <translation>Nepodařilo se otevřít spojení s databází &apos;</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Unable to connect</source>
+        <translation>Nepodařilo se navázat spojení</translation>
+    </message>
+    <message>
+        <location line="+185"/>
+        <source>Unable to rollback transaction</source>
+        <translation>Transakci se nepodařilo zvrátit (operace &apos;rollback&apos;, zvrácení, se nezdařila)</translation>
+    </message>
+    <message>
+        <location line="-34"/>
+        <source>Unable to begin transaction</source>
+        <translation>Transakci se nepodařilo spustit</translation>
+    </message>
+</context>
+<context>
+    <name>QMYSQLResult</name>
+    <message>
+        <location line="-413"/>
+        <source>Unable to execute statement</source>
+        <translation>Příkaz se nepodařilo provést</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Unable to store statement results</source>
+        <translation>Výsledky příkazu se nepodařilo uložit</translation>
+    </message>
+    <message>
+        <location line="-253"/>
+        <source>Unable to execute next query</source>
+        <translation>Další dotaz nelze provést</translation>
+    </message>
+    <message>
+        <location line="+244"/>
+        <location line="+21"/>
+        <source>Unable to bind outvalues</source>
+        <translation>Výstupní hodnoty se nepodařilo spojit</translation>
+    </message>
+    <message>
+        <location line="-255"/>
+        <source>Unable to store next result</source>
+        <translation>Další výsledek nelze uložit</translation>
+    </message>
+    <message>
+        <location line="-302"/>
+        <source>Unable to fetch data</source>
+        <translation>Nepodařilo se natáhnout žádná data</translation>
+    </message>
+    <message>
+        <location line="+380"/>
+        <location line="+8"/>
+        <source>Unable to prepare statement</source>
+        <translation>Příkaz se nepodařilo připravit</translation>
+    </message>
+    <message>
+        <location line="-199"/>
+        <source>Unable to store result</source>
+        <translation>Výsledek se nepodařilo uložit</translation>
+    </message>
+    <message>
+        <location line="+322"/>
+        <source>Unable to bind value</source>
+        <translation>Hodnotu se nepodařilo spojit</translation>
+    </message>
+    <message>
+        <location line="-328"/>
+        <source>Unable to execute query</source>
+        <translation>Dotaz se nepodařilo provést</translation>
+    </message>
+    <message>
+        <location line="+242"/>
+        <source>Unable to reset statement</source>
+        <translation>Příkaz se nepodařilo znovu nastavit</translation>
+    </message>
+</context>
+<context>
+    <name>QMdiArea</name>
+    <message>
+        <location filename="../src/gui/widgets/qmdiarea.cpp" line="+290"/>
+        <source>(Untitled)</source>
+        <translation>(Bez názvu)</translation>
+    </message>
+</context>
+<context>
+    <name>QMdiSubWindow</name>
+    <message>
+        <location filename="../src/gui/widgets/qmdisubwindow.cpp" line="+355"/>
+        <source>Help</source>
+        <translation>Nápověda</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Menu</source>
+        <translation>Menu</translation>
+    </message>
+    <message>
+        <location line="+699"/>
+        <source>&amp;Move</source>
+        <translation>Po&amp;sunout</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Size</source>
+        <translation>Změnit &amp;velikost</translation>
+    </message>
+    <message>
+        <location line="-706"/>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+    <message>
+        <location line="-18"/>
+        <source>Minimize</source>
+        <translation>Zmenšit</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Shade</source>
+        <translation>Navinout</translation>
+    </message>
+    <message>
+        <location line="+720"/>
+        <source>Stay on &amp;Top</source>
+        <translation>Zůstat v &amp;popředí</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>&amp;Close</source>
+        <translation>&amp;Zavřít</translation>
+    </message>
+    <message>
+        <location line="-787"/>
+        <source>- [%1]</source>
+        <translation>- [%1]</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>%1 - [%2]</source>
+        <translation>%1 - [%2]</translation>
+    </message>
+    <message>
+        <location line="+774"/>
+        <source>&amp;Restore</source>
+        <translation>&amp;Obnovit</translation>
+    </message>
+    <message>
+        <location line="-705"/>
+        <source>Restore</source>
+        <translation>Obnovit</translation>
+    </message>
+    <message>
+        <location line="-12"/>
+        <source>Maximize</source>
+        <translation>Zvětšit</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Unshade</source>
+        <translation>Odvinout</translation>
+    </message>
+    <message>
+        <location line="+719"/>
+        <source>Mi&amp;nimize</source>
+        <translation>Zmen&amp;šit</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ma&amp;ximize</source>
+        <translation>Zvě&amp;tšit</translation>
+    </message>
+    <message>
+        <location line="-714"/>
+        <source>Restore Down</source>
+        <translation>Obnovit</translation>
+    </message>
+</context>
+<context>
+    <name>QMenu</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/qaccessiblemenu.cpp" line="+158"/>
+        <location line="+225"/>
+        <source>Open</source>
+        <translation>Otevřít</translation>
+    </message>
+    <message>
+        <location line="-226"/>
+        <location line="+225"/>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+    <message>
+        <location line="-222"/>
+        <location line="+225"/>
+        <location line="+51"/>
+        <source>Execute</source>
+        <translation>Provést</translation>
+    </message>
+</context>
+<context>
+    <name>QMenuBar</name>
+    <message>
+        <location filename="../src/gui/widgets/qmenu_symbian.cpp" line="+410"/>
+        <source>Actions</source>
+        <translation>Činnosti</translation>
+    </message>
+</context>
+<context>
+    <name>QMessageBox</name>
+    <message>
+        <location filename="../src/gui/dialogs/qmessagebox.cpp" line="-1964"/>
+        <location line="+847"/>
+        <location filename="../src/gui/dialogs/qmessagebox.h" line="-52"/>
+        <location line="+8"/>
+        <source>OK</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Help</source>
+        <translation>Nápověda</translation>
+    </message>
+    <message>
+        <source>&lt;h3&gt;About Qt&lt;/h3&gt;&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is available under three different licensing options designed to accommodate the needs of our various users.&lt;/p&gt;Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; for more information.&lt;/p&gt;</source>
+        <translation type="obsolete">&lt;h3&gt;O Qt&lt;/h3&gt;&lt;p&gt;Tento program používá Qt ve verzi %1.&lt;/p&gt;&lt;p&gt;Qt je sadou softwarových nástrojů C++ určených pro vývoj aplikací napříč platformami.&lt;/p&gt;&lt;p&gt;Qt poskytuje jednoduchou přenositelnost přes MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, a všechny hlavní obchodní varianty systému Unix. Qt je rovněž dostupný pro vložená zařízení jako Qt pro Embedded Linux a Qt pro Windows CE.&lt;/p&gt;&lt;p&gt;Qt je dostupné pod třemi rozdílnými licenčními volbami navrženými pro přizpůsobení se potřebám našich různých uživatelů.&lt;/p&gt;Qt licencované pod naší obchodní licenční smlouvou je vhodné pro vývoj soukromého/obchodního software, kde si nepřejete sdílet jakýkoli zdrojový kód se třetími stranami, nebo jinak řečeno, když nemůžete vyhovět podmínkám GNU LGPL ve verzi 2.1 nebo GNU GPL ve verzi 3.0.&lt;/p&gt;&lt;p&gt;Qt licencované pod GNU LGPL ve verzi 2.1 je vhodné pro vývoj Qt aplikací (soukromých nebo s otevřeným zdrojovým kódem), za předpokladu že můžete souhlasit s požadavky a podmínkami GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licencované pod GNU General Public License ve verzi 3.0 je vhodné pro vývoj aplikací Qt, u nichž si přejete použít takovou aplikaci ve spojení se software, který podléhá požadavkům GNU GPL ve verzi 3.0, nebo kde jste jinak ochoten souhlasit s podmínkami GNU GPL ve verzi 3.0.&lt;/p&gt;&lt;p&gt;Podívejte se, prosím, na &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; kvůli přehledu licencování Qt.&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation a/nebo její dceřinná(é) společnost(i).&lt;/p&gt;&lt;p&gt;Qt je výrobkem společnosti Nokia. Podívejte se na &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt;kvůli více informacím.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location line="-1099"/>
+        <source>Show Details...</source>
+        <translation>Ukázat podrobnosti...</translation>
+    </message>
+    <message>
+        <location line="+1575"/>
+        <source>&lt;h3&gt;About Qt&lt;/h3&gt;&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
+        <translation>&lt;h3&gt;O Qt&lt;/h3&gt;&lt;p&gt;Tento program používá Qt-verze %1.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is available under three different licensing options designed to accommodate the needs of our various users.&lt;/p&gt;&lt;p&gt;Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; for more information.&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Qt je sadou softwarových nástrojů C++ určených pro vývoj aplikací napříč platformami.&lt;/p&gt;&lt;p&gt;Qt poskytuje jednoduchou přenositelnost přes MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, a všechny hlavní obchodní varianty systému Unix. Qt je rovněž dostupný pro vložená zařízení jako Qt pro Embedded Linux a Qt pro Windows CE.&lt;/p&gt;&lt;p&gt;Qt je dostupné pod třemi rozdílnými licenčními volbami navrženými pro přizpůsobení se potřebám našich různých uživatelů.&lt;/p&gt;Qt licencované pod naší obchodní licenční smlouvou je vhodné pro vývoj soukromého/obchodního software, kde si nepřejete sdílet jakýkoli zdrojový kód se třetími stranami, nebo jinak řečeno, když nemůžete vyhovět podmínkám GNU LGPL ve verzi 2.1 nebo GNU GPL ve verzi 3.0.&lt;/p&gt;&lt;p&gt;Qt licencované pod GNU LGPL ve verzi 2.1 je vhodné pro vývoj Qt aplikací (soukromých nebo s otevřeným zdrojovým kódem), za předpokladu že můžete souhlasit s požadavky a podmínkami GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licencované pod GNU General Public License ve verzi 3.0 je vhodné pro vývoj aplikací Qt, u nichž si přejete použít takovou aplikaci ve spojení se software, který podléhá požadavkům GNU GPL ve verzi 3.0, nebo kde jste jinak ochoten souhlasit s podmínkami GNU GPL ve verzi 3.0.&lt;/p&gt;&lt;p&gt;Podívejte se, prosím, na &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; kvůli přehledu licencování Qt.&lt;/p&gt;&lt;p&gt;Copyright (C) 2009 Nokia Corporation a/nebo její dceřinná(é) společnost(i).&lt;/p&gt;&lt;p&gt;Qt je výrobkem společnosti Nokia. Podívejte se na &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt;kvůli více informacím.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location line="+31"/>
+        <source>About Qt</source>
+        <translation>O Qt</translation>
+    </message>
+    <message>
+        <source>&lt;p&gt;This program uses Qt Open Source Edition version %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://www.trolltech.com/company/model/&quot;&gt;www.trolltech.com/company/model/&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;</source>
+        <translation type="obsolete">&lt;p&gt;Tento program používá Qt Open Source Edition verze %1.&lt;/p&gt;&lt;p&gt;Qt Open Source Edition je zamýšlena pro vývoj Open Source aplikací. Pro vývoj vlastnických aplikací (uzavřené zdrojové kódy) potřebujete Qt licenci.&lt;/p&gt;&lt;p&gt;Podívejte se, prosím, na &lt;a href=&quot;http://www.trolltech.com/company/model/&quot;&gt;www.trolltech.com/company/model/&lt;/a&gt; kvůli přehledu licencování Qt.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location line="-1610"/>
+        <source>Hide Details...</source>
+        <translation>Skrýt podrobnosti...</translation>
+    </message>
+    <message>
+        <source>&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
+        <translation type="obsolete">&lt;p&gt;Tento program používá Qt-verze %1.&lt;/p&gt;</translation>
+    </message>
+</context>
+<context>
+    <name>QMultiInputContext</name>
+    <message>
+        <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp" line="+88"/>
+        <source>Select IM</source>
+        <translation>Zvolit způsob vstupu</translation>
+    </message>
+</context>
+<context>
+    <name>QMultiInputContextPlugin</name>
+    <message>
+        <location filename="../src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp" line="+102"/>
+        <source>Multiple input method switcher that uses the context menu of the text widgets</source>
+        <translation>Přepínač pro více způsobů vstupu, který používá související nabídku textového prvku</translation>
+    </message>
+    <message>
+        <location line="-7"/>
+        <source>Multiple input method switcher</source>
+        <translation>Přepínač pro více způsobů vstupu</translation>
+    </message>
+</context>
+<context>
+    <name>QNativeSocketEngine</name>
+    <message>
+        <location filename="../src/network/socket/qnativesocketengine.cpp" line="+269"/>
+        <source>The proxy type is invalid for this operation</source>
+        <translation>Tuto operaci nelze s tímto typem proxy provést</translation>
+    </message>
+    <message>
+        <location line="-60"/>
+        <source>Network operation timed out</source>
+        <translation>Časový limit pro síťovou operaci byl překročen</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>The remote host closed the connection</source>
+        <translation>Vzdálený počítač uzavřel spojení</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Invalid socket descriptor</source>
+        <translation>Neplatný deskriptor zásuvky (socketu)</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Host unreachable</source>
+        <translation>Cílový počítač je nedosažitelný</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Protocol type not supported</source>
+        <translation>Protokol tohoto typu není podporován</translation>
+    </message>
+    <message>
+        <location line="+30"/>
+        <source>Datagram was too large to send</source>
+        <translation>Datagram byl pro odeslání příliš veliký</translation>
+    </message>
+    <message>
+        <location line="-45"/>
+        <source>Attempt to use IPv6 socket on a platform with no IPv6 support</source>
+        <translation>Vyzkoušelo se použít IPv6 zásuvku (socket) na systému bez podpory IPv6</translation>
+    </message>
+    <message>
+        <location line="+51"/>
+        <source>Unable to receive a message</source>
+        <translation>Zprávu se nepodařilo přijmout</translation>
+    </message>
+    <message>
+        <location line="-24"/>
+        <source>Permission denied</source>
+        <translation>Přístup odepřen</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Connection refused</source>
+        <translation>Spojení bylo odmítnuto</translation>
+    </message>
+    <message>
+        <location line="+21"/>
+        <source>Unable to write</source>
+        <translation>Nepodařilo se zapsat</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Another socket is already listening on the same port</source>
+        <translation>Na tomto portu již naslouchá jiná zásuvka (socket)</translation>
+    </message>
+    <message>
+        <location line="-12"/>
+        <source>Unable to send a message</source>
+        <translation>Nepodařilo se odeslat hlášení</translation>
+    </message>
+    <message>
+        <location line="-12"/>
+        <source>The bound address is already in use</source>
+        <translation>Uvedená adresa se už používá</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Connection timed out</source>
+        <translation>Časový limit pro spojení byl překročen</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <source>Network error</source>
+        <translation>Síťová chyba</translation>
+    </message>
+    <message>
+        <location line="-45"/>
+        <source>Unsupported socket operation</source>
+        <translation>Nepodporovaná zásuvková operace (povel pro socket)</translation>
+    </message>
+    <message>
+        <location line="+51"/>
+        <source>Operation on non-socket</source>
+        <translation>Operaci lze použít pouze na jedné zásuvce (socketu)</translation>
+    </message>
+    <message>
+        <location line="-66"/>
+        <source>Unable to initialize broadcast socket</source>
+        <translation>Zásuvku pro vysílání (socket) se nepodařilo spustit</translation>
+    </message>
+    <message>
+        <location line="+72"/>
+        <source>Unknown error</source>
+        <translation>Neznámá chyba</translation>
+    </message>
+    <message>
+        <location line="-75"/>
+        <source>Unable to initialize non-blocking socket</source>
+        <translation>Neblokující zásuvku (socket) se nepodařilo spustit</translation>
+    </message>
+    <message>
+        <location line="+48"/>
+        <source>The address is protected</source>
+        <translation>Adresa je chráněna</translation>
+    </message>
+    <message>
+        <location line="-18"/>
+        <source>Network unreachable</source>
+        <translation>Síť je nedosažitelná</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>The address is not available</source>
+        <translation>Adresa není dostupná</translation>
+    </message>
+    <message>
+        <location line="-30"/>
+        <source>Out of resources</source>
+        <translation>Nejsou dostupné žádné zdroje</translation>
+    </message>
+</context>
+<context>
+    <name>QNetworkAccessCacheBackend</name>
+    <message>
+        <location filename="../src/network/access/qnetworkaccesscachebackend.cpp" line="+66"/>
+        <source>Error opening %1</source>
+        <translation>%1 se nepodařilo otevřít</translation>
+    </message>
+</context>
+<context>
+    <name>QNetworkAccessDebugPipeBackend</name>
+    <message>
+        <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+195"/>
+        <source>Write error writing to %1: %2</source>
+        <translation>Při zápisu do souboru %1: %2 nastala chyba</translation>
+    </message>
+</context>
+<context>
+    <name>QNetworkAccessFileBackend</name>
+    <message>
+        <location filename="../src/network/access/qnetworkaccessfilebackend.cpp" line="+100"/>
+        <source>Request for opening non-local file %1</source>
+        <translation>Požadavek na otevření souboru přes síť %1</translation>
+    </message>
+    <message>
+        <location line="+152"/>
+        <source>Read error reading from %1: %2</source>
+        <translation>Při čtení ze souboru %1 nastala chyba: %2</translation>
+    </message>
+    <message>
+        <location line="-21"/>
+        <source>Cannot open %1: Path is a directory</source>
+        <translation>%1 nelze otevřít: Jedná se o adresář</translation>
+    </message>
+    <message>
+        <location line="-86"/>
+        <source>Error opening %1: %2</source>
+        <translation>%1 se nepodařilo otevřít: %2</translation>
+    </message>
+    <message>
+        <location line="+38"/>
+        <source>Write error writing to %1: %2</source>
+        <translation>Při zápisu do souboru %1: %2 nastala chyba</translation>
+    </message>
+</context>
+<context>
+    <name>QNetworkAccessFtpBackend</name>
+    <message>
+        <location filename="../src/network/access/qnetworkaccessftpbackend.cpp" line="+131"/>
+        <source>No suitable proxy found</source>
+        <translation>Nepodařilo se najít žádný vhodný proxy server</translation>
+    </message>
+    <message>
+        <location line="+165"/>
+        <source>Error while downloading %1: %2</source>
+        <translation>Při stahování %1 se vyskytla chyba: %2</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Error while uploading %1: %2</source>
+        <translation>Při nahrávání %1 se vyskytla chyba: %2</translation>
+    </message>
+    <message>
+        <location line="-153"/>
+        <source>Cannot open %1: is a directory</source>
+        <translation>%1 nelze otevřít: Jedná se o adresář</translation>
+    </message>
+    <message>
+        <location line="+112"/>
+        <source>Logging in to %1 failed: authentication required</source>
+        <translation>Přihlášení do %1 se nezdařilo: Je požadována autentizace</translation>
+    </message>
+</context>
+<context>
+    <name>QNetworkAccessHttpBackend</name>
+    <message>
+        <location filename="../src/network/access/qnetworkaccesshttpbackend.cpp" line="+585"/>
+        <source>No suitable proxy found</source>
+        <translation>Nepodařilo se najít žádný vhodný proxy server</translation>
+    </message>
+</context>
+<context>
+    <name>QNetworkReply</name>
+    <message>
+        <location line="+95"/>
+        <source>Error downloading %1 - server replied: %2</source>
+        <translation>Beim Herunterladen von %1 trat ein Fehler auf - Die Antwort des Servers ist: %2</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+77"/>
+        <source>Protocol &quot;%1&quot; is unknown</source>
+        <translation>Protokol &quot;%1&quot; není znám</translation>
+    </message>
+</context>
+<context>
+    <name>QNetworkReplyImpl</name>
+    <message>
+        <location line="+519"/>
+        <location line="+28"/>
+        <source>Operation canceled</source>
+        <translation>Operace byla zrušena</translation>
+    </message>
+</context>
+<context>
+    <name>QOCIDriver</name>
+    <message>
+        <location filename="../src/sql/drivers/oci/qsql_oci.cpp" line="+2166"/>
+        <source>Unable to commit transaction</source>
+        <translation>Transakci se nepodařilo provést (operace &apos;commit&apos;, odeslání, se nezdařila)</translation>
+    </message>
+    <message>
+        <source>Unable to initialize</source>
+        <translation type="obsolete">Inicializace se nezdařila</translation>
+    </message>
+    <message>
+        <location line="-90"/>
+        <source>Unable to logon</source>
+        <translation>Přihlášení se nezdařilo</translation>
+    </message>
+    <message>
+        <location line="+109"/>
+        <source>Unable to rollback transaction</source>
+        <translation>Transakci se nepodařilo zvrátit (operace &apos;rollback&apos;, zvrácení, se nezdařila)</translation>
+    </message>
+    <message>
+        <location line="-38"/>
+        <source>Unable to begin transaction</source>
+        <translation>Transakci se nepodařilo spustit</translation>
+    </message>
+    <message>
+        <location line="-215"/>
+        <source>Unable to initialize</source>
+        <comment>QOCIDriver</comment>
+        <translation>Spuštění se nezdařilo</translation>
+    </message>
+</context>
+<context>
+    <name>QOCIResult</name>
+    <message>
+        <location line="-165"/>
+        <source>Unable to alloc statement</source>
+        <translation>Přidělení příkazu se nepodařilo</translation>
+    </message>
+    <message>
+        <location line="-59"/>
+        <source>Unable to goto next</source>
+        <translation>Nelze jít k dalšímu prvku</translation>
+    </message>
+    <message>
+        <location line="+100"/>
+        <source>Unable to get statement type</source>
+        <translation>Nepodařilo se získat typ příkazu</translation>
+    </message>
+    <message>
+        <location line="+39"/>
+        <source>Unable to execute statement</source>
+        <translation>Příkaz se nepodařilo provést</translation>
+    </message>
+    <message>
+        <location line="-634"/>
+        <location line="+161"/>
+        <location line="+15"/>
+        <source>Unable to bind column for batch execute</source>
+        <translation>Nepodařilo se spojit sloupec pro provedení příkazu dávkového zpracování</translation>
+    </message>
+    <message>
+        <source>Unable to execute select statement</source>
+        <translation type="obsolete">Výběrové vyhledávání se nepodařilo provést</translation>
+    </message>
+    <message>
+        <location line="+393"/>
+        <source>Unable to prepare statement</source>
+        <translation>Příkaz se nepodařilo připravit</translation>
+    </message>
+    <message>
+        <location line="-378"/>
+        <source>Unable to execute batch statement</source>
+        <translation>Příkaz pro dávkové zpracování se nepodařilo provést</translation>
+    </message>
+    <message>
+        <location line="+424"/>
+        <source>Unable to bind value</source>
+        <translation>Hodnotu se nepodařilo spojit</translation>
+    </message>
+</context>
+<context>
+    <name>QODBCDriver</name>
+    <message>
+        <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+2045"/>
+        <source>Unable to commit transaction</source>
+        <translation>Transakci se nepodařilo provést (operace &apos;commit&apos;, odeslání, se nezdařila)</translation>
+    </message>
+    <message>
+        <location line="+32"/>
+        <source>Unable to enable autocommit</source>
+        <translation>&apos;autocommit&apos; se nepodařilo povolit</translation>
+    </message>
+    <message>
+        <source>Unable to connect - Driver doesn&apos;t support all needed functionality</source>
+        <translation type="obsolete">Nepodařilo se navázat spojení, protože ovladač nutnou funkcionalitu plně nepodporuje</translation>
+    </message>
+    <message>
+        <location line="-49"/>
+        <source>Unable to disable autocommit</source>
+        <translation>&apos;autocommit&apos;, automatické odeslání, se nepodařilo zastavit</translation>
+    </message>
+    <message>
+        <location line="-238"/>
+        <source>Unable to connect</source>
+        <translation>Nepodařilo se navázat spojení</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Unable to connect - Driver doesn&apos;t support all functionality required</source>
+        <translation>Nepodařilo se navázat spojení, protože ovladač nutnou funkcionalitu plně nepodporuje</translation>
+    </message>
+    <message>
+        <location line="+266"/>
+        <source>Unable to rollback transaction</source>
+        <translation>Transakci se nepodařilo zvrátit (operace &apos;rollback&apos;, zvrácení, se nezdařila)</translation>
+    </message>
+</context>
+<context>
+    <name>QODBCResult</name>
+    <message>
+        <location line="-566"/>
+        <source>Unable to bind variable</source>
+        <translation>Proměnnou se nepodařilo provést</translation>
+    </message>
+    <message>
+        <location line="-615"/>
+        <location line="+623"/>
+        <source>Unable to execute statement</source>
+        <translation>Příkaz se nepodařilo provést</translation>
+    </message>
+    <message>
+        <location line="-547"/>
+        <source>Unable to fetch next</source>
+        <translation>Další datový záznam se nepodařilo natáhnout</translation>
+    </message>
+    <message>
+        <location filename="../src/sql/drivers/db2/qsql_db2.cpp" line="+190"/>
+        <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+72"/>
+        <location line="+576"/>
+        <source>Unable to fetch last</source>
+        <translation>Poslední datový záznam se nepodařilo natáhnout</translation>
+    </message>
+    <message>
+        <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="-377"/>
+        <source>Unable to prepare statement</source>
+        <translation>Příkaz se nepodařilo spustit</translation>
+    </message>
+    <message>
+        <location line="-230"/>
+        <source>Unable to fetch previous</source>
+        <translation>Předchozí datový záznam se nepodařilo natáhnout</translation>
+    </message>
+    <message>
+        <location line="-63"/>
+        <source>Unable to fetch</source>
+        <translation>Nepodařilo se natáhnout žádná data</translation>
+    </message>
+    <message>
+        <location line="-71"/>
+        <location line="+346"/>
+        <source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
+        <translation>QODBCResult::reset: &apos;SQL_CURSOR_STATIC&apos; se nepodařilo nastavit jako příkaz vlastnosti . Ověřte, prosím, nastavení svého ODBC ovladače</translation>
+    </message>
+    <message>
+        <location line="-231"/>
+        <source>Unable to fetch first</source>
+        <translation>První datový záznam se nepodařilo natáhnout</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="-97"/>
+        <source>Invalid hostname</source>
+        <translation>Neplatný název pro hostitelský počítač</translation>
+    </message>
+    <message>
+        <source>Home</source>
+        <translation type="obsolete">Home</translation>
+    </message>
+    <message>
+        <source>Protocol error: packet of size 0 received</source>
+        <translation type="obsolete">Chyba v zápisu: Byl přijat paket o nulové velikosti</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="+131"/>
+        <source>Invalid URI: %1</source>
+        <translation>Neplátná URI: %1</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+60"/>
+        <source>Socket error on %1: %2</source>
+        <translation>Chyba zásuvky (socketu) u %1: %2</translation>
+    </message>
+    <message>
+        <location filename="../src/network/kernel/qhostinfo.cpp" line="+175"/>
+        <location filename="../src/network/kernel/qhostinfo_unix.cpp" line="+0"/>
+        <source>No host name given</source>
+        <translation>Nebyl zadán název pro hostitelský počítač</translation>
+    </message>
+    <message>
+        <source>Read error reading from %1: %2</source>
+        <translation type="obsolete">Při čtení ze souboru %1 nastala chyba: %2</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qnetworkaccessdebugpipebackend.cpp" line="+15"/>
+        <source>Remote host closed the connection prematurely on %1</source>
+        <translation>Vzdálený počítač předčasně ukončil spojení s %1</translation>
+    </message>
+    <message>
+        <location filename="../src/network/access/qnetworkaccessdatabackend.cpp" line="-57"/>
+        <source>Operation not supported on %1</source>
+        <translation>Tato operace není %1 podporována</translation>
+    </message>
+    <message>
+        <source>Write error writing to %1: %2</source>
+        <translation type="obsolete">Při zápisu do souboru %1: %2 nastala chyba</translation>
+    </message>
+</context>
+<context>
+    <name>QPPDOptionsModel</name>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+1198"/>
+        <source>Name</source>
+        <translation>Název</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Value</source>
+        <translation>Hodnota</translation>
+    </message>
+</context>
+<context>
+    <name>QPSQLDriver</name>
+    <message>
+        <location filename="../src/sql/drivers/psql/qsql_psql.cpp" line="+1251"/>
+        <source>Unable to subscribe</source>
+        <translation>Registrace se nezdařila</translation>
+    </message>
+    <message>
+        <location line="-420"/>
+        <source>Could not begin transaction</source>
+        <translation>Transakci se nepodařilo spustit</translation>
+    </message>
+    <message>
+        <location line="+46"/>
+        <source>Could not rollback transaction</source>
+        <translation>Transakci se nepodařilo zvrátit (operace &apos;rollback&apos;, zvrácení, se nezdařila)</translation>
+    </message>
+    <message>
+        <location line="-16"/>
+        <source>Could not commit transaction</source>
+        <translation>Transakci se nepodařilo provést (operace &apos;commit&apos;, odeslání, se nezdařila)</translation>
+    </message>
+    <message>
+        <location line="-79"/>
+        <source>Unable to connect</source>
+        <translation>Nepodařilo se navázat spojení</translation>
+    </message>
+    <message>
+        <location line="+501"/>
+        <source>Unable to unsubscribe</source>
+        <translation>Registraci se nepodařilo zrušit</translation>
+    </message>
+</context>
+<context>
+    <name>QPSQLResult</name>
+    <message>
+        <location line="-713"/>
+        <source>Unable to prepare statement</source>
+        <translation>Příkaz se nepodařilo připravit</translation>
+    </message>
+    <message>
+        <location line="-372"/>
+        <source>Unable to create query</source>
+        <translation>Nepodařilo se vytvořit žádný dotaz</translation>
+    </message>
+</context>
+<context>
+    <name>QPageSetupWidget</name>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupwidget.ui"/>
+        <source>Form</source>
+        <translation>Formulář</translation>
+    </message>
+    <message>
+        <location/>
+        <source>bottom margin</source>
+        <translation>Dolní okraj</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Paper</source>
+        <translation>Papír</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Paper source:</source>
+        <translation>Zdroj papíru:</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+304"/>
+        <source>Centimeters (cm)</source>
+        <translation>Centimetry (cm)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupwidget.ui"/>
+        <source>right margin</source>
+        <translation>Pravý okraj</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Margins</source>
+        <translation>Okraje</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Landscape</source>
+        <translation>Formát na šířku</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Width:</source>
+        <translation>Šířka:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Orientation</source>
+        <translation>Zaměření</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Portrait</source>
+        <translation>Formát na výšku</translation>
+    </message>
+    <message>
+        <location/>
+        <source>top margin</source>
+        <translation>Horní okraj</translation>
+    </message>
+    <message>
+        <location/>
+        <source>left margin</source>
+        <translation>Levý okraj</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Page size:</source>
+        <translation>Velikost stran:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Reverse portrait</source>
+        <translation>Obrácený formát na výšku</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+0"/>
+        <source>Millimeters (mm)</source>
+        <translation>Milimetry (mm)</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Points (pt)</source>
+        <translation>Body (pt)</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Inches (in)</source>
+        <translation>Palce (in)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupwidget.ui"/>
+        <source>Reverse landscape</source>
+        <translation>Obrácený formát na šířku</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Height:</source>
+        <translation>Výška:</translation>
+    </message>
+</context>
+<context>
+    <name>QPluginLoader</name>
+    <message>
+        <location filename="../src/corelib/plugin/qpluginloader.cpp" line="-89"/>
+        <source>The plugin was not loaded.</source>
+        <translation>Přídavný modul nebyl nahrán.</translation>
+    </message>
+    <message>
+        <location line="+113"/>
+        <source>Unknown error</source>
+        <translation>Neznámá chyba</translation>
+    </message>
+</context>
+<context>
+    <name>QPrintDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="-232"/>
+        <source>A0</source>
+        <translation>A0</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A1</source>
+        <translation>A1</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A2</source>
+        <translation>A2</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A3</source>
+        <translation>A3</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A4</source>
+        <translation>A4</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A5</source>
+        <translation>A5</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A6</source>
+        <translation>A6</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A7</source>
+        <translation>A7</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A8</source>
+        <translation>A8</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>A9</source>
+        <translation>A9</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B0</source>
+        <translation>B0</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B1</source>
+        <translation>B1</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B2</source>
+        <translation>B2</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B3</source>
+        <translation>B3</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B4</source>
+        <translation>B4</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B5</source>
+        <translation>B5</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B6</source>
+        <translation>B6</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B7</source>
+        <translation>B7</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B8</source>
+        <translation>B8</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B9</source>
+        <translation>B9</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+266"/>
+        <source>OK</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+1"/>
+        <source>B10</source>
+        <translation>B10</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>C5E</source>
+        <translation>C5E</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>DLE</source>
+        <translation>DLE</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+335"/>
+        <source>A6 (105 x 148 mm)</source>
+        <translation>A6 (105 x 148 mm)</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Legal (8.5 x 14 inches, 216 x 356 mm)</source>
+        <translation>Právní (8,5 x 14 palců, 216 x 356 mm)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+2"/>
+        <source>Folio</source>
+        <translation>Folio</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Legal</source>
+        <translation>Právní</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+20"/>
+        <source>Print all</source>
+        <translation>Tisknout vše</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qabstractprintdialog.cpp" line="+112"/>
+        <location line="+13"/>
+        <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="-2"/>
+        <source>Print</source>
+        <translation>Tisk</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-733"/>
+        <source>&amp;Options &lt;&lt;</source>
+        <translation>&amp;Nastavení &lt;&lt; </translation>
+    </message>
+    <message>
+        <location line="-72"/>
+        <location line="+68"/>
+        <source>&amp;Options &gt;&gt;</source>
+        <translation>&amp;Nastavení &gt;&gt;</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-30"/>
+        <source>B6 (125 x 176 mm)</source>
+        <translation>B6 (125 x 176 mm)</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>B8 (62 x 88 mm)</source>
+        <translation>B8 (62 x 88 mm)</translation>
+    </message>
+    <message>
+        <location line="-10"/>
+        <source>A8 (52 x 74 mm)</source>
+        <translation>A8 (52 x 74 mm)</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>B9 (44 x 62 mm)</source>
+        <translation>B9 (44 x 62 mm)</translation>
+    </message>
+    <message>
+        <location line="-10"/>
+        <source>A9 (37 x 52 mm)</source>
+        <translation>A9 (37 x 52 mm)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>B0 (1000 x 1414 mm)</source>
+        <translation>B0 (1000 x 1414 mm)</translation>
+    </message>
+    <message>
+        <location line="-5"/>
+        <source>A5 (148 x 210 mm)</source>
+        <translation>A5 (148 x 210 mm)</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Tabloid (279 x 432 mm)</source>
+        <translation>Bulvární noviny/tisk (279 x 432 mm)</translation>
+    </message>
+    <message>
+        <location line="-8"/>
+        <source>B10 (31 x 44 mm)</source>
+        <translation>B10 (31 x 44 mm)</translation>
+    </message>
+    <message>
+        <location line="-8"/>
+        <source>B2 (500 x 707 mm)</source>
+        <translation>B2 (500 x 707 mm)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-63"/>
+        <source>&amp;Print</source>
+        <translation>&amp;Tisk</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-9"/>
+        <source>A3 (297 x 420 mm)</source>
+        <translation>A3 (297 x 420 mm)</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>Print selection</source>
+        <translation>Tisk výběru</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+321"/>
+        <source>Print to File (Postscript)</source>
+        <translation>Tisk do souboru (Postscript)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-33"/>
+        <source>B4 (250 x 353 mm)</source>
+        <translation>B4 (250 x 353 mm)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+206"/>
+        <source>%1 already exists.
+Do you want to overwrite it?</source>
+        <translation>Soubor %1 již existuje.
+Má se přepsat?</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-13"/>
+        <source>A1 (594 x 841 mm)</source>
+        <translation>A1 (594 x 841 mm)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+4"/>
+        <source>Custom</source>
+        <translation>Stanovený uživatelem</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+10"/>
+        <source>B1 (707 x 1000 mm)</source>
+        <translation>B1 (707 x 1000 mm)</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Folio (210 x 330 mm)</source>
+        <translation>Folio (210 x 330 mm)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="-5"/>
+        <source>Ledger</source>
+        <translation>Hlavní (účetní) kniha</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Letter</source>
+        <translation>Dopis</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-2"/>
+        <source>DLE (110 x 220 mm)</source>
+        <translation>DLE (110 x 220 mm)</translation>
+    </message>
+    <message>
+        <location line="-1"/>
+        <source>C5E (163 x 229 mm)</source>
+        <translation>C5E (163 x 229 mm)</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>B5 (176 x 250 mm, 6.93 x 9.84 inches)</source>
+        <translation>B5 (176 x 250 mm, 6.93 x 9.84 palců</translation>
+    </message>
+    <message>
+        <location line="+33"/>
+        <source>Print range</source>
+        <translation>Tisková oblast</translation>
+    </message>
+    <message>
+        <location line="-229"/>
+        <source>File exists</source>
+        <translation>Soubor již existuje</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-158"/>
+        <source>Write %1 file</source>
+        <translation>Zapsat %1 soubor</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+181"/>
+        <source>A0 (841 x 1189 mm)</source>
+        <translation>A0 (841 x 1189 mm)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-1"/>
+        <source>Local file</source>
+        <translation>Místní soubor</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+108"/>
+        <source>locally connected</source>
+        <translation>přímo spojeno</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+25"/>
+        <source>Ledger (432 x 279 mm)</source>
+        <translation>Hlavní (účetní) kniha (432 x 279 mm)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+23"/>
+        <location line="+225"/>
+        <source>Aliases: %1</source>
+        <translation>Přezdívka: %1</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="-48"/>
+        <source>Print to File (PDF)</source>
+        <translation>Tisk do souboru (PDF)</translation>
+    </message>
+    <message>
+        <location line="+123"/>
+        <source>Print To File ...</source>
+        <translation>Tisk do souboru...</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="+4"/>
+        <source>US Common #10 Envelope (105 x 241 mm)</source>
+        <translation>US běžná #10 obálka (105 x 241 mm)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+1"/>
+        <source>Tabloid</source>
+        <translation>Bulvární noviny</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-25"/>
+        <source>A4 (210 x 297 mm, 8.26 x 11.7 inches)</source>
+        <translation>A4 (210 x 297 mm, 8.26 x 11.7 palců)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="-5"/>
+        <source>Executive</source>
+        <translation>Prováděcí</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/painting/qprinterinfo_unix.cpp" line="+223"/>
+        <location line="+199"/>
+        <source>unknown</source>
+        <translation>Neznámý</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-184"/>
+        <source>&lt;qt&gt;Do you want to overwrite it?&lt;/qt&gt;</source>
+        <translation>&lt;qt&gt;Chcete jej přepsat?&lt;/qt&gt;</translation>
+    </message>
+    <message>
+        <location line="+203"/>
+        <source>Executive (7.5 x 10 inches, 191 x 254 mm)</source>
+        <translation>Prováděcí (7,5 x 10 palců, 191 x 254 mm)</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Letter (8.5 x 11 inches, 216 x 279 mm)</source>
+        <translation>Dopis (8,5 x 11 palců, 216 x 279 mm)</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_win.cpp" line="+1"/>
+        <source>The &apos;From&apos; value cannot be greater than the &apos;To&apos; value.</source>
+        <translation>Údaj pro první stranu nesmí být větší než údaj pro poslední stranu.</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qpagesetupdialog_unix.cpp" line="+6"/>
+        <source>US Common #10 Envelope</source>
+        <translation>US běžná #10 obálka</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_unix.cpp" line="+76"/>
+        <source>%1 is a directory.
+Please choose a different file name.</source>
+        <translation>%1 je adresář.
+Zvolte, prosím, pro soubor jiný název.</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>File %1 is not writable.
+Please choose a different file name.</source>
+        <translation>Soubor %1 je chráněn proti zápisu.
+Zvolte, prosím, pro soubor jiný název.</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintdialog_qws.cpp" line="-14"/>
+        <source>B3 (353 x 500 mm)</source>
+        <translation>B3 (353 x 500 mm)</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>A7 (74 x 105 mm)</source>
+        <translation>A7 (74 x 105 mm)</translation>
+    </message>
+    <message>
+        <location line="-5"/>
+        <source>A2 (420 x 594 mm)</source>
+        <translation>A2 (420 x 594 mm)</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>B7 (88 x 125 mm)</source>
+        <translation>B7 (88 x 125 mm)</translation>
+    </message>
+</context>
+<context>
+    <name>QPrintPreviewDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+246"/>
+        <source>%1%</source>
+        <translation>%1%</translation>
+    </message>
+    <message>
+        <location line="+68"/>
+        <source>Print Preview</source>
+        <translation>Náhled tisku</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation type="obsolete">Zavřít</translation>
+    </message>
+    <message>
+        <location line="+89"/>
+        <source>Print</source>
+        <translation>Tisk</translation>
+    </message>
+    <message>
+        <location line="-46"/>
+        <source>Fit page</source>
+        <translation>Přizpůsobit stranu</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Zoom in</source>
+        <translation>Zvětšit</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Landscape</source>
+        <translation>Formát na šířku</translation>
+    </message>
+    <message>
+        <location line="-7"/>
+        <source>Zoom out</source>
+        <translation>Zmenšit</translation>
+    </message>
+    <message>
+        <location line="-13"/>
+        <source>Fit width</source>
+        <translation>Přizpůsobit šířku</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>Portrait</source>
+        <translation>Formát na výšku</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qabstractpagesetupdialog.cpp" line="+68"/>
+        <location line="+12"/>
+        <source>Page Setup</source>
+        <translation>Nastavení strany</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/dialogs/qprintpreviewdialog.cpp" line="+29"/>
+        <source>Page setup</source>
+        <translation>Nastavení strany</translation>
+    </message>
+    <message>
+        <location line="-16"/>
+        <source>Show overview of all pages</source>
+        <translation>Ukázat přehled všech stran</translation>
+    </message>
+    <message>
+        <location line="-42"/>
+        <source>First page</source>
+        <translation>První strana</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Last page</source>
+        <translation>Poslední strana</translation>
+    </message>
+    <message>
+        <location line="+39"/>
+        <source>Show single page</source>
+        <translation>Ukázat jednotlivé strany</translation>
+    </message>
+    <message>
+        <location line="+168"/>
+        <source>Export to PDF</source>
+        <translation>Vyvést do PDF</translation>
+    </message>
+    <message>
+        <location line="-209"/>
+        <source>Previous page</source>
+        <translation>Předchozí strana</translation>
+    </message>
+    <message>
+        <location line="-1"/>
+        <source>Next page</source>
+        <translation>Další strana</translation>
+    </message>
+    <message>
+        <location line="+43"/>
+        <source>Show facing pages</source>
+        <translation>Ukázat strany ležící naproti</translation>
+    </message>
+    <message>
+        <location line="+170"/>
+        <source>Export to PostScript</source>
+        <translation>Vyvést do PostScriptu</translation>
+    </message>
+</context>
+<context>
+    <name>QPrintPropertiesWidget</name>
+    <message>
+        <location filename="../src/gui/dialogs/qprintpropertieswidget.ui"/>
+        <source>Form</source>
+        <translation>Formulář</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Page</source>
+        <translation>Strana</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Advanced</source>
+        <translation>Rozšířené</translation>
+    </message>
+</context>
+<context>
+    <name>QPrintSettingsOutput</name>
+    <message>
+        <location filename="../src/gui/dialogs/qprintsettingsoutput.ui"/>
+        <source>to</source>
+        <translation>do</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Form</source>
+        <translation>Formulář</translation>
+    </message>
+    <message>
+        <location/>
+        <source>None</source>
+        <translation>Žádný</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Color</source>
+        <translation>Barva</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Print all</source>
+        <translation>Tisknout vše</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Selection</source>
+        <translation>Výběr</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Long side</source>
+        <translation>Dlouhá strana</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Copies</source>
+        <translation>Počet exemplářů</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Print range</source>
+        <translation>Tisk oblasti</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Color Mode</source>
+        <translation>Barevný režim</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Options</source>
+        <translation>Volby</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Output Settings</source>
+        <translation>Nastavení výstupu</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Reverse</source>
+        <translation>Obrácený</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Grayscale</source>
+        <translation>Odstíny šedi</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Short side</source>
+        <translation>Krátká strana</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Collate</source>
+        <translation>Srovnat</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Copies:</source>
+        <translation>Počet exemplářů:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Pages from</source>
+        <translation>Strany od</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Duplex Printing</source>
+        <translation>Zdvojený tisk</translation>
+    </message>
+</context>
+<context>
+    <name>QPrintWidget</name>
+    <message>
+        <location filename="../src/gui/dialogs/qprintwidget.ui"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Form</source>
+        <translation>Formulář</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Type:</source>
+        <translation>Typ:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>&amp;Name:</source>
+        <translation>&amp;Název:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Output &amp;file:</source>
+        <translation>Výstupní &amp;soubor:</translation>
+    </message>
+    <message>
+        <location/>
+        <source>P&amp;roperties</source>
+        <translation>&amp;Vlastnosti</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Preview</source>
+        <translation>Náhled</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Printer</source>
+        <translation>Tiskárna</translation>
+    </message>
+    <message>
+        <location/>
+        <source>Location:</source>
+        <translation>Umístění:</translation>
+    </message>
+</context>
+<context>
+    <name>QProcess</name>
+    <message>
+        <location filename="../src/corelib/io/qprocess.cpp" line="+954"/>
+        <location line="+826"/>
+        <location filename="../src/corelib/io/qprocess_win.cpp" line="+763"/>
+        <source>Error writing to process</source>
+        <translation>Zápis do procesu se nezdařil</translation>
+    </message>
+    <message>
+        <location line="+203"/>
+        <source>No program defined</source>
+        <translation>Nestanoven žádný program</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/io/qprocess_unix.cpp" line="+653"/>
+        <source>Resource error (fork failure): %1</source>
+        <translation>Potíže se zdroji (selhání rozcestí - &quot;fork failure&quot;): %1</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/io/qprocess.cpp" line="-1128"/>
+        <location line="+52"/>
+        <location filename="../src/corelib/io/qprocess_win.cpp" line="-190"/>
+        <location line="+50"/>
+        <source>Error reading from process</source>
+        <translation>Čtení z procesu se nezdařilo</translation>
+    </message>
+    <message>
+        <source>Process failed to start</source>
+        <translation type="obsolete">Spuštění procesu se nezdařilo</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/io/qprocess_unix.cpp" line="-251"/>
+        <location filename="../src/corelib/io/qprocess_win.cpp" line="-486"/>
+        <source>Could not open input redirection for reading</source>
+        <translation>Vstupní přesměrování se nepodařilo otevřít pro čtení</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <location filename="../src/corelib/io/qprocess_win.cpp" line="+20"/>
+        <source>Could not open output redirection for writing</source>
+        <translation>Výstupní přesměrování se nepodařilo otevřít pro zápis</translation>
+    </message>
+    <message>
+        <location line="+491"/>
+        <location line="+52"/>
+        <location line="+74"/>
+        <location line="+66"/>
+        <location filename="../src/corelib/io/qprocess_win.cpp" line="+406"/>
+        <location line="+50"/>
+        <location line="+75"/>
+        <location line="+42"/>
+        <location line="+54"/>
+        <source>Process operation timed out</source>
+        <translation>Překročení času u procesu</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/io/qprocess.cpp" line="+117"/>
+        <source>Process crashed</source>
+        <translation>Proces spadl</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/io/qprocess_win.cpp" line="-381"/>
+        <source>Process failed to start: %1</source>
+        <translation>Proces se nepodařilo spustit: %1</translation>
+    </message>
+</context>
+<context>
+    <name>QProgressDialog</name>
+    <message>
+        <location filename="../src/gui/dialogs/qprogressdialog.cpp" line="+196"/>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+</context>
+<context>
+    <name>QPushButton</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="-4"/>
+        <source>Open</source>
+        <translation>Otevřít</translation>
+    </message>
+</context>
+<context>
+    <name>QRadioButton</name>
+    <message>
+        <location line="+12"/>
+        <source>Check</source>
+        <translation>Označit křížkem</translation>
+    </message>
+</context>
+<context>
+    <name>QRegExp</name>
+    <message>
+        <location filename="../src/corelib/tools/qregexp.cpp" line="+68"/>
+        <source>bad lookahead syntax</source>
+        <translation>nesprávná syntax pro plánování dopředu</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>no error occurred</source>
+        <translation>žádná chyba</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>missing left delim</source>
+        <translation>chybějící levé vymezení</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <source>bad char class syntax</source>
+        <translation>nesprávná syntax pro třídu znaku</translation>
+    </message>
+    <message>
+        <location line="-1"/>
+        <source>disabled feature used</source>
+        <translation>byla použita zakázaná vlastnost</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>invalid octal value</source>
+        <translation>neplatná osmičková hodnota</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>invalid interval</source>
+        <translation>neplatný interval</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>invalid category</source>
+        <translation>neplatná skupina</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>bad repetition syntax</source>
+        <translation>nesprávná syntax pro opakování</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>met internal limit</source>
+        <translation>dosažena vnitřní mez</translation>
+    </message>
+    <message>
+        <location line="-1"/>
+        <source>unexpected end</source>
+        <translation>neočekávaný konec</translation>
+    </message>
+</context>
+<context>
+    <name>QSQLite2Driver</name>
+    <message>
+        <location filename="../src/sql/drivers/sqlite2/qsql_sqlite2.cpp" line="+449"/>
+        <source>Unable to commit transaction</source>
+        <translation>Transakci se nepodařilo provést (operace &apos;commit&apos;, odeslání, se nezdařila)</translation>
+    </message>
+    <message>
+        <source>Error to open database</source>
+        <translation type="obsolete">Nepodařilo se otevřít spojení s datatabází</translation>
+    </message>
+    <message>
+        <source>Unable to rollback Transaction</source>
+        <translation type="obsolete">Transakci se nepodařilo zvrátit (operace &apos;rollback&apos;, zvrácení, se nezdařila)</translation>
+    </message>
+    <message>
+        <location line="-17"/>
+        <source>Unable to begin transaction</source>
+        <translation>Transakci se nepodařilo spustit</translation>
+    </message>
+    <message>
+        <location line="-41"/>
+        <source>Error opening database</source>
+        <translation>Nepodařilo se otevřít spojení s databází</translation>
+    </message>
+    <message>
+        <location line="+75"/>
+        <source>Unable to rollback transaction</source>
+        <translation>Transakci se nepodařilo zvrátit (operace &apos;rollback&apos;, zvrácení, se nezdařila)</translation>
+    </message>
+</context>
+<context>
+    <name>QSQLite2Result</name>
+    <message>
+        <location line="-176"/>
+        <source>Unable to execute statement</source>
+        <translation>Příkaz se nepodařilo provést</translation>
+    </message>
+    <message>
+        <location line="-143"/>
+        <source>Unable to fetch results</source>
+        <translation>Výsledek se nepodařilo natáhnout</translation>
+    </message>
+</context>
+<context>
+    <name>QSQLiteDriver</name>
+    <message>
+        <location filename="../src/sql/drivers/sqlite/qsql_sqlite.cpp" line="+590"/>
+        <source>Unable to commit transaction</source>
+        <translation>Transakci se nepodařilo provést (operace &apos;commit&apos;, odeslání, se nezdařila)</translation>
+    </message>
+    <message>
+        <location line="-35"/>
+        <source>Error closing database</source>
+        <translation>Nepodařilo se uzavřít spojení s datatabází</translation>
+    </message>
+    <message>
+        <location line="-11"/>
+        <source>Error opening database</source>
+        <translation>Nepodařilo se otevřít spojení s databází</translation>
+    </message>
+    <message>
+        <location line="+61"/>
+        <source>Unable to rollback transaction</source>
+        <translation>Transakci se nepodařilo zvrátit (operace &apos;rollback&apos;, zvrácení, se nezdařila)</translation>
+    </message>
+    <message>
+        <location line="-30"/>
+        <source>Unable to begin transaction</source>
+        <translation>Transakci se nepodařilo spustit</translation>
+    </message>
+</context>
+<context>
+    <name>QSQLiteResult</name>
+    <message>
+        <location line="-378"/>
+        <location line="+66"/>
+        <location line="+8"/>
+        <source>Unable to fetch row</source>
+        <translation>Řádek se nepodařilo natáhnout</translation>
+    </message>
+    <message>
+        <location line="-73"/>
+        <source>No query</source>
+        <translation>Žádný požadavek</translation>
+    </message>
+    <message>
+        <location line="+132"/>
+        <source>Unable to execute statement</source>
+        <translation>Příkaz se nepodařilo provést</translation>
+    </message>
+    <message>
+        <location line="+65"/>
+        <source>Unable to bind parameters</source>
+        <translation>Parametry se nepodařilo spojit</translation>
+    </message>
+    <message>
+        <location line="-45"/>
+        <source>Unable to reset statement</source>
+        <translation>Příkaz se nepodařilo znovu nastavit</translation>
+    </message>
+    <message>
+        <location line="+52"/>
+        <source>Parameter count mismatch</source>
+        <translation>Počet parametrů není správný</translation>
+    </message>
+</context>
+<context>
+    <name>QScriptBreakpointsModel</name>
+    <message>
+        <location filename="../src/scripttools/debugging/qscriptbreakpointsmodel.cpp" line="+455"/>
+        <source>ID</source>
+        <translation>ID</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Location</source>
+        <translation>Umístění</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Condition</source>
+        <translation>Podmínka</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ignore-count</source>
+        <translation>Spustit po</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Single-shot</source>
+        <translation>Spustit jednou</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Hit-count</source>
+        <translation>Spuštěný</translation>
+    </message>
+</context>
+<context>
+    <name>QScriptBreakpointsWidget</name>
+    <message>
+        <location filename="../src/scripttools/debugging/qscriptbreakpointswidget.cpp" line="+298"/>
+        <source>New</source>
+        <translation>Nový</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Delete</source>
+        <translation>Smazat</translation>
+    </message>
+</context>
+<context>
+    <name>QScriptDebugger</name>
+    <message>
+        <location filename="../src/scripttools/debugging/qscriptdebugger.cpp" line="+885"/>
+        <location line="+1013"/>
+        <source>Go to Line</source>
+        <translation>Jít na řádek</translation>
+    </message>
+    <message>
+        <location line="-1012"/>
+        <source>Line:</source>
+        <translation>Řádek:</translation>
+    </message>
+    <message>
+        <location line="+791"/>
+        <source>Interrupt</source>
+        <translation>Přerušit</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Shift+F5</source>
+        <translation>Shift+F5</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Continue</source>
+        <translation>Pokračovat</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>F5</source>
+        <translation>F5</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Step Into</source>
+        <translation>Krok do</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>F11</source>
+        <translation>F11</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Step Over</source>
+        <translation>Krok přes</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>F10</source>
+        <translation>F10</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Step Out</source>
+        <translation>Krok ven</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Shift+F11</source>
+        <translation>Shift+F11</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Run to Cursor</source>
+        <translation>Provést po kurzor</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ctrl+F10</source>
+        <translation>Ctrl+F10</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Run to New Script</source>
+        <translation>Provést po nový skript</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Toggle Breakpoint</source>
+        <translation>Přepnout bod přerušení (zastavení)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>F9</source>
+        <translation>F9</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Clear Debug Output</source>
+        <translation>Smazat výstup ladění</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Clear Error Log</source>
+        <translation>Smazat výstupní zápis s chybami</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Clear Console</source>
+        <translation>Smazat konzoli</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>&amp;Find in Script...</source>
+        <translation>&amp;Hledat ve skriptu...</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Ctrl+F</source>
+        <translation>Ctrl+F</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Find &amp;Next</source>
+        <translation>Najít &amp;další</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>F3</source>
+        <translation>F3</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Find &amp;Previous</source>
+        <translation>Najít &amp;předchozí</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Shift+F3</source>
+        <translation>Shift+F3</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Ctrl+G</source>
+        <translation>Ctrl+G</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Debug</source>
+        <translation>Ladit</translation>
+    </message>
+</context>
+<context>
+    <name>QScriptDebuggerCodeFinderWidget</name>
+    <message>
+        <location filename="../src/scripttools/debugging/qscriptdebuggercodefinderwidget.cpp" line="+141"/>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Previous</source>
+        <translation>Předchozí</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Next</source>
+        <translation>Další</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Case Sensitive</source>
+        <translation>Rozlišující velká a malá písmena</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Whole words</source>
+        <translation>Celá slova</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>&lt;img src=&quot;:/qt/scripttools/debugging/images/wrap.png&quot;&gt;&amp;nbsp;Search wrapped</source>
+        <translation>&lt;img src=&quot;:/qt/scripttools/debugging/images/wrap.png&quot;&gt;&amp;nbsp;Hledání dosáhlo konce</translation>
+    </message>
+</context>
+<context>
+    <name>QScriptDebuggerLocalsModel</name>
+    <message>
+        <location filename="../src/scripttools/debugging/qscriptdebuggerlocalsmodel.cpp" line="+872"/>
+        <source>Name</source>
+        <translation>Název</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Value</source>
+        <translation>Hodnota</translation>
+    </message>
+</context>
+<context>
+    <name>QScriptDebuggerStackModel</name>
+    <message>
+        <location filename="../src/scripttools/debugging/qscriptdebuggerstackmodel.cpp" line="+161"/>
+        <source>Level</source>
+        <translation>Úroveň</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Name</source>
+        <translation>Název</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Location</source>
+        <translation>Umístění</translation>
+    </message>
+</context>
+<context>
+    <name>QScriptEdit</name>
+    <message>
+        <location filename="../src/scripttools/debugging/qscriptedit.cpp" line="+411"/>
+        <source>Toggle Breakpoint</source>
+        <translation>Přepnout bod zastavení</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Disable Breakpoint</source>
+        <translation>Vypnout bod zastavení</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Enable Breakpoint</source>
+        <translation>Zapnout bod zastavení</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Breakpoint Condition:</source>
+        <translation>Podmínka zastavení:</translation>
+    </message>
+</context>
+<context>
+    <name>QScriptEngineDebugger</name>
+    <message>
+        <location filename="../src/scripttools/debugging/qscriptenginedebugger.cpp" line="+523"/>
+        <source>Loaded Scripts</source>
+        <translation>Nahrané skripty</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Breakpoints</source>
+        <translation>Body zastavení</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Stack</source>
+        <translation>Zásobník</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Locals</source>
+        <translation>Místní proměnné</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Console</source>
+        <translation>Konzole</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Debug Output</source>
+        <translation>Výstup ladění</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Error Log</source>
+        <translation>Výstupní zápis s chybami</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>Search</source>
+        <translation>Hledat</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>View</source>
+        <translation>Pohled</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Qt Script Debugger</source>
+        <translation>Qt ladění skriptů</translation>
+    </message>
+</context>
+<context>
+    <name>QScriptNewBreakpointWidget</name>
+    <message>
+        <location filename="../src/scripttools/debugging/qscriptbreakpointswidget.cpp" line="-223"/>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+</context>
+<context>
+    <name>QScrollBar</name>
+    <message>
+        <location filename="../src/gui/widgets/qscrollbar.cpp" line="+456"/>
+        <source>Top</source>
+        <translation>Začátek</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Scroll down</source>
+        <translation>Projíždět dolů</translation>
+    </message>
+    <message>
+        <location line="-9"/>
+        <source>Scroll here</source>
+        <translation>Projíždět až sem</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Scroll left</source>
+        <translation>Projíždět doleva</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+143"/>
+        <source>Line up</source>
+        <translation>O jeden řádek nahoru</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Line down</source>
+        <translation>O jeden řádek dolů</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/widgets/qscrollbar.cpp" line="-5"/>
+        <source>Bottom</source>
+        <translation>Konec</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-6"/>
+        <source>Page up</source>
+        <translation>O stranu nahoru</translation>
+    </message>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+2"/>
+        <source>Position</source>
+        <translation>Poloha</translation>
+    </message>
+    <message>
+        <location filename="../src/gui/widgets/qscrollbar.cpp" line="+1"/>
+        <source>Page right</source>
+        <translation>O stranu doprava</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Scroll up</source>
+        <translation>Projíždět nahoru</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Scroll right</source>
+        <translation>Projíždět doprava</translation>
+    </message>
+    <message>
+        <location line="-7"/>
+        <source>Left edge</source>
+        <translation>Levý okraj</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+2"/>
+        <source>Page down</source>
+        <translation>O stranu dolů</translation>
+    </message>
+    <message>
+        <location line="-1"/>
+        <source>Page left</source>
+        <translation>O stranu doleva</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>Right edge</source>
+        <translation>Pravý okraj</translation>
+    </message>
+</context>
+<context>
+    <name>QSharedMemory</name>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+88"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+74"/>
+        <source>%1: doesn&apos;t exist</source>
+        <translation>%1: Neexistuje</translation>
+    </message>
+    <message>
+        <location line="+39"/>
+        <source>%1: UNIX key file doesn&apos;t exist</source>
+        <translation>%1: Soubor s unixovým klíčem neexistuje</translation>
+    </message>
+    <message>
+        <location line="+78"/>
+        <source>%1: system-imposed size restrictions</source>
+        <translation>%1: Bylo dosaženo systémem podmíněné meze velikosti</translation>
+    </message>
+    <message>
+        <source>%1: unix key file doesn&apos;t exists</source>
+        <translation type="obsolete">%1: Soubor s unixovým klíčem neexistuje</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="+71"/>
+        <source>%1: doesn&apos;t exists</source>
+        <translation>%1: Neexistuje</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="-86"/>
+        <source>%1: key is empty</source>
+        <translation>%1: Neplatný údaj u klíče (prázdný)</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="+44"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+67"/>
+        <source>%1: key error</source>
+        <translation>%1: Chybný klíč</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="+304"/>
+        <source>%1: create size is less then 0</source>
+        <translation>%1: Údaj o velikosti vytvoření je menší než nula</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="-48"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="-35"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-76"/>
+        <source>%1: already exists</source>
+        <translation>%1: Již existuje</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+14"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+25"/>
+        <source>%1: unknown error %2</source>
+        <translation>%1: Neznámá chyba %2</translation>
+    </message>
+    <message>
+        <location line="-11"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-12"/>
+        <source>%1: invalid size</source>
+        <translation>%1: Neplatná velikost</translation>
+    </message>
+    <message>
+        <location line="+67"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+87"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+27"/>
+        <source>%1: unable to make key</source>
+        <translation>%1: Nepodařilo se vytvořit klíč</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="-81"/>
+        <source>%1: unable to set key on lock</source>
+        <translation>%1: Nepodařilo se nastavit klíč pro uzavření</translation>
+    </message>
+    <message>
+        <location line="+271"/>
+        <source>%1: unable to unlock</source>
+        <translation>%1: Uzavření se nepodařilo zrušit</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="-59"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="-105"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-18"/>
+        <source>%1: permission denied</source>
+        <translation>%1: Přístup odepřen</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+54"/>
+        <source>%1: ftok failed</source>
+        <translation>%1: Vyvolání ftok se nezdařilo</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory_symbian.cpp" line="-4"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="-40"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="-4"/>
+        <source>%1: out of resources</source>
+        <translation>%1: Nejsou již použitelné zdroje</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory_unix.cpp" line="+164"/>
+        <source>%1: not attached</source>
+        <translation>%1: Nepřipojen</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory_win.cpp" line="+90"/>
+        <source>%1: size query failed</source>
+        <translation>%1: Vyhledání velikosti se nezdařilo</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/kernel/qsharedmemory.cpp" line="-22"/>
+        <location filename="../src/corelib/kernel/qsharedmemory_p.h" line="+155"/>
+        <source>%1: unable to lock</source>
+        <translation>%1: Uzavření se nezdařilo</translation>
+    </message>
+</context>
+<context>
+    <name>QShortcut</name>
+    <message>
+        <location filename="../src/gui/kernel/qkeysequence.cpp" line="+1143"/>
+        <source>+</source>
+        <translation>+</translation>
+    </message>
+    <message>
+        <location line="-664"/>
+        <source>No</source>
+        <translation>Ne</translation>
+    </message>
+    <message>
+        <location line="-71"/>
+        <source>Up</source>
+        <translation>Nahoru</translation>
+    </message>
+    <message>
+        <location line="+644"/>
+        <location line="+135"/>
+        <source>Alt</source>
+        <translation>Alt</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>F%1</source>
+        <translation>F%1</translation>
+    </message>
+    <message>
+        <location line="-803"/>
+        <source>Del</source>
+        <translation>Delete</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>End</source>
+        <translation>End</translation>
+    </message>
+    <message>
+        <location line="-12"/>
+        <source>Esc</source>
+        <translation>Esc</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Ins</source>
+        <translation>Insert</translation>
+    </message>
+    <message>
+        <location line="-5"/>
+        <source>Tab</source>
+        <translation>Tab</translation>
+    </message>
+    <message>
+        <location line="+83"/>
+        <source>Yes</source>
+        <translation>Ano</translation>
+    </message>
+    <message>
+        <location line="-58"/>
+        <source>Back</source>
+        <translation>Zpět</translation>
+    </message>
+    <message>
+        <location line="+67"/>
+        <source>Call</source>
+        <translation>Volání</translation>
+    </message>
+    <message>
+        <location line="+563"/>
+        <location line="+135"/>
+        <source>Ctrl</source>
+        <translation>Ctrl</translation>
+    </message>
+    <message>
+        <location line="-775"/>
+        <source>Down</source>
+        <translation>Dolů</translation>
+    </message>
+    <message>
+        <location line="+79"/>
+        <source>Flip</source>
+        <translation>Obrátit</translation>
+    </message>
+    <message>
+        <location line="-72"/>
+        <source>Help</source>
+        <translation>Nápověda</translation>
+    </message>
+    <message>
+        <location line="-12"/>
+        <source>Home</source>
+        <translation>Home</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Left</source>
+        <translation>Vlevo</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Menu</source>
+        <translation>Menu</translation>
+    </message>
+    <message>
+        <location line="+637"/>
+        <location line="+130"/>
+        <source>Meta</source>
+        <translation>Meta</translation>
+    </message>
+    <message>
+        <location line="-772"/>
+        <source>PgUp</source>
+        <translation>PgUp</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Stop</source>
+        <translation>Stop</translation>
+    </message>
+    <message>
+        <location line="-23"/>
+        <source>Enter</source>
+        <translation>Enter</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Pause</source>
+        <translation>Pause</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Print</source>
+        <translation>Print</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Right</source>
+        <translation>Vpravo</translation>
+    </message>
+    <message>
+        <location line="+642"/>
+        <location line="+138"/>
+        <source>Shift</source>
+        <translation>Shift</translation>
+    </message>
+    <message>
+        <location line="-796"/>
+        <source>Space</source>
+        <translation>Mezerník</translation>
+    </message>
+    <message>
+        <location line="+43"/>
+        <source>Media Record</source>
+        <translation>Nahrát</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <source>Print Screen</source>
+        <translation>Print Screen</translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <source>Treble Down</source>
+        <translation>Výšky -</translation>
+    </message>
+    <message>
+        <location line="+38"/>
+        <source>Scroll Lock</source>
+        <translation>Scroll Lock</translation>
+    </message>
+    <message>
+        <location line="-45"/>
+        <source>Volume Down</source>
+        <translation>Hlasitost -</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Volume Mute</source>
+        <translation>Ztlumit hlasitost</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Media Previous</source>
+        <translation>Předchozí</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Home Page</source>
+        <translation>Domovská stránka</translation>
+    </message>
+    <message>
+        <location line="-11"/>
+        <source>Volume Up</source>
+        <translation>Hlasitost +</translation>
+    </message>
+    <message>
+        <location line="+24"/>
+        <source>Launch (6)</source>
+        <translation>Spustit (6)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (7)</source>
+        <translation>Spustit (7)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (8)</source>
+        <translation>Spustit (8)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (9)</source>
+        <translation>Spustit (9)</translation>
+    </message>
+    <message>
+        <location line="-7"/>
+        <source>Launch (2)</source>
+        <translation>Spustit (2)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (3)</source>
+        <translation>Spustit (3)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (4)</source>
+        <translation>Spustit (4)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (5)</source>
+        <translation>Spustit (5)</translation>
+    </message>
+    <message>
+        <location line="-5"/>
+        <source>Launch (0)</source>
+        <translation>Spustit (0)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (1)</source>
+        <translation>Spustit (1)</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Launch (F)</source>
+        <translation>Spustit (F)</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <source>Launch (B)</source>
+        <translation>Spustit (B)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (C)</source>
+        <translation>Spustit (C)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (D)</source>
+        <translation>Spustit (D)</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Launch (E)</source>
+        <translation>Spustit (E)</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <source>Launch (A)</source>
+        <translation>Spustit (A)</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Delete</source>
+        <translation>Delete</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Escape</source>
+        <translation>Escape</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Hangup</source>
+        <translation>Pověsit</translation>
+    </message>
+    <message>
+        <location line="-18"/>
+        <source>Insert</source>
+        <translation>Insert</translation>
+    </message>
+    <message>
+        <location line="-43"/>
+        <source>Bass Boost</source>
+        <translation>Zesílení basů</translation>
+    </message>
+    <message>
+        <location line="-15"/>
+        <source>PgDown</source>
+        <translation>PgDown</translation>
+    </message>
+    <message>
+        <location line="-14"/>
+        <source>Return</source>
+        <translation>Return</translation>
+    </message>
+    <message>
+        <location line="+41"/>
+        <source>Search</source>
+        <translation>Hledat</translation>
+    </message>
+    <message>
+        <location line="+38"/>
+        <source>Select</source>
+        <translation>Vybrat</translation>
+    </message>
+    <message>
+        <location line="-73"/>
+        <source>SysReq</source>
+        <translation>SysReq</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>NumLock</source>
+        <translation>NumLock</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>ScrollLock</source>
+        <translation>ScrollLock</translation>
+    </message>
+    <message>
+        <location line="+68"/>
+        <source>Context1</source>
+        <translation>Kontext1</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Context2</source>
+        <translation>Kontext2</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Context3</source>
+        <translation>Kontext3</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Context4</source>
+        <translation>Kontext4</translation>
+    </message>
+    <message>
+        <location line="-22"/>
+        <source>Page Up</source>
+        <translation>Page Up</translation>
+    </message>
+    <message>
+        <location line="-23"/>
+        <source>Open URL</source>
+        <translation>Otevřít URL</translation>
+    </message>
+    <message>
+        <location line="+25"/>
+        <source>Caps Lock</source>
+        <translation>Caps Lock</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>System Request</source>
+        <translation>Žádost systému</translation>
+    </message>
+    <message>
+        <location line="-60"/>
+        <source>CapsLock</source>
+        <translation>CapsLock</translation>
+    </message>
+    <message>
+        <location line="-17"/>
+        <source>Backtab</source>
+        <translation>Zpět-Tab</translation>
+    </message>
+    <message>
+        <location line="+32"/>
+        <source>Bass Up</source>
+        <translation>Basy +</translation>
+    </message>
+    <message>
+        <location line="-5"/>
+        <source>Refresh</source>
+        <translation>Obnovit</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>Launch Mail</source>
+        <translation>Spustit e-mail</translation>
+    </message>
+    <message>
+        <location line="-45"/>
+        <source>Backspace</source>
+        <translation>Backspace</translation>
+    </message>
+    <message>
+        <location line="+32"/>
+        <source>Bass Down</source>
+        <translation>Basy -</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Standby</source>
+        <translation>V pohotovosti</translation>
+    </message>
+    <message>
+        <location line="-10"/>
+        <source>Treble Up</source>
+        <translation>Výšky +</translation>
+    </message>
+    <message>
+        <location line="+37"/>
+        <source>Num Lock</source>
+        <translation>Num Lock</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Number Lock</source>
+        <translation>Zahlen-Feststelltaste</translation>
+    </message>
+    <message>
+        <location line="-30"/>
+        <source>Favorites</source>
+        <translation>Oblíbené</translation>
+    </message>
+    <message>
+        <location line="-17"/>
+        <source>Forward</source>
+        <translation>Dopředu</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>Page Down</source>
+        <translation>Obraz dolů</translation>
+    </message>
+    <message>
+        <location line="-33"/>
+        <source>Media Play</source>
+        <translation>Přehrávání</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Media Stop</source>
+        <translation>Zastavit přehrávání</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Media Next</source>
+        <translation>Další</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Launch Media</source>
+        <translation>Spustit přehrávač</translation>
+    </message>
+</context>
+<context>
+    <name>QSlider</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="+153"/>
+        <source>Page up</source>
+        <translation>O stranu nahoru</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Position</source>
+        <translation>Poloha</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Page right</source>
+        <translation>O stranu doprava</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Page down</source>
+        <translation>O stranu dolů</translation>
+    </message>
+    <message>
+        <location line="-5"/>
+        <source>Page left</source>
+        <translation>O stranu doleva</translation>
+    </message>
+</context>
+<context>
+    <name>QSocks5SocketEngine</name>
+    <message>
+        <location filename="../src/network/socket/qsocks5socketengine.cpp" line="+710"/>
+        <source>Network operation timed out</source>
+        <translation>Časový limit pro síťovou operaci byl překročen</translation>
+    </message>
+    <message>
+        <location line="-773"/>
+        <source>Connection to proxy closed prematurely</source>
+        <translation>Proxy server předčasně ukončil spojení</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <source>Proxy authentication failed: %1</source>
+        <translation>Autentizace u proxy serveru se nezdařila: %1</translation>
+    </message>
+    <message>
+        <location line="-1"/>
+        <source>Proxy authentication failed</source>
+        <translation>Autentizace u proxy serveru se nezdařila</translation>
+    </message>
+    <message>
+        <location line="+29"/>
+        <source>General SOCKSv5 server failure</source>
+        <translation>Všeobecná chyba při spojení s SOCKSv5 serverem</translation>
+    </message>
+    <message>
+        <location line="+33"/>
+        <source>Unknown SOCKSv5 proxy error code 0x%1</source>
+        <translation>Byl obdržen neznámý chybový kód od SOCKSv5 proxy serveru: 0x%1</translation>
+    </message>
+    <message>
+        <location line="-29"/>
+        <source>Connection not allowed by SOCKSv5 server</source>
+        <translation>SOCKSv5 server odmítl spojení</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>SOCKSv5 command not supported</source>
+        <translation>Tento SOCKSv5 příkaz není podporován</translation>
+    </message>
+    <message>
+        <location line="-70"/>
+        <source>Connection to proxy timed out</source>
+        <translation>Při spojení s proxy serverem byl překročen časový limit</translation>
+    </message>
+    <message>
+        <location line="-5"/>
+        <source>Proxy host not found</source>
+        <translation>Proxy server se nepodařilo najit</translation>
+    </message>
+    <message>
+        <location line="+71"/>
+        <source>TTL expired</source>
+        <translation>TTL uplynul</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Address type not supported</source>
+        <translation>Tento typ adresy není podporován</translation>
+    </message>
+    <message>
+        <location line="-87"/>
+        <source>Connection to proxy refused</source>
+        <translation>Proxy server odmítl navázání spojení</translation>
+    </message>
+    <message>
+        <location line="+40"/>
+        <source>SOCKS version 5 protocol error</source>
+        <translation>Chyba protokolu (SOCKS verze 5)</translation>
+    </message>
+</context>
+<context>
+    <name>QSoftKeyManager</name>
+    <message>
+        <location filename="../src/gui/kernel/qsoftkeymanager.cpp" line="+78"/>
+        <source>Ok</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Select</source>
+        <translation>Vybrat</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Done</source>
+        <translation>Hotovo</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Options</source>
+        <translation>Volby</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+    <message>
+        <location line="+151"/>
+        <source>Exit</source>
+        <translation>Ukončit</translation>
+    </message>
+</context>
+<context>
+    <name>QSpinBox</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/rangecontrols.cpp" line="-567"/>
+        <source>Less</source>
+        <translation>Méně</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>More</source>
+        <translation>Více</translation>
+    </message>
+</context>
+<context>
+    <name>QSql</name>
+    <message>
+        <location filename="../src/qt3support/sql/q3sqlmanager_p.cpp" line="+893"/>
+        <location line="+16"/>
+        <location line="+36"/>
+        <source>No</source>
+        <translation>Ne</translation>
+    </message>
+    <message>
+        <location line="-53"/>
+        <location line="+16"/>
+        <location line="+36"/>
+        <source>Yes</source>
+        <translation>Ano</translation>
+    </message>
+    <message>
+        <location line="-34"/>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+    <message>
+        <location line="-20"/>
+        <source>Delete</source>
+        <translation>Delete</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Insert</source>
+        <translation>Vložit</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Update</source>
+        <translation>Obnovit</translation>
+    </message>
+    <message>
+        <location line="-12"/>
+        <source>Delete this record?</source>
+        <translation>Smazat tento zápis?</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Save edits?</source>
+        <translation>Uložit změny?</translation>
+    </message>
+    <message>
+        <location line="+35"/>
+        <source>Confirm</source>
+        <translation>Potvrdit</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Cancel your edits?</source>
+        <translation>Zrušit změny?</translation>
+    </message>
+</context>
+<context>
+    <name>QSslSocket</name>
+    <message>
+        <location filename="../src/network/ssl/qsslsocket_openssl.cpp" line="+362"/>
+        <source>Error creating SSL session: %1</source>
+        <translation>Nepodařilo se vytvořit sezení SSL: %1</translation>
+    </message>
+    <message>
+        <location line="-15"/>
+        <source>Error creating SSL session, %1</source>
+        <translation>Nepodařilo se vytvořit sezení SSL, %1</translation>
+    </message>
+    <message>
+        <location line="-46"/>
+        <source>Cannot provide a certificate with no key, %1</source>
+        <translation>Bez klíče nelze poskytnout žádné osvědčení k volnému použití, %1</translation>
+    </message>
+    <message>
+        <location line="+245"/>
+        <source>Unable to write data: %1</source>
+        <translation>Data se nepodařilo zapsat: %1</translation>
+    </message>
+    <message>
+        <location line="+215"/>
+        <source>Error during SSL handshake: %1</source>
+        <translation>Během startu SSL protokolu se vyskytla chyba: %1</translation>
+    </message>
+    <message>
+        <location line="-453"/>
+        <source>Error loading local certificate, %1</source>
+        <translation>Nepodařilo se nahrát místní osvědčení, %1</translation>
+    </message>
+    <message>
+        <location line="-23"/>
+        <source>Invalid or empty cipher list (%1)</source>
+        <translation>Neplatný či prázdný seznam se šifrovacími klíči (%1)</translation>
+    </message>
+    <message>
+        <location line="+42"/>
+        <source>Private key does not certificate public key, %1</source>
+        <translation>Vystavení osvědčení k veřejnému klíči přes soukromý klíč se nezdařilo, %1</translation>
+    </message>
+    <message>
+        <location line="-67"/>
+        <source>Error creating SSL context (%1)</source>
+        <translation>Nepodařilo se vytvořit žádný kontext SSL (%1)</translation>
+    </message>
+    <message>
+        <location line="+405"/>
+        <source>Error while reading: %1</source>
+        <translation>Při čtení se vyskytla chyba: %1</translation>
+    </message>
+    <message>
+        <location line="-345"/>
+        <source>Error loading private key, %1</source>
+        <translation>Soukromý klíč se nepodařilo nahrát, %1</translation>
+    </message>
+</context>
+<context>
+    <name>QStateMachine</name>
+    <message>
+        <location filename="../src/corelib/statemachine/qstatemachine.cpp" line="+998"/>
+        <source>Missing initial state in compound state &apos;%1&apos;</source>
+        <translation>Chybí počáteční stav složeného stavu &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Missing default state in history state &apos;%1&apos;</source>
+        <translation>Chybí výchozí stav ve vývoji stavu &apos;%1&apos;</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>No common ancestor for targets and source of transition from state &apos;%1&apos;</source>
+        <translation>Cíl a zdroj přechodu ze stavu &apos;%1&apos; nemají žádný společný původ</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Unknown error</source>
+        <translation>Neznámá chyba</translation>
+    </message>
+</context>
+<context>
+    <name>QSystemSemaphore</name>
+    <message>
+        <location filename="../src/corelib/kernel/qsystemsemaphore_unix.cpp" line="-46"/>
+        <source>%1: does not exist</source>
+        <translation>%1: Neexistuje</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <source>%1: already exists</source>
+        <translation>%1: Již existuje</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="+73"/>
+        <source>%1: unknown error %2</source>
+        <translation>%1: Neznámá chyba %2</translation>
+    </message>
+    <message>
+        <location line="-17"/>
+        <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="-3"/>
+        <source>%1: permission denied</source>
+        <translation>%1: Přístup odepřen</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <location filename="../src/corelib/kernel/qsystemsemaphore_win.cpp" line="-4"/>
+        <source>%1: out of resources</source>
+        <translation>%1: Nejsou již použitelné zdroje</translation>
+    </message>
+</context>
+<context>
+    <name>QTDSDriver</name>
+    <message>
+        <location filename="../src/sql/drivers/tds/qsql_tds.cpp" line="+584"/>
+        <source>Unable to open connection</source>
+        <translation>Nepodařilo se otevřít spojení s databází</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Unable to use database</source>
+        <translation>Datatbázi se nepodařilo použít</translation>
+    </message>
+</context>
+<context>
+    <name>QTabBar</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="-326"/>
+        <source>Scroll Left</source>
+        <translation>Projíždět doleva</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>Scroll Right</source>
+        <translation>Projíždět doprava</translation>
+    </message>
+</context>
+<context>
+    <name>QTcpServer</name>
+    <message>
+        <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
+        <source>Operation on socket is not supported</source>
+        <translation>Tato zásuvková (socket) operace není podporována</translation>
+    </message>
+</context>
+<context>
+    <name>QTextControl</name>
+    <message>
+        <location filename="../src/gui/text/qtextcontrol.cpp" line="+2013"/>
+        <source>Cu&amp;t</source>
+        <translation>Vyj&amp;mout</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Kopírovat</translation>
+    </message>
+    <message>
+        <location line="-9"/>
+        <source>&amp;Redo</source>
+        <translation>&amp;Znovu</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>&amp;Undo</source>
+        <translation>&amp;Zpět</translation>
+    </message>
+    <message>
+        <location line="+24"/>
+        <source>&amp;Paste</source>
+        <translation>&amp;Vložit</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Delete</source>
+        <translation>Smazat</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Select All</source>
+        <translation>Vybrat vše</translation>
+    </message>
+    <message>
+        <location line="-16"/>
+        <source>Copy &amp;Link Location</source>
+        <translation>&amp;Kopírovat adresu odkazu</translation>
+    </message>
+</context>
+<context>
+    <name>QToolButton</name>
+    <message>
+        <location filename="../src/plugins/accessible/widgets/simplewidgets.cpp" line="+312"/>
+        <location line="+8"/>
+        <source>Open</source>
+        <translation>Otevřít</translation>
+    </message>
+    <message>
+        <location line="-10"/>
+        <location line="+6"/>
+        <source>Press</source>
+        <translation>Stisknout</translation>
+    </message>
+</context>
+<context>
+    <name>QUdpSocket</name>
+    <message>
+        <location filename="../src/network/socket/qudpsocket.cpp" line="+179"/>
+        <source>This platform does not support IPv6</source>
+        <translation>Tato patforma nepodpotuje IPv6</translation>
+    </message>
+</context>
+<context>
+    <name>QUndoGroup</name>
+    <message>
+        <location filename="../src/gui/util/qundogroup.cpp" line="+413"/>
+        <source>Redo</source>
+        <translation>Znovu</translation>
+    </message>
+    <message>
+        <location line="-28"/>
+        <source>Undo</source>
+        <translation>Zpět</translation>
+    </message>
+</context>
+<context>
+    <name>QUndoModel</name>
+    <message>
+        <location filename="../src/gui/util/qundoview.cpp" line="+101"/>
+        <source>&lt;empty&gt;</source>
+        <translation>&lt;prázdný&gt;</translation>
+    </message>
+</context>
+<context>
+    <name>QUndoStack</name>
+    <message>
+        <location filename="../src/gui/util/qundostack.cpp" line="+859"/>
+        <source>Redo</source>
+        <translation>Znovu</translation>
+    </message>
+    <message>
+        <location line="-27"/>
+        <source>Undo</source>
+        <translation>Zpět</translation>
+    </message>
+</context>
+<context>
+    <name>QUnicodeControlCharacterMenu</name>
+    <message>
+        <location filename="../src/gui/text/qtextcontrol.cpp" line="+906"/>
+        <source>RLE Start of right-to-left embedding</source>
+        <translation>RLE Začátek zapuštění zprava doleva (right-to-left embedding)</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>ZWSP Zero width space</source>
+        <translation>ZWSP Prostor s nulovou šířkou (Zero width space)</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Insert Unicode control character</source>
+        <translation>Vložit kontrolní znak Unicode</translation>
+    </message>
+    <message>
+        <location line="-8"/>
+        <source>LRO Start of left-to-right override</source>
+        <translation>LRO Začátek zrušení zleva doprava (left-to-right override)</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>LRE Start of left-to-right embedding</source>
+        <translation>LRE Začátek zapuštění zleva doprava (right-to-left embedding)</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <source>RLM Right-to-left mark</source>
+        <translation>RLM Značka zprava doleva (Right-to-left mark)</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>PDF Pop directional formatting</source>
+        <translation>PDF Vsunout směrové formátování (Pop directional formatting)</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>ZWNJ Zero width non-joiner</source>
+        <translation>ZWNJ Nespojovač s nulovou šířkou (Zero width non-joiner)</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>RLO Start of right-to-left override</source>
+        <translation>RLO Začátek zrušení zprava doleva (right-to-left override)</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>ZWJ Zero width joiner</source>
+        <translation>ZWJ Spojovač s nulovou šířkou (Zero width joiner)</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>LRM Left-to-right mark</source>
+        <translation>LRM Značka zleva doprava (Left-to-right mark)</translation>
+    </message>
+</context>
+<context>
+    <name>QWebFrame</name>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+730"/>
+        <source>Request blocked</source>
+        <translation>Požadavek byl odmítnut</translation>
+    </message>
+    <message>
+        <location line="-19"/>
+        <source>Request cancelled</source>
+        <translation>Požadavek byl zrušen</translation>
+    </message>
+    <message>
+        <location line="+26"/>
+        <source>Cannot show URL</source>
+        <translation>Adresu (URL) nelze ukázat</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Frame load interrupted by policy change</source>
+        <translation>Nahrání rámce bylo přerušeno změnou směrnice</translation>
+    </message>
+    <message>
+        <source>Frame load interruped by policy change</source>
+        <translation type="obsolete">Nahrání rámce bylo přerušeno změnou směrnice</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>File does not exist</source>
+        <translation>Soubor neexistuje</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Cannot show mimetype</source>
+        <translation>Tento mime typ nelze ukázat</translation>
+    </message>
+</context>
+<context>
+    <name>QWebPage</name>
+    <message>
+        <source>Cut</source>
+        <translation type="obsolete">Vyjmout</translation>
+    </message>
+    <message>
+        <source>LTR</source>
+        <translation type="obsolete">Zleva doprava</translation>
+    </message>
+    <message>
+        <source>RTL</source>
+        <translation type="obsolete">Zprava doleva</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+61"/>
+        <source>Top</source>
+        <translation>Začátek</translation>
+    </message>
+    <message>
+        <source>Bold</source>
+        <translation type="obsolete">Tučné</translation>
+    </message>
+    <message>
+        <source>Copy</source>
+        <translation type="obsolete">Kopírovat</translation>
+    </message>
+    <message>
+        <source>Stop</source>
+        <translation type="obsolete">Ukončit</translation>
+    </message>
+    <message>
+        <source>Open Frame</source>
+        <translation type="obsolete">Otevřít rámec</translation>
+    </message>
+    <message>
+        <source>Open Image</source>
+        <translation type="obsolete">Vyobrazení otevřít v novém okně</translation>
+    </message>
+    <message>
+        <source>Fonts</source>
+        <translation type="obsolete">Písma</translation>
+    </message>
+    <message>
+        <source>Paste</source>
+        <translation type="obsolete">Vložit</translation>
+    </message>
+    <message>
+        <source>Reset</source>
+        <translation type="obsolete">Vrátit</translation>
+    </message>
+    <message>
+        <source>Inspect</source>
+        <translation type="obsolete">Provést prohlídku</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+2213"/>
+        <source>Select to the start of the block</source>
+        <translation>Vybrat až po začátek bloku</translation>
+    </message>
+    <message>
+        <location line="-36"/>
+        <source>Move the cursor to the end of the block</source>
+        <translation>Ukazatel polohy posunout až na konec bloku</translation>
+    </message>
+    <message>
+        <location line="-469"/>
+        <source>JavaScript Alert - %1</source>
+        <translation>Upozornění od JavaScriptu - %1</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>JavaScript Confirm - %1</source>
+        <translation>Potvrzení od JavaScriptu - %1</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>JavaScript Prompt - %1</source>
+        <translation>Výzva od JavaScriptu - %1</translation>
+    </message>
+    <message>
+        <location line="+25"/>
+        <source>JavaScript Problem - %1</source>
+        <translation>Potíže s JavaScriptem - %1</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>The script on this page appears to have a problem. Do you want to stop the script?</source>
+        <translation>Vypadá to na to, že skript na této straně má potíže. Chcete tento skript zastavit?</translation>
+    </message>
+    <message>
+        <location line="+419"/>
+        <source>Select all</source>
+        <translation>Vybrat vše</translation>
+    </message>
+    <message>
+        <location line="+21"/>
+        <source>Select to the start of the line</source>
+        <translation>Vybrat až po začátek řádku</translation>
+    </message>
+    <message>
+        <location line="+54"/>
+        <source>Insert a new paragraph</source>
+        <translation>Vložit nový odstavec</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Insert a new line</source>
+        <translation>Vložit nový řádek</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Paste and Match Style</source>
+        <translation>Vložit a odpovídat stylu</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Remove formatting</source>
+        <translation>Odstranit formátování</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Strikethrough</source>
+        <translation>Přeškrtnuto</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Subscript</source>
+        <translation>Dolní index</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Superscript</source>
+        <translation>Horní index</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Insert Bulleted List</source>
+        <translation>Vložit seznam s odrážkami</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Insert Numbered List</source>
+        <translation>Vložit číslovaný seznam</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Indent</source>
+        <translation>Odsadit</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Outdent</source>
+        <translation>Zrušit odsazení</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Center</source>
+        <translation>Na střed</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Justify</source>
+        <translation>Do bloku</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Align Left</source>
+        <translation>Zarovnat vlevo</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>Align Right</source>
+        <translation>Zarovnat vpravo</translation>
+    </message>
+    <message>
+        <source>Look Up In Dictionary</source>
+        <translation type="obsolete">Podívat se do slovníku</translation>
+    </message>
+    <message>
+        <source>Search The Web</source>
+        <translation type="obsolete">Hledat na síti</translation>
+    </message>
+    <message>
+        <source>Check Spelling While Typing</source>
+        <translation type="obsolete">Kontrolovat pravopis během psaní</translation>
+    </message>
+    <message>
+        <source>Add To Dictionary</source>
+        <translation type="obsolete">Přidat do slovníku</translation>
+    </message>
+    <message>
+        <location line="-85"/>
+        <source>Delete to the start of the word</source>
+        <translation>Smazat až po začátek slova</translation>
+    </message>
+    <message>
+        <source>Recent searches</source>
+        <translation type="obsolete">Dosavadní hledané výrazy</translation>
+    </message>
+    <message>
+        <location line="-69"/>
+        <source>Move the cursor to the next word</source>
+        <translation>Ukazatel polohy posunout k následujícímu slovu</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Move the cursor to the next line</source>
+        <translation>Ukazatel polohy posunout k následujícímu řádku</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+9"/>
+        <source>Scroll down</source>
+        <translation>Projíždět dolů</translation>
+    </message>
+    <message>
+        <location line="-12"/>
+        <source>Scroll here</source>
+        <translation>Projíždět až sem</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Scroll left</source>
+        <translation>Projíždět doleva</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+12"/>
+        <source>Move the cursor to the start of the block</source>
+        <translation>Ukazatel polohy posunout na začátek bloku</translation>
+    </message>
+    <message>
+        <source>Text Direction</source>
+        <translation type="obsolete">Směr psaní</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="-7"/>
+        <source>Bottom</source>
+        <translation>Konec</translation>
+    </message>
+    <message>
+        <source>Ignore</source>
+        <translation type="obsolete">Nevšímat si</translation>
+    </message>
+    <message>
+        <source>Italic</source>
+        <translation type="obsolete">Kurzívní</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="-3"/>
+        <source>Move the cursor to the end of the line</source>
+        <translation>Ukazatel polohy posunout na konec řádku</translation>
+    </message>
+    <message>
+        <location line="-3"/>
+        <source>Move the cursor to the start of the line</source>
+        <translation>Ukazatel polohy posunout na začátek řádku</translation>
+    </message>
+    <message>
+        <source>Reload</source>
+        <translation type="obsolete">Nahrát znovu</translation>
+    </message>
+    <message>
+        <source>Submit</source>
+        <translation type="obsolete">Poslat</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="+167"/>
+        <source>Web Inspector - %2</source>
+        <translation>Web Inspektor - %2</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+3"/>
+        <source>Page up</source>
+        <translation>O stranu nahoru</translation>
+    </message>
+    <message>
+        <source>Spelling</source>
+        <translation type="obsolete">Pravopis</translation>
+    </message>
+    <message>
+        <source>Outline</source>
+        <translation type="obsolete">Obrys</translation>
+    </message>
+    <message>
+        <source>Check Grammar With Spelling</source>
+        <translation type="obsolete">Kontrolovat mluvnici společně s pravopisem</translation>
+    </message>
+    <message>
+        <source>No file selected</source>
+        <translation type="obsolete">Nebyl vybrán žádný soubor</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="+42"/>
+        <source>Submit</source>
+        <comment>default label for Submit buttons in forms on web pages</comment>
+        <translation>Poslat</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Reset</source>
+        <comment>default label for Reset buttons in forms on web pages</comment>
+        <translation>Vrátit</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>This is a searchable index. Enter search keywords: </source>
+        <comment>text that appears at the start of nearly-obsolete web pages in the form of a &apos;searchable index&apos;</comment>
+        <translation>Tento rejstřík má funkci hledání. Zadejte nějaký hledaný výraz:</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Choose File</source>
+        <comment>title for file button used in HTML forms</comment>
+        <translation>Vybrat soubor</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>No file selected</source>
+        <comment>text to display in file button used in HTML forms when no file is selected</comment>
+        <translation>Nebyl vybrán žádný soubor</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Open in New Window</source>
+        <comment>Open in New Window context menu item</comment>
+        <translation>Otevřít v novém okně</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Save Link...</source>
+        <comment>Download Linked File context menu item</comment>
+        <translation>Uložit odkaz...</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Copy Link</source>
+        <comment>Copy Link context menu item</comment>
+        <translation>Kopírovat adresu odkazu</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Open Image</source>
+        <comment>Open Image in New Window context menu item</comment>
+        <translation>Vyobrazení otevřít v novém okně</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Save Image</source>
+        <comment>Download Image context menu item</comment>
+        <translation>Uložit vyobrazení</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Copy Image</source>
+        <comment>Copy Link context menu item</comment>
+        <translation>Kopírovat vyobrazení</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Open Frame</source>
+        <comment>Open Frame in New Window context menu item</comment>
+        <translation>Otevřít rámec</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Copy</source>
+        <comment>Copy context menu item</comment>
+        <translation>Kopírovat</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Go Back</source>
+        <comment>Back context menu item</comment>
+        <translation>Jít zpět</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Go Forward</source>
+        <comment>Forward context menu item</comment>
+        <translation>Jít dopředu</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Stop</source>
+        <comment>Stop context menu item</comment>
+        <translation>Zastavit</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Reload</source>
+        <comment>Reload context menu item</comment>
+        <translation>Nahrát znovu</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Cut</source>
+        <comment>Cut context menu item</comment>
+        <translation>Vyjmout</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Paste</source>
+        <comment>Paste context menu item</comment>
+        <translation>Vložit</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>No Guesses Found</source>
+        <comment>No Guesses Found context menu item</comment>
+        <translation>Nebyly nalezeny žádné návrhy</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Ignore</source>
+        <comment>Ignore Spelling context menu item</comment>
+        <translation>Přehlížet</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Add To Dictionary</source>
+        <comment>Learn Spelling context menu item</comment>
+        <translation>Přidat do slovníku</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Search The Web</source>
+        <comment>Search The Web context menu item</comment>
+        <translation>Hledat na síti</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Look Up In Dictionary</source>
+        <comment>Look Up in Dictionary context menu item</comment>
+        <translation>Podívat se do slovníku</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Open Link</source>
+        <comment>Open Link context menu item</comment>
+        <translation>Otevřít adresu odkazu</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Ignore</source>
+        <comment>Ignore Grammar context menu item</comment>
+        <translation>Přehlížet</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Spelling</source>
+        <comment>Spelling and Grammar context sub-menu item</comment>
+        <translation>Pravopis</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Show Spelling and Grammar</source>
+        <comment>menu item title</comment>
+        <translation>Ukázat pravopis a mluvnici</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>Hide Spelling and Grammar</source>
+        <comment>menu item title</comment>
+        <translation>Skrýt pravopis a mluvnici</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Check Spelling</source>
+        <comment>Check spelling context menu item</comment>
+        <translation>Ověření pravopisu</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Check Spelling While Typing</source>
+        <comment>Check spelling while typing context menu item</comment>
+        <translation>Ověřovat pravopis během psaní</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Check Grammar With Spelling</source>
+        <comment>Check grammar with spelling context menu item</comment>
+        <translation>Ověřovat mluvnici společně s pravopisem</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Fonts</source>
+        <comment>Font context sub-menu item</comment>
+        <translation>Písma</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Bold</source>
+        <comment>Bold context menu item</comment>
+        <translation>Tučné</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Italic</source>
+        <comment>Italic context menu item</comment>
+        <translation>Kurzíva</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Underline</source>
+        <comment>Underline context menu item</comment>
+        <translation>Podtržení</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Outline</source>
+        <comment>Outline context menu item</comment>
+        <translation>Obrys</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Direction</source>
+        <comment>Writing direction context sub-menu item</comment>
+        <translation>Směr</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Text Direction</source>
+        <comment>Text direction context sub-menu item</comment>
+        <translation>Směr psaní</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Default</source>
+        <comment>Default writing direction context menu item</comment>
+        <translation>Výchozí</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Left to Right</source>
+        <comment>Left to Right context menu item</comment>
+        <translation>Zleva doprava</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Right to Left</source>
+        <comment>Right to Left context menu item</comment>
+        <translation>Zprava doleva</translation>
+    </message>
+    <message>
+        <location line="+105"/>
+        <source>Loading...</source>
+        <comment>Media controller status message when the media is loading</comment>
+        <translation>Nahrává se...</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Live Broadcast</source>
+        <comment>Media controller status message when watching a live broadcast</comment>
+        <translation>Živý přenos</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Audio Element</source>
+        <comment>Media controller element</comment>
+        <translation>Zvukový prvek</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Video Element</source>
+        <comment>Media controller element</comment>
+        <translation>Videoprvek</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Mute Button</source>
+        <comment>Media controller element</comment>
+        <translation>Tlačítko pro ztlumení</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unmute Button</source>
+        <comment>Media controller element</comment>
+        <translation>Tlačítko pro zrušení ztlumení</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Play Button</source>
+        <comment>Media controller element</comment>
+        <translation>Tlačítko pro přehrávání</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Pause Button</source>
+        <comment>Media controller element</comment>
+        <translation>Tlačítko pro pozastavení</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Slider</source>
+        <comment>Media controller element</comment>
+        <translation>Posuvník</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Slider Thumb</source>
+        <comment>Media controller element</comment>
+        <translation>Palec posuvníku</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rewind Button</source>
+        <comment>Media controller element</comment>
+        <translation>Tlačítko pro přetočení</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Return to Real-time Button</source>
+        <comment>Media controller element</comment>
+        <translation>Tlačítko pro návrat ke skutečnému času</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Elapsed Time</source>
+        <comment>Media controller element</comment>
+        <translation>Uplynulý čas</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Remaining Time</source>
+        <comment>Media controller element</comment>
+        <translation>Zbývající čas</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Status Display</source>
+        <comment>Media controller element</comment>
+        <translation>Údaj o stavu</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Fullscreen Button</source>
+        <comment>Media controller element</comment>
+        <translation>Tlačítko pro zobrazení na celou obrazovku</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Seek Forward Button</source>
+        <comment>Media controller element</comment>
+        <translation>Tlačítko pro hledání dopředu</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Seek Back Button</source>
+        <comment>Media controller element</comment>
+        <translation>Tlačítko pro hledání dozadu</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Audio element playback controls and status display</source>
+        <comment>Media controller element</comment>
+        <translation>Řízení přehrávání zvuku a zobrazení stavu</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Video element playback controls and status display</source>
+        <comment>Media controller element</comment>
+        <translation>Řízení přehrávání videa a zobrazení stavu</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Mute audio tracks</source>
+        <comment>Media controller element</comment>
+        <translation>Ztlumit zvukové stopy</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Unmute audio tracks</source>
+        <comment>Media controller element</comment>
+        <translation>Zrušit ztlumení zvukových stop</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Begin playback</source>
+        <comment>Media controller element</comment>
+        <translation>Začít přehrávání</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Pause playback</source>
+        <comment>Media controller element</comment>
+        <translation>Pozastavit přehrávání</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Movie time scrubber</source>
+        <comment>Media controller element</comment>
+        <translation>Čas přehrávání</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Movie time scrubber thumb</source>
+        <comment>Media controller element</comment>
+        <translation>Palec pro nastavení času přehrávání</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Rewind movie</source>
+        <comment>Media controller element</comment>
+        <translation>Přetočit film zpět</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Return streaming movie to real-time</source>
+        <comment>Media controller element</comment>
+        <translation>Vrátit film na skutečný čas</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Current movie time</source>
+        <comment>Media controller element</comment>
+        <translation>Čas přehrávání filmu</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Remaining movie time</source>
+        <comment>Media controller element</comment>
+        <translation>Zbývající čas z přehrávání filmu</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Current movie status</source>
+        <comment>Media controller element</comment>
+        <translation>Stav filmu</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Play movie in full-screen mode</source>
+        <comment>Media controller element</comment>
+        <translation>Přehrávat film v režimu zobrazení na celou obrazovku</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Seek quickly back</source>
+        <comment>Media controller element</comment>
+        <translation>Rychlé zpětné hledání</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Seek quickly forward</source>
+        <comment>Media controller element</comment>
+        <translation>Rychlé dopředné hledání</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Indefinite time</source>
+        <comment>Media time description</comment>
+        <translation>Neomezený čas</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>%1 days %2 hours %3 minutes %4 seconds</source>
+        <comment>Media time description</comment>
+        <translation>%1 dny %2 hodiny %3 minuty %4 sekundy</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>%1 hours %2 minutes %3 seconds</source>
+        <comment>Media time description</comment>
+        <translation>%1 hodiny %2 minuty %3 sekundy</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>%1 minutes %2 seconds</source>
+        <comment>Media time description</comment>
+        <translation>%1 minuty %2 sekundy</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>%1 seconds</source>
+        <comment>Media time description</comment>
+        <translation>%1 sekundy</translation>
+    </message>
+    <message>
+        <source>LTR</source>
+        <comment>Left to Right context menu item</comment>
+        <translation type="obsolete">Zleva doprava</translation>
+    </message>
+    <message>
+        <source>RTL</source>
+        <comment>Right to Left context menu item</comment>
+        <translation type="obsolete">Zprava doleva</translation>
+    </message>
+    <message>
+        <location line="-210"/>
+        <source>Inspect</source>
+        <comment>Inspect Element context menu item</comment>
+        <translation>Provést prohlídku</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>No recent searches</source>
+        <comment>Label for only item in menu that appears when clicking on the search field image, when no searches have been performed</comment>
+        <translation>Neexistují žádné naposledy hledané výrazy</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Recent searches</source>
+        <comment>label for first item in the menu that appears when clicking on the search field image, used as embedded menu title</comment>
+        <translation>Dosavadní hledané výrazy</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Clear recent searches</source>
+        <comment>menu item in Recent Searches menu that empties menu&apos;s contents</comment>
+        <translation>Smazat naposledy hledané výrazy</translation>
+    </message>
+    <message>
+        <location line="+75"/>
+        <source>Unknown</source>
+        <comment>Unknown filesize FTP directory listing item</comment>
+        <translation>Neznámý</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>%1 (%2x%3 pixels)</source>
+        <comment>Title string for images</comment>
+        <translation>%1 (%2x%3 pixelů)</translation>
+    </message>
+    <message>
+        <source>Save Image</source>
+        <translation type="obsolete">Uložit vyobrazení</translation>
+    </message>
+    <message>
+        <source>Save Link...</source>
+        <translation type="obsolete">Uložit odkaz...</translation>
+    </message>
+    <message>
+        <source>No recent searches</source>
+        <translation type="obsolete">Neexistují žádné naposledy hledané výrazy</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+1"/>
+        <source>Page right</source>
+        <translation>O stranu doprava</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+12"/>
+        <source>Move the cursor to the start of the document</source>
+        <translation>Ukazatel polohy posunout na začátek dokumentu</translation>
+    </message>
+    <message>
+        <location line="-30"/>
+        <source>Move the cursor to the next character</source>
+        <translation>Ukazatel polohy posunout k následujícímu znaku</translation>
+    </message>
+    <message>
+        <source>Copy Link</source>
+        <translation type="obsolete">Kopírovat adresu odkazu</translation>
+    </message>
+    <message>
+        <location line="+54"/>
+        <source>Select to the previous line</source>
+        <translation>Vybrat až po předchozí řádek</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Select to the previous word</source>
+        <translation>Vybrat až po předchozí slovo</translation>
+    </message>
+    <message>
+        <source>Check Spelling</source>
+        <translation type="obsolete">Kontrola pravopisu</translation>
+    </message>
+    <message>
+        <location line="-9"/>
+        <source>Select to the next character</source>
+        <translation>Vybrat až po následující znak</translation>
+    </message>
+    <message>
+        <source>Show Spelling and Grammar</source>
+        <translation type="obsolete">Ukázat pravopis a mluvnici</translation>
+    </message>
+    <message>
+        <location line="+39"/>
+        <source>Delete to the end of the word</source>
+        <translation>Smazat až po konec slova</translation>
+    </message>
+    <message>
+        <source>Direction</source>
+        <translation type="obsolete">Směr</translation>
+    </message>
+    <message>
+        <location line="-18"/>
+        <source>Select to the end of the line</source>
+        <translation>Vybrat až po začátek řádku</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="-307"/>
+        <source>Submit</source>
+        <comment>Submit (input element) alt text for &lt;input&gt; elements with no alt, title, or value</comment>
+        <translation>Poslat</translation>
+    </message>
+    <message>
+        <source>Choose File</source>
+        <translation type="obsolete">Vybrat soubor</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+3"/>
+        <source>Scroll up</source>
+        <translation>Projíždět nahoru</translation>
+    </message>
+    <message>
+        <source>Clear recent searches</source>
+        <translation type="obsolete">Smazat naposledy hledané výrazy</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+9"/>
+        <source>Select to the start of the document</source>
+        <translation>Vybrat až po začátek dokumentu</translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation type="obsolete">Výchozí</translation>
+    </message>
+    <message>
+        <source>Underline</source>
+        <translation type="obsolete">Podtrhnout</translation>
+    </message>
+    <message>
+        <location line="-66"/>
+        <source>Move the cursor to the previous character</source>
+        <translation>Ukazatel polohy posunout k předchozímu znaku</translation>
+    </message>
+    <message>
+        <source>Copy Image</source>
+        <translation type="obsolete">Kopírovat vyobrazení</translation>
+    </message>
+    <message>
+        <location line="+69"/>
+        <source>Select to the end of the document</source>
+        <translation>Vybrat až po konec dokumentu</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Select to the end of the block</source>
+        <translation>Vybrat až po konec bloku</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="+1"/>
+        <source>Scroll right</source>
+        <translation>Projíždět doprava</translation>
+    </message>
+    <message>
+        <source>No Guesses Found</source>
+        <translation type="obsolete">Nebyly nalezeny žádné návrhy</translation>
+    </message>
+    <message>
+        <source>Open Link</source>
+        <translation type="obsolete">Otevřít adresu odkazu</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+406"/>
+        <source>Bad HTTP request</source>
+        <translation>Neplatný požadavek HTTP</translation>
+    </message>
+    <message>
+        <source>Unknown</source>
+        <translation type="obsolete">Neznámý</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="-57"/>
+        <source>Move the cursor to the previous word</source>
+        <translation>Ukazatel polohy posunout k předchozímu slovu</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Move the cursor to the previous line</source>
+        <translation>Ukazatel polohy posunout na předchozí řádku</translation>
+    </message>
+    <message>
+        <source>%n file(s)</source>
+        <translation type="obsolete">%n soubor(ů)</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="-9"/>
+        <source>Left edge</source>
+        <translation>Levý okraj</translation>
+    </message>
+    <message>
+        <source>Go Forward</source>
+        <translation type="obsolete">Jít dopředu</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Page down</source>
+        <translation>O stranu dolů</translation>
+    </message>
+    <message>
+        <location line="-1"/>
+        <source>Page left</source>
+        <translation>O stranu doleva</translation>
+    </message>
+    <message>
+        <source>This is a searchable index. Enter search keywords: </source>
+        <translation type="obsolete">Tento index má funkci hledání. Zadejte nějaký hledaný výraz:</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+27"/>
+        <source>Select to the previous character</source>
+        <translation>Vybrat až po předchozí znak</translation>
+    </message>
+    <message>
+        <source>Go Back</source>
+        <translation type="obsolete">Jít zpět</translation>
+    </message>
+    <message>
+        <source>Open in New Window</source>
+        <translation type="obsolete">Otevřít v novém okně</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/ScrollbarQt.cpp" line="-3"/>
+        <source>Right edge</source>
+        <translation>Pravý okraj</translation>
+    </message>
+    <message>
+        <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="-9"/>
+        <source>Move the cursor to the end of the document</source>
+        <translation>Ukazatel polohy posunout na konec dokumentu</translation>
+    </message>
+    <message>
+        <source>Hide Spelling and Grammar</source>
+        <translation type="obsolete">Skrýt pravopis a mluvnici</translation>
+    </message>
+    <message>
+        <source>%1 (%2x%3 pixels)</source>
+        <translation type="obsolete">%1 (%2x%3 pixelů)</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>Select to the next word</source>
+        <translation>Vybrat až po následující slovo</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Select to the next line</source>
+        <translation>Vybrat až po následující řádek</translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../src/3rdparty/webkit/WebCore/platform/qt/FileChooserQt.cpp" line="+45"/>
+        <source>%n file(s)</source>
+        <comment>number of chosen file</comment>
+        <translation>
+            <numerusform>%n soubor(ů)</numerusform>
+            <numerusform></numerusform>
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>QWhatsThisAction</name>
+    <message>
+        <location filename="../src/gui/kernel/qwhatsthis.cpp" line="+527"/>
+        <source>What&apos;s This?</source>
+        <translation>Co je toto?</translation>
+    </message>
+</context>
+<context>
+    <name>QWidget</name>
+    <message>
+        <location filename="../src/gui/kernel/qwidget.cpp" line="+5672"/>
+        <source>*</source>
+        <translation>*</translation>
+    </message>
+</context>
+<context>
+    <name>QWizard</name>
+    <message>
+        <location filename="../src/gui/dialogs/qwizard.cpp" line="+659"/>
+        <source>Done</source>
+        <translation>Hotovo</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Help</source>
+        <translation>Nápověda</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>&amp;Help</source>
+        <translation>&amp;Nápověda</translation>
+    </message>
+    <message>
+        <location line="-8"/>
+        <source>&amp;Next</source>
+        <translation>&amp;Další</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Cancel</source>
+        <translation>Zrušit</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <source>Commit</source>
+        <translation>Použít</translation>
+    </message>
+    <message>
+        <location line="-5"/>
+        <source>Continue</source>
+        <translation>Pokračovat</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>&amp;Finish</source>
+        <translation>Do&amp;končit</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <source>&amp;Next &gt;</source>
+        <translation>&amp;Další &gt;</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Go Back</source>
+        <translation>Jít zpět</translation>
+    </message>
+    <message>
+        <location line="+0"/>
+        <source>&lt; &amp;Back</source>
+        <translation>&lt; &amp;Zpět</translation>
+    </message>
+</context>
+<context>
+    <name>QWorkspace</name>
+    <message>
+        <location filename="../src/gui/widgets/qworkspace.cpp" line="+1090"/>
+        <source>&amp;Move</source>
+        <translation>Po&amp;sunout</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>&amp;Size</source>
+        <translation>Změnit &amp;velikost</translation>
+    </message>
+    <message>
+        <location line="-978"/>
+        <source>Close</source>
+        <translation>Zavřít</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Minimize</source>
+        <translation>Zmenšit</translation>
+    </message>
+    <message>
+        <location line="+988"/>
+        <source>Stay on &amp;Top</source>
+        <translation>Zůstat v &amp;popředí</translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>&amp;Close</source>
+        <translation>&amp;Zavřít</translation>
+    </message>
+    <message>
+        <location line="+790"/>
+        <location line="+60"/>
+        <source>%1 - [%2]</source>
+        <translation>%1 - [%2]</translation>
+    </message>
+    <message>
+        <location line="-841"/>
+        <location line="+1059"/>
+        <source>Sh&amp;ade</source>
+        <translation>&amp;Navinout</translation>
+    </message>
+    <message>
+        <location line="-1076"/>
+        <source>&amp;Restore</source>
+        <translation>&amp;Obnovit</translation>
+    </message>
+    <message>
+        <location line="+1072"/>
+        <source>&amp;Unshade</source>
+        <translation>&amp;Odvinout</translation>
+    </message>
+    <message>
+        <location line="-1068"/>
+        <source>Mi&amp;nimize</source>
+        <translation>&amp;Zmenšit</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Ma&amp;ximize</source>
+        <translation>Zvě&amp;tšit</translation>
+    </message>
+    <message>
+        <location line="-978"/>
+        <source>Restore Down</source>
+        <translation>Obnovit</translation>
+    </message>
+</context>
+<context>
+    <name>QXml</name>
+    <message>
+        <location filename="../src/xml/sax/qxml.cpp" line="+78"/>
+        <source>unparsed entity reference in wrong context</source>
+        <translation>používán nevyhodnocený odkaz na entitu v nesprávné souvislosti</translation>
+    </message>
+    <message>
+        <location line="-1"/>
+        <source>external parsed general entity reference not allowed in DTD</source>
+        <translation>v DTD nejsou dovoleny žádné odkazy na vnější obecnou entitu</translation>
+    </message>
+    <message>
+        <location line="-9"/>
+        <source>wrong value for standalone declaration</source>
+        <translation>nesprávná hodnota pro samostatné prohlášení</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>encoding declaration or standalone declaration expected while reading the XML declaration</source>
+        <translation>chybějící prohlášení kódování nebo prohlášení samostatnosti při čtení prohlášení XML</translation>
+    </message>
+    <message>
+        <location line="-11"/>
+        <source>no error occurred</source>
+        <translation>žádná chyba</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>error occurred while parsing reference</source>
+        <translation>při vyhodnocení odkazu se vyskytla chyba</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <source>standalone declaration expected while reading the XML declaration</source>
+        <translation>chybějící prohlášení samostatnosti při čtení prohlášení XML</translation>
+    </message>
+    <message>
+        <location line="-4"/>
+        <source>invalid name for processing instruction</source>
+        <translation>neplatný název pro pokyn pro zpracování</translation>
+    </message>
+    <message>
+        <location line="-7"/>
+        <source>error triggered by consumer</source>
+        <translation>chyba spuštěná spotřebitelem</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>error occurred while parsing element</source>
+        <translation>při vyhodnocení prvku se vyskytla chyba</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>unexpected character</source>
+        <translation>neočekávaný znak</translation>
+    </message>
+    <message>
+        <location line="-2"/>
+        <source>tag mismatch</source>
+        <translation>Značky prvků nejsou vkládány správně</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>error occurred while parsing content</source>
+        <translation>při vyhodnocení obsahu se vyskytla chyba</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>error occurred while parsing comment</source>
+        <translation>při vyhodnocení poznámky se vyskytla chyba</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>internal general entity reference not allowed in DTD</source>
+        <translation>v DTD nejsou dovoleny žádné odkazy na vnitřní obecnou entitu</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>recursive entities</source>
+        <translation>rekurzivní entity</translation>
+    </message>
+    <message>
+        <location line="-18"/>
+        <source>more than one document type definition</source>
+        <translation>více definicí typu dokumentu</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>version expected while reading the XML declaration</source>
+        <translation>chybějící verze při čtení prohlášení XML</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>letter is expected</source>
+        <translation>na tomto místě je potřeba písmeno</translation>
+    </message>
+    <message>
+        <location line="-12"/>
+        <source>unexpected end of file</source>
+        <translation>neočekávaný konec souboru</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>external parsed general entity reference not allowed in attribute value</source>
+        <translation>v hodnotě vlastnosti nejsou dovoleny žádné odkazy na vnější obecnou entitu</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>error in the text declaration of an external entity</source>
+        <translation>Chyba v prohlášení textu vnější entity</translation>
+    </message>
+    <message>
+        <location line="-9"/>
+        <source>error occurred while parsing document type definition</source>
+        <translation>při vyhodnocení definice typu dokumentu se vyskytla chyba</translation>
+    </message>
+</context>
+<context>
+    <name>QXmlStream</name>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="+1800"/>
+        <source>Reference to unparsed entity &apos;%1&apos;.</source>
+        <translation>Odkaz na nevyhodnocenou entitu &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream.cpp" line="+1752"/>
+        <source>Unexpected character &apos;%1&apos; in public id literal.</source>
+        <translation>&apos;%1&apos; není platným znakem v údaji veřejného id, který je tvořen písmeny.</translation>
+    </message>
+    <message>
+        <location line="-160"/>
+        <location line="+12"/>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="-109"/>
+        <location line="+53"/>
+        <source>Illegal namespace declaration.</source>
+        <translation>Neplatné prohlášení jmenného prostoru.</translation>
+    </message>
+    <message>
+        <location line="-613"/>
+        <source>Invalid XML character.</source>
+        <translation>Neplatný znak XML.</translation>
+    </message>
+    <message>
+        <location line="+1137"/>
+        <source>Expected character data.</source>
+        <translation>Byly očekávány údaje o znacích.</translation>
+    </message>
+    <message>
+        <location line="-300"/>
+        <source>Standalone accepts only yes or no.</source>
+        <translation>Hodnota pro samostatnou vlastnost může být pouze &quot;ano&quot; nebo &quot;ne&quot;.</translation>
+    </message>
+    <message>
+        <location line="-48"/>
+        <source>Invalid XML version string.</source>
+        <translation>Neplatný údaj o verzi XML.</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="-217"/>
+        <source>Invalid processing instruction name.</source>
+        <translation>Název pokynu pro zpracování je neplatný.</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream.cpp" line="-221"/>
+        <source>Namespace prefix &apos;%1&apos; not declared</source>
+        <translation>Předpona jmenného prostoru &apos;%1&apos; nebyla prohlášena</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="+260"/>
+        <location line="+61"/>
+        <location line="+40"/>
+        <source>Entity &apos;%1&apos; not declared.</source>
+        <translation>Entita &apos;%1&apos; není prohlášena.</translation>
+    </message>
+    <message>
+        <location line="-372"/>
+        <source>%1 is an invalid processing instruction name.</source>
+        <translation>%1 není platným názvem pokynu pro zpracování.</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream.cpp" line="+244"/>
+        <source>The standalone pseudo attribute must appear after the encoding.</source>
+        <translation>Samostatná pseudovlastnost musí následovat bezprostředně po kódování.</translation>
+    </message>
+    <message>
+        <location line="-553"/>
+        <source>Sequence &apos;]]&gt;&apos; not allowed in content.</source>
+        <translation>Sled znaků &apos;]]&gt;&apos; není v obsahu povolen.</translation>
+    </message>
+    <message>
+        <location line="+555"/>
+        <source>%1 is an invalid encoding name.</source>
+        <translation>%1 není platným názvem pro kódování.</translation>
+    </message>
+    <message>
+        <location line="+94"/>
+        <source>, but got &apos;</source>
+        <translation>očekáváno, namísto toho obdrženo &apos;</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="-225"/>
+        <source>Start tag expected.</source>
+        <translation>Očekáván otevírající prvek.</translation>
+    </message>
+    <message>
+        <location line="+611"/>
+        <source>Invalid character reference.</source>
+        <translation>Odkaz na neplatný znak.</translation>
+    </message>
+    <message>
+        <location line="-40"/>
+        <source>Reference to external entity &apos;%1&apos; in attribute value.</source>
+        <translation>V hodnotě vlastnosti byla odkazována entita &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream.cpp" line="-11"/>
+        <source>Expected </source>
+        <translation>Bylo </translation>
+    </message>
+    <message>
+        <location line="-40"/>
+        <source>Invalid document.</source>
+        <translation>Neplatný dokument.</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="-80"/>
+        <source>Opening and ending tag mismatch.</source>
+        <translation>Počet otevírajících prvků neodpovídá neodpovídá počtu zavírajících prvků.</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream.cpp" line="-319"/>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="-703"/>
+        <source>Encountered incorrectly encoded content.</source>
+        <translation>Byl nalezen obsah s neplatným kódováním.</translation>
+    </message>
+    <message>
+        <location line="+301"/>
+        <source>Invalid attribute in XML declaration.</source>
+        <translation>Prohlášení XML obsahuje neplatnou vlastnost.</translation>
+    </message>
+    <message>
+        <location line="-193"/>
+        <source>Attribute redefined.</source>
+        <translation>Vlastnost byla nově vymezena.</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="+562"/>
+        <source>%1 is an invalid PUBLIC identifier.</source>
+        <translation>%1 není platným údajem VEŘEJNÉHO identifikátoru (id).</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream.cpp" line="-1026"/>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="+129"/>
+        <source>Extra content at end of document.</source>
+        <translation>Přebytečný obsah za koncem dokumentu.</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="-11"/>
+        <source>Invalid XML name.</source>
+        <translation>Neplatný název XML.</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream.cpp" line="+1235"/>
+        <source>Premature end of document.</source>
+        <translation>Předčasný konec dokumentu.</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="-246"/>
+        <source>XML declaration not at start of document.</source>
+        <translation>Prohlášení XML se nenachází na začátku dokumentu.</translation>
+    </message>
+    <message>
+        <location line="-738"/>
+        <source>Recursive entity detected.</source>
+        <translation>Byla zjištěna rekurzivní entita.</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream.cpp" line="-64"/>
+        <source>Unsupported XML version.</source>
+        <translation>Tato verze XML není podporována.</translation>
+    </message>
+    <message>
+        <location line="+121"/>
+        <source>Unexpected &apos;</source>
+        <translation>Na tomto místě neplatný &apos; </translation>
+    </message>
+    <message>
+        <location line="-1021"/>
+        <source>Invalid entity value.</source>
+        <translation>neplatná hodnota entity.</translation>
+    </message>
+    <message>
+        <location line="+930"/>
+        <source>Encoding %1 is unsupported</source>
+        <translation>Kódování %1 není podporováno</translation>
+    </message>
+    <message>
+        <location filename="../src/corelib/xml/qxmlstream_p.h" line="+707"/>
+        <source>NDATA in parameter entity declaration.</source>
+        <translation>Parametrické prohlášení entitynesmí obsahovat žádné NDATA.</translation>
+    </message>
+</context>
+<context>
+    <name>QtXmlPatterns</name>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+67"/>
+        <source>A comment cannot contain %1</source>
+        <translation>Poznámka nesmí obsahovat %1</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+3726"/>
+        <source>Version %1 is not supported. The supported XQuery version is 1.0.</source>
+        <translation>Verze %1 není podporována. Podporovanou verzí XQuery je 1.0.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qcontextnodechecker.cpp" line="+54"/>
+        <source>The root node of the second argument to function %1 must be a document node. %2 is not a document node.</source>
+        <translation>Nadřízený uzel druhého agumentu funkce %1 musí být uzlem dokumentu, což není případ %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="+145"/>
+        <source>The parameter %1 is required, but no corresponding %2 is supplied.</source>
+        <translation>Nebyl zadán žádný odpovídající %2 pro potřebný parametr %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+163"/>
+        <source>Namespace declarations must occur before function, variable, and option declarations.</source>
+        <translation>Prohlášení jmenných prostorů musí stát před prohlášeními funkcí-, proměnných- nebo prohlášeními voleb.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+55"/>
+        <source>empty</source>
+        <translation>prázdný</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2895"/>
+        <source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
+        <translation>Jmenný prostor-URI nesmí být prázdný, když je spojen s prefixem %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qcommentconstructor.cpp" line="+6"/>
+        <source>A comment cannot end with a %1.</source>
+        <translation>Poznámka nesmí končit na %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+2437"/>
+        <source>Top level stylesheet elements must be in a non-null namespace, which %1 isn&apos;t.</source>
+        <translation>Úplně nahoře stojící prvky prováděcího listu se nesmí nacházet v nulovém jmenném prostoru, což je případ %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+65"/>
+        <source>Integer division (%1) by zero (%2) is undefined.</source>
+        <translation>Celočíselné dělení (%1) nulou (%2) není stanoveno.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+162"/>
+        <source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
+        <translation>Knihovní modul nemůže být posouzen přímo, musí být zaveden z hlavního modulu.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+187"/>
+        <source>Time %1:%2:%3.%4 is invalid.</source>
+        <translation>Časový údaj %1:%2:%3.%4 je neplatný.</translation>
+    </message>
+    <message>
+        <source>Attribute %1 cannot appear on the element %2. Only the standard attributes can appear.</source>
+        <translation type="obsolete">Prvek %2 může mít pouze obvyklé vlastnosti, ne však %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+91"/>
+        <source>A value of type %1 must contain an even number of digits. The value %2 does not.</source>
+        <translation>Počet míst hodnoty typu %1 musí být stejný. To není případ %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+14"/>
+        <source>Modulus division (%1) by zero (%2) is undefined.</source>
+        <translation>Dělení absolutní hodnoty (%1) nulou(%2) není stanoveno.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-2987"/>
+        <source>No function with signature %1 is available</source>
+        <translation>Neexistuje žádná funkce označená jako %1</translation>
+    </message>
+    <message>
+        <location line="+2154"/>
+        <source>None of the pragma expressions are supported. Therefore, a fallback expression must be present</source>
+        <translation>Musí být přítomen záložní výraz, neboť nejsou podporovány žádné věcné výrazy</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="+159"/>
+        <source>In the replacement string, %1 can only be used to escape itself or %2, not %3</source>
+        <translation>V nahrazení může být použit pouze %1, aby se chránil sám, nebo %2, ne však pro %3</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="+378"/>
+        <source>The codepoint %1, occurring in %2 using encoding %3, is an invalid XML character.</source>
+        <translation>Kódovací bod %1 z %2 s kódováním %3 není platným znakem XML.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/api/qiodevicedelegate.cpp" line="+84"/>
+        <source>Network timeout.</source>
+        <translation>Časový limit síťové operace byl překročen.</translation>
+    </message>
+    <message>
+        <source>No casting is possible with %1 as the target type.</source>
+        <translation type="obsolete">Nelze provádět žádné výběrové (&quot;cast&quot;) operace s typem %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-1567"/>
+        <source>The Schema Import feature is not supported, and therefore %1 declarations cannot occur.</source>
+        <translation>Prohlášení %1 je nepřípustné, protože není podporováno zavedení schémat.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-1676"/>
+        <source>Attribute %1 and %2 are mutually exclusive.</source>
+        <translation>Vlastnosti %1 a %2 se vzájemně vylučující.</translation>
+    </message>
+    <message>
+        <location line="-213"/>
+        <source>Parse error: %1</source>
+        <translation>Chyba vyhodnocení: %1</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="+86"/>
+        <source>If the first argument is the empty sequence or a zero-length string (no namespace), a prefix cannot be specified. Prefix %1 was specified.</source>
+        <translation>Nelze zadat žádnou předponu, jestliže je první argument prázdný nebo je prázdný řetězec znaků (žádný jmenný prostor). Byla zadána předpona %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+497"/>
+        <source>In an XSL-T pattern, the first argument to function %1 must be a literal or a variable reference, when used for matching.</source>
+        <translation>V XSL-T vyhledávacím vzoru musí být první argument k funkci %1 při použití k hledání odkaz tvořený písmeny nebo proměnný.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="+99"/>
+        <location line="+15"/>
+        <source>At least one component must be present.</source>
+        <translation>Alespoň jedna součást musí být přítomna.</translation>
+    </message>
+    <message>
+        <source>In a namespace constructor, the value for a namespace value cannot be an empty string.</source>
+        <translation type="obsolete">Ve staviteli jmenného prostoru nesmí mýt hodnota jmenného prostoru prázdným řetězcem.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="+93"/>
+        <source>An attribute by name %1 has already been created.</source>
+        <translation>Již byla vytvořena jedna vlastnost s názvem %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-204"/>
+        <source>An argument by name %1 has already been declared. Every argument name must be unique.</source>
+        <translation>Již existuje jeden argument s názvem %1. Názvy argumentů musí být jednoznačné.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+236"/>
+        <source>%1 is an invalid flag for regular expressions. Valid flags are:</source>
+        <translation>%1 není pro regulérní výrazy platným příznakem. Platnými příznaky jsou:</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+673"/>
+        <source>At least one %1-element must occur inside %2.</source>
+        <translation>V %2 se musí vyskytovat alespoň jeden %1-prvek.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/utils/qxpathhelper_p.h" line="+120"/>
+        <source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
+        <translation>Je podporován pouze Unicode Codepoint Collation (%1). %2 není podporován.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="-134"/>
+        <source>Matches are case insensitive</source>
+        <translation>Na psaní velkých/malých písmen není brán zřetel</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+3057"/>
+        <source>The name of an extension expression must be in a namespace.</source>
+        <translation>Název výrazu rozšíření se musí nacházet ve jmenném prostoru.</translation>
+    </message>
+    <message>
+        <location line="-1514"/>
+        <source>Each name of a template parameter must be unique; %1 is duplicated.</source>
+        <translation>Názvy parametrů předloh musí být jednoznačné, %1 již existuje.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-185"/>
+        <source>At least one mode must be specified in the %1-attribute on element %2.</source>
+        <translation>Ve %1-vlastnosti prvku %2 musí být zadán alespoň jeden způsob.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="-10"/>
+        <source>%1 matches newline characters</source>
+        <translation>Výraz &apos;%1&apos; odpovídá znakům pro nový řádek</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="-107"/>
+        <source>Year %1 is invalid because it begins with %2.</source>
+        <translation>%1 není platným údajem pro rok, protože začíná %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+285"/>
+        <source>The second argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
+        <translation>Druhý argument %1 nemůže být typ %2. Musí to být typ %3, %4 nebo %5.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+651"/>
+        <source>Element %1 cannot have children.</source>
+        <translation>Prvek %1 nemůže mít podprvky.</translation>
+    </message>
+    <message>
+        <source>Attribute %1 cannot appear on the element %2. Only %3 is allowed, and the standard attributes.</source>
+        <translation type="obsolete">Prvek %2 může mít jen vlastnost %3 nebo vlastnosti, které jsou obvyklé, ne však %1.</translation>
+    </message>
+    <message>
+        <location line="-497"/>
+        <source>Only one %1-element can appear.</source>
+        <translation>Může být jen jeden jediný %1-prvek.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="+75"/>
+        <source>The name for a computed attribute cannot have the namespace URI %1 with the local name %2.</source>
+        <translation>Název počítané vlastnosti nesmí mít jmenný prostor-URI %1 s místním názvem %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="+138"/>
+        <source>A positional predicate must evaluate to a single numeric value.</source>
+        <translation>Poziční přísudek se musí vyhodnotit jako jednoduchá, číselná hodnota.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+320"/>
+        <source>Element %1 can&apos;t be serialized because it appears outside the document element.</source>
+        <translation>Prvek %1 nemůže být vydáván na pokračování, protože se objevuje mimo prvky dokumentu.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+4"/>
+        <source>%1 and %2 match the start and end of a line.</source>
+        <translation>Výrazy %1 a %2 vždy odpovídají začátku nebo konci libovolného řádku.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-560"/>
+        <source>Running an XSL-T 1.0 stylesheet with a 2.0 processor.</source>
+        <translation>Je zpracováván jeden XSL-T 1.0 stylový list jedním procesorem verze 2.0.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-1667"/>
+        <source>A stylesheet function must have a prefixed name.</source>
+        <translation>Název funkce stylového listu musí mít předponu.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="+279"/>
+        <source>%1 cannot be retrieved</source>
+        <translation>%1 nelze určit</translation>
+    </message>
+    <message>
+        <source>It&apos;s not possible to cast the value %1 of type %2 to %3</source>
+        <translation type="obsolete">Nelze provést operaci předvedení hodnoty %1 typu %2 k %3</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-20"/>
+        <source>The value of the XSL-T version attribute must be a value of type %1, which %2 isn&apos;t.</source>
+        <translation>Hodnota XSL-T vlastnosti verze musí být hodnotou typu %1, což není případ %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+69"/>
+        <source>In a namespace constructor, the value for a namespace cannot be an empty string.</source>
+        <translation>Ve staviteli jmenného prostoru nesmí mýt hodnota jmenného prostoru prázdným řetězcem.</translation>
+    </message>
+    <message>
+        <location line="+25"/>
+        <source>The prefix %1 cannot be bound.</source>
+        <translation>Předponu %1 nelze spojit.</translation>
+    </message>
+    <message>
+        <location line="-14"/>
+        <source>The prefix must be a valid %1, which %2 is not.</source>
+        <translation>Předpona musí být platný %1, což není případ %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-551"/>
+        <source>The keyword %1 cannot occur with any other mode name.</source>
+        <translation>Klíčové slovo %1 se nemůže používat dohromady s jiným názvem způsobu.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+88"/>
+        <source>Type error in cast, expected %1, received %2.</source>
+        <translation>Chyba psaní u operace předvedení, bylo očekáváno %1, ale přijato %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-3555"/>
+        <source>%1 is not a valid numeric literal.</source>
+        <translation>%1 není platný číselný údaj tvořený písmeny.</translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+77"/>
+        <source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
+        <translation>
+            <numerusform>%1 má jen %n argument; údaj %2 z tohoto důvodu neplatný.</numerusform>
+            <numerusform>%1 má jen %n argumenty; údaj %2 z tohoto důvodu neplatný.</numerusform>
+            <numerusform>%1 má jen %n argumenty; údaj %2 z tohoto důvodu neplatný.</numerusform>
+        </translation>
+    </message>
+    <message>
+        <source>Circularity detected</source>
+        <translation type="obsolete">byla zjištěna cirkulární závislost</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+3971"/>
+        <source>A variable by name %1 has already been declared.</source>
+        <translation>Proměnná s názvem %1 již byla prohlášena.</translation>
+    </message>
+    <message>
+        <location line="-312"/>
+        <source>The prefix %1 can not be bound. By default, it is already bound to the namespace %2.</source>
+        <translation>Předpona %1 nemůže být spojena. Ve výchozím nastavení je již spojena se jmenným prostorem %2.</translation>
+    </message>
+    <message>
+        <source>An %1-attribute must have a valid %2 as value, which %3 isn&apos;t.</source>
+        <translation type="obsolete">Vlastnost s názvem %1 musí mít platnou %2-hodnotu. %3 není platnou hodnotou.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+389"/>
+        <source>If element %1 has no attribute %2, it cannot have attribute %3 or %4.</source>
+        <translation>Prvek %1 nesmí mít vlastnost %3 nebo %4, pokud nemá vlastnost %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+511"/>
+        <source>A function already exists with the signature %1.</source>
+        <translation>Již existuje funkce s podpisem %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qatomiccasters_p.h" line="+223"/>
+        <source>When casting to %1 from %2, the source value cannot be %3.</source>
+        <translation>U operace předvedení z %1 do %2 nesmí být zdrojová hodnota %3.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/api/qxmlserializer.cpp" line="+60"/>
+        <source>Attribute %1 can&apos;t be serialized because it appears at the top level.</source>
+        <translation>Vlastnost %1 nemůže být vydáván na pokračování, protože se objevuje na nejvyšší rovině.</translation>
+    </message>
+    <message>
+        <source>No comparisons can be done involving the type %1.</source>
+        <translation type="obsolete">S typem %1 nemohou být prováděny žádné srovnávací operace.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-160"/>
+        <source>No value is available for the external variable by name %1.</source>
+        <translation>Pro vnější proměnnou s názvem %1 není dostupná žádná hodnota.</translation>
+    </message>
+    <message>
+        <location line="-426"/>
+        <source>The value of attribute %1 must of type %2, which %3 isn&apos;t.</source>
+        <translation>Hodnota vlastnosti %1 musí být typu %2. %3 není platnou hodnotou.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/janitors/qitemverifier.cpp" line="+67"/>
+        <source>The item %1 did not match the required type %2.</source>
+        <translation>Prvek %1 neodpovídá požadovanému typu %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+1122"/>
+        <source>Element %1 cannot have a sequence constructor.</source>
+        <translation>Prvek %1 nemůže mít stavitele posloupnosti.</translation>
+    </message>
+    <message>
+        <location line="-842"/>
+        <source>When attribute %1 is present on %2, a sequence constructor cannot be used.</source>
+        <translation>Nelze používat žádného stavitele posloupnosti, když %2 má vlastnost %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+6"/>
+        <source>one or more</source>
+        <translation>jeden nebo více</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-289"/>
+        <source>The encoding %1 is invalid. It must contain Latin characters only, must not contain whitespace, and must match the regular expression %2.</source>
+        <translation>Kódování %1 je neplatné; smí sestávat pouze z latinských písmen a musí odpovídat pravidelnéu výrazu %2.</translation>
+    </message>
+    <message numerus="yes">
+        <location filename="../src/xmlpatterns/functions/qabstractfunctionfactory.cpp" line="+11"/>
+        <source>%1 requires at least %n argument(s). %2 is therefore invalid.</source>
+        <translation>
+            <numerusform>%1 vyžaduje alespoň %n argument; údaj %2 je z toho důvodu neplatný.</numerusform>
+            <numerusform>%1 vyžaduje alespoň %n argumenty; údaj %2 je z toho důvodu neplatný.</numerusform>
+            <numerusform>%1 vyžaduje alespoň %n argumenty; údaj %2 je z toho důvodu neplatný.</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+113"/>
+        <source>The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, is %2 invalid.</source>
+        <translation>%2 není platným cílovým názvem pokynu pro zpracování, protože tento nesmí být %1 (nehledě na psaní velkých/malých písmen).</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="+156"/>
+        <source>The focus is undefined.</source>
+        <translation>Není stanoveno ohnisko.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-3390"/>
+        <location line="+7323"/>
+        <source>%1 is an unknown schema type.</source>
+        <translation>%1 je neznámým typem schematu.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+1206"/>
+        <source>The value for attribute %1 on element %2 must either be %3 or %4, not %5.</source>
+        <translation>Hodnota vlastnosti %1 prvku %2 může být jen %3 nebo %4, ne však %5.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="-26"/>
+        <source>In the replacement string, %1 must be followed by at least one digit when not escaped.</source>
+        <translation>V nahrazovacím řetězci musí po %1 následovat alespoň jedna číslice, když není chráněn znakem Escape.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-2712"/>
+        <source>In an XSL-T pattern, axis %1 cannot be used, only axis %2 or %3 can.</source>
+        <translation>V XSL-T vyhledávacím vzoru se smějí používat jen osy %2 nebo %3, ne však %1.</translation>
+    </message>
+    <message>
+        <location line="-401"/>
+        <source>The namespace for a user defined function cannot be empty (try the predefined prefix %1 which exists for cases like this)</source>
+        <translation>Jmenný prostor uživatelem stanovené funkce nesmí být prázdný (pro tento účel je předstanovená předpona %1)</translation>
+    </message>
+    <message>
+        <source>The first operand in an integer division, %1, cannot be infinity (%2).</source>
+        <translation type="obsolete">První veličina, operand, celočíselného dělení %1 nesmí být nekonečno (%2).</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qanyuri_p.h" line="+132"/>
+        <source>%1 is not a valid value of type %2.</source>
+        <translation>%1 není platnou hodnotou typu %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+166"/>
+        <source>Multiplication of a value of type %1 by %2 or %3 (plus or minus infinity) is not allowed.</source>
+        <translation>Násobení hodnoty typu %1 s %2 nebo %3 (kladné nebo záporné nekonečno) není přípustné.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qparsercontext.cpp" line="+93"/>
+        <source>The variable %1 is unused</source>
+        <translation>Proměnná %1 se nepoužívá</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+1787"/>
+        <source>The %1-axis is unsupported in XQuery</source>
+        <translation>Osa %1 není v XQuery podporována</translation>
+    </message>
+    <message>
+        <location line="+644"/>
+        <source>A direct element constructor is not well-formed. %1 is ended with %2.</source>
+        <translation>Byl nalezen chybný stavitel přímého prvku. %1 končí %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="-32"/>
+        <source>Dividing a value of type %1 by %2 or %3 (plus or minus zero) is not allowed.</source>
+        <translation>Dělení hodnoty typu %1 prostřednictvím %2 nebo %3 (kladná nebo záporná nula) není přípustné.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+20"/>
+        <source>Attribute %1 cannot have the value %2.</source>
+        <translation>Vlastnost %1 nesmí mít hodnotu %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qsequencefns.cpp" line="+346"/>
+        <source>It will not be possible to retrieve %1.</source>
+        <translation>%1 nelze určit.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-2103"/>
+        <source>In an XSL-T pattern, function %1 cannot have a third argument.</source>
+        <translation>V XSL-T vyhledávacím vzoru nesmí mít funkce %1 třetí argument.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qattributenamevalidator.cpp" line="-9"/>
+        <source>The namespace URI in the name for a computed attribute cannot be %1.</source>
+        <translation>URI jmenného prostoru v názvu vypočítané vlastnosti nesmí být %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qncnameconstructor_p.h" line="+24"/>
+        <source>%1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3.</source>
+        <translation>%1 není platným cílovým názvem pokynu pro zpracování. Musí to být hodnota %2 jakou je například %3.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2571"/>
+        <source>%1 is an complex type. Casting to complex types is not possible. However, casting to atomic types such as %2 works.</source>
+        <translation>%1 je složeným typem. Operace předvedení u složených typů není možná. Mohou se ovšem provádět operace obsazení u atomárních typů jako %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="-4"/>
+        <source>zero or one</source>
+        <translation>žádný nebo jeden</translation>
+    </message>
+    <message>
+        <source>No operand in an integer division, %1, can be %2.</source>
+        <translation type="obsolete">U celočíselného dělení %1 nesmí být veličina, operand, %2.</translation>
+    </message>
+    <message>
+        <source>The element with local name %1 does not exist in XSL-T.</source>
+        <translation type="obsolete">V XSL-T neexistuje žádný prvek s místním názvem %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-634"/>
+        <source>Two namespace declaration attributes have the same name: %1.</source>
+        <translation>Byly nalezeny dvě vlastnosti prohlášení jmenného prostoru se stejným názvem (%1).</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qboolean.cpp" line="+78"/>
+        <source>Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values.</source>
+        <translation>Skutečná Booleanská hodnota nemůže být vypočítána pro posloupnost ze dvou nebo více atomárních hodnot.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="+168"/>
+        <location filename="../src/xmlpatterns/functions/qqnamefns.cpp" line="-17"/>
+        <source>%1 is an invalid %2</source>
+        <translation>%1 je neplatný %2</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="-165"/>
+        <source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
+        <translation>První argument k %1 nesmí být typu %2; musí to být číselný typ, xs:yearMonthDuration nebo xs:dayTimeDuration.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="-141"/>
+        <source>Division (%1) by zero (%2) is undefined.</source>
+        <translation>Dělení (%1) nulou (%2) není stanoveno.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qexpressionfactory.cpp" line="+40"/>
+        <source>No template by name %1 exists.</source>
+        <translation>Neexistuje žádná předloha s názvem %1.</translation>
+    </message>
+    <message>
+        <source>The attribute %1 must appear on element %2.</source>
+        <translation type="obsolete">Prvek %2 musí mít vlastnost %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+105"/>
+        <source>An attribute by name %1 has already appeared on this element.</source>
+        <translation>Prvek má již vlastnost s názvem %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qsequencegeneratingfns.cpp" line="-13"/>
+        <source>The default collection is undefined</source>
+        <translation>Pro sbírku není stanovena žádná předloha</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp" line="+24"/>
+        <source>Only the prefix %1 can be bound to %2 and vice versa.</source>
+        <translation>S %2 může být spojena pouze předpona %1 (a obráceně).</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+402"/>
+        <source>Value %1 of type %2 exceeds maximum (%3).</source>
+        <translation>Hodnota %1 typu %2 překračuje maximum (%3).</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+10"/>
+        <source>Whitespace characters are removed, except when they appear in character classes</source>
+        <translation>Prázdné znaky jsou odstraněny v případě, že se neobjeví ve znakových třídách</translation>
+    </message>
+    <message>
+        <source>Casting to %1 is not possible because it is an abstract type, and can therefore never be instantiated.</source>
+        <translation type="obsolete">Nemohou se provádět žádné operace předvedení k typu %1, protože je to abstraktní typ ist a nelze je doložit příkladem.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+207"/>
+        <source>Operator %1 cannot be used on type %2.</source>
+        <translation>Operátor %1 nelze použít na typ %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-2361"/>
+        <source>The namespace %1 is reserved; therefore user defined functions may not use it. Try the predefined prefix %2, which exists for these cases.</source>
+        <translation>Jmenný prostor %1 je vyhrazen a z toho důvodu jej nemohou používat uživatelem stanovené funkce (pro tento účel je tu předstanovená předpona %2).</translation>
+    </message>
+    <message>
+        <location line="-174"/>
+        <source>The target namespace of a %1 cannot be empty.</source>
+        <translation>Cílový jmenný prostor %1 nesmí být prázdný.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qpatternmatchingfns.cpp" line="-39"/>
+        <source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
+        <translation>Po %1 musí následovat %2 nebo %3; nesmí se objevit na konci nahrazovacího řetězce.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2394"/>
+        <source>%1 is an invalid namespace URI.</source>
+        <translation>%1 není platným jmenným prostorem-URI.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-298"/>
+        <location line="+9"/>
+        <source>The attribute %1 cannot appear on %2, when it is a child of %3.</source>
+        <translation>%2 nesmí mít vlastnost %1 v případě, že je potomkem %3.</translation>
+    </message>
+    <message>
+        <location line="+347"/>
+        <source>The attribute %1 can only appear on the first %2 element.</source>
+        <translation>Pouze první %2-prvek smí mít vlastnost %1.</translation>
+    </message>
+    <message>
+        <location line="-1271"/>
+        <source>Element %1 must have either a %2-attribute or a sequence constructor.</source>
+        <translation>Prvek %1 musí mít buď jednu %2-vlastnost nebo se musí používat stavitel posloupnosti.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-2891"/>
+        <source>Module imports must occur before function, variable, and option declarations.</source>
+        <translation>Zavedení modulů musí nastat před prohlášeními funkcí, proměnných a voleb.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+19"/>
+        <source>Day %1 is outside the range %2..%3.</source>
+        <translation>Údaj dne %1 je mimo rozsah %2..%3.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="-18"/>
+        <source>%1 contains octets which are disallowed in the requested encoding %2.</source>
+        <translation>%1 obsahuje oktety, které v kódování %2 nejsou přípustné.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+125"/>
+        <source>When a parameter is required, a default value cannot be supplied through a %1-attribute or a sequence constructor.</source>
+        <translation>Výchozí hodnota požadovaného parametru nemůže být zadána ani prostřednictvím %1-vlastnosti ani přes stavitele posloupnosti.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+967"/>
+        <source>In an XSL-T pattern, the first argument to function %1 must be a string literal, when used for matching.</source>
+        <translation>V XSL-T vyhledávacím vzoru musí být první argument k funkci %1 při použití k hledání řetězec tvořený písmeny.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-889"/>
+        <source>Text nodes are not allowed at this location.</source>
+        <translation>Na tomto místě nesmí stát žádné textové uzly.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qgenericpredicate.cpp" line="-32"/>
+        <source>A value of type %1 cannot be a predicate. A predicate must have either a numeric type or an Effective Boolean Value type.</source>
+        <translation>Hodnoty typu %1 nesmí ýt přísudkem. Pro přísudky jsou přípustné pouze typ číselný nebo účinný booleánský.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2679"/>
+        <source>%1 is not a valid name for a processing-instruction.</source>
+        <translation>%1 není platným názvem pokynu pro zpracování.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qerrorfn.cpp" line="+61"/>
+        <source>%1 was called.</source>
+        <translation>%1 byl volán.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/utils/qoutputvalidator.cpp" line="-7"/>
+        <source>It&apos;s not possible to add attributes after any other kind of node.</source>
+        <translation>Vlastnosti nesmí následovat za jinými druhy uzlů.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+655"/>
+        <source>At least one %1-element must occur before %2.</source>
+        <translation>Před %2 musí stát alespoň jeden %1-prvek.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qstringvaluefns.cpp" line="+252"/>
+        <source>The normalization form %1 is unsupported. The supported forms are %2, %3, %4, and %5, and none, i.e. the empty string (no normalization).</source>
+        <translation>Tato forma normalizování %1 není podporována. Podporovanými formami normalizování jsou %2, %3, %4 a %5, a &quot;žádný&quot; (prázdný znakový řetězec zastupuje &quot;žádné normalizování&quot;).</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qcastas.cpp" line="+29"/>
+        <source>When casting to %1 or types derived from it, the source value must be of the same type, or it must be a string literal. Type %2 is not allowed.</source>
+        <translation>U operace představení k typu %1 nebo odvozených typů musí být zdrojovou hodnotou řetězec znaků tvořený písmeny nebo hodnota stejného typu. Typ %2 je neplatný.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+1048"/>
+        <source>A parameter in a function cannot be declared to be a tunnel.</source>
+        <translation>Parameter funkce nelze prohlásit za tunel.</translation>
+    </message>
+    <message>
+        <source>XSL-T attributes on XSL-T elements must be in the null namespace, not in the XSL-T namespace which %1 is.</source>
+        <translation type="obsolete">XSL-T vlastnosti XSL-T prvku musí být v nulovém jmenném prostoru, nikoli v XSL-T jmenném prostoru, jako %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-2963"/>
+        <source>The namespace of a user defined function in a library module must be equivalent to the module namespace. In other words, it should be %1 instead of %2</source>
+        <translation>Jmenný prostor uživatelem stanovené funkce v modulu knihovny musí odpovídat jmennému prostoru modulu (Jinými slovy by měl být %1 namísto %2) </translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+26"/>
+        <source>Day %1 is invalid for month %2.</source>
+        <translation>Ǔdaj o dni %1 je neplatným pro měsíc %2.</translation>
+    </message>
+    <message>
+        <location line="-9"/>
+        <source>Overflow: Can&apos;t represent date %1.</source>
+        <translation>Nelze představit datum %1 (Přetečení).</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-1304"/>
+        <source>In a simplified stylesheet module, attribute %1 must be present.</source>
+        <translation>Ve zjednodušeném modulu stylového listu musí být přítomna vlastnost %1.</translation>
+    </message>
+    <message>
+        <location line="-189"/>
+        <source>Unknown XSL-T attribute %1.</source>
+        <translation>Neznámá XSL-T vlastnost: %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-483"/>
+        <source>It is not possible to redeclare prefix %1.</source>
+        <translation>Předponu %1 nelze prohlásit.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+2"/>
+        <source>exactly one</source>
+        <translation>přesně jeden</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qpatternplatform.cpp" line="+100"/>
+        <source>%1 is an invalid regular expression pattern: %2</source>
+        <translation>%1 není platným pravidelným výrazem: %2</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-219"/>
+        <source>Element %1 is not allowed at this location.</source>
+        <translation>Prvek %1 nesmí stát na tomto místě.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+1811"/>
+        <source>The Schema Validation Feature is not supported. Hence, %1-expressions may not be used.</source>
+        <translation>%1-výrazy se nemohou používat, protože funkce prohlášení schématu platným není podporována.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="+2143"/>
+        <source>At least one %1 element must appear as child of %2.</source>
+        <translation>Alespoň jeden %1-prvek musí být potomkem %2.</translation>
+    </message>
+    <message>
+        <location line="-282"/>
+        <source>This processor is not Schema-aware and therefore %1 cannot be used.</source>
+        <translation>%1 se nemůže používat, protože tento procesor nepodporuje žádné schéma.</translation>
+    </message>
+    <message>
+        <source>Attribute %1 cannot appear on the element %2. Allowed is %3, and the standard attributes.</source>
+        <translation type="obsolete">Prvek %2 může mít jen %3 nebo obvyklé vlastnosti, ne však %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qatomicmathematicians.cpp" line="+129"/>
+        <location line="+32"/>
+        <source>Dividing a value of type %1 by %2 (not-a-number) is not allowed.</source>
+        <translation>Dělení hodnoty typu %1 prostřednictvím %2 (není číselnou hodnotou) není přípustné.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/janitors/qcardinalityverifier.cpp" line="+58"/>
+        <source>Required cardinality is %1; got cardinality %2.</source>
+        <translation>Požadované kardinální číslo (mohutnost množiny) je %1 (v současnosti %2).</translation>
+    </message>
+    <message>
+        <source>A construct was encountered which only is allowed in XQuery.</source>
+        <translation type="obsolete">Tento výtvor je přípustný pouze v XQuery.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+771"/>
+        <source>No function by name %1 is available.</source>
+        <translation>Neexistuje žádná funkce s názvem %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qunparsedtextfn.cpp" line="+65"/>
+        <source>The URI cannot have a fragment</source>
+        <translation>URI nesmí obsahovat kousek</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+788"/>
+        <source>%1 is not an atomic type. Casting is only possible to atomic types.</source>
+        <translation>%1 není atomárním typem. Operace představení se dají provádět pouze s atomárními typy.</translation>
+    </message>
+    <message>
+        <source>The first argument to %1 cannot be of type %2.</source>
+        <translation type="obsolete">První argument %1 nemůže být typu %2.</translation>
+    </message>
+    <message>
+        <location line="-554"/>
+        <source>The namespace URI must be a constant and cannot use enclosed expressions.</source>
+        <translation>Jmenný prostor-URI musí být konstantou a nesmí používat vložené výrazy.</translation>
+    </message>
+    <message>
+        <location line="-2798"/>
+        <source>Prefix %1 is already declared in the prolog.</source>
+        <translation>Předpona %1 byla prohlášena již v předmluvě (prologu).</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qapplytemplate.cpp" line="+119"/>
+        <source>Ambiguous rule match.</source>
+        <translation>Víceznačné pravidlo.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="-49"/>
+        <source>Promoting %1 to %2 may cause loss of precision.</source>
+        <translation>Postoupení od %1 k %2 může vést ke ztrátě přesnosti.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+782"/>
+        <source>In an XSL-T pattern, only function %1 and %2, not %3, can be used for matching.</source>
+        <translation>V XSL-T vyhledávacím vzoru se smějí pro srovnávání používat jen funkce %1 a %2, ne však %3.</translation>
+    </message>
+    <message>
+        <location line="-1031"/>
+        <location line="+10"/>
+        <source>A default namespace declaration must occur before function, variable, and option declarations.</source>
+        <translation>Prohlášení výchozích jmenných prostorů musí stát před prohlášeními funkcí-, proměnných- nebo prohlášeními voleb.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qarithmeticexpression.cpp" line="+17"/>
+        <source>Operator %1 cannot be used on atomic values of type %2 and %3.</source>
+        <translation>Operátor %1 se nemůže používat u atomárních hodnot typů %2 a %3.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+526"/>
+        <source>The module import feature is not supported</source>
+        <translation>Funkce zavedení modulu není podporována</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qtemplate.cpp" line="-71"/>
+        <source>The parameter %1 is passed, but no corresponding %2 exists.</source>
+        <translation>Neexistuje žádný odpovídající %2 pro předaný parameter %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qatomicvalue.cpp" line="+79"/>
+        <source>A value of type %1 cannot have an Effective Boolean Value.</source>
+        <translation>Hodnota typu %1 nemůže mít žádnou účinnou booleánskou hodnotu.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp" line="+84"/>
+        <source>The data of a processing instruction cannot contain the string %1</source>
+        <translation>Data pokynu pro zpracování nesmí obsahovat řetězec znaků %1</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+58"/>
+        <source>Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; </source>
+        <translation>Časový údaj 24:%1:%2.%3 je neplatný. U hodinového údaje je 24, ale minuty, sekundy a milisekundy musí být všechny 0; </translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-3984"/>
+        <source>A template by name %1 has already been declared.</source>
+        <translation>Předloha s názvem %1 už byla prohlášena.</translation>
+    </message>
+    <message>
+        <location line="+6376"/>
+        <source>It is not possible to bind to the prefix %1</source>
+        <translation>Předponu %1 nelze spojit</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qderivedinteger_p.h" line="+9"/>
+        <source>Value %1 of type %2 is below minimum (%3).</source>
+        <translation>Hodnota %1 typu %2 zůstává pod minimem (%3).</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/type/qtypechecker.cpp" line="-44"/>
+        <source>Required type is %1, but %2 was found.</source>
+        <translation>Požadovaný typ je %1, byl ale zadán %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp" line="-16"/>
+        <source>%1 is an unsupported encoding.</source>
+        <translation>Kódování %1 není podporováno.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-2584"/>
+        <source>The name of an option must have a prefix. There is no default namespace for options.</source>
+        <translation>Název volby musí mít předponu. Pro volby není žádná předloha pro jmenný prostor.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-1221"/>
+        <source>Element %1 must come last.</source>
+        <translation>Prvek %1 musí stát jako poslední.</translation>
+    </message>
+    <message>
+        <source>Attribute %1 cannot appear on the element %2. Allowed is %3, %4, and the standard attributes.</source>
+        <translation type="obsolete">Prvek %2 může mít jen vlastnost %3, %4 nebo vlastnosti, které jsou obvyklé, ne však %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qqnameconstructor_p.h" line="-12"/>
+        <source>No namespace binding exists for the prefix %1 in %2</source>
+        <translation>Neexistuje žádné svázání jmenného prostoru pro předponu %1 v %2</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+3238"/>
+        <source>The name %1 does not refer to any schema type.</source>
+        <translation>Název %1 nemá žádnou spojitost s jakýmkoli typem schématu.</translation>
+    </message>
+    <message>
+        <location line="-639"/>
+        <source>Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
+        <translation>Předponu %1 lze spojit pouze s %2. Toto je prohlášeno již dopředu..</translation>
+    </message>
+    <message>
+        <location line="-6517"/>
+        <source>W3C XML Schema identity constraint selector</source>
+        <translation>Přepínač omezení totožnosti W3C XML schéma</translation>
+    </message>
+    <message>
+        <location line="+3"/>
+        <source>W3C XML Schema identity constraint field</source>
+        <translation>Pole omezení totožnosti W3C XML schéma</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>A construct was encountered which is disallowed in the current language(%1).</source>
+        <translation>Narazilo se na výtvor, který v nynějším jazyce není povolen (%1).</translation>
+    </message>
+    <message>
+        <location line="+520"/>
+        <source>The initialization of variable %1 depends on itself</source>
+        <translation>Inicializace proměnné %1 je závislá na její vlastní hodnotě</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qdocumentcontentvalidator.cpp" line="+86"/>
+        <source>An attribute node cannot be a child of a document node. Therefore, the attribute %1 is out of place.</source>
+        <translation>Uzel vlastnosti se nesmí objevit jako potomek uzlu dokumentu. Objevil se uzel vlastnosti s názvem %1, který je proto nevhodný.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="-68"/>
+        <source>Month %1 is outside the range %2..%3.</source>
+        <translation>Údaj o měsíci %1 je mimo rozsah %2..%3.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+4311"/>
+        <source>The name of a variable bound in a for-expression must be different from the positional variable. Hence, the two variables named %1 collide.</source>
+        <translation>Název proměnné úzce spojené s pro-výrazem se musí lišit od poziční proměnné. Dvě proměnné s názvem %1 se z tohoto důvodu střetávají.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qqnameconstructor.cpp" line="+82"/>
+        <source>No namespace binding exists for the prefix %1</source>
+        <translation>Neexistuje žádné svázání jmenného prostoru pro předponu %1</translation>
+    </message>
+    <message>
+        <source>An %1-attribute with value %2 has already been declared.</source>
+        <translation type="obsolete">Prvek má již jednu vlastnost s názvem %1 s hodnotou %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qhexbinary.cpp" line="+19"/>
+        <source>%1 is not valid as a value of type %2.</source>
+        <translation>%1 není platný jako hodnota typu %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/type/qcardinality.cpp" line="+4"/>
+        <source>zero or more</source>
+        <translation>žádný nebo více</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+2482"/>
+        <location line="+71"/>
+        <source>%1 is not in the in-scope attribute declarations. Note that the schema import feature is not supported.</source>
+        <translation>%1 se nenachází v oblasti pod prohlášením vlastností. Všimněte si, že funkce zavedení schématu není podporována.</translation>
+    </message>
+    <message>
+        <location line="-2830"/>
+        <source>When function %1 is used for matching inside a pattern, the argument must be a variable reference or a string literal.</source>
+        <translation>Při použití funkce %1 k vyhodnocování uvnitř vyhledávacího vzoru musí být argumentem odkaz na proměnnou nebo řetězec tvořený písmeny.</translation>
+    </message>
+    <message>
+        <location line="+233"/>
+        <source>%1 is an invalid template mode name.</source>
+        <translation>%1 není platným názvem pro řežim předlohy.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qabstractduration.cpp" line="-7"/>
+        <source>At least one time component must appear after the %1-delimiter.</source>
+        <translation>Po %1-oddělovači se musí objevit alespoň jedna složka času.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/data/qabstractdatetime.cpp" line="+196"/>
+        <source>Overflow: Date can&apos;t be represented.</source>
+        <translation>Nelze představit datum (Přetečení).</translation>
+    </message>
+    <message>
+        <source>Operator %1 is not available between atomic values of type %2 and %3.</source>
+        <translation type="obsolete">Operátor %1 se nemůže používat u atomárních hodnot typů %2 a %3.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+87"/>
+        <source>A zone offset must be in the range %1..%2 inclusive. %3 is out of range.</source>
+        <translation>Rozdíl v časové zóně musí ležet v oblasti %1..%2 (včetně). %3 leží mimo oblast.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qassemblestringfns.cpp" line="+88"/>
+        <source>%1 is not a valid XML 1.0 character.</source>
+        <translation>%1 není platný znak XML 1.0.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qaggregatefns.cpp" line="+74"/>
+        <source>The first argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
+        <translation>První argument %1 nemůže být typu %2. Musí to být typ %3, %4 nebo %5.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qtimezonefns.cpp" line="+12"/>
+        <source>%1 is not a whole number of minutes.</source>
+        <translation>%1 není celočíselným údajem o minutách.</translation>
+    </message>
+    <message>
+        <source>Failure when casting from %1 to %2: %3</source>
+        <translation type="obsolete">Operace předvedení od %1 do %2 se nepodařila: %3</translation>
+    </message>
+    <message>
+        <source>It is not possible to cast from %1 to %2.</source>
+        <translation type="obsolete">Nelze provádět žádnou operaci předvedení od %1 do %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="-4204"/>
+        <source>No variable by name %1 exists</source>
+        <translation>Neexistuje žádná proměnná s názvem %1</translation>
+    </message>
+    <message>
+        <location line="+5919"/>
+        <source>Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
+        <translation>Jmenný prostor %1 lze spojit pouze s %2. Toto je stanoveno již dopředu.</translation>
+    </message>
+    <message>
+        <source>The second operand in a division, %1, cannot be zero (%2).</source>
+        <translation type="obsolete">Druhá veličina, operand, dělení %1 nesmí být nula (%2).</translation>
+    </message>
+    <message>
+        <location line="-6170"/>
+        <source>Only one %1 declaration can occur in the query prolog.</source>
+        <translation>Předmluva k dotazu (prolog) smí obsahovat pouze jedno %1-prohlášení.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qxslttokenizer.cpp" line="-151"/>
+        <source>Element %1 must have at least one of the attributes %2 or %3.</source>
+        <translation>Prvek %1 musí mít alespoň jednu z vlastností %2 nebo %3.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/functions/qdatetimefn.cpp" line="+86"/>
+        <source>If both values have zone offsets, they must have the same zone offset. %1 and %2 are not the same.</source>
+        <translation>Když jsou zadány obě hodnoty s časovými zónami, musí mít ten samý rozdíl v časové zóně. %1 a %2 nejsou to samé a jsou tím pádem nepřípustné.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/parser/qquerytransformparser.cpp" line="+4006"/>
+        <source>No external functions are supported. All supported functions can be used directly, without first declaring them as external</source>
+        <translation>Nejsou podporovány vnější funkce. Všechny podporované funkce se dají používat přímo, bez toho, že by byly nejprve prohlášeny za vnější</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/expr/qpath.cpp" line="+109"/>
+        <source>The last step in a path must contain either nodes or atomic values. It cannot be a mixture between the two.</source>
+        <translation>Poslední krok cesty musí obsahovat buď jen uzly nebo jen atomární hodnoty. Nesmí se vyskytovat společně.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/schema/qxsdparticlechecker.cpp" line="+165"/>
+        <source>Empty particle cannot be derived from non-empty particle.</source>
+        <translation>Prázdnou částici nelze odvodit z částice, která není prázdná.</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Derived particle is missing element %1.</source>
+        <translation>V odvozené částici chybí prvek %1.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Derived element %1 is missing value constraint as defined in base particle.</source>
+        <translation>V odvozeném prvku %1 chybí omezení hodnoty, jak je to stanoveno v základní částici.</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Derived element %1 has weaker value constraint than base particle.</source>
+        <translation>Odvozený prvek %1 má slabší omezení hodnoty než má základní částice.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Fixed value constraint of element %1 differs from value constraint in base particle.</source>
+        <translation>Pevné omezení hodnoty prvku %1 se liší od omezení hodnoty základní částici.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Derived element %1 cannot be nillable as base element is not nillable.</source>
+        <translation>Odvozený prvek %1 nemůže mít žádnou vlastnost &apos;nillable&apos;, neboť základní prvek žádnou nestanovuje.</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Block constraints of derived element %1 must not be more weaker than in the base element.</source>
+        <translation>Omezení bloku odvozeného prvku %1 nesmí být slabší než v základním prvku.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Simple type of derived element %1 cannot be validly derived from base element.</source>
+        <translation>Jednoduchý typ odvozeného prvku %1 nemůže být platně odvozen ze základního prvku.</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Complex type of derived element %1 cannot be validly derived from base element.</source>
+        <translation>Složitý typ odvozeného prvku %1 nemůže být platně odvozen ze základního prvku.</translation>
+    </message>
+    <message>
+        <location line="+24"/>
+        <source>Element %1 is missing in derived particle.</source>
+        <translation>Prvek %1 chybí v odvozené částici.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Element %1 does not match namespace constraint of wildcard in base particle.</source>
+        <translation>Prvek %1 neodpovídá omezení jmenného prostoru zástupného symbolu (vzor hledání) v základní částici.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Wildcard in derived particle is not a valid subset of wildcard in base particle.</source>
+        <translation>Zástupný symbol (vzor hledání) v odvozené částici není platnou dílčí množinou zástupného symbolu v základní částici.</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>processContent of wildcard in derived particle is weaker than wildcard in base particle.</source>
+        <translation>Vlastnost processContent zástupného symbolu (vzor hledání) odvozené částice je slabší než zástupný symbol (vzor hledání) v základní částici.</translation>
+    </message>
+    <message>
+        <location line="+240"/>
+        <source>Derived particle allows content that is not allowed in the base particle.</source>
+        <translation>Odvozená částice dovoluje obsah, který není přípustný pro základní částici.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/schema/qxsdschemachecker.cpp" line="+227"/>
+        <source>%1 has inheritance loop in its base type %2.</source>
+        <translation>%1 má ve svém základním typu  %2 v kruzích prováděnou dědičnost.</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <location line="+24"/>
+        <source>Circular inheritance of base type %1.</source>
+        <translation>V kruzích prováděná dědičnost v základním typu %1.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Circular inheritance of union %1.</source>
+        <translation>V kruzích prováděná dědičnost při sjednocení %1.</translation>
+    </message>
+    <message>
+        <location line="+25"/>
+        <source>%1 is not allowed to derive from %2 by restriction as the latter defines it as final.</source>
+        <translation>%1 není dovoleno odvodit z %2 pomocí omezení, neboť posledně uvedený ji určuje jako konečnou.</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>%1 is not allowed to derive from %2 by extension as the latter defines it as final.</source>
+        <translation>%1 není dovoleno odvodit z %2 pomocí rozšíření, neboť posledně uvedený ji určuje jako konečnou.</translation>
+    </message>
+    <message>
+        <location line="+31"/>
+        <source>Base type of simple type %1 cannot be complex type %2.</source>
+        <translation>Složitý typ %2 nemůže být základním typem jednoduchého typu %1.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Simple type %1 cannot have direct base type %2.</source>
+        <translation>Jednoduchý typ %1 nemůže mít přímý základní typ %2.</translation>
+    </message>
+    <message>
+        <location line="+33"/>
+        <location line="+9"/>
+        <source>Simple type %1 is not allowed to have base type %2.</source>
+        <translation>Jednoduchý typ %1 nesmí mít základní typ %2.</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>Simple type %1 can only have simple atomic type as base type.</source>
+        <translation>Jednoduchý typ %1 může mít jen jednoduchý malinký základní typ.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Simple type %1 cannot derive from %2 as the latter defines restriction as final.</source>
+        <translation>Jednoduchý typ %1 nesmí být odvozen z %2 , neboť poslední určuje omezení jako konečné.</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <location line="+484"/>
+        <source>Variety of item type of %1 must be either atomic or union.</source>
+        <translation>Rozmanitost složkových typů %1 musí být buď malinká nebo sjednocení.</translation>
+    </message>
+    <message>
+        <location line="-474"/>
+        <location line="+483"/>
+        <source>Variety of member types of %1 must be atomic.</source>
+        <translation>Rozmanitost členských typů %1 musí být malinká.</translation>
+    </message>
+    <message>
+        <location line="-470"/>
+        <location line="+451"/>
+        <source>%1 is not allowed to derive from %2 by list as the latter defines it as final.</source>
+        <translation>%1 není dovoleno odvodit z %2 pomocí seznamu, neboť posledně uvedený ji určuje jako konečnou.</translation>
+    </message>
+    <message>
+        <location line="-431"/>
+        <source>Simple type %1 is only allowed to have %2 facet.</source>
+        <translation>Jednoduchý typ %1 může mít jen stránky %2.</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Base type of simple type %1 must have variety of type list.</source>
+        <translation>Základní typ jednoduchého typu %1 musí mít rozmanitost seznamu typů.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Base type of simple type %1 has defined derivation by restriction as final.</source>
+        <translation>Základní typ jednoduchého typu %1 určuje sjednocení pomocí omezení jako konečné.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Item type of base type does not match item type of %1.</source>
+        <translation>Složkový typ základního typu neodpovídá složkovému typu %1.</translation>
+    </message>
+    <message>
+        <location line="+26"/>
+        <location line="+93"/>
+        <source>Simple type %1 contains not allowed facet type %2.</source>
+        <translation>Jednoduchý typ %1 obsahuje nedovolený typ stránky %2.</translation>
+    </message>
+    <message>
+        <location line="-72"/>
+        <location line="+413"/>
+        <source>%1 is not allowed to derive from %2 by union as the latter defines it as final.</source>
+        <translation>%1 není dovoleno odvodit z %2 pomocí sjednocení, neboť posledně uvedený ji určuje jako konečnou.</translation>
+    </message>
+    <message>
+        <location line="-404"/>
+        <source>%1 is not allowed to have any facets.</source>
+        <translation>%1 nesmí mít žádné stránky.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Base type %1 of simple type %2 must have variety of union.</source>
+        <translation>Základní typ %1 jednoduchého typu %2 musí mít rozmanitost sjednocení typů.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Base type %1 of simple type %2 is not allowed to have restriction in %3 attribute.</source>
+        <translation>Základní typ %1 jednoduchého typu %2 nesmí mít žádné omezení vlastnosti %3.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Member type %1 cannot be derived from member type %2 of %3&apos;s base type %4.</source>
+        <translation>Členský typ %1 nemůže být odvozen z členského typu %2 ze základního typu %4 %3.</translation>
+    </message>
+    <message>
+        <location line="+65"/>
+        <source>Derivation method of %1 must be extension because the base type %2 is a simple type.</source>
+        <translation>Rozšíření s musí používat jako způsob dědičnosti (odvození) pro %1, neboť základní typ %2 je jednoduchým typem.</translation>
+    </message>
+    <message>
+        <location line="+30"/>
+        <source>Complex type %1 has duplicated element %2 in its content model.</source>
+        <translation>Složitý typ %1 má zdvojený prvek %2 ve svém modelu obsahu.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Complex type %1 has non-deterministic content.</source>
+        <translation>Složitý typ %1 má ne-neměnný obsah.</translation>
+    </message>
+    <message>
+        <location line="+21"/>
+        <source>Attributes of complex type %1 are not a valid extension of the attributes of base type %2: %3.</source>
+        <translation>Vlastnosti složitého typu %1 nejsou žádným platným rozšířením vlastností základního typu %2: %3.</translation>
+    </message>
+    <message>
+        <location line="+37"/>
+        <source>Content model of complex type %1 is not a valid extension of content model of %2.</source>
+        <translation>Model obsahu složitého typu %1 není žádným platným rozšířením modelu obsahu %2.</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Complex type %1 must have simple content.</source>
+        <translation>Složitý typ %1 musí mít jednoduchý obsah.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Complex type %1 must have the same simple type as its base class %2.</source>
+        <translation>Složitý typ %1 musí mít jednoduchý obsah.</translation>
+    </message>
+    <message>
+        <location line="+67"/>
+        <source>Complex type %1 cannot be derived from base type %2%3.</source>
+        <translation>Složitý typ %2 nemůže být odvozen ze základního typu %2%3.</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Attributes of complex type %1 are not a valid restriction from the attributes of base type %2: %3.</source>
+        <translation>Vlastnosti složitého typu %1  nejsou žádným platným omezením vlastností základního typu %2: %3.</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Complex type %1 with simple content cannot be derived from complex base type %2.</source>
+        <translation>Složitý typ %1 s jednoduchým obsahem nemůže být odvozen ze složitého základního typu %2.</translation>
+    </message>
+    <message>
+        <location line="+35"/>
+        <source>Item type of simple type %1 cannot be a complex type.</source>
+        <translation>Složkový typ jednoduchého typu %1 nemůže být složitým typem.</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>Member type of simple type %1 cannot be a complex type.</source>
+        <translation>Členský typ jednoduchého typu %1 nemůže být složitým typem.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>%1 is not allowed to have a member type with the same name as itself.</source>
+        <translation>%1 nesmí mít členský typ se stejným názvem, jaký má sám.</translation>
+    </message>
+    <message>
+        <location line="+83"/>
+        <location line="+29"/>
+        <location line="+34"/>
+        <source>%1 facet collides with %2 facet.</source>
+        <translation>Stránka %1 se střetává se stránkou %2.</translation>
+    </message>
+    <message>
+        <location line="-20"/>
+        <source>%1 facet must have the same value as %2 facet of base type.</source>
+        <translation>Stránka %1 musí mít tutéž hodnotu, jakou má stránka %2 základního typu.</translation>
+    </message>
+    <message>
+        <location line="+37"/>
+        <source>%1 facet must be equal or greater than %2 facet of base type.</source>
+        <translation>Stránka %1 musí být stejná nebo větší než stránka %2 základního typu.</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <location line="+125"/>
+        <location line="+55"/>
+        <location line="+12"/>
+        <location line="+91"/>
+        <location line="+58"/>
+        <location line="+34"/>
+        <location line="+35"/>
+        <source>%1 facet must be less than or equal to %2 facet of base type.</source>
+        <translation>Stránka %1 musí být menší nebo stejná jako stránka %2 základního typu.</translation>
+    </message>
+    <message>
+        <location line="-389"/>
+        <source>%1 facet contains invalid regular expression</source>
+        <translation>Stránka %1 obsahuje neplatný pravidelný výraz</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Unknown notation %1 used in %2 facet.</source>
+        <translation>Stránka %2 obsahuje neplatné zaznamenání %1.</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>%1 facet contains invalid value %2: %3.</source>
+        <translation>Stránka %1 obsahuje neplatnou hodnotu %2: %3.</translation>
+    </message>
+    <message>
+        <location line="+22"/>
+        <source>%1 facet cannot be %2 or %3 if %4 facet of base type is %5.</source>
+        <translation>Stránka %1 nesmí být %2 nebo %3, pokud je stránka %4 základního typu %5.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>%1 facet cannot be %2 if %3 facet of base type is %4.</source>
+        <translation>Stránka %1 nesmí být %2, pokud je stránka %3 základního typu %4.</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <location line="+55"/>
+        <location line="+230"/>
+        <source>%1 facet must be less than or equal to %2 facet.</source>
+        <translation>Stránka %1 musí být menší nebo stejná jako stránka %2.</translation>
+    </message>
+    <message>
+        <location line="-257"/>
+        <location line="+134"/>
+        <location line="+82"/>
+        <source>%1 facet must be less than %2 facet of base type.</source>
+        <translation>Stránka %1 musí být menší než stránka %2 základního typu.</translation>
+    </message>
+    <message>
+        <location line="-201"/>
+        <location line="+79"/>
+        <source>%1 facet and %2 facet cannot appear together.</source>
+        <translation>Stránky %1 a %2 se nemohou objevit spolu.</translation>
+    </message>
+    <message>
+        <location line="-27"/>
+        <location line="+12"/>
+        <location line="+113"/>
+        <source>%1 facet must be greater than %2 facet of base type.</source>
+        <translation>Stránka %1 musí být větší než stránka %2 základního typu.</translation>
+    </message>
+    <message>
+        <location line="-86"/>
+        <location line="+58"/>
+        <source>%1 facet must be less than %2 facet.</source>
+        <translation>Stránka %1 musí být menší než stránka %2.</translation>
+    </message>
+    <message>
+        <location line="-42"/>
+        <location line="+58"/>
+        <source>%1 facet must be greater than or equal to %2 facet of base type.</source>
+        <translation>Stránka %1 musí být větší nebo stejná jako stránka %2 základního typu.</translation>
+    </message>
+    <message>
+        <location line="+113"/>
+        <source>Simple type contains not allowed facet %1.</source>
+        <translation>Jednoduchý typ obsahuje nedovolenou stránku %1.</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>%1, %2, %3, %4, %5 and %6 facets are not allowed when derived by list.</source>
+        <translation>Stránky %1, %2, %3, %4, %5 a %6 nejsou při odvození (dědičnosti) pomocí seznamu dovoleny.</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Only %1 and %2 facets are allowed when derived by union.</source>
+        <translation>Při odvození (dědičnosti) pomocí sjednocení jsou dovoleny pouze stránky %1 a %2.</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <location line="+16"/>
+        <source>%1 contains %2 facet with invalid data: %3.</source>
+        <translation>%1 obsahuje stránku %2 s neplatnými daty: %3.</translation>
+    </message>
+    <message>
+        <location line="+24"/>
+        <source>Attribute group %1 contains attribute %2 twice.</source>
+        <translation>Skupina vlastností %1 obsahuje vlastnost %2 dvakrát.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Attribute group %1 contains two different attributes that both have types derived from %2.</source>
+        <translation>Skupina vlastností %1 obsahuje dvě rozdílné vlastnosti, obě s typy, které jsou odvozeny z %2.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Attribute group %1 contains attribute %2 that has value constraint but type that inherits from %3.</source>
+        <translation>Skupina vlastností %1 obsahuje vlastnost %2 s omezením hodnoty, typ je ale odvozen z %3.</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Complex type %1 contains attribute %2 twice.</source>
+        <translation>Složitý typ %1 obsahuje vlastnost %2 dvakrát.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Complex type %1 contains two different attributes that both have types derived from %2.</source>
+        <translation>Složitý typ %1 obsahuje dvě rozdílné vlastnosti, obě s typy, které jsou odvozeny z %2.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Complex type %1 contains attribute %2 that has value constraint but type that inherits from %3.</source>
+        <translation>Složitý typ %1 obsahuje vlastnost %2 s omezením hodnoty, typ je ale odvozen z %3.</translation>
+    </message>
+    <message>
+        <location line="+43"/>
+        <source>Element %1 is not allowed to have a value constraint if its base type is complex.</source>
+        <translation>Prvek %1 nesmí mít omezení hodnoty, když je základní typ složitý.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Element %1 is not allowed to have a value constraint if its type is derived from %2.</source>
+        <translation>Prvek %1 nesmí mít omezení hodnoty, když je jeho typ odvozen z %2.</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <location line="+11"/>
+        <source>Value constraint of element %1 is not of elements type: %2.</source>
+        <translation>Omezení hodnoty prvku %1 není z typu prvku: %2.</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Element %1 is not allowed to have substitution group affiliation as it is no global element.</source>
+        <translation>Prvek %1 nesmí patřit k skupině nahrazení, neboť není celkovým prvkem.</translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <source>Type of element %1 cannot be derived from type of substitution group affiliation.</source>
+        <translation>Typ prvku %1 nemůže být odvozen z typu příslušné skupiny nahrazení.</translation>
+    </message>
+    <message>
+        <location line="+41"/>
+        <source>Value constraint of attribute %1 is not of attributes type: %2.</source>
+        <translation>Omezení hodnoty vlastnosti %1 není z typu vlastnosti: %2.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Attribute %1 has value constraint but has type derived from %2.</source>
+        <translation>Vlastnost %1 má mezení hodnoty, ale její typ je odvozen z %2.</translation>
+    </message>
+    <message>
+        <location line="+56"/>
+        <source>%1 attribute in derived complex type must be %2 like in base type.</source>
+        <translation>Vlastnost %1 v odvozeném složitém typu musí být jako v základním typu %2.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Attribute %1 in derived complex type must have %2 value constraint like in base type.</source>
+        <translation>Vlastnost %1 v odvozeném složitém typu musí mít omezení hodnoty jako v základním typu %2.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Attribute %1 in derived complex type must have the same %2 value constraint like in base type.</source>
+        <translation>Vlastnost %1 v odvozeném složitém typu musí mít stejné omezení hodnoty %2 jako v základním typu.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Attribute %1 in derived complex type must have %2 value constraint.</source>
+        <translation>Vlastnost %1 v odvozeném složitém typu musí omezení hodnoty %2.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>processContent of base wildcard must be weaker than derived wildcard.</source>
+        <translation>Vlastnost &apos;processContent&apos; základního zástupného symbolu (vzor hledání) musí být slabší než odvozený zástupný symbol (vzor hledání).</translation>
+    </message>
+    <message>
+        <location line="+39"/>
+        <location line="+15"/>
+        <source>Element %1 exists twice with different types.</source>
+        <translation>Prvek %1 existuje dvakrát s rozdílnými typy.</translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <source>Particle contains non-deterministic wildcards.</source>
+        <translation>Částice obsahuje ne-neměnné zástupné symboly (vzory hledání).</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/schema/qxsdschemahelper.cpp" line="+691"/>
+        <location line="+63"/>
+        <source>Base attribute %1 is required but derived attribute is not.</source>
+        <translation>Základní vlastnost %1 je vyžadována, ale odvozená vlastnost není.</translation>
+    </message>
+    <message>
+        <location line="-57"/>
+        <source>Type of derived attribute %1 cannot be validly derived from type of base attribute.</source>
+        <translation>Typ odvozené vlastnosti %1 nemůže být platně odvozen z typu základní vlastnosti.</translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <source>Value constraint of derived attribute %1 does not match value constraint of base attribute.</source>
+        <translation>Omezení hodnoty odvozené vlastnosti %1 neodpovídá omezení hodnoty základní vlastnosti.</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Derived attribute %1 does not exists in the base definition.</source>
+        <translation>Odvozená vlastnost %1 neexistuje v základním vymezení.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Derived attribute %1 does not match the wildcard in the base definition.</source>
+        <translation>Odvozená vlastnost %1 neodpovídá zástupnému symbolu (vzoru hledání) v základním vymezení.</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Base attribute %1 is required but missing in derived definition.</source>
+        <translation>Základní vlastnost %1 je vyžadována, ale chybí v odvozeném vymezení.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Derived definition contains an %1 element that does not exists in the base definition</source>
+        <translation>Odvozené vymezení obsahuje prvek %1, který v základním vymezení neexistuje</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Derived wildcard is not a subset of the base wildcard.</source>
+        <translation>Odvozený zástupný symbol (vzor hledání) není žádnou dílčí množinou základního zástupného symbolu (vzoru hledání).</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>%1 of derived wildcard is not a valid restriction of %2 of base wildcard</source>
+        <translation>Vlastnost %1 odvozeného zástupného symbolu (vzoru hledání) není platným omezením %2 základního zástupného symbolu (vzoru hledání)</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Attribute %1 from base type is missing in derived type.</source>
+        <translation>Vlastnost %1 základního typu chybí v odvozeném typu.</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Type of derived attribute %1 differs from type of base attribute.</source>
+        <translation>Typ odvozené vlastnosti %1 se liší od typu základní vlastnosti.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Base definition contains an %1 element that is missing in the derived definition</source>
+        <translation>Základní vymezení obsahuje prvek %1, který v odvozeném vymezení chybí</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/schema/qxsdschemaparser.cpp" line="+170"/>
+        <source>Can not process unknown element %1, expected elements are: %2.</source>
+        <translation>Nelze zpracovat neznámý prvek %1, očekávanými prvky jsou: %2.</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Element %1 is not allowed in this scope, possible elements are: %2.</source>
+        <translation>Prvek %1 není v této oblasti dovolen; možnými prvky jsou: %2.</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Child element is missing in that scope, possible child elements are: %1.</source>
+        <translation>Podprvek v oblasti chybí; možnými podprvky jsou: %1.</translation>
+    </message>
+    <message>
+        <location line="+127"/>
+        <source>Document is not a XML schema.</source>
+        <translation>Dokument není schématem XML.</translation>
+    </message>
+    <message>
+        <location line="+22"/>
+        <source>%1 attribute of %2 element contains invalid content: {%3} is not a value of type %4.</source>
+        <translation>Vlastnost %1 prvku %2 obsahuje neplatný obsah: {%3} není hodnotou typu %4.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>%1 attribute of %2 element contains invalid content: {%3}.</source>
+        <translation>Vlastnost %1 prvku %2 obsahuje neplatný obsah: {%3}.</translation>
+    </message>
+    <message>
+        <location line="+26"/>
+        <source>Target namespace %1 of included schema is different from the target namespace %2 as defined by the including schema.</source>
+        <translation>Cílový jmenný prostor %1 zahrnutého schématu se liší od jím vymezeného cílového jmenného prostoru %2.</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <location line="+11"/>
+        <source>Target namespace %1 of imported schema is different from the target namespace %2 as defined by the importing schema.</source>
+        <translation>Cílový jmenný prostor %1 zavedeného schématu se liší od jím vymezeného cílového jmenného prostoru %2.</translation>
+    </message>
+    <message>
+        <location line="+237"/>
+        <source>%1 element is not allowed to have the same %2 attribute value as the target namespace %3.</source>
+        <translation>Prvek %1 nemůže stanovit cílový jmenný prostor %3 jako hodnotu vlastnosti %2.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>%1 element without %2 attribute is not allowed inside schema without target namespace.</source>
+        <translation>Ve schématu bez jmenného prostoru musí mít prvek %1 vlastnost %2.</translation>
+    </message>
+    <message>
+        <location line="+833"/>
+        <location line="+158"/>
+        <source>%1 element is not allowed inside %2 element if %3 attribute is present.</source>
+        <translation>Když je přítomna vlastnost %3, nesmí se vyskytovat prvek %1 v prvku %2.</translation>
+    </message>
+    <message>
+        <location line="-97"/>
+        <location line="+119"/>
+        <location line="+92"/>
+        <source>%1 element has neither %2 attribute nor %3 child element.</source>
+        <translation>Prvek %1 nemá ani vlastnost %2 ani podprvek %3.</translation>
+    </message>
+    <message>
+        <location line="+835"/>
+        <location line="+1474"/>
+        <location line="+232"/>
+        <location line="+7"/>
+        <location line="+260"/>
+        <location line="+17"/>
+        <location line="+258"/>
+        <location line="+6"/>
+        <location line="+17"/>
+        <location line="+6"/>
+        <location line="+17"/>
+        <location line="+11"/>
+        <location line="+11"/>
+        <location line="+11"/>
+        <source>%1 element with %2 child element must not have a %3 attribute.</source>
+        <translation>Prvek %1 nesmí mít vlastnost %3, když existuje podprvek %2.</translation>
+    </message>
+    <message>
+        <location line="-1325"/>
+        <source>%1 attribute of %2 element must be %3 or %4.</source>
+        <translation>Vlastnost %1 prvku %2 může být jen %3 nebo %4.</translation>
+    </message>
+    <message>
+        <location line="+36"/>
+        <source>%1 attribute of %2 element must have a value of %3.</source>
+        <translation>Vlastnost %1 prvku %2 musí mít hodnotu %3.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <location line="+34"/>
+        <source>%1 attribute of %2 element must have a value of %3 or %4.</source>
+        <translation>Vlastnost %1 prvku %2 může mít jen jednu z hodnot %3 nebo %4.</translation>
+    </message>
+    <message>
+        <location line="+319"/>
+        <location line="+129"/>
+        <location line="+9"/>
+        <location line="+7"/>
+        <location line="+7"/>
+        <location line="+327"/>
+        <location line="+203"/>
+        <location line="+6"/>
+        <location line="+6"/>
+        <location line="+6"/>
+        <location line="+6"/>
+        <location line="+6"/>
+        <location line="+6"/>
+        <location line="+77"/>
+        <source>%1 element must not have %2 and %3 attribute together.</source>
+        <translation>Vlastnosti %2 a %3 se v prvku %1 nemohou objevit společně.</translation>
+    </message>
+    <message>
+        <location line="-768"/>
+        <location line="+222"/>
+        <source>Content of %1 attribute of %2 element must not be from namespace %3.</source>
+        <translation>Obsah vlastnosti %1 prvku %2 nemůže pocházet ze jmenného prostoru %3.</translation>
+    </message>
+    <message>
+        <location line="-215"/>
+        <location line="+222"/>
+        <source>%1 attribute of %2 element must not be %3.</source>
+        <translation>Vlastnost %1 prvku %2 nemůže být %3.</translation>
+    </message>
+    <message>
+        <location line="-64"/>
+        <source>%1 attribute of %2 element must have the value %3 because the %4 attribute is set.</source>
+        <translation>Vlastnost %1 prvku %2 musí mít hodnotu %3, protože je nastavena vlastnost %4.</translation>
+    </message>
+    <message>
+        <location line="+187"/>
+        <source>Specifying use=&apos;prohibited&apos; inside an attribute group has no effect.</source>
+        <translation>Zadání use=&apos;prohibited&apos; ve skupině vlastností nemá naprosto žádný účinek.</translation>
+    </message>
+    <message>
+        <location line="+353"/>
+        <source>%1 element must have either %2 or %3 attribute.</source>
+        <translation>Prvek %1 musí mít buď vlastnost %2 nebo %3.</translation>
+    </message>
+    <message>
+        <location line="+554"/>
+        <source>%1 element must have either %2 attribute or %3 or %4 as child element.</source>
+        <translation>Prvek %1 musí mít buď vlastnost %2, nebo mít %3 nebo %4 jako podprvek.</translation>
+    </message>
+    <message>
+        <location line="+55"/>
+        <source>%1 element requires either %2 or %3 attribute.</source>
+        <translation>Prvek %1 vyžaduje buď vlastnost %2 nebo %3.</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>Text or entity references not allowed inside %1 element</source>
+        <translation>Text nebo odkazy na entitu nejsou v prvku %1 dovoleny</translation>
+    </message>
+    <message>
+        <location line="+41"/>
+        <location line="+112"/>
+        <source>%1 attribute of %2 element must contain %3, %4 or a list of URIs.</source>
+        <translation>Vlastnost %1 prvku %2 musí obsahovat %3, %4 nebo seznam adres (URL).</translation>
+    </message>
+    <message>
+        <location line="+126"/>
+        <source>%1 element is not allowed in this context.</source>
+        <translation>Prvek %1 není v této souvislosti dovolen.</translation>
+    </message>
+    <message>
+        <location line="+53"/>
+        <source>%1 attribute of %2 element has larger value than %3 attribute.</source>
+        <translation>Hodnota vlastnosti %1 prvku %2 je větší než hodnota vlastnosti %3.</translation>
+    </message>
+    <message>
+        <location line="+25"/>
+        <source>Prefix of qualified name %1 is not defined.</source>
+        <translation>Předpona způsobilého názvu %1 není stanovena.</translation>
+    </message>
+    <message>
+        <location line="+65"/>
+        <location line="+61"/>
+        <source>%1 attribute of %2 element must either contain %3 or the other values.</source>
+        <translation>Hodnota vlastnosti %1 prvku %2 musí obsahovat buď %3 nebo jiné hodnoty.</translation>
+    </message>
+    <message>
+        <location line="+131"/>
+        <source>Component with id %1 has been defined previously.</source>
+        <translation>Součást s ID %1 je již stanovena.</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Element %1 already defined.</source>
+        <translation>Prvek %1 je již stanoven.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Attribute %1 already defined.</source>
+        <translation>Vlastnost %1 je již stanovena.</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Type %1 already defined.</source>
+        <translation>Typ %1 je již stanoven.</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Attribute group %1 already defined.</source>
+        <translation>Skupina vlastností %1 je již stanovena.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Element group %1 already defined.</source>
+        <translation>Skupina prvků %1 je již stanovena.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Notation %1 already defined.</source>
+        <translation>Zápis %1 je již stanoven.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Identity constraint %1 already defined.</source>
+        <translation>Omezení totožnosti %1 je již stanoveno.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Duplicated facets in simple type %1.</source>
+        <translation>Zdvojené stránky v jednoduchém typu %1.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/schema/qxsdschemaresolver.cpp" line="+354"/>
+        <source>%1 references unknown %2 or %3 element %4.</source>
+        <translation>%1 odkazuje na neznámý prvek %4 (%2 nebo %3).</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>%1 references identity constraint %2 that is no %3 or %4 element.</source>
+        <translation>%1 odkazuje na omezení totožnosti %2, které není ani prvek &apos;%3&apos; ani &apos;%4&apos;.</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>%1 has a different number of fields from the identity constraint %2 that it references.</source>
+        <translation>U %1 se liší počet polí od omezení totožnosti %2, na kterou odkazuje.</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Base type %1 of %2 element cannot be resolved.</source>
+        <translation>Základní typ %1 prvku %2 nemůže být vyřešen.</translation>
+    </message>
+    <message>
+        <location line="+84"/>
+        <source>Item type %1 of %2 element cannot be resolved.</source>
+        <translation>Složkový typ %1 prvku %2 nemůže být vyřešen.</translation>
+    </message>
+    <message>
+        <location line="+31"/>
+        <source>Member type %1 of %2 element cannot be resolved.</source>
+        <translation>Členský typ %1 prvku %2 nemůže být vyřešen.</translation>
+    </message>
+    <message>
+        <location line="+28"/>
+        <location line="+408"/>
+        <location line="+30"/>
+        <source>Type %1 of %2 element cannot be resolved.</source>
+        <translation>Typ %1 prvku %2 nemůže být vyřešen.</translation>
+    </message>
+    <message>
+        <location line="-416"/>
+        <source>Base type %1 of complex type cannot be resolved.</source>
+        <translation>Základní typ %1 složitého typu nemůže být vyřešen.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>%1 cannot have complex base type that has a %2.</source>
+        <translation>%1 nelze mít žádný složitý základní typ, který má %2.</translation>
+    </message>
+    <message>
+        <location line="+279"/>
+        <source>Content model of complex type %1 contains %2 element so it cannot be derived by extension from a non-empty type.</source>
+        <translation>Model obsahu složitého typu %1 obsahuje prvek %2; nelze jej proto odvodit pomocí rozšíření z ne-prázdného typu.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Complex type %1 cannot be derived by extension from %2 as the latter contains %3 element in its content model.</source>
+        <translation>Složitý typ %1 nemůže být odvozen pomocí rozšíření z %2, neboť poslední obsahuje prvek &apos;%3&apos; ve svém modelu obsahu.</translation>
+    </message>
+    <message>
+        <location line="+101"/>
+        <source>Type of %1 element must be a simple type, %2 is not.</source>
+        <translation>Typ prvku %1 musí být jednoduchým prvkem, což %2 není.</translation>
+    </message>
+    <message>
+        <location line="+62"/>
+        <source>Substitution group %1 of %2 element cannot be resolved.</source>
+        <translation>Skupina nahrazení %1 prvku %2 nemůže být vyřešena.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Substitution group %1 has circular definition.</source>
+        <translation>Skupina nahrazení %1 má v kruzích prováděné vymezení.</translation>
+    </message>
+    <message>
+        <location line="+120"/>
+        <location line="+7"/>
+        <source>Duplicated element names %1 in %2 element.</source>
+        <translation>Název prvku %1 se vyskytuje v prvku %2 vícekrát.</translation>
+    </message>
+    <message>
+        <location line="+29"/>
+        <location line="+52"/>
+        <location line="+71"/>
+        <location line="+28"/>
+        <source>Reference %1 of %2 element cannot be resolved.</source>
+        <translation>Odkaz %1 prvku %2 nemůže být vyřešen.</translation>
+    </message>
+    <message>
+        <location line="-138"/>
+        <source>Circular group reference for %1.</source>
+        <translation>V kruzích prováděný skupinový odkaz pro %1.</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>%1 element is not allowed in this scope</source>
+        <translation>Prvek %1 není v této oblasti dovolen</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>%1 element cannot have %2 attribute with value other than %3.</source>
+        <translation>Hodnota vlastnosti %2 prvku %1 může být pouze %3.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>%1 element cannot have %2 attribute with value other than %3 or %4.</source>
+        <translation>Hodnota vlastnosti %2 prvku %1 může být pouze %3 nebo %4.</translation>
+    </message>
+    <message>
+        <location line="+91"/>
+        <source>%1 or %2 attribute of reference %3 does not match with the attribute declaration %4.</source>
+        <translation>Vlastnost %1 nebo %2 odkazu %3 neodpovídá prohlášení vlastnosti %4.</translation>
+    </message>
+    <message>
+        <location line="+25"/>
+        <source>Attribute group %1 has circular reference.</source>
+        <translation>Skupina vlastnosti %1 má kruzích prováděný odkaz.</translation>
+    </message>
+    <message>
+        <location line="+131"/>
+        <source>%1 attribute in %2 must have %3 use like in base type %4.</source>
+        <translation>Vlastnost %1 v %2 musí mít použití &apos;%3&apos; jako v základním typu %4.</translation>
+    </message>
+    <message>
+        <location line="+52"/>
+        <source>Attribute wildcard of %1 is not a valid restriction of attribute wildcard of base type %2.</source>
+        <translation>Zástupný symbol vlastnosti (vzor hledání) %1není platným omezením zástupného symbolu vlastnosti (vzoru hledání) základního typu %2.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>%1 has attribute wildcard but its base type %2 has not.</source>
+        <translation>%1 má zástupný symbol vlastnosti (vzor hledání), ale jeho základní typ %2 nemá.</translation>
+    </message>
+    <message>
+        <location line="+26"/>
+        <source>Union of attribute wildcard of type %1 and attribute wildcard of its base type %2 is not expressible.</source>
+        <translation>Sjednocení zástupného symbolu vlastnosti (vzoru hledání) typu %1 a zástupného symbolu vlastnosti (vzoru hledání) jeho základního typu %2 není vyjádřitelné.</translation>
+    </message>
+    <message>
+        <location line="+48"/>
+        <source>Enumeration facet contains invalid content: {%1} is not a value of type %2.</source>
+        <translation>Výčtová stránka obsahuje neplatný obsah: {%1} není hodnotou typu %2.</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Namespace prefix of qualified name %1 is not defined.</source>
+        <translation>Předpona jmenného prostoru způsobilého názvu %1 není stanovena.</translation>
+    </message>
+    <message>
+        <location line="+51"/>
+        <location line="+18"/>
+        <source>%1 element %2 is not a valid restriction of the %3 element it redefines: %4.</source>
+        <translation>Prvek %2 (%1) není platným omezením přepisovaného prvku (%3): %4.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/schema/qxsdtypechecker.cpp" line="+233"/>
+        <location line="+7"/>
+        <location line="+21"/>
+        <source>%1 is not valid according to %2.</source>
+        <translation>%1 je podle %2 neplatné.</translation>
+    </message>
+    <message>
+        <location line="+167"/>
+        <source>String content does not match the length facet.</source>
+        <translation>Obsah řetězce znaků neodpovídá stránce délky.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>String content does not match the minLength facet.</source>
+        <translation>Obsah řetězce znaků neodpovídá stránce délky (nejmenší údaj, &apos;minLength&apos;).</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>String content does not match the maxLength facet.</source>
+        <translation>Obsah řetězce znaků neodpovídá stránce délky (největší údaj; &apos;maxLength&apos;).</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>String content does not match pattern facet.</source>
+        <translation>Obsah řetězce znaků neodpovídá stránce vzoru pro hledání.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>String content is not listed in the enumeration facet.</source>
+        <translation>Obsah řetězce znaků není obsažen ve výčtové stránce.</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Signed integer content does not match the maxInclusive facet.</source>
+        <translation>Celočíselná hodnota označená znaménkem neodpovídá stránce &apos;maxInclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Signed integer content does not match the maxExclusive facet.</source>
+        <translation>Celočíselná hodnota označená znaménkem neodpovídá stránce &apos;maxExclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Signed integer content does not match the minInclusive facet.</source>
+        <translation>Celočíselná hodnota označená znaménkem neodpovídá stránce &apos;minInclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Signed integer content does not match the minExclusive facet.</source>
+        <translation>Celočíselná hodnota označená znaménkem neodpovídá stránce &apos;minExclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Signed integer content is not listed in the enumeration facet.</source>
+        <translation>Celočíselná hodnota označená znaménkem není obsažena ve výčtové stránce.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Signed integer content does not match pattern facet.</source>
+        <translation>Celočíselná hodnota označená znaménkem neodpovídá stránce vzoru pro hledání.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Signed integer content does not match in the totalDigits facet.</source>
+        <translation>Celočíselná hodnota označená znaménkem neodpovídá stránce &apos;totalDigits&apos;.</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Unsigned integer content does not match the maxInclusive facet.</source>
+        <translation>Celočíselná hodnota jsoucí bez znaménka neodpovídá stránce &apos;maxInclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Unsigned integer content does not match the maxExclusive facet.</source>
+        <translation>Celočíselná hodnota jsoucí bez znaménka neodpovídá stránce &apos;maxExclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Unsigned integer content does not match the minInclusive facet.</source>
+        <translation>Celočíselná hodnota jsoucí bez znaménka neodpovídá stránce &apos;minInclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Unsigned integer content does not match the minExclusive facet.</source>
+        <translation>Celočíselná hodnota jsoucí bez znaménka neodpovídá stránce &apos;minExclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Unsigned integer content is not listed in the enumeration facet.</source>
+        <translation>Celočíselná hodnota jsoucí bez znaménka není obsažena ve výčtové stránce.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Unsigned integer content does not match pattern facet.</source>
+        <translation>Celočíselná hodnota jsoucí bez znaménka neodpovídá stránce vzoru pro hledání.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Unsigned integer content does not match in the totalDigits facet.</source>
+        <translation>Celočíselná hodnota jsoucí bez znaménka neodpovídá stránce &apos;totalDigits&apos;.</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Double content does not match the maxInclusive facet.</source>
+        <translation>Číslo s pohyblivou čárkou neodpovídá stránce &apos;maxInclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Double content does not match the maxExclusive facet.</source>
+        <translation>Číslo s pohyblivou čárkou neodpovídá stránce &apos;maxExclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Double content does not match the minInclusive facet.</source>
+        <translation>Číslo s pohyblivou čárkou neodpovídá stránce &apos;minInclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Double content does not match the minExclusive facet.</source>
+        <translation>Číslo s pohyblivou čárkou neodpovídá stránce &apos;minExclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Double content is not listed in the enumeration facet.</source>
+        <translation>Číslo s pohyblivou čárkou není obsaženo ve výčtové stránce.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Double content does not match pattern facet.</source>
+        <translation>Číslo s pohyblivou čárkou neodpovídá stránce vzoru pro hledání.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Decimal content does not match in the fractionDigits facet.</source>
+        <translation>Desetinné číslo neodpovídá stránce &apos;fractionDigits&apos;.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Decimal content does not match in the totalDigits facet.</source>
+        <translation>Desetinné číslo neodpovídá stránce &apos;totalDigits&apos;.</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Date time content does not match the maxInclusive facet.</source>
+        <translation>Údaj o datu neodpovídá stránce &apos;maxInclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Date time content does not match the maxExclusive facet.</source>
+        <translation>Údaj o datu neodpovídá stránce &apos;maxExclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Date time content does not match the minInclusive facet.</source>
+        <translation>Údaj o datu neodpovídá stránce &apos;minInclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Date time content does not match the minExclusive facet.</source>
+        <translation>Údaj o datu neodpovídá stránce &apos;minExclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Date time content is not listed in the enumeration facet.</source>
+        <translation>Údaj o datu není obsažen ve výčtové stránce.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Date time content does not match pattern facet.</source>
+        <translation>Údaj o datu neodpovídá stránce vzoru pro hledání.</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Duration content does not match the maxInclusive facet.</source>
+        <translation>Údaj o době trvání neodpovídá stránce &apos;maxInclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Duration content does not match the maxExclusive facet.</source>
+        <translation>Údaj o době trvání neodpovídá stránce &apos;maxExclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Duration content does not match the minInclusive facet.</source>
+        <translation>Údaj o době trvání neodpovídá stránce &apos;minInclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Duration content does not match the minExclusive facet.</source>
+        <translation>Údaj o době trvání neodpovídá stránce &apos;minExclusive&apos;.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Duration content is not listed in the enumeration facet.</source>
+        <translation>Údaj o době trvání není obsažen ve výčtové stránce.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Duration content does not match pattern facet.</source>
+        <translation>Údaj o době trvání neodpovídá stránce vzoru pro hledání.</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <source>Boolean content does not match pattern facet.</source>
+        <translation>Booleánská hodnota neodpovídá stránce vzoru pro hledání.</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>Binary content does not match the length facet.</source>
+        <translation>Binární obsah neodpovídá stránce délky.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Binary content does not match the minLength facet.</source>
+        <translation>Binární obsah neodpovídá stránce &apos;minLength&apos;.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Binary content does not match the maxLength facet.</source>
+        <translation>Binární obsah neodpovídá stránce &apos;maxLength&apos;.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Binary content is not listed in the enumeration facet.</source>
+        <translation>Binární obsah není obsažen ve výčtové stránce.</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <source>Invalid QName content: %1.</source>
+        <translation>Obsah způsobilého názvu (&apos;QName&apos;) je neplatný: %1.</translation>
+    </message>
+    <message>
+        <location line="+17"/>
+        <source>QName content is not listed in the enumeration facet.</source>
+        <translation>Obsah způsobilého názvu (&apos;QName&apos;) není obsažen ve výčtové stránce.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>QName content does not match pattern facet.</source>
+        <translation>Obsah způsobilého názvu (&apos;QName&apos;) neodpovídá stránce vzoru pro hledání.</translation>
+    </message>
+    <message>
+        <location line="+36"/>
+        <source>Notation content is not listed in the enumeration facet.</source>
+        <translation>Obsah zápisu není obsažen ve výčtové stránce.</translation>
+    </message>
+    <message>
+        <location line="+19"/>
+        <source>List content does not match length facet.</source>
+        <translation>Obsah seznamu neodpovídá stránce délky.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>List content does not match minLength facet.</source>
+        <translation>Obsah seznamu neodpovídá stránce &apos;minLength&apos;.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>List content does not match maxLength facet.</source>
+        <translation>Obsah seznamu neodpovídá stránce &apos;maxLength&apos;.</translation>
+    </message>
+    <message>
+        <location line="+90"/>
+        <source>List content is not listed in the enumeration facet.</source>
+        <translation>Obsah seznamu není obsažen ve výčtové stránce.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>List content does not match pattern facet.</source>
+        <translation>Obsah seznamu neodpovídá stránce vzoru pro hledání.</translation>
+    </message>
+    <message>
+        <location line="+39"/>
+        <source>Union content is not listed in the enumeration facet.</source>
+        <translation>Obsah sjednocení není obsažen ve výčtové stránce.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Union content does not match pattern facet.</source>
+        <translation>Obsah sjednocení neodpovídá stránce vzoru pro hledání.</translation>
+    </message>
+    <message>
+        <location line="+15"/>
+        <source>Data of type %1 are not allowed to be empty.</source>
+        <translation>Data typu %1 nemohou být prázdná.</translation>
+    </message>
+    <message>
+        <location filename="../src/xmlpatterns/schema/qxsdvalidatinginstancereader.cpp" line="+160"/>
+        <source>Element %1 is missing child element.</source>
+        <translation>U prvku %1 chybí podprvek.</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>There is one IDREF value with no corresponding ID: %1.</source>
+        <translation>Existuje hodnota IDREF, pro kterou neexistuje příslušné ID: %1.</translation>
+    </message>
+    <message>
+        <location line="+27"/>
+        <source>Loaded schema file is invalid.</source>
+        <translation>Nahraný soubor se schématem je neplatný.</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>%1 contains invalid data.</source>
+        <translation>%1 obsahuje neplatná data.</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>xsi:schemaLocation namespace %1 has already appeared earlier in the instance document.</source>
+        <translation>Jmenný prostor xsi:schemaLocation %1 byl již dříve v případovém dokumentu stanoven.</translation>
+    </message>
+    <message>
+        <location line="+22"/>
+        <source>xsi:noNamespaceSchemaLocation cannot appear after the first no-namespace element or attribute.</source>
+        <translation>xsi:noNamespaceSchemaLocation se nemůže objevit po prvním prvku nebo vlastnosti bez jmenného prostoru.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>No schema defined for validation.</source>
+        <translation>Pro schválení není stanoveno žádné schéma.</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>No definition for element %1 available.</source>
+        <translation>Pro prvek %1 není dostupné žádné vymezení.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <location line="+49"/>
+        <location line="+142"/>
+        <source>Specified type %1 is not known to the schema.</source>
+        <translation>Zadaný typ %1 není ve schématu stanoven.</translation>
+    </message>
+    <message>
+        <location line="-176"/>
+        <source>Element %1 is not defined in this scope.</source>
+        <translation>Prvek %1 není v této oblasti stanoven.</translation>
+    </message>
+    <message>
+        <location line="+43"/>
+        <source>Declaration for element %1 does not exist.</source>
+        <translation>Pro prvek %1 není dostupné žádné prohlášení.</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>Element %1 contains invalid content.</source>
+        <translation>Prvek %1 obsahuje neplatný obsah.</translation>
+    </message>
+    <message>
+        <location line="+73"/>
+        <source>Element %1 is declared as abstract.</source>
+        <translation>Prvek %1 je prohlášen jako abstraktní.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Element %1 is not nillable.</source>
+        <translation>Prvek %1 nemá zadánu vlastnost &apos;nillable&apos;.</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Attribute %1 contains invalid data: %2</source>
+        <translation>Vlastnost %1 obsahuje neplatná data: %2</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Element contains content although it is nillable.</source>
+        <translation>Prvek má obsah, ačkoli je &apos;nillable&apos;.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Fixed value constrained not allowed if element is nillable.</source>
+        <translation>Pevné omezení hodnoty není dovoleno, pokud je prvek &apos;nillable&apos;.</translation>
+    </message>
+    <message>
+        <location line="+32"/>
+        <source>Specified type %1 is not validly substitutable with element type %2.</source>
+        <translation>Zadaný typ %1 není platně nahraditelný typem prvku %2.</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Complex type %1 is not allowed to be abstract.</source>
+        <translation>Složitý typ %1 nemůže být abstraktní.</translation>
+    </message>
+    <message>
+        <location line="+21"/>
+        <source>Element %1 contains not allowed attributes.</source>
+        <translation>Prvek %1 obsahuje nepřípustné vlastnosti.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <location line="+97"/>
+        <source>Element %1 contains not allowed child element.</source>
+        <translation>Prvek %1 obsahuje nepřípustný podprvek.</translation>
+    </message>
+    <message>
+        <location line="-76"/>
+        <location line="+93"/>
+        <source>Content of element %1 does not match its type definition: %2.</source>
+        <translation>Obsah prvku %1 neodpovídá vymezení svého typu: %2.</translation>
+    </message>
+    <message>
+        <location line="-85"/>
+        <location line="+92"/>
+        <location line="+41"/>
+        <source>Content of element %1 does not match defined value constraint.</source>
+        <translation>Obsah prvku %1 neodpovídá stanovenému omezení hodnoty.</translation>
+    </message>
+    <message>
+        <location line="-73"/>
+        <source>Element %1 contains not allowed child content.</source>
+        <translation>Prvek %1 obsahuje nepřípustný podobsah.</translation>
+    </message>
+    <message>
+        <location line="+41"/>
+        <source>Element %1 contains not allowed text content.</source>
+        <translation>Prvek %1 obsahuje nepřípustný textový obsah.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Element %1 can not contain other elements, as it has a fixed content.</source>
+        <translation>Prvek %1 nesmí obsahovat žádné podprvky, protože má pevný obsah.</translation>
+    </message>
+    <message>
+        <location line="+43"/>
+        <source>Element %1 is missing required attribute %2.</source>
+        <translation>U prvkuk %1 chybí vyžadovaná vlastnost %2.</translation>
+    </message>
+    <message>
+        <location line="+29"/>
+        <source>Attribute %1 does not match the attribute wildcard.</source>
+        <translation>Vlastnost %1 neodpovídá zástupnému symbolu (vzoru hledání) vlastnosti.</translation>
+    </message>
+    <message>
+        <location line="+9"/>
+        <source>Declaration for attribute %1 does not exist.</source>
+        <translation>Pro vlastnost %1 není dostupné žádné prohlášení.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Element %1 contains two attributes of type %2.</source>
+        <translation>Prvek %1 obsahuje dvě vlastnosti typu %2.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Attribute %1 contains invalid content.</source>
+        <translation>Vlastnost %1 obsahuje neplatný obsah.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Element %1 contains unknown attribute %2.</source>
+        <translation>Prvek %1 obsahuje neznámou vlastnost %2.</translation>
+    </message>
+    <message>
+        <location line="+40"/>
+        <location line="+46"/>
+        <source>Content of attribute %1 does not match its type definition: %2.</source>
+        <translation>Obsah vlastnosti %1 neodpovídá vymezení svého typu: %2.</translation>
+    </message>
+    <message>
+        <location line="-38"/>
+        <location line="+46"/>
+        <source>Content of attribute %1 does not match defined value constraint.</source>
+        <translation>Obsah vlastnosti %1 neodpovídá stanovenému omezení hodnoty.</translation>
+    </message>
+    <message>
+        <location line="+88"/>
+        <source>Non-unique value found for constraint %1.</source>
+        <translation>Pro omezení %1 byla nalezena ne jednoznačně stanovená hodnota.</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Key constraint %1 contains absent fields.</source>
+        <translation>Omezení klíče %1 obsahuje nepřítomná pole.</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Key constraint %1 contains references nillable element %2.</source>
+        <translation>Omezení klíče %1 obsahuje odkazy na prvek %2, který je &apos;nillable&apos;.</translation>
+    </message>
+    <message>
+        <location line="+40"/>
+        <source>No referenced value found for key reference %1.</source>
+        <translation>Odkazovanou hodnotu odkazu na klíč %1 se nepodařilo najít.</translation>
+    </message>
+    <message>
+        <location line="+64"/>
+        <source>More than one value found for field %1.</source>
+        <translation>Pro pole %1 bylo nalezeno více hodnot.</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Field %1 has no simple type.</source>
+        <translation>Pole %1 nemá žádný jednoduchý typ.</translation>
+    </message>
+    <message>
+        <location line="+73"/>
+        <source>ID value &apos;%1&apos; is not unique.</source>
+        <translation>Hodnota ID %1 není jednoznačná.</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>&apos;%1&apos; attribute contains invalid QName content: %2.</source>
+        <translation>Vlastnost %1 obsahuje neplatný způsobilý název: %2.</translation>
+    </message>
+</context>
+<context>
+    <name>VolumeSlider</name>
+    <message>
+        <source>Muted</source>
+        <translation type="obsolete">Ztlumení</translation>
+    </message>
+    <message>
+        <source>Volume: %1%</source>
+        <translation type="obsolete">Hlasitost: %1%</translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/translations/qt_help_cs.ts	Fri Mar 12 15:46:37 2010 +0200
@@ -0,0 +1,395 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="cs_CZ">
+<context>
+    <name>QCLuceneResultWidget</name>
+    <message>
+        <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+110"/>
+        <source>Search Results</source>
+        <translation>Výsledky hledání</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>Note:</source>
+        <translation>Poznámka:</translation>
+    </message>
+    <message>
+        <location line="+1"/>
+        <source>The search results may not be complete since the documentation is still being indexed!</source>
+        <translation>Nemusí být ukázány všechny výsledky, protože dokumentace je stále ještě rejstříkována!</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Your search did not match any documents.</source>
+        <translation>Nebyly nalezeny žádné dokumenty, které by odpovídaly vašemu hledání.</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>(The reason for this might be that the documentation is still being indexed.)</source>
+        <translation>(Důvodem pro to by mohlo být, že dokumentace je stále ještě rejstříkována.)</translation>
+    </message>
+</context>
+<context>
+    <name>QHelpCollectionHandler</name>
+    <message>
+        <source>The collection file is not set up yet!</source>
+        <translation type="obsolete">Soubor se sbírkou ještě není zřízen!</translation>
+    </message>
+    <message>
+        <location filename="../tools/assistant/lib/qhelpcollectionhandler.cpp" line="+79"/>
+        <source>The collection file &apos;%1&apos; is not set up yet!</source>
+        <translation>Soubor se sbírkou &apos;%1&apos; ještě není zřízen!</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Cannot load sqlite database driver!</source>
+        <translation>Databázový ovladač pro SQLite nelze nahrát!</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <location line="+49"/>
+        <source>Cannot open collection file: %1</source>
+        <translation>Nelze otevřít soubor se sbírkou: %1</translation>
+    </message>
+    <message>
+        <location line="-40"/>
+        <source>Cannot create tables in file %1!</source>
+        <translation>V souboru %1 nelze vytvořit žádné tabulky!</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>The collection file &apos;%1&apos; already exists!</source>
+        <translation>Soubor se sbírkou &apos;%1&apos; již existuje!</translation>
+    </message>
+    <message>
+        <location line="+148"/>
+        <source>Unknown filter &apos;%1&apos;!</source>
+        <translation>Neznámý filtr &apos;%1&apos;!</translation>
+    </message>
+    <message>
+        <location line="+105"/>
+        <source>Invalid documentation file &apos;%1&apos;!</source>
+        <translation>Neplatný soubor s dokumentací &apos;%1&apos;!</translation>
+    </message>
+    <message>
+        <location line="+167"/>
+        <source>Cannot register namespace &apos;%1&apos;!</source>
+        <translation>Nelze zapsat jmenný prostor %1!</translation>
+    </message>
+    <message>
+        <location line="+24"/>
+        <source>Cannot open database &apos;%1&apos; to optimize!</source>
+        <translation>Databázi &apos;%1&apos; nelze otevřít pro vyladění!</translation>
+    </message>
+    <message>
+        <source>The specified collection file already exists!</source>
+        <translation type="obsolete">Zadaný soubor se sbírkou již existuje!</translation>
+    </message>
+    <message>
+        <location line="-438"/>
+        <source>Cannot create directory: %1</source>
+        <translation>Nelze vytvořit adresář: %1</translation>
+    </message>
+    <message>
+        <location line="+23"/>
+        <source>Cannot copy collection file: %1</source>
+        <translation>Nelze kopírovat soubor se sbírkou: %1</translation>
+    </message>
+    <message>
+        <source>Unknown filter!</source>
+        <translation type="obsolete">Neznámý filtr!</translation>
+    </message>
+    <message>
+        <location line="+174"/>
+        <source>Cannot register filter %1!</source>
+        <translation>Nelze zapsat filtr %1!</translation>
+    </message>
+    <message>
+        <location line="+44"/>
+        <source>Cannot open documentation file %1!</source>
+        <translation>Nelze otevřít soubor s dokumentací: %1!</translation>
+    </message>
+    <message>
+        <source>Invalid documentation file!</source>
+        <translation type="obsolete">Neplatný soubor s dokumentací!</translation>
+    </message>
+    <message>
+        <location line="+40"/>
+        <source>The namespace %1 was not registered!</source>
+        <translation>Jmenný prostor %1 nebyl zapsán!</translation>
+    </message>
+    <message>
+        <location line="+120"/>
+        <source>Namespace %1 already exists!</source>
+        <translation>Jmenný prostor %1 již existuje!</translation>
+    </message>
+    <message>
+        <source>Cannot register namespace!</source>
+        <translation type="obsolete">Jmenný prostor nelze zapsat!</translation>
+    </message>
+    <message>
+        <source>Cannot open database to optimize!</source>
+        <translation type="obsolete">Databázi nelze otevřít pro vyladění!</translation>
+    </message>
+</context>
+<context>
+    <name>QHelpDBReader</name>
+    <message>
+        <location filename="../tools/assistant/lib/qhelpdbreader.cpp" line="+98"/>
+        <source>Cannot open database &apos;%1&apos; &apos;%2&apos;: %3</source>
+        <extracomment>The placeholders are: %1 - The name of the database which cannot be opened %2 - The unique id for the connection %3 - The actual error string</extracomment>
+        <translation>Databázi nelze otevřít: &apos;%1&apos; &apos;%2&apos;: %3</translation>
+    </message>
+</context>
+<context>
+    <name>QHelpEngineCore</name>
+    <message>
+        <location filename="../tools/assistant/lib/qhelpenginecore.cpp" line="+524"/>
+        <source>The specified namespace does not exist!</source>
+        <translation>Zadaný jmenný prostor neexistuje!</translation>
+    </message>
+</context>
+<context>
+    <name>QHelpEngineCorePrivate</name>
+    <message>
+        <location line="-402"/>
+        <source>Cannot open documentation file %1: %2!</source>
+        <translation>Nelze otevřít soubor s dokumentací %1: %2!</translation>
+    </message>
+</context>
+<context>
+    <name>QHelpGenerator</name>
+    <message>
+        <location filename="../tools/assistant/lib/qhelpgenerator.cpp" line="+157"/>
+        <source>Invalid help data!</source>
+        <translation>Neplatná data s nápovědou!</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>No output file name specified!</source>
+        <translation>Pro výstupní soubor nebyl zadán žádný název!</translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Building up file structure...</source>
+        <translation>Vytváří se uspořádání souboru...</translation>
+    </message>
+    <message>
+        <location line="-7"/>
+        <source>The file %1 cannot be overwritten!</source>
+        <translation>Soubor %1 nelze přepsat!</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Cannot open data base file %1!</source>
+        <translation>Nelze otevřít soubor s databází: %1!</translation>
+    </message>
+    <message>
+        <location line="+11"/>
+        <source>Cannot register namespace %1!</source>
+        <translation>Nelze zapsat jmenný prostor %1!</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Insert custom filters...</source>
+        <translation>Vložit uživatelsky stanovené filtry...</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>Insert help data for filter section (%1 of %2)...</source>
+        <translation>Vložit data s nápovědou pro oddělení s filtrem (%1 von %2) einfügen...</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>Documentation successfully generated.</source>
+        <translation>Dokumentace byla úspěšně vytvořena.</translation>
+    </message>
+    <message>
+        <location line="+76"/>
+        <source>Some tables already exist!</source>
+        <translation>Některé tabulky již existují!</translation>
+    </message>
+    <message>
+        <location line="+61"/>
+        <source>Cannot create tables!</source>
+        <translation>Tabulky nelze vytvořit!</translation>
+    </message>
+    <message>
+        <location line="+86"/>
+        <source>Cannot register virtual folder!</source>
+        <translation>Virtuální adresář nelze zapsat!</translation>
+    </message>
+    <message>
+        <location line="+10"/>
+        <source>Insert files...</source>
+        <translation>Vložit soubory...</translation>
+    </message>
+    <message>
+        <location line="+42"/>
+        <source>The referenced file %1 must be inside or within a subdirectory of (%2). Skipping it.</source>
+        <translation>Odkazovaný soubor %1 se musí nacházet v adresáři %2 nebo v jeho podadresáři. Přeskakuje se.</translation>
+    </message>
+    <message>
+        <location line="+7"/>
+        <source>The file %1 does not exist! Skipping it.</source>
+        <translation>Soubor %1 neexistuje! Přeskakuje se.</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Cannot open file %1! Skipping it.</source>
+        <translation>Soubor %1 nelze otevřít! Přeskakuje se.</translation>
+    </message>
+    <message>
+        <location line="+131"/>
+        <source>The filter %1 is already registered!</source>
+        <translation>Filtr %1 je již zapsán!</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Cannot register filter %1!</source>
+        <translation>Nelze zapsat filtr %1!</translation>
+    </message>
+    <message>
+        <location line="+24"/>
+        <source>Insert indices...</source>
+        <translation>Vložit rejstříky...</translation>
+    </message>
+    <message>
+        <location line="+80"/>
+        <source>Insert contents...</source>
+        <translation>Vložit obsah...</translation>
+    </message>
+    <message>
+        <location line="+8"/>
+        <source>Cannot insert contents!</source>
+        <translation>Obsah nelze vložit!</translation>
+    </message>
+    <message>
+        <location line="+12"/>
+        <source>Cannot register contents!</source>
+        <translation>Obsah nelze zapsat!</translation>
+    </message>
+</context>
+<context>
+    <name>QHelpSearchQueryWidget</name>
+    <message>
+        <location filename="../tools/assistant/lib/qhelpsearchquerywidget.cpp" line="+411"/>
+        <source>Search for:</source>
+        <translation>Hledat:</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Previous search</source>
+        <translation>Předchozí hledání</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>Next search</source>
+        <translation>Další hledání</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Search</source>
+        <translation>Hledat</translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Advanced search</source>
+        <translation>Rozšířené hledání</translation>
+    </message>
+    <message>
+        <location line="+18"/>
+        <source>words &lt;B&gt;similar&lt;/B&gt; to:</source>
+        <translation>Slova &lt;B&gt;podobná&lt;/B&gt;:</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>&lt;B&gt;without&lt;/B&gt; the words:</source>
+        <translation>&lt;B&gt;beze&lt;/B&gt; slov:</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>with &lt;B&gt;exact phrase&lt;/B&gt;:</source>
+        <translation>s &lt;B&gt;přesnou skupinou slov&lt;/B&gt;:</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>with &lt;B&gt;all&lt;/B&gt; of the words:</source>
+        <translation>se &lt;B&gt;všemi&lt;/B&gt; slovy:</translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>with &lt;B&gt;at least one&lt;/B&gt; of the words:</source>
+        <translation>s &lt;B&gt;jakýmkoli&lt;/B&gt; ze slov:</translation>
+    </message>
+</context>
+<context>
+    <name>QHelpSearchResultWidget</name>
+    <message>
+        <location filename="../tools/assistant/lib/qhelpsearchresultwidget.cpp" line="+235"/>
+        <source>0 - 0 of 0 Hits</source>
+        <translation>0 - 0 z 0 zásahů</translation>
+    </message>
+</context>
+<context>
+    <name>QHelpSearchResultWidgetPrivate</name>
+    <message>
+        <location line="-61"/>
+        <source>%1 - %2 of %3 Hits</source>
+        <translation>%1 - %2 z %3 zásahů</translation>
+    </message>
+</context>
+<context>
+    <name>QObject</name>
+    <message>
+        <location filename="../tools/assistant/lib/qhelp_global.h" line="+83"/>
+        <source>Untitled</source>
+        <translation>Bez názvu</translation>
+    </message>
+    <message>
+        <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+85"/>
+        <source>Unknown token.</source>
+        <translation>Neznámý symbol.</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>Unknown token. Expected &quot;QtHelpProject&quot;!</source>
+        <translation>Neznámý symbol. Byl očekáván &quot;QtHelpProject&quot;!</translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Error in line %1: %2</source>
+        <translation>Chyba na řádku %1: %2</translation>
+    </message>
+    <message>
+        <location line="+13"/>
+        <source>A virtual folder must not contain a &apos;/&apos; character!</source>
+        <translation>Virtuální složka nesmí obsahovat znak &apos;/&apos;!</translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <source>A namespace must not contain a &apos;/&apos; character!</source>
+        <translation>Jmenný prostor nesmí obsahovat znak &apos;/&apos;!</translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Missing namespace in QtHelpProject.</source>
+        <translation>Chybějící jmenný prostor QtHelpProject.</translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Missing virtual folder in QtHelpProject</source>
+        <translation>Chybějící virtuální složka v QtHelpProject.</translation>
+    </message>
+    <message>
+        <location line="+88"/>
+        <source>Missing attribute in keyword at line %1.</source>
+        <translation>Chybějící vlastnost v klíčovém slově na řádku %1.</translation>
+    </message>
+    <message>
+        <location line="+123"/>
+        <source>The input file %1 could not be opened!</source>
+        <translation>Vstupní soubor %1 se nepodařilo otevřít!</translation>
+    </message>
+</context>
+</TS>
--- a/translations/translations.pri	Fri Feb 19 23:40:16 2010 +0200
+++ b/translations/translations.pri	Fri Mar 12 15:46:37 2010 +0200
@@ -17,7 +17,7 @@
 
 ###### Qt Libraries
 
-QT_TS        = ar da de es fr iw ja_JP pl pt ru sk sl sv uk zh_CN zh_TW
+QT_TS        = ar cs da de es fr iw ja_JP pl pt ru sk sl sv uk zh_CN zh_TW
 
 ts-qt.commands = (cd $$QT_SOURCE_TREE/src && $$LUPDATE \
                                 -I../include -I../include/Qt \
--- a/util/s60pixelmetrics/pixel_metrics.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/util/s60pixelmetrics/pixel_metrics.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -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 = 15;
+const TInt KPMMinorVersion = 16;
 
 TPixelMetricsVersion PixelMetrics::Version()
     {
@@ -855,19 +855,26 @@
         case QStyle::PM_FocusFrameHMargin:
         case QStyle::PM_FocusFrameVMargin:
             {
-            TAknLayoutRect gridRect;
-            gridRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::grid_highlight_pane(0));
-            TAknLayoutRect gridRectCenter;
-            gridRectCenter.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::cell_highlight_pane_g1());
+            TAknLayoutRect listScrollPane;
+            listScrollPane.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::listscroll_gen_pane(0));
+            TAknLayoutRect listGenPane;
+            listGenPane.LayoutRect(listScrollPane.Rect(), AknLayoutScalable_Avkon::list_gen_pane(0));
+            TAknLayoutRect listSinglePane;
+            listSinglePane.LayoutRect(listGenPane.Rect(), AknLayoutScalable_Avkon::list_single_pane(0));
+            TAknLayoutText listSinglePaneText;
+            listSinglePaneText.LayoutText(listSinglePane.Rect(), AknLayoutScalable_Avkon::list_single_pane_t1(0));
+            TAknLayoutRect highlightRect;
+            highlightRect.LayoutRect(listSinglePane.Rect(), AknLayoutScalable_Avkon::list_highlight_pane_cp1().LayoutLine());
 
             // The difference of center piece from border tell the frame width.
             if ( value == QStyle::PM_FocusFrameHMargin)
                 {
-                value = gridRect.Rect().iBr.iX - gridRectCenter.Rect().iBr.iX;
+				//use topleft for horizontal as S60 uses different values for right and left borders
+                 value = listSinglePaneText.TextRect().iTl.iX - highlightRect.Rect().iTl.iX;
                 }
             else
                 {
-                value = gridRect.Rect().iBr.iY - gridRectCenter.Rect().iBr.iY;
+                 value = highlightRect.Rect().iBr.iY - listSinglePaneText.TextRect().iBr.iY;
                 }
             }
             break;